]> git.tdb.fi Git - libs/gl.git/blobdiff - builtin_data/_ambientocclusion.glsl
Load various built-in things through Resources
[libs/gl.git] / builtin_data / _ambientocclusion.glsl
diff --git a/builtin_data/_ambientocclusion.glsl b/builtin_data/_ambientocclusion.glsl
new file mode 100644 (file)
index 0000000..89d1335
--- /dev/null
@@ -0,0 +1,31 @@
+const int max_samples = 32;
+
+uniform mat4 projection_matrix;
+
+uniform sampler2D depth;
+uniform sampler2D occlusion;
+uniform sampler2D rotate;
+uniform AmbientOcclusionParams
+{
+       mat4 inverse_projection;
+       float darkness;
+       vec3 sample_points[max_samples];
+       int n_samples;
+       float occlusion_radius;
+       float edge_depth_threshold;
+};
+
+#pragma MSP stage(fragment)
+vec3 project(vec3 position)
+{
+       if(position.z>=0.0)
+               return vec3(0.0, 0.0, -1.0);
+       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;
+}