From 19645f140607c573e616cdb9a3fa7e9b1c914fb8 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 28 Apr 2026 03:31:15 +0200 Subject: [PATCH] Test: Verify normal pass sharing between SSAO and dynamic GI in advanced rendering --- tests/domain/advanced-rendering.test.ts | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/domain/advanced-rendering.test.ts b/tests/domain/advanced-rendering.test.ts index 3b53de5a..a5c9176f 100644 --- a/tests/domain/advanced-rendering.test.ts +++ b/tests/domain/advanced-rendering.test.ts @@ -416,6 +416,49 @@ describe("createAdvancedRenderingComposer", () => { 6 ); }); + + it("shares one normal pass between SSAO and dynamic GI", () => { + postprocessingState.composerOptions.length = 0; + postprocessingState.composerPasses.length = 0; + postprocessingState.normalPassTextures.length = 0; + postprocessingState.ssaoCalls.length = 0; + + const settings = createDefaultWorldSettings().advancedRendering; + settings.enabled = true; + settings.ambientOcclusion.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", + "EffectPass", + "ShaderPass", + "RenderPass", + "RenderPass", + "EffectPass" + ]); + expect(postprocessingState.ssaoCalls).toHaveLength(2); + expect(postprocessingState.ssaoCalls[0].normalBuffer).toBe( + postprocessingState.normalPassTextures[0] + ); + }); }); describe("whitebox bevel materials", () => {