Browse Source

fixed attenuation overflow when N.L or N.V ~= 0

ncannasse 6 năm trước cách đây
mục cha
commit
120a047294
1 tập tin đã thay đổi với 5 bổ sung2 xóa
  1. 5 2
      h3d/shader/pbr/Lighting.hx

+ 5 - 2
h3d/shader/pbr/Lighting.hx

@@ -108,9 +108,12 @@ class Direct extends PropsDefinition {
 				var k = (roughness + 1);
 				k *= k;
 				k *= 0.125;
-				var G = (NdV / (NdV * (1 - k) + k)) * (NdL / (NdL * (1 - k) + k));
 
-				var specular = (D * F * G / (4 * NdL * NdV)).max(0.);
+				//var G = (1 / (NdV * (1 - k) + k)) * (1 / (NdL * (1 - k) + k)) * NdL * NdV;
+				//var Att = 1 / (4 * NdL * NdV);
+				var G_Att = (1 / (NdV * (1 - k) + k)) * (1 / (NdL * (1 - k) + k)) * 0.25;
+				var specular = (D * F * G_Att).max(0.);
+
 				direct += mix(diffuse * (1 - metalness), specular, F) * pbrLightColor;
 				pixelColor.rgb += direct * shadow;
 			} else if( doDiscard )