Skip to content
Snippets Groups Projects
Commit 42b7edb0 authored by Tofu Linden's avatar Tofu Linden
Browse files

screen-space reflections: remember to unbias the value from the depth map. ...

screen-space reflections: remember to unbias the value from the depth map.  don't use varying version of lightnorm for lighting the reflection-guess-point.
parent 8bf1ade4
No related branches found
No related tags found
No related merge requests found
......@@ -288,6 +288,7 @@ void main()
// screen-space cheap fakey reflection map
//
depth -= 0.5; // unbias depth
// first figure out where we'll make our 2D guess from
vec2 ref2d = tc.xy + (0.5 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth;
// get attributes from the 2D guess point
......@@ -301,7 +302,7 @@ void main()
//refapprop *= step(dot(refnorm, refn), 0.0);
refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant
// get appropriate light strength for guess-point
float reflit = max(dot(refn, vary_light.xyz), 0.0);
float reflit = max(dot(refn, lightnorm.xyz), 0.0);
// apply sun color to guess-point, dampen according to inappropriateness of guess
vec3 refprod = (vary_SunlitColor*reflit) * refcol.rgb * refapprop;
vec3 ssshiny = (refprod * spec.a);
......
......@@ -287,6 +287,7 @@ void main()
// screen-space cheap fakey reflection map
//
depth -= 0.5; // unbias depth
// first figure out where we'll make our 2D guess from
vec2 ref2d = tc.xy + (0.5 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth;
// get attributes from the 2D guess point
......@@ -301,7 +302,7 @@ void main()
//refapprop *= step(dot(refnorm, refn), 0.0);
refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant
// get appropriate light strength for guess-point
float reflit = min(max(dot(refn, vary_light.xyz), 0.0), refshad);
float reflit = min(max(dot(refn, lightnorm.xyz), 0.0), refshad);
// apply sun color to guess-point, dampen according to inappropriateness of guess
vec3 refprod = (vary_SunlitColor*reflit) * refcol.rgb * refapprop;
vec3 ssshiny = (refprod * spec.a);
......
......@@ -290,6 +290,7 @@ void main()
// screen-space cheap fakey reflection map
//
depth -= 0.5; // unbias depth
// first figure out where we'll make our 2D guess from
vec2 ref2d = tc.xy + (0.5 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth;
// get attributes from the 2D guess point
......@@ -304,7 +305,7 @@ void main()
//refapprop *= step(dot(refnorm, refn), 0.0);
refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant
// get appropriate light strength for guess-point
float reflit = min(max(dot(refn, vary_light.xyz), 0.0), refshad);
float reflit = min(max(dot(refn, lightnorm.xyz), 0.0), refshad);
// apply sun color to guess-point, dampen according to inappropriateness of guess
vec3 refprod = (vary_SunlitColor*reflit) * refcol.rgb * refapprop;
vec3 ssshiny = (refprod * spec.a);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment