diff options
author | Michael Brasser <mbrasser@ford.com> | 2018-12-04 14:46:29 -0600 |
---|---|---|
committer | Michael Brasser <michael.brasser@live.com> | 2018-12-05 14:29:20 +0000 |
commit | 4dbc8ff19c44377af9d9af152aded147a6cb536b (patch) | |
tree | 28df7ba1f5f189852fb119245eac4ab04f126244 | |
parent | dde33ab2eb631461f23ca29e826c99ad10a56521 (diff) |
Enable ES3 rendering of MetalRoughMaterial
Change-Id: I1cc6700c9d16db1ad3e17f63a89d65c02bd8a202
Task-number: QTBUG-64390
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | src/extras/defaults/qmetalroughmaterial.cpp | 29 | ||||
-rw-r--r-- | src/extras/defaults/qmetalroughmaterial_p.h | 4 |
2 files changed, 32 insertions, 1 deletions
diff --git a/src/extras/defaults/qmetalroughmaterial.cpp b/src/extras/defaults/qmetalroughmaterial.cpp index 1cf114423..de21268f1 100644 --- a/src/extras/defaults/qmetalroughmaterial.cpp +++ b/src/extras/defaults/qmetalroughmaterial.cpp @@ -79,6 +79,10 @@ QMetalRoughMaterialPrivate::QMetalRoughMaterialPrivate() , m_metalRoughGL3RenderPass(new QRenderPass()) , m_metalRoughGL3Shader(new QShaderProgram()) , m_metalRoughGL3ShaderBuilder(new QShaderProgramBuilder()) + , m_metalRoughES3Technique(new QTechnique()) + , m_metalRoughES3RenderPass(new QRenderPass()) + , m_metalRoughES3Shader(new QShaderProgram()) + , m_metalRoughES3ShaderBuilder(new QShaderProgramBuilder()) , m_filterKey(new QFilterKey) { m_environmentIrradianceTexture->setMagnificationFilter(QAbstractTexture::Linear); @@ -112,7 +116,6 @@ void QMetalRoughMaterialPrivate::init() this, &QMetalRoughMaterialPrivate::handleTextureScaleChanged); m_metalRoughGL3Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/default.vert")))); - m_metalRoughGL3ShaderBuilder->setParent(q); m_metalRoughGL3ShaderBuilder->setShaderProgram(m_metalRoughGL3Shader); m_metalRoughGL3ShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/metalrough.frag.json"))); @@ -122,11 +125,25 @@ void QMetalRoughMaterialPrivate::init() QStringLiteral("ambientOcclusion"), QStringLiteral("normal")}); + m_metalRoughES3Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es3/default.vert")))); + m_metalRoughES3ShaderBuilder->setParent(q); + m_metalRoughES3ShaderBuilder->setShaderProgram(m_metalRoughES3Shader); + m_metalRoughES3ShaderBuilder->setFragmentShaderGraph(QUrl(QStringLiteral("qrc:/shaders/graphs/metalrough.frag.json"))); + m_metalRoughES3ShaderBuilder->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); m_metalRoughGL3Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile); + m_metalRoughES3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGLES); + m_metalRoughES3Technique->graphicsApiFilter()->setMajorVersion(3); + m_metalRoughES3Technique->graphicsApiFilter()->setMinorVersion(0); + m_filterKey->setParent(q); m_filterKey->setName(QStringLiteral("renderingStyle")); m_filterKey->setValue(QStringLiteral("forward")); @@ -136,6 +153,11 @@ void QMetalRoughMaterialPrivate::init() m_metalRoughGL3Technique->addRenderPass(m_metalRoughGL3RenderPass); m_metalRoughEffect->addTechnique(m_metalRoughGL3Technique); + m_metalRoughES3Technique->addFilterKey(m_filterKey); + m_metalRoughES3RenderPass->setShaderProgram(m_metalRoughES3Shader); + m_metalRoughES3Technique->addRenderPass(m_metalRoughES3RenderPass); + m_metalRoughEffect->addTechnique(m_metalRoughES3Technique); + m_metalRoughEffect->addParameter(m_baseColorParameter); m_metalRoughEffect->addParameter(m_metalnessParameter); m_metalRoughEffect->addParameter(m_roughnessParameter); @@ -291,6 +313,7 @@ void QMetalRoughMaterial::setBaseColor(const QVariant &baseColor) d->m_metalRoughEffect->addParameter(d->m_baseColorParameter); } d->m_metalRoughGL3ShaderBuilder->setEnabledLayers(layers); + d->m_metalRoughES3ShaderBuilder->setEnabledLayers(layers); } void QMetalRoughMaterial::setMetalness(const QVariant &metalness) @@ -312,6 +335,7 @@ void QMetalRoughMaterial::setMetalness(const QVariant &metalness) d->m_metalRoughEffect->addParameter(d->m_metalnessParameter); } d->m_metalRoughGL3ShaderBuilder->setEnabledLayers(layers); + d->m_metalRoughES3ShaderBuilder->setEnabledLayers(layers); } void QMetalRoughMaterial::setRoughness(const QVariant &roughness) @@ -333,6 +357,7 @@ void QMetalRoughMaterial::setRoughness(const QVariant &roughness) d->m_metalRoughEffect->addParameter(d->m_roughnessParameter); } d->m_metalRoughGL3ShaderBuilder->setEnabledLayers(layers); + d->m_metalRoughES3ShaderBuilder->setEnabledLayers(layers); } void QMetalRoughMaterial::setAmbientOcclusion(const QVariant &ambientOcclusion) @@ -351,6 +376,7 @@ void QMetalRoughMaterial::setAmbientOcclusion(const QVariant &ambientOcclusion) d->m_metalRoughEffect->removeParameter(d->m_ambientOcclusionMapParameter); } d->m_metalRoughGL3ShaderBuilder->setEnabledLayers(layers); + d->m_metalRoughES3ShaderBuilder->setEnabledLayers(layers); } void QMetalRoughMaterial::setNormal(const QVariant &normal) @@ -369,6 +395,7 @@ void QMetalRoughMaterial::setNormal(const QVariant &normal) d->m_metalRoughEffect->removeParameter(d->m_normalMapParameter); } d->m_metalRoughGL3ShaderBuilder->setEnabledLayers(layers); + d->m_metalRoughES3ShaderBuilder->setEnabledLayers(layers); } void QMetalRoughMaterial::setTextureScale(float textureScale) diff --git a/src/extras/defaults/qmetalroughmaterial_p.h b/src/extras/defaults/qmetalroughmaterial_p.h index 838474490..e12df1a8b 100644 --- a/src/extras/defaults/qmetalroughmaterial_p.h +++ b/src/extras/defaults/qmetalroughmaterial_p.h @@ -99,6 +99,10 @@ public: Qt3DRender::QRenderPass *m_metalRoughGL3RenderPass; Qt3DRender::QShaderProgram *m_metalRoughGL3Shader; Qt3DRender::QShaderProgramBuilder *m_metalRoughGL3ShaderBuilder; + Qt3DRender::QTechnique *m_metalRoughES3Technique; + Qt3DRender::QRenderPass *m_metalRoughES3RenderPass; + Qt3DRender::QShaderProgram *m_metalRoughES3Shader; + Qt3DRender::QShaderProgramBuilder *m_metalRoughES3ShaderBuilder; Qt3DRender::QFilterKey *m_filterKey; Q_DECLARE_PUBLIC(QMetalRoughMaterial) |