فهرست منبع

Added workaround for ANGLE bug which was breaking shading when using physically based specular term.

See discussion here: https://github.com/mrdoob/three.js/pull/1518
alteredq 13 سال پیش
والد
کامیت
9451201ca3

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
build/Three.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
build/custom/ThreeWebGL.js


+ 1 - 1
examples/webgl_materials2.html

@@ -123,7 +123,7 @@
 
 				renderer.gammaInput = true;
 				renderer.gammaOutput = true;
-				//renderer.physicallyBasedShading = true;
+				renderer.physicallyBasedShading = true;
 
 				//
 

+ 1 - 0
examples/webgl_materials_normalmap.html

@@ -207,6 +207,7 @@
 
 				renderer.gammaInput = true;
 				renderer.gammaOutput = true;
+				renderer.physicallyBasedShading = true;
 
 				//
 

+ 1 - 0
examples/webgl_materials_normalmap2.html

@@ -163,6 +163,7 @@
 
 				renderer.gammaInput = true;
 				renderer.gammaOutput = true;
+				renderer.physicallyBasedShading = true;
 
 				//
 

+ 6 - 4
src/renderers/WebGLShaders.js

@@ -558,8 +558,9 @@ THREE.ShaderChunk = {
 
 				"#ifdef PHYSICALLY_BASED_SHADING",
 
-					// normalization factor
-					"float specularNormalization = ( shininess + 2.0 ) / 8.0;",
+					// 2.0 => 2.0001 is hack to work around ANGLE bug
+
+					"float specularNormalization = ( shininess + 2.0001 ) / 8.0;",
 
 					"vec3 schlick = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( lVector, pointHalfVector ), 5.0 );",
 					"pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization;",
@@ -630,8 +631,9 @@ THREE.ShaderChunk = {
 					"float fresnel = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( -viewPosition ), normal ), mFresnelPower );",
 					*/
 
-					// normalization factor
-					"float specularNormalization = ( shininess + 2.0 ) / 8.0;",
+					// 2.0 => 2.0001 is hack to work around ANGLE bug
+
+					"float specularNormalization = ( shininess + 2.0001 ) / 8.0;",
 
 					//"dirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization * fresnel;",
 

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است