summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-01-16 11:27:41 +0100
committerSean Harmer <sean.harmer@kdab.com>2015-01-18 15:31:12 +0100
commitefeff9987d5191031231335573610d9ae34173da (patch)
tree45a09ff1e8251de31751d0f931f2d2b27682b6fe /examples
parentd1409531fd29eec8f04da80aa62f5823e22bce11 (diff)
deferred-renderer-cpp: Use ShaderData to fill lights for GL2 Technique
To test OpenGL2: comment addTechnique(m_gl3Technique); in finaleffect.cpp Note: also fixed the FrameGraph tree, the draw screen quad was executed first and then the fill GBUffer, it still worked as the screen quad reused the GBuffer from the previous frame. Change-Id: I52c0c11017e057a5042804ad49ccd1a3baf1d857 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/deferred-renderer-cpp/deferredrenderer.cpp2
-rw-r--r--examples/deferred-renderer-cpp/deferredrenderer.h2
-rw-r--r--examples/deferred-renderer-cpp/final_gl2.frag9
-rw-r--r--examples/deferred-renderer-cpp/finaleffect.h2
-rw-r--r--examples/deferred-renderer-cpp/main.cpp3
5 files changed, 12 insertions, 6 deletions
diff --git a/examples/deferred-renderer-cpp/deferredrenderer.cpp b/examples/deferred-renderer-cpp/deferredrenderer.cpp
index 869c95d8d..7053937b7 100644
--- a/examples/deferred-renderer-cpp/deferredrenderer.cpp
+++ b/examples/deferred-renderer-cpp/deferredrenderer.cpp
@@ -44,8 +44,8 @@
DeferredRenderer::DeferredRenderer(Qt3D::QNode *parent)
: Qt3D::QViewport(parent)
- , m_screenQuadFilter(new Qt3D::QLayerFilter(this))
, m_sceneFilter(new Qt3D::QLayerFilter(this))
+ , m_screenQuadFilter(new Qt3D::QLayerFilter(this))
, m_clearScreenQuad(new Qt3D::QClearBuffer(m_screenQuadFilter))
, m_gBufferTargetSelector(new Qt3D::QRenderTargetSelector(m_sceneFilter))
, m_clearGBuffer(new Qt3D::QClearBuffer(m_gBufferTargetSelector))
diff --git a/examples/deferred-renderer-cpp/deferredrenderer.h b/examples/deferred-renderer-cpp/deferredrenderer.h
index 382d5e49a..4fc4ce513 100644
--- a/examples/deferred-renderer-cpp/deferredrenderer.h
+++ b/examples/deferred-renderer-cpp/deferredrenderer.h
@@ -63,8 +63,8 @@ public:
void setScreenQuadLayers(const QStringList &layerName);
private:
- Qt3D::QLayerFilter *m_screenQuadFilter;
Qt3D::QLayerFilter *m_sceneFilter;
+ Qt3D::QLayerFilter *m_screenQuadFilter;
Qt3D::QClearBuffer *m_clearScreenQuad;
Qt3D::QRenderTargetSelector *m_gBufferTargetSelector;
Qt3D::QClearBuffer *m_clearGBuffer;
diff --git a/examples/deferred-renderer-cpp/final_gl2.frag b/examples/deferred-renderer-cpp/final_gl2.frag
index 0664dc2ae..f384a2df4 100644
--- a/examples/deferred-renderer-cpp/final_gl2.frag
+++ b/examples/deferred-renderer-cpp/final_gl2.frag
@@ -14,7 +14,10 @@ struct PointLight
};
const int lightCount = 3;
-uniform PointLight pointLights[lightCount];
+uniform struct
+{
+ PointLight lights[lightCount];
+} pointLights;
void main()
{
@@ -25,8 +28,8 @@ void main()
vec4 lightColor;
for (int i = 0; i < 3; i++) {
- vec3 s = normalize(pointLights[i].position - pos);
- lightColor += pointLights[i].color * (pointLights[i].intensity * max(dot(s, norm), 0.0));
+ vec3 s = normalize(pointLights.lights[i].position - pos);
+ lightColor += pointLights.lights[i].color * (pointLights.lights[i].intensity * max(dot(s, norm), 0.0));
}
lightColor /= float(lightCount);
gl_FragColor = col * lightColor;
diff --git a/examples/deferred-renderer-cpp/finaleffect.h b/examples/deferred-renderer-cpp/finaleffect.h
index 79d06b6af..2c6e12593 100644
--- a/examples/deferred-renderer-cpp/finaleffect.h
+++ b/examples/deferred-renderer-cpp/finaleffect.h
@@ -51,6 +51,8 @@ public:
explicit FinalEffect(Qt3D::QNode *parent = 0);
QList<Qt3D::QAnnotation *> passCriteria() const;
+ inline Qt3D::QTechnique *gl3Technique() const { return m_gl3Technique; }
+ inline Qt3D::QTechnique *gl2Technique() const { return m_gl2Technique; }
private :
Qt3D::QTechnique *m_gl3Technique;
diff --git a/examples/deferred-renderer-cpp/main.cpp b/examples/deferred-renderer-cpp/main.cpp
index be8a48add..4fc7c24b3 100644
--- a/examples/deferred-renderer-cpp/main.cpp
+++ b/examples/deferred-renderer-cpp/main.cpp
@@ -186,7 +186,8 @@ int main(int ac, char **av)
lightsData->addLight(light2);
lightsData->addLight(light3);
- screenQuadMaterial->addParameter(new Qt3D::QParameter(QStringLiteral("PointLightBlock"), QVariant::fromValue(lightsData)));
+ finalEffect->gl3Technique()->addParameter(new Qt3D::QParameter(QStringLiteral("PointLightBlock"), QVariant::fromValue(lightsData)));
+ finalEffect->gl2Technique()->addParameter(new Qt3D::QParameter(QStringLiteral("pointLights"), QVariant::fromValue(lightsData)));
screenQuadMaterial->setEffect(finalEffect);
Qt3D::QRotateTransform *screenPlaneRotation = new Qt3D::QRotateTransform();