Add tests for distance fog sky color syncing and integrate sky color source into advanced rendering composer
This commit is contained in:
@@ -152,9 +152,11 @@ import {
|
|||||||
} from "../../src/rendering/advanced-rendering";
|
} from "../../src/rendering/advanced-rendering";
|
||||||
import {
|
import {
|
||||||
applyAdvancedRenderingPerspectiveCameraFar,
|
applyAdvancedRenderingPerspectiveCameraFar,
|
||||||
|
createDistanceFogSkyColorSource,
|
||||||
resolveAdvancedRenderingPerspectiveCameraFar,
|
resolveAdvancedRenderingPerspectiveCameraFar,
|
||||||
resolveDistanceFogFadeMargin,
|
resolveDistanceFogFadeMargin,
|
||||||
resolveDistanceFogParameters
|
resolveDistanceFogParameters,
|
||||||
|
syncDistanceFogSkyColorSource
|
||||||
} from "../../src/rendering/distance-fog-pass";
|
} from "../../src/rendering/distance-fog-pass";
|
||||||
import {
|
import {
|
||||||
GOD_RAYS_SOURCE_MASK_RADII,
|
GOD_RAYS_SOURCE_MASK_RADII,
|
||||||
@@ -179,6 +181,7 @@ import {
|
|||||||
applyWhiteboxBevelToMaterial,
|
applyWhiteboxBevelToMaterial,
|
||||||
shouldApplyWhiteboxBevel
|
shouldApplyWhiteboxBevel
|
||||||
} from "../../src/rendering/whitebox-bevel-material";
|
} from "../../src/rendering/whitebox-bevel-material";
|
||||||
|
import { resolveWorldBackgroundSkyColorState } from "../../src/rendering/world-background-renderer";
|
||||||
|
|
||||||
describe("resolveBoxVolumeRenderPaths", () => {
|
describe("resolveBoxVolumeRenderPaths", () => {
|
||||||
it("uses authored fog and water paths when advanced rendering is enabled", () => {
|
it("uses authored fog and water paths when advanced rendering is enabled", () => {
|
||||||
@@ -338,6 +341,26 @@ describe("distance fog parameters", () => {
|
|||||||
).toBe(true);
|
).toBe(true);
|
||||||
expect(camera.far).toBe(1000);
|
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", () => {
|
describe("god rays parameters", () => {
|
||||||
@@ -532,6 +555,8 @@ describe("createAdvancedRenderingComposer", () => {
|
|||||||
settings.enabled = true;
|
settings.enabled = true;
|
||||||
settings.distanceFog.enabled = true;
|
settings.distanceFog.enabled = true;
|
||||||
|
|
||||||
|
const skyColorSource = createDistanceFogSkyColorSource();
|
||||||
|
|
||||||
createAdvancedRenderingComposer(
|
createAdvancedRenderingComposer(
|
||||||
{
|
{
|
||||||
capabilities: {
|
capabilities: {
|
||||||
@@ -540,7 +565,10 @@ describe("createAdvancedRenderingComposer", () => {
|
|||||||
} as unknown as never,
|
} as unknown as never,
|
||||||
new Scene(),
|
new Scene(),
|
||||||
new PerspectiveCamera(),
|
new PerspectiveCamera(),
|
||||||
settings
|
settings,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
skyColorSource
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
@@ -562,6 +590,13 @@ describe("createAdvancedRenderingComposer", () => {
|
|||||||
(postprocessingState.composerPasses[1] as { needsDepthTexture?: boolean })
|
(postprocessingState.composerPasses[1] as { needsDepthTexture?: boolean })
|
||||||
.needsDepthTexture
|
.needsDepthTexture
|
||||||
).toBe(true);
|
).toBe(true);
|
||||||
|
expect(
|
||||||
|
(
|
||||||
|
postprocessingState.composerPasses[1] as {
|
||||||
|
skyColorSource?: unknown;
|
||||||
|
}
|
||||||
|
).skyColorSource
|
||||||
|
).toBe(skyColorSource);
|
||||||
expect(
|
expect(
|
||||||
(postprocessingState.composerPasses[2] as { renderLayerMask?: number })
|
(postprocessingState.composerPasses[2] as { renderLayerMask?: number })
|
||||||
.renderLayerMask
|
.renderLayerMask
|
||||||
|
|||||||
Reference in New Issue
Block a user