Enhance advanced rendering tests and add anti-aliasing validation to scene document validation
This commit is contained in:
@@ -115,6 +115,10 @@ vi.mock("postprocessing", () => {
|
||||
constructor() {}
|
||||
}
|
||||
|
||||
class MockFXAAEffect {
|
||||
constructor() {}
|
||||
}
|
||||
|
||||
class MockSMAAEffect {
|
||||
constructor() {}
|
||||
}
|
||||
@@ -125,6 +129,7 @@ vi.mock("postprocessing", () => {
|
||||
DepthOfFieldEffect: MockDepthOfFieldEffect,
|
||||
EffectComposer: MockEffectComposer,
|
||||
EffectPass: MockEffectPass,
|
||||
FXAAEffect: MockFXAAEffect,
|
||||
NormalPass: MockNormalPass,
|
||||
Pass: MockPass,
|
||||
RenderPass: MockRenderPass,
|
||||
@@ -189,6 +194,28 @@ import {
|
||||
} from "../../src/rendering/whitebox-bevel-material";
|
||||
import { resolveWorldBackgroundSkyColorState } from "../../src/rendering/world-background-renderer";
|
||||
|
||||
function resetPostprocessingState() {
|
||||
postprocessingState.composerOptions.length = 0;
|
||||
postprocessingState.composerPasses.length = 0;
|
||||
postprocessingState.normalPassTextures.length = 0;
|
||||
postprocessingState.ssaoCalls.length = 0;
|
||||
}
|
||||
|
||||
function getLastEffectPassEffectNames() {
|
||||
const effectPasses = postprocessingState.composerPasses.filter(
|
||||
(pass) => (pass as { name?: string }).name === "EffectPass"
|
||||
);
|
||||
const lastEffectPass = effectPasses.at(-1) as
|
||||
| { effects: unknown[] }
|
||||
| undefined;
|
||||
|
||||
return (
|
||||
lastEffectPass?.effects.map(
|
||||
(effect) => (effect as { constructor: { name: string } }).constructor.name
|
||||
) ?? []
|
||||
);
|
||||
}
|
||||
|
||||
describe("resolveBoxVolumeRenderPaths", () => {
|
||||
it("uses authored fog and water paths when advanced rendering is enabled", () => {
|
||||
const settings = createDefaultWorldSettings().advancedRendering;
|
||||
|
||||
@@ -1847,6 +1847,11 @@ describe("validateSceneDocument", () => {
|
||||
mode: "filmic",
|
||||
exposure: 0
|
||||
},
|
||||
antiAliasing: {
|
||||
...document.world.advancedRendering.antiAliasing,
|
||||
enabled: "yes",
|
||||
mode: "temporal"
|
||||
},
|
||||
fogPath: "high",
|
||||
waterPath: "ultra",
|
||||
depthOfField: {
|
||||
@@ -1958,6 +1963,14 @@ describe("validateSceneDocument", () => {
|
||||
code: "invalid-advanced-rendering-tone-mapping-exposure",
|
||||
path: "world.advancedRendering.toneMapping.exposure"
|
||||
}),
|
||||
expect.objectContaining({
|
||||
code: "invalid-advanced-rendering-anti-aliasing-enabled",
|
||||
path: "world.advancedRendering.antiAliasing.enabled"
|
||||
}),
|
||||
expect.objectContaining({
|
||||
code: "invalid-advanced-rendering-anti-aliasing-mode",
|
||||
path: "world.advancedRendering.antiAliasing.mode"
|
||||
}),
|
||||
expect.objectContaining({
|
||||
code: "invalid-advanced-rendering-dof-focal-length",
|
||||
path: "world.advancedRendering.depthOfField.focalLength"
|
||||
|
||||
Reference in New Issue
Block a user