Implement foliage advanced rendering controls
This commit is contained in:
111
src/app/App.tsx
111
src/app/App.tsx
@@ -2319,6 +2319,19 @@ function formatAdvancedRenderingWaterReflectionModeLabel(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatFoliageQualityShadowModeLabel(
|
||||||
|
mode: FoliageQualityShadowMode
|
||||||
|
): string {
|
||||||
|
switch (mode) {
|
||||||
|
case "off":
|
||||||
|
return "Off";
|
||||||
|
case "near":
|
||||||
|
return "Near";
|
||||||
|
case "full":
|
||||||
|
return "Full";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function formatBoxVolumeModeLabel(mode: BoxBrushVolumeMode): string {
|
function formatBoxVolumeModeLabel(mode: BoxBrushVolumeMode): string {
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case "none":
|
case "none":
|
||||||
@@ -3484,6 +3497,23 @@ export function App({ store, draftStorage = null, initialStatusMessage }: AppPro
|
|||||||
] = useState(
|
] = useState(
|
||||||
String(editorState.document.world.advancedRendering.shadows.bias)
|
String(editorState.document.world.advancedRendering.shadows.bias)
|
||||||
);
|
);
|
||||||
|
const [
|
||||||
|
advancedRenderingFoliageDensityMultiplierDraft,
|
||||||
|
setAdvancedRenderingFoliageDensityMultiplierDraft
|
||||||
|
] = useState(
|
||||||
|
String(
|
||||||
|
editorState.document.world.advancedRendering.foliage.densityMultiplier
|
||||||
|
)
|
||||||
|
);
|
||||||
|
const [
|
||||||
|
advancedRenderingFoliageMaxDistanceMultiplierDraft,
|
||||||
|
setAdvancedRenderingFoliageMaxDistanceMultiplierDraft
|
||||||
|
] = useState(
|
||||||
|
String(
|
||||||
|
editorState.document.world.advancedRendering.foliage
|
||||||
|
.maxDistanceMultiplier
|
||||||
|
)
|
||||||
|
);
|
||||||
const [
|
const [
|
||||||
advancedRenderingAmbientOcclusionIntensityDraft,
|
advancedRenderingAmbientOcclusionIntensityDraft,
|
||||||
setAdvancedRenderingAmbientOcclusionIntensityDraft
|
setAdvancedRenderingAmbientOcclusionIntensityDraft
|
||||||
@@ -4826,6 +4856,12 @@ export function App({ store, draftStorage = null, initialStatusMessage }: AppPro
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const advancedRendering = editorState.document.world.advancedRendering;
|
const advancedRendering = editorState.document.world.advancedRendering;
|
||||||
setAdvancedRenderingShadowBiasDraft(String(advancedRendering.shadows.bias));
|
setAdvancedRenderingShadowBiasDraft(String(advancedRendering.shadows.bias));
|
||||||
|
setAdvancedRenderingFoliageDensityMultiplierDraft(
|
||||||
|
String(advancedRendering.foliage.densityMultiplier)
|
||||||
|
);
|
||||||
|
setAdvancedRenderingFoliageMaxDistanceMultiplierDraft(
|
||||||
|
String(advancedRendering.foliage.maxDistanceMultiplier)
|
||||||
|
);
|
||||||
setAdvancedRenderingAmbientOcclusionIntensityDraft(
|
setAdvancedRenderingAmbientOcclusionIntensityDraft(
|
||||||
String(advancedRendering.ambientOcclusion.intensity)
|
String(advancedRendering.ambientOcclusion.intensity)
|
||||||
);
|
);
|
||||||
@@ -12889,6 +12925,81 @@ export function App({ store, draftStorage = null, initialStatusMessage }: AppPro
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const applyAdvancedRenderingFoliageEnabled = (enabled: boolean) => {
|
||||||
|
applyAdvancedRenderingSettings(
|
||||||
|
"Set foliage rendering",
|
||||||
|
enabled ? "Foliage rendering enabled." : "Foliage rendering disabled.",
|
||||||
|
(advancedRendering) => {
|
||||||
|
advancedRendering.foliage.enabled = enabled;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const applyAdvancedRenderingFoliageDensityMultiplier = () => {
|
||||||
|
try {
|
||||||
|
const densityMultiplier = clampNumber(
|
||||||
|
readFiniteNumberDraft(
|
||||||
|
advancedRenderingFoliageDensityMultiplierDraft,
|
||||||
|
"Foliage density multiplier"
|
||||||
|
),
|
||||||
|
MIN_FOLIAGE_QUALITY_DENSITY_MULTIPLIER,
|
||||||
|
MAX_FOLIAGE_QUALITY_DENSITY_MULTIPLIER
|
||||||
|
);
|
||||||
|
|
||||||
|
setAdvancedRenderingFoliageDensityMultiplierDraft(
|
||||||
|
String(densityMultiplier)
|
||||||
|
);
|
||||||
|
applyAdvancedRenderingSettings(
|
||||||
|
"Set foliage density quality",
|
||||||
|
"Updated the foliage density multiplier.",
|
||||||
|
(advancedRendering) => {
|
||||||
|
advancedRendering.foliage.densityMultiplier = densityMultiplier;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
setStatusMessage(getErrorMessage(error));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const applyAdvancedRenderingFoliageMaxDistanceMultiplier = () => {
|
||||||
|
try {
|
||||||
|
const maxDistanceMultiplier = clampNumber(
|
||||||
|
readFiniteNumberDraft(
|
||||||
|
advancedRenderingFoliageMaxDistanceMultiplierDraft,
|
||||||
|
"Foliage distance multiplier"
|
||||||
|
),
|
||||||
|
MIN_FOLIAGE_QUALITY_MAX_DISTANCE_MULTIPLIER,
|
||||||
|
MAX_FOLIAGE_QUALITY_MAX_DISTANCE_MULTIPLIER
|
||||||
|
);
|
||||||
|
|
||||||
|
setAdvancedRenderingFoliageMaxDistanceMultiplierDraft(
|
||||||
|
String(maxDistanceMultiplier)
|
||||||
|
);
|
||||||
|
applyAdvancedRenderingSettings(
|
||||||
|
"Set foliage distance quality",
|
||||||
|
"Updated the foliage distance multiplier.",
|
||||||
|
(advancedRendering) => {
|
||||||
|
advancedRendering.foliage.maxDistanceMultiplier =
|
||||||
|
maxDistanceMultiplier;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
setStatusMessage(getErrorMessage(error));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const applyAdvancedRenderingFoliageShadows = (
|
||||||
|
shadows: FoliageQualityShadowMode
|
||||||
|
) => {
|
||||||
|
applyAdvancedRenderingSettings(
|
||||||
|
"Set foliage shadows",
|
||||||
|
`Foliage shadows set to ${formatFoliageQualityShadowModeLabel(shadows)}.`,
|
||||||
|
(advancedRendering) => {
|
||||||
|
advancedRendering.foliage.shadows = shadows;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const applyAdvancedRenderingShadowsEnabled = (enabled: boolean) => {
|
const applyAdvancedRenderingShadowsEnabled = (enabled: boolean) => {
|
||||||
applyAdvancedRenderingSettings(
|
applyAdvancedRenderingSettings(
|
||||||
"Set advanced rendering shadows",
|
"Set advanced rendering shadows",
|
||||||
|
|||||||
Reference in New Issue
Block a user