Add foam contact limit to box brush water settings and update world settings with water reflection modes

This commit is contained in:
2026-04-07 06:30:04 +02:00
parent f4714e8c25
commit 662369e6e3
2 changed files with 19 additions and 6 deletions

View File

@@ -73,10 +73,13 @@ export const DEFAULT_BOX_BRUSH_ROTATION_DEGREES = {
y: 0,
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 = {
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 = {
colorHex: "#9cb7c7",
@@ -318,7 +321,8 @@ export function createDefaultBoxBrushWaterSettings() {
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
};
}
export function createDefaultBoxBrushFogSettings() {
@@ -345,7 +349,8 @@ export function cloneBoxBrushVolumeSettings(volume) {
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

@@ -3,6 +3,7 @@ export const ADVANCED_RENDERING_SHADOW_MAP_SIZES = [512, 1024, 2048, 4096];
export const ADVANCED_RENDERING_SHADOW_TYPES = ["basic", "pcf", "pcfSoft"];
export const ADVANCED_RENDERING_TONE_MAPPING_MODES = ["none", "linear", "reinhard", "cineon", "acesFilmic"];
export const BOX_VOLUME_RENDER_PATHS = ["performance", "quality"];
export const ADVANCED_RENDERING_WATER_REFLECTION_MODES = ["none", "world", "all"];
const DEFAULT_SOLID_BACKGROUND_COLOR = "#2f3947";
const DEFAULT_GRADIENT_TOP_COLOR = DEFAULT_SOLID_BACKGROUND_COLOR;
const DEFAULT_GRADIENT_BOTTOM_COLOR = "#141a22";
@@ -21,6 +22,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 = "performance";
const DEFAULT_ADVANCED_RENDERING_WATER_REFLECTION_MODE = "none";
export function isAdvancedRenderingShadowMapSize(value) {
return ADVANCED_RENDERING_SHADOW_MAP_SIZES.includes(value);
}
@@ -33,6 +35,9 @@ export function isAdvancedRenderingToneMappingMode(value) {
export function isBoxVolumeRenderPath(value) {
return BOX_VOLUME_RENDER_PATHS.includes(value);
}
export function isAdvancedRenderingWaterReflectionMode(value) {
return ADVANCED_RENDERING_WATER_REFLECTION_MODES.includes(value);
}
export function createDefaultAdvancedRenderingSettings() {
return {
enabled: false,
@@ -65,7 +70,8 @@ export function createDefaultAdvancedRenderingSettings() {
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
};
}
export function createDefaultWorldSettings() {
@@ -148,7 +154,8 @@ export function cloneAdvancedRenderingSettings(settings) {
...settings.depthOfField
},
fogPath: settings.fogPath,
waterPath: settings.waterPath
waterPath: settings.waterPath,
waterReflectionMode: settings.waterReflectionMode
};
}
export function areWorldBackgroundSettingsEqual(left, right) {
@@ -195,7 +202,8 @@ export function areAdvancedRenderingSettingsEqual(left, right) {
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);
}
export function changeWorldBackgroundMode(background, mode, imageAssetId) {
if (mode === "image") {