Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <j.bakker@atmind.nl>2018-05-04 15:07:00 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2018-05-04 15:08:40 +0300
commit3f95daa31fa98b1bd67fc71835f0011287c1d136 (patch)
tree6b171179a5da5ca9b6326bfa5cb56ae7979aeda5 /source/blender/draw/engines/workbench/shaders/workbench_shadow_vert.glsl
parentd8a03c77d796db4ae2546fbcbe230dbf4846b0ea (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.glsl23
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);
+}