Skip to content

Commit c8cad90

Browse files
authored
fix: material destroy bug (#1864)
1 parent e723e33 commit c8cad90

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

packages/core/src/mesh/MeshRenderer.ts

+4
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ export class MeshRenderer extends Renderer {
8787
Logger.error("mesh is null.");
8888
return;
8989
}
90+
if (this._mesh.destroyed) {
91+
Logger.error("mesh is destroyed.");
92+
return;
93+
}
9094
super._prepareRender(context);
9195
}
9296

packages/core/src/shader/ShaderProgram.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -380,10 +380,11 @@ export class ShaderProgram {
380380
case gl.BOOL_VEC3:
381381
case gl.INT_VEC3:
382382
if (isArray) {
383+
shaderUniform.applyFunc = shaderUniform.upload3iv;
383384
} else {
385+
shaderUniform.applyFunc = shaderUniform.upload3i;
386+
shaderUniform.cacheValue = new Vector3(0, 0, 0);
384387
}
385-
shaderUniform.applyFunc = isArray ? shaderUniform.upload3iv : shaderUniform.upload3i;
386-
shaderUniform.cacheValue = new Vector3(0, 0, 0);
387388
break;
388389
case gl.BOOL_VEC4:
389390
case gl.INT_VEC4:

packages/core/src/sky/Sky.ts

+14-2
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,25 @@ export class Sky {
6464
Logger.warn("The material of sky is not defined.");
6565
return;
6666
}
67+
68+
if (material.destroyed) {
69+
Logger.warn("The material of sky is destroyed.");
70+
return;
71+
}
72+
6773
if (!mesh) {
6874
Logger.warn("The mesh of sky is not defined.");
6975
return;
7076
}
7177

72-
const { engine, aspectRatio, fieldOfView, viewMatrix, shaderData: cameraShaderData } = context.camera;
73-
const sceneData = context.camera.scene.shaderData;
78+
if (mesh.destroyed) {
79+
Logger.warn("The mesh of sky is destroyed.");
80+
return;
81+
}
82+
83+
const { engine, scene, aspectRatio, fieldOfView, viewMatrix, shaderData: cameraShaderData } = context.camera;
84+
const sceneData = scene.shaderData;
85+
7486
const { _viewProjMatrix: viewProjMatrix, _projectionMatrix: projectionMatrix } = Sky;
7587
const rhi = engine._hardwareRenderer;
7688
const { shaderData: materialShaderData, shader, renderState } = material;

0 commit comments

Comments
 (0)