Feat: Integrate foliage settings into scene document reading
This commit is contained in:
@@ -321,10 +321,12 @@ import {
|
||||
isAdvancedRenderingDynamicGlobalIlluminationQuality,
|
||||
isAdvancedRenderingWaterReflectionMode,
|
||||
createDefaultAdvancedRenderingSettings,
|
||||
isFoliageQualityShadowMode,
|
||||
isBoxVolumeRenderPath,
|
||||
isAdvancedRenderingShadowMapSize,
|
||||
isAdvancedRenderingShadowType,
|
||||
isAdvancedRenderingToneMappingMode,
|
||||
resolveFoliageQualitySettings,
|
||||
isWorldBackgroundMode,
|
||||
isWorldShaderSkyPresetId,
|
||||
type WorldCelestialOrbitAuthoringSettings,
|
||||
@@ -812,6 +814,10 @@ function readAdvancedRenderingSettings(
|
||||
throw new Error("world.advancedRendering.godRays must be an object.");
|
||||
}
|
||||
|
||||
if (value.foliage !== undefined && !isRecord(value.foliage)) {
|
||||
throw new Error("world.advancedRendering.foliage must be an object.");
|
||||
}
|
||||
|
||||
const shadows = value.shadows as Record<string, unknown> | undefined;
|
||||
const ambientOcclusion = value.ambientOcclusion as
|
||||
| Record<string, unknown>
|
||||
@@ -829,6 +835,7 @@ function readAdvancedRenderingSettings(
|
||||
| undefined;
|
||||
const distanceFog = value.distanceFog as Record<string, unknown> | undefined;
|
||||
const godRays = value.godRays as Record<string, unknown> | undefined;
|
||||
const foliage = value.foliage as Record<string, unknown> | undefined;
|
||||
|
||||
const shadowsMapSize = readOptionalAllowedValue(
|
||||
shadows?.mapSize,
|
||||
@@ -872,6 +879,12 @@ function readAdvancedRenderingSettings(
|
||||
defaults.waterReflectionMode,
|
||||
isAdvancedRenderingWaterReflectionMode
|
||||
);
|
||||
const foliageShadowMode = readOptionalAllowedValue(
|
||||
foliage?.shadows,
|
||||
"world.advancedRendering.foliage.shadows",
|
||||
defaults.foliage.shadows,
|
||||
isFoliageQualityShadowMode
|
||||
);
|
||||
|
||||
return {
|
||||
enabled: readOptionalBoolean(
|
||||
@@ -1089,6 +1102,24 @@ function readAdvancedRenderingSettings(
|
||||
64
|
||||
)
|
||||
},
|
||||
foliage: resolveFoliageQualitySettings({
|
||||
enabled: readOptionalBoolean(
|
||||
foliage?.enabled,
|
||||
"world.advancedRendering.foliage.enabled",
|
||||
defaults.foliage.enabled
|
||||
),
|
||||
densityMultiplier: readOptionalFiniteNumber(
|
||||
foliage?.densityMultiplier,
|
||||
"world.advancedRendering.foliage.densityMultiplier",
|
||||
defaults.foliage.densityMultiplier
|
||||
),
|
||||
maxDistanceMultiplier: readOptionalFiniteNumber(
|
||||
foliage?.maxDistanceMultiplier,
|
||||
"world.advancedRendering.foliage.maxDistanceMultiplier",
|
||||
defaults.foliage.maxDistanceMultiplier
|
||||
),
|
||||
shadows: foliageShadowMode
|
||||
}),
|
||||
fogPath,
|
||||
waterPath,
|
||||
waterReflectionMode
|
||||
|
||||
@@ -35,7 +35,8 @@ import {
|
||||
type FoliagePrototypeRegistry
|
||||
} from "../foliage/foliage";
|
||||
|
||||
export const SCENE_DOCUMENT_VERSION = 93 as const;
|
||||
export const SCENE_DOCUMENT_VERSION = 94 as const;
|
||||
export const FOLIAGE_QUALITY_SCENE_DOCUMENT_VERSION = 94 as const;
|
||||
export const FOLIAGE_MASKS_SCENE_DOCUMENT_VERSION = 93 as const;
|
||||
export const FOLIAGE_FOUNDATION_SCENE_DOCUMENT_VERSION = 92 as const;
|
||||
export const PLAYER_START_EDGE_ASSIST_SCENE_DOCUMENT_VERSION = 91 as const;
|
||||
|
||||
Reference in New Issue
Block a user