Skip to content

Commit

Permalink
OpenGL2: Don't do MSAA resolve/shadow mask/SSAO on shadow views.
Browse files Browse the repository at this point in the history
  • Loading branch information
SmileTheory authored and wtfbbqhax committed Jul 15, 2017
1 parent 81bf5a1 commit d125047
Show file tree
Hide file tree
Showing 5 changed files with 186 additions and 188 deletions.
44 changes: 12 additions & 32 deletions src/renderergl2/glsl/pshadow_fp.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,6 @@ uniform float u_LightRadius;
varying vec3 var_Position;
varying vec3 var_Normal;

float sampleDistMap(sampler2D texMap, vec2 uv, float scale)
{
vec3 distv = texture2D(texMap, uv).xyz;
return dot(distv, vec3(1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0)) * scale;
}

void main()
{
vec3 lightToPos = var_Position - u_LightOrigin.xyz;
Expand Down Expand Up @@ -57,42 +51,28 @@ void main()
#endif

intensity *= fade;
#if defined(USE_PCF)
float part;

dist = sampleDistMap(u_ShadowMap, st + vec2(-1.0/512.0, -1.0/512.0), u_LightRadius);
part = max(sign(lightDist - dist), 0.0);

dist = sampleDistMap(u_ShadowMap, st + vec2( 1.0/512.0, -1.0/512.0), u_LightRadius);
part += max(sign(lightDist - dist), 0.0);

dist = sampleDistMap(u_ShadowMap, st + vec2(-1.0/512.0, 1.0/512.0), u_LightRadius);
part += max(sign(lightDist - dist), 0.0);

dist = sampleDistMap(u_ShadowMap, st + vec2( 1.0/512.0, 1.0/512.0), u_LightRadius);
part += max(sign(lightDist - dist), 0.0);
float part;
#if defined(USE_PCF)
part = float(texture2D(u_ShadowMap, st + vec2(-1.0/512.0, -1.0/512.0)).r != 1.0);
part += float(texture2D(u_ShadowMap, st + vec2( 1.0/512.0, -1.0/512.0)).r != 1.0);
part += float(texture2D(u_ShadowMap, st + vec2(-1.0/512.0, 1.0/512.0)).r != 1.0);
part += float(texture2D(u_ShadowMap, st + vec2( 1.0/512.0, 1.0/512.0)).r != 1.0);
#else
part = float(texture2D(u_ShadowMap, st).r != 1.0);
#endif

#if defined(USE_DISCARD)
if (part <= 0.0)
{
discard;
}
#endif

#if defined(USE_PCF)
intensity *= part * 0.25;
#else
dist = sampleDistMap(u_ShadowMap, st, u_LightRadius);

#if defined(USE_DISCARD)
if (lightDist - dist <= 0.0)
{
discard;
}
#endif

intensity *= max(sign(lightDist - dist), 0.0);
intensity *= part;
#endif

gl_FragColor.rgb = vec3(0);
gl_FragColor.a = clamp(intensity, 0.0, 0.75);
}
Loading

0 comments on commit d125047

Please sign in to comment.