X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=shaderlib%2Fambientocclusion.glsl;h=286072c03813d420f1be5970ca91034be236c04c;hp=0ca81a40b6cb21ed5fd8af08ce1852f25e94a46d;hb=1b9640375606a305f19c76cf15406202322b5bdf;hpb=63317e423282c1d8a7965743b20a9059a8086e67 diff --git a/shaderlib/ambientocclusion.glsl b/shaderlib/ambientocclusion.glsl index 0ca81a40..286072c0 100644 --- a/shaderlib/ambientocclusion.glsl +++ b/shaderlib/ambientocclusion.glsl @@ -1,9 +1,28 @@ +const int max_samples = 32; + +uniform mat4 projection_matrix; + uniform sampler2D depth; uniform sampler2D occlusion; uniform sampler2D rotate; uniform AmbientOcclusionParams { - vec2 screen_size; - vec2 depth_ratio; + mat4 inverse_projection; float darkness; + vec3 sample_points[max_samples]; + int n_samples; + float occlusion_radius; }; + +////// fragment +vec3 project(vec3 position) +{ + vec4 pp = projection_matrix*vec4(position, 1.0); + return pp.xyz/pp.w; +} + +vec3 unproject(vec3 position) +{ + vec4 upp = inverse_projection*vec4(position, 1.0); + return upp.xyz/upp.w; +}