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

ssreflections: if we're going to (pretend to) take 4 diffuse samples, then...

ssreflections: if we're going to (pretend to) take 4 diffuse samples, then take them in a diamond pattern instead of all in a line.  this also slightly simplifies(?) the shader.
(transplanted from 7b334c22ece4e98565c5d182690ab9ca4c2526c6)
parent 205a6923
No related branches found
No related tags found
No related merge requests found
...@@ -299,17 +299,14 @@ void main() ...@@ -299,17 +299,14 @@ void main()
// The goal of the blur is to soften reflections in surfaces // The goal of the blur is to soften reflections in surfaces
// with low shinyness, and also to disguise our lameness. // with low shinyness, and also to disguise our lameness.
float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0 float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0
vec2 checkoffset = normalize(ref2d)*9.0*(1.0-spec.a)*(checkerboard-0.5); float checkoffset = 1.0 + (7.0*(1.0-spec.a))*(checkerboard-0.5);
ref2d += checkoffset; ref2d += vec2(checkoffset, checkoffset);
ref2d += tc.xy; // use as offset from destination ref2d += tc.xy; // use as offset from destination
// Get attributes from the 2D guess point. // Get attributes from the 2D guess point.
// We average two samples of diffuse (not of anything else) per // We average two samples of diffuse (not of anything else) per
// pixel to try to reduce aliasing some more. // pixel to try to reduce aliasing some more.
// --------------------- vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb +
// ^ ^ ^ ^ ^ texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb);
// a . b o c . d check=0:avg(a,b) check=1:avg(c,d)
vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d).rgb +
texture2DRect(diffuseRect, ref2d + checkoffset*2.0).rgb);
float refdepth = texture2DRect(depthMap, ref2d).a; float refdepth = texture2DRect(depthMap, ref2d).a;
vec3 refpos = getPosition_d(ref2d, refdepth).xyz; vec3 refpos = getPosition_d(ref2d, refdepth).xyz;
vec3 refn = normalize(texture2DRect(normalMap, ref2d).rgb * 2.0 - 1.0); vec3 refn = normalize(texture2DRect(normalMap, ref2d).rgb * 2.0 - 1.0);
......
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