 	return G_1_Smith(d_nl, a2) * G_1_Smith(d_nv, a2);
 }
 
-vec3 F_Schlick(vec3 dielectricSpecular, vec3 basecolor, float metallic, float d_vh) {
-	vec3 F_0 = lerp(dielectricSpecular, baseColor, metallic);
-	return F_0 + dot(1 - F_0, pow(1 - d_vh, 5));
-}
-
-vec3 Diff(vec3 dielectricSpecular, vec3 basecolor, float metallic, float d_vh) {
+vec3 F_Schlick(vec3 dielectricSpecular, vec3 baseColor, float metallic, float d_vh) {
+	vec3 F_0 = mix(dielectricSpecular, baseColor, metallic);
+	return F_0 + (1 - F_0) * pow(1 - d_vh, 5);
+}
+
+vec3 Diff(vec3 dielectricSpecular, vec3 baseColor, float metallic, float d_vh) {
 	vec3 black = vec3(0,0,0);
 	return (1 - F_Schlick(dielectricSpecular, baseColor, metallic, d_vh)) *
-		(lerp(baseColor * (1 - dielectricSpecular), black, metallic) / PI);
+		(mix(baseColor * (1 - dielectricSpecular), black, metallic) / PI);
 }
 
 vec3 f_Schlick_Smith_GGX(
-	vec3 n, vec3, h, vec3 l, vec3 v, 
+	vec3 n, vec3 h, vec3 l, vec3 v, 
 	vec3 dielectricSpecular, vec3 baseColor,
 	float metallic, float roughness
 ) {

#define PI 3.1415926535897932384626433832795

float D_GGX(float d_nh, float a) {
	vec3 q = d_nh * d_nh * (a - 1) + 1;
	return (a * a) / (PI * q * q);
}


	float a2 = a * a;
	
	float d_nh = dot(n, h);
	float d_nl = dot(n, l);
	float d_lh = dot(l, h);
	float d_nv = dot(n, v);
	float d_vh = dot(v, h);
	
