summaryrefslogtreecommitdiffstats
path: root/src/extras/defaults
diff options
context:
space:
mode:
Diffstat (limited to 'src/extras/defaults')
-rw-r--r--src/extras/defaults/qdiffusemapmaterial.cpp20
-rw-r--r--src/extras/defaults/qdiffusemapmaterial_p.h4
-rw-r--r--src/extras/defaults/qdiffusespecularmapmaterial.cpp20
-rw-r--r--src/extras/defaults/qdiffusespecularmapmaterial_p.h4
-rw-r--r--src/extras/defaults/qdiffusespecularmaterial.cpp24
-rw-r--r--src/extras/defaults/qdiffusespecularmaterial_p.h4
-rw-r--r--src/extras/defaults/qgoochmaterial.cpp14
-rw-r--r--src/extras/defaults/qgoochmaterial_p.h3
-rw-r--r--src/extras/defaults/qmetalroughmaterial.cpp23
-rw-r--r--src/extras/defaults/qmetalroughmaterial_p.h4
-rw-r--r--src/extras/defaults/qmorphphongmaterial.cpp21
-rw-r--r--src/extras/defaults/qmorphphongmaterial_p.h4
-rw-r--r--src/extras/defaults/qnormaldiffusemapalphamaterial.cpp19
-rw-r--r--src/extras/defaults/qnormaldiffusemapmaterial.cpp20
-rw-r--r--src/extras/defaults/qnormaldiffusemapmaterial_p.h4
-rw-r--r--src/extras/defaults/qnormaldiffusespecularmapmaterial.cpp20
-rw-r--r--src/extras/defaults/qnormaldiffusespecularmapmaterial_p.h4
-rw-r--r--src/extras/defaults/qpervertexcolormaterial.cpp13
-rw-r--r--src/extras/defaults/qpervertexcolormaterial_p.h3
-rw-r--r--src/extras/defaults/qphongalphamaterial.cpp24
-rw-r--r--src/extras/defaults/qphongalphamaterial_p.h4
-rw-r--r--src/extras/defaults/qphongmaterial.cpp20
-rw-r--r--src/extras/defaults/qphongmaterial_p.h4
-rw-r--r--src/extras/defaults/qt3dwindow.cpp1
24 files changed, 280 insertions, 1 deletions
diff --git a/src/extras/defaults/qdiffusemapmaterial.cpp b/src/extras/defaults/qdiffusemapmaterial.cpp
index 83eec26a8..95ab7e9ac 100644
--- a/src/extras/defaults/qdiffusemapmaterial.cpp
+++ b/src/extras/defaults/qdiffusemapmaterial.cpp
@@ -72,13 +72,17 @@ QDiffuseMapMaterialPrivate::QDiffuseMapMaterialPrivate()
, m_diffuseMapGL3Technique(new QTechnique())
, m_diffuseMapGL2Technique(new QTechnique())
, m_diffuseMapES2Technique(new QTechnique())
+ , m_diffuseMapRHITechnique(new QTechnique())
, m_diffuseMapGL3RenderPass(new QRenderPass())
, m_diffuseMapGL2RenderPass(new QRenderPass())
, m_diffuseMapES2RenderPass(new QRenderPass())
+ , m_diffuseMapRHIRenderPass(new QRenderPass())
, m_diffuseMapGL3Shader(new QShaderProgram())
, m_diffuseMapGL3ShaderBuilder(new QShaderProgramBuilder())
, m_diffuseMapGL2ES2Shader(new QShaderProgram())
, m_diffuseMapGL2ES2ShaderBuilder(new QShaderProgramBuilder())
+ , m_diffuseMapRHIShader(new QShaderProgram())
+ , m_diffuseMapRHIShaderBuilder(new QShaderProgramBuilder())
, m_filterKey(new QFilterKey)
{
m_diffuseTexture->setMagnificationFilter(QAbstractTexture::Linear);
@@ -119,6 +123,14 @@ void QDiffuseMapMaterialPrivate::init()
QStringLiteral("specular"),
QStringLiteral("normal")});
+ m_diffuseMapRHIShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/default.vert"))));
+ m_diffuseMapRHIShaderBuilder->setParent(q);
+ m_diffuseMapRHIShaderBuilder->setShaderProgram(m_diffuseMapRHIShader);
+ m_diffuseMapRHIShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_diffuseMapRHIShaderBuilder->setEnabledLayers({QStringLiteral("diffuseTexture"),
+ QStringLiteral("specular"),
+ QStringLiteral("normal")});
+
m_diffuseMapGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_diffuseMapGL3Technique->graphicsApiFilter()->setMajorVersion(3);
m_diffuseMapGL3Technique->graphicsApiFilter()->setMinorVersion(1);
@@ -134,6 +146,10 @@ void QDiffuseMapMaterialPrivate::init()
m_diffuseMapES2Technique->graphicsApiFilter()->setMinorVersion(0);
m_diffuseMapES2Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::NoProfile);
+ m_diffuseMapRHITechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_diffuseMapRHITechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_diffuseMapRHITechnique->graphicsApiFilter()->setMinorVersion(0);
+
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
m_filterKey->setValue(QStringLiteral("forward"));
@@ -141,18 +157,22 @@ void QDiffuseMapMaterialPrivate::init()
m_diffuseMapGL3Technique->addFilterKey(m_filterKey);
m_diffuseMapGL2Technique->addFilterKey(m_filterKey);
m_diffuseMapES2Technique->addFilterKey(m_filterKey);
+ m_diffuseMapRHITechnique->addFilterKey(m_filterKey);
m_diffuseMapGL3RenderPass->setShaderProgram(m_diffuseMapGL3Shader);
m_diffuseMapGL2RenderPass->setShaderProgram(m_diffuseMapGL2ES2Shader);
m_diffuseMapES2RenderPass->setShaderProgram(m_diffuseMapGL2ES2Shader);
+ m_diffuseMapRHIRenderPass->setShaderProgram(m_diffuseMapRHIShader);
m_diffuseMapGL3Technique->addRenderPass(m_diffuseMapGL3RenderPass);
m_diffuseMapGL2Technique->addRenderPass(m_diffuseMapGL2RenderPass);
m_diffuseMapES2Technique->addRenderPass(m_diffuseMapES2RenderPass);
+ m_diffuseMapRHITechnique->addRenderPass(m_diffuseMapRHIRenderPass);
m_diffuseMapEffect->addTechnique(m_diffuseMapGL3Technique);
m_diffuseMapEffect->addTechnique(m_diffuseMapGL2Technique);
m_diffuseMapEffect->addTechnique(m_diffuseMapES2Technique);
+ m_diffuseMapEffect->addTechnique(m_diffuseMapRHITechnique);
m_diffuseMapEffect->addParameter(m_ambientParameter);
m_diffuseMapEffect->addParameter(m_diffuseParameter);
diff --git a/src/extras/defaults/qdiffusemapmaterial_p.h b/src/extras/defaults/qdiffusemapmaterial_p.h
index cef75a3f0..d83e8bff0 100644
--- a/src/extras/defaults/qdiffusemapmaterial_p.h
+++ b/src/extras/defaults/qdiffusemapmaterial_p.h
@@ -94,13 +94,17 @@ class QDiffuseMapMaterialPrivate : public Qt3DRender::QMaterialPrivate
Qt3DRender::QTechnique *m_diffuseMapGL3Technique;
Qt3DRender::QTechnique *m_diffuseMapGL2Technique;
Qt3DRender::QTechnique *m_diffuseMapES2Technique;
+ Qt3DRender::QTechnique *m_diffuseMapRHITechnique;
Qt3DRender::QRenderPass *m_diffuseMapGL3RenderPass;
Qt3DRender::QRenderPass *m_diffuseMapGL2RenderPass;
Qt3DRender::QRenderPass *m_diffuseMapES2RenderPass;
+ Qt3DRender::QRenderPass *m_diffuseMapRHIRenderPass;
Qt3DRender::QShaderProgram *m_diffuseMapGL3Shader;
Qt3DRender::QShaderProgramBuilder *m_diffuseMapGL3ShaderBuilder;
Qt3DRender::QShaderProgram *m_diffuseMapGL2ES2Shader;
Qt3DRender::QShaderProgramBuilder *m_diffuseMapGL2ES2ShaderBuilder;
+ Qt3DRender::QShaderProgram *m_diffuseMapRHIShader;
+ Qt3DRender::QShaderProgramBuilder *m_diffuseMapRHIShaderBuilder;
Qt3DRender::QFilterKey *m_filterKey;
Q_DECLARE_PUBLIC(QDiffuseMapMaterial)
diff --git a/src/extras/defaults/qdiffusespecularmapmaterial.cpp b/src/extras/defaults/qdiffusespecularmapmaterial.cpp
index 9a1092fbc..15dcb36bf 100644
--- a/src/extras/defaults/qdiffusespecularmapmaterial.cpp
+++ b/src/extras/defaults/qdiffusespecularmapmaterial.cpp
@@ -73,13 +73,17 @@ QDiffuseSpecularMapMaterialPrivate::QDiffuseSpecularMapMaterialPrivate()
, m_diffuseSpecularMapGL3Technique(new QTechnique())
, m_diffuseSpecularMapGL2Technique(new QTechnique())
, m_diffuseSpecularMapES2Technique(new QTechnique())
+ , m_diffuseSpecularMapRHITechnique(new QTechnique())
, m_diffuseSpecularMapGL3RenderPass(new QRenderPass())
, m_diffuseSpecularMapGL2RenderPass(new QRenderPass())
, m_diffuseSpecularMapES2RenderPass(new QRenderPass())
+ , m_diffuseSpecularMapRHIRenderPass(new QRenderPass())
, m_diffuseSpecularMapGL3Shader(new QShaderProgram())
, m_diffuseSpecularMapGL3ShaderBuilder(new QShaderProgramBuilder())
, m_diffuseSpecularMapGL2ES2Shader(new QShaderProgram())
, m_diffuseSpecularMapGL2ES2ShaderBuilder(new QShaderProgramBuilder())
+ , m_diffuseSpecularMapRHIShader(new QShaderProgram())
+ , m_diffuseSpecularMapRHIShaderBuilder(new QShaderProgramBuilder())
, m_filterKey(new QFilterKey)
{
m_diffuseTexture->setMagnificationFilter(QAbstractTexture::Linear);
@@ -126,6 +130,14 @@ void QDiffuseSpecularMapMaterialPrivate::init()
QStringLiteral("specularTexture"),
QStringLiteral("normal")});
+ m_diffuseSpecularMapRHIShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/default.vert"))));
+ m_diffuseSpecularMapRHIShaderBuilder->setParent(q);
+ m_diffuseSpecularMapRHIShaderBuilder->setShaderProgram(m_diffuseSpecularMapRHIShader);
+ m_diffuseSpecularMapRHIShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_diffuseSpecularMapRHIShaderBuilder->setEnabledLayers({QStringLiteral("diffuseTexture"),
+ QStringLiteral("specularTexture"),
+ QStringLiteral("normal")});
+
m_diffuseSpecularMapGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_diffuseSpecularMapGL3Technique->graphicsApiFilter()->setMajorVersion(3);
m_diffuseSpecularMapGL3Technique->graphicsApiFilter()->setMinorVersion(1);
@@ -141,6 +153,10 @@ void QDiffuseSpecularMapMaterialPrivate::init()
m_diffuseSpecularMapES2Technique->graphicsApiFilter()->setMinorVersion(0);
m_diffuseSpecularMapES2Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::NoProfile);
+ m_diffuseSpecularMapRHITechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_diffuseSpecularMapRHITechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_diffuseSpecularMapRHITechnique->graphicsApiFilter()->setMinorVersion(0);
+
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
m_filterKey->setValue(QStringLiteral("forward"));
@@ -148,18 +164,22 @@ void QDiffuseSpecularMapMaterialPrivate::init()
m_diffuseSpecularMapGL3Technique->addFilterKey(m_filterKey);
m_diffuseSpecularMapGL2Technique->addFilterKey(m_filterKey);
m_diffuseSpecularMapES2Technique->addFilterKey(m_filterKey);
+ m_diffuseSpecularMapRHITechnique->addFilterKey(m_filterKey);
m_diffuseSpecularMapGL3RenderPass->setShaderProgram(m_diffuseSpecularMapGL3Shader);
m_diffuseSpecularMapGL2RenderPass->setShaderProgram(m_diffuseSpecularMapGL2ES2Shader);
m_diffuseSpecularMapES2RenderPass->setShaderProgram(m_diffuseSpecularMapGL2ES2Shader);
+ m_diffuseSpecularMapRHIRenderPass->setShaderProgram(m_diffuseSpecularMapRHIShader);
m_diffuseSpecularMapGL3Technique->addRenderPass(m_diffuseSpecularMapGL3RenderPass);
m_diffuseSpecularMapGL2Technique->addRenderPass(m_diffuseSpecularMapGL2RenderPass);
m_diffuseSpecularMapES2Technique->addRenderPass(m_diffuseSpecularMapES2RenderPass);
+ m_diffuseSpecularMapRHITechnique->addRenderPass(m_diffuseSpecularMapRHIRenderPass);
m_diffuseSpecularMapEffect->addTechnique(m_diffuseSpecularMapGL3Technique);
m_diffuseSpecularMapEffect->addTechnique(m_diffuseSpecularMapGL2Technique);
m_diffuseSpecularMapEffect->addTechnique(m_diffuseSpecularMapES2Technique);
+ m_diffuseSpecularMapEffect->addTechnique(m_diffuseSpecularMapRHITechnique);
m_diffuseSpecularMapEffect->addParameter(m_ambientParameter);
m_diffuseSpecularMapEffect->addParameter(m_diffuseParameter);
diff --git a/src/extras/defaults/qdiffusespecularmapmaterial_p.h b/src/extras/defaults/qdiffusespecularmapmaterial_p.h
index f80922dff..021836c14 100644
--- a/src/extras/defaults/qdiffusespecularmapmaterial_p.h
+++ b/src/extras/defaults/qdiffusespecularmapmaterial_p.h
@@ -96,13 +96,17 @@ public:
Qt3DRender::QTechnique *m_diffuseSpecularMapGL3Technique;
Qt3DRender::QTechnique *m_diffuseSpecularMapGL2Technique;
Qt3DRender::QTechnique *m_diffuseSpecularMapES2Technique;
+ Qt3DRender::QTechnique *m_diffuseSpecularMapRHITechnique;
Qt3DRender::QRenderPass *m_diffuseSpecularMapGL3RenderPass;
Qt3DRender::QRenderPass *m_diffuseSpecularMapGL2RenderPass;
Qt3DRender::QRenderPass *m_diffuseSpecularMapES2RenderPass;
+ Qt3DRender::QRenderPass *m_diffuseSpecularMapRHIRenderPass;
Qt3DRender::QShaderProgram *m_diffuseSpecularMapGL3Shader;
Qt3DRender::QShaderProgramBuilder *m_diffuseSpecularMapGL3ShaderBuilder;
Qt3DRender::QShaderProgram *m_diffuseSpecularMapGL2ES2Shader;
Qt3DRender::QShaderProgramBuilder *m_diffuseSpecularMapGL2ES2ShaderBuilder;
+ Qt3DRender::QShaderProgram *m_diffuseSpecularMapRHIShader;
+ Qt3DRender::QShaderProgramBuilder *m_diffuseSpecularMapRHIShaderBuilder;
Qt3DRender::QFilterKey *m_filterKey;
Q_DECLARE_PUBLIC(QDiffuseSpecularMapMaterial)
diff --git a/src/extras/defaults/qdiffusespecularmaterial.cpp b/src/extras/defaults/qdiffusespecularmaterial.cpp
index 8938ce19a..2cb4c137c 100644
--- a/src/extras/defaults/qdiffusespecularmaterial.cpp
+++ b/src/extras/defaults/qdiffusespecularmaterial.cpp
@@ -78,13 +78,17 @@ QDiffuseSpecularMaterialPrivate::QDiffuseSpecularMaterialPrivate()
, m_gl3Technique(new QTechnique())
, m_gl2Technique(new QTechnique())
, m_es2Technique(new QTechnique())
+ , m_rhiTechnique(new QTechnique())
, m_gl3RenderPass(new QRenderPass())
, m_gl2RenderPass(new QRenderPass())
, m_es2RenderPass(new QRenderPass())
+ , m_rhiRenderPass(new QRenderPass())
, m_gl3Shader(new QShaderProgram())
, m_gl3ShaderBuilder(new QShaderProgramBuilder())
, m_gl2es2Shader(new QShaderProgram())
, m_gl2es2ShaderBuilder(new QShaderProgramBuilder())
+ , m_rhiShader(new QShaderProgram())
+ , m_rhiShaderBuilder(new QShaderProgramBuilder())
, m_noDepthMask(new QNoDepthMask())
, m_blendState(new QBlendEquationArguments())
, m_blendEquation(new QBlendEquation())
@@ -127,6 +131,14 @@ void QDiffuseSpecularMaterialPrivate::init()
QStringLiteral("specular"),
QStringLiteral("normal")});
+ m_rhiShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/default.vert"))));
+ m_rhiShaderBuilder->setParent(q);
+ m_rhiShaderBuilder->setShaderProgram(m_rhiShader);
+ m_rhiShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_rhiShaderBuilder->setEnabledLayers({QStringLiteral("diffuse"),
+ QStringLiteral("specular"),
+ QStringLiteral("normal")});
+
m_gl3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_gl3Technique->graphicsApiFilter()->setMajorVersion(3);
@@ -143,6 +155,10 @@ void QDiffuseSpecularMaterialPrivate::init()
m_es2Technique->graphicsApiFilter()->setMinorVersion(0);
m_es2Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::NoProfile);
+ m_rhiTechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_rhiTechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_rhiTechnique->graphicsApiFilter()->setMinorVersion(0);
+
m_noDepthMask->setEnabled(false);
m_blendState->setEnabled(false);
m_blendState->setSourceRgb(QBlendEquationArguments::SourceAlpha);
@@ -153,6 +169,7 @@ void QDiffuseSpecularMaterialPrivate::init()
m_gl3RenderPass->setShaderProgram(m_gl3Shader);
m_gl2RenderPass->setShaderProgram(m_gl2es2Shader);
m_es2RenderPass->setShaderProgram(m_gl2es2Shader);
+ m_rhiRenderPass->setShaderProgram(m_rhiShader);
m_gl3RenderPass->addRenderState(m_noDepthMask);
m_gl3RenderPass->addRenderState(m_blendState);
@@ -166,9 +183,14 @@ void QDiffuseSpecularMaterialPrivate::init()
m_es2RenderPass->addRenderState(m_blendState);
m_es2RenderPass->addRenderState(m_blendEquation);
+ m_rhiRenderPass->addRenderState(m_noDepthMask);
+ m_rhiRenderPass->addRenderState(m_blendState);
+ m_rhiRenderPass->addRenderState(m_blendEquation);
+
m_gl3Technique->addRenderPass(m_gl3RenderPass);
m_gl2Technique->addRenderPass(m_gl2RenderPass);
m_es2Technique->addRenderPass(m_es2RenderPass);
+ m_rhiTechnique->addRenderPass(m_rhiRenderPass);
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
@@ -177,10 +199,12 @@ void QDiffuseSpecularMaterialPrivate::init()
m_gl3Technique->addFilterKey(m_filterKey);
m_gl2Technique->addFilterKey(m_filterKey);
m_es2Technique->addFilterKey(m_filterKey);
+ m_rhiTechnique->addFilterKey(m_filterKey);
m_effect->addTechnique(m_gl3Technique);
m_effect->addTechnique(m_gl2Technique);
m_effect->addTechnique(m_es2Technique);
+ m_effect->addTechnique(m_rhiTechnique);
m_effect->addParameter(m_ambientParameter);
m_effect->addParameter(m_diffuseParameter);
diff --git a/src/extras/defaults/qdiffusespecularmaterial_p.h b/src/extras/defaults/qdiffusespecularmaterial_p.h
index 2b0b2184f..9e2b2bbbb 100644
--- a/src/extras/defaults/qdiffusespecularmaterial_p.h
+++ b/src/extras/defaults/qdiffusespecularmaterial_p.h
@@ -97,13 +97,17 @@ public:
Qt3DRender::QTechnique *m_gl3Technique;
Qt3DRender::QTechnique *m_gl2Technique;
Qt3DRender::QTechnique *m_es2Technique;
+ Qt3DRender::QTechnique *m_rhiTechnique;
Qt3DRender::QRenderPass *m_gl3RenderPass;
Qt3DRender::QRenderPass *m_gl2RenderPass;
Qt3DRender::QRenderPass *m_es2RenderPass;
+ Qt3DRender::QRenderPass *m_rhiRenderPass;
Qt3DRender::QShaderProgram *m_gl3Shader;
Qt3DRender::QShaderProgramBuilder *m_gl3ShaderBuilder;
Qt3DRender::QShaderProgram *m_gl2es2Shader;
Qt3DRender::QShaderProgramBuilder *m_gl2es2ShaderBuilder;
+ Qt3DRender::QShaderProgram *m_rhiShader;
+ Qt3DRender::QShaderProgramBuilder *m_rhiShaderBuilder;
Qt3DRender::QNoDepthMask *m_noDepthMask;
Qt3DRender::QBlendEquationArguments *m_blendState;
Qt3DRender::QBlendEquation *m_blendEquation;
diff --git a/src/extras/defaults/qgoochmaterial.cpp b/src/extras/defaults/qgoochmaterial.cpp
index 57ec359b3..b5665d776 100644
--- a/src/extras/defaults/qgoochmaterial.cpp
+++ b/src/extras/defaults/qgoochmaterial.cpp
@@ -65,11 +65,14 @@ QGoochMaterialPrivate::QGoochMaterialPrivate()
, m_gl3Technique(new Qt3DRender::QTechnique)
, m_gl2Technique(new Qt3DRender::QTechnique)
, m_es2Technique(new Qt3DRender::QTechnique)
+ , m_rhiTechnique(new Qt3DRender::QTechnique)
, m_gl3RenderPass(new Qt3DRender::QRenderPass)
, m_gl2RenderPass(new Qt3DRender::QRenderPass)
, m_es2RenderPass(new Qt3DRender::QRenderPass)
+ , m_rhiRenderPass(new Qt3DRender::QRenderPass)
, m_gl3Shader(new Qt3DRender::QShaderProgram)
, m_gl2ES2Shader(new Qt3DRender::QShaderProgram)
+ , m_rhiShader(new Qt3DRender::QShaderProgram)
, m_filterKey(new Qt3DRender::QFilterKey)
{
}
@@ -97,6 +100,8 @@ void QGoochMaterialPrivate::init()
m_gl3Shader->setFragmentShaderCode(Qt3DRender::QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/gooch.frag"))));
m_gl2ES2Shader->setVertexShaderCode(Qt3DRender::QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/gooch.vert"))));
m_gl2ES2Shader->setFragmentShaderCode(Qt3DRender::QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/gooch.frag"))));
+ m_rhiShader->setVertexShaderCode(Qt3DRender::QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/gooch.vert"))));
+ m_rhiShader->setFragmentShaderCode(Qt3DRender::QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/gooch.frag"))));
m_gl3Technique->graphicsApiFilter()->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
m_gl3Technique->graphicsApiFilter()->setMajorVersion(3);
@@ -113,6 +118,11 @@ void QGoochMaterialPrivate::init()
m_es2Technique->graphicsApiFilter()->setMinorVersion(0);
m_es2Technique->graphicsApiFilter()->setProfile(Qt3DRender::QGraphicsApiFilter::NoProfile);
+ m_rhiTechnique->graphicsApiFilter()->setApi(Qt3DRender::QGraphicsApiFilter::RHI);
+ m_rhiTechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_rhiTechnique->graphicsApiFilter()->setMinorVersion(0);
+ m_rhiTechnique->graphicsApiFilter()->setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
+
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
m_filterKey->setValue(QStringLiteral("forward"));
@@ -120,18 +130,22 @@ void QGoochMaterialPrivate::init()
m_gl3Technique->addFilterKey(m_filterKey);
m_gl2Technique->addFilterKey(m_filterKey);
m_es2Technique->addFilterKey(m_filterKey);
+ m_rhiTechnique->addFilterKey(m_filterKey);
m_gl3RenderPass->setShaderProgram(m_gl3Shader);
m_gl2RenderPass->setShaderProgram(m_gl2ES2Shader);
m_es2RenderPass->setShaderProgram(m_gl2ES2Shader);
+ m_rhiRenderPass->setShaderProgram(m_rhiShader);
m_gl3Technique->addRenderPass(m_gl3RenderPass);
m_gl2Technique->addRenderPass(m_gl2RenderPass);
m_es2Technique->addRenderPass(m_es2RenderPass);
+ m_rhiTechnique->addRenderPass(m_rhiRenderPass);
m_effect->addTechnique(m_gl3Technique);
m_effect->addTechnique(m_gl2Technique);
m_effect->addTechnique(m_es2Technique);
+ m_effect->addTechnique(m_rhiTechnique);
m_effect->addParameter(m_diffuseParameter);
m_effect->addParameter(m_specularParameter);
diff --git a/src/extras/defaults/qgoochmaterial_p.h b/src/extras/defaults/qgoochmaterial_p.h
index d4ef256f6..aca9ce639 100644
--- a/src/extras/defaults/qgoochmaterial_p.h
+++ b/src/extras/defaults/qgoochmaterial_p.h
@@ -93,11 +93,14 @@ public:
Qt3DRender::QTechnique *m_gl3Technique;
Qt3DRender::QTechnique *m_gl2Technique;
Qt3DRender::QTechnique *m_es2Technique;
+ Qt3DRender::QTechnique *m_rhiTechnique;
Qt3DRender::QRenderPass *m_gl3RenderPass;
Qt3DRender::QRenderPass *m_gl2RenderPass;
Qt3DRender::QRenderPass *m_es2RenderPass;
+ Qt3DRender::QRenderPass *m_rhiRenderPass;
Qt3DRender::QShaderProgram *m_gl3Shader;
Qt3DRender::QShaderProgram *m_gl2ES2Shader;
+ Qt3DRender::QShaderProgram *m_rhiShader;
Qt3DRender::QFilterKey *m_filterKey;
Q_DECLARE_PUBLIC(QGoochMaterial)
diff --git a/src/extras/defaults/qmetalroughmaterial.cpp b/src/extras/defaults/qmetalroughmaterial.cpp
index 7d5ee61ea..7aecfa65d 100644
--- a/src/extras/defaults/qmetalroughmaterial.cpp
+++ b/src/extras/defaults/qmetalroughmaterial.cpp
@@ -79,6 +79,10 @@ QMetalRoughMaterialPrivate::QMetalRoughMaterialPrivate()
, m_metalRoughES3RenderPass(new QRenderPass())
, m_metalRoughES3Shader(new QShaderProgram())
, m_metalRoughES3ShaderBuilder(new QShaderProgramBuilder())
+ , m_metalRoughRHITechnique(new QTechnique())
+ , m_metalRoughRHIRenderPass(new QRenderPass())
+ , m_metalRoughRHIShader(new QShaderProgram())
+ , m_metalRoughRHIShaderBuilder(new QShaderProgramBuilder())
, m_filterKey(new QFilterKey)
{
}
@@ -120,6 +124,16 @@ void QMetalRoughMaterialPrivate::init()
QStringLiteral("ambientOcclusion"),
QStringLiteral("normal")});
+ m_metalRoughRHIShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/default.vert"))));
+ m_metalRoughRHIShaderBuilder->setParent(q);
+ m_metalRoughRHIShaderBuilder->setShaderProgram(m_metalRoughRHIShader);
+ m_metalRoughRHIShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/metalrough.frag.json")));
+ m_metalRoughRHIShaderBuilder->setEnabledLayers({QStringLiteral("baseColor"),
+ QStringLiteral("metalness"),
+ QStringLiteral("roughness"),
+ QStringLiteral("ambientOcclusion"),
+ QStringLiteral("normal")});
+
m_metalRoughGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_metalRoughGL3Technique->graphicsApiFilter()->setMajorVersion(3);
m_metalRoughGL3Technique->graphicsApiFilter()->setMinorVersion(1);
@@ -129,6 +143,10 @@ void QMetalRoughMaterialPrivate::init()
m_metalRoughES3Technique->graphicsApiFilter()->setMajorVersion(3);
m_metalRoughES3Technique->graphicsApiFilter()->setMinorVersion(0);
+ m_metalRoughRHITechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_metalRoughRHITechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_metalRoughRHITechnique->graphicsApiFilter()->setMinorVersion(0);
+
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
m_filterKey->setValue(QStringLiteral("forward"));
@@ -143,6 +161,11 @@ void QMetalRoughMaterialPrivate::init()
m_metalRoughES3Technique->addRenderPass(m_metalRoughES3RenderPass);
m_metalRoughEffect->addTechnique(m_metalRoughES3Technique);
+ m_metalRoughRHITechnique->addFilterKey(m_filterKey);
+ m_metalRoughRHIRenderPass->setShaderProgram(m_metalRoughRHIShader);
+ m_metalRoughRHITechnique->addRenderPass(m_metalRoughRHIRenderPass);
+ m_metalRoughEffect->addTechnique(m_metalRoughRHITechnique);
+
// Given parameters a parent
m_baseColorMapParameter->setParent(m_metalRoughEffect);
m_metalnessMapParameter->setParent(m_metalRoughEffect);
diff --git a/src/extras/defaults/qmetalroughmaterial_p.h b/src/extras/defaults/qmetalroughmaterial_p.h
index 4d8b68320..15a869ff1 100644
--- a/src/extras/defaults/qmetalroughmaterial_p.h
+++ b/src/extras/defaults/qmetalroughmaterial_p.h
@@ -99,6 +99,10 @@ public:
Qt3DRender::QRenderPass *m_metalRoughES3RenderPass;
Qt3DRender::QShaderProgram *m_metalRoughES3Shader;
Qt3DRender::QShaderProgramBuilder *m_metalRoughES3ShaderBuilder;
+ Qt3DRender::QTechnique *m_metalRoughRHITechnique;
+ Qt3DRender::QRenderPass *m_metalRoughRHIRenderPass;
+ Qt3DRender::QShaderProgram *m_metalRoughRHIShader;
+ Qt3DRender::QShaderProgramBuilder *m_metalRoughRHIShaderBuilder;
Qt3DRender::QFilterKey *m_filterKey;
Q_DECLARE_PUBLIC(QMetalRoughMaterial)
diff --git a/src/extras/defaults/qmorphphongmaterial.cpp b/src/extras/defaults/qmorphphongmaterial.cpp
index 1711a21dd..8469fc127 100644
--- a/src/extras/defaults/qmorphphongmaterial.cpp
+++ b/src/extras/defaults/qmorphphongmaterial.cpp
@@ -66,13 +66,17 @@ QMorphPhongMaterialPrivate::QMorphPhongMaterialPrivate()
, m_phongGL3Technique(new QTechnique())
, m_phongGL2Technique(new QTechnique())
, m_phongES2Technique(new QTechnique())
+ , m_phongRHITechnique(new QTechnique())
, m_phongGL3RenderPass(new QRenderPass())
, m_phongGL2RenderPass(new QRenderPass())
, m_phongES2RenderPass(new QRenderPass())
+ , m_phongRHIRenderPass(new QRenderPass())
, m_phongGL3Shader(new QShaderProgram())
, m_phongGL2ES2Shader(new QShaderProgram())
+ , m_phongRHIShader(new QShaderProgram())
, m_phongGL3ShaderBuilder(new QShaderProgramBuilder())
, m_phongGL2ES2ShaderBuilder(new QShaderProgramBuilder())
+ , m_phongRHIShaderBuilder(new QShaderProgramBuilder())
, m_filterKey(new QFilterKey)
{
}
@@ -99,6 +103,7 @@ void QMorphPhongMaterialPrivate::init()
m_phongGL3ShaderBuilder->setEnabledLayers({QStringLiteral("diffuse"),
QStringLiteral("specular"),
QStringLiteral("normal")});
+
m_phongGL2ES2Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/morphphong.vert"))));
m_phongGL2ES2ShaderBuilder->setParent(q);
m_phongGL2ES2ShaderBuilder->setShaderProgram(m_phongGL2ES2Shader);
@@ -107,6 +112,14 @@ void QMorphPhongMaterialPrivate::init()
QStringLiteral("specular"),
QStringLiteral("normal")});
+ m_phongRHIShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/morphphong.vert"))));
+ m_phongRHIShaderBuilder->setParent(q);
+ m_phongRHIShaderBuilder->setShaderProgram(m_phongRHIShader);
+ m_phongRHIShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_phongRHIShaderBuilder->setEnabledLayers({QStringLiteral("diffuse"),
+ QStringLiteral("specular"),
+ QStringLiteral("normal")});
+
m_phongGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_phongGL3Technique->graphicsApiFilter()->setMajorVersion(3);
m_phongGL3Technique->graphicsApiFilter()->setMinorVersion(1);
@@ -122,13 +135,19 @@ void QMorphPhongMaterialPrivate::init()
m_phongES2Technique->graphicsApiFilter()->setMinorVersion(0);
m_phongES2Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::NoProfile);
+ m_phongRHITechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_phongRHITechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_phongRHITechnique->graphicsApiFilter()->setMinorVersion(0);
+
m_phongGL3RenderPass->setShaderProgram(m_phongGL3Shader);
m_phongGL2RenderPass->setShaderProgram(m_phongGL2ES2Shader);
m_phongES2RenderPass->setShaderProgram(m_phongGL2ES2Shader);
+ m_phongRHIRenderPass->setShaderProgram(m_phongRHIShader);
m_phongGL3Technique->addRenderPass(m_phongGL3RenderPass);
m_phongGL2Technique->addRenderPass(m_phongGL2RenderPass);
m_phongES2Technique->addRenderPass(m_phongES2RenderPass);
+ m_phongRHITechnique->addRenderPass(m_phongRHIRenderPass);
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
@@ -137,10 +156,12 @@ void QMorphPhongMaterialPrivate::init()
m_phongGL3Technique->addFilterKey(m_filterKey);
m_phongGL2Technique->addFilterKey(m_filterKey);
m_phongES2Technique->addFilterKey(m_filterKey);
+ m_phongRHITechnique->addFilterKey(m_filterKey);
m_phongEffect->addTechnique(m_phongGL3Technique);
m_phongEffect->addTechnique(m_phongGL2Technique);
m_phongEffect->addTechnique(m_phongES2Technique);
+ m_phongEffect->addTechnique(m_phongRHITechnique);
m_phongEffect->addParameter(m_ambientParameter);
m_phongEffect->addParameter(m_diffuseParameter);
diff --git a/src/extras/defaults/qmorphphongmaterial_p.h b/src/extras/defaults/qmorphphongmaterial_p.h
index 28b7750d9..4ee8954fe 100644
--- a/src/extras/defaults/qmorphphongmaterial_p.h
+++ b/src/extras/defaults/qmorphphongmaterial_p.h
@@ -90,13 +90,17 @@ public:
Qt3DRender::QTechnique *m_phongGL3Technique;
Qt3DRender::QTechnique *m_phongGL2Technique;
Qt3DRender::QTechnique *m_phongES2Technique;
+ Qt3DRender::QTechnique *m_phongRHITechnique;
Qt3DRender::QRenderPass *m_phongGL3RenderPass;
Qt3DRender::QRenderPass *m_phongGL2RenderPass;
Qt3DRender::QRenderPass *m_phongES2RenderPass;
+ Qt3DRender::QRenderPass *m_phongRHIRenderPass;
Qt3DRender::QShaderProgram *m_phongGL3Shader;
Qt3DRender::QShaderProgram *m_phongGL2ES2Shader;
+ Qt3DRender::QShaderProgram *m_phongRHIShader;
Qt3DRender::QShaderProgramBuilder *m_phongGL3ShaderBuilder;
Qt3DRender::QShaderProgramBuilder *m_phongGL2ES2ShaderBuilder;
+ Qt3DRender::QShaderProgramBuilder *m_phongRHIShaderBuilder;
Qt3DRender::QFilterKey *m_filterKey;
Q_DECLARE_PUBLIC(QMorphPhongMaterial)
diff --git a/src/extras/defaults/qnormaldiffusemapalphamaterial.cpp b/src/extras/defaults/qnormaldiffusemapalphamaterial.cpp
index 27fda6879..03b8d8385 100644
--- a/src/extras/defaults/qnormaldiffusemapalphamaterial.cpp
+++ b/src/extras/defaults/qnormaldiffusemapalphamaterial.cpp
@@ -101,6 +101,14 @@ void QNormalDiffuseMapAlphaMaterialPrivate::init()
QStringLiteral("specular"),
QStringLiteral("normalTexture")});
+ m_normalDiffuseRHIShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/default.vert"))));
+ m_normalDiffuseRHIShaderBuilder->setParent(q);
+ m_normalDiffuseRHIShaderBuilder->setShaderProgram(m_normalDiffuseRHIShader);
+ m_normalDiffuseRHIShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_normalDiffuseRHIShaderBuilder->setEnabledLayers({QStringLiteral("diffuseTexture"),
+ QStringLiteral("specular"),
+ QStringLiteral("normalTexture")});
+
m_normalDiffuseGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_normalDiffuseGL3Technique->graphicsApiFilter()->setMajorVersion(3);
m_normalDiffuseGL3Technique->graphicsApiFilter()->setMinorVersion(1);
@@ -116,6 +124,10 @@ void QNormalDiffuseMapAlphaMaterialPrivate::init()
m_normalDiffuseES2Technique->graphicsApiFilter()->setMinorVersion(0);
m_normalDiffuseES2Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::NoProfile);
+ m_normalDiffuseRHITechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_normalDiffuseRHITechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_normalDiffuseRHITechnique->graphicsApiFilter()->setMinorVersion(0);
+
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
m_filterKey->setValue(QStringLiteral("forward"));
@@ -123,6 +135,7 @@ void QNormalDiffuseMapAlphaMaterialPrivate::init()
m_normalDiffuseGL3Technique->addFilterKey(m_filterKey);
m_normalDiffuseGL2Technique->addFilterKey(m_filterKey);
m_normalDiffuseES2Technique->addFilterKey(m_filterKey);
+ m_normalDiffuseRHITechnique->addFilterKey(m_filterKey);
m_depthTest->setDepthFunction(QDepthTest::Less);
@@ -138,13 +151,19 @@ void QNormalDiffuseMapAlphaMaterialPrivate::init()
m_normalDiffuseES2RenderPass->addRenderState(m_alphaCoverage);
m_normalDiffuseES2RenderPass->addRenderState(m_depthTest);
+ m_normalDiffuseRHIRenderPass->setShaderProgram(m_normalDiffuseRHIShader);
+ m_normalDiffuseRHIRenderPass->addRenderState(m_alphaCoverage);
+ m_normalDiffuseRHIRenderPass->addRenderState(m_depthTest);
+
m_normalDiffuseGL3Technique->addRenderPass(m_normalDiffuseGL3RenderPass);
m_normalDiffuseGL2Technique->addRenderPass(m_normalDiffuseGL2RenderPass);
m_normalDiffuseES2Technique->addRenderPass(m_normalDiffuseES2RenderPass);
+ m_normalDiffuseRHITechnique->addRenderPass(m_normalDiffuseRHIRenderPass);
m_normalDiffuseEffect->addTechnique(m_normalDiffuseGL3Technique);
m_normalDiffuseEffect->addTechnique(m_normalDiffuseGL2Technique);
m_normalDiffuseEffect->addTechnique(m_normalDiffuseES2Technique);
+ m_normalDiffuseEffect->addTechnique(m_normalDiffuseRHITechnique);
m_normalDiffuseEffect->addParameter(m_ambientParameter);
m_normalDiffuseEffect->addParameter(m_diffuseParameter);
diff --git a/src/extras/defaults/qnormaldiffusemapmaterial.cpp b/src/extras/defaults/qnormaldiffusemapmaterial.cpp
index 9d41ddb32..c4f3e15b2 100644
--- a/src/extras/defaults/qnormaldiffusemapmaterial.cpp
+++ b/src/extras/defaults/qnormaldiffusemapmaterial.cpp
@@ -73,13 +73,17 @@ QNormalDiffuseMapMaterialPrivate::QNormalDiffuseMapMaterialPrivate()
, m_normalDiffuseGL3Technique(new QTechnique())
, m_normalDiffuseGL2Technique(new QTechnique())
, m_normalDiffuseES2Technique(new QTechnique())
+ , m_normalDiffuseRHITechnique(new QTechnique())
, m_normalDiffuseGL3RenderPass(new QRenderPass())
, m_normalDiffuseGL2RenderPass(new QRenderPass())
, m_normalDiffuseES2RenderPass(new QRenderPass())
+ , m_normalDiffuseRHIRenderPass(new QRenderPass())
, m_normalDiffuseGL3Shader(new QShaderProgram())
, m_normalDiffuseGL3ShaderBuilder(new QShaderProgramBuilder())
, m_normalDiffuseGL2ES2Shader(new QShaderProgram())
, m_normalDiffuseGL2ES2ShaderBuilder(new QShaderProgramBuilder())
+ , m_normalDiffuseRHIShader(new QShaderProgram())
+ , m_normalDiffuseRHIShaderBuilder(new QShaderProgramBuilder())
, m_filterKey(new QFilterKey)
{
m_diffuseTexture->setMagnificationFilter(QAbstractTexture::Linear);
@@ -128,6 +132,14 @@ void QNormalDiffuseMapMaterialPrivate::init()
QStringLiteral("specular"),
QStringLiteral("normalTexture")});
+ m_normalDiffuseRHIShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/default.vert"))));
+ m_normalDiffuseRHIShaderBuilder->setParent(q);
+ m_normalDiffuseRHIShaderBuilder->setShaderProgram(m_normalDiffuseRHIShader);
+ m_normalDiffuseRHIShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_normalDiffuseRHIShaderBuilder->setEnabledLayers({QStringLiteral("diffuseTexture"),
+ QStringLiteral("specular"),
+ QStringLiteral("normalTexture")});
+
m_normalDiffuseGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_normalDiffuseGL3Technique->graphicsApiFilter()->setMajorVersion(3);
m_normalDiffuseGL3Technique->graphicsApiFilter()->setMinorVersion(1);
@@ -143,6 +155,10 @@ void QNormalDiffuseMapMaterialPrivate::init()
m_normalDiffuseES2Technique->graphicsApiFilter()->setMinorVersion(0);
m_normalDiffuseES2Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::NoProfile);
+ m_normalDiffuseRHITechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_normalDiffuseRHITechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_normalDiffuseRHITechnique->graphicsApiFilter()->setMinorVersion(0);
+
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
m_filterKey->setValue(QStringLiteral("forward"));
@@ -150,18 +166,22 @@ void QNormalDiffuseMapMaterialPrivate::init()
m_normalDiffuseGL3Technique->addFilterKey(m_filterKey);
m_normalDiffuseGL2Technique->addFilterKey(m_filterKey);
m_normalDiffuseES2Technique->addFilterKey(m_filterKey);
+ m_normalDiffuseRHITechnique->addFilterKey(m_filterKey);
m_normalDiffuseGL3RenderPass->setShaderProgram(m_normalDiffuseGL3Shader);
m_normalDiffuseGL2RenderPass->setShaderProgram(m_normalDiffuseGL2ES2Shader);
m_normalDiffuseES2RenderPass->setShaderProgram(m_normalDiffuseGL2ES2Shader);
+ m_normalDiffuseRHIRenderPass->setShaderProgram(m_normalDiffuseRHIShader);
m_normalDiffuseGL3Technique->addRenderPass(m_normalDiffuseGL3RenderPass);
m_normalDiffuseGL2Technique->addRenderPass(m_normalDiffuseGL2RenderPass);
m_normalDiffuseES2Technique->addRenderPass(m_normalDiffuseES2RenderPass);
+ m_normalDiffuseRHITechnique->addRenderPass(m_normalDiffuseRHIRenderPass);
m_normalDiffuseEffect->addTechnique(m_normalDiffuseGL3Technique);
m_normalDiffuseEffect->addTechnique(m_normalDiffuseGL2Technique);
m_normalDiffuseEffect->addTechnique(m_normalDiffuseES2Technique);
+ m_normalDiffuseEffect->addTechnique(m_normalDiffuseRHITechnique);
m_normalDiffuseEffect->addParameter(m_ambientParameter);
m_normalDiffuseEffect->addParameter(m_diffuseParameter);
diff --git a/src/extras/defaults/qnormaldiffusemapmaterial_p.h b/src/extras/defaults/qnormaldiffusemapmaterial_p.h
index 1ac937b1e..5a5839682 100644
--- a/src/extras/defaults/qnormaldiffusemapmaterial_p.h
+++ b/src/extras/defaults/qnormaldiffusemapmaterial_p.h
@@ -98,13 +98,17 @@ public:
Qt3DRender::QTechnique *m_normalDiffuseGL3Technique;
Qt3DRender::QTechnique *m_normalDiffuseGL2Technique;
Qt3DRender::QTechnique *m_normalDiffuseES2Technique;
+ Qt3DRender::QTechnique *m_normalDiffuseRHITechnique;
Qt3DRender::QRenderPass *m_normalDiffuseGL3RenderPass;
Qt3DRender::QRenderPass *m_normalDiffuseGL2RenderPass;
Qt3DRender::QRenderPass *m_normalDiffuseES2RenderPass;
+ Qt3DRender::QRenderPass *m_normalDiffuseRHIRenderPass;
Qt3DRender::QShaderProgram *m_normalDiffuseGL3Shader;
Qt3DRender::QShaderProgramBuilder *m_normalDiffuseGL3ShaderBuilder;
Qt3DRender::QShaderProgram *m_normalDiffuseGL2ES2Shader;
Qt3DRender::QShaderProgramBuilder *m_normalDiffuseGL2ES2ShaderBuilder;
+ Qt3DRender::QShaderProgram *m_normalDiffuseRHIShader;
+ Qt3DRender::QShaderProgramBuilder *m_normalDiffuseRHIShaderBuilder;
Qt3DRender::QFilterKey *m_filterKey;
Q_DECLARE_PUBLIC(QNormalDiffuseMapMaterial)
diff --git a/src/extras/defaults/qnormaldiffusespecularmapmaterial.cpp b/src/extras/defaults/qnormaldiffusespecularmapmaterial.cpp
index a76d9856b..66586ef18 100644
--- a/src/extras/defaults/qnormaldiffusespecularmapmaterial.cpp
+++ b/src/extras/defaults/qnormaldiffusespecularmapmaterial.cpp
@@ -75,13 +75,17 @@ QNormalDiffuseSpecularMapMaterialPrivate::QNormalDiffuseSpecularMapMaterialPriva
, m_normalDiffuseSpecularGL3Technique(new QTechnique())
, m_normalDiffuseSpecularGL2Technique(new QTechnique())
, m_normalDiffuseSpecularES2Technique(new QTechnique())
+ , m_normalDiffuseSpecularRHITechnique(new QTechnique())
, m_normalDiffuseSpecularGL3RenderPass(new QRenderPass())
, m_normalDiffuseSpecularGL2RenderPass(new QRenderPass())
, m_normalDiffuseSpecularES2RenderPass(new QRenderPass())
+ , m_normalDiffuseSpecularRHIRenderPass(new QRenderPass())
, m_normalDiffuseSpecularGL3Shader(new QShaderProgram())
, m_normalDiffuseSpecularGL3ShaderBuilder(new QShaderProgramBuilder())
, m_normalDiffuseSpecularGL2ES2Shader(new QShaderProgram())
, m_normalDiffuseSpecularGL2ES2ShaderBuilder(new QShaderProgramBuilder())
+ , m_normalDiffuseSpecularRHIShader(new QShaderProgram())
+ , m_normalDiffuseSpecularRHIShaderBuilder(new QShaderProgramBuilder())
, m_filterKey(new QFilterKey)
{
m_diffuseTexture->setMagnificationFilter(QAbstractTexture::Linear);
@@ -136,6 +140,14 @@ void QNormalDiffuseSpecularMapMaterialPrivate::init()
QStringLiteral("specularTexture"),
QStringLiteral("normalTexture")});
+ m_normalDiffuseSpecularRHIShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/default.vert"))));
+ m_normalDiffuseSpecularRHIShaderBuilder->setParent(q);
+ m_normalDiffuseSpecularRHIShaderBuilder->setShaderProgram(m_normalDiffuseSpecularRHIShader);
+ m_normalDiffuseSpecularRHIShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_normalDiffuseSpecularRHIShaderBuilder->setEnabledLayers({QStringLiteral("diffuseTexture"),
+ QStringLiteral("specularTexture"),
+ QStringLiteral("normalTexture")});
+
m_normalDiffuseSpecularGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_normalDiffuseSpecularGL3Technique->graphicsApiFilter()->setMajorVersion(3);
m_normalDiffuseSpecularGL3Technique->graphicsApiFilter()->setMinorVersion(1);
@@ -151,6 +163,10 @@ void QNormalDiffuseSpecularMapMaterialPrivate::init()
m_normalDiffuseSpecularES2Technique->graphicsApiFilter()->setMinorVersion(0);
m_normalDiffuseSpecularES2Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::NoProfile);
+ m_normalDiffuseSpecularRHITechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_normalDiffuseSpecularRHITechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_normalDiffuseSpecularRHITechnique->graphicsApiFilter()->setMinorVersion(0);
+
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
m_filterKey->setValue(QStringLiteral("forward"));
@@ -158,18 +174,22 @@ void QNormalDiffuseSpecularMapMaterialPrivate::init()
m_normalDiffuseSpecularGL3Technique->addFilterKey(m_filterKey);
m_normalDiffuseSpecularGL2Technique->addFilterKey(m_filterKey);
m_normalDiffuseSpecularES2Technique->addFilterKey(m_filterKey);
+ m_normalDiffuseSpecularRHITechnique->addFilterKey(m_filterKey);
m_normalDiffuseSpecularGL3RenderPass->setShaderProgram(m_normalDiffuseSpecularGL3Shader);
m_normalDiffuseSpecularGL2RenderPass->setShaderProgram(m_normalDiffuseSpecularGL2ES2Shader);
m_normalDiffuseSpecularES2RenderPass->setShaderProgram(m_normalDiffuseSpecularGL2ES2Shader);
+ m_normalDiffuseSpecularRHIRenderPass->setShaderProgram(m_normalDiffuseSpecularRHIShader);
m_normalDiffuseSpecularGL3Technique->addRenderPass(m_normalDiffuseSpecularGL3RenderPass);
m_normalDiffuseSpecularGL2Technique->addRenderPass(m_normalDiffuseSpecularGL2RenderPass);
m_normalDiffuseSpecularES2Technique->addRenderPass(m_normalDiffuseSpecularES2RenderPass);
+ m_normalDiffuseSpecularRHITechnique->addRenderPass(m_normalDiffuseSpecularRHIRenderPass);
m_normalDiffuseSpecularEffect->addTechnique(m_normalDiffuseSpecularGL3Technique);
m_normalDiffuseSpecularEffect->addTechnique(m_normalDiffuseSpecularGL2Technique);
m_normalDiffuseSpecularEffect->addTechnique(m_normalDiffuseSpecularES2Technique);
+ m_normalDiffuseSpecularEffect->addTechnique(m_normalDiffuseSpecularRHITechnique);
m_normalDiffuseSpecularEffect->addParameter(m_ambientParameter);
m_normalDiffuseSpecularEffect->addParameter(m_diffuseParameter);
diff --git a/src/extras/defaults/qnormaldiffusespecularmapmaterial_p.h b/src/extras/defaults/qnormaldiffusespecularmapmaterial_p.h
index e02451cc0..0a0d519ad 100644
--- a/src/extras/defaults/qnormaldiffusespecularmapmaterial_p.h
+++ b/src/extras/defaults/qnormaldiffusespecularmapmaterial_p.h
@@ -99,13 +99,17 @@ public:
Qt3DRender::QTechnique *m_normalDiffuseSpecularGL3Technique;
Qt3DRender::QTechnique *m_normalDiffuseSpecularGL2Technique;
Qt3DRender::QTechnique *m_normalDiffuseSpecularES2Technique;
+ Qt3DRender::QTechnique *m_normalDiffuseSpecularRHITechnique;
Qt3DRender::QRenderPass *m_normalDiffuseSpecularGL3RenderPass;
Qt3DRender::QRenderPass *m_normalDiffuseSpecularGL2RenderPass;
Qt3DRender::QRenderPass *m_normalDiffuseSpecularES2RenderPass;
+ Qt3DRender::QRenderPass *m_normalDiffuseSpecularRHIRenderPass;
Qt3DRender::QShaderProgram *m_normalDiffuseSpecularGL3Shader;
Qt3DRender::QShaderProgramBuilder *m_normalDiffuseSpecularGL3ShaderBuilder;
Qt3DRender::QShaderProgram *m_normalDiffuseSpecularGL2ES2Shader;
Qt3DRender::QShaderProgramBuilder *m_normalDiffuseSpecularGL2ES2ShaderBuilder;
+ Qt3DRender::QShaderProgram *m_normalDiffuseSpecularRHIShader;
+ Qt3DRender::QShaderProgramBuilder *m_normalDiffuseSpecularRHIShaderBuilder;
Qt3DRender::QFilterKey *m_filterKey;
Q_DECLARE_PUBLIC(QNormalDiffuseSpecularMapMaterial)
diff --git a/src/extras/defaults/qpervertexcolormaterial.cpp b/src/extras/defaults/qpervertexcolormaterial.cpp
index f0462039e..ef41cbce7 100644
--- a/src/extras/defaults/qpervertexcolormaterial.cpp
+++ b/src/extras/defaults/qpervertexcolormaterial.cpp
@@ -64,11 +64,14 @@ QPerVertexColorMaterialPrivate::QPerVertexColorMaterialPrivate()
, m_vertexGL3Technique(new QTechnique())
, m_vertexGL2Technique(new QTechnique())
, m_vertexES2Technique(new QTechnique())
+ , m_vertexRHITechnique(new QTechnique())
, m_vertexGL3RenderPass(new QRenderPass())
, m_vertexGL2RenderPass(new QRenderPass())
, m_vertexES2RenderPass(new QRenderPass())
+ , m_vertexRHIRenderPass(new QRenderPass())
, m_vertexGL3Shader(new QShaderProgram())
, m_vertexGL2ES2Shader(new QShaderProgram())
+ , m_vertexRHIShader(new QShaderProgram())
, m_filterKey(new QFilterKey)
{
}
@@ -119,6 +122,8 @@ void QPerVertexColorMaterialPrivate::init()
m_vertexGL3Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/pervertexcolor.frag"))));
m_vertexGL2ES2Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/pervertexcolor.vert"))));
m_vertexGL2ES2Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/pervertexcolor.frag"))));
+ m_vertexRHIShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/pervertexcolor.vert"))));
+ m_vertexRHIShader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/pervertexcolor.frag"))));
m_vertexGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_vertexGL3Technique->graphicsApiFilter()->setMajorVersion(3);
@@ -135,6 +140,10 @@ void QPerVertexColorMaterialPrivate::init()
m_vertexES2Technique->graphicsApiFilter()->setMinorVersion(0);
m_vertexES2Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::NoProfile);
+ m_vertexRHITechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_vertexRHITechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_vertexRHITechnique->graphicsApiFilter()->setMinorVersion(0);
+
Q_Q(QPerVertexColorMaterial);
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
@@ -143,18 +152,22 @@ void QPerVertexColorMaterialPrivate::init()
m_vertexGL3Technique->addFilterKey(m_filterKey);
m_vertexGL2Technique->addFilterKey(m_filterKey);
m_vertexES2Technique->addFilterKey(m_filterKey);
+ m_vertexRHITechnique->addFilterKey(m_filterKey);
m_vertexGL3RenderPass->setShaderProgram(m_vertexGL3Shader);
m_vertexGL2RenderPass->setShaderProgram(m_vertexGL2ES2Shader);
m_vertexES2RenderPass->setShaderProgram(m_vertexGL2ES2Shader);
+ m_vertexRHIRenderPass->setShaderProgram(m_vertexRHIShader);
m_vertexGL3Technique->addRenderPass(m_vertexGL3RenderPass);
m_vertexGL2Technique->addRenderPass(m_vertexGL2RenderPass);
m_vertexES2Technique->addRenderPass(m_vertexES2RenderPass);
+ m_vertexRHITechnique->addRenderPass(m_vertexRHIRenderPass);
m_vertexEffect->addTechnique(m_vertexGL3Technique);
m_vertexEffect->addTechnique(m_vertexGL2Technique);
m_vertexEffect->addTechnique(m_vertexES2Technique);
+ m_vertexEffect->addTechnique(m_vertexRHITechnique);
q->setEffect(m_vertexEffect);
}
diff --git a/src/extras/defaults/qpervertexcolormaterial_p.h b/src/extras/defaults/qpervertexcolormaterial_p.h
index 678353525..8c5c3eefa 100644
--- a/src/extras/defaults/qpervertexcolormaterial_p.h
+++ b/src/extras/defaults/qpervertexcolormaterial_p.h
@@ -81,11 +81,14 @@ public:
Qt3DRender::QTechnique *m_vertexGL3Technique;
Qt3DRender::QTechnique *m_vertexGL2Technique;
Qt3DRender::QTechnique *m_vertexES2Technique;
+ Qt3DRender::QTechnique *m_vertexRHITechnique;
Qt3DRender::QRenderPass *m_vertexGL3RenderPass;
Qt3DRender::QRenderPass *m_vertexGL2RenderPass;
Qt3DRender::QRenderPass *m_vertexES2RenderPass;
+ Qt3DRender::QRenderPass *m_vertexRHIRenderPass;
Qt3DRender::QShaderProgram *m_vertexGL3Shader;
Qt3DRender::QShaderProgram *m_vertexGL2ES2Shader;
+ Qt3DRender::QShaderProgram *m_vertexRHIShader;
Qt3DRender::QFilterKey *m_filterKey;
Q_DECLARE_PUBLIC(QPerVertexColorMaterial)
diff --git a/src/extras/defaults/qphongalphamaterial.cpp b/src/extras/defaults/qphongalphamaterial.cpp
index 2f705072f..8d8464d85 100644
--- a/src/extras/defaults/qphongalphamaterial.cpp
+++ b/src/extras/defaults/qphongalphamaterial.cpp
@@ -72,13 +72,17 @@ QPhongAlphaMaterialPrivate::QPhongAlphaMaterialPrivate()
, m_phongAlphaGL3Technique(new QTechnique())
, m_phongAlphaGL2Technique(new QTechnique())
, m_phongAlphaES2Technique(new QTechnique())
+ , m_phongAlphaRHITechnique(new QTechnique())
, m_phongAlphaGL3RenderPass(new QRenderPass())
, m_phongAlphaGL2RenderPass(new QRenderPass())
, m_phongAlphaES2RenderPass(new QRenderPass())
+ , m_phongAlphaRHIRenderPass(new QRenderPass())
, m_phongAlphaGL3Shader(new QShaderProgram())
, m_phongAlphaGL3ShaderBuilder(new QShaderProgramBuilder())
, m_phongAlphaGL2ES2Shader(new QShaderProgram())
, m_phongAlphaGL2ES2ShaderBuilder(new QShaderProgramBuilder())
+ , m_phongAlphaRHIShader(new QShaderProgram())
+ , m_phongAlphaRHIShaderBuilder(new QShaderProgramBuilder())
, m_noDepthMask(new QNoDepthMask())
, m_blendState(new QBlendEquationArguments())
, m_blendEquation(new QBlendEquation())
@@ -116,6 +120,14 @@ void QPhongAlphaMaterialPrivate::init()
QStringLiteral("specular"),
QStringLiteral("normal")});
+ m_phongAlphaRHIShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/default.vert"))));
+ m_phongAlphaRHIShaderBuilder->setParent(q);
+ m_phongAlphaRHIShaderBuilder->setShaderProgram(m_phongAlphaRHIShader);
+ m_phongAlphaRHIShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_phongAlphaRHIShaderBuilder->setEnabledLayers({QStringLiteral("diffuse"),
+ QStringLiteral("specular"),
+ QStringLiteral("normal")});
+
m_phongAlphaGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_phongAlphaGL3Technique->graphicsApiFilter()->setMajorVersion(3);
m_phongAlphaGL3Technique->graphicsApiFilter()->setMinorVersion(1);
@@ -131,6 +143,10 @@ void QPhongAlphaMaterialPrivate::init()
m_phongAlphaES2Technique->graphicsApiFilter()->setMinorVersion(0);
m_phongAlphaES2Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::NoProfile);
+ m_phongAlphaRHITechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_phongAlphaRHITechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_phongAlphaRHITechnique->graphicsApiFilter()->setMinorVersion(0);
+
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
m_filterKey->setValue(QStringLiteral("forward"));
@@ -138,6 +154,7 @@ void QPhongAlphaMaterialPrivate::init()
m_phongAlphaGL3Technique->addFilterKey(m_filterKey);
m_phongAlphaGL2Technique->addFilterKey(m_filterKey);
m_phongAlphaES2Technique->addFilterKey(m_filterKey);
+ m_phongAlphaRHITechnique->addFilterKey(m_filterKey);
m_blendState->setSourceRgb(QBlendEquationArguments::SourceAlpha);
m_blendState->setDestinationRgb(QBlendEquationArguments::OneMinusSourceAlpha);
@@ -146,6 +163,7 @@ void QPhongAlphaMaterialPrivate::init()
m_phongAlphaGL3RenderPass->setShaderProgram(m_phongAlphaGL3Shader);
m_phongAlphaGL2RenderPass->setShaderProgram(m_phongAlphaGL2ES2Shader);
m_phongAlphaES2RenderPass->setShaderProgram(m_phongAlphaGL2ES2Shader);
+ m_phongAlphaRHIRenderPass->setShaderProgram(m_phongAlphaRHIShader);
m_phongAlphaGL3RenderPass->addRenderState(m_noDepthMask);
m_phongAlphaGL3RenderPass->addRenderState(m_blendState);
@@ -159,13 +177,19 @@ void QPhongAlphaMaterialPrivate::init()
m_phongAlphaES2RenderPass->addRenderState(m_blendState);
m_phongAlphaES2RenderPass->addRenderState(m_blendEquation);
+ m_phongAlphaRHIRenderPass->addRenderState(m_noDepthMask);
+ m_phongAlphaRHIRenderPass->addRenderState(m_blendState);
+ m_phongAlphaRHIRenderPass->addRenderState(m_blendEquation);
+
m_phongAlphaGL3Technique->addRenderPass(m_phongAlphaGL3RenderPass);
m_phongAlphaGL2Technique->addRenderPass(m_phongAlphaGL2RenderPass);
m_phongAlphaES2Technique->addRenderPass(m_phongAlphaES2RenderPass);
+ m_phongAlphaRHITechnique->addRenderPass(m_phongAlphaRHIRenderPass);
m_phongEffect->addTechnique(m_phongAlphaGL3Technique);
m_phongEffect->addTechnique(m_phongAlphaGL2Technique);
m_phongEffect->addTechnique(m_phongAlphaES2Technique);
+ m_phongEffect->addTechnique(m_phongAlphaRHITechnique);
m_phongEffect->addParameter(m_ambientParameter);
m_phongEffect->addParameter(m_diffuseParameter);
diff --git a/src/extras/defaults/qphongalphamaterial_p.h b/src/extras/defaults/qphongalphamaterial_p.h
index 97eaf7bc4..7909f4e34 100644
--- a/src/extras/defaults/qphongalphamaterial_p.h
+++ b/src/extras/defaults/qphongalphamaterial_p.h
@@ -94,13 +94,17 @@ public:
Qt3DRender::QTechnique *m_phongAlphaGL3Technique;
Qt3DRender::QTechnique *m_phongAlphaGL2Technique;
Qt3DRender::QTechnique *m_phongAlphaES2Technique;
+ Qt3DRender::QTechnique *m_phongAlphaRHITechnique;
Qt3DRender::QRenderPass *m_phongAlphaGL3RenderPass;
Qt3DRender::QRenderPass *m_phongAlphaGL2RenderPass;
Qt3DRender::QRenderPass *m_phongAlphaES2RenderPass;
+ Qt3DRender::QRenderPass *m_phongAlphaRHIRenderPass;
Qt3DRender::QShaderProgram *m_phongAlphaGL3Shader;
Qt3DRender::QShaderProgramBuilder *m_phongAlphaGL3ShaderBuilder;
Qt3DRender::QShaderProgram *m_phongAlphaGL2ES2Shader;
Qt3DRender::QShaderProgramBuilder *m_phongAlphaGL2ES2ShaderBuilder;
+ Qt3DRender::QShaderProgram *m_phongAlphaRHIShader;
+ Qt3DRender::QShaderProgramBuilder *m_phongAlphaRHIShaderBuilder;
Qt3DRender::QNoDepthMask *m_noDepthMask;
Qt3DRender::QBlendEquationArguments *m_blendState;
Qt3DRender::QBlendEquation *m_blendEquation;
diff --git a/src/extras/defaults/qphongmaterial.cpp b/src/extras/defaults/qphongmaterial.cpp
index 6318ea140..460bc9bb2 100644
--- a/src/extras/defaults/qphongmaterial.cpp
+++ b/src/extras/defaults/qphongmaterial.cpp
@@ -70,13 +70,17 @@ QPhongMaterialPrivate::QPhongMaterialPrivate()
, m_phongGL3Technique(new QTechnique())
, m_phongGL2Technique(new QTechnique())
, m_phongES2Technique(new QTechnique())
+ , m_phongRHITechnique(new QTechnique())
, m_phongGL3RenderPass(new QRenderPass())
, m_phongGL2RenderPass(new QRenderPass())
, m_phongES2RenderPass(new QRenderPass())
+ , m_phongRHIRenderPass(new QRenderPass())
, m_phongGL3Shader(new QShaderProgram())
, m_phongGL3ShaderBuilder(new QShaderProgramBuilder())
, m_phongGL2ES2Shader(new QShaderProgram())
, m_phongGL2ES2ShaderBuilder(new QShaderProgramBuilder())
+ , m_phongRHIShader(new QShaderProgram())
+ , m_phongRHIShaderBuilder(new QShaderProgramBuilder())
, m_filterKey(new QFilterKey)
{
}
@@ -110,6 +114,14 @@ void QPhongMaterialPrivate::init()
QStringLiteral("specular"),
QStringLiteral("normal")});
+ m_phongRHIShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/default.vert"))));
+ m_phongRHIShaderBuilder->setParent(q);
+ m_phongRHIShaderBuilder->setShaderProgram(m_phongRHIShader);
+ m_phongRHIShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/phong.frag.json")));
+ m_phongRHIShaderBuilder->setEnabledLayers({QStringLiteral("diffuse"),
+ QStringLiteral("specular"),
+ QStringLiteral("normal")});
+
m_phongGL3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_phongGL3Technique->graphicsApiFilter()->setMajorVersion(3);
m_phongGL3Technique->graphicsApiFilter()->setMinorVersion(1);
@@ -125,13 +137,19 @@ void QPhongMaterialPrivate::init()
m_phongES2Technique->graphicsApiFilter()->setMinorVersion(0);
m_phongES2Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::NoProfile);
+ m_phongRHITechnique->graphicsApiFilter()->setApi(QGraphicsApiFilter::RHI);
+ m_phongRHITechnique->graphicsApiFilter()->setMajorVersion(1);
+ m_phongRHITechnique->graphicsApiFilter()->setMinorVersion(0);
+
m_phongGL3RenderPass->setShaderProgram(m_phongGL3Shader);
m_phongGL2RenderPass->setShaderProgram(m_phongGL2ES2Shader);
m_phongES2RenderPass->setShaderProgram(m_phongGL2ES2Shader);
+ m_phongRHIRenderPass->setShaderProgram(m_phongRHIShader);
m_phongGL3Technique->addRenderPass(m_phongGL3RenderPass);
m_phongGL2Technique->addRenderPass(m_phongGL2RenderPass);
m_phongES2Technique->addRenderPass(m_phongES2RenderPass);
+ m_phongRHITechnique->addRenderPass(m_phongRHIRenderPass);
m_filterKey->setParent(q);
m_filterKey->setName(QStringLiteral("renderingStyle"));
@@ -140,10 +158,12 @@ void QPhongMaterialPrivate::init()
m_phongGL3Technique->addFilterKey(m_filterKey);
m_phongGL2Technique->addFilterKey(m_filterKey);
m_phongES2Technique->addFilterKey(m_filterKey);
+ m_phongRHITechnique->addFilterKey(m_filterKey);
m_phongEffect->addTechnique(m_phongGL3Technique);
m_phongEffect->addTechnique(m_phongGL2Technique);
m_phongEffect->addTechnique(m_phongES2Technique);
+ m_phongEffect->addTechnique(m_phongRHITechnique);
m_phongEffect->addParameter(m_ambientParameter);
m_phongEffect->addParameter(m_diffuseParameter);
diff --git a/src/extras/defaults/qphongmaterial_p.h b/src/extras/defaults/qphongmaterial_p.h
index f1e55242b..2d8ae1be2 100644
--- a/src/extras/defaults/qphongmaterial_p.h
+++ b/src/extras/defaults/qphongmaterial_p.h
@@ -91,13 +91,17 @@ public:
Qt3DRender::QTechnique *m_phongGL3Technique;
Qt3DRender::QTechnique *m_phongGL2Technique;
Qt3DRender::QTechnique *m_phongES2Technique;
+ Qt3DRender::QTechnique *m_phongRHITechnique;
Qt3DRender::QRenderPass *m_phongGL3RenderPass;
Qt3DRender::QRenderPass *m_phongGL2RenderPass;
Qt3DRender::QRenderPass *m_phongES2RenderPass;
+ Qt3DRender::QRenderPass *m_phongRHIRenderPass;
Qt3DRender::QShaderProgram *m_phongGL3Shader;
Qt3DRender::QShaderProgramBuilder *m_phongGL3ShaderBuilder;
Qt3DRender::QShaderProgram *m_phongGL2ES2Shader;
Qt3DRender::QShaderProgramBuilder *m_phongGL2ES2ShaderBuilder;
+ Qt3DRender::QShaderProgram *m_phongRHIShader;
+ Qt3DRender::QShaderProgramBuilder *m_phongRHIShaderBuilder;
Qt3DRender::QFilterKey *m_filterKey;
Q_DECLARE_PUBLIC(QPhongMaterial)
diff --git a/src/extras/defaults/qt3dwindow.cpp b/src/extras/defaults/qt3dwindow.cpp
index 4cf3af250..fa48dba50 100644
--- a/src/extras/defaults/qt3dwindow.cpp
+++ b/src/extras/defaults/qt3dwindow.cpp
@@ -183,7 +183,6 @@ Qt3DWindow::Qt3DWindow(QScreen *screen, Qt3DRender::API api)
format.setProfile(QSurfaceFormat::CoreProfile);
}
#endif
-
if (!userRequestedApi.isEmpty()) {
// This is used for RHI
format.setVersion(1, 0);