diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2017-07-19 15:56:12 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-09-04 11:11:47 +0000 |
commit | 47ed71044ef0d9ac2b86a3943a0c4c67c485737b (patch) | |
tree | 024077388df1b99e53b015298d3202bb4448f28f /src/render | |
parent | 77987081121bdabb7aa8da32dedd09321b4a9420 (diff) |
Introduce enabled layers to QShaderProgramBuilder
This will allow to control the code generation by forwarding this to
QShaderGenerator on the backend side.
Change-Id: Ic613467ba742c05344ef553eabab861b2408d0ec
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/materialsystem/qshaderprogrambuilder.cpp | 28 | ||||
-rw-r--r-- | src/render/materialsystem/qshaderprogrambuilder.h | 4 | ||||
-rw-r--r-- | src/render/materialsystem/qshaderprogrambuilder_p.h | 2 |
3 files changed, 34 insertions, 0 deletions
diff --git a/src/render/materialsystem/qshaderprogrambuilder.cpp b/src/render/materialsystem/qshaderprogrambuilder.cpp index 0ca2ed407..9318f96af 100644 --- a/src/render/materialsystem/qshaderprogrambuilder.cpp +++ b/src/render/materialsystem/qshaderprogrambuilder.cpp @@ -135,6 +135,33 @@ QShaderProgram *QShaderProgramBuilder::shaderProgram() const } /*! + \qmlproperty stringlist ShaderProgramBuilder::enabledLayers + + Holds the list of layers this builder will activate on the shader graphs + during code generation. +*/ +/*! + \property QShaderProgramBuilder::enabledLayers + + Holds the list of layers this builder will activate on the shader graphs + during code generation. +*/ +void QShaderProgramBuilder::setEnabledLayers(const QStringList &layers) +{ + Q_D(QShaderProgramBuilder); + if (layers != d->m_enabledLayers) { + d->m_enabledLayers = layers; + emit enabledLayersChanged(layers); + } +} + +QStringList QShaderProgramBuilder::enabledLayers() const +{ + Q_D(const QShaderProgramBuilder); + return d->m_enabledLayers; +} + +/*! \qmlproperty string ShaderProgram::vertexShaderGraph Holds the URL to the vertex shader graph used by this shader program builder. @@ -290,6 +317,7 @@ Qt3DCore::QNodeCreatedChangeBasePtr QShaderProgramBuilder::createNodeCreationCha auto &data = creationChange->data; Q_D(const QShaderProgramBuilder); data.shaderProgramId = d->m_shaderProgram ? d->m_shaderProgram->id() : Qt3DCore::QNodeId(); + data.enabledLayers = d->m_enabledLayers; data.vertexShaderGraph = d->m_vertexShaderGraph; data.tessellationControlShaderGraph = d->m_tessControlShaderGraph; data.tessellationEvaluationShaderGraph = d->m_tessEvalShaderGraph; diff --git a/src/render/materialsystem/qshaderprogrambuilder.h b/src/render/materialsystem/qshaderprogrambuilder.h index db8d2cae0..d8903232a 100644 --- a/src/render/materialsystem/qshaderprogrambuilder.h +++ b/src/render/materialsystem/qshaderprogrambuilder.h @@ -56,6 +56,7 @@ class QT3DRENDERSHARED_EXPORT QShaderProgramBuilder : public Qt3DCore::QNode { Q_OBJECT Q_PROPERTY(Qt3DRender::QShaderProgram* shaderProgram READ shaderProgram WRITE setShaderProgram NOTIFY shaderProgramChanged) + Q_PROPERTY(QStringList enabledLayers READ enabledLayers WRITE setEnabledLayers NOTIFY enabledLayersChanged) Q_PROPERTY(QUrl vertexShaderGraph READ vertexShaderGraph WRITE setVertexShaderGraph NOTIFY vertexShaderGraphChanged) Q_PROPERTY(QUrl tessellationControlShaderGraph READ tessellationControlShaderGraph WRITE setTessellationControlShaderGraph NOTIFY tessellationControlShaderGraphChanged) Q_PROPERTY(QUrl tessellationEvaluationShaderGraph READ tessellationEvaluationShaderGraph WRITE setTessellationEvaluationShaderGraph NOTIFY tessellationEvaluationShaderGraphChanged) @@ -68,6 +69,7 @@ public: ~QShaderProgramBuilder(); QShaderProgram *shaderProgram() const; + QStringList enabledLayers() const; QUrl vertexShaderGraph() const; QUrl tessellationControlShaderGraph() const; QUrl tessellationEvaluationShaderGraph() const; @@ -77,6 +79,7 @@ public: public Q_SLOTS: void setShaderProgram(Qt3DRender::QShaderProgram *program); + void setEnabledLayers(const QStringList &layers); void setVertexShaderGraph(const QUrl &vertexShaderGraph); void setTessellationControlShaderGraph(const QUrl &tessellationControlShaderGraph); void setTessellationEvaluationShaderGraph(const QUrl &tessellationEvaluationShaderGraph); @@ -86,6 +89,7 @@ public Q_SLOTS: Q_SIGNALS: void shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram); + void enabledLayersChanged(const QStringList &layers); void vertexShaderGraphChanged(const QUrl &vertexShaderGraph); void tessellationControlShaderGraphChanged(const QUrl &tessellationControlShaderGraph); void tessellationEvaluationShaderGraphChanged(const QUrl &tessellationEvaluationShaderGraph); diff --git a/src/render/materialsystem/qshaderprogrambuilder_p.h b/src/render/materialsystem/qshaderprogrambuilder_p.h index da331ee08..e1b470229 100644 --- a/src/render/materialsystem/qshaderprogrambuilder_p.h +++ b/src/render/materialsystem/qshaderprogrambuilder_p.h @@ -67,6 +67,7 @@ public: Q_DECLARE_PUBLIC(QShaderProgramBuilder) QShaderProgram *m_shaderProgram; + QStringList m_enabledLayers; QUrl m_vertexShaderGraph; QUrl m_tessControlShaderGraph; QUrl m_tessEvalShaderGraph; @@ -78,6 +79,7 @@ public: struct QShaderProgramBuilderData { Qt3DCore::QNodeId shaderProgramId; + QStringList enabledLayers; QUrl vertexShaderGraph; QUrl tessellationControlShaderGraph; QUrl tessellationEvaluationShaderGraph; |