Merge branch 'master' into blender2.8
[blender.git] / source / blender / gpu / shaders / gpu_shader_vsm_store_frag.glsl
1 /**
2  * This fragment shader was initially found at http://fabiensanglard.net/shadowmappingVSM/index.php
3  */
4
5 in vec4 v_position;
6 out vec4 fragColor;
7
8 void main()
9 {
10         float depth = v_position.z / v_position.w;
11         depth = depth * 0.5 + 0.5;
12
13         float moment1 = depth;
14         float moment2 = depth * depth;
15
16         // Adjusting moments using partial derivative
17         float dx = dFdx(depth);
18         float dy = dFdy(depth);
19         moment2 += 0.25 * (dx * dx + dy * dy);
20
21         fragColor = vec4(moment1, moment2, 0.0, 0.0);
22         // TODO: write to a 2-component target --^
23 }