Add foamContactLimit to BoxBrushWaterSettings and waterReflectionMode to AdvancedRenderingSettings

This commit is contained in:
2026-04-07 06:29:31 +02:00
parent b2ed3d7383
commit f4714e8c25
2 changed files with 24 additions and 6 deletions

View File

@@ -87,6 +87,7 @@ export interface BoxBrushWaterSettings {
colorHex: string;
surfaceOpacity: number;
waveStrength: number;
foamContactLimit: number;
}
export interface BoxBrushFogSettings {
@@ -150,10 +151,14 @@ export const DEFAULT_BOX_BRUSH_ROTATION_DEGREES: Vec3 = {
z: 0
};
export const DEFAULT_BOX_BRUSH_WATER_FOAM_CONTACT_LIMIT = 6;
export const MAX_BOX_BRUSH_WATER_FOAM_CONTACT_LIMIT = 24;
const DEFAULT_BOX_BRUSH_WATER_SETTINGS: BoxBrushWaterSettings = {
colorHex: "#4da6d9",
surfaceOpacity: 0.55,
waveStrength: 0.35
waveStrength: 0.35,
foamContactLimit: DEFAULT_BOX_BRUSH_WATER_FOAM_CONTACT_LIMIT
};
const DEFAULT_BOX_BRUSH_FOG_SETTINGS: BoxBrushFogSettings = {
@@ -424,7 +429,8 @@ export function createDefaultBoxBrushWaterSettings(): BoxBrushWaterSettings {
return {
colorHex: DEFAULT_BOX_BRUSH_WATER_SETTINGS.colorHex,
surfaceOpacity: DEFAULT_BOX_BRUSH_WATER_SETTINGS.surfaceOpacity,
waveStrength: DEFAULT_BOX_BRUSH_WATER_SETTINGS.waveStrength
waveStrength: DEFAULT_BOX_BRUSH_WATER_SETTINGS.waveStrength,
foamContactLimit: DEFAULT_BOX_BRUSH_WATER_SETTINGS.foamContactLimit
};
}
@@ -454,7 +460,8 @@ export function cloneBoxBrushVolumeSettings(volume: BoxBrushVolumeSettings): Box
water: {
colorHex: volume.water.colorHex,
surfaceOpacity: volume.water.surfaceOpacity,
waveStrength: volume.water.waveStrength
waveStrength: volume.water.waveStrength,
foamContactLimit: volume.water.foamContactLimit
}
};
case "fog":

View File

@@ -6,11 +6,13 @@ export const ADVANCED_RENDERING_SHADOW_MAP_SIZES = [512, 1024, 2048, 4096] as co
export const ADVANCED_RENDERING_SHADOW_TYPES = ["basic", "pcf", "pcfSoft"] as const;
export const ADVANCED_RENDERING_TONE_MAPPING_MODES = ["none", "linear", "reinhard", "cineon", "acesFilmic"] as const;
export const BOX_VOLUME_RENDER_PATHS = ["performance", "quality"] as const;
export const ADVANCED_RENDERING_WATER_REFLECTION_MODES = ["none", "world", "all"] as const;
export type AdvancedRenderingShadowMapSize = (typeof ADVANCED_RENDERING_SHADOW_MAP_SIZES)[number];
export type AdvancedRenderingShadowType = (typeof ADVANCED_RENDERING_SHADOW_TYPES)[number];
export type AdvancedRenderingToneMappingMode = (typeof ADVANCED_RENDERING_TONE_MAPPING_MODES)[number];
export type BoxVolumeRenderPath = (typeof BOX_VOLUME_RENDER_PATHS)[number];
export type AdvancedRenderingWaterReflectionMode = (typeof ADVANCED_RENDERING_WATER_REFLECTION_MODES)[number];
export interface WorldSolidBackgroundSettings {
mode: "solid";
@@ -87,6 +89,7 @@ export interface AdvancedRenderingSettings {
depthOfField: AdvancedRenderingDepthOfFieldSettings;
fogPath: BoxVolumeRenderPath;
waterPath: BoxVolumeRenderPath;
waterReflectionMode: AdvancedRenderingWaterReflectionMode;
}
export interface WorldSettings {
@@ -114,6 +117,7 @@ const DEFAULT_ADVANCED_RENDERING_DEPTH_OF_FIELD_FOCUS_DISTANCE = 10;
const DEFAULT_ADVANCED_RENDERING_DEPTH_OF_FIELD_FOCAL_LENGTH = 0.03;
const DEFAULT_ADVANCED_RENDERING_DEPTH_OF_FIELD_BOKEH_SCALE = 1.5;
const DEFAULT_BOX_VOLUME_RENDER_PATH: BoxVolumeRenderPath = "performance";
const DEFAULT_ADVANCED_RENDERING_WATER_REFLECTION_MODE: AdvancedRenderingWaterReflectionMode = "none";
export function isAdvancedRenderingShadowMapSize(value: unknown): value is AdvancedRenderingShadowMapSize {
return ADVANCED_RENDERING_SHADOW_MAP_SIZES.includes(value as AdvancedRenderingShadowMapSize);
@@ -131,6 +135,10 @@ export function isBoxVolumeRenderPath(value: unknown): value is BoxVolumeRenderP
return BOX_VOLUME_RENDER_PATHS.includes(value as BoxVolumeRenderPath);
}
export function isAdvancedRenderingWaterReflectionMode(value: unknown): value is AdvancedRenderingWaterReflectionMode {
return ADVANCED_RENDERING_WATER_REFLECTION_MODES.includes(value as AdvancedRenderingWaterReflectionMode);
}
export function createDefaultAdvancedRenderingSettings(): AdvancedRenderingSettings {
return {
enabled: false,
@@ -163,7 +171,8 @@ export function createDefaultAdvancedRenderingSettings(): AdvancedRenderingSetti
bokehScale: DEFAULT_ADVANCED_RENDERING_DEPTH_OF_FIELD_BOKEH_SCALE
},
fogPath: DEFAULT_BOX_VOLUME_RENDER_PATH,
waterPath: DEFAULT_BOX_VOLUME_RENDER_PATH
waterPath: DEFAULT_BOX_VOLUME_RENDER_PATH,
waterReflectionMode: DEFAULT_ADVANCED_RENDERING_WATER_REFLECTION_MODE
};
}
@@ -254,7 +263,8 @@ export function cloneAdvancedRenderingSettings(settings: AdvancedRenderingSettin
...settings.depthOfField
},
fogPath: settings.fogPath,
waterPath: settings.waterPath
waterPath: settings.waterPath,
waterReflectionMode: settings.waterReflectionMode
};
}
@@ -310,7 +320,8 @@ export function areAdvancedRenderingSettingsEqual(left: AdvancedRenderingSetting
left.depthOfField.focalLength === right.depthOfField.focalLength &&
left.depthOfField.bokehScale === right.depthOfField.bokehScale &&
left.fogPath === right.fogPath &&
left.waterPath === right.waterPath
left.waterPath === right.waterPath &&
left.waterReflectionMode === right.waterReflectionMode
);
}