diff --git a/src/nodes/accessors/TextureNode.js b/src/nodes/accessors/TextureNode.js index dec5490e114853..6b7baa2e5431b9 100644 --- a/src/nodes/accessors/TextureNode.js +++ b/src/nodes/accessors/TextureNode.js @@ -32,6 +32,7 @@ class TextureNode extends UniformNode { this.referenceNode = null; this._value = value; + this._matrixValue = null; this.setUpdateMatrix( uvNode === null ); @@ -101,9 +102,10 @@ class TextureNode extends UniformNode { getTransformedUV( uvNode ) { - const texture = this.value; + if ( this._matrixValue === null ) this._matrixValue = uniform( this.value.matrix ); + + return this._matrixValue.mul( vec3( uvNode, 1 ) ).xy; - return uniform( texture.matrix ).mul( vec3( uvNode, 1 ) ).xy; } @@ -399,6 +401,9 @@ class TextureNode extends UniformNode { update() { const texture = this.value; + const matrixTexture = this._matrixValue; + + if ( matrixTexture !== null ) matrixTexture.value = texture.matrix; if ( texture.matrixAutoUpdate === true ) {