diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2018-05-04 15:07:00 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2018-05-04 15:08:40 +0300 |
commit | 3f95daa31fa98b1bd67fc71835f0011287c1d136 (patch) | |
tree | 6b171179a5da5ca9b6326bfa5cb56ae7979aeda5 /source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl | |
parent | d8a03c77d796db4ae2546fbcbe230dbf4846b0ea (diff) |
Workbench: Shadows
Initial review of the shard shadows in the workbench engine.
Speed optimizations like transform feedback are not implemented yet. I first want this part to be reviewed and merged.
@fclem please check the note in drw_stencil_set it was holding back nequal == 0 as by default DST.stencil_mask was set to 0. questioin is should we remove the whole check or not.
Also I am still looking for a better name (or split the enum) for DRW_STATE_STENCIL_DEPTH_FAIL_INCR_DECR_WRAP
Reviewers: fclem
Reviewed By: fclem
Tags: #code_quest
Differential Revision: https://developer.blender.org/D3198
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl b/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl new file mode 100644 index 00000000000..7322266a956 --- /dev/null +++ b/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl @@ -0,0 +1,23 @@ +#define EPSILON 0.000001 +#define INFINITE 100.0 + +uniform mat4 ModelMatrixInverse; +uniform mat4 ModelViewProjectionMatrix; +uniform vec3 lightDirection = vec3(0.57, 0.57, -0.57); + +in vec4 pos; + +out VertexData { + flat vec4 lightDirectionMS; + vec4 frontPosition; + vec4 backPosition; +} vertexData; + +void main() +{ + gl_Position = pos; + vertexData.lightDirectionMS = normalize(ModelMatrixInverse * vec4(lightDirection, 0.0)); + vertexData.lightDirectionMS.w = 0.0; + vertexData.frontPosition = ModelViewProjectionMatrix * (pos + vertexData.lightDirectionMS * EPSILON); + vertexData.backPosition = ModelViewProjectionMatrix * (pos + vertexData.lightDirectionMS * INFINITE); +} |