diff --git a/src/app/App.tsx b/src/app/App.tsx index 315e95c3..e6a09dff 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -19021,6 +19021,125 @@ export function App({ store, draftStorage = null, initialStatusMessage }: AppPro /> +
+
Foliage
+ +
+ + +
+ +
+ {!advancedRendering.enabled ? null : ( <>
diff --git a/tests/domain/scene-document-validation.test.ts b/tests/domain/scene-document-validation.test.ts index 9e05f5fd..4d7c679a 100644 --- a/tests/domain/scene-document-validation.test.ts +++ b/tests/domain/scene-document-validation.test.ts @@ -1713,6 +1713,13 @@ describe("validateSceneDocument", () => { density: Number.NaN, sourceSize: 0, samples: 0 + }, + foliage: { + ...document.world.advancedRendering.foliage, + enabled: "yes", + densityMultiplier: 3, + maxDistanceMultiplier: 0, + shadows: "close" } } as any; @@ -1852,6 +1859,22 @@ describe("validateSceneDocument", () => { code: "invalid-advanced-rendering-god-rays-samples", path: "world.advancedRendering.godRays.samples" }), + expect.objectContaining({ + code: "invalid-foliage-quality-enabled", + path: "world.advancedRendering.foliage.enabled" + }), + expect.objectContaining({ + code: "invalid-foliage-quality-density-multiplier", + path: "world.advancedRendering.foliage.densityMultiplier" + }), + expect.objectContaining({ + code: "invalid-foliage-quality-max-distance-multiplier", + path: "world.advancedRendering.foliage.maxDistanceMultiplier" + }), + expect.objectContaining({ + code: "invalid-foliage-quality-shadows", + path: "world.advancedRendering.foliage.shadows" + }), expect.objectContaining({ code: "invalid-advanced-rendering-fog-path", path: "world.advancedRendering.fogPath"