diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-11-30 12:05:45 +0000 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-11-30 16:13:42 +0000 |
commit | ce8633cad20de91361f800cd4f5b6d81ccbe64cc (patch) | |
tree | 6b103efa0ec0d9bdb91d52d3bb18e9cba4f2993d | |
parent | 8546c23368f154ad672e4008611e873cb73f40b3 (diff) |
Add RHI technique for distance field renderer
Change-Id: Ia69dceb8ade566c2b67ce681b7b554e0babb17f2
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
(cherry picked from commit 4e248d8d0229f8afa283e9e9fe57f54a92bf4477)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/extras/text/qtext2dmaterial.cpp | 18 | ||||
-rw-r--r-- | src/extras/text/qtext2dmaterial_p_p.h | 3 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/extras/text/qtext2dmaterial.cpp b/src/extras/text/qtext2dmaterial.cpp index d8bf312c4..2070bf15f 100644 --- a/src/extras/text/qtext2dmaterial.cpp +++ b/src/extras/text/qtext2dmaterial.cpp @@ -69,9 +69,12 @@ QText2DMaterialPrivate::QText2DMaterialPrivate() , 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_rhiShaderProgram(new Qt3DRender::QShaderProgram()) , m_gl3ShaderProgram(new Qt3DRender::QShaderProgram()) , m_gl2es2ShaderProgram(new Qt3DRender::QShaderProgram()) , m_blend(new Qt3DRender::QBlendEquation()) @@ -82,6 +85,9 @@ QText2DMaterialPrivate::QText2DMaterialPrivate() void QText2DMaterialPrivate::init() { + m_rhiShaderProgram->setVertexShaderCode(Qt3DRender::QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/distancefieldtext.vert")))); + m_rhiShaderProgram->setFragmentShaderCode(Qt3DRender::QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/rhi/distancefieldtext.frag")))); + m_gl3ShaderProgram->setVertexShaderCode(Qt3DRender::QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/distancefieldtext.vert")))); m_gl3ShaderProgram->setFragmentShaderCode(Qt3DRender::QShaderProgram::loadSource(QUrl(QStringLiteral("qrc:/shaders/gl3/distancefieldtext.frag")))); @@ -108,6 +114,11 @@ void QText2DMaterialPrivate::init() m_es2RenderPass->addRenderState(m_blendArgs); m_es2RenderPass->addRenderState(m_depthTest); + m_rhiRenderPass->setShaderProgram(m_rhiShaderProgram); + m_rhiRenderPass->addRenderState(m_blend); + m_rhiRenderPass->addRenderState(m_blendArgs); + m_rhiRenderPass->addRenderState(m_depthTest); + m_gl3Technique->graphicsApiFilter()->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL); m_gl3Technique->graphicsApiFilter()->setMajorVersion(3); m_gl3Technique->graphicsApiFilter()->setMinorVersion(1); @@ -126,16 +137,23 @@ void QText2DMaterialPrivate::init() m_es2Technique->graphicsApiFilter()->setProfile(Qt3DRender::QGraphicsApiFilter::NoProfile); m_es2Technique->addRenderPass(m_es2RenderPass); + m_rhiTechnique->graphicsApiFilter()->setApi(Qt3DRender::QGraphicsApiFilter::RHI); + m_rhiTechnique->graphicsApiFilter()->setMajorVersion(1); + m_rhiTechnique->graphicsApiFilter()->setMinorVersion(0); + m_rhiTechnique->addRenderPass(m_rhiRenderPass); + Qt3DRender::QFilterKey *filterKey = new Qt3DRender::QFilterKey(q_func()); filterKey->setName(QStringLiteral("renderingStyle")); filterKey->setValue(QStringLiteral("forward")); m_gl3Technique->addFilterKey(filterKey); m_gl2Technique->addFilterKey(filterKey); m_es2Technique->addFilterKey(filterKey); + m_rhiTechnique->addFilterKey(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_textureParameter); m_effect->addParameter(m_textureSizeParameter); m_effect->addParameter(m_colorParameter); diff --git a/src/extras/text/qtext2dmaterial_p_p.h b/src/extras/text/qtext2dmaterial_p_p.h index 90f0a71f1..09c8dad14 100644 --- a/src/extras/text/qtext2dmaterial_p_p.h +++ b/src/extras/text/qtext2dmaterial_p_p.h @@ -85,9 +85,12 @@ 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_rhiShaderProgram; Qt3DRender::QShaderProgram *m_gl3ShaderProgram; Qt3DRender::QShaderProgram *m_gl2es2ShaderProgram; Qt3DRender::QBlendEquation *m_blend; |