Skip to content

Commit

Permalink
ShaderLib: Added shadowMask to MeshLambertMaterial.
Browse files Browse the repository at this point in the history
  • Loading branch information
mrdoob committed Feb 5, 2016
1 parent c6d097e commit fb8ec33
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 2 deletions.
50 changes: 50 additions & 0 deletions src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
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;

}
6 changes: 4 additions & 2 deletions src/renderers/shaders/ShaderLib.js
Original file line number Diff line number Diff line change
Expand Up @@ -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" ],
Expand Down Expand Up @@ -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" ],

Expand Down Expand Up @@ -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" ],
Expand Down
1 change: 1 addition & 0 deletions utils/build/includes/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down

0 comments on commit fb8ec33

Please sign in to comment.