diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-01-16 11:27:41 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-01-18 15:31:12 +0100 |
commit | efeff9987d5191031231335573610d9ae34173da (patch) | |
tree | 45a09ff1e8251de31751d0f931f2d2b27682b6fe /examples | |
parent | d1409531fd29eec8f04da80aa62f5823e22bce11 (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.cpp | 2 | ||||
-rw-r--r-- | examples/deferred-renderer-cpp/deferredrenderer.h | 2 | ||||
-rw-r--r-- | examples/deferred-renderer-cpp/final_gl2.frag | 9 | ||||
-rw-r--r-- | examples/deferred-renderer-cpp/finaleffect.h | 2 | ||||
-rw-r--r-- | examples/deferred-renderer-cpp/main.cpp | 3 |
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(); |