diff options
Diffstat (limited to 'examples/qt3d/deferred-renderer-cpp/final_gl3.frag')
-rw-r--r-- | examples/qt3d/deferred-renderer-cpp/final_gl3.frag | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/examples/qt3d/deferred-renderer-cpp/final_gl3.frag b/examples/qt3d/deferred-renderer-cpp/final_gl3.frag new file mode 100644 index 000000000..88abd5cb1 --- /dev/null +++ b/examples/qt3d/deferred-renderer-cpp/final_gl3.frag @@ -0,0 +1,37 @@ +#version 140 + +uniform sampler2D color; +uniform sampler2D position; +uniform sampler2D normal; +uniform vec2 winSize; + +out vec4 fragColor; + +struct PointLight +{ + vec3 position; + vec3 direction; + vec4 color; + float intensity; +}; + +const int lightCount = 3; +uniform PointLightBlock { + PointLight lights[lightCount]; +}; + +void main() +{ + vec2 texCoord = gl_FragCoord.xy / winSize; + vec4 col = texture(color, texCoord); + vec3 pos = texture(position, texCoord).xyz; + vec3 norm = texture(normal, texCoord).xyz; + + vec4 lightColor; + for (int i = 0; i < 3; i++) { + vec3 s = normalize(lights[i].position - pos); + lightColor += lights[i].color * (lights[i].intensity * max(dot(s, norm), 0.0)); + } + lightColor /= float(lightCount); + fragColor = col * lightColor; +} |