Browse Source

dielectric Fresnel F0 (specularity) controlled via monochromatic reflectivity in both envMap and in direct lighting.

Ben Houston 9 years ago
parent
commit
d489707f4b

+ 3 - 1
src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl

@@ -1,6 +1,8 @@
-#ifdef USE_ENVMAP
+#if defined( USE_ENVMAP ) || defined( PHYSICAL )
 	uniform float reflectivity;
+#endif
 
+#ifdef USE_ENVMAP
 	#ifdef ENVMAP_TYPE_CUBE
 		uniform samplerCube envMap;
 	#else

+ 1 - 1
src/renderers/shaders/ShaderChunk/lights_pars.glsl

@@ -159,7 +159,7 @@ uniform vec3 ambientLightColor;
 
 		envMapColor.rgb = inputToLinear( envMapColor.rgb );
 
-		return envMapColor.rgb * reflectivity;
+		return envMapColor.rgb;
 
 	}
 

+ 1 - 1
src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl

@@ -1,4 +1,4 @@
 PhysicalMaterial material;
 material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
 material.specularRoughness = roughnessFactor * 0.5 + 0.5; // disney's remapping of [ 0, 1 ] roughness to [ 0.5, 1 ]
-material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );
+material.specularColor = mix( vec3( 0.04 ) * reflectivity, diffuseColor.rgb, metalnessFactor );