import postprocess; import ambientocclusion; ////// fragment void main() { mat2 transform = mat2(texture(rotate, texcoord*screen_size/4.0)*2.0-1.0) *mat2(screen_size.y/screen_size.x, 0.0, 0.0, 1.0)*3.0/screen_size.y; float sample = depth_ratio.x/(texture(depth, texcoord).r-depth_ratio.y); float sum = 0.0; for(int i=0; i<=3; ++i) for(int j=0; j<=3; ++j) { vec2 offs = transform*vec2(float(i)-1.5, float(j)-1.5); 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 += atan(dz/dxy)/1.570796; else if(dz<0.0) sum -= 0.8; } frag_color = vec4(min(1.0-sum*darkness/16.0, 1.0), 0.0, 0.0, 1.0); }