auto-git:
[change] src/app/App.tsx [change] src/document/migrate-scene-document.ts [change] src/document/scene-document-validation.ts [change] src/document/scene-document.ts [change] src/document/world-settings.ts [change] src/rendering/advanced-rendering.ts [change] tests/domain/advanced-rendering.test.ts [change] tests/serialization/scene-document-json.test.ts
This commit is contained in:
@@ -486,9 +486,9 @@ describe("god rays parameters", () => {
|
||||
}
|
||||
};
|
||||
|
||||
expect(
|
||||
resolveDominantScreenSpaceGodRaysLightInput(visibleSun, null)
|
||||
).toBe(visibleSun);
|
||||
expect(resolveDominantScreenSpaceGodRaysLightInput(visibleSun, null)).toBe(
|
||||
visibleSun
|
||||
);
|
||||
expect(
|
||||
resolveDominantScreenSpaceGodRaysLightInput(visibleSun, visibleMoon)
|
||||
).toBe(visibleMoon);
|
||||
@@ -532,9 +532,9 @@ describe("god rays parameters", () => {
|
||||
).toBeGreaterThan(0.5);
|
||||
expect(resolveGodRaysSourceMask(0.035)).toBeLessThan(0.5);
|
||||
expect(resolveGodRaysSourceMask(0.035, 2)).toBeGreaterThan(0.5);
|
||||
expect(
|
||||
resolveGodRaysSourceMask(GOD_RAYS_SOURCE_MASK_RADII.haloOuter)
|
||||
).toBe(0);
|
||||
expect(resolveGodRaysSourceMask(GOD_RAYS_SOURCE_MASK_RADII.haloOuter)).toBe(
|
||||
0
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -667,6 +667,131 @@ describe("createAdvancedRenderingComposer", () => {
|
||||
expect(postprocessingState.ssaoCalls).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("keeps SMAA as the default post-process anti-aliasing effect", () => {
|
||||
resetPostprocessingState();
|
||||
|
||||
const settings = createDefaultWorldSettings().advancedRendering;
|
||||
settings.enabled = true;
|
||||
|
||||
createAdvancedRenderingComposer(
|
||||
{
|
||||
capabilities: {
|
||||
isWebGL2: true
|
||||
}
|
||||
} as unknown as never,
|
||||
new Scene(),
|
||||
new PerspectiveCamera(),
|
||||
settings
|
||||
);
|
||||
|
||||
expect(postprocessingState.composerOptions[0]).toMatchObject({
|
||||
multisampling: 0
|
||||
});
|
||||
expect(getLastEffectPassEffectNames()).toEqual([
|
||||
"MockToneMappingEffect",
|
||||
"MockSMAAEffect"
|
||||
]);
|
||||
});
|
||||
|
||||
it("can disable anti-aliasing in the post stack", () => {
|
||||
resetPostprocessingState();
|
||||
|
||||
const settings = createDefaultWorldSettings().advancedRendering;
|
||||
settings.enabled = true;
|
||||
settings.antiAliasing.enabled = false;
|
||||
|
||||
createAdvancedRenderingComposer(
|
||||
{
|
||||
capabilities: {
|
||||
isWebGL2: true
|
||||
}
|
||||
} as unknown as never,
|
||||
new Scene(),
|
||||
new PerspectiveCamera(),
|
||||
settings
|
||||
);
|
||||
|
||||
expect(postprocessingState.composerOptions[0]).toMatchObject({
|
||||
multisampling: 0
|
||||
});
|
||||
expect(getLastEffectPassEffectNames()).toEqual(["MockToneMappingEffect"]);
|
||||
});
|
||||
|
||||
it("uses FXAA when selected", () => {
|
||||
resetPostprocessingState();
|
||||
|
||||
const settings = createDefaultWorldSettings().advancedRendering;
|
||||
settings.enabled = true;
|
||||
settings.antiAliasing.mode = "fxaa";
|
||||
|
||||
createAdvancedRenderingComposer(
|
||||
{
|
||||
capabilities: {
|
||||
isWebGL2: true
|
||||
}
|
||||
} as unknown as never,
|
||||
new Scene(),
|
||||
new PerspectiveCamera(),
|
||||
settings
|
||||
);
|
||||
|
||||
expect(postprocessingState.composerOptions[0]).toMatchObject({
|
||||
multisampling: 0
|
||||
});
|
||||
expect(getLastEffectPassEffectNames()).toEqual([
|
||||
"MockToneMappingEffect",
|
||||
"MockFXAAEffect"
|
||||
]);
|
||||
});
|
||||
|
||||
it("uses composer MSAA samples on WebGL2 when an MSAA mode is selected", () => {
|
||||
resetPostprocessingState();
|
||||
|
||||
const settings = createDefaultWorldSettings().advancedRendering;
|
||||
settings.enabled = true;
|
||||
settings.antiAliasing.mode = "msaa4x";
|
||||
|
||||
createAdvancedRenderingComposer(
|
||||
{
|
||||
capabilities: {
|
||||
isWebGL2: true
|
||||
}
|
||||
} as unknown as never,
|
||||
new Scene(),
|
||||
new PerspectiveCamera(),
|
||||
settings
|
||||
);
|
||||
|
||||
expect(postprocessingState.composerOptions[0]).toMatchObject({
|
||||
multisampling: 4
|
||||
});
|
||||
expect(getLastEffectPassEffectNames()).toEqual(["MockToneMappingEffect"]);
|
||||
});
|
||||
|
||||
it("falls back to no composer MSAA samples outside WebGL2", () => {
|
||||
resetPostprocessingState();
|
||||
|
||||
const settings = createDefaultWorldSettings().advancedRendering;
|
||||
settings.enabled = true;
|
||||
settings.antiAliasing.mode = "msaa8x";
|
||||
|
||||
createAdvancedRenderingComposer(
|
||||
{
|
||||
capabilities: {
|
||||
isWebGL2: false
|
||||
}
|
||||
} as unknown as never,
|
||||
new Scene(),
|
||||
new PerspectiveCamera(),
|
||||
settings
|
||||
);
|
||||
|
||||
expect(postprocessingState.composerOptions[0]).toMatchObject({
|
||||
multisampling: 0
|
||||
});
|
||||
expect(getLastEffectPassEffectNames()).toEqual(["MockToneMappingEffect"]);
|
||||
});
|
||||
|
||||
it("adds distance fog before post-world overlay layers", () => {
|
||||
postprocessingState.composerOptions.length = 0;
|
||||
postprocessingState.composerPasses.length = 0;
|
||||
|
||||
@@ -1877,11 +1877,8 @@ describe("scene document JSON", () => {
|
||||
const legacyDocument = JSON.parse(
|
||||
serializeSceneDocument(emptyScene)
|
||||
) as Record<string, any>;
|
||||
const legacyFoliage =
|
||||
legacyDocument.world.advancedRendering.foliage as Record<
|
||||
string,
|
||||
unknown
|
||||
>;
|
||||
const legacyFoliage = legacyDocument.world.advancedRendering
|
||||
.foliage as Record<string, unknown>;
|
||||
|
||||
legacyDocument.version = LENS_FLARE_SCENE_DOCUMENT_VERSION;
|
||||
delete legacyFoliage.windEnabled;
|
||||
|
||||
Reference in New Issue
Block a user