Skip to content

Commit a33c66c

Browse files
committed
optimised when shader uniforms are updated
1 parent 7c77635 commit a33c66c

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/core/CoreNode.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,8 @@ export class CoreNode extends EventEmitter {
742742
valid: false,
743743
};
744744
public textureCoords?: TextureCoords;
745-
public updateTextureCoords?: boolean = false;
745+
public updateTextureCoords: boolean = false;
746+
public updateShaderUniforms: boolean = false;
746747
public isRenderable = false;
747748
public renderState: CoreNodeRenderState = CoreNodeRenderState.Init;
748749

@@ -1184,7 +1185,7 @@ export class CoreNode extends EventEmitter {
11841185

11851186
this.premultipliedColorTl = merged;
11861187

1187-
if (same) {
1188+
if (same === true) {
11881189
this.premultipliedColorTr =
11891190
this.premultipliedColorBl =
11901191
this.premultipliedColorBr =
@@ -1230,6 +1231,11 @@ export class CoreNode extends EventEmitter {
12301231
updateType & UpdateType.RecalcUniforms &&
12311232
this.hasShaderUpdater === true
12321233
) {
1234+
this.updateShaderUniforms = true;
1235+
}
1236+
1237+
if (this.isRenderable === true && this.updateShaderUniforms === true) {
1238+
this.updateShaderUniforms = false;
12331239
//this exists because the boolean hasShaderUpdater === true
12341240
this.shader!.update!();
12351241
}
@@ -1499,7 +1505,11 @@ export class CoreNode extends EventEmitter {
14991505
* @param isRenderable - The new renderable state
15001506
*/
15011507
setRenderable(isRenderable: boolean) {
1508+
const previousState = this.isRenderable;
15021509
this.isRenderable = isRenderable;
1510+
if (previousState === false && isRenderable === true) {
1511+
this.updateType |= UpdateType.RecalcUniforms;
1512+
}
15031513
if (
15041514
isRenderable === true &&
15051515
this.stage.calculateTextureCoord === true &&

0 commit comments

Comments
 (0)