diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-06-04 19:26:36 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-06-04 19:42:50 +0300 |
commit | 942a748d5d5d3d03c09ae2b0b0767f1b1eb16147 (patch) | |
tree | 1bb83d9578806a72bc8715a1bdd5c845791adc52 /source/blender/draw/engines/eevee/shaders/lights_lib.glsl | |
parent | ff7401b02c4b9e111c0632f33bf5b51fc63026f6 (diff) |
Eevee: Merge shadow map processing into one drawcall per light
This removes a lot of framebuffer configuration and binding.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/lights_lib.glsl')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/lights_lib.glsl | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/lights_lib.glsl b/source/blender/draw/engines/eevee/shaders/lights_lib.glsl index d01daecba9a..e0a273a9c2e 100644 --- a/source/blender/draw/engines/eevee/shaders/lights_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/lights_lib.glsl @@ -177,7 +177,7 @@ float light_visibility(LightData ld, vec3 W, #ifndef VOLUMETRICS vec3 viewPosition, - vec3 viewNormal, + vec3 vN, #endif vec4 l_vector) { @@ -227,15 +227,17 @@ float light_visibility(LightData ld, vec3 ray_ori = viewPosition; - if (dot(viewNormal, ray_dir) <= 0.0) { - return vis; - } + // vN = (gl_FrontFacing) ? vN : -vN; + + // if (dot(vN, ray_dir) <= 0.0) { + // return vis; + // } - float bias = 0.5; /* Constant Bias */ - bias += 1.0 - abs(dot(viewNormal, ray_dir)); /* Angle dependent bias */ + float bias = 0.5; /* Constant Bias */ + bias += 1.0 - abs(dot(vN, ray_dir)); /* Angle dependent bias */ bias *= gl_FrontFacing ? data.sh_contact_offset : -data.sh_contact_offset; - vec3 nor_bias = viewNormal * bias; + vec3 nor_bias = vN * bias; ray_ori += nor_bias; ray_dir *= trace_distance; |