 const float PI = 3.14159265358979323846264;
 const float CERATIN = 1.6;
 const float SMOOTH = 2.5;
+
+const float lambda_min = 380.0*pow(10.0, -9.0);
+const float lambda_max = 700.0*pow(10.0, -9.0);
+const float dx = 2.5*pow(10.0, -6.0)
+
 const float eps_pq = 0.0001; 
 const float tolerance = 0.999999999;
 const mat3 M_Adobe_XR = mat3(

	rightNom = (rightNom > tolerance)? tolerance : ((rightNom < -tolerance) ? -tolerance :  rightNom);
	float nominator = leftNom*rightNom;
	return dominator / nominator;;
}

void main() {

	float F = getFressnelFactor(_k1, camNormal);
	float G = computeGFactor(camNormal, _k1, _k2);
	
	// get iteration bounds for given (u,v)
	vec2 N_u = compute_N_min_max(u);
	vec2 N_v = compute_N_min_max(v);
	
	
	for(int iter = N_u.x; iter < N_u.y; iter++){
		
	}
	
	
	for(int iter = 0; iter < 16; iter++){
		reHeight = 0.0;
