diff --git a/examples/src/examples/graphics/lights.tsx b/examples/src/examples/graphics/lights.tsx index c03b6f50f5c..038c6daae94 100644 --- a/examples/src/examples/graphics/lights.tsx +++ b/examples/src/examples/graphics/lights.tsx @@ -92,7 +92,9 @@ class LightsExample { // @ts-ignore pc.TextureHandler, // @ts-ignore - pc.ContainerHandler + pc.ContainerHandler, + // @ts-ignore + pc.CubemapHandler ]; const app = new pc.AppBase(canvas); diff --git a/src/platform/graphics/webgl/webgl-graphics-device.js b/src/platform/graphics/webgl/webgl-graphics-device.js index 7e662f69e42..cafcbbbb75b 100644 --- a/src/platform/graphics/webgl/webgl-graphics-device.js +++ b/src/platform/graphics/webgl/webgl-graphics-device.js @@ -1866,7 +1866,10 @@ class WebglGraphicsDevice extends GraphicsDevice { } // #endif - continue; // Because unset constants shouldn't raise random errors + Debug.errorOnce(`Shader [${shader.label}] requires texture sampler [${samplerName}] which has not been set, while rendering [${DebugGraphics.toString()}]`); + + // skip this draw call to avoid incorrect rendering / webgl errors + return; } if (samplerValue instanceof Texture) { @@ -1920,6 +1923,9 @@ class WebglGraphicsDevice extends GraphicsDevice { // Call the function to commit the uniform value if (scopeId.value !== null) { this.commitFunction[uniform.dataType](uniform, scopeId.value); + } else { + // commented out till engine issue #4971 is sorted out + // Debug.warnOnce(`Shader [${shader.label}] requires uniform [${uniform.scopeId.name}] which has not been set, while rendering [${DebugGraphics.toString()}]`); } } } diff --git a/src/scene/renderer/renderer.js b/src/scene/renderer/renderer.js index 4fb974004c0..e308e8fed4c 100644 --- a/src/scene/renderer/renderer.js +++ b/src/scene/renderer/renderer.js @@ -971,7 +971,9 @@ class Renderer { // update shadow / cookie atlas allocation for the visible lights. Update it after the ligthts were culled, // but before shadow maps were culling, as it might force some 'update once' shadows to cull. - this.updateLightTextureAtlas(comp); + if (this.scene.clusteredLightingEnabled) { + this.updateLightTextureAtlas(comp); + } // cull shadow casters for all lights this.cullShadowmaps(comp); diff --git a/src/scene/renderer/shadow-renderer.js b/src/scene/renderer/shadow-renderer.js index 49203eeb14c..d376ceeceeb 100644 --- a/src/scene/renderer/shadow-renderer.js +++ b/src/scene/renderer/shadow-renderer.js @@ -322,7 +322,9 @@ class ShadowRenderer { light.shadowUpdateMode = SHADOWUPDATE_NONE; } - this.renderer._shadowMapUpdates += light.numShadowFaces; + if (needs) { + this.renderer._shadowMapUpdates += light.numShadowFaces; + } return needs; }