 			// get N_min and N_max for sampling
 			int lower = int(N_uv[variant].x);
 			int upper = int(N_uv[variant].y);
-			float delta_N_min_max = upper-lower;
-			
-			// count for too slow for treshold - if so skip current loop.
-			if(delta_N_min_max < 0.0){
-				failCounter++;
-			}
-			
+			float delta_N_min_max = upper-lower;		
 			
 			// handle case t in {u,v}
 			if(variant == 0){

	brdf.w = 1.0;
	
	
	brdf.xyz = brdf.xyz * gainF(_k1, _k2) * shadowF * (1.0/(cos(thetaR)*dimN*dimN*2000));	
	brdf.xyz = getBRDF_RGB_T_D65(M_Adobe_XRNew, brdf.xyz);
	
	


float fFByR0;
float gainF(vec3 K1, vec3 K2){
	
	// This side is not visible
	if (K1.z > 0.0 || K2.z < 0.0){
		 return 0.0; 
	}
	
	// relative Fresnel Factor
	float F = getFresnelFactorAbsolute(K1, K2);
	F = F*F;
	float cosNumNumSamples = cos(thetaR)*dimN*dimN;
	
	// compute G part
	float G = pow(1 - dot(K1,K2), 2.0); 
	
	// since (0,0) for spec
	float ww = K1.z - K2.z;
	ww = ww * ww;
	 
	 if (ww < pow(10.0,-4.0)){
		 return 0.0; // Shadowing Function
	 }
	 
//	 gF = gF / K2.z;
	 // Dont do the following division if Shadoing function is used
//	 gF = gF / ww; 
	 
	 //float fFac = getFresnelFactor(K1, K2); 

	 return (F*G)/(ww*cosNumNumSamples);
}

vec3 gammaCorrect(vec3 inRGB, float gamma){
