From a6f87ff9fa863b9c33acf44e2c95e7f9f693aad3 Mon Sep 17 00:00:00 2001 From: sunag Date: Thu, 4 Jul 2024 03:45:44 -0300 Subject: [PATCH] TSL: Fix texture matrix reference (#28801) * fix texture matrix * optimize reference update * cleanup --- src/nodes/accessors/TextureNode.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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 ) {