]> git.tdb.fi Git - libs/gl.git/blobdiff - builtin_data/_pbr_prefilter.glsl
Implement ambient lighting in the Cook-Torrance shader
[libs/gl.git] / builtin_data / _pbr_prefilter.glsl
diff --git a/builtin_data/_pbr_prefilter.glsl b/builtin_data/_pbr_prefilter.glsl
new file mode 100644 (file)
index 0000000..5f44689
--- /dev/null
@@ -0,0 +1,27 @@
+uniform PrecalcParams
+{
+       int n_samples;
+};
+
+const float PI = 3.1415926535;
+
+vec2 hammersley(int i, int count)
+{
+       float y = bitfieldReverse(uint(i))*2.3283064e-10;
+       return vec2(float(i)/count, y);
+}
+
+vec3 uv_to_hemisphere(float u, float v)
+{
+       float phi = u*2.0*PI;
+       float r = sqrt(1.0-v*v);
+       return vec3(cos(phi)*r, sin(phi)*r, v);
+}
+
+vec3 ndist_ggxtr_importance_sample(vec2 uv, float roughness)
+{
+       float rough_q = roughness*roughness;
+       rough_q *= rough_q;
+       float v = sqrt((1.0-uv.y)/(1.0+(rough_q-1.0)*uv.y));
+       return uv_to_hemisphere(uv.x, v);
+}