]> git.tdb.fi Git - libs/gl.git/blob - shaderlib/ambientocclusion.glsl
Improve the ambient occlusion postprocessor
[libs/gl.git] / shaderlib / ambientocclusion.glsl
1 const int max_samples = 32;
2
3 uniform mat4 projection_matrix;
4
5 uniform sampler2D depth;
6 uniform sampler2D occlusion;
7 uniform sampler2D rotate;
8 uniform AmbientOcclusionParams
9 {
10         mat4 inverse_projection;
11         float darkness;
12         vec3 sample_points[max_samples];
13         int n_samples;
14         float occlusion_radius;
15 };
16
17 ////// fragment
18 vec3 project(vec3 position)
19 {
20         vec4 pp = projection_matrix*vec4(position, 1.0);
21         return pp.xyz/pp.w;
22 }
23
24 vec3 unproject(vec3 position)
25 {
26         vec4 upp = inverse_projection*vec4(position, 1.0);
27         return upp.xyz/upp.w;
28 }