summaryrefslogtreecommitdiffstats
path: root/examples/qt3d/deferred-renderer-cpp/final_gl2.frag
diff options
context:
space:
mode:
Diffstat (limited to 'examples/qt3d/deferred-renderer-cpp/final_gl2.frag')
-rw-r--r--examples/qt3d/deferred-renderer-cpp/final_gl2.frag36
1 files changed, 36 insertions, 0 deletions
diff --git a/examples/qt3d/deferred-renderer-cpp/final_gl2.frag b/examples/qt3d/deferred-renderer-cpp/final_gl2.frag
new file mode 100644
index 000000000..f384a2df4
--- /dev/null
+++ b/examples/qt3d/deferred-renderer-cpp/final_gl2.frag
@@ -0,0 +1,36 @@
+#version 110
+
+uniform sampler2D color;
+uniform sampler2D position;
+uniform sampler2D normal;
+uniform vec2 winSize;
+
+struct PointLight
+{
+ vec3 position;
+ vec3 direction;
+ vec4 color;
+ float intensity;
+};
+
+const int lightCount = 3;
+uniform struct
+{
+ PointLight lights[lightCount];
+} pointLights;
+
+void main()
+{
+ vec2 texCoord = gl_FragCoord.xy / winSize;
+ vec4 col = texture2D(color, texCoord);
+ vec3 pos = texture2D(position, texCoord).xyz;
+ vec3 norm = texture2D(normal, texCoord).xyz;
+
+ vec4 lightColor;
+ for (int i = 0; i < 3; i++) {
+ 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;
+}