summaryrefslogtreecommitdiffstats
path: root/src/render/materialsystem/shader.cpp
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-04-01 14:54:30 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-04-10 15:03:28 +0000
commit417f43b0c540757e56c21f048def6507e907615e (patch)
tree94d2d08a132e101ec457e8842f3a2556326aa500 /src/render/materialsystem/shader.cpp
parent782ffe1f81dba9fb68a3b6592c2e90dea8d3057d (diff)
Shader handles creation
Change-Id: I0705d14a4d7c5a9ce6df5274ff8e59414f55e695 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/materialsystem/shader.cpp')
-rw-r--r--src/render/materialsystem/shader.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/render/materialsystem/shader.cpp b/src/render/materialsystem/shader.cpp
index 963d3f3e6..fa1a396b5 100644
--- a/src/render/materialsystem/shader.cpp
+++ b/src/render/materialsystem/shader.cpp
@@ -45,10 +45,11 @@
#include <QOpenGLShaderProgram>
#include <QMutexLocker>
#include <qshaderprogram.h>
-#include <Qt3DRender/private/graphicscontext_p.h>
#include <Qt3DRender/private/attachmentpack_p.h>
-#include <Qt3DCore/qscenepropertychange.h>
+#include <Qt3DRender/private/graphicscontext_p.h>
+#include <Qt3DRender/private/qshaderprogram_p.h>
#include <Qt3DRender/private/stringtoint_p.h>
+#include <Qt3DCore/qscenepropertychange.h>
QT_BEGIN_NAMESPACE
@@ -104,6 +105,24 @@ void Shader::updateFromPeer(Qt3DCore::QNode *peer)
updateDNA();
}
+void Shader::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change)
+{
+ const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QShaderProgramData>>(change);
+ const auto &data = typedChange->data;
+
+ for (int i = QShaderProgram::Vertex; i <= QShaderProgram::Compute; ++i)
+ m_shaderCode[i].clear();
+
+ m_shaderCode[QShaderProgram::Vertex] = data.vertexShaderCode;
+ m_shaderCode[QShaderProgram::TessellationControl] = data.tessellationControlShaderCode;
+ m_shaderCode[QShaderProgram::TessellationEvaluation] = data.tessellationEvaluationShaderCode;
+ m_shaderCode[QShaderProgram::Geometry] = data.geometryShaderCode;
+ m_shaderCode[QShaderProgram::Fragment] = data.fragmentShaderCode;
+ m_shaderCode[QShaderProgram::Compute] = data.computeShaderCode;
+ m_isLoaded = false;
+ updateDNA();
+}
+
QVector<QString> Shader::uniformsNames() const
{
return m_uniformsNames;