Feat: Add anti-aliasing support to scene document

This commit is contained in:
2026-05-21 08:08:44 +02:00
parent 753f66e2e6
commit c010602b45
3 changed files with 52 additions and 2 deletions

View File

@@ -176,6 +176,7 @@ import {
import {
BOX_BRUSH_SCENE_DOCUMENT_VERSION,
ANIMATION_PLAYBACK_SCENE_DOCUMENT_VERSION,
ANTI_ALIASING_SCENE_DOCUMENT_VERSION,
ATMOSPHERE_POLISH_SCENE_DOCUMENT_VERSION,
AUTHORED_TERRAIN_COLLISION_SCENE_DOCUMENT_VERSION,
AUTHORED_TERRAIN_FOUNDATION_SCENE_DOCUMENT_VERSION,
@@ -378,6 +379,7 @@ import {
createDefaultWorldShaderSkySettings,
DEFAULT_NIGHT_IMAGE_ENVIRONMENT_INTENSITY,
MAX_ADVANCED_RENDERING_LENS_FLARE_GHOST_COUNT,
isAdvancedRenderingAntiAliasingMode,
isAdvancedRenderingDynamicGlobalIlluminationQuality,
isAdvancedRenderingWaterReflectionMode,
createDefaultAdvancedRenderingSettings,
@@ -886,6 +888,12 @@ function readAdvancedRenderingSettings(
throw new Error("world.advancedRendering.toneMapping must be an object.");
}
if (value.antiAliasing !== undefined && !isRecord(value.antiAliasing)) {
throw new Error(
"world.advancedRendering.antiAliasing must be an object."
);
}
if (value.depthOfField !== undefined && !isRecord(value.depthOfField)) {
throw new Error("world.advancedRendering.depthOfField must be an object.");
}
@@ -919,6 +927,9 @@ function readAdvancedRenderingSettings(
| undefined;
const bloom = value.bloom as Record<string, unknown> | undefined;
const toneMapping = value.toneMapping as Record<string, unknown> | undefined;
const antiAliasing = value.antiAliasing as
| Record<string, unknown>
| undefined;
const depthOfField = value.depthOfField as
| Record<string, unknown>
| undefined;
@@ -948,6 +959,12 @@ function readAdvancedRenderingSettings(
defaults.toneMapping.mode,
isAdvancedRenderingToneMappingMode
);
const antiAliasingMode = readOptionalAllowedValue(
antiAliasing?.mode,
"world.advancedRendering.antiAliasing.mode",
defaults.antiAliasing.mode,
isAdvancedRenderingAntiAliasingMode
);
const dynamicGlobalIlluminationQuality = readOptionalAllowedValue(
dynamicGlobalIllumination?.quality,
"world.advancedRendering.dynamicGlobalIllumination.quality",
@@ -1069,6 +1086,14 @@ function readAdvancedRenderingSettings(
defaults.toneMapping.exposure
)
},
antiAliasing: {
enabled: readOptionalBoolean(
antiAliasing?.enabled,
"world.advancedRendering.antiAliasing.enabled",
defaults.antiAliasing.enabled
),
mode: antiAliasingMode
},
depthOfField: {
enabled: readOptionalBoolean(
depthOfField?.enabled,
@@ -6901,7 +6926,8 @@ export function migrateSceneDocument(source: unknown): SceneDocument {
source.version !== NPC_TARGETING_SCENE_DOCUMENT_VERSION &&
source.version !== CUSTOM_PBR_MATERIALS_SCENE_DOCUMENT_VERSION &&
source.version !== LENS_FLARE_SCENE_DOCUMENT_VERSION &&
source.version !== FOLIAGE_WIND_SCENE_DOCUMENT_VERSION
source.version !== FOLIAGE_WIND_SCENE_DOCUMENT_VERSION &&
source.version !== ANTI_ALIASING_SCENE_DOCUMENT_VERSION
) {
throw new Error(
`Unsupported scene document version: ${String(source.version)}.`

View File

@@ -125,6 +125,7 @@ import {
type Terrain
} from "./terrains";
import {
isAdvancedRenderingAntiAliasingMode,
isAdvancedRenderingWaterReflectionMode,
isAdvancedRenderingDynamicGlobalIlluminationQuality,
isAdvancedRenderingShadowMapSize,
@@ -1135,6 +1136,28 @@ function validateWorldSettings(
);
}
if (!isBoolean(advancedRendering.antiAliasing.enabled)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-advanced-rendering-anti-aliasing-enabled",
"Advanced rendering anti-aliasing enabled must be a boolean.",
"world.advancedRendering.antiAliasing.enabled"
)
);
}
if (!isAdvancedRenderingAntiAliasingMode(advancedRendering.antiAliasing.mode)) {
diagnostics.push(
createDiagnostic(
"error",
"invalid-advanced-rendering-anti-aliasing-mode",
"Advanced rendering anti-aliasing mode must be smaa, fxaa, msaa2x, msaa4x, or msaa8x.",
"world.advancedRendering.antiAliasing.mode"
)
);
}
if (!isBoolean(advancedRendering.depthOfField.enabled)) {
diagnostics.push(
createDiagnostic(

View File

@@ -36,7 +36,8 @@ import {
type FoliagePrototypeRegistry
} from "../foliage/foliage";
export const SCENE_DOCUMENT_VERSION = 112 as const;
export const SCENE_DOCUMENT_VERSION = 113 as const;
export const ANTI_ALIASING_SCENE_DOCUMENT_VERSION = 113 as const;
export const FOLIAGE_WIND_SCENE_DOCUMENT_VERSION = 112 as const;
export const LENS_FLARE_SCENE_DOCUMENT_VERSION = 111 as const;
export const CUSTOM_PBR_MATERIALS_SCENE_DOCUMENT_VERSION = 110 as const;