X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=shaderlib%2Fambientocclusion_combine.glsl;fp=shaderlib%2Fambientocclusion_combine.glsl;h=572ba2f14bcf73858c3b500d992ffebafa14d3db;hp=0000000000000000000000000000000000000000;hb=e55f79ccb21e8c1be3d86f127e3ec1583e58ce92;hpb=b2764a3a349b48d7445202faa903383386c09a4c diff --git a/shaderlib/ambientocclusion_combine.glsl b/shaderlib/ambientocclusion_combine.glsl new file mode 100644 index 00000000..572ba2f1 --- /dev/null +++ b/shaderlib/ambientocclusion_combine.glsl @@ -0,0 +1,23 @@ +import postprocess; +import ambientocclusion; + +////// fragment +void main() +{ + float sample = depth_ratio.x/(texture(depth, texcoord).r-depth_ratio.y); + float sum = 1.0; + float count = 1.0; + for(int i=0; i<=3; ++i) + for(int j=0; j<=3; ++j) + { + vec2 offs = vec2(float(i)-1.5, float(j)-1.5)/screen_size; + float dxy = length(offs)*-sample; + float dz = depth_ratio.x/(texture(depth, texcoord+offs).r-depth_ratio.y)-sample; + if(abs(dz)<3.0*dxy) + { + sum += texture(occlusion, texcoord+offs).r; + count += 1.0; + } + } + frag_color = texture(source, texcoord)*sum/count; +}