Feat: Add anti-aliasing support to scene document
This commit is contained in:
@@ -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)}.`
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user