diff options
Diffstat (limited to 'src/extras/defaults/qmorphphongmaterial.cpp')
-rw-r--r-- | src/extras/defaults/qmorphphongmaterial.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
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); |