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:
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/shadow_geom.glsl')
-rw-r--r--source/blender/draw/engines/eevee/shaders/shadow_geom.glsl35
1 files changed, 30 insertions, 5 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/shadow_geom.glsl b/source/blender/draw/engines/eevee/shaders/shadow_geom.glsl
index afc78c4a8f8..ea51fa73a65 100644
--- a/source/blender/draw/engines/eevee/shaders/shadow_geom.glsl
+++ b/source/blender/draw/engines/eevee/shaders/shadow_geom.glsl
@@ -1,9 +1,14 @@
layout(std140) uniform shadow_render_block {
mat4 ShadowMatrix[6];
+ mat4 FaceViewMatrix[6];
vec4 lampPosition;
- int layer;
- float exponent;
+ float cubeTexelSize;
+ float storedTexelSize;
+ float nearClip;
+ float farClip;
+ int shadowSampleCount;
+ float shadowInvSampleCount;
};
layout(triangles) in;
@@ -12,15 +17,35 @@ layout(triangle_strip, max_vertices=3) out;
in vec4 vPos[];
flat in int face[];
+#ifdef MESH_SHADER
+in vec3 vNor[];
+#endif
+
out vec3 worldPosition;
+#ifdef MESH_SHADER
+out vec3 viewPosition; /* Required. otherwise generate linking error. */
+out vec3 worldNormal; /* Required. otherwise generate linking error. */
+out vec3 viewNormal; /* Required. otherwise generate linking error. */
+flat out int shFace;
+#else
+int shFace;
+#endif
void main() {
- int f = face[0];
- gl_Layer = f;
+ shFace = face[0];
+ gl_Layer = shFace;
for (int v = 0; v < 3; ++v) {
- gl_Position = ShadowMatrix[f] * vPos[v];
+ gl_Position = ShadowMatrix[shFace] * vPos[v];
worldPosition = vPos[v].xyz;
+#ifdef MESH_SHADER
+ worldNormal = vNor[v];
+ viewPosition = (FaceViewMatrix[shFace] * vec4(worldPosition, 1.0)).xyz;
+ viewNormal = (FaceViewMatrix[shFace] * vec4(worldNormal, 0.0)).xyz;
+#ifdef ATTRIB
+ pass_attrib(v);
+#endif
+#endif
EmitVertex();
}