From db621c02431460e4e9d770e393e93aa8df216d6f Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 28 Apr 2026 03:31:06 +0200 Subject: [PATCH] Test: Ensure dynamic GI pass is included when enabled --- tests/domain/advanced-rendering.test.ts | 51 +++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/tests/domain/advanced-rendering.test.ts b/tests/domain/advanced-rendering.test.ts index 524fee07..3b53de5a 100644 --- a/tests/domain/advanced-rendering.test.ts +++ b/tests/domain/advanced-rendering.test.ts @@ -266,6 +266,11 @@ describe("createAdvancedRenderingComposer", () => { depthBuffer: true, frameBufferType: UnsignedByteType }); + expect( + postprocessingState.composerPasses.map( + (pass) => (pass as { name: string }).name + ) + ).toEqual(["RenderPass", "EffectPass"]); expect( (postprocessingState.composerPasses[0] as { renderLayerMask?: number }) .renderLayerMask @@ -273,6 +278,52 @@ describe("createAdvancedRenderingComposer", () => { expect(postprocessingState.ssaoCalls).toHaveLength(0); }); + it("adds the dynamic GI pass only when dynamic GI is enabled", () => { + postprocessingState.composerOptions.length = 0; + postprocessingState.composerPasses.length = 0; + postprocessingState.normalPassTextures.length = 0; + postprocessingState.ssaoCalls.length = 0; + + const settings = createDefaultWorldSettings().advancedRendering; + settings.enabled = true; + settings.dynamicGlobalIllumination.enabled = true; + + createAdvancedRenderingComposer( + { + capabilities: { + isWebGL2: true + } + } as unknown as never, + new Scene(), + new PerspectiveCamera(), + settings + ); + + expect(postprocessingState.normalPassTextures).toHaveLength(1); + expect( + postprocessingState.composerPasses.map( + (pass) => (pass as { name: string }).name + ) + ).toEqual([ + "RenderPass", + "NormalPass", + "ScreenSpaceGlobalIlluminationPass", + "ShaderPass", + "RenderPass", + "RenderPass", + "EffectPass" + ]); + expect( + (postprocessingState.composerPasses[0] as { renderLayerMask?: number }) + .renderLayerMask + ).toBe(AO_WORLD_RENDER_LAYER_MASK); + expect( + (postprocessingState.composerPasses[2] as { needsDepthTexture?: boolean }) + .needsDepthTexture + ).toBe(true); + expect(postprocessingState.ssaoCalls).toHaveLength(0); + }); + it("builds a dual-layer SSAO stack from one normal pass", () => { postprocessingState.composerOptions.length = 0; postprocessingState.composerPasses.length = 0;