提交 fb8ec33d 编写于 作者: M Mr.doob

ShaderLib: Added shadowMask to MeshLambertMaterial.

上级 c6d097e5
float getShadowMask() {
float shadow = 1.0;
#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHTS > 0
DirectionalLight directionalLight;
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
directionalLight = directionalLights[ i ];
shadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
}
#endif
#if NUM_SPOT_LIGHTS > 0
SpotLight spotLight;
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
spotLight = spotLights[ i ];
shadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
}
#endif
#if NUM_POINT_LIGHTS > 0
PointLight pointLight;
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
pointLight = pointLights[ i ];
shadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ] ) : 1.0;
}
#endif
#endif
return shadow;
}
......@@ -104,7 +104,7 @@ THREE.ShaderLib = {
THREE.ShaderChunk[ "aomap_fragment" ],
"vec3 outgoingLight = reflectedLight.indirectDiffuse;",
" vec3 outgoingLight = reflectedLight.indirectDiffuse;",
THREE.ShaderChunk[ "envmap_fragment" ],
THREE.ShaderChunk[ "linear_to_gamma_fragment" ],
......@@ -213,8 +213,10 @@ THREE.ShaderLib = {
THREE.ShaderChunk[ "envmap_pars_fragment" ],
THREE.ShaderChunk[ "bsdfs" ],
THREE.ShaderChunk[ "ambient_pars" ],
THREE.ShaderChunk[ "lights_pars" ],
THREE.ShaderChunk[ "fog_pars_fragment" ],
THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
THREE.ShaderChunk[ "shadowmask_pars_fragment" ],
THREE.ShaderChunk[ "specularmap_pars_fragment" ],
THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
......@@ -249,7 +251,7 @@ THREE.ShaderLib = {
" #endif",
" reflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );",
" reflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();",
// modulation
THREE.ShaderChunk[ "aomap_fragment" ],
......
......@@ -176,6 +176,7 @@
"src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl",
"src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl",
"src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/skinning_vertex.glsl",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册