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; }