|
@@ -31,8 +31,9 @@ function WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {
|
|
|
_lightPositionWorld = new Vector3(),
|
|
|
|
|
|
_MorphingFlag = 1,
|
|
|
+ _SkinningFlag = 2,
|
|
|
|
|
|
- _NumberOfMaterialVariants = ( _MorphingFlag ) + 1,
|
|
|
+ _NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,
|
|
|
|
|
|
_depthMaterials = new Array( _NumberOfMaterialVariants ),
|
|
|
_distanceMaterials = new Array( _NumberOfMaterialVariants ),
|
|
@@ -66,9 +67,11 @@ function WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {
|
|
|
for ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {
|
|
|
|
|
|
var useMorphing = ( i & _MorphingFlag ) !== 0;
|
|
|
+ var useSkinning = ( i & _SkinningFlag ) !== 0;
|
|
|
|
|
|
var depthMaterial = depthMaterialTemplate.clone();
|
|
|
depthMaterial.morphTargets = useMorphing;
|
|
|
+ depthMaterial.skinning = useSkinning;
|
|
|
|
|
|
_depthMaterials[ i ] = depthMaterial;
|
|
|
|
|
@@ -80,6 +83,7 @@ function WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {
|
|
|
vertexShader: distanceShader.vertexShader,
|
|
|
fragmentShader: distanceShader.fragmentShader,
|
|
|
morphTargets: useMorphing,
|
|
|
+ skinning: useSkinning,
|
|
|
clipping: true
|
|
|
} );
|
|
|
|
|
@@ -305,9 +309,12 @@ function WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ var useSkinning = object.isSkinnedMesh;
|
|
|
+
|
|
|
var variantIndex = 0;
|
|
|
|
|
|
if ( useMorphing ) variantIndex |= _MorphingFlag;
|
|
|
+ if ( useSkinning ) variantIndex |= _SkinningFlag;
|
|
|
|
|
|
result = materialVariants[ variantIndex ];
|
|
|
|