diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-01-16 11:03:59 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-01-18 15:31:09 +0100 |
commit | d1409531fd29eec8f04da80aa62f5823e22bce11 (patch) | |
tree | 4100200c6e217f27c4b0785179edcfe9522ad063 /examples | |
parent | 5ec135bfd357d93a906e271945e6f1da10af1511 (diff) |
deferred-renderer-qml: Use ShaderData to fill lights for GL2 Technique
To test OpenGL 2: comment the OpenGL 3.1 technique in FinalEffect
Change-Id: I475e0881a8954bf652fbc0796103ddbb74f62474
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/deferred-renderer-qml/FinalEffect.qml | 25 | ||||
-rw-r--r-- | examples/deferred-renderer-qml/main.qml | 10 |
2 files changed, 23 insertions, 12 deletions
diff --git a/examples/deferred-renderer-qml/FinalEffect.qml b/examples/deferred-renderer-qml/FinalEffect.qml index db780e177..6ff9949f5 100644 --- a/examples/deferred-renderer-qml/FinalEffect.qml +++ b/examples/deferred-renderer-qml/FinalEffect.qml @@ -47,6 +47,14 @@ Effect { // OpenGL 3.1 Technique { openGLFilter {api : OpenGLFilter.Desktop; profile : OpenGLFilter.Core; minorVersion : 1; majorVersion : 3 } + parameters: Parameter { name: "PointLightBlock"; value: ShaderData { + property ShaderDataArray lights: ShaderDataArray { + // hard coded lights until we have a way to filter + // ShaderData in a scene + values: [sceneEntity.light, sphere1.light, sphere2.light] + } + } + } renderPasses : RenderPass { annotations : Annotation { name : "pass"; value : "final" } shaderProgram : ShaderProgram { @@ -107,6 +115,14 @@ Effect { // OpenGL 2.0 with FBO extension Technique { openGLFilter {api : OpenGLFilter.Desktop; profile : OpenGLFilter.None; minorVersion : 0; majorVersion : 2 } + parameters: Parameter { name: "pointLights"; value: ShaderData { + property ShaderDataArray lights: ShaderDataArray { + // hard coded lights until we have a way to filter + // ShaderData in a scene + values: [sceneEntity.light, sphere1.light, sphere2.light] + } + } + } renderPasses : RenderPass { annotations : Annotation { name : "pass"; value : "final" } shaderProgram : ShaderProgram { @@ -139,7 +155,10 @@ Effect { }; const int lightCount = 3; - uniform PointLight pointLights[lightCount]; + uniform struct + { + PointLight lights[lightCount]; + } pointLights; void main() { @@ -150,8 +169,8 @@ Effect { 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-qml/main.qml b/examples/deferred-renderer-qml/main.qml index 5ad94dba3..47cba50cd 100644 --- a/examples/deferred-renderer-qml/main.qml +++ b/examples/deferred-renderer-qml/main.qml @@ -84,15 +84,7 @@ Entity { Parameter { name: "color"; value : gBuffer.color }, Parameter { name: "position"; value : gBuffer.position }, Parameter { name: "normal"; value : gBuffer.normal }, - Parameter { name: "winSize"; value : Qt.size(1024, 1024) }, - Parameter { name: "PointLightBlock"; value: ShaderData { - property ShaderDataArray lights: ShaderDataArray { - // hard coded lights until we have a way to filter - // ShaderData in a scene - values: [sceneEntity.light, sphere1.light, sphere2.light] - } - } - } + Parameter { name: "winSize"; value : Qt.size(1024, 1024) } ] effect : FinalEffect {} } |