 	return schlick(F0, HdotV);
 }
 
+float TrowbridgeReitz(float a, float NdotH)
+{
+		float a2 = a * a;
+		float pi = 3.1417;
+		float denominator2 = ((NdotH * NdotH) * (a2 - 1.0) + 1.0);
+		float denominator  = pi * (denominator2 * denominator2);
+		
+		return a2 / denominator;
+}
+
 float compute_spec(float ior, float roughness, vec3 H, vec3 L, vec3 N, vec3 V)
 {
 	/*

			(2.0 * NdotH * NdotL) / VdotH));
	float a = acos(NdotH);
	float D = gauss * exp(-(a * a) / (roughness * roughness));
	float F = schlick_ior(ior, 1.0, VdotH);

	return ((F * D * G) / (3.1417 * VdotH)) / 3.1417;

		G = geometric attenuation.
		F = fresnel coefficient.
	*/
	float NdotH = max(0.0, dot(N, H));
	float NdotV = max(0.0, dot(N, V));
	float VdotH = max(0.0, dot(V, H));
	float NdotL = max(0.0, dot(N, L));

	float gauss = 100.0;

