]> git.tdb.fi Git - libs/gl.git/blob - builtin_data/_ambientocclusion.glsl
Fix use of camera matrices in the ambient occlusion effect
[libs/gl.git] / builtin_data / _ambientocclusion.glsl
1 const int max_samples = 32;
2
3 uniform CameraTransform
4 {
5         mat4 eye_world_matrix;
6         mat4 world_eye_matrix;
7         mat4 clip_eye_matrix;
8         mat4 eye_clip_matrix;
9 };
10
11 uniform sampler2D source;
12 uniform sampler2D depth;
13 uniform sampler2D occlusion;
14 uniform sampler2D rotate;
15 uniform AmbientOcclusionParams
16 {
17         float darkness;
18         vec3 sample_points[max_samples];
19         int n_samples;
20         float occlusion_radius;
21         float edge_depth_threshold;
22 };
23
24 #pragma MSP stage(fragment)
25 vec3 project(vec3 position)
26 {
27         if(position.z>=0.0)
28                 return vec3(0.0, 0.0, -1.0);
29         vec4 pp = clip_eye_matrix*vec4(position, 1.0);
30         return pp.xyz/pp.w;
31 }
32
33 vec3 unproject(vec3 position)
34 {
35         vec4 upp = eye_clip_matrix*vec4(position, 1.0);
36         return upp.xyz/upp.w;
37 }