diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-11-30 12:05:45 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2020-11-30 13:31:10 +0000 |
commit | 4e248d8d0229f8afa283e9e9fe57f54a92bf4477 (patch) | |
tree | d427f69bda7007ffcbced7e4583e558ff2a43faa /src | |
parent | cf6b181227b02b23050198d21c54bd03eacd3b55 (diff) |
Add RHI technique for distance field renderer
Change-Id: Ia69dceb8ade566c2b67ce681b7b554e0babb17f2
Pick-to: 6.0.0 6.0
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-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; |