Add tests for distance fog sky color syncing and integrate sky color source into advanced rendering composer

This commit is contained in:
2026-04-30 02:16:49 +02:00
parent 4225fe3a1b
commit f1ac4a6c74

View File

@@ -152,9 +152,11 @@ import {
} from "../../src/rendering/advanced-rendering";
import {
applyAdvancedRenderingPerspectiveCameraFar,
createDistanceFogSkyColorSource,
resolveAdvancedRenderingPerspectiveCameraFar,
resolveDistanceFogFadeMargin,
resolveDistanceFogParameters
resolveDistanceFogParameters,
syncDistanceFogSkyColorSource
} from "../../src/rendering/distance-fog-pass";
import {
GOD_RAYS_SOURCE_MASK_RADII,
@@ -179,6 +181,7 @@ import {
applyWhiteboxBevelToMaterial,
shouldApplyWhiteboxBevel
} from "../../src/rendering/whitebox-bevel-material";
import { resolveWorldBackgroundSkyColorState } from "../../src/rendering/world-background-renderer";
describe("resolveBoxVolumeRenderPaths", () => {
it("uses authored fog and water paths when advanced rendering is enabled", () => {
@@ -338,6 +341,26 @@ describe("distance fog parameters", () => {
).toBe(true);
expect(camera.far).toBe(1000);
});
it("syncs stable distance-fog sky colors from the world background", () => {
const world = createDefaultWorldSettings();
world.background = {
mode: "verticalGradient",
topColorHex: "#7ea7df",
bottomColorHex: "#d9c2a4"
};
const skyColorSource = createDistanceFogSkyColorSource();
syncDistanceFogSkyColorSource(
skyColorSource,
resolveWorldBackgroundSkyColorState(world.background)
);
expect(skyColorSource).toEqual({
topColorHex: "#7ea7df",
horizonColorHex: "#d9c2a4"
});
});
});
describe("god rays parameters", () => {
@@ -532,6 +555,8 @@ describe("createAdvancedRenderingComposer", () => {
settings.enabled = true;
settings.distanceFog.enabled = true;
const skyColorSource = createDistanceFogSkyColorSource();
createAdvancedRenderingComposer(
{
capabilities: {
@@ -540,7 +565,10 @@ describe("createAdvancedRenderingComposer", () => {
} as unknown as never,
new Scene(),
new PerspectiveCamera(),
settings
settings,
null,
null,
skyColorSource
);
expect(
@@ -562,6 +590,13 @@ describe("createAdvancedRenderingComposer", () => {
(postprocessingState.composerPasses[1] as { needsDepthTexture?: boolean })
.needsDepthTexture
).toBe(true);
expect(
(
postprocessingState.composerPasses[1] as {
skyColorSource?: unknown;
}
).skyColorSource
).toBe(skyColorSource);
expect(
(postprocessingState.composerPasses[2] as { renderLayerMask?: number })
.renderLayerMask