 
 	for(int i = 0; i < u_sampleCount; ++i)
 	{
-        vec4 importanceSample = getSampleVector(i, N, u_roughness);
+        vec4 importanceSample = getImportanceSample(i, N, u_roughness);
 
 		vec3 H = vec3(importanceSample.xyz);
         float pdf = importanceSample.w;

	return 0.f;
}

// getSampleVector returns an importance sample direction with pdf in the .w component
vec4 getSampleVector(int sampleIndex, vec3 N, float roughness)
{
    vec2 hammersleyPoint = hammersley2d(sampleIndex, u_sampleCount);
    float u = hammersleyPoint.x;

	for(int i = 0; i < u_sampleCount; ++i)
	{
		// Importance sampling, depending on the distribution.
		vec3 H = getImportanceSample(i, N, roughness).xyz;
		vec3 L = normalize(reflect(-V, H));

		float NdotL = saturate(L.z);
