diff --git a/src/nodes/accessors/InstanceNode.js b/src/nodes/accessors/InstanceNode.js index 64166287a3741e..11c94c82ccad80 100644 --- a/src/nodes/accessors/InstanceNode.js +++ b/src/nodes/accessors/InstanceNode.js @@ -31,7 +31,7 @@ class InstanceNode extends Node { } - setup( /*builder*/ ) { + setup( builder ) { let instanceMatrixNode = this.instanceMatrixNode; let instanceColorNode = this.instanceColorNode; @@ -91,19 +91,23 @@ class InstanceNode extends Node { // POSITION const instancePosition = instanceMatrixNode.mul( positionLocal ).xyz; + positionLocal.assign( instancePosition ); // NORMAL - const m = mat3( instanceMatrixNode ); + if ( builder.hasGeometryAttribute( 'normal' ) ) { - const transformedNormal = normalLocal.div( vec3( m[ 0 ].dot( m[ 0 ] ), m[ 1 ].dot( m[ 1 ] ), m[ 2 ].dot( m[ 2 ] ) ) ); + const m = mat3( instanceMatrixNode ); - const instanceNormal = m.mul( transformedNormal ).xyz; + const transformedNormal = normalLocal.div( vec3( m[ 0 ].dot( m[ 0 ] ), m[ 1 ].dot( m[ 1 ] ), m[ 2 ].dot( m[ 2 ] ) ) ); - // ASSIGNS + const instanceNormal = m.mul( transformedNormal ).xyz; - positionLocal.assign( instancePosition ); - normalLocal.assign( instanceNormal ); + // ASSIGNS + + normalLocal.assign( instanceNormal ); + + } // COLOR diff --git a/src/nodes/accessors/SkinningNode.js b/src/nodes/accessors/SkinningNode.js index 71fc9c3bd17611..2b414b9162112d 100644 --- a/src/nodes/accessors/SkinningNode.js +++ b/src/nodes/accessors/SkinningNode.js @@ -132,14 +132,21 @@ class SkinningNode extends Node { } const skinPosition = this.getSkinnedPosition(); - const skinNormal = this.getSkinnedNormal(); + positionLocal.assign( skinPosition ); - normalLocal.assign( skinNormal ); - if ( builder.hasGeometryAttribute( 'tangent' ) ) { + if ( builder.hasGeometryAttribute( 'normal' ) ) { + + const skinNormal = this.getSkinnedNormal(); + + normalLocal.assign( skinNormal ); + + if ( builder.hasGeometryAttribute( 'tangent' ) ) { + + tangentLocal.assign( skinNormal ); - tangentLocal.assign( skinNormal ); + } }