summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2020-11-30 12:05:45 +0000
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-11-30 16:13:42 +0000
commitce8633cad20de91361f800cd4f5b6d81ccbe64cc (patch)
tree6b103efa0ec0d9bdb91d52d3bb18e9cba4f2993d
parent8546c23368f154ad672e4008611e873cb73f40b3 (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.cpp18
-rw-r--r--src/extras/text/qtext2dmaterial_p_p.h3
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;