diff options
author | Aurélien Brooke <aurelien@bahiasoft.fr> | 2023-05-24 22:54:07 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-06-05 11:11:40 +0000 |
commit | b4b8d29cf68754c72998192a212b76584646b148 (patch) | |
tree | 6a45d2aa0fb2bf49033c74eb104f35a558fde552 /src | |
parent | 44cd9b5ab578b2987484cfbc762e8ca43e72796d (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.cpp | 15 | ||||
-rw-r--r-- | src/extras/defaults/qskyboxentity_p.h | 3 |
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; |