7 uniform samplerCube environment_map;
9 const float PI = 3.1415926535;
11 vec2 hammersley(int i, int count)
13 float y = bitfieldReverse(uint(i))*2.3283064e-10;
14 return vec2(float(i)/count, y);
17 vec3 uv_to_hemisphere(float u, float v)
20 float r = sqrt(1.0-v*v);
21 return vec3(cos(phi)*r, sin(phi)*r, v);
24 vec3 ndist_ggxtr_importance_sample(vec2 uv, float roughness)
26 float rough_q = roughness*roughness;
28 float v = sqrt((1.0-uv.y)/(1.0+(rough_q-1.0)*uv.y));
29 return uv_to_hemisphere(uv.x, v);