Skip to content

Commit 6b4ccb7

Browse files
committed
Working point lights (deferred)
1 parent 4389f81 commit 6b4ccb7

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

demosys/deferred/shaders/deferred/combine.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ uniform sampler2D light_buffer;
2020
in vec2 uv;
2121

2222
void main() {
23-
out_color = texture(diffuse_buffer, uv) * texture(light_buffer, uv);
23+
out_color = texture(diffuse_buffer, uv) * (texture(light_buffer, uv) * 0.75 + 0.25);
2424
}
2525

2626
#endif

demosys/deferred/shaders/deferred/geometry.glsl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ in vec2 uv;
3232
void main() {
3333
out_normal = normalize(normal);
3434
out_color = texture(texture0, uv);
35+
// out_color = vec4(1.0);
3536
}
3637

3738
#endif

demosys/deferred/shaders/deferred/light_point.glsl

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ in vec3 vs_lightpos;
3434

3535
void main() {
3636
vec2 uv = vec2(gl_FragCoord.x / screensize.x, gl_FragCoord.y / screensize.y);
37-
vec3 N = normalize(texture(g_normal, uv).rgb);
37+
vec3 normal = normalize(texture(g_normal, uv).rgb);
3838

3939
// View position reconstruct from depth
4040
float depth = texture(g_depth, uv).r;
@@ -48,15 +48,19 @@ void main() {
4848
discard;
4949
}
5050

51-
vec3 L = normalize(vs_lightpos - pos);
52-
vec3 R = reflect(L, N);
53-
float ndl = max(dot(N, L), 0.0);
51+
vec3 lightDir = normalize(vs_lightpos - pos);
52+
vec3 viewDir = normalize(-pos);
53+
// vec3 halfwayDir = normalize(lightDir + viewDir);
54+
vec3 reflectDir = reflect(-lightDir, normal);
5455

55-
// out_light = vec4(1.0 - (dist / radius));
56-
out_light = vec4(ndl);
57-
// out_light = vec4(R, 1.0);
58-
// out_light = vec4(N, 1.0);
59-
// out_light = vec4(depth);
56+
float diffuse = max(dot(normal, lightDir), 0.0);
57+
// float spec = pow(max(dot(normal, halfwayDir), 0.0), 32.8);
58+
float spec = pow(max(dot(viewDir, reflectDir), 0.0), 4.0);
59+
60+
float l = diffuse * 0.5 + spec;
61+
// l *= (1.0 - dist / radius);
62+
l *= clamp(1.0 - dist*dist/(radius*radius), 0.0, 1.0);
63+
out_light = vec4(l);
6064
}
6165

6266
#endif

0 commit comments

Comments
 (0)