+++ /dev/null
-import postprocess;
-import ambientocclusion;
-
-#pragma MSP stage(fragment)
-void main()
-{
- vec4 rv = texture(rotate, gl_FragCoord.xy/4.0)*2.0-1.0;
- mat3 transform = mat3(rv.xy, 0.0, rv.zx, 0.0, 0.0, 0.0, rv.w)*occlusion_radius;
- vec3 center = unproject(vec3(vertex.xy, texture(depth, texcoord).r));
- float min_depth = project(vec3(center.xy, center.z+occlusion_radius)).z;
- float occlusion_sum = 0.0;
- float count = 0.0;
- for(int i=0; i<n_samples; ++i)
- {
- vec3 psp = project(center+transform*sample_points[i]);
- float sample = texture(depth, psp.xy*0.5+0.5).r;
- if(sample>=min_depth)
- {
- if(sample<psp.z)
- occlusion_sum += 1.0;
- count += 1.0;
- }
- }
- frag_color = vec4(1.0-occlusion_sum/count, 0.0, 0.0, 1.0);
-}