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