summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2017-07-19 15:56:12 +0200
committerSean Harmer <sean.harmer@kdab.com>2017-09-04 11:11:47 +0000
commit47ed71044ef0d9ac2b86a3943a0c4c67c485737b (patch)
tree024077388df1b99e53b015298d3202bb4448f28f /src
parent77987081121bdabb7aa8da32dedd09321b4a9420 (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')
-rw-r--r--src/render/materialsystem/qshaderprogrambuilder.cpp28
-rw-r--r--src/render/materialsystem/qshaderprogrambuilder.h4
-rw-r--r--src/render/materialsystem/qshaderprogrambuilder_p.h2
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;