diff --git a/src/document/brushes.js b/src/document/brushes.js index 36484fda..64832483 100644 --- a/src/document/brushes.js +++ b/src/document/brushes.js @@ -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": diff --git a/src/document/world-settings.js b/src/document/world-settings.js index c9431310..3b829bf8 100644 --- a/src/document/world-settings.js +++ b/src/document/world-settings.js @@ -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") {