summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAurélien Brooke <aurelien@bahiasoft.fr>2023-05-24 22:54:07 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-06-05 11:11:40 +0000
commitb4b8d29cf68754c72998192a212b76584646b148 (patch)
tree6a45d2aa0fb2bf49033c74eb104f35a558fde552 /src
parent44cd9b5ab578b2987484cfbc762e8ca43e72796d (diff)
QSkyboxEntity: add support for the RHI renderer
The shaders were already there, but no QTechnique was leveraging it. Fixes: QTBUG-113314 Fixes: QTBUG-112739 Change-Id: Ib53d73f7e78ba1a2e1727c384015a95c791dce82 Reviewed-by: Mike Krus <mike.krus@kdab.com> (cherry picked from commit 56b8be847e9ebb1d9287df150f0cbe398eed94d6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/extras/defaults/qskyboxentity.cpp15
-rw-r--r--src/extras/defaults/qskyboxentity_p.h3
2 files changed, 18 insertions, 0 deletions
diff --git a/src/extras/defaults/qskyboxentity.cpp b/src/extras/defaults/qskyboxentity.cpp
index 8f9718465..0b3bcf0d9 100644
--- a/src/extras/defaults/qskyboxentity.cpp
+++ b/src/extras/defaults/qskyboxentity.cpp
@@ -35,13 +35,16 @@ QSkyboxEntityPrivate::QSkyboxEntityPrivate()
, m_loadedTexture(new QTextureLoader())
, m_gl3Shader(new QShaderProgram())
, m_gl2es2Shader(new QShaderProgram())
+ , m_rhiShader(new QShaderProgram())
, m_gl2Technique(new QTechnique())
, m_es2Technique(new QTechnique())
, m_gl3Technique(new QTechnique())
+ , m_rhiTechnique(new QTechnique())
, m_filterKey(new QFilterKey)
, m_gl2RenderPass(new QRenderPass())
, m_es2RenderPass(new QRenderPass())
, m_gl3RenderPass(new QRenderPass())
+ , m_rhiRenderPass(new QRenderPass())
, m_mesh(new QCuboidMesh())
, m_gammaStrengthParameter(new QParameter(QStringLiteral("gammaStrength"), 0.0f))
, m_textureParameter(new QParameter(QStringLiteral("skyboxTexture"), m_skyboxTexture))
@@ -66,6 +69,8 @@ void QSkyboxEntityPrivate::init()
m_gl3Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/skybox.frag"))));
m_gl2es2Shader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/skybox.vert"))));
m_gl2es2Shader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/es2/skybox.frag"))));
+ m_rhiShader->setVertexShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/skybox.vert"))));
+ m_rhiShader->setFragmentShaderCode(QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/skybox.frag"))));
m_gl3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
m_gl3Technique->graphicsApiFilter()->setMajorVersion(3);
@@ -82,6 +87,10 @@ void QSkyboxEntityPrivate::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_filterKey->setParent(m_effect);
m_filterKey->setName(QStringLiteral("renderingStyle"));
m_filterKey->setValue(QStringLiteral("forward"));
@@ -89,10 +98,12 @@ void QSkyboxEntityPrivate::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);
QCullFace *cullFront = new QCullFace();
cullFront->setMode(QCullFace::Front);
@@ -107,14 +118,18 @@ void QSkyboxEntityPrivate::init()
m_gl2RenderPass->addRenderState(depthTest);
m_es2RenderPass->addRenderState(cullFront);
m_es2RenderPass->addRenderState(depthTest);
+ m_rhiRenderPass->addRenderState(cullFront);
+ m_rhiRenderPass->addRenderState(depthTest);
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_material->setEffect(m_effect);
m_material->addParameter(m_gammaStrengthParameter);
diff --git a/src/extras/defaults/qskyboxentity_p.h b/src/extras/defaults/qskyboxentity_p.h
index 70222b4dc..a335d472e 100644
--- a/src/extras/defaults/qskyboxentity_p.h
+++ b/src/extras/defaults/qskyboxentity_p.h
@@ -56,13 +56,16 @@ class QSkyboxEntityPrivate : public Qt3DCore::QEntityPrivate
Qt3DRender::QTextureLoader *m_loadedTexture;
Qt3DRender::QShaderProgram *m_gl3Shader;
Qt3DRender::QShaderProgram *m_gl2es2Shader;
+ Qt3DRender::QShaderProgram *m_rhiShader;
Qt3DRender::QTechnique *m_gl2Technique;
Qt3DRender::QTechnique *m_es2Technique;
Qt3DRender::QTechnique *m_gl3Technique;
+ Qt3DRender::QTechnique *m_rhiTechnique;
Qt3DRender::QFilterKey *m_filterKey;
Qt3DRender::QRenderPass *m_gl2RenderPass;
Qt3DRender::QRenderPass *m_es2RenderPass;
Qt3DRender::QRenderPass *m_gl3RenderPass;
+ Qt3DRender::QRenderPass *m_rhiRenderPass;
QCuboidMesh *m_mesh;
Qt3DRender::QParameter *m_gammaStrengthParameter;
Qt3DRender::QParameter *m_textureParameter;