]> git.lizzy.rs Git - dragonfireclient.git/blob - client/shaders/shadow_shaders/pass1_vertex.glsl
a6d8b3db85a7e758250f5bcab7493a64bd1a5035
[dragonfireclient.git] / client / shaders / shadow_shaders / pass1_vertex.glsl
1 uniform mat4 LightMVP; // world matrix
2 varying vec4 tPos;
3
4 const float bias0 = 0.9;
5 const float zPersFactor = 0.5;
6 const float bias1 = 1.0 - bias0 + 1e-6;
7
8 vec4 getPerspectiveFactor(in vec4 shadowPosition)
9 {
10         float pDistance = length(shadowPosition.xy);
11         float pFactor = pDistance * bias0 + bias1;
12         shadowPosition.xyz *= vec3(vec2(1.0 / pFactor), zPersFactor);
13
14         return shadowPosition;
15 }
16
17
18 void main()
19 {
20         vec4 pos = LightMVP * gl_Vertex;
21
22         tPos = getPerspectiveFactor(pos);
23
24         gl_Position = vec4(tPos.xyz, 1.0);
25         gl_TexCoord[0].st = gl_MultiTexCoord0.st;
26 }