diff --git a/Packages/com.waveharmonic.crest.shallow-water/Documentation~/Manual.pdf b/Packages/com.waveharmonic.crest.shallow-water/Documentation~/Manual.pdf
new file mode 100644
index 0000000..9c3df4d
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Documentation~/Manual.pdf differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Documentation~/Manual.pdf.meta b/Packages/com.waveharmonic.crest.shallow-water/Documentation~/Manual.pdf.meta
new file mode 100644
index 0000000..d78dd4e
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Documentation~/Manual.pdf.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 98b6d3b80c25f46038dc1316959f2faf
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor.meta b/Packages/com.waveharmonic.crest.shallow-water/Editor.meta
new file mode 100644
index 0000000..214d227
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 16ebbb0f482bf4ae0b606786b1eaa6b2
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts.meta b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts.meta
new file mode 100644
index 0000000..9c4d5d3
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a193825e90dcd49dbbe1a443ca003fc9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Assembly.cs b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Assembly.cs
new file mode 100644
index 0000000..6aeb80b
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Assembly.cs
@@ -0,0 +1,6 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+#if !d_CrestValid
+#error "Your Crest package needs to be updated to be compatible with this version of Crest - Shallow Water."
+#endif
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Assembly.cs.meta b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Assembly.cs.meta
new file mode 100644
index 0000000..2a843a7
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Assembly.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f038cfdad5c0c467f8fab1505c7342b8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Editors.cs b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Editors.cs
new file mode 100644
index 0000000..abfdbac
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Editors.cs
@@ -0,0 +1,84 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+using UnityEditor;
+using UnityEngine;
+using WaveHarmonic.Crest.Editor;
+
+namespace WaveHarmonic.Crest.ShallowWater.Editor
+{
+ [CustomEditor(typeof(ShallowWaterSimulation))]
+ sealed class ShallowWaterSimulationEditor : Inspector
+ {
+ const string k_SwitchToBaked = "Switch to Baked";
+ const string k_SwitchToRealTime = "Switch to Real-Time";
+
+ protected override void RenderInspectorGUI()
+ {
+ base.RenderInspectorGUI();
+
+ EditorGUILayout.Space();
+
+ var target = this.target as ShallowWaterSimulation;
+
+ var padding = GUI.skin.GetStyle("HelpBox").padding;
+
+ GUI.skin.GetStyle("HelpBox").padding = new(10, 10, 10, 10);
+ EditorGUILayout.HelpBox($"Resolution: {target.Resolution}", MessageType.None);
+
+ GUI.skin.GetStyle("HelpBox").padding = padding;
+ }
+
+ protected override void RenderAfterInspectorGUI()
+ {
+ base.RenderAfterInspectorGUI();
+
+ var target = this.target as ShallowWaterSimulation;
+
+ EditorGUILayout.Space();
+
+ if (target.Mode == ShallowWaterSimulationMode.RealTime)
+ {
+ if (target._SampleDepthProbeDirectly && target._DepthProbe == null && !target.TryGetComponent(out target._DepthProbe) && GUILayout.Button("Add Depth Probe"))
+ {
+ var probe = Undo.AddComponent(target.gameObject);
+ probe.Managed = true;
+ probe.Scale = new(target._Width, target._Width);
+ probe.OverridePosition = target.Movable;
+ }
+
+ if (target.DisplacementTarget == ShallowWaterSimulationInjection.Level && target.LevelTexture != null && GUILayout.Button(k_SwitchToBaked))
+ {
+ Undo.RecordObject(target, k_SwitchToBaked);
+ target._Mode = ShallowWaterSimulationMode.Baked;
+ EditorUtility.SetDirty(target);
+ }
+
+ if (target.DisplacementTarget == ShallowWaterSimulationInjection.Level && GUILayout.Button("Bake Output"))
+ {
+ target.Bake();
+ }
+
+ if (GUILayout.Button("Reset Simulation"))
+ {
+ target.ResetSimulation();
+ }
+
+ if (target._DepthProbe != null && GUILayout.Button("Populate Depth Probe & Reset Simulation"))
+ {
+ target._DepthProbe.Populate();
+ target.ResetSimulation();
+ }
+ }
+ else
+ {
+ if (GUILayout.Button(k_SwitchToRealTime))
+ {
+ Undo.RecordObject(target, k_SwitchToRealTime);
+ target._Mode = ShallowWaterSimulationMode.RealTime;
+ EditorUtility.SetDirty(target);
+ }
+ }
+ }
+ }
+}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Editors.cs.meta b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Editors.cs.meta
new file mode 100644
index 0000000..5f6005f
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Editors.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 31bee5158a29c43d1a818204ec82bd7a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Gizmos.cs b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Gizmos.cs
new file mode 100644
index 0000000..dfdb565
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Gizmos.cs
@@ -0,0 +1,107 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+using UnityEditor;
+using UnityEngine;
+using WaveHarmonic.Crest.Internal;
+
+namespace WaveHarmonic.Crest.ShallowWater.Editor
+{
+ static class Visualizers
+ {
+#if CREST_DEBUG
+ internal static Material s_VisualizeMaterial;
+#endif
+
+ [DrawGizmo(GizmoType.Selected | GizmoType.NonSelected)]
+ static void DrawGizmos(ShallowWaterSimulation target, GizmoType type)
+ {
+ var rect = target.Rect;
+ if (rect != Rect.zero && type.HasFlag(GizmoType.Selected))
+ {
+ var height = target.Origin.y;
+ Gizmos.color = Color.magenta;
+
+ Gizmos.DrawWireCube
+ (
+ new(rect.center.x, height, rect.center.y),
+ new(rect.size.x, 0, rect.size.y)
+ );
+
+ if (target.InjectShape == ShallowWaterSimulationInjection.Level)
+ {
+ Gizmos.DrawCube
+ (
+ new(rect.center.x - rect.size.x * 0.5f + target.PaddingWidth * 0.5f, height, rect.center.y),
+ new(target.PaddingWidth, 0, rect.size.y)
+ );
+
+ Gizmos.DrawCube
+ (
+ new(rect.center.x + rect.size.x * 0.5f - target.PaddingWidth * 0.5f, height, rect.center.y),
+ new(target.PaddingWidth, 0, rect.size.y)
+ );
+
+ Gizmos.DrawCube
+ (
+ new(rect.center.x, height, rect.center.y + rect.size.y * 0.5f - target.PaddingWidth * 0.5f),
+ new(rect.size.x - target.PaddingWidth * 2f, 0, target.PaddingWidth)
+ );
+
+ Gizmos.DrawCube
+ (
+ new(rect.center.x, height, rect.center.y - rect.size.y * 0.5f + target.PaddingWidth * 0.5f),
+ new(rect.size.x - target.PaddingWidth * 2f, 0, target.PaddingWidth)
+ );
+
+ Gizmos.DrawWireCube
+ (
+ new(rect.center.x, height, rect.center.y),
+ new(rect.size.x - target.PaddingWidth * 2f, 0, rect.size.y - target.PaddingWidth * 2f)
+ );
+ }
+ }
+
+#if CREST_DEBUG
+ if (target._Debug._ShowSimulationDataInScene != ShallowWaterSimulation.DebugFields.SimulationData.None)
+ {
+ var water = WaterRenderer.Instance;
+
+ if (water == null)
+ {
+ return;
+ }
+
+ if (s_VisualizeMaterial == null)
+ {
+ s_VisualizeMaterial = new(Shader.Find("Hidden/Crest/Debug/Visualize Texture"));
+ }
+
+ s_VisualizeMaterial.mainTexture = target._Debug._ShowSimulationDataInScene switch
+ {
+ ShallowWaterSimulation.DebugFields.SimulationData.Height => target._Height0,
+ ShallowWaterSimulation.DebugFields.SimulationData.Ground => target._GroundHeight,
+ ShallowWaterSimulation.DebugFields.SimulationData.VelocityX => target._VelocityX,
+ ShallowWaterSimulation.DebugFields.SimulationData.VelocityY => target._VelocityY,
+ ShallowWaterSimulation.DebugFields.SimulationData.Mask => target._Mask,
+ ShallowWaterSimulation.DebugFields.SimulationData.WaterLevel => target._WaterLevel,
+ _ => throw new System.NotImplementedException(),
+ };
+
+ if (s_VisualizeMaterial.mainTexture == null)
+ {
+ return;
+ }
+
+ s_VisualizeMaterial.SetPass(0);
+
+ Graphics.DrawMeshNow
+ (
+ Helpers.QuadMesh,
+ Matrix4x4.TRS(target.Origin.XNZ(water.SeaLevel) + Vector3.up, Quaternion.Euler(90f, 0, 0), Vector3.one * target._Width)
+ );
+ }
+#endif
+ }
+ }
+}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Gizmos.cs.meta b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Gizmos.cs.meta
new file mode 100644
index 0000000..b3de98d
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Gizmos.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f84a244b0410149688a75a2e39c545ff
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Previews.cs b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Previews.cs
new file mode 100644
index 0000000..6f91aa9
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Previews.cs
@@ -0,0 +1,73 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+using UnityEditor;
+using UnityEngine;
+using UnityEngine.Rendering;
+using WaveHarmonic.Crest.Editor;
+
+namespace WaveHarmonic.Crest.ShallowWater.Editor
+{
+ [CustomPreview(typeof(ShallowWaterSimulation))]
+ sealed class Preview : TexturePreview
+ {
+ RenderTexture _TemporaryRenderTexture;
+
+ public override GUIContent GetPreviewTitle() => new("Shallow Water Simulation");
+ protected override Texture OriginalTexture
+ {
+ get
+ {
+ if (_TemporaryRenderTexture != null) return _TemporaryRenderTexture;
+ // Return on of the textures to prove initialization.
+ var target = this.target as ShallowWaterSimulation;
+ return target._GroundHeight;
+ }
+ }
+
+ public override void OnPreviewSettings()
+ {
+ base.OnPreviewSettings();
+ // OnPreviewSettings is called after OnPreviewGUI so release here.
+ RenderTexture.ReleaseTemporary(_TemporaryRenderTexture);
+ _TemporaryRenderTexture = null;
+ }
+
+ public override void Cleanup()
+ {
+ base.Cleanup();
+ RenderTexture.ReleaseTemporary(_TemporaryRenderTexture);
+ }
+
+ public override void OnPreviewGUI(Rect rect, GUIStyle background)
+ {
+ var target = this.target as ShallowWaterSimulation;
+ var descriptor = target._GroundHeight.descriptor;
+ descriptor.dimension = TextureDimension.Tex2DArray;
+ descriptor.volumeDepth = target._WaterLevel != null ? 6 : 5;
+ descriptor.useMipMap = false;
+
+ // Copy textures to a single texture array.
+ _TemporaryRenderTexture = RenderTexture.GetTemporary(descriptor);
+ Graphics.CopyTexture(target._GroundHeight, 0, _TemporaryRenderTexture, 0);
+ Graphics.CopyTexture(target._Height1, 0, _TemporaryRenderTexture, 1);
+ Graphics.CopyTexture(target._VelocityX, 0, 0, _TemporaryRenderTexture, 2, 0);
+ Graphics.CopyTexture(target._VelocityY, 0, 0, _TemporaryRenderTexture, 3, 0);
+ Graphics.CopyTexture(target._Mask, 0, _TemporaryRenderTexture, 4);
+ if (target._WaterLevel != null) Graphics.CopyTexture(target._WaterLevel, 0, _TemporaryRenderTexture, 5);
+
+ _TemporaryRenderTexture.name = _Slice switch
+ {
+ 0 => "Ground Height",
+ 1 => "Height",
+ 2 => "Velocity X",
+ 3 => "Velocity Y",
+ 4 => "Mask",
+ 5 => "Water Level",
+ _ => throw new System.NotImplementedException(),
+ };
+
+ base.OnPreviewGUI(rect, background);
+ }
+ }
+}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Previews.cs.meta b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Previews.cs.meta
new file mode 100644
index 0000000..4225765
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Previews.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5da89db269e744232b9c777ae18c3b59
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Validators.cs b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Validators.cs
new file mode 100644
index 0000000..b2e12fe
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Validators.cs
@@ -0,0 +1,184 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+using UnityEditor;
+using UnityEngine;
+using WaveHarmonic.Crest.Editor;
+
+namespace WaveHarmonic.Crest.ShallowWater.Editor
+{
+ static class Validators
+ {
+ static readonly string s_TransformName = $"{nameof(Transform)}";
+ static readonly string s_DepthProbeName = $"{nameof(DepthProbe)}";
+ static readonly string s_ShallowWaterSimulationName = $"{nameof(ShallowWaterSimulation)}";
+
+ static void FixSetFeatureEnabled(SerializedObject so, string paramName, bool enabled)
+ {
+ var property = so.FindProperty(paramName);
+ var oldValue = property.boolValue;
+ property.boolValue = enabled;
+ DecoratedDrawer.OnChange(property, oldValue);
+ }
+
+ [Validator(typeof(ShallowWaterSimulation))]
+ static bool Validate(ShallowWaterSimulation target, ValidatedHelper.ShowMessage messenger)
+ {
+ var isValid = true;
+ var water = Crest.Editor.Validators.Water;
+
+ if (target._InjectShape == ShallowWaterSimulationInjection.Level)
+ {
+ isValid &= Crest.Editor.Validators.ValidateLod
+ (
+ OptionalLod.Get(typeof(LevelLod)),
+ messenger,
+ water
+ );
+ }
+ else if (target._InjectShape == ShallowWaterSimulationInjection.Waves)
+ {
+ isValid &= Crest.Editor.Validators.ValidateLod
+ (
+ OptionalLod.Get(typeof(AnimatedWavesLod)),
+ messenger,
+ water
+ );
+ }
+
+ if (target._InjectFlow)
+ {
+ isValid &= Crest.Editor.Validators.ValidateLod
+ (
+ OptionalLod.Get(typeof(FlowLod)),
+ messenger,
+ water
+ );
+ }
+
+ if (target._InjectFoam)
+ {
+ isValid &= Crest.Editor.Validators.ValidateLod
+ (
+ OptionalLod.Get(typeof(FoamLod)),
+ messenger,
+ water
+ );
+ }
+
+ if (!target._SampleDepthProbeDirectly && target._Mode != ShallowWaterSimulationMode.Baked)
+ {
+ isValid &= Crest.Editor.Validators.ValidateLod
+ (
+ OptionalLod.Get(typeof(DepthLod)),
+ messenger,
+ water
+ );
+ }
+
+ if (target._SampleDepthProbeDirectly && target._Mode != ShallowWaterSimulationMode.Baked)
+ {
+ if (target._DepthProbe == null)
+ {
+ messenger
+ (
+ $"There is no {s_DepthProbeName} present on this {nameof(GameObject)}. " +
+ $"A {s_DepthProbeName} is often needed other than for simple cases like pools.",
+ $"Add a {s_DepthProbeName}.",
+ ValidatedHelper.MessageType.Info, target,
+ (x, _) =>
+ {
+ var probe = ValidatedHelper.FixAttachComponent(x);
+ probe.Managed = true;
+ probe.Scale = new(target._Width, target._Width);
+ probe.OverridePosition = target.Movable;
+ }
+ );
+ }
+ }
+
+ if (target.Placement != Placement.Fixed && target.SampleDepthProbeDirectly && target._DepthProbe != null && target._DepthProbe.Type == DepthProbeMode.Baked)
+ {
+ messenger
+ (
+ $"The attached {nameof(DepthProbe)} is baked, but {nameof(ShallowWaterSimulation.Placement)} is not set to {nameof(Placement.Fixed)}. " +
+ $"{nameof(DepthProbe)} cannot be baked at runtime, so these are incompatible.",
+ $"Either set the {nameof(DepthProbe)} to {nameof(DepthProbeMode.RealTime)} or set the {nameof(ShallowWaterSimulation)} to {nameof(Placement.Fixed)}.",
+ ValidatedHelper.MessageType.Error, target
+ );
+ }
+
+ if (target._Debug != null)
+ {
+ var isDebugging = target._Debug._SkipUpdate
+ || target._Debug._SkipAdvect
+ || target._Debug._SkipAdvectHeights
+ || target._Debug._SkipUpdateHeight
+ || target._Debug._SkipUpdateVelocities;
+ if (isDebugging)
+ {
+ messenger
+ (
+ "Debug options currently disable one or more stages of the simulation.",
+ "Enable all simulation stages.",
+ ValidatedHelper.MessageType.Warning, target,
+ (so, _) =>
+ {
+ FixSetFeatureEnabled(so, $"{nameof(ShallowWaterSimulation._Debug)}.{nameof(ShallowWaterSimulation._Debug._SkipUpdate)}", false);
+ FixSetFeatureEnabled(so, $"{nameof(ShallowWaterSimulation._Debug)}.{nameof(ShallowWaterSimulation._Debug._SkipUpdateHeight)}", false);
+ FixSetFeatureEnabled(so, $"{nameof(ShallowWaterSimulation._Debug)}.{nameof(ShallowWaterSimulation._Debug._SkipAdvect)}", false);
+ FixSetFeatureEnabled(so, $"{nameof(ShallowWaterSimulation._Debug)}.{nameof(ShallowWaterSimulation._Debug._SkipAdvectHeights)}", false);
+ FixSetFeatureEnabled(so, $"{nameof(ShallowWaterSimulation._Debug)}.{nameof(ShallowWaterSimulation._Debug._SkipUpdateVelocities)}", false);
+ }
+ );
+ }
+
+ if (target._Debug._ShowSimulationData)
+ {
+ messenger
+ (
+ "Debug drawing of simulation data currently active.",
+ "Disable debug drawing when debugging is done to hide the overlay.",
+ ValidatedHelper.MessageType.Info, target,
+ (_, property) => property.boolValue = false,
+ $"{nameof(ShallowWaterSimulation._Debug)}.{nameof(ShallowWaterSimulation._Debug._ShowSimulationData)}"
+ );
+ }
+ }
+
+ if (!target._SampleDepthProbeDirectly && target.Placement == Placement.Transform && target.TryGetComponent(out var probe) && probe.isActiveAndEnabled)
+ {
+ messenger
+ (
+ $"There is an active {nameof(DepthProbe)} on this game object, with both {nameof(ShallowWaterSimulation.SampleDepthProbeDirectly)} disabled and {nameof(ShallowWaterSimulation.Placement)} set to {Placement.Transform}. " +
+ "This will break the movement procedure.",
+ $"Either disable/remove the {nameof(DepthProbe)} or change one of those settings.",
+ ValidatedHelper.MessageType.Error, target
+ );
+ }
+
+ if (water == null)
+ {
+ return isValid;
+ }
+
+ var layers = water.AnimatedWavesLod._CollisionLayers;
+ var flag = CollisionLayers.DynamicWaves;
+
+ if (target._Mode == ShallowWaterSimulationMode.RealTime && water.DynamicWavesLod.Enabled && !layers.HasFlag(flag))
+ {
+ messenger
+ (
+ $"It is recommended to enable the {flag} collision layer, " +
+ "as this will solve a feedback loop where the water level grows perpetually.",
+ $"Enable {flag} collision layer",
+ ValidatedHelper.MessageType.Info, water,
+ (_, y) => y.intValue = (int)(layers | flag),
+ $"{nameof(WaterRenderer._AnimatedWavesLod)}.{nameof(WaterRenderer._AnimatedWavesLod._CollisionLayers)}"
+ );
+ }
+
+ return isValid;
+ }
+ }
+}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Validators.cs.meta b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Validators.cs.meta
new file mode 100644
index 0000000..e82c027
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/Validators.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d68ceb75915cb474e80405e20ec44df7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/WaveHarmonic.Crest.ShallowWater.Editor.asmdef b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/WaveHarmonic.Crest.ShallowWater.Editor.asmdef
new file mode 100644
index 0000000..c8f0a27
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/WaveHarmonic.Crest.ShallowWater.Editor.asmdef
@@ -0,0 +1,36 @@
+{
+ "name": "WaveHarmonic.Crest.ShallowWater.Editor",
+ "rootNamespace": "",
+ "references": [
+ "GUID:7c347618730f5467f86a58f333ce21df",
+ "GUID:125c216bac85c4443bfd4de6bc7eda99",
+ "GUID:056ff2a5b2f124d468c6655552acdca5",
+ "GUID:1ab2a6c2a51cd4b43867788dbaee1a55",
+ "GUID:98db37baed0fc4b73a47a9d66f791aae"
+ ],
+ "includePlatforms": [
+ "Editor"
+ ],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": false,
+ "defineConstraints": [
+ "UNITY_2022_3_OR_NEWER",
+ "d_Crest"
+ ],
+ "versionDefines": [
+ {
+ "name": "com.waveharmonic.crest",
+ "expression": "",
+ "define": "d_Crest"
+ },
+ {
+ "name": "com.waveharmonic.crest",
+ "expression": "5.6.0",
+ "define": "d_CrestValid"
+ }
+ ],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/WaveHarmonic.Crest.ShallowWater.Editor.asmdef.meta b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/WaveHarmonic.Crest.ShallowWater.Editor.asmdef.meta
new file mode 100644
index 0000000..e5ab23e
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Editor/Scripts/WaveHarmonic.Crest.ShallowWater.Editor.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7aedaf24b93474a0e9e30d5581dea238
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/ReadMe.txt b/Packages/com.waveharmonic.crest.shallow-water/ReadMe.txt
new file mode 100644
index 0000000..ce224dc
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/ReadMe.txt
@@ -0,0 +1,3 @@
+Thank you for purchasing!
+
+Offline manual is located in the Documentation~ folder in this package directory (viewable from OS file browser).
diff --git a/Packages/com.waveharmonic.crest.shallow-water/ReadMe.txt.meta b/Packages/com.waveharmonic.crest.shallow-water/ReadMe.txt.meta
new file mode 100644
index 0000000..408c08f
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/ReadMe.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e1f8989701a3a45b481a91144678cd77
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime.meta
new file mode 100644
index 0000000..44ba977
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 35222819f15fa40a2bfdb2af5bdd2555
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts.meta
new file mode 100644
index 0000000..3404acb
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 98e28ea6e6a7440bda4e25f938974a09
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Assembly.cs b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Assembly.cs
new file mode 100644
index 0000000..8b94c6a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Assembly.cs
@@ -0,0 +1,10 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+#if !d_CrestValid
+#error "Your Crest package needs to be updated to be compatible with this version of Crest - Shallow Water."
+#endif
+
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("WaveHarmonic.Crest.ShallowWater.Editor")]
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Assembly.cs.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Assembly.cs.meta
new file mode 100644
index 0000000..73b1279
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Assembly.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2061b590ba9764266bfd44bf2655dd7b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated.meta
new file mode 100644
index 0000000..da37fac
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 09f675371f4f6498b9e23c3e098df748
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/API.Generated.cs b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/API.Generated.cs
new file mode 100644
index 0000000..a395468
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/API.Generated.cs
@@ -0,0 +1,266 @@
+//
+
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+namespace WaveHarmonic.Crest.ShallowWater
+{
+ partial class ShallowWaterSimulation
+ {
+ ///
+ /// Adds meters of additional water into the simulation domain on initialization.
+ ///
+ ///
+ /// Requires resetting the simulation.
+ ///
+ public float AdditionalWater { get => _AdditionalWater; set => _AdditionalWater = value; }
+
+ ///
+ /// Affects depth-based blending of the simulation and animated waves (m).
+ ///
+ ///
+ /// For the minimum, when the water depth is less than this value, animated waves will not contribute at all, water shape will come purely from this simulation.
+ ///
+ public UnityEngine.Vector2 BlendDepthRange { get => _BlendDepthRange; set => _BlendDepthRange = value; }
+
+ ///
+ /// The intensity at which waves inject water into the simulation.
+ ///
+ public float BlendPushUpStrength { get => _BlendPushUpStrength; set => _BlendPushUpStrength = value; }
+
+ ///
+ /// Filters the mask.
+ ///
+ public int BlurMaskIterations { get => _BlurMaskIterations; set => _BlurMaskIterations = value; }
+
+ ///
+ /// Filters the shape prior to rendering to smooth out sharp features.
+ ///
+ ///
+ /// Always enabled when baking.
+ ///
+ public bool BlurShapeForRender { get => _BlurShapeForRender; set => _BlurShapeForRender = value; }
+
+ ///
+ /// Stability measure - limits velocities. Default 0.5.
+ ///
+ public float CourantNumber { get => _CourantNumber; set => _CourantNumber = value; }
+
+ ///
+ /// Disable simulation if viewpoint is more than this distance outside simulation domain.
+ ///
+ public float CullDistance { get => _CullDistance; set => _CullDistance = value; }
+
+ ///
+ /// The speed of the transition to its culled state.
+ ///
+ public float CullTransitionSpeed { get => _CullTransitionSpeed; set => _CullTransitionSpeed = value; }
+
+ ///
+ /// The depth of the water in the shallow water simulation (m).
+ ///
+ ///
+ /// Any underwater surfaces deeper than this depth will not influence the sim. Large values can lead to instabilities / jitter in the result. Requires resetting the simulation.
+ ///
+ public float Depth { get => _Depth; set => _Depth = value; }
+
+ ///
+ /// Rate at which to remove water at the boundaries of the domain.
+ ///
+ ///
+ /// Useful for preventing buildup of water when simulating shoreline waves.
+ ///
+ public float DrainWaterAtBoundaries { get => _DrainWaterAtBoundaries; set => _DrainWaterAtBoundaries = value; }
+
+ ///
+ /// Recompute ground heights every frame.
+ ///
+ ///
+ /// Only enable this if terrain used by water system changes at runtime.
+ ///
+ public bool DynamicSeabed { get => _DynamicSeabed; set => _DynamicSeabed = value; }
+
+ ///
+ /// Disable simulation when viewpoint far from domain.
+ ///
+ public bool EnableDistanceCulling { get => _EnableDistanceCulling; set => _EnableDistanceCulling = value; }
+
+ ///
+ /// Rate at which to remove water at any location.
+ ///
+ ///
+ /// Useful for removing remaining water from lowering tides.
+ ///
+ public float Evaporation { get => _Evaporation; set => _Evaporation = value; }
+
+ ///
+ /// Multiplies flow output to scale when injecting.
+ ///
+ public float FlowStrength { get => _FlowStrength; set => _FlowStrength = value; }
+
+ ///
+ /// The baked texture for flow.
+ ///
+ public UnityEngine.Texture2D FlowTexture { get => _FlowTexture; set => _FlowTexture = value; }
+
+ ///
+ /// Multiplies foam output to scale when injecting.
+ ///
+ public float FoamStrength { get => _FoamStrength; set => _FoamStrength = value; }
+
+ ///
+ /// The baked texture for foam.
+ ///
+ public UnityEngine.Texture2D FoamTexture { get => _FoamTexture; set => _FoamTexture = value; }
+
+ ///
+ /// Friction applied to water to prevent dampen velocities.
+ ///
+ public float Friction { get => _Friction; set => _Friction = value; }
+
+ ///
+ /// Add the resulting flow velocities to the water system.
+ ///
+ public bool InjectFlow { get => _InjectFlow; set => _InjectFlow = value; }
+
+ ///
+ /// Add the resulting foam to the water system.
+ ///
+ public bool InjectFoam { get => _InjectFoam; set => _InjectFoam = value; }
+
+ ///
+ /// Add the resulting shape to the water system.
+ ///
+ ///
+ /// If blending data from waves or height then use Waves or Level respectively. Requires resetting the simulation.
+ ///
+ public ShallowWaterSimulationInjection InjectShape { get => _InjectShape; set => _InjectShape = value; }
+
+ ///
+ /// The baked texture for water level.
+ ///
+ public UnityEngine.Texture2D LevelTexture { get => _LevelTexture; set => _LevelTexture = value; }
+
+ ///
+ /// Inform water how much this input will displace the water surface vertically.
+ ///
+ ///
+ /// This is used for culling water tiles.
+ ///
+ public float MaximumDisplacementVertical { get => _MaximumDisplacementVertical; set => _MaximumDisplacementVertical = value; }
+
+ ///
+ /// Maximum resolution of simulation grid.
+ ///
+ ///
+ /// Safety limit to avoid simulation using large amount of video memory. Requires resetting the simulation.
+ ///
+ public int MaximumResolution { get => _MaximumResolution; set => _MaximumResolution = value; }
+
+ ///
+ /// Whether to use the baked textures.
+ ///
+ ///
+ /// Only supported by water level.
+ ///
+ public ShallowWaterSimulationMode Mode { get => _Mode; set => _Mode = value; }
+
+ ///
+ /// Overshoot is artifacts where the water will spike sharply.
+ ///
+ public float OvershootReductionStrength { get => _OvershootReductionStrength; set => _OvershootReductionStrength = value; }
+
+ ///
+ /// Padding area for zero activity at the edge of the domain.
+ ///
+ ///
+ /// Adds padding so that simulation edge can overlap with height inputs without causing a seam (m). It is important that the padding fully overlaps the water level input, or there may be a gap. Visualized by the gizmo.
+ ///
+ public float PaddingWidth { get => _PaddingWidth; set => _PaddingWidth = value; }
+
+ ///
+ /// Places the simulation at sea level.
+ ///
+ ///
+ /// Requires resetting the simulation.
+ ///
+ public bool PlaceAtSeaLevel { get => _PlaceAtSeaLevel; set => _PlaceAtSeaLevel = value; }
+
+ ///
+ /// Where the simulation is placed.
+ ///
+ ///
+ /// The default performs the best.
+ ///
+ public WaveHarmonic.Crest.Placement Placement { get => GetPlacement(); set => _Placement = value; }
+
+ ///
+ /// Preconfigures the simulation for a specific use case.
+ ///
+ ///
+ /// Requires resetting the simulation.
+ ///
+ public ShallowWaterSimulationPreset Preset { get => _Preset; set => SetPreset(_Preset, _Preset = value); }
+
+ ///
+ /// Whether to sample the Depth Probe directly.
+ ///
+ ///
+ /// If disabled then data will come from the LODs which will have precision losses depending on camera position. Only disable if necessary. Requires resetting the simulation.
+ ///
+ public bool SampleDepthProbeDirectly { get => _SampleDepthProbeDirectly; set => _SampleDepthProbeDirectly = value; }
+
+ ///
+ /// Whether to sample water level inputs directly.
+ ///
+ ///
+ /// If disabled then data will come from the LODs which will have precision losses depending on camera position. Only disable if necessary. This option only supports water level inputs using the Geometry, Spline or Renderer modes. Requires resetting the simulation.
+ ///
+ public bool SampleWaterLevelInputsDirectly { get => GetSampleWaterLevelInputsDirectly(); set => _SampleWaterLevelInputsDirectly = value; }
+
+ ///
+ /// Simulation resolution - width of simulation grid cell (m).
+ ///
+ ///
+ /// Smaller values will increase resolution but take more computation time and memory, and may lead to instabilities for small values. Requires resetting the simulation.
+ ///
+ public float TexelSize { get => _TexelSize; set => _TexelSize = value; }
+
+ ///
+ /// Time step used for simulation (s).
+ ///
+ ///
+ /// Smaller values can make simulation more stable but requires more runtime computation.
+ ///
+ public float TimeStep { get => _TimeStep; set => _TimeStep = value; }
+
+ ///
+ /// Adds a margin around the water level to prevent water from degenerating at a distance and prevents water wall creep (px).
+ ///
+ public bool WaterEdgeMargin { get => _WaterEdgeMargin; set => _WaterEdgeMargin = value; }
+
+ ///
+ /// Same as Margin Width but for baking only.
+ ///
+ ///
+ /// Will use the larger value of the two.
+ ///
+ public int WaterEdgeMarginBakedWidth { get => _WaterEdgeMarginBakedWidth; set => _WaterEdgeMarginBakedWidth = value; }
+
+ ///
+ /// Width of the margin.
+ ///
+ ///
+ /// The default is the optimal width.
+ ///
+ public int WaterEdgeMarginWidth { get => _WaterEdgeMarginWidth; set => _WaterEdgeMarginWidth = value; }
+
+ ///
+ /// The width of the simulation area (m).
+ ///
+ ///
+ /// Enable gizmos to see a wireframe outline of the domain. Requires resetting the simulation.
+ ///
+ public float Width { get => _Width; set => _Width = value; }
+ }
+}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/API.Generated.cs.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/API.Generated.cs.meta
new file mode 100644
index 0000000..6d965b4
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/API.Generated.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c4e6cb7325f09471f83a777af615e43d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/Documentation.Generated.cs b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/Documentation.Generated.cs
new file mode 100644
index 0000000..1e93f3e
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/Documentation.Generated.cs
@@ -0,0 +1,59 @@
+//
+
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+namespace WaveHarmonic.Crest.ShallowWater.Generated
+{
+ enum ShallowWaterSimulationInjection
+ {
+ ///
+ /// Inject into the Animated Waves.
+ ///
+ Waves,
+
+ ///
+ /// Inject into Water Level.
+ ///
+ Level,
+ }
+}
+
+
+namespace WaveHarmonic.Crest.ShallowWater.Generated
+{
+ enum ShallowWaterSimulationMode
+ {
+ ///
+ /// Simulate every frame.
+ ///
+ RealTime,
+
+ ///
+ /// Simulation output has been baked to a texture.
+ ///
+ Baked,
+ }
+}
+
+
+namespace WaveHarmonic.Crest.ShallowWater.Generated
+{
+ enum ShallowWaterSimulationPreset
+ {
+ ///
+ /// All options available.
+ ///
+ None,
+
+ ///
+ /// Only shows options for shorelines.
+ ///
+ Shoreline,
+
+ ///
+ /// Only shows options for streams.
+ ///
+ Stream,
+ }
+}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/Documentation.Generated.cs.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/Documentation.Generated.cs.meta
new file mode 100644
index 0000000..3abe4f9
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/Generated/Documentation.Generated.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0ae54924f0199462182f9afdd2b914aa
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterSimulation.cs b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterSimulation.cs
new file mode 100644
index 0000000..15bbb4a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterSimulation.cs
@@ -0,0 +1,1869 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+using UnityEngine.Experimental.Rendering;
+using UnityEngine.Rendering;
+using WaveHarmonic.Crest.Internal;
+
+namespace WaveHarmonic.Crest.ShallowWater
+{
+ ///
+ /// 's update mode.
+ ///
+ [@GenerateDoc]
+ public enum ShallowWaterSimulationMode
+ {
+ ///
+ [Tooltip("Simulate every frame.")]
+ [InspectorName("Real-Time")]
+ RealTime,
+
+ ///
+ [Tooltip("Simulation output has been baked to a texture.")]
+ Baked,
+ }
+
+ ///
+ /// Where to inject the displacement.
+ ///
+ [@GenerateDoc]
+ public enum ShallowWaterSimulationInjection
+ {
+ ///
+ [Tooltip("Inject into the Animated Waves.")]
+ Waves = 1,
+
+ ///
+ [Tooltip("Inject into Water Level.")]
+ Level = 2,
+ }
+
+ ///
+ /// Preset options for the
+ ///
+ [@GenerateDoc]
+ public enum ShallowWaterSimulationPreset
+ {
+ ///
+ [Tooltip("All options available.")]
+ None,
+
+ ///
+ [Tooltip("Only shows options for shorelines.")]
+ Shoreline,
+
+ ///
+ [Tooltip("Only shows options for streams.")]
+ Stream,
+ }
+
+ ///
+ /// Runs a shallow water simulation at global sea level in a domain around its transform,
+ /// and injects the results of the simulation into the water data.
+ ///
+ [@ExecuteDuringEditMode]
+ [@HelpURL("Packages/ShallowWater/Manual.html")]
+ [AddComponentMenu(Constants.k_MenuPrefixInputs + "Shallow Water Simulation")]
+ public sealed partial class ShallowWaterSimulation : ManagedBehaviour
+ {
+ [SerializeField, HideInInspector]
+#pragma warning disable 414
+ int _Version = 0;
+#pragma warning restore 414
+
+ [Group("General", Group.Style.Accordian)]
+
+ [Tooltip("Preconfigures the simulation for a specific use case.\n\nRequires resetting the simulation.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@GenerateAPI(Setter.Custom)]
+ [@DecoratedField, SerializeField]
+ ShallowWaterSimulationPreset _Preset;
+
+ [@Space(10)]
+
+ [Tooltip("The width of the simulation area (m).\n\nEnable gizmos to see a wireframe outline of the domain. Requires resetting the simulation.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Range(8, 1024)]
+ [@GenerateAPI]
+ [SerializeField]
+ internal float _Width = 64f;
+
+ [Tooltip("The depth of the water in the shallow water simulation (m).\n\nAny underwater surfaces deeper than this depth will not influence the sim. Large values can lead to instabilities / jitter in the result. Requires resetting the simulation.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Range(0.1f, 16.0f)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _Depth = 2f;
+
+ [Tooltip("Where the simulation is placed.\n\nThe default performs the best.")]
+ [@Predicated(nameof(_InjectShape), inverted: true, nameof(ShallowWaterSimulationInjection.Waves), hide: true)]
+ [@ShowComputedProperty(nameof(Placement))]
+ [@GenerateAPI(Getter.Custom)]
+ [@DecoratedField, SerializeField]
+ Placement _Placement;
+
+ [Tooltip("Places the simulation at sea level.\n\nRequires resetting the simulation.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ bool _PlaceAtSeaLevel = true;
+
+ [Tooltip("Friction applied to water to prevent dampen velocities.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ float _Friction = 0.02f;
+
+ [Tooltip("Recompute ground heights every frame.\n\nOnly enable this if terrain used by water system changes at runtime.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ bool _DynamicSeabed = false;
+
+ [Tooltip("Whether to sample the Depth Probe directly.\n\nIf disabled then data will come from the LODs which will have precision losses depending on camera position. Only disable if necessary. Requires resetting the simulation.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ internal bool _SampleDepthProbeDirectly = true;
+
+ [Tooltip("Whether to sample water level inputs directly.\n\nIf disabled then data will come from the LODs which will have precision losses depending on camera position. Only disable if necessary. This option only supports water level inputs using the Geometry, Spline or Renderer modes. Requires resetting the simulation.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Predicated(nameof(_InjectShape), inverted: true, nameof(ShallowWaterSimulationInjection.Level), hide: true)]
+ [@GenerateAPI(Getter.Custom)]
+ [@DecoratedField, SerializeField]
+ internal bool _SampleWaterLevelInputsDirectly = true;
+
+ [@Space(10)]
+
+ [Tooltip("Adds meters of additional water into the simulation domain on initialization.\n\nRequires resetting the simulation.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ float _AdditionalWater;
+
+ [Tooltip("Rate at which to remove water at the boundaries of the domain.\n\nUseful for preventing buildup of water when simulating shoreline waves.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ float _DrainWaterAtBoundaries = -0.01f;
+
+ [Tooltip("Rate at which to remove water at any location.\n\nUseful for removing remaining water from lowering tides.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Range(0.0f, 0.001f, Range.Clamp.Minimum)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _Evaporation;
+
+
+ [@Heading("Source Blending")]
+
+ [@Label("Depth Range")]
+ [Tooltip("Affects depth-based blending of the simulation and animated waves (m).\n\nFor the minimum, when the water depth is less than this value, animated waves will not contribute at all, water shape will come purely from this simulation.\n\nFor the maximum, when the water depth is greater than this value, this simulation will not contribute at all, water shape will come purely from the normal ocean waves.\n\nNegative depths are valid and occur when surfaces are above sea level.")]
+ [@Predicated(nameof(_InjectShape), inverted: false, nameof(ShallowWaterSimulationInjection.Level), hide: true)]
+ [@Range(-10f, 10f)]
+ [@GenerateAPI]
+ [SerializeField]
+ Vector2 _BlendDepthRange = new(0f, 4f);
+
+ [@Label("Push Up Strength")]
+ [Tooltip("The intensity at which waves inject water into the simulation.")]
+ [@Predicated(nameof(_InjectShape), inverted: false, nameof(ShallowWaterSimulationInjection.Level), hide: true)]
+ [@Range(0f, 1f, Range.Clamp.Minimum)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _BlendPushUpStrength = 0.1f;
+
+
+ [Heading("Distance Culling")]
+
+ [@Label("Enable")]
+ [Tooltip("Disable simulation when viewpoint far from domain.")]
+ [@Predicated(nameof(_InjectShape), inverted: false, nameof(ShallowWaterSimulationInjection.Level), hide: true)]
+ [@Predicated(nameof(_Placement), inverted: true, nameof(Placement.Fixed))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ bool _EnableDistanceCulling = true;
+
+ [Tooltip("Disable simulation if viewpoint is more than this distance outside simulation domain.")]
+ [@Predicated(nameof(_InjectShape), inverted: false, nameof(ShallowWaterSimulationInjection.Level), hide: true)]
+ [@Predicated(nameof(_Placement), inverted: true, nameof(Placement.Fixed))]
+ [@Predicated(nameof(_EnableDistanceCulling))]
+ [@Range(1f, 1024f)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _CullDistance = 75.0f;
+
+ [Tooltip("The speed of the transition to its culled state.")]
+ [@Predicated(nameof(_InjectShape), inverted: false, nameof(ShallowWaterSimulationInjection.Level), hide: true)]
+ [@Predicated(nameof(_Placement), inverted: true, nameof(Placement.Fixed))]
+ [@Predicated(nameof(_EnableDistanceCulling))]
+ [@Range(0.01f, 1f)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _CullTransitionSpeed = 0.5f;
+
+
+ [Group("Stability", Group.Style.Accordian)]
+
+ [Tooltip("Time step used for simulation (s).\n\nSmaller values can make simulation more stable but requires more runtime computation.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Range(0.001f, 0.03333333f)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _TimeStep = 0.01f;
+
+ [Tooltip("Stability measure - limits velocities. Default 0.5.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ float _CourantNumber = 0.5f;
+
+ [Tooltip("Overshoot is artifacts where the water will spike sharply.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Range(0.1f, 0.5f)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _OvershootReductionStrength = 0.25f;
+
+
+ [Group("Quality", Group.Style.Accordian)]
+
+ [Tooltip("Simulation resolution - width of simulation grid cell (m).\n\nSmaller values will increase resolution but take more computation time and memory, and may lead to instabilities for small values. Requires resetting the simulation.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Range(0.01f, 2f)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _TexelSize = 32f / 512f;
+
+ [Tooltip("Maximum resolution of simulation grid.\n\nSafety limit to avoid simulation using large amount of video memory. Requires resetting the simulation.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Range(16, 4096)]
+ [@GenerateAPI]
+ [SerializeField]
+ int _MaximumResolution = 1024;
+
+ [@Space(10)]
+
+ [Tooltip("Filters the shape prior to rendering to smooth out sharp features.\n\nAlways enabled when baking.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ bool _BlurShapeForRender = true;
+
+ [Tooltip("Filters the mask.")]
+ [@Predicated(nameof(_InjectShape), inverted: false, nameof(ShallowWaterSimulationInjection.Level), hide: true)]
+ [@Range(0, 64)]
+ [@GenerateAPI]
+ [SerializeField]
+ int _BlurMaskIterations = 10;
+
+ [@Heading("Water Edge Margin")]
+
+ [Tooltip("Adds a margin around the water level to prevent water from degenerating at a distance and prevents water wall creep (px).")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Label("Enable")]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ bool _WaterEdgeMargin = true;
+
+ [@Label("Margin Width")]
+ [Tooltip("Width of the margin.\n\nThe default is the optimal width.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Range(1, 64)]
+ [@GenerateAPI]
+ [SerializeField]
+ int _WaterEdgeMarginWidth = 4;
+
+ [@Label("Margin Width (Baked)")]
+ [Tooltip("Same as Margin Width but for baking only.\n\nWill use the larger value of the two.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Predicated(nameof(_InjectShape), inverted: true, nameof(ShallowWaterSimulationInjection.Level))]
+ [@Range(1, 64)]
+ [@GenerateAPI]
+ [SerializeField]
+#pragma warning disable CS0414
+ int _WaterEdgeMarginBakedWidth = 32;
+#pragma warning restore CS0414
+
+
+ [Group("Output", Group.Style.Accordian)]
+
+ [Tooltip("Whether to use the baked textures.\n\nOnly supported by water level.")]
+ [@Predicated(nameof(_InjectShape), inverted: false, nameof(ShallowWaterSimulationInjection.Waves), hide: false)]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ internal ShallowWaterSimulationMode _Mode = ShallowWaterSimulationMode.RealTime;
+
+ [@Heading("Shape", alwaysEnabled: true)]
+
+ [@Label("Inject")]
+ [Tooltip("Add the resulting shape to the water system.\n\nIf blending data from waves or height then use Waves or Level respectively. Requires resetting the simulation.")]
+ [@Predicated(nameof(_Preset), inverted: true, nameof(ShallowWaterSimulationPreset.None), hide: false)]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ internal ShallowWaterSimulationInjection _InjectShape = ShallowWaterSimulationInjection.Waves;
+
+ [@Label("Baked Texture")]
+ [Tooltip("The baked texture for water level.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.RealTime))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ Texture2D _LevelTexture;
+
+ [@Label("Report Maximum Displacement")]
+ [Tooltip("Inform water how much this input will displace the water surface vertically.\n\nThis is used for culling water tiles.")]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ float _MaximumDisplacementVertical = 0f;
+
+ [@Label("Domain Padding")]
+ [Tooltip("Padding area for zero activity at the edge of the domain.\n\nAdds padding so that simulation edge can overlap with height inputs without causing a seam (m). It is important that the padding fully overlaps the water level input, or there may be a gap. Visualized by the gizmo.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Predicated(nameof(_InjectShape), inverted: true, nameof(ShallowWaterSimulationInjection.Level))]
+ [@Range(0f, 10f)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _PaddingWidth = 2f;
+
+
+ [@Heading("Flow")]
+
+ [@Label("Inject")]
+ [Tooltip("Add the resulting flow velocities to the water system.")]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ internal bool _InjectFlow = true;
+
+ [@Label("Baked Texture")]
+ [Tooltip("The baked texture for flow.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.RealTime))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ Texture2D _FlowTexture;
+
+ [@Label("Strength")]
+ [Tooltip("Multiplies flow output to scale when injecting.")]
+ [@Predicated(nameof(_InjectFlow))]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Range(0, 10f, Range.Clamp.Minimum)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _FlowStrength = 1f;
+
+ [@Heading("Foam")]
+
+ [@Label("Inject")]
+ [Tooltip("Add the resulting foam to the water system.")]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ internal bool _InjectFoam = true;
+
+ [@Label("Baked Texture")]
+ [Tooltip("The baked texture for foam.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.RealTime))]
+ [@GenerateAPI]
+ [@DecoratedField, SerializeField]
+ Texture2D _FoamTexture;
+
+ [@Label("Strength")]
+ [Tooltip("Multiplies foam output to scale when injecting.")]
+ [@Predicated(nameof(_InjectFoam))]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@Range(0, 10f, Range.Clamp.Minimum)]
+ [@GenerateAPI]
+ [SerializeField]
+ float _FoamStrength = 1f;
+
+
+ [@Group("Debug", isCustomFoldout: true)]
+
+ [@DecoratedField(isCustomFoldout: true), SerializeField]
+ internal DebugFields _Debug = new();
+
+ [System.Serializable]
+ internal sealed class DebugFields
+ {
+ [@Heading("Stages")]
+
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _SkipUpdate;
+
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _SkipUpdateHeight;
+
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _SkipUpdateVelocities;
+
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _SkipAdvect;
+
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _SkipAdvectHeights;
+
+
+ [@Heading("Stability")]
+
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _DisableStabilityImprovements;
+
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _DisableMacCormackScheme;
+
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _DisableMacCormackSchemeForHeight;
+
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _DisableUpwindHeight;
+
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _DisableDepthLimiter;
+
+ [Tooltip("Overshoot is artifacts where the water will spike sharply.")]
+ [@Predicated(nameof(_Mode), inverted: false, nameof(ShallowWaterSimulationMode.Baked))]
+ [@DecoratedField, SerializeField]
+ public bool _DisableOvershootReduction;
+
+
+ [@Heading("Baking")]
+
+ [@Label("Execute Simulation")]
+ [Tooltip("Useful for rebaking.")]
+ [@DecoratedField, SerializeField]
+ public bool _AlwaysExecuteSimulation;
+
+
+ [@Heading("Output")]
+ [@DecoratedField, SerializeField]
+ public bool _SkipInjectShape;
+
+
+ [@Heading("Debug Overlay")]
+
+ [@DecoratedField, SerializeField]
+ public bool _ShowSimulationData = false;
+
+#if !CREST_DEBUG
+ [HideInInspector]
+#endif
+ [@DecoratedField, SerializeField]
+ public SimulationData _ShowSimulationDataInScene;
+
+ public enum SimulationData
+ {
+ None,
+ Ground,
+ Height,
+ VelocityX,
+ VelocityY,
+ Mask,
+ WaterLevel,
+ }
+ }
+
+
+ const string k_DrawSWS = "SWS";
+
+
+ static class ShaderIDs
+ {
+ // Shader properties.
+ public static readonly int s_DomainWidth = Shader.PropertyToID("_Crest_DomainWidth");
+ public static readonly int s_DomainOrigin = Shader.PropertyToID("_Crest_DomainOrigin");
+ public static readonly int s_TexelSize = Shader.PropertyToID("_Crest_TexelSize");
+ public static readonly int s_SimulationDeltaTime = Shader.PropertyToID("_Crest_SimulationDeltaTime");
+ public static readonly int s_AddAdditionalWater = Shader.PropertyToID("_Crest_AddAdditionalWater");
+ public static readonly int s_DrainWaterAtBoundaries = Shader.PropertyToID("_Crest_DrainWaterAtBoundaries");
+ public static readonly int s_Evaporation = Shader.PropertyToID("_Crest_Evaporation");
+ public static readonly int s_Friction = Shader.PropertyToID("_Crest_Friction");
+ public static readonly int s_MaximumVelocity = Shader.PropertyToID("_Crest_MaximumVelocity");
+ public static readonly int s_ShallowMinimumDepth = Shader.PropertyToID("_Crest_ShallowMinimumDepth");
+ public static readonly int s_ShallowMaximumDepth = Shader.PropertyToID("_Crest_ShallowMaximumDepth");
+ public static readonly int s_BlendPushUpStrength = Shader.PropertyToID("_Crest_BlendPushUpStrength");
+ public static readonly int s_MacCormackAdvection = Shader.PropertyToID("_Crest_MacCormackAdvection");
+ public static readonly int s_MacCormackAdvectionForHeight = Shader.PropertyToID("_Crest_MacCormackAdvectionForHeight");
+ public static readonly int s_UpwindHeight = Shader.PropertyToID("_Crest_UpwindHeight");
+ public static readonly int s_DepthLimiter = Shader.PropertyToID("_Crest_DepthLimiter");
+ public static readonly int s_OvershootReductionStrength = Shader.PropertyToID("_Crest_OvershootReductionStrength");
+ public static readonly int s_InjectLevel = Shader.PropertyToID("_Crest_InjectLevel");
+ public static readonly int s_MarginWidth = Shader.PropertyToID("_Crest_MarginWidth");
+
+ // Injection
+ public static readonly int s_InjectionStrength = Shader.PropertyToID("_Crest_InjectionStrength");
+ public static readonly int s_InjectionMaximum = Shader.PropertyToID("_Crest_InjectionMaximum");
+ public static readonly int s_SampleFromDepthProbe = Shader.PropertyToID("_Crest_SampleFromDepthProbe");
+ public static readonly int s_SampleFromLevelInputs = Shader.PropertyToID("_Crest_SampleFromLevelInputs");
+
+ // Baking
+ public static readonly int s_FoamBakeTarget = Shader.PropertyToID("_Crest_FoamBakeTarget");
+ public static readonly int s_FlowBakeTarget = Shader.PropertyToID("_Crest_FlowBakeTarget");
+ public static readonly int s_LevelBakeTarget = Shader.PropertyToID("_Crest_LevelBakeTarget");
+
+ // Simulation textures
+ public static readonly int s_GroundHeightSource = Shader.PropertyToID("_Crest_GroundHeightSource");
+ public static readonly int s_GroundHeightTarget = Shader.PropertyToID("_Crest_GroundHeightTarget");
+ public static readonly int s_HeightSource = Shader.PropertyToID("_Crest_HeightSource");
+ public static readonly int s_HeightTarget = Shader.PropertyToID("_Crest_HeightTarget");
+ public static readonly int s_VelocityXSource = Shader.PropertyToID("_Crest_VelocityXSource");
+ public static readonly int s_VelocityXTarget = Shader.PropertyToID("_Crest_VelocityXTarget");
+ public static readonly int s_VelocityYSource = Shader.PropertyToID("_Crest_VelocityYSource");
+ public static readonly int s_VelocityYTarget = Shader.PropertyToID("_Crest_VelocityYTarget");
+ public static readonly int s_MaskSource = Shader.PropertyToID("_Crest_MaskSource");
+ public static readonly int s_MaskTarget = Shader.PropertyToID("_Crest_MaskTarget");
+ public static readonly int s_LevelSource = Shader.PropertyToID("_Crest_LevelSource");
+
+ // External
+ public static readonly int s_Height = Shader.PropertyToID("_Crest_Height");
+ public static readonly int s_GroundHeight = Shader.PropertyToID("_Crest_GroundHeight");
+ public static readonly int s_VelocityX = Shader.PropertyToID("_Crest_VelocityX");
+ public static readonly int s_VelocityY = Shader.PropertyToID("_Crest_VelocityY");
+
+ public static readonly int s_ShapeTarget = Shader.PropertyToID("_Crest_ShapeTarget");
+ public static readonly int s_LevelTarget = Shader.PropertyToID("_Crest_LevelTarget");
+ public static readonly int s_FlowTarget = Shader.PropertyToID("_Crest_FlowTarget");
+ public static readonly int s_FoamTarget = Shader.PropertyToID("_Crest_FoamTarget");
+
+ public static readonly int s_Temporary0 = Shader.PropertyToID("_Crest_Temporary0");
+ public static readonly int s_Temporary1 = Shader.PropertyToID("_Crest_Temporary1");
+ }
+
+ static readonly List s_Instances = new();
+
+ internal static ShallowWaterSimulation Get(Rect rect)
+ {
+ foreach (var instance in s_Instances)
+ {
+ // Return first.
+ if (instance.Rect.Overlaps(rect)) return instance;
+ }
+
+ return null;
+ }
+
+ [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
+ static void OnDomainReload()
+ {
+ s_Instances.Clear();
+ }
+
+ internal int Resolution { get; private set; } = -1;
+ float _ActualTexelSize;
+
+ // The final height to output (including blur).
+ internal RenderTexture _Height0;
+ // Keeps track of height data. Becomes the source for the next frame.
+ internal RenderTexture _Height1;
+ internal RenderTexture _VelocityX;
+ internal RenderTexture _VelocityY;
+ internal RenderTexture _Mask;
+ internal RenderTexture _GroundHeight;
+ internal RenderTexture _WaterLevel;
+
+ CommandBuffer _CommandBuffer;
+
+ ComputeShader _ComputeShader;
+ int _KernelInitialize;
+ int _KernelInitializeGroundHeight;
+ int _KernelAdvect;
+ int _KernelUpdateHeight;
+ int _KernelHeightOvershootReduction;
+ int _KernelUpdateVelocity;
+ int _KernelBlurHeight;
+ int _KernelBlur;
+ int _KernelMaskEdge;
+ int _KernelExpandEdge;
+ int _KernelFinalizeHeight;
+ int _KernelInjectShape;
+ int _KernelInjectLevel;
+ int _KernelInjectFoam;
+ int _KernelInjectFlow;
+ int _KernelBakeFoam;
+ int _KernelBakeFlow;
+ int _KernelBakeLevel;
+
+ float _TimeToSimulate = 0f;
+ bool _FirstUpdate = true;
+ bool _UpdateGroundHeight;
+ Vector3 _PreviousOrigin;
+ Vector2Int _PreviousTexel;
+ internal DepthProbe _DepthProbe;
+ float _Weight = 1f;
+#pragma warning disable CS0414
+ bool _Allocated;
+#pragma warning restore CS0414
+
+ internal ShallowWaterSimulationInjection DisplacementTarget => _InjectShape;
+ internal bool Movable => _Placement != Placement.Fixed;
+
+ // Currently sim will be placed _depth below global sea level
+ internal Vector3 Origin
+ {
+ get
+ {
+ var result = transform.position;
+
+ var water = WaterRenderer.Instance;
+
+ if (_Placement == Placement.Viewpoint && water != null)
+ {
+ result = water.Viewpoint.position.XNZ(transform.position.y);
+ }
+
+ if (Movable)
+ {
+ result.x = Mathf.Round(result.x / _ActualTexelSize) * _ActualTexelSize;
+ result.z = Mathf.Round(result.z / _ActualTexelSize) * _ActualTexelSize;
+ }
+
+ if (water != null && (!water.LevelLod.Enabled || _PlaceAtSeaLevel))
+ {
+ result.y = water.transform.position.y;
+ }
+
+ // Sim origin is at 'bottom' of domain, water height/ground height are added
+ result.y -= _Depth;
+
+ return result;
+ }
+ }
+
+ void UpdateResolution()
+ {
+ Resolution = Mathf.CeilToInt(_Width / _TexelSize);
+ Resolution = Mathf.Min(Resolution, _MaximumResolution);
+ _ActualTexelSize = _Width / Resolution;
+ }
+
+ void Allocate()
+ {
+ if (_Allocated)
+ {
+ return;
+ }
+
+ if (_Mode == ShallowWaterSimulationMode.Baked && !_Debug._AlwaysExecuteSimulation)
+ {
+ return;
+ }
+
+ if (_ComputeShader == null)
+ {
+ _ComputeShader = WaterResources.Instance.Compute._UpdateSWS;
+
+ _KernelInitialize = _ComputeShader.FindKernel("CrestInitialize");
+ _KernelInitializeGroundHeight = _ComputeShader.FindKernel("CrestInitializeGroundHeight");
+ _KernelAdvect = _ComputeShader.FindKernel("CrestAdvect");
+ _KernelUpdateHeight = _ComputeShader.FindKernel("CrestUpdateHeight");
+ _KernelHeightOvershootReduction = _ComputeShader.FindKernel("CrestHeightOvershootReduction");
+ _KernelUpdateVelocity = _ComputeShader.FindKernel("CrestUpdateVelocity");
+ _KernelBlurHeight = _ComputeShader.FindKernel("CrestBlurHeight");
+ _KernelBlur = _ComputeShader.FindKernel("CrestBlur");
+ _KernelMaskEdge = _ComputeShader.FindKernel("CrestMaskEdge");
+ _KernelExpandEdge = _ComputeShader.FindKernel("CrestExpandEdge");
+ _KernelFinalizeHeight = _ComputeShader.FindKernel("CrestFinalizeHeight");
+ _KernelInjectShape = _ComputeShader.FindKernel("CrestInjectShape");
+ _KernelInjectLevel = _ComputeShader.FindKernel("CrestInjectLevel");
+ _KernelInjectFlow = _ComputeShader.FindKernel("CrestInjectFlow");
+ _KernelInjectFoam = _ComputeShader.FindKernel("CrestInjectFoam");
+ _KernelBakeFoam = _ComputeShader.FindKernel("CrestBakeFoam");
+ _KernelBakeFlow = _ComputeShader.FindKernel("CrestBakeFlow");
+ _KernelBakeLevel = _ComputeShader.FindKernel("CrestBakeLevel");
+ }
+
+ if (_SampleDepthProbeDirectly && TryGetComponent(out _DepthProbe))
+ {
+ _DepthProbe.Managed = true;
+ _DepthProbe.Scale = new(_Width, _Width);
+ _DepthProbe.OverridePosition = Movable;
+ }
+
+ // Empty constructer will prevent texture from flipping correctly.
+ var descriptor = new RenderTextureDescriptor(0, 0)
+ {
+ height = Resolution,
+ width = Resolution,
+ dimension = TextureDimension.Tex2D,
+ volumeDepth = 1,
+ enableRandomWrite = true,
+ colorFormat = RenderTextureFormat.RFloat,
+ msaaSamples = 1,
+ mipCount = 2,
+ };
+
+ var mipped = descriptor;
+ mipped.useMipMap = true;
+ mipped.autoGenerateMips = false;
+
+ Helpers.SafeCreateRenderTexture("_CrestGroundHeight", ref _GroundHeight, descriptor);
+ Helpers.SafeCreateRenderTexture("_CrestHeight0", ref _Height0, descriptor);
+ Helpers.SafeCreateRenderTexture("_CrestHeight1", ref _Height1, descriptor);
+ Helpers.SafeCreateRenderTexture("_CrestVelocityX", ref _VelocityX, mipped);
+ Helpers.SafeCreateRenderTexture("_CrestVelocityY", ref _VelocityY, mipped);
+ Helpers.SafeCreateRenderTexture("_CrestMask", ref _Mask, descriptor);
+
+ if (SampleWaterLevelInputsDirectly)
+ {
+ descriptor.enableRandomWrite = false;
+ Helpers.SafeCreateRenderTexture("_Crest_ShallowWaterLevel", ref _WaterLevel, descriptor);
+ }
+
+ _Allocated = true;
+ }
+
+ void Release()
+ {
+ if (_Height0 != null) _Height0.Release();
+ if (_Height1 != null) _Height1.Release();
+ if (_VelocityX != null) _VelocityX.Release();
+ if (_VelocityY != null) _VelocityY.Release();
+ if (_GroundHeight != null) _GroundHeight.Release();
+ if (_Mask != null) _Mask.Release();
+ if (_WaterLevel != null) _WaterLevel.Release();
+ if (_SampleDepthProbeDirectly && _DepthProbe != null) _DepthProbe.Managed = false;
+ _FirstUpdate = true;
+ _Allocated = false;
+ }
+
+ void Destroy()
+ {
+ Helpers.Destroy(_Height0);
+ Helpers.Destroy(_Height1);
+ Helpers.Destroy(_VelocityX);
+ Helpers.Destroy(_VelocityY);
+ Helpers.Destroy(_GroundHeight);
+ Helpers.Destroy(_Mask);
+ }
+
+ ///
+ /// Resets the simulation. Needs to be called after certain property changes.
+ ///
+ /// Whether to also re-populate/re-bake the , if applicable.
+ public void ResetSimulation(bool populateDepthProbe = false)
+ {
+ if (populateDepthProbe && _SampleDepthProbeDirectly && (_DepthProbe != null || TryGetComponent(out _DepthProbe)))
+ {
+ _DepthProbe.Managed = true;
+ _DepthProbe.Scale = new(_Width, _Width);
+ _DepthProbe.OverridePosition = Movable;
+ _DepthProbe.Populate();
+ }
+
+ Release();
+ Allocate();
+ }
+
+ void InitializeSimulation(CommandBuffer buffer, RenderTargetIdentifier xVelocity, RenderTargetIdentifier yVelocity)
+ {
+ // Initialize simulation data - water heights and velocities.
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelInitialize);
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ wrapper.SetTexture(ShaderIDs.s_HeightTarget, _Height1);
+ wrapper.SetTexture(ShaderIDs.s_VelocityXTarget, xVelocity);
+ wrapper.SetTexture(ShaderIDs.s_VelocityYTarget, yVelocity);
+ wrapper.SetTexture(ShaderIDs.s_LevelSource, SampleWaterLevelInputsDirectly ? _WaterLevel : Texture2D.blackTexture);
+ wrapper.Dispatch((_Height1.width + 7) / 8, (_Height1.height + 7) / 8, 1);
+ }
+
+ void Execute(WaterRenderer water, CommandBuffer buffer)
+ {
+#if UNITY_EDITOR
+ if (_Dirty)
+ {
+ return;
+ }
+#endif
+
+ buffer.BeginSample(k_DrawSWS);
+
+ Allocate();
+
+ // Safety first.
+ _TimeStep = Mathf.Max(_TimeStep, 0.001f);
+ // Compute substeps.
+ _TimeToSimulate += water.DeltaTime;
+ var steps = _TimeToSimulate > 0f ? Mathf.CeilToInt(_TimeToSimulate / _TimeStep) : 0;
+ _TimeToSimulate -= steps * _TimeStep;
+
+ var xVelocityTarget = new RenderTargetIdentifier(_VelocityX);
+ var yVelocityTarget = new RenderTargetIdentifier(_VelocityY);
+
+ var origin = Origin;
+
+ // NOTE: Initialisation of everything happens in update because it requires Crest to be initialised for
+ // sea floor depth and numerous other state.
+ if (_FirstUpdate)
+ {
+ _PreviousOrigin = origin;
+ _PreviousTexel = new
+ (
+ Mathf.RoundToInt(_PreviousOrigin.x * (_GroundHeight.width / _Width)),
+ Mathf.RoundToInt(_PreviousOrigin.z * (_GroundHeight.height / _Width))
+ );
+
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, 0);
+ wrapper.SetInteger(Crest.ShaderIDs.s_Resolution, _GroundHeight.width);
+ wrapper.SetVector(ShaderIDs.s_DomainOrigin, origin);
+ wrapper.SetFloat(ShaderIDs.s_DomainWidth, _Width);
+ wrapper.SetFloat(ShaderIDs.s_TexelSize, _ActualTexelSize);
+ wrapper.SetFloat(ShaderIDs.s_AddAdditionalWater, Mathf.Max(0f, _AdditionalWater));
+ wrapper.SetBoolean(ShaderIDs.s_InjectLevel, _InjectShape == ShallowWaterSimulationInjection.Level);
+ wrapper.SetBoolean(ShaderIDs.s_SampleFromLevelInputs, SampleWaterLevelInputsDirectly);
+
+ if (SampleWaterLevelInputsDirectly)
+ {
+ RenderLocalWaterLevel(water);
+ }
+
+ PopulateGroundHeight(buffer);
+
+ InitializeSimulation(buffer, xVelocityTarget, yVelocityTarget);
+
+ _FirstUpdate = false;
+ }
+
+ // Set once per frame properties.
+ {
+ // Initialize property wrapper.
+ // Use any kernel as the below value types don't require a kernel.
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, 0);
+
+ var resolution = _GroundHeight.width;
+
+ wrapper.SetInteger(Crest.ShaderIDs.s_Resolution, resolution);
+ wrapper.SetFloat(ShaderIDs.s_SimulationDeltaTime, _TimeStep);
+ wrapper.SetFloat(ShaderIDs.s_DomainWidth, _Width);
+ wrapper.SetFloat(ShaderIDs.s_DrainWaterAtBoundaries, _DrainWaterAtBoundaries);
+ wrapper.SetFloat(ShaderIDs.s_Evaporation, _Evaporation);
+ wrapper.SetFloat(ShaderIDs.s_Friction, _Friction);
+ wrapper.SetFloat(ShaderIDs.s_MaximumVelocity, _CourantNumber * _ActualTexelSize / _TimeStep);
+ wrapper.SetFloat(ShaderIDs.s_TexelSize, _ActualTexelSize);
+ wrapper.SetFloat(ShaderIDs.s_BlendPushUpStrength, _InjectShape == ShallowWaterSimulationInjection.Waves ? _BlendPushUpStrength : 1f);
+ wrapper.SetVector(ShaderIDs.s_DomainOrigin, origin);
+
+ wrapper.SetBoolean(ShaderIDs.s_MacCormackAdvection, !_Debug._DisableStabilityImprovements && !_Debug._DisableMacCormackScheme);
+ wrapper.SetBoolean(ShaderIDs.s_MacCormackAdvectionForHeight, !_Debug._DisableStabilityImprovements && !_Debug._DisableMacCormackSchemeForHeight);
+ wrapper.SetBoolean(ShaderIDs.s_UpwindHeight, !_Debug._DisableStabilityImprovements && !_Debug._DisableUpwindHeight);
+ wrapper.SetBoolean(ShaderIDs.s_DepthLimiter, !_Debug._DisableStabilityImprovements && !_Debug._DisableDepthLimiter);
+ wrapper.SetFloat(ShaderIDs.s_OvershootReductionStrength, _OvershootReductionStrength);
+ }
+
+ // Create temporaries for velocity and anything else after steps.
+ var temporary0 = new RenderTargetIdentifier(ShaderIDs.s_Temporary0);
+ var temporary1 = new RenderTargetIdentifier(ShaderIDs.s_Temporary1);
+ var xVelocitySource = temporary0;
+ var yVelocitySource = temporary1;
+
+ var move = Movable && _PreviousOrigin != origin;
+
+ if (move || _DynamicSeabed || _UpdateGroundHeight)
+ {
+ // Populate ground height every frame to allow dynamic scene.
+ PopulateGroundHeight(buffer);
+ }
+
+ if (move || steps > 0)
+ {
+ // No need to clear, as overwritten (Initialize or Advect).
+ buffer.GetTemporaryRT(ShaderIDs.s_Temporary0, _GroundHeight.descriptor);
+ buffer.GetTemporaryRT(ShaderIDs.s_Temporary1, _GroundHeight.descriptor);
+ }
+
+ if (move)
+ {
+ (_Height0, _Height1) = (_Height1, _Height0);
+ (xVelocitySource, xVelocityTarget, yVelocitySource, yVelocityTarget) = (xVelocityTarget, xVelocitySource, yVelocityTarget, yVelocitySource);
+
+ // Initialize temporary textures so revived areas has water.
+ InitializeSimulation(buffer, xVelocityTarget, yVelocityTarget);
+
+ var texel = new Vector2Int
+ (
+ Mathf.RoundToInt(origin.x * (_GroundHeight.width / _Width)),
+ Mathf.RoundToInt(origin.z * (_GroundHeight.height / _Width))
+ );
+
+ var offset = texel - _PreviousTexel;
+
+ var source = new RectInt
+ (
+ Mathf.Clamp(offset.x, 0, _Height1.width - 1),
+ Mathf.Clamp(offset.y, 0, _Height1.height - 1),
+ Mathf.Clamp(_Height1.width - Mathf.Abs(offset.x), 0, _Height1.width),
+ Mathf.Clamp(_Height1.height - Mathf.Abs(offset.y), 0, _Height1.height)
+ );
+
+ var target = new RectInt
+ (
+ Mathf.Clamp(-offset.x, 0, _Height1.width - 1),
+ Mathf.Clamp(-offset.y, 0, _Height1.height - 1),
+ source.width,
+ source.height
+ );
+
+ if (source.width > 0 && source.height > 0)
+ {
+ // Swapped. So copying height source (without blur etc).
+ buffer.CopyTexture(_Height0, 0, 0, source.x, source.y, source.width, source.height, _Height1, 0, 0, target.x, target.y);
+ buffer.CopyTexture(xVelocitySource, 0, 0, source.x, source.y, source.width, source.height, xVelocityTarget, 0, 0, target.x, target.y);
+ buffer.CopyTexture(yVelocitySource, 0, 0, source.x, source.y, source.width, source.height, yVelocityTarget, 0, 0, target.x, target.y);
+ }
+
+ // Move completed!
+ _PreviousOrigin = origin;
+ _PreviousTexel = texel;
+ }
+
+ // Nothing to do.
+ if (!move && (steps <= 0 || _Debug._SkipUpdate))
+ {
+ buffer.EndSample(k_DrawSWS);
+ return;
+ }
+
+ for (var i = 0; i < steps; i++)
+ {
+ // Each stage block should leave latest state in "Target" buffer.
+
+ // Advect
+ if (!_Debug._SkipAdvect)
+ {
+ (xVelocitySource, xVelocityTarget, yVelocitySource, yVelocityTarget) = (xVelocityTarget, xVelocitySource, yVelocityTarget, yVelocitySource);
+
+ if (!_Debug._SkipAdvectHeights)
+ {
+ (_Height1, _Height0) = (_Height0, _Height1);
+ }
+
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelAdvect);
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, _Height0);
+ wrapper.SetTexture(ShaderIDs.s_HeightTarget, _Height1);
+ wrapper.SetTexture(ShaderIDs.s_VelocityXSource, xVelocitySource);
+ wrapper.SetTexture(ShaderIDs.s_VelocityXTarget, xVelocityTarget);
+ wrapper.SetTexture(ShaderIDs.s_VelocityYSource, yVelocitySource);
+ wrapper.SetTexture(ShaderIDs.s_VelocityYTarget, yVelocityTarget);
+ wrapper.Dispatch((_Height1.width + 7) / 8, (_Height1.height + 7) / 8, _Debug._SkipAdvectHeights ? 2 : 3);
+ }
+
+ // Update H
+ if (!_Debug._SkipUpdateHeight)
+ {
+ (_Height0, _Height1) = (_Height1, _Height0);
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelUpdateHeight);
+ wrapper.SetTexture(ShaderIDs.s_VelocityXSource, xVelocityTarget);
+ wrapper.SetTexture(ShaderIDs.s_VelocityYSource, yVelocityTarget);
+ wrapper.SetTexture(ShaderIDs.s_MaskSource, _Mask);
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, _Height0);
+ wrapper.SetTexture(ShaderIDs.s_HeightTarget, _Height1);
+ wrapper.SetTexture(ShaderIDs.s_LevelSource, SampleWaterLevelInputsDirectly ? _WaterLevel : Texture2D.blackTexture);
+ wrapper.Dispatch((_Height1.width + 7) / 8, (_Height1.height + 7) / 8, 1);
+ }
+
+ // H overshoot reduction
+ if (!_Debug._DisableOvershootReduction)
+ {
+ (_Height0, _Height1) = (_Height1, _Height0);
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelHeightOvershootReduction);
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, _Height0);
+ wrapper.SetTexture(ShaderIDs.s_HeightTarget, _Height1);
+ wrapper.Dispatch((_Height1.width + 7) / 8, (_Height1.height + 7) / 8, 1);
+ }
+
+ // Update vels
+ if (!_Debug._SkipUpdateVelocities)
+ {
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelUpdateVelocity);
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, _Height1);
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ wrapper.SetTexture(ShaderIDs.s_VelocityXTarget, xVelocityTarget);
+ wrapper.SetTexture(ShaderIDs.s_VelocityYTarget, yVelocityTarget);
+ wrapper.Dispatch((_Height1.width + 7) / 8, (_Height1.height + 7) / 8, 1);
+ }
+ }
+
+ //
+ // Post-Steps
+ //
+
+ if (!_Debug._SkipUpdateVelocities)
+ {
+ if (xVelocityTarget != _VelocityX)
+ {
+ buffer.CopyTexture(xVelocityTarget, 0, 0, _VelocityX, 0, 0);
+ buffer.CopyTexture(yVelocityTarget, 0, 0, _VelocityY, 0, 0);
+ }
+
+ // This is important. Without this, there is aliasing in the injected vels which, in collaboration
+ // with the flow in the combine pass which has large period, makes annoying pops. Perhaps an
+ // alternative would be to just not add flow from SWS to big cascades. I tried something like this
+ // and it did not seem to help for me, so going with this.
+ buffer.GenerateMips(_VelocityX);
+ buffer.GenerateMips(_VelocityY);
+ }
+
+ // Blur H postprocess to smooth out render data - only needs to be done once after any simulation updates
+ if (_BlurShapeForRender)
+ {
+ BlurHeight(buffer);
+ }
+
+ if (_WaterEdgeMargin)
+ {
+ ExpandEdge(buffer, _WaterEdgeMarginWidth, _BlurShapeForRender);
+ }
+ else
+ {
+ // Finalize height by adding ground, origin etc similar to Expand Edge kernel.
+
+ var source = new RenderTargetIdentifier(_Height1);
+ var target = new RenderTargetIdentifier(_Height0);
+
+ if (_BlurShapeForRender)
+ {
+ source = target;
+ target = temporary0;
+ }
+
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelFinalizeHeight);
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, source);
+ wrapper.SetTexture(ShaderIDs.s_HeightTarget, target);
+ wrapper.Dispatch((_Height0.width + 7) / 8, (_Height0.height + 7) / 8, 1);
+
+ if (_BlurShapeForRender)
+ {
+ buffer.CopyTexture(target, _Height0);
+ }
+ }
+
+ buffer.ReleaseTemporaryRT(ShaderIDs.s_Temporary0);
+ buffer.ReleaseTemporaryRT(ShaderIDs.s_Temporary1);
+
+ buffer.EndSample("SWS");
+ }
+
+ void BlurHeight(CommandBuffer buffer)
+ {
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelBlurHeight);
+
+ // Cheekily write to H0, but dont flip. This is a temporary result purely for rendering.
+ // Next update will flip and overwrite this.
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, _Height1);
+ wrapper.SetTexture(ShaderIDs.s_HeightTarget, _Height0);
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ wrapper.Dispatch((_Height0.width + 7) / 8, (_Height0.height + 7) / 8, 1);
+ }
+
+ void ExpandEdge(CommandBuffer buffer, int iterations, bool blurred)
+ {
+ // This will always be available.
+ var id = ShaderIDs.s_Temporary0;
+
+ // Expand edge is performed on the final output (including blur).
+ var source = new RenderTargetIdentifier(blurred ? _Height0 : _Height1);
+ var target = new RenderTargetIdentifier(id);
+
+ // Mask above ground water.
+ {
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelMaskEdge);
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, source);
+ wrapper.SetTexture(ShaderIDs.s_HeightTarget, target);
+ wrapper.Dispatch((_Height0.width + 7) / 8, (_Height0.height + 7) / 8, 1);
+ }
+
+ // Height0 is the final target so always use it for ping-pong.
+ source = new RenderTargetIdentifier(_Height0);
+
+ // Expand edge.
+ {
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelExpandEdge);
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ for (var i = 0; i < iterations; i++)
+ {
+ (source, target) = (target, source);
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, source);
+ wrapper.SetTexture(ShaderIDs.s_HeightTarget, target);
+ wrapper.Dispatch((_Height0.width + 7) / 8, (_Height0.height + 7) / 8, 1);
+ }
+ }
+
+ if (target == id)
+ {
+ buffer.CopyTexture(id, _Height0);
+ }
+ }
+
+ void PopulateGroundHeight(CommandBuffer buffer)
+ {
+ var wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelInitializeGroundHeight);
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightTarget, _GroundHeight);
+ wrapper.SetTexture(ShaderIDs.s_MaskTarget, _Mask);
+ wrapper.SetFloat(ShaderIDs.s_ShallowMinimumDepth, _BlendDepthRange.x);
+ wrapper.SetFloat(ShaderIDs.s_ShallowMaximumDepth, _BlendDepthRange.y);
+ wrapper.SetBoolean(ShaderIDs.s_SampleFromDepthProbe, _SampleDepthProbeDirectly);
+
+ if (_SampleDepthProbeDirectly && _DepthProbe != null)
+ {
+ _DepthProbe.Bind(wrapper);
+ }
+ else
+ {
+ wrapper.SetTexture(DepthProbe.ShaderIDs.s_DepthProbe, Texture2D.blackTexture);
+ }
+
+ wrapper.Dispatch((_GroundHeight.width + 7) / 8, (_GroundHeight.height + 7) / 8, 1);
+
+ // Blur simulation mask.
+ if (_BlurMaskIterations > 0 && _InjectShape == ShallowWaterSimulationInjection.Waves)
+ {
+ var temporary = ShaderIDs.s_Temporary0;
+ // No need to clear, as overwritten.
+ buffer.GetTemporaryRT(ShaderIDs.s_Temporary0, _Mask.descriptor);
+ var source = new RenderTargetIdentifier(_Mask);
+ var target = new RenderTargetIdentifier(temporary);
+
+ wrapper = new(buffer, _ComputeShader, _KernelBlur);
+ for (var i = 0; i < _BlurMaskIterations; i++)
+ {
+ wrapper.SetTexture(ShaderIDs.s_MaskSource, source);
+ wrapper.SetTexture(ShaderIDs.s_MaskTarget, target);
+ (source, target) = (target, source);
+
+ wrapper.Dispatch((_Mask.width + 7) / 8, (_Mask.height + 7) / 8, 1);
+ }
+
+ buffer.ReleaseTemporaryRT(temporary);
+ }
+
+
+ _UpdateGroundHeight = false;
+ }
+
+ internal void SetUniforms(Material material)
+ {
+ material.SetTexture(ShaderIDs.s_GroundHeight, _GroundHeight);
+ material.SetTexture(ShaderIDs.s_MaskSource, _Mask);
+ // If blurring is enabled, apply the blurred height which was put into H0 until next frame overwrites
+ material.SetTexture(ShaderIDs.s_Height, _Height1);
+ material.SetTexture(ShaderIDs.s_VelocityX, _VelocityX);
+ material.SetTexture(ShaderIDs.s_VelocityY, _VelocityY);
+
+ material.SetVector(ShaderIDs.s_DomainOrigin, Origin);
+ material.SetFloat(ShaderIDs.s_DomainWidth, Width);
+ }
+
+
+ //
+ // Input / Behaviour
+ //
+
+ // ILodInput
+ bool Enabled
+ {
+ get
+ {
+ var compute = WaterResources.Instance.Compute;
+ var disabled = _Mode != ShallowWaterSimulationMode.Baked
+ ? _ComputeShader == null || _Weight <= 0f
+ || _SampleDepthProbeDirectly && _DepthProbe == null
+ : compute._LevelTexture == null
+ || _InjectFlow && compute._FlowTexture == null
+ || _InjectFoam && compute._FoamTexture == null;
+ return !disabled;
+ }
+ }
+
+ internal Rect Rect => new(Origin.XZ() - new Vector2(_Width, _Width) * 0.5f, new Vector2(_Width, _Width));
+
+ private protected override void Initialize()
+ {
+ base.Initialize();
+
+ UpdateResolution();
+
+ _Input ??= new(this);
+
+ Allocate();
+
+ // Register injectors.
+#if !UNITY_EDITOR
+ if (_InjectShape == ShallowWaterSimulationInjection.Waves)
+#endif
+ {
+ ILodInput.Attach(_Input, AnimatedWavesLod.s_Inputs);
+ }
+#if !UNITY_EDITOR
+ else
+#endif
+ {
+ ILodInput.Attach(_Input, LevelLod.s_Inputs);
+ }
+
+
+ ILodInput.Attach(_Input, FlowLod.s_Inputs);
+ ILodInput.Attach(_Input, FoamLod.s_Inputs);
+
+#if CREST_DEBUG
+ if (_Debug._ShowSimulationDataInScene != DebugFields.SimulationData.None)
+ {
+ ILodInput.Attach(_Input, ClipLod.s_Inputs);
+ }
+#endif
+
+ s_Instances.Remove(this);
+ s_Instances.Add(this);
+ }
+
+ private protected override void OnDisable()
+ {
+ base.OnDisable();
+
+ // If scene reload is disabled then OnDestroy is skipped.
+ if (!Application.isPlaying)
+ {
+ Release();
+ }
+
+ ILodInput.Detach(_Input, AnimatedWavesLod.s_Inputs);
+ ILodInput.Detach(_Input, LevelLod.s_Inputs);
+ ILodInput.Detach(_Input, FlowLod.s_Inputs);
+ ILodInput.Detach(_Input, FoamLod.s_Inputs);
+
+#if CREST_DEBUG
+ if (_Debug._ShowSimulationDataInScene != DebugFields.SimulationData.None)
+ {
+ ILodInput.Detach(_Input, ClipLod.s_Inputs);
+ }
+#endif
+
+ s_Instances.Remove(this);
+ }
+
+ void OnDestroy()
+ {
+ Release();
+ Destroy();
+ }
+
+ private protected override System.Action OnUpdateMethod => OnUpdate;
+ void OnUpdate(WaterRenderer water)
+ {
+ Culling(water);
+
+ // Runs before Execute. Overrides DepthProbe.Start data.
+ // Dynamic Seabed will execute the DepthProbe unlike when Fixed.
+ if (Movable && _SampleDepthProbeDirectly && _DepthProbe != null && (_DynamicSeabed || _PreviousOrigin != Origin))
+ {
+ _DepthProbe.Position = Origin;
+ _DepthProbe.Scale = new(_Width, _Width);
+ _DepthProbe.Populate();
+ }
+
+ if (Enabled && _MaximumDisplacementVertical > 0f)
+ {
+ water.ReportMaximumDisplacement(0f, _MaximumDisplacementVertical, 0f);
+ }
+
+#if UNITY_EDITOR
+ if (!Movable && transform.hasChanged && !_FirstUpdate)
+ {
+ RequestDelayedReset(populateDepthProbe: true);
+ }
+ else if (_Dirty)
+ {
+ _DirtyTime -= Time.deltaTime;
+
+ if (_DirtyTime <= 0f)
+ {
+ ResetSimulation(_DirtyDepthProbe);
+ _Dirty = false;
+ _DirtyDepthProbe = false;
+ }
+ }
+#endif
+ }
+
+ private protected override System.Action OnLateUpdateMethod => OnLateUpdate;
+ void OnLateUpdate(WaterRenderer water)
+ {
+ transform.hasChanged = false;
+ }
+
+ private protected override System.Action OnEnableMethod => Culling;
+ void Culling(WaterRenderer water)
+ {
+ if (_EnableDistanceCulling && _InjectShape != ShallowWaterSimulationInjection.Level && Placement == Placement.Fixed)
+ {
+ var cullRadius = _Width * 0.5f + _CullDistance;
+ var offset = water.Viewpoint.position - transform.position;
+ var culled = !(offset.sqrMagnitude < cullRadius * cullRadius);
+
+ // Transition to culled state.
+ _Weight += Time.deltaTime * _CullTransitionSpeed * (culled ? -1f : 1f);
+ _Weight = Mathf.Clamp01(_Weight);
+
+ if (_Allocated && _Weight <= 0f)
+ {
+ Release();
+ }
+ }
+ else
+ {
+ _Weight = 1f;
+ }
+ }
+
+ void RenderLocalWaterLevel(WaterRenderer water)
+ {
+ _CommandBuffer ??= new();
+ _CommandBuffer.Clear();
+
+ // Parameters override RTI values:
+ // https://docs.unity3d.com/ScriptReference/Rendering.CommandBuffer.SetRenderTarget.html
+ _CommandBuffer.SetRenderTarget(_WaterLevel, 0, CubemapFace.Unknown, 0);
+ _CommandBuffer.ClearRenderTarget(false, true, Color.black);
+
+ // This will work for CG but not for HDRP hlsl files.
+ var scale = _Width * 0.5f;
+ _CommandBuffer.SetViewProjectionMatrices
+ (
+ WaterRenderer.CalculateViewMatrixFromSnappedPositionRHS(Origin),
+ // 20000 = above + below sea level.
+ Matrix4x4.Ortho(-scale, scale, -scale, scale, 1f, 20000f)
+ );
+
+ var drawn = false;
+
+ foreach (var draw in LevelLod.s_Inputs)
+ {
+ var input = draw.Value;
+ if (!input.Enabled) continue;
+ // Skip water level input from this SWS.
+ if (input == _Input) continue;
+ // Skip compute shaders for now, as we would need an LOD-less kernel.
+ if (input.IsCompute) continue;
+
+ var rect = input.Rect;
+
+ if (rect == Rect.zero || rect.Overlaps(Rect))
+ {
+ input.Draw(water.LevelLod, _CommandBuffer, _WaterLevel, -1, 1f, 0);
+ drawn = true;
+ }
+ }
+
+ if (drawn)
+ {
+ Graphics.ExecuteCommandBuffer(_CommandBuffer);
+ }
+ }
+
+ void Draw(Lod lod, CommandBuffer buffer, RenderTargetIdentifier target, int pass = -1, float weight = 1f, int slices = -1)
+ {
+ PropertyWrapperCompute wrapper;
+ var targetID = Crest.ShaderIDs.s_Target;
+
+ if (lod is AnimatedWavesLod)
+ {
+ if (_InjectShape != ShallowWaterSimulationInjection.Waves)
+ {
+ return;
+ }
+
+ Execute(lod.Water, buffer);
+
+ if (_Debug._SkipInjectShape)
+ {
+ return;
+ }
+
+ wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelInjectShape);
+ targetID = ShaderIDs.s_ShapeTarget;
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ // The finalized height will always be written to zero.
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, _Height0);
+ }
+ else if (lod is LevelLod)
+ {
+ if (_InjectShape != ShallowWaterSimulationInjection.Level)
+ {
+ return;
+ }
+
+ if (_Mode == ShallowWaterSimulationMode.RealTime || _Debug._AlwaysExecuteSimulation)
+ {
+ Execute(lod.Water, buffer);
+ }
+
+ if (_Debug._SkipInjectShape)
+ {
+ return;
+ }
+
+ if (_Mode == ShallowWaterSimulationMode.Baked)
+ {
+ if (_LevelTexture == null) return;
+ wrapper = new PropertyWrapperCompute(buffer, WaterResources.Instance.Compute._LevelTexture, 0);
+ wrapper.SetInteger(Crest.ShaderIDs.s_Blend, (int)LodInputBlend.Maximum);
+ wrapper.SetTexture(Crest.ShaderIDs.s_Texture, _LevelTexture);
+ wrapper.SetKeyword(WaterResources.Instance.Keywords.LevelTextureCatmullRom, false);
+ }
+ else
+ {
+ wrapper = new PropertyWrapperCompute(buffer, _ComputeShader, _KernelInjectLevel);
+ targetID = ShaderIDs.s_LevelTarget;
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ // The finalized height will always be written to zero.
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, _Height0);
+ }
+ }
+ else if (lod is FlowLod)
+ {
+ if (!_InjectFlow)
+ {
+ return;
+ }
+
+ if (_Mode == ShallowWaterSimulationMode.Baked)
+ {
+ if (_FlowTexture == null) return;
+ wrapper = new(buffer, WaterResources.Instance.Compute._FlowTexture, 0);
+ wrapper.SetInteger(Crest.ShaderIDs.s_Blend, (int)LodInputBlend.Additive);
+ wrapper.SetTexture(Crest.ShaderIDs.s_Texture, _FlowTexture);
+ wrapper.SetBoolean(Crest.ShaderIDs.s_NegativeValues, true);
+ }
+ else
+ {
+ // One frame behind as Flow happens before Animated Waves.
+ wrapper = new(buffer, _ComputeShader, _KernelInjectFlow);
+ targetID = ShaderIDs.s_FlowTarget;
+ wrapper.SetTexture(ShaderIDs.s_VelocityXSource, _VelocityX);
+ wrapper.SetTexture(ShaderIDs.s_VelocityYSource, _VelocityY);
+ wrapper.SetFloat(ShaderIDs.s_InjectionStrength, _FlowStrength);
+ }
+ }
+#if CREST_DEBUG
+ else if (lod is ClipLod)
+ {
+ var origin = Origin;
+
+ wrapper = new PropertyWrapperCompute(buffer, WaterResources.Instance.Compute._ClipPrimitive, 0);
+
+ wrapper.SetMatrix(Crest.ShaderIDs.s_Matrix, Matrix4x4.TRS(origin, Quaternion.identity, (Vector3.one * _Width).XNZ(100f)).inverse);
+
+ // For culling.
+ wrapper.SetVector(Crest.ShaderIDs.s_Position, origin);
+ wrapper.SetFloat(Crest.ShaderIDs.s_Diameter, _Width);
+
+ wrapper.SetKeyword(WaterResources.Instance.Keywords.ClipPrimitiveInverted, false);
+ wrapper.SetKeyword(WaterResources.Instance.Keywords.ClipPrimitiveSphere, false);
+ wrapper.SetKeyword(WaterResources.Instance.Keywords.ClipPrimitiveCube, true);
+ wrapper.SetKeyword(WaterResources.Instance.Keywords.ClipPrimitiveRectangle, false);
+ }
+#endif
+ else
+ {
+ if (!_InjectFoam)
+ {
+ return;
+ }
+
+ if (_Mode == ShallowWaterSimulationMode.Baked)
+ {
+ if (_FoamTexture == null) return;
+ wrapper = new(buffer, WaterResources.Instance.Compute._FoamTexture, 0);
+ wrapper.SetTexture(Crest.ShaderIDs.s_Texture, _FoamTexture);
+ wrapper.SetInteger(Crest.ShaderIDs.s_Blend, (int)LodInputBlend.Additive);
+ }
+ else
+ {
+ // It currently does not trigger jacobian foam term. If we added displacement to
+ // SWS waves it would prob help, but the quality of the shape would have to be much
+ // better I guess!
+ wrapper = new(buffer, _ComputeShader, _KernelInjectFoam);
+ targetID = ShaderIDs.s_FoamTarget;
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, _Height1);
+ wrapper.SetTexture(ShaderIDs.s_VelocityXSource, _VelocityX);
+ wrapper.SetTexture(ShaderIDs.s_VelocityYSource, _VelocityY);
+ wrapper.SetFloat(ShaderIDs.s_InjectionStrength, _FoamStrength);
+ }
+ }
+
+ if (_Mode == ShallowWaterSimulationMode.Baked)
+ {
+ wrapper.SetVector(Crest.ShaderIDs.s_TextureSize, Vector2.one * Width);
+ wrapper.SetVector(Crest.ShaderIDs.s_TexturePosition, transform.position.XZ());
+ wrapper.SetVector(Crest.ShaderIDs.s_TextureRotation, new(0, 1));
+ wrapper.SetVector(Crest.ShaderIDs.s_Multiplier, Vector4.one);
+ wrapper.SetFloat(Crest.ShaderIDs.s_FeatherWidth, 0f);
+ wrapper.SetFloat(LodInput.ShaderIDs.s_Weight, 1f);
+ }
+ else
+ {
+ // All require the mask.
+ wrapper.SetTexture(ShaderIDs.s_MaskSource, _Mask);
+ wrapper.SetFloat(LodInput.ShaderIDs.s_Weight, _Weight);
+
+ if (_InjectShape == ShallowWaterSimulationInjection.Level)
+ {
+ wrapper.SetFloat(ShaderIDs.s_MarginWidth, _PaddingWidth);
+ }
+ }
+
+ wrapper.SetTexture(targetID, target);
+
+ var xy = lod.Resolution / Lod.k_ThreadGroupSize;
+ wrapper.Dispatch(xy, xy, slices);
+ }
+
+ Placement GetPlacement()
+ {
+ return _InjectShape == ShallowWaterSimulationInjection.Level ? Placement.Fixed : _Placement;
+ }
+
+ bool GetSampleWaterLevelInputsDirectly()
+ {
+ return _SampleWaterLevelInputsDirectly && _InjectShape == ShallowWaterSimulationInjection.Level;
+ }
+
+ void SetPreset(ShallowWaterSimulationPreset previous, ShallowWaterSimulationPreset current)
+ {
+ if (previous == current) return;
+
+ switch (_Preset)
+ {
+ case ShallowWaterSimulationPreset.Shoreline:
+ _InjectShape = ShallowWaterSimulationInjection.Waves;
+ _Mode = ShallowWaterSimulationMode.RealTime;
+ break;
+ case ShallowWaterSimulationPreset.Stream:
+ _InjectShape = ShallowWaterSimulationInjection.Level;
+ break;
+ }
+ }
+ }
+
+#if UNITY_EDITOR
+ sealed partial class ShallowWaterSimulation
+ {
+ bool _Dirty;
+ bool _DirtyDepthProbe;
+ float _DirtyTime;
+
+ void RequestDelayedReset(bool populateDepthProbe = false)
+ {
+ _Dirty = true;
+ _DirtyTime = 0.125f;
+ _DirtyDepthProbe |= populateDepthProbe;
+ }
+
+ private protected override void Reset()
+ {
+ UpdateResolution();
+
+ base.Reset();
+ }
+
+ ///
+ /// Bake the simulation to a texture. Only works with
+ /// and in the Editor.
+ ///
+ public void Bake()
+ {
+ Undo.RecordObject(this, "Bake Shallow Water Simulation");
+
+ var descriptor = _GroundHeight.descriptor;
+ descriptor.graphicsFormat = GraphicsFormat.R32G32B32A32_SFloat;
+
+ // Bake Level
+ {
+ // Redo post-processing for now instead of continuing where left off as it can get
+ // complicated quickly.
+ var buffer = new CommandBuffer();
+ BlurHeight(buffer);
+ // No need to clear, as overwritten.
+ buffer.GetTemporaryRT(ShaderIDs.s_Temporary0, _GroundHeight.descriptor);
+ ExpandEdge(buffer, Mathf.Max(_WaterEdgeMarginWidth, _WaterEdgeMarginBakedWidth), blurred: true);
+ buffer.ReleaseTemporaryRT(ShaderIDs.s_Temporary0);
+ Graphics.ExecuteCommandBuffer(buffer);
+ buffer.Release();
+
+ var wrapper = new PropertyWrapperComputeStandalone(_ComputeShader, _KernelBakeLevel);
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, _Height0);
+ wrapper.SetFloat(ShaderIDs.s_MarginWidth, _PaddingWidth);
+ BakeTexture(wrapper, descriptor, ShaderIDs.s_LevelBakeTarget, "Level", ref _LevelTexture, isSingleChannel: true);
+ }
+
+ // Bake Foam
+ if (_InjectFoam)
+ {
+ var wrapper = new PropertyWrapperComputeStandalone(_ComputeShader, _KernelBakeFoam);
+ wrapper.SetTexture(ShaderIDs.s_GroundHeightSource, _GroundHeight);
+ wrapper.SetTexture(ShaderIDs.s_HeightSource, _Height1);
+ wrapper.SetTexture(ShaderIDs.s_VelocityXSource, _VelocityX);
+ wrapper.SetTexture(ShaderIDs.s_VelocityYSource, _VelocityY);
+ wrapper.SetFloat(ShaderIDs.s_MarginWidth, _PaddingWidth);
+ wrapper.SetFloat(ShaderIDs.s_InjectionStrength, _FoamStrength);
+ BakeTexture(wrapper, descriptor, ShaderIDs.s_FoamBakeTarget, "Foam", ref _FoamTexture, isSingleChannel: true);
+ }
+
+ // Bake Flow
+ if (_InjectFlow)
+ {
+ var wrapper = new PropertyWrapperComputeStandalone(_ComputeShader, _KernelBakeFlow);
+ wrapper.SetTexture(ShaderIDs.s_VelocityXSource, _VelocityX);
+ wrapper.SetTexture(ShaderIDs.s_VelocityYSource, _VelocityY);
+ wrapper.SetFloat(ShaderIDs.s_InjectionStrength, _FlowStrength);
+ wrapper.SetFloat(ShaderIDs.s_MarginWidth, _PaddingWidth);
+ BakeTexture(wrapper, descriptor, ShaderIDs.s_FlowBakeTarget, "Flow", ref _FlowTexture, format: TextureImporterFormat.RGFloat);
+ }
+
+ _Mode = ShallowWaterSimulationMode.Baked;
+ }
+
+ void BakeTexture
+ (
+ PropertyWrapperComputeStandalone wrapper,
+ RenderTextureDescriptor descriptor,
+ int target,
+ string name,
+ ref Texture2D output,
+ TextureImporterFormat format = TextureImporterFormat.Automatic,
+ bool isSingleChannel = false
+ )
+ {
+#if d_ModuleUnityImageConversion
+ // Write to temporary then copy over as we need UAV access.
+ var temporary = RenderTexture.GetTemporary(descriptor);
+ // Simulation padding must completely overlap water level inputs, or there may be a gap.
+ Helpers.ClearRenderTexture(temporary, Color.clear, depth: false);
+ wrapper.SetTexture(target, temporary);
+ var threads = Resolution / 8;
+ wrapper.Dispatch(threads, threads, 1);
+
+ // Copy texture. CopyTexture needs both to be readable for CPU copies.
+ // https://docs.unity3d.com/ScriptReference/Graphics.CopyTexture.html
+ var texture = new Texture2D(temporary.width, temporary.height, descriptor.graphicsFormat, TextureCreationFlags.None);
+ RenderTexture.active = temporary;
+ texture.ReadPixels(new(0, 0, temporary.width, temporary.height), 0, 0);
+ RenderTexture.active = null;
+
+ var path = AssetDatabase.GetAssetPath(output) ?? "";
+ if (path.Length <= 0) path = $"Assets/ShallowWaterSimulation_{name}_{System.Guid.NewGuid()}.exr";
+
+ System.IO.File.WriteAllBytes(path, texture.EncodeToEXR(Texture2D.EXRFlags.OutputAsFloat));
+ AssetDatabase.ImportAsset(path);
+ Helpers.Destroy(texture);
+ output = AssetDatabase.LoadAssetAtPath(path);
+
+ var importer = AssetImporter.GetAtPath(path) as TextureImporter;
+ importer.textureShape = TextureImporterShape.Texture2D;
+ importer.textureType = isSingleChannel ? TextureImporterType.SingleChannel : TextureImporterType.Default;
+ importer.sRGBTexture = false;
+ importer.alphaSource = TextureImporterAlphaSource.None;
+ importer.mipmapEnabled = false;
+ importer.alphaIsTransparency = false;
+ // Compression will clamp negative values.
+ importer.textureCompression = TextureImporterCompression.Uncompressed;
+ importer.filterMode = FilterMode.Bilinear;
+ importer.wrapMode = TextureWrapMode.Clamp;
+
+ // Importer Settings
+ if (isSingleChannel)
+ {
+ var settings = new TextureImporterSettings();
+ importer.ReadTextureSettings(settings);
+ settings.singleChannelComponent = TextureImporterSingleChannelComponent.Red;
+ importer.SetTextureSettings(settings);
+ format = TextureImporterFormat.RFloat;
+ }
+
+ // Default Platform Settings
+ {
+ var settings = importer.GetDefaultPlatformTextureSettings();
+ settings.format = format;
+ importer.SetPlatformTextureSettings(settings);
+ }
+
+ importer.SaveAndReimport();
+
+ RenderTexture.ReleaseTemporary(temporary);
+#else
+ // The problem is EncodeToEXR. DepthProbe has this without issue likely because the
+ // code is in an editor only assembly.
+ throw new System.NotSupportedException("Crest: Requires the com.unity.modules.imageconversion module. Please enable it.");
+#endif
+ }
+
+ private protected override void OnValidate()
+ {
+ base.OnValidate();
+ UpdateResolution();
+ }
+
+ [@OnChange(skipIfInactive: false)]
+ void OnChange(string propertyPath, object previousValue)
+ {
+ switch (propertyPath)
+ {
+ case nameof(_Mode):
+ if (_SampleDepthProbeDirectly && TryGetComponent(out _DepthProbe))
+ {
+ Undo.RecordObject(_DepthProbe, $"Modified Mode in {gameObject.name}");
+ _DepthProbe.enabled = _Mode == ShallowWaterSimulationMode.RealTime;
+ }
+ break;
+ case nameof(_InjectShape):
+ if (_InjectShape == ShallowWaterSimulationInjection.Waves) _Mode = ShallowWaterSimulationMode.RealTime;
+ break;
+ case nameof(_Preset):
+ SetPreset((ShallowWaterSimulationPreset)previousValue, _Preset);
+ break;
+ }
+
+ if (!isActiveAndEnabled)
+ {
+ return;
+ }
+
+ var water = WaterRenderer.Instance;
+ switch (propertyPath)
+ {
+ case nameof(_SampleDepthProbeDirectly):
+ if (!_SampleDepthProbeDirectly)
+ {
+ if (_DepthProbe != null)
+ {
+ _DepthProbe.Managed = false;
+ _DepthProbe.Populate();
+ }
+
+ _DepthProbe = null;
+ }
+ ResetSimulation(populateDepthProbe: true);
+ break;
+ // Affects initialization, thus needs a reset.
+ case nameof(_AdditionalWater):
+ case nameof(_Depth):
+ case nameof(_MaximumResolution):
+ case nameof(_SampleWaterLevelInputsDirectly):
+ case nameof(_TexelSize):
+ ResetSimulation();
+ break;
+ case nameof(_PlaceAtSeaLevel):
+ if (water != null && transform.position.y != water.SeaLevel) ResetSimulation();
+ break;
+ case nameof(_Placement):
+ if (_SampleDepthProbeDirectly && _DepthProbe != null) _DepthProbe.OverridePosition = Movable;
+ ResetSimulation(populateDepthProbe: true);
+ break;
+ // Needs to allocate if haven't already.
+ case nameof(_Mode):
+ Allocate();
+ break;
+ // Affects waves only, thus updating the ground height is enough.
+ case nameof(_BlendDepthRange):
+ case nameof(_BlurMaskIterations):
+ _UpdateGroundHeight = true;
+ break;
+ // Affects Depth Probe and dynamic control, thus needs delayed reset.
+ case nameof(_Width):
+ if (_Width != (float)previousValue) RequestDelayedReset(populateDepthProbe: true);
+ break;
+#if CREST_DEBUG
+ case nameof(_Debug) + "." + nameof(_Debug._ShowSimulationDataInScene):
+ ILodInput.Detach(_Input, ClipLod.s_Inputs);
+ if (_Debug._ShowSimulationDataInScene != DebugFields.SimulationData.None) ILodInput.Attach(_Input, ClipLod.s_Inputs);
+ break;
+#endif
+ }
+ }
+
+ void OnGUI()
+ {
+ if (_Debug._ShowSimulationData && _Height1 != null)
+ {
+ var s = 200f;
+ var y = 0f;
+ Rect r;
+
+ r = new Rect(200, y, s, s);
+ y += s + 1;
+ GUI.DrawTexture(r, _Height1); GUI.Label(r, _Height1.name);
+
+ r = new Rect(200, y, s, s);
+ y += s + 1;
+ GUI.DrawTexture(r, _VelocityX); GUI.Label(r, _VelocityX.name);
+
+ r = new Rect(200, y, s, s);
+ y += s + 1;
+ GUI.DrawTexture(r, _VelocityY); GUI.Label(r, _VelocityY.name);
+
+ r = new Rect(200, y, s, s);
+ y += s + 1;
+ GUI.DrawTexture(r, _GroundHeight); GUI.Label(r, _GroundHeight.name);
+
+ r = new Rect(200, y, s, s);
+ GUI.DrawTexture(r, _Mask); GUI.Label(r, _Mask.name);
+ }
+ }
+
+#if CREST_DEBUG
+ [UnityEditor.Callbacks.DidReloadScripts]
+ static void ScriptsHasBeenReloaded()
+ {
+ SceneView.duringSceneGui -= DuringSceneGUI;
+ SceneView.duringSceneGui += DuringSceneGUI;
+ }
+
+ static void DuringSceneGUI(SceneView sceneView)
+ {
+ if (Event.current.type == EventType.KeyUp && Event.current.keyCode == KeyCode.KeypadEnter)
+ {
+ var sws = FindFirstObjectByType();
+
+ if (sws != null)
+ {
+ FindFirstObjectByType().ResetSimulation();
+ }
+ }
+ }
+#endif
+ }
+#endif // UNITY_EDITOR
+
+ partial class ShallowWaterSimulation
+ {
+ Input _Input;
+
+ sealed class Input : ILodInput
+ {
+ readonly ShallowWaterSimulation _Input;
+ public Input(ShallowWaterSimulation input) => _Input = input;
+ public bool Enabled => _Input.Enabled;
+ public bool IsCompute => true;
+ // Late queue, but not too late to give opportunity to override.
+ public int Queue => 1000;
+ public int Pass => (int)DisplacementPass.LodIndependent;
+ public Rect Rect => _Input.Rect;
+ public MonoBehaviour Component => _Input;
+ public float Filter(WaterRenderer water, int slice) => 1f;
+ public void Draw(Lod lod, CommandBuffer buffer, RenderTargetIdentifier target, int pass = -1, float weight = 1, int slice = -1) => _Input.Draw(lod, buffer, target, pass, weight, slice);
+ }
+ }
+}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterSimulation.cs.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterSimulation.cs.meta
new file mode 100644
index 0000000..8f215e8
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterSimulation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9a87083040be2a947bf2d5f126a800e4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterVisualizer.cs b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterVisualizer.cs
new file mode 100644
index 0000000..42ac08b
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterVisualizer.cs
@@ -0,0 +1,64 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+using UnityEngine;
+using WaveHarmonic.Crest.Internal;
+
+namespace WaveHarmonic.Crest.ShallowWater
+{
+ ///
+ /// Debug helper - designed to be used in conjunction with the SWSProbe shader to visualise simulation state.
+ ///
+ [@ExecuteDuringEditMode]
+ [@HelpURL("Packages/ShallowWater/Manual.html")]
+ [AddComponentMenu(Constants.k_MenuPrefixDebug + "Shallow Water Visualizer")]
+ sealed class ShallowWaterVisualizer : ManagedBehaviour
+ {
+ [SerializeField, HideInInspector]
+#pragma warning disable 414
+ int _Version = 0;
+#pragma warning restore 414
+
+ [SerializeField]
+ ShallowWaterSimulation _ShallowWaterSimulation;
+
+ [SerializeField]
+ bool _RenderFinalHeight = true;
+
+ Material _Material;
+
+ static class ShaderIDs
+ {
+ public static readonly int s_RenderFinalHeight = Shader.PropertyToID("_Crest_RenderFinalHeight");
+ }
+
+ private protected override void Initialize()
+ {
+ base.Initialize();
+ _Material = new Material(WaterResources.Instance.Shaders._ShallowWaterSimulationVisualizer);
+ }
+
+ private protected override void OnDisable()
+ {
+ base.OnDisable();
+ Helpers.Destroy(_Material);
+ }
+
+ // Data is ready in LateUpdate.
+ private protected override System.Action OnLateUpdateMethod => OnLateUpdate;
+ void OnLateUpdate(WaterRenderer water)
+ {
+ var sws = _ShallowWaterSimulation;
+ if (sws == null)
+ {
+ var rect = new Rect(transform.position.XZ() - transform.lossyScale.XZ() * 0.5f, transform.lossyScale.XZ());
+ sws = ShallowWaterSimulation.Get(rect);
+ if (sws == null) return;
+ }
+
+ sws.SetUniforms(_Material);
+ _Material.SetBoolean(ShaderIDs.s_RenderFinalHeight, _RenderFinalHeight);
+ Graphics.RenderMesh(new RenderParams(_Material), Helpers.SphereMesh, 0, transform.localToWorldMatrix);
+ }
+ }
+}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterVisualizer.cs.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterVisualizer.cs.meta
new file mode 100644
index 0000000..0271068
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/ShallowWaterVisualizer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f9c803c0f80af174daad4857fd565329
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/WaveHarmonic.Crest.ShallowWater.asmdef b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/WaveHarmonic.Crest.ShallowWater.asmdef
new file mode 100644
index 0000000..8829c3a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/WaveHarmonic.Crest.ShallowWater.asmdef
@@ -0,0 +1,38 @@
+{
+ "name": "WaveHarmonic.Crest.ShallowWater",
+ "rootNamespace": "",
+ "references": [
+ "GUID:7c347618730f5467f86a58f333ce21df",
+ "GUID:125c216bac85c4443bfd4de6bc7eda99",
+ "GUID:056ff2a5b2f124d468c6655552acdca5",
+ "GUID:1ab2a6c2a51cd4b43867788dbaee1a55"
+ ],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [
+ "UNITY_2022_3_OR_NEWER",
+ "d_Crest"
+ ],
+ "versionDefines": [
+ {
+ "name": "com.unity.modules.imageconversion",
+ "expression": "",
+ "define": "d_ModuleUnityImageConversion"
+ },
+ {
+ "name": "com.waveharmonic.crest",
+ "expression": "",
+ "define": "d_Crest"
+ },
+ {
+ "name": "com.waveharmonic.crest",
+ "expression": "5.6.0",
+ "define": "d_CrestValid"
+ }
+ ],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/WaveHarmonic.Crest.ShallowWater.asmdef.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/WaveHarmonic.Crest.ShallowWater.asmdef.meta
new file mode 100644
index 0000000..97e4e8f
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Scripts/WaveHarmonic.Crest.ShallowWater.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 98db37baed0fc4b73a47a9d66f791aae
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders.meta
new file mode 100644
index 0000000..72b3a41
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 90b7d9639f98040128d7bb5db90b5d7e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/ShallowWaterSimulation.compute b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/ShallowWaterSimulation.compute
new file mode 100644
index 0000000..ca7f560
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/ShallowWaterSimulation.compute
@@ -0,0 +1,1116 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+#pragma kernel CrestInitialize
+#pragma kernel CrestInitializeGroundHeight
+#pragma kernel CrestAdvect
+#pragma kernel CrestUpdateHeight
+#pragma kernel CrestHeightOvershootReduction
+#pragma kernel CrestUpdateVelocity
+#pragma kernel CrestBlurHeight
+#pragma kernel CrestBlur
+#pragma kernel CrestMaskEdge
+#pragma kernel CrestExpandEdge
+#pragma kernel CrestFinalizeHeight
+#pragma kernel CrestInjectShape
+#pragma kernel CrestInjectLevel
+#pragma kernel CrestInjectFoam
+#pragma kernel CrestInjectFlow
+#pragma kernel CrestBakeLevel
+#pragma kernel CrestBakeFoam
+#pragma kernel CrestBakeFlow
+
+#include "HLSLSupport.cginc"
+
+#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Macros.hlsl"
+#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Globals.hlsl"
+#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/InputsDriven.hlsl"
+#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Helpers.hlsl"
+#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Cascade.hlsl"
+
+#define FLT_MIN 1.175494351e-38
+
+SamplerState linear_clamp_sampler;
+
+Texture2D _Crest_LevelSource;
+Texture2D _Crest_HeightSource;
+RWTexture2D _Crest_HeightTarget;
+Texture2D _Crest_VelocityXSource;
+RWTexture2D _Crest_VelocityXTarget;
+Texture2D _Crest_VelocityYSource;
+RWTexture2D _Crest_VelocityYTarget;
+Texture2D _Crest_GroundHeightSource;
+RWTexture2D _Crest_GroundHeightTarget;
+Texture2D _Crest_MaskSource;
+RWTexture2D _Crest_MaskTarget;
+
+// Injector Targets.
+RWTexture2DArray _Crest_FoamTarget;
+RWTexture2DArray _Crest_FlowTarget;
+RWTexture2DArray _Crest_ShapeTarget;
+RWTexture2DArray _Crest_LevelTarget;
+
+// Bake Targets.
+RWTexture2D _Crest_FoamBakeTarget;
+RWTexture2D _Crest_FlowBakeTarget;
+RWTexture2D _Crest_LevelBakeTarget;
+
+// Depth Probe.
+Texture2D _Crest_DepthProbe;
+
+CBUFFER_START(CrestBuffer)
+float _Crest_SimDeltaTime;
+
+float _Crest_SimulationDeltaTime;
+float _Crest_DomainWidth;
+float3 _Crest_DomainOrigin;
+uint _Crest_Resolution;
+float _Crest_DrainWaterAtBoundaries;
+float _Crest_Evaporation;
+float _Crest_Friction;
+float _Crest_MaximumVelocity;
+float _Crest_AddAdditionalWater;
+float _Crest_TexelSize;
+
+bool _Crest_MacCormackAdvection;
+bool _Crest_MacCormackAdvectionForHeight;
+bool _Crest_UpwindHeight;
+bool _Crest_DepthLimiter;
+bool _Crest_InjectLevel;
+
+float _Crest_OvershootReductionStrength;
+
+float _Crest_ShallowMinimumDepth;
+float _Crest_ShallowMaximumDepth;
+float _Crest_BlendPushUpStrength;
+
+float _Crest_InjectionStrength;
+float _Crest_InjectionMaximum;
+float _Crest_Weight;
+
+bool _Crest_SampleFromDepthProbe;
+bool _Crest_SampleFromLevelInputs;
+float _Crest_DepthProbeHeightOffset;
+float _Crest_DepthProbeResolution;
+
+float _Crest_MarginWidth;
+CBUFFER_END
+
+m_CrestNameSpace
+
+float2 IdToWorldXZ_H(uint2 id)
+{
+ // H grid is centered
+ return ((id + 0.5) / _Crest_Resolution - 0.5) * _Crest_DomainWidth + _Crest_DomainOrigin.xz;
+}
+float2 IdToWorldXZ_GroundHeight(uint2 id)
+{
+ // H and GroundHeight are aligned
+ return IdToWorldXZ_H(id);
+}
+float2 IdToWorldXZ_Vx(uint2 id)
+{
+ // Vx grid is offset right half a texel
+ return ((id + float2(1.0, 0.5)) / _Crest_Resolution - 0.5) * _Crest_DomainWidth + _Crest_DomainOrigin.xz;
+}
+float2 IdToWorldXZ_Vy(uint2 id)
+{
+ // Vy grid is offset forward half a texel
+ return ((id + float2(0.5, 1.0)) / _Crest_Resolution - 0.5) * _Crest_DomainWidth + _Crest_DomainOrigin.xz;
+}
+
+float2 WorldXZToUv_H(float2 worldXZ)
+{
+ // H grid is centered
+ return (worldXZ - _Crest_DomainOrigin.xz) / _Crest_DomainWidth + 0.5;
+}
+float2 WorldXZToUv_GroundHeight(float2 worldXZ)
+{
+ // Aligned to H
+ return WorldXZToUv_H(worldXZ);
+}
+float2 WorldXZToUv_Vx(float2 worldXZ)
+{
+ // Vx grid is offset right half a texel
+ return (worldXZ - _Crest_DomainOrigin.xz) / _Crest_DomainWidth + 0.5 - float2(0.5 / _Crest_Resolution, 0.0);
+}
+float2 WorldXZToUv_Vy(float2 worldXZ)
+{
+ // Vy grid is offset forward half a texel
+ return (worldXZ - _Crest_DomainOrigin.xz) / _Crest_DomainWidth + 0.5 - float2(0.0, 0.5 / _Crest_Resolution);
+}
+
+float SampleWaterLevel(float2 worldXZ)
+{
+ return _Crest_LevelSource.SampleLevel(linear_clamp_sampler, WorldXZToUv_H(worldXZ), 0.0).x;
+}
+float SampleH(float2 worldXZ)
+{
+ return _Crest_HeightSource.SampleLevel(linear_clamp_sampler, WorldXZToUv_H(worldXZ), 0.0).x;
+}
+float SampleGroundHeight(float2 worldXZ)
+{
+ return _Crest_GroundHeightSource.SampleLevel(linear_clamp_sampler, WorldXZToUv_GroundHeight(worldXZ), 0.0).x;
+}
+float SampleVx0(float2 worldXZ)
+{
+ return _Crest_VelocityXSource.SampleLevel(linear_clamp_sampler, WorldXZToUv_Vx(worldXZ), 0.0).x;
+}
+float SampleVy0(float2 worldXZ)
+{
+ return _Crest_VelocityYSource.SampleLevel(linear_clamp_sampler, WorldXZToUv_Vy(worldXZ), 0.0).x;
+}
+
+
+//
+// Initialize
+//
+
+void Initialize(const uint3 i_ID)
+{
+ const uint2 id = i_ID.xy;
+
+ const float2 worldXZ = IdToWorldXZ_H(id);
+
+ uint slice0, slice1; float alpha;
+ PosToSliceIndices(worldXZ, 0.0, g_Crest_LodCount - 1.0, g_Crest_WaterScale, slice0, slice1, alpha);
+
+ float h = g_Crest_WaterCenter.y;
+ const float weight0 = (1.0 - alpha) * g_Crest_CascadeData[slice0].y;
+ const float weight1 = (1.0 - weight0) * g_Crest_CascadeData[slice1].y;
+
+ if (_Crest_InjectLevel)
+ {
+ if (_Crest_SampleFromLevelInputs)
+ {
+ h += SampleWaterLevel(worldXZ);
+ }
+ else
+ {
+ h +=
+ weight0 * Cascade::MakeLevel(slice0).SampleLevel(worldXZ) +
+ weight1 * Cascade::MakeLevel(slice1).SampleLevel(worldXZ);
+ }
+ }
+
+ h -= _Crest_DomainOrigin.y;
+
+ h = max(0.0, h - SampleGroundHeight(worldXZ));
+
+ h += _Crest_AddAdditionalWater;
+
+ _Crest_HeightTarget[id] = h;
+ _Crest_VelocityXTarget[id] = 0.0;
+ _Crest_VelocityYTarget[id] = 0.0;
+}
+
+// Called first.
+void InitializeGroundHeight(const uint3 i_ID)
+{
+ const uint2 id = i_ID.xy;
+
+ const float2 worldXZ = IdToWorldXZ_GroundHeight(id);
+
+ uint slice0, slice1; float alpha;
+ PosToSliceIndices(worldXZ, 0.0, g_Crest_LodCount - 1.0, g_Crest_WaterScale, slice0, slice1, alpha);
+
+ const float weight0 = (1.0 - alpha) * g_Crest_CascadeData[slice0].y;
+ const float weight1 = (1.0 - weight0) * g_Crest_CascadeData[slice1].y;
+
+ float g;
+ if (_Crest_SampleFromDepthProbe)
+ {
+ // Sample from the Depth Probe directly otherwise we bake in LOD losses.
+ g = _Crest_DepthProbe.SampleLevel(linear_clamp_sampler, id.xy / (float)_Crest_Resolution, 0.0).x;
+ g += _Crest_DepthProbeHeightOffset;
+ }
+ else
+ {
+ g = weight0 * Cascade::MakeDepth(slice0).SampleSceneHeight(worldXZ) +
+ weight1 * Cascade::MakeDepth(slice1).SampleSceneHeight(worldXZ);
+ }
+
+ // LOD losses for height should be acceptable providing height is flat (which it should be).
+ // Bake water level into ground by offsetting ground with water level.
+ if (!_Crest_InjectLevel)
+ {
+ g -=
+ weight0 * Cascade::MakeLevel(slice0).SampleLevel(worldXZ) +
+ weight1 * Cascade::MakeLevel(slice1).SampleLevel(worldXZ);
+ }
+
+ // Mask is directly based off depth at the moment.
+ float depth = g_Crest_WaterCenter.y - g;
+ _Crest_MaskTarget[id] = 1.0 - saturate((depth - _Crest_ShallowMinimumDepth) / _Crest_ShallowMaximumDepth);
+
+ g = max(0.0, g - _Crest_DomainOrigin.y);
+
+ _Crest_GroundHeightTarget[id] = g;
+}
+
+
+//
+// Advect
+//
+
+void Advect(const uint3 id)
+{
+ // Vx
+ if (id.z == 0)
+ {
+ const float2 worldXZ = IdToWorldXZ_Vx(id.xy);
+
+ // Advect forwards to predict advected position
+ const float2 worldXZAdvected_prediction = worldXZ - _Crest_SimulationDeltaTime * float2(SampleVx0(worldXZ), SampleVy0(worldXZ));
+
+ float2 worldXZAdvected = worldXZAdvected_prediction;
+ const float vxSemiLagrangian = SampleVx0(worldXZAdvected);
+ float vxAdvected = vxSemiLagrangian;
+ if (_Crest_MacCormackAdvection)
+ {
+ // Update prediction by advecting backwards to obtain a starting position and using the difference as an error term
+
+ // Advect forwards to predict original position
+ const float2 worldXZ_prediction = worldXZAdvected_prediction + _Crest_SimulationDeltaTime * float2(vxSemiLagrangian, SampleVy0(worldXZAdvected_prediction));
+
+ // Remove half of prediction error to yield average of both
+ worldXZAdvected -= (worldXZ_prediction - worldXZ) / 2.0;
+
+ float vxAdvectedNew = SampleVx0(worldXZAdvected);
+
+ const float4 vxsUsedForFirstSLStep = _Crest_VelocityXSource.Gather(linear_clamp_sampler, WorldXZToUv_Vx(worldXZ));
+ const float vxMin = min(min(vxsUsedForFirstSLStep[0], vxsUsedForFirstSLStep[1]), min(vxsUsedForFirstSLStep[2], vxsUsedForFirstSLStep[3]));
+ const float vxMax = max(max(vxsUsedForFirstSLStep[0], vxsUsedForFirstSLStep[1]), max(vxsUsedForFirstSLStep[2], vxsUsedForFirstSLStep[3]));
+
+ if (vxAdvectedNew >= vxMin && vxAdvectedNew <= vxMax)
+ {
+ vxAdvected = vxAdvectedNew;
+ }
+ }
+
+ // Abs to silence 3571 which for some reason cannot disable with pragma even
+ // HLSLSupport can do exactly that.
+ const float h_vx = SampleH(worldXZAdvected);
+ const float friction = _Crest_Friction * _Crest_SimulationDeltaTime / max(0.001f, pow(abs(h_vx), 1.333333f));
+ vxAdvected -= abs(vxAdvected) * vxAdvected * friction;
+
+ vxAdvected = clamp(vxAdvected, -_Crest_MaximumVelocity, _Crest_MaximumVelocity);
+
+ _Crest_VelocityXTarget[id.xy] = vxAdvected;
+ }
+
+ // Vy
+ if (id.z == 1)
+ {
+ const float2 worldXZ = IdToWorldXZ_Vy(id.xy);
+
+ // Advect forwards to predict advected position
+ const float2 worldXZAdvected_prediction = worldXZ - _Crest_SimulationDeltaTime * float2(SampleVx0(worldXZ), SampleVy0(worldXZ));
+
+ float2 worldXZAdvected = worldXZAdvected_prediction;
+ const float vySemiLagrangian = SampleVy0(worldXZAdvected);
+ float vyAdvected = vySemiLagrangian;
+ if (_Crest_MacCormackAdvection)
+ {
+ // Update prediction by advecting backwards to obtain a starting position and using the difference as an error term
+
+ // Advect forwards to predict original position
+ const float2 worldXZ_prediction = worldXZAdvected_prediction + _Crest_SimulationDeltaTime * float2(SampleVx0(worldXZAdvected_prediction), vySemiLagrangian);
+
+ // Remove half of prediction error to yield average of both
+ worldXZAdvected -= (worldXZ_prediction - worldXZ) / 2.0;
+
+ float vyAdvectedNew = SampleVy0(worldXZAdvected);
+
+ const float4 vysUsedForFirstSLStep = _Crest_VelocityYSource.Gather(linear_clamp_sampler, WorldXZToUv_Vy(worldXZ));
+ const float vyMin = min(min(vysUsedForFirstSLStep[0], vysUsedForFirstSLStep[1]), min(vysUsedForFirstSLStep[2], vysUsedForFirstSLStep[3]));
+ const float vyMax = max(max(vysUsedForFirstSLStep[0], vysUsedForFirstSLStep[1]), max(vysUsedForFirstSLStep[2], vysUsedForFirstSLStep[3]));
+
+ if (vyAdvectedNew >= vyMin && vyAdvectedNew <= vyMax)
+ {
+ vyAdvected = vyAdvectedNew;
+ }
+ }
+
+ // Abs to silence 3571 which for some reason cannot disable with pragma even
+ // HLSLSupport can do exactly that.
+ const float h_vy = SampleH(worldXZAdvected);
+ const float friction = _Crest_Friction * _Crest_SimulationDeltaTime / max(0.001f, pow(abs(h_vy), 1.333333f));
+ vyAdvected -= abs(vyAdvected) * vyAdvected * friction;
+
+ vyAdvected = clamp(vyAdvected, -_Crest_MaximumVelocity, _Crest_MaximumVelocity);
+
+ _Crest_VelocityYTarget[id.xy] = vyAdvected;
+ }
+
+ // H
+ if (id.z == 2)
+ {
+ const float2 worldXZ = IdToWorldXZ_H(id.xy);
+
+ // Advect forwards to predict advected position
+ const float2 worldXZAdvected_prediction = worldXZ - _Crest_SimulationDeltaTime * float2(SampleVx0(worldXZ), SampleVy0(worldXZ));
+
+ float2 worldXZAdvected = worldXZAdvected_prediction;
+ if (_Crest_MacCormackAdvectionForHeight)
+ {
+ // Update prediction by advecting backwards to obtain a starting position and using the difference as an error term
+
+ // Advect forwards to predict original position
+ const float2 worldXZ_prediction = worldXZAdvected_prediction + _Crest_SimulationDeltaTime * float2(SampleVx0(worldXZAdvected_prediction), SampleVy0(worldXZAdvected_prediction));
+
+ // Remove half of prediction error to yield average of both
+ worldXZAdvected -= (worldXZ_prediction - worldXZ) / 2.0;
+ }
+
+ _Crest_HeightTarget[id.xy] = SampleH(worldXZAdvected);
+ }
+}
+
+
+//
+// Update Height
+//
+
+float HeightAdjustment(uint2 id)
+{
+ const float gravity = 9.81f;
+ float hn = _Crest_HeightSource[id + uint2(0, 1)];
+ float hs = _Crest_HeightSource[id - uint2(0, 1)];
+ float he = _Crest_HeightSource[id + uint2(1, 0)];
+ float hw = _Crest_HeightSource[id - uint2(1, 0)];
+ float h_avg = 0.25 * (hn + hs + he + hw);
+ float beta = 2.0;
+ float minThickness = beta * _Crest_TexelSize / (gravity * _Crest_SimulationDeltaTime);
+ return max(0.0, h_avg - minThickness);
+}
+
+void UpdateHeight(const uint3 i_ID)
+{
+ const int2 id = i_ID.xy;
+
+ // Fix height at border to prevent instability.
+ if (i_ID.x == 0 || i_ID.y == 0 || i_ID.x == _Crest_Resolution - 1 || i_ID.y == _Crest_Resolution - 1)
+ {
+ _Crest_HeightTarget[id] = _Crest_HeightSource[id];
+ return;
+ }
+
+ float h = _Crest_HeightSource[id];
+
+ const uint x = id.x;
+ const uint y = id.y;
+
+ const float2 worldXZ = IdToWorldXZ_H(id);
+
+ float pump = 0.0;
+
+ if (h > 0.01)
+ {
+ // Drain water out at boundary of domain.
+ {
+ const float2 offset = abs(id / float(_Crest_Resolution) - 0.5);
+ pump += _Crest_DrainWaterAtBoundaries * smoothstep(0.4, 0.5, max(offset.x, offset.y));
+ }
+
+ // Blend waves into simulation. Pumps water in.
+ {
+ uint slice0, slice1; float alpha;
+ PosToSliceIndices(worldXZ, 0.0, g_Crest_LodCount - 1.0, g_Crest_WaterScale, slice0, slice1, alpha);
+
+ const float weight0 = (1.0 - alpha) * g_Crest_CascadeData[slice0].y;
+ const float weight1 = (1.0 - weight0) * g_Crest_CascadeData[slice1].y;
+
+ float waterY = g_Crest_WaterCenter.y;
+
+ // If injecting to height then ignore waves.
+ if (_Crest_InjectLevel)
+ {
+ if (_Crest_SampleFromLevelInputs)
+ {
+ waterY += SampleWaterLevel(worldXZ);
+ }
+ else
+ {
+ waterY +=
+ weight0 * Cascade::MakeLevel(slice0).SampleLevel(worldXZ) +
+ weight1 * Cascade::MakeLevel(slice1).SampleLevel(worldXZ);
+ }
+ }
+ else
+ {
+ waterY +=
+ weight0 * Cascade::MakeAnimatedWaves(slice0).SampleAnimatedWaves(worldXZ).y +
+ weight1 * Cascade::MakeAnimatedWaves(slice1).SampleAnimatedWaves(worldXZ).y;
+ }
+
+ float simulationY = h + _Crest_DomainOrigin.y + _Crest_GroundHeightSource[id];
+ if (waterY > simulationY)
+ {
+ // This is tricksy. Don't apply forces from waves in deep, but also don't apply in very shallow.
+ // The latter will mean that the SWS is held at sea level instead of being allowed to drop below.
+ // I tried asserting disp.y > somevalue but that led to a whole different set of issues. Therefore
+ // settle for a y=4x(1-x) weight that chooses the mid point of the mask blend. Seems to work.
+ float maskWeight = 1.0;
+ if (!_Crest_InjectLevel)
+ {
+ maskWeight = _Crest_MaskSource[id];
+ maskWeight *= 4.0 * (1.0 - maskWeight);
+ }
+
+ pump += _Crest_BlendPushUpStrength * maskWeight * (waterY - simulationY);
+ }
+ }
+ }
+
+ // Update height based on total flow in minus total flow out.
+ // Prevents wave reflections at domain boundary.
+ float drain = 30.0;
+ float vxp = (x == uint(_Crest_Resolution - 1)) ? drain : _Crest_VelocityXSource[id];
+ float vyp = (y == uint(_Crest_Resolution - 1)) ? drain : _Crest_VelocityYSource[id];
+ float vxm = (x == 0) ? -drain : _Crest_VelocityXSource[uint2(x - 1, y)];
+ float vym = (y == 0) ? -drain : _Crest_VelocityYSource[uint2(x, y - 1)];
+
+ // FIXME: Causes jitters which triggers foam.
+ float hvel;
+ if (_Crest_UpwindHeight)
+ {
+ // Get forward or backward diffs respectively.
+ float h = _Crest_HeightSource[id];
+ float2 hx = vxp <= 0.0
+ ? float2(h, _Crest_HeightSource[id + uint2(1, 0)])
+ : float2(_Crest_HeightSource[id - uint2(1, 0)], h);
+ float2 hy = vyp <= 0.0
+ ? float2(h, _Crest_HeightSource[id + uint2(0, 1)])
+ : float2(_Crest_HeightSource[id - uint2(0, 1)], h);
+
+ if (_Crest_DepthLimiter)
+ {
+ const float h_adj = HeightAdjustment(id);
+ hx -= h_adj;
+ hy -= h_adj;
+ }
+
+ hvel = -(vxp * hx[1] - vxm * hx[0] + vyp * hy[1] - vym * hy[0]) / _Crest_TexelSize;
+ }
+ else
+ {
+ const float dx = (vxp - vxm) / _Crest_TexelSize;
+ const float dy = (vyp - vym) / _Crest_TexelSize;
+ const float divergence = dx + dy;
+
+ if (_Crest_DepthLimiter)
+ {
+ hvel = -(h - HeightAdjustment(id)) * divergence;
+ }
+ else
+ {
+ hvel = -h * divergence;
+ }
+ }
+
+ h += _Crest_SimulationDeltaTime * hvel + pump - _Crest_Evaporation;
+ h = max(h, 0.0);
+
+ // // Dry - force to zero.
+ // if (h < 0.001) h = 0.0;
+
+ _Crest_HeightTarget[id] = h;
+}
+
+
+//
+// Height Overshoot Reduction
+//
+
+void HeightOvershootReduction(const uint3 i_ID)
+{
+ const uint2 id = i_ID.xy;
+
+ float h = _Crest_HeightSource[id];
+
+ if (any(id == 0) || any(id == _Crest_Resolution - 1))
+ {
+ // Don't do this at boundary
+ _Crest_HeightTarget[id] = h;
+ return;
+ }
+
+ float y = _Crest_HeightSource[id] + _Crest_GroundHeightSource[id];
+ float hn = _Crest_HeightSource[id + uint2(1, 0)];
+ float hs = _Crest_HeightSource[id - uint2(1, 0)];
+ float he = _Crest_HeightSource[id + uint2(1, 0)];
+ float hw = _Crest_HeightSource[id - uint2(1, 0)];
+ float yn = hn + _Crest_GroundHeightSource[id + uint2(1, 0)];
+ float ys = hs + _Crest_GroundHeightSource[id - uint2(1, 0)];
+ float ye = he + _Crest_GroundHeightSource[id + uint2(1, 0)];
+ float yw = hw + _Crest_GroundHeightSource[id - uint2(1, 0)];
+
+ float lambdaEdge = 2.0 * _Crest_TexelSize;
+
+ // X axis
+ if ((y - yw) > lambdaEdge && y > ye)
+ {
+ h += _Crest_OvershootReductionStrength * (max(0.0, 0.5 * (h + he)) - h);
+ }
+ if ((y - ye) > lambdaEdge && y > yw)
+ {
+ h += _Crest_OvershootReductionStrength * (max(0.0, 0.5 * (h + hw)) - h);
+ }
+
+ // Z axis
+ if ((y - ys) > lambdaEdge && y > yn)
+ {
+ h += _Crest_OvershootReductionStrength * (max(0.0, 0.5 * (h + hn)) - h);
+ }
+ if ((y - yn) > lambdaEdge && y > ys)
+ {
+ h += _Crest_OvershootReductionStrength * (max(0.0, 0.5 * (h + hs)) - h);
+ }
+
+ _Crest_HeightTarget[id] = h;
+}
+
+
+//
+// Update Velocity
+//
+
+void UpdateVelocity(const uint3 i_ID)
+{
+ const int2 id = i_ID.xy;
+
+ // Clear velocity at border to prevent water leaking.
+ if (i_ID.x == 0 || i_ID.y == 0 || i_ID.x == _Crest_Resolution - 1 || i_ID.y == _Crest_Resolution - 1)
+ {
+ _Crest_VelocityXTarget[id] = 0;
+ _Crest_VelocityYTarget[id] = 0;
+ return;
+ }
+
+ // Height before vel
+ const float2 worldXZ_H0 = IdToWorldXZ_H(id);
+ const float g0 = _Crest_GroundHeightSource[id];
+ const float h0 = _Crest_HeightSource[id];
+
+ const uint x = id.x;
+ const uint y = id.y;
+ const uint xp = min(x + 1, _Crest_Resolution - 1);
+ const uint yp = min(y + 1, _Crest_Resolution - 1);
+
+ const float gravity = 9.81f;
+
+ // Vx
+ {
+ float vx = _Crest_VelocityXTarget[id];
+
+ const float2 worldXZ_H1 = IdToWorldXZ_H(uint2(xp, y));
+ const float g1 = _Crest_GroundHeightSource[uint2(xp, y)];
+ const float h1 = _Crest_HeightSource[uint2(xp, y)];
+
+ const float hdiff = (h1 + g1) - (h0 + g0);
+ //if (fabs(hdiff) > maxDiff) hdiff = sign(hdiff) * maxDiff;
+
+ float accel = -gravity * hdiff / _Crest_TexelSize;
+
+ vx += _Crest_SimulationDeltaTime * accel;
+
+ // Kill velocity if totally dry
+ if (h0 < 0.001 && h1 < 0.001)
+ {
+ vx = 0.0;
+ }
+ else if (accel < 0 && h1 < 0.001)
+ {
+ // Don't produce acceleration from water flowing in from a dry cell
+ vx = 0.0;
+ }
+ else if (accel > 0 && h0 < 0.001)
+ {
+ // Don't produce acceleration from water flowing in from a dry cell
+ vx = 0.0;
+ }
+
+ _Crest_VelocityXTarget[id] = vx;
+
+ if (h0 < 0.001 && h1 < 0.001) _Crest_VelocityXTarget[id] = 0.0;
+ }
+
+ // Vy
+ {
+ float vy = _Crest_VelocityYTarget[id];
+
+ const float2 worldXZ_H1 = IdToWorldXZ_H(uint2(x, yp));
+ const float g1 = _Crest_GroundHeightSource[uint2(x, yp)];
+ const float h1 = _Crest_HeightSource[uint2(x, yp)];
+
+ const float hdiff = (h1 + g1) - (h0 + g0);
+ //if (fabs(hdiff) > maxDiff) hdiff = sign(hdiff) * maxDiff;
+
+ float accel = -gravity * hdiff / _Crest_TexelSize;
+
+ vy += _Crest_SimulationDeltaTime * accel;
+
+ // Kill velocity if totally dry
+ if (h0 < 0.001 && h1 < 0.001)
+ {
+ vy = 0.0;
+ }
+ else if (accel < 0 && h1 < 0.001)
+ {
+ // Don't produce acceleration from water flowing in from a dry cell
+ vy = 0.0;
+ }
+ else if (accel > 0 && h0 < 0.001)
+ {
+ // Don't produce acceleration from water flowing in from a dry cell
+ vy = 0.0;
+ }
+
+ _Crest_VelocityYTarget[id] = vy;
+ }
+}
+
+
+//
+// Blur
+//
+
+void Blur(const uint3 i_ID)
+{
+ const int2 id = i_ID.xy;
+ const int resolution = _Crest_Resolution;
+
+ float result = 0.0;
+ const int radius = 1;
+ float sampleCount = 0.0;
+ for (int y = -radius; y <= radius; y++)
+ {
+ for (int x = -radius; x <= radius; x++)
+ {
+ int2 idx = id + int2(x, y);
+ // Skip pixel if outside. Clamping coordinates produced bad values at edge.
+ if (any(idx < 0) || any(idx >= resolution)) continue;
+ result += _Crest_MaskSource[idx];
+ sampleCount += 1.0;
+ }
+ }
+
+ _Crest_MaskTarget[id] = result / sampleCount;
+}
+
+void BlurHeight(const uint3 i_ID)
+{
+ const int2 id = i_ID.xy;
+
+ float result = 0.0;
+ float twt = 0.0;
+ const int rad = 1;
+
+ float hcenter = _Crest_HeightSource[id];
+ if (hcenter < 0.001)
+ {
+ _Crest_HeightTarget[id] = 0.0;
+ return;
+ }
+
+ for (int y = -rad; y <= rad; y++)
+ {
+ for (int x = -rad; x <= rad; x++)
+ {
+ int2 idx;
+ // Need to cast otherwise load will wrap around at edges.
+ idx.x = clamp(id.x + x, 0, (int)_Crest_Resolution - 1);
+ idx.y = clamp(id.y + y, 0, (int)_Crest_Resolution - 1);
+
+ float h = _Crest_HeightSource[idx];
+ if (h >= 0.001)
+ {
+ result += h + _Crest_GroundHeightSource[idx];
+ twt += 1.0;
+ }
+ }
+ }
+
+ if (twt > 0.0)
+ {
+ float blurredY = result / twt;
+ _Crest_HeightTarget[id] = max(blurredY - _Crest_GroundHeightSource[id], 0.0);
+ }
+ else
+ {
+ _Crest_HeightTarget[id] = hcenter;
+ }
+}
+
+void AddAboveGroundHeight(const uint2 i_Coordinates, const float i_Ground, inout float io_Height, inout float io_Samples)
+{
+ float h = _Crest_HeightSource[i_Coordinates];
+
+ if (h > FLT_MIN)
+ {
+ // Make sure we do not push water through ground.
+ if (h < i_Ground)
+ {
+ io_Height += h;
+ io_Samples += 1.0;
+ }
+ }
+}
+
+void MaskOut(const uint2 i_Coordinates, const float i_HeightBelowGround, inout bool i_Mask)
+{
+ const float h = _Crest_HeightSource[i_Coordinates];
+
+ if (h > 0.0)
+ {
+ const float g = _Crest_GroundHeightSource[i_Coordinates];
+ i_Mask = i_Mask || (i_HeightBelowGround < (h + g));
+ }
+}
+
+void MaskEdge(const uint3 i_ID)
+{
+ const uint2 id = i_ID.xy;
+
+ float h = _Crest_HeightSource[id];
+
+ // Mask above ground height so we do not process it in expand edge.
+ bool mask = h > 0.0;
+
+ // Add ground height to water height to get world height of surface.
+ h += _Crest_GroundHeightSource[id];
+
+ if (!mask)
+ {
+ const int3 dd = int3(1, -1, 0);
+ MaskOut(id + dd.xx, h, mask);
+ MaskOut(id + dd.xy, h, mask);
+ MaskOut(id + dd.xz, h, mask);
+ MaskOut(id + dd.yx, h, mask);
+ MaskOut(id + dd.yy, h, mask);
+ MaskOut(id + dd.yz, h, mask);
+ MaskOut(id + dd.zx, h, mask);
+ MaskOut(id + dd.zy, h, mask);
+ }
+
+ if (mask)
+ {
+ // Move to world space.
+ h += _Crest_DomainOrigin.y;
+ // Make relative to sea level.
+ h -= g_Crest_WaterCenter.y;
+ }
+ else
+ {
+ h = FLT_MIN;
+ }
+
+ _Crest_HeightTarget[id] = h;
+}
+
+void ExpandEdge(const uint3 i_ID)
+{
+ const uint2 id = i_ID.xy;
+ const int3 dd = int3(1, -1, 0);
+
+ float h = _Crest_HeightSource[id];
+
+ if (h > FLT_MIN)
+ {
+ _Crest_HeightTarget[id] = h;
+ return;
+ }
+
+ const float g = _Crest_GroundHeightSource[id] + _Crest_DomainOrigin.y - g_Crest_WaterCenter.y;
+
+ // Add margin inside geometry to prevent rise or drops at intersections.
+
+ float samples = 0.0;
+ h = 0.0;
+
+ AddAboveGroundHeight(id + dd.xx, g, h, samples);
+ AddAboveGroundHeight(id + dd.xy, g, h, samples);
+ AddAboveGroundHeight(id + dd.xz, g, h, samples);
+ AddAboveGroundHeight(id + dd.yx, g, h, samples);
+ AddAboveGroundHeight(id + dd.yy, g, h, samples);
+ AddAboveGroundHeight(id + dd.yz, g, h, samples);
+ AddAboveGroundHeight(id + dd.zx, g, h, samples);
+ AddAboveGroundHeight(id + dd.zy, g, h, samples);
+
+ // Found a height.
+ if (samples > 0.0)
+ {
+ // Includes ground, sea level and origin.
+ h /= samples;
+ }
+
+ _Crest_HeightTarget[id] = h;
+}
+
+void FinalizeHeight(const uint3 i_ID)
+{
+ const uint2 id = i_ID.xy;
+ float h = _Crest_HeightSource[id];
+
+ // Clip doesn't work if ground is below sea level - it will make the water pop back up to sea level/anim waves.
+ // Same for multiplying down alpha blend weight. This does something reasonable - yanks down water when almost dry..
+ h -= 0.1 * (1.0 - saturate(h / 0.02));
+
+ // Add ground height to water height to get world height of surface.
+ h += _Crest_GroundHeightSource[id];
+
+ // Move to world space.
+ h += _Crest_DomainOrigin.y;
+ // Make relative to sea level.
+ h -= g_Crest_WaterCenter.y;
+
+ _Crest_HeightTarget[id] = h;
+}
+
+
+//
+// Injectors
+//
+
+float WaterHeight(float2 i_UV, float i_Current = 0.0)
+{
+ float h = _Crest_HeightSource.SampleLevel(LODData_linear_clamp_sampler, i_UV, 0.0).x;
+
+ // Reject any samples below ground.
+ if (h < 0.001)
+ {
+ // Return the current height to not trigger the curve test.
+ h = i_Current;
+ }
+ else
+ {
+ // Add ground height to water height to get height of surface
+ h += _Crest_GroundHeightSource.SampleLevel(LODData_linear_clamp_sampler, i_UV, 0.0).x;
+ }
+
+ // Silences: shader warning use of potentially uninitialized variable.
+ return h;
+}
+
+float ComputeAlpha(const float2 i_UV)
+{
+ // Domain mask.
+ const float2 offset = abs(i_UV - 0.5);
+ float alpha = smoothstep(0.5, 0.45, max(offset.x, offset.y));
+
+ if (alpha >= 0.0)
+ {
+ // Simulation mask.
+ alpha *= _Crest_MaskSource.SampleLevel(LODData_linear_clamp_sampler, i_UV, 0.0);
+ }
+
+ return alpha;
+}
+
+float ComputeAlphaFromMargin(const float2 i_Position)
+{
+ float alpha = 1.0;
+ float2 position = abs(i_Position - _Crest_DomainOrigin.xz);
+ if (max(position.x, position.y) > (_Crest_DomainWidth.x * 0.5 - _Crest_MarginWidth)) alpha = 0.0;
+ return alpha;
+}
+
+void InjectShape(const uint3 i_ID)
+{
+ const float2 position = Cascade::MakeAnimatedWaves(i_ID.z).IDToWorld(i_ID.xy);
+ const float2 uv = (position - _Crest_DomainOrigin.xz) / _Crest_DomainWidth + 0.5;
+
+ // Over scan to ensure signal continued off the edges which helps at low LODs.
+ if (any(uv != saturate(uv))) return;
+
+ float alpha = _Crest_Weight * ComputeAlpha(uv);
+ if (alpha <= 0.0) return;
+
+ float h = _Crest_HeightSource.SampleLevel(LODData_linear_clamp_sampler, uv, 0.0).x;
+
+ // Power up alpha to bring anim waves further in towards shore.
+ alpha = pow(alpha, 2.0);
+
+ float4 result = _Crest_ShapeTarget[i_ID];
+
+ // Alpha blend.
+ result.xyz *= 1.0 - alpha;
+ result.xyz += float3(0, h * alpha, 0);
+
+ _Crest_ShapeTarget[i_ID] = result;
+}
+
+void InjectLevel(const uint3 i_ID)
+{
+ const float2 position = Cascade::MakeLevel(i_ID.z).IDToWorld(i_ID.xy);
+ const float2 uv = (position - _Crest_DomainOrigin.xz) / _Crest_DomainWidth + 0.5;
+
+ // Over scan to ensure signal continued off the edges which helps at low LODs.
+ if (any(uv != saturate(uv))) return;
+
+ float alpha = _Crest_Weight * ComputeAlphaFromMargin(position);
+ if (alpha <= 0.0) return;
+
+ float h = _Crest_HeightSource.SampleLevel(LODData_linear_clamp_sampler, uv, 0.0).x;
+
+ float result = _Crest_Weight * _Crest_LevelTarget[i_ID];
+
+ // Height is a source of water and should be the minimum height.
+ // The simulation will still ripple over the top which is acceptable.
+ result = max(result, h);
+
+ _Crest_LevelTarget[i_ID] = result;
+}
+
+void InjectFoam(const uint3 i_ID)
+{
+ const float2 position = Cascade::MakeFoam(i_ID.z).IDToWorld(i_ID.xy);
+ const float2 uv = (position - _Crest_DomainOrigin.xz) / _Crest_DomainWidth + 0.5;
+
+ // Over scan to ensure signal continued off the edges which helps at low LODs.
+ if (any(uv != saturate(uv))) return;
+
+ float alpha = _Crest_Weight * (_Crest_InjectLevel ? ComputeAlphaFromMargin(position) : ComputeAlpha(uv));
+ if (alpha <= 0.0) return;
+
+ // Use approximation of max curvature as foam term. Seems to grab leading wave edge alright.
+ const float2 dx = float2(1.0 / _Crest_Resolution, 0.0);
+ const float h = WaterHeight(uv);
+ if (h <= 0.0) return;
+ const float h_xm = WaterHeight(uv - dx.xy, h);
+ const float h_xp = WaterHeight(uv + dx.xy, h);
+ const float h_zm = WaterHeight(uv - dx.yx, h);
+ const float h_zp = WaterHeight(uv + dx.yx, h);
+ const float curvature = max(abs(h_xp + h_xm - 2.0 * h), abs(h_zp + h_zm - 2.0 * h)) / (2.0 * dx.x * _Crest_DomainWidth);
+
+ float foam = 10.0 * curvature;
+
+ // Apply velocity to flow to prevent foam at edges of geometry.
+ const float vx = _Crest_VelocityXSource.SampleLevel(LODData_linear_clamp_sampler, uv, 0.0);
+ const float vy = _Crest_VelocityYSource.SampleLevel(LODData_linear_clamp_sampler, uv, 0.0);
+ foam *= length(float2(vx, vy));
+
+ foam *= alpha;
+
+ // Integrate.
+ foam *= _Crest_SimDeltaTime;
+
+ foam *= _Crest_InjectionStrength;
+
+ _Crest_FoamTarget[i_ID] += foam;
+}
+
+void InjectFlow(const uint3 i_ID)
+{
+ const Cascade cascade = Cascade::MakeFlow(i_ID.z);
+ const float2 position = cascade.IDToWorld(i_ID.xy);
+ const float2 uv = (position - _Crest_DomainOrigin.xz) / _Crest_DomainWidth + 0.5;
+
+ // Over scan to ensure signal continued off the edges which helps at low LODs.
+ if (any(uv != saturate(uv))) return;
+
+ float alpha = _Crest_Weight * (_Crest_InjectLevel ? ComputeAlphaFromMargin(position) : ComputeAlpha(uv));
+ if (alpha <= 0.0) return;
+
+ float mip;
+ {
+ const float3 uv = cascade.IDToUV(i_ID.xy);
+ const float2 dd = float2(cascade._OneOverResolution * 8.0, 0);
+ const float2 dx = cascade.UVToWorld(uv + dd.xyy) - position;
+ const float2 dy = cascade.UVToWorld(uv + dd.yxy) - position;
+ // Calculate the rate of change in x and y directions.
+ const float2 rateOfChange = float2(length(dx.xy), length(dy.xy));
+ mip = log2(max(rateOfChange.x, rateOfChange.y));
+ }
+
+ // These should use mip maps. Without this bad pops ensue from aliasing x combine-pass-flow.
+ const float vx = _Crest_VelocityXSource.SampleLevel(LODData_linear_clamp_sampler, uv, mip);
+ const float vy = _Crest_VelocityYSource.SampleLevel(LODData_linear_clamp_sampler, uv, mip);
+
+ float2 result = _Crest_FlowTarget[i_ID];
+
+ // Alpha blend.
+ result *= 1.0 - alpha;
+ result += float2(vx, vy) * _Crest_InjectionStrength * alpha;
+
+ _Crest_FlowTarget[i_ID] = result;
+}
+
+
+//
+// Baking
+//
+
+// Copy texture. Here because script code path simpler if same for all outputs
+// rather than using CopyTexture.
+void BakeLevel(const uint3 i_ID)
+{
+ const uint2 id = i_ID.xy;
+ _Crest_LevelBakeTarget[id] = _Crest_HeightSource[id];
+}
+
+void BakeFoam(const uint3 i_ID)
+{
+ const uint2 id = i_ID.xy;
+ const float2 uv = id / (float)_Crest_Resolution;
+
+ // Over scan to ensure signal continued off the edges which helps at low LODs.
+ if (any(uv != saturate(uv))) return;
+
+ float alpha = ComputeAlphaFromMargin(IdToWorldXZ_H(id));
+ if (alpha <= 0.0) return;
+
+ // Cannot load texture as curvature is not picked up. Must need interpolation.
+ const float2 dx = float2(1.0 / _Crest_Resolution, 0.0);
+ const float h = WaterHeight(uv);
+ if (h <= 0.0)
+ {
+ _Crest_FoamBakeTarget[id] = 0.0;
+ return;
+ }
+ const float h_xm = WaterHeight(uv - dx.xy, h);
+ const float h_xp = WaterHeight(uv + dx.xy, h);
+ const float h_zm = WaterHeight(uv - dx.yx, h);
+ const float h_zp = WaterHeight(uv + dx.yx, h);
+ const float curvature = max(abs(h_xp + h_xm - 2.0 * h), abs(h_zp + h_zm - 2.0 * h)) / (2.0 * dx.x * _Crest_DomainWidth);
+
+ float foam = 10.0 * curvature;
+
+ foam *= length(float2(_Crest_VelocityXSource[id], _Crest_VelocityYSource[id]));
+
+ foam *= _Crest_InjectionStrength;
+
+ _Crest_FoamBakeTarget[id] = foam;
+}
+
+void BakeFlow(const uint3 i_ID)
+{
+ const uint2 id = i_ID.xy;
+ float alpha = ComputeAlphaFromMargin(IdToWorldXZ_H(id));
+ if (alpha <= 0.0) return;
+ _Crest_FlowBakeTarget[id.xy] = float2(_Crest_VelocityXSource[id], _Crest_VelocityYSource[id]) * _Crest_InjectionStrength;
+}
+
+m_CrestNameSpaceEnd
+
+m_CrestKernelDefault(Initialize);
+m_CrestKernelDefault(InitializeGroundHeight);
+m_CrestKernelDefault(Advect);
+m_CrestKernelDefault(UpdateHeight);
+m_CrestKernelDefault(HeightOvershootReduction);
+m_CrestKernelDefault(UpdateVelocity);
+m_CrestKernelDefault(BlurHeight);
+m_CrestKernelDefault(Blur);
+m_CrestKernelDefault(MaskEdge);
+m_CrestKernelDefault(ExpandEdge);
+m_CrestKernelDefault(FinalizeHeight);
+
+m_CrestInputKernelDefault(InjectShape);
+m_CrestInputKernelDefault(InjectLevel);
+m_CrestInputKernelDefault(InjectFoam);
+m_CrestInputKernelDefault(InjectFlow);
+
+m_CrestKernelDefault(BakeLevel);
+m_CrestKernelDefault(BakeFoam);
+m_CrestKernelDefault(BakeFlow);
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/ShallowWaterSimulation.compute.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/ShallowWaterSimulation.compute.meta
new file mode 100644
index 0000000..8edad05
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/ShallowWaterSimulation.compute.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0af900407c415484e8b1482da8ec3881
+ComputeShaderImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/Visualizer.shader b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/Visualizer.shader
new file mode 100644
index 0000000..571f76b
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/Visualizer.shader
@@ -0,0 +1,87 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+Shader "Hidden/Crest/Debug/Shallow Water Visualizer"
+{
+ SubShader
+ {
+ Tags { "RenderType"="Opaque" }
+
+ Pass
+ {
+ HLSLPROGRAM
+ #pragma vertex Vertex
+ #pragma fragment Fragment
+
+ #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
+ #include "Packages/com.unity.shadergraph/ShaderGraphLibrary/ShaderVariables.hlsl"
+
+ #include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Globals.hlsl"
+
+ CBUFFER_START(CrestBuffer)
+ half _Crest_DomainWidth;
+ float3 _Crest_DomainOrigin;
+ bool _Crest_RenderFinalHeight;
+ CBUFFER_END
+
+ Texture2D _Crest_Height;
+ Texture2D _Crest_GroundHeight;
+
+ struct Attributes
+ {
+ float3 positionOS : POSITION;
+ };
+
+ struct Varyings
+ {
+ float4 positionCS : SV_POSITION;
+ float3 normalWS : TEXCOORD0;
+ };
+
+ float CalculatePositionY(float2 worldXZ)
+ {
+ float2 uv = (worldXZ - _Crest_DomainOrigin.xz) / _Crest_DomainWidth + 0.5;
+
+ float h = _Crest_Height.SampleLevel(LODData_linear_clamp_sampler, uv, 0.0).x;
+ float g = _Crest_GroundHeight.SampleLevel(LODData_linear_clamp_sampler, uv, 0.0).x;
+
+ float y = g + _Crest_DomainOrigin.y;
+
+ if (_Crest_RenderFinalHeight)
+ {
+ y += h;
+ }
+
+ return y;
+ }
+
+ Varyings Vertex(Attributes input)
+ {
+ Varyings output;
+
+ output.positionCS = TransformObjectToHClip(input.positionOS);
+ float3 positionWS = mul(UNITY_MATRIX_M, float4(input.positionOS, 1.0)).xyz;
+
+ float y = CalculatePositionY(positionWS.xz);
+ positionWS.y = y;
+
+ float dx = 0.01;
+ float ydx = CalculatePositionY(positionWS.xz + float2(dx, 0.0));
+ float ydz = CalculatePositionY(positionWS.xz + float2(0.0, dx));
+
+ output.positionCS = mul(UNITY_MATRIX_VP, float4(positionWS, 1.0));
+
+ output.normalWS = float3((y - ydx) / dx, 1.0, (y - ydz) / dx);
+
+ return output;
+ }
+
+ half4 Fragment(Varyings input) : SV_Target
+ {
+ input.normalWS = normalize(input.normalWS);
+ return half4(input.normalWS, 1.0);
+ }
+ ENDHLSL
+ }
+ }
+}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/Visualizer.shader.meta b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/Visualizer.shader.meta
new file mode 100644
index 0000000..741d7d0
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Runtime/Shaders/Visualizer.shader.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 613caf76dccc3ea45b0501b731a55ec2
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ nonModifiableTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach.meta
new file mode 100644
index 0000000..cfacd06
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1f572b7334d0147b79df9eb94f2503a5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials.meta
new file mode 100644
index 0000000..0d8f54a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: beda8c35ca2f44eda8430cd756b444ed
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Skybox.mat b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Skybox.mat
new file mode 100644
index 0000000..16659b4
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Skybox.mat
@@ -0,0 +1,30 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Beach_Skybox
+ m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 2100000, guid: 9dbeaf053c6fb4c2f93b45a9995c408e, type: 2}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs: []
+ m_Ints: []
+ m_Floats:
+ - _Rotation: 12
+ m_Colors: []
+ m_BuildTextureStacks: []
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Skybox.mat.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Skybox.mat.meta
new file mode 100644
index 0000000..160bcd5
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Skybox.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3cc19cc9306194b059fe31ca3c4a841b
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Water.mat b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Water.mat
new file mode 100644
index 0000000..441f361
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Water.mat
@@ -0,0 +1,107 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-5994654682710206810
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 13
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
+--- !u!114 &-4042563326011365698
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Beach_Water
+ m_Shader: {fileID: -6465566751694194690, guid: 00ffe7d0b7161420897069dc6e12822c,
+ type: 3}
+ m_Parent: {fileID: -876546973899608171, guid: 00ffe7d0b7161420897069dc6e12822c,
+ type: 3}
+ m_ModifiedSerializedProperties: 24
+ m_ValidKeywords:
+ - CREST_FLOW_ON
+ - _ALPHATEST_ON
+ - _BUILTIN_SURFACE_TYPE_TRANSPARENT
+ - _BUILTIN_TRANSPARENT_RECEIVES_SHADOWS
+ - _DOUBLESIDED_ON
+ - _ENABLE_FOG_ON_TRANSPARENT
+ - _SPECULAR_SETUP
+ - _SURFACE_TYPE_TRANSPARENT
+ - _TRANSPARENT_WRITES_MOTION_VEC
+ m_InvalidKeywords: []
+ m_LightmapFlags: 2
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 1
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ MotionVector: User
+ RenderType: Transparent
+ disabledShaderPasses:
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ - SHADOWCASTER
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs: []
+ m_Ints: []
+ m_Floats:
+ - CREST_FLOW: 1
+ - _AlphaDstBlend: 10
+ - _BUILTIN_AlphaClip: 0
+ - _BUILTIN_DstBlend: 10
+ - _BUILTIN_QueueControl: 0
+ - _BUILTIN_SrcBlend: 5
+ - _BUILTIN_ZWrite: 1
+ - _Crest_FoamFeather: 1
+ - _CullMode: 0
+ - _CullModeForward: 0
+ - _DstBlend: 10
+ - _QueueControl: 1
+ - _SrcBlend: 5
+ - _ZTestGBuffer: 3
+ m_Colors:
+ - _Crest_Absorption: {r: 0.27652168, g: 0.08252846, b: 0.07064475, a: 1}
+ - _Crest_AbsorptionColor: {r: 0.664938, g: 0.8853371, b: 0.90099996, a: 0.105882354}
+ - _Crest_Scattering: {r: 0.011904758, g: 0.054761898, b: 0.1, a: 1}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: 1, a: 0}
+ m_BuildTextureStacks: []
+--- !u!114 &4748330692745026848
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 639247ca83abc874e893eb93af2b5e44, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 0
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Water.mat.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Water.mat.meta
new file mode 100644
index 0000000..8f80a7c
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Materials/Beach_Water.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9f3a9e9913da84b378fcbf5dd1f912b8
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Prefabs.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Prefabs.meta
new file mode 100644
index 0000000..4b78a3c
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bc6a902e467124df1a5d04c69f5cfbee
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Prefabs/Beach_Scene.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Prefabs/Beach_Scene.prefab
new file mode 100644
index 0000000..78235e8
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Prefabs/Beach_Scene.prefab
@@ -0,0 +1,2309 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &500528965128727000
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8609792547240146600}
+ - component: {fileID: 1696523817327012908}
+ m_Layer: 0
+ m_Name: Waves
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8609792547240146600
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 500528965128727000}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 106167211924268354}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1696523817327012908
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 500528965128727000}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 88bb6e05d83b64105a4d8cbd478f5916, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Mode: 5
+ _Weight: 1
+ _Queue: 0
+ _Blend: 1
+ _FeatherWidth: 0.1
+ _FollowHorizontalWaveMotion: 0
+ _Data:
+ rid: -2
+ _DrawBounds: 0
+ _Spectrum: {fileID: 0}
+ _EvaluateSpectrumAtRunTimeEveryFrame: 0
+ _RespectShallowWaterAttenuation: 0.76119405
+ _OverrideGlobalWindDirection: 1
+ _WaveDirectionHeadingAngle: -104.77612
+ _OverrideGlobalWindSpeed: 0
+ _WindSpeed: 20
+ _Resolution: 128
+ _DrawSlicesInEditor: 0
+ _AlphaSource: 0
+ _OverrideGlobalWindTurbulence: 1
+ _WindTurbulence: 0
+ _WindAlignment: 0
+ _TimeLoopLength: Infinity
+ _MaximumVerticalDisplacement: 10
+ _MaximumHorizontalDisplacement: 15
+ _EnableBakedCollision: 0
+ _TimeResolution: 4
+ _SmallestWavelengthRequired: 2
+ _BakedTimeLoopLength: 32
+ _Version: 2
+ references:
+ version: 2
+ RefIds:
+ - rid: -2
+ type: {class: , ns: , asm: }
+--- !u!1 &2248114183228678662
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5669970946232439895}
+ m_Layer: 0
+ m_Name: Camera
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &5669970946232439895
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2248114183228678662}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 3369968984622558964}
+ - {fileID: 8185967281873239260}
+ m_Father: {fileID: 6722545905680127086}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &3100029780207971777
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4682245877935220536}
+ - component: {fileID: 466786077928517085}
+ - component: {fileID: 7820292986042801606}
+ - component: {fileID: 6087185861204275229}
+ m_Layer: 31
+ m_Name: Terrain
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 2147483647
+ m_IsActive: 1
+--- !u!4 &4682245877935220536
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3100029780207971777}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -500, y: -50, z: -500}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 1247928352190458286}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!218 &466786077928517085
+Terrain:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3100029780207971777}
+ m_Enabled: 1
+ serializedVersion: 6
+ m_TerrainData: {fileID: 15600000, guid: 795a7e9d9baf8408c88e4bf9bb76538e, type: 2}
+ m_TreeDistance: 5000
+ m_TreeBillboardDistance: 50
+ m_TreeCrossFadeLength: 5
+ m_TreeMaximumFullLODCount: 50
+ m_DetailObjectDistance: 80
+ m_DetailObjectDensity: 1
+ m_HeightmapPixelError: 5
+ m_SplatMapDistance: 1000
+ m_HeightmapMinimumLODSimplification: 0
+ m_HeightmapMaximumLOD: 0
+ m_ShadowCastingMode: 2
+ m_DrawHeightmap: 1
+ m_DrawInstanced: 1
+ m_DrawTreesAndFoliage: 0
+ m_StaticShadowCaster: 0
+ m_IgnoreQualitySettings: 0
+ m_ReflectionProbeUsage: 1
+ m_MaterialTemplate: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2}
+ m_BakeLightProbesForTrees: 1
+ m_PreserveTreePrototypeLayers: 0
+ m_DeringLightProbesForTrees: 1
+ m_ReceiveGI: 1
+ m_ScaleInLightmap: 0.0256
+ m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
+ m_GroupingID: 0
+ m_RenderingLayerMask: 1
+ m_AllowAutoConnect: 1
+ m_EnableHeightmapRayTracing: 1
+ m_EnableTreesAndDetailsRayTracing: 0
+ m_TreeMotionVectorModeOverride: 3
+--- !u!154 &7820292986042801606
+TerrainCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3100029780207971777}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_TerrainData: {fileID: 15600000, guid: 795a7e9d9baf8408c88e4bf9bb76538e, type: 2}
+ m_EnableTreeColliders: 0
+--- !u!114 &6087185861204275229
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3100029780207971777}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e49c7e9e3297f44b3a07573b45ec815d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Version: 0
+ _Material: {fileID: 10650, guid: 0000000000000000f000000000000000, type: 0}
+ _MaterialHDRP: {fileID: 2100000, guid: 22ff8771d87ef27429e670136399094b, type: 2}
+ _MaterialURP: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2}
+--- !u!1 &3346479803504508987
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 106167211924268354}
+ - component: {fileID: 8030153365830182461}
+ m_Layer: 0
+ m_Name: Water
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &106167211924268354
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3346479803504508987}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 8609792547240146600}
+ - {fileID: 7503417248560286303}
+ m_Father: {fileID: 6722545905680127086}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &8030153365830182461
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3346479803504508987}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e64c239f69eea46778ded6dcc3427a34, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Layer: 4
+ _Material: {fileID: 2100000, guid: 9f3a9e9913da84b378fcbf5dd1f912b8, type: 2}
+ _VolumeMaterial: {fileID: 0}
+ _ChunkTemplate: {fileID: 1516456258233481520, guid: 17840562212c147d6bdb5144d35bc442,
+ type: 3}
+ _CastShadows: 0
+ _WaterBodyCulling: 1
+ _TimeSliceBoundsUpdateFrameCount: 1
+ _SurfaceSelfIntersectionFixMode: 4
+ _AllowRenderQueueSorting: 0
+ _Version: 1
+ _Camera: {fileID: 0}
+ _TimeProvider: {fileID: 0}
+ _WindZone: {fileID: 0}
+ _OverrideWindZoneWindSpeed: 0
+ _WindSpeed: 150
+ _OverrideWindZoneWindDirection: 0
+ _WindDirection: 0
+ _OverrideWindZoneWindTurbulence: 0
+ _WindTurbulence: 0.145
+ _OverrideGravity: 0
+ _GravityOverride: -9.8
+ _GravityMultiplier: 1
+ _PrimaryLight: {fileID: 0}
+ _InjectionPoint: 0
+ _WriteToColorTexture: 1
+ _WriteToDepthTexture: 1
+ _WriteMotionVectors: 1
+ _OverrideRenderHDR: 0
+ _RenderHDR: 1
+ _Surface:
+ rid: 1002
+ _ScaleRange: {x: 4, y: 256}
+ _DropDetailHeightBasedOnWaves: 0.3
+ _Slices: 9
+ _Resolution: 768
+ _GeometryDownSampleFactor: 2
+ _ExtentsSizeMultiplier: 100
+ _Viewpoint: {fileID: 0}
+ _CenterOfDetailDisplacementCorrection: 1
+ _SampleTerrainHeightForScale: 1
+ _ForceScaleChangeSmoothing: 0
+ _TeleportThreshold: 10
+ _AnimatedWavesLod:
+ rid: 162836874658316288
+ _DepthLod:
+ rid: 162836874658316289
+ _LevelLod:
+ rid: 162836874658316290
+ _FoamLod:
+ rid: 162836874658316291
+ _DynamicWavesLod:
+ rid: 162836874658316292
+ _FlowLod:
+ rid: 162836874658316293
+ _ShadowLod:
+ rid: 162836874658316294
+ _AbsorptionLod:
+ rid: 1000
+ _ScatteringLod:
+ rid: 1001
+ _ClipLod:
+ rid: 162836874658316295
+ _AlbedoLod:
+ rid: 162836874658316296
+ _Reflections:
+ rid: 162836874658316297
+ _Underwater:
+ rid: 162836874658316298
+ _Meniscus:
+ rid: 1003
+ _Portals:
+ rid: 162836874658316299
+ _ShowWaterProxyPlane: 0
+ _EditModeFrameRate: 30
+ _FollowSceneCamera: 1
+ _HeightQueries: 1
+ _Debug:
+ _AttachDebugGUI: 0
+ _ShowHiddenObjects: 0
+ _DisableFollowViewpoint: 0
+ _DestroyResourcesInOnDisable: 0
+ _DrawLodOutline: 0
+ _ShowDebugInformation: 0
+ _LogScaleChange: 0
+ _PauseOnScaleChange: 0
+ _IgnoreWavesForScaleChange: 0
+ _ForceNoGraphics: 0
+ _Resources: {fileID: 11400000, guid: 0817af17dea584e5382e6216db162d4a, type: 2}
+ references:
+ version: 2
+ RefIds:
+ - rid: 1000
+ type: {class: AbsorptionLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 100
+ _TextureFormat: 7
+ _ShorelineColorSource: 0
+ _ShorelineColor: {r: 1.026, g: 2.085, b: 2.5500002, a: 0.306}
+ _ShorelineColorMaximumDistance: 10
+ _ShorelineColorFalloff: 2
+ - rid: 1001
+ type: {class: ScatteringLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 200
+ _TextureFormat: 23
+ _ShorelineColorSource: 0
+ _ShorelineColor: {r: 0, g: 0.588, b: 1.2, a: 6}
+ _ShorelineColorMaximumDistance: 10
+ _ShorelineColorFalloff: 2
+ - rid: 1002
+ type: {class: SurfaceRenderer, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Version: 0
+ _Enabled: 1
+ _Layer: 4
+ _Material: {fileID: 2100000, guid: 9f3a9e9913da84b378fcbf5dd1f912b8, type: 2}
+ _VolumeMaterial: {fileID: 0}
+ _ChunkTemplate: {fileID: 1516456258233481520, guid: 17840562212c147d6bdb5144d35bc442,
+ type: 3}
+ _CastShadows: 0
+ _WaterBodyCulling: 1
+ _TimeSliceBoundsUpdateFrameCount: 1
+ _SurfaceSelfIntersectionFixMode: 4
+ _AllowRenderQueueSorting: 0
+ _Debug:
+ _UniformTiles: 0
+ _DisableSkirt: 0
+ - rid: 1003
+ type: {class: Meniscus, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _Layer: 4
+ _Material: {fileID: 2100000, guid: 238e45299a5ec46308e9bf99ddf67963, type: 2}
+ - rid: 162836874658316288
+ type: {class: AnimatedWavesLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 0
+ _Resolution: 256
+ _TextureFormatMode: 200
+ _TextureFormat: 48
+ _WaveResolutionMultiplier: 2
+ _AttenuationInShallows: 0.95
+ _ShallowsMaximumDepth: 1000
+ _CollisionSource: 2
+ _CollisionLayers: -1
+ _MaximumQueryCount: 4096
+ _BakedWaveData: {fileID: 0}
+ - rid: 162836874658316289
+ type: {class: DepthLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 100
+ _TextureFormat: 46
+ _IncludeTerrainHeight: 0
+ _EnableSignedDistanceFields: 1
+ - rid: 162836874658316290
+ type: {class: LevelLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 0
+ _Resolution: 256
+ _TextureFormatMode: 300
+ _TextureFormat: 45
+ - rid: 162836874658316291
+ type: {class: FoamLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 100
+ _TextureFormat: 45
+ _SimulationFrequency: 30
+ _Prewarm: 1
+ _Settings: {fileID: 11400000, guid: 0a2c1b990ef0647a383d218455508a27, type: 2}
+ - rid: 162836874658316292
+ type: {class: DynamicWavesLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 0
+ _Resolution: 512
+ _TextureFormatMode: 300
+ _TextureFormat: 46
+ _SimulationFrequency: 60
+ _AttenuationInShallows: 1
+ _Settings: {fileID: 0}
+ - rid: 162836874658316293
+ type: {class: FlowLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 1
+ _Resolution: 128
+ _TextureFormatMode: 100
+ _TextureFormat: 46
+ - rid: 162836874658316294
+ type: {class: ShadowLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 100
+ _TextureFormat: 6
+ _SimulationFrequency: 60
+ _DynamicSoftShadows: 1
+ _SoftJitterExtinctionFactor: 0.75
+ _JitterDiameterSoft: 15
+ _CurrentFrameWeightSoft: 0.03
+ _JitterDiameterHard: 0.6
+ _CurrentFrameWeightHard: 0.15
+ _AllowNullLight: 0
+ _AllowNoShadows: 0
+ - rid: 162836874658316295
+ type: {class: ClipLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 100
+ _TextureFormat: 5
+ _DefaultClippingState: 0
+ - rid: 162836874658316296
+ type: {class: AlbedoLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 1
+ _Resolution: 768
+ _TextureFormatMode: 100
+ _TextureFormat: 8
+ - rid: 162836874658316297
+ type: {class: WaterReflections, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Version: 0
+ _Enabled: 0
+ _Mode: 0
+ _Layers:
+ serializedVersion: 2
+ m_Bits: 1
+ _Resolution: 256
+ _RenderOnlySingleCamera: 0
+ _Sky: 0
+ _DisablePixelLights: 1
+ _DisableShadows: 1
+ _HDR: 1
+ _Stencil: 0
+ _AllowMSAA: 0
+ _QualitySettingsOverride:
+ _OverrideLodBias: 0
+ _LodBias: 0.5
+ _OverrideMaximumLodLevel: 0
+ _MaximumLodLevel: 1
+ _OverrideTerrainPixelError: 0
+ _TerrainPixelError: 10
+ _ClipPlaneOffset: 0
+ _FarClipPlane: 1000
+ _DisableOcclusionCulling: 1
+ _RefreshPerFrames: 1
+ _FrameRefreshOffset: 0
+ _UseObliqueMatrix: 1
+ _NonObliqueNearSurface: 0
+ _NonObliqueNearSurfaceThreshold: 0.05
+ _Debug:
+ _ShowHiddenObjects: 0
+ _DisableRecursiveRendering: 0
+ - rid: 162836874658316298
+ type: {class: UnderwaterRenderer, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Version: 0
+ _Enabled: 1
+ _Layer: 4
+ _Material: {fileID: 2100000, guid: f2b096e4d95e646c49d48ece0afa0547, type: 2}
+ _EnvironmentalLightingEnable: 0
+ _EnvironmentalLightingWeight: 1
+ _EnvironmentalLightingVolumeProfile: {fileID: 0}
+ _AllCameras: 0
+ _CopyWaterMaterialParametersEachFrame: 1
+ _FarPlaneMultiplier: 0.68
+ _CullLimit: 0.001
+ _Debug:
+ _VisualizeMask: 0
+ _DisableMask: 0
+ _VisualizeStencil: 0
+ _DisableHeightAboveWaterOptimization: 0
+ _DisableArtifactCorrection: 0
+ _OnlyReflectionCameras: 0
+ - rid: 162836874658316299
+ type: {class: PortalRenderer, ns: WaveHarmonic.Crest.Portals, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _Mode: 2
+ _Geometry: {fileID: 0}
+ _Invert: 0
+--- !u!1 &5380638823946181067
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7503417248560286303}
+ - component: {fileID: 122188446994512578}
+ - component: {fileID: 2445687726205438228}
+ m_Layer: 0
+ m_Name: Shallow Water
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7503417248560286303
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5380638823946181067}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -323, y: 0, z: -326.1}
+ m_LocalScale: {x: 128, y: 1, z: 128}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 106167211924268354}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &122188446994512578
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5380638823946181067}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9a87083040be2a947bf2d5f126a800e4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Version: 0
+ _Preset: 1
+ _Width: 128
+ _Depth: 2
+ _Placement: 0
+ _PlaceAtSeaLevel: 1
+ _Friction: 0.02
+ _DynamicSeabed: 0
+ _SampleDepthProbeDirectly: 1
+ _SampleWaterLevelInputsDirectly: 1
+ _AdditionalWater: 0
+ _DrainWaterAtBoundaries: -0.01
+ _Evaporation: 0
+ _BlendDepthRange: {x: 0, y: 3}
+ _BlendPushUpStrength: 0.1
+ _EnableDistanceCulling: 0
+ _CullDistance: 75
+ _CullTransitionSpeed: 0.5
+ _TimeStep: 0.01
+ _CourantNumber: 0.5
+ _OvershootReductionStrength: 0.25
+ _TexelSize: 0.0625
+ _MaximumResolution: 1024
+ _BlurShapeForRender: 1
+ _BlurMaskIterations: 10
+ _WaterEdgeMargin: 1
+ _WaterEdgeMarginWidth: 4
+ _WaterEdgeMarginBakedWidth: 32
+ _Mode: 0
+ _InjectShape: 1
+ _LevelTexture: {fileID: 0}
+ _MaximumDisplacementVertical: 0
+ _PaddingWidth: 2
+ _InjectFlow: 1
+ _FlowTexture: {fileID: 0}
+ _FlowStrength: 1
+ _InjectFoam: 1
+ _FoamTexture: {fileID: 0}
+ _FoamStrength: 0.5
+ _Debug:
+ _SkipUpdate: 0
+ _SkipUpdateHeight: 0
+ _SkipUpdateVelocities: 0
+ _SkipAdvect: 0
+ _SkipAdvectHeights: 0
+ _DisableStabilityImprovements: 0
+ _DisableMacCormackScheme: 0
+ _DisableMacCormackSchemeForHeight: 0
+ _DisableUpwindHeight: 0
+ _DisableDepthLimiter: 0
+ _DisableOvershootReduction: 0
+ _AlwaysExecuteSimulation: 0
+ _SkipInjectShape: 0
+ _ShowSimulationData: 0
+ _ShowSimulationDataInScene: 0
+--- !u!114 &2445687726205438228
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5380638823946181067}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 70deb49b538e247b9ab1bf7773d16809, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Type: 0
+ _RefreshMode: 0
+ _Layers:
+ serializedVersion: 2
+ m_Bits: 2147483649
+ _Resolution: 1024
+ _CaptureRange: {x: -1000, y: 100}
+ _FillHolesCaptureHeight: 0
+ _EnableBackFaceInclusion: 1
+ _QualitySettingsOverride:
+ _OverrideLodBias: 1
+ _LodBias: Infinity
+ _OverrideMaximumLodLevel: 1
+ _MaximumLodLevel: 0
+ _OverrideTerrainPixelError: 1
+ _TerrainPixelError: 0
+ _SavedTexture: {fileID: 0}
+ _GenerateSignedDistanceField: 1
+ _AdditionalJumpFloodRounds: 7
+ _Debug:
+ _ForceAlwaysUpdateDebug: 0
+ _ShowHiddenObjects: 0
+ _ShowSimulationDataInScene: 0
+ _Version: 1
+--- !u!1 &5518571198563152509
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3623959134223671661}
+ - component: {fileID: 2892243981918257904}
+ m_Layer: 0
+ m_Name: Depth Probe
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3623959134223671661
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5518571198563152509}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -299, y: 0, z: -320}
+ m_LocalScale: {x: 400, y: 1, z: 400}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1247928352190458286}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2892243981918257904
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5518571198563152509}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 70deb49b538e247b9ab1bf7773d16809, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Type: 0
+ _RefreshMode: 0
+ _Layers:
+ serializedVersion: 2
+ m_Bits: 2147483648
+ _Resolution: 512
+ _CaptureRange: {x: -1000, y: 100}
+ _FillHolesCaptureHeight: 0
+ _EnableBackFaceInclusion: 1
+ _QualitySettingsOverride:
+ _OverrideLodBias: 1
+ _LodBias: Infinity
+ _OverrideMaximumLodLevel: 1
+ _MaximumLodLevel: 0
+ _OverrideTerrainPixelError: 1
+ _TerrainPixelError: 0
+ _SavedTexture: {fileID: 0}
+ _GenerateSignedDistanceField: 1
+ _AdditionalJumpFloodRounds: 7
+ _Debug:
+ _ForceAlwaysUpdateDebug: 0
+ _ShowHiddenObjects: 0
+ _ShowSimulationDataInScene: 0
+ _Version: 1
+--- !u!1 &6039876383580551393
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2427288521484247103}
+ m_Layer: 0
+ m_Name: Lighting
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2427288521484247103
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6039876383580551393}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 178800688571301925}
+ - {fileID: 8829073919524098785}
+ - {fileID: 7322179407985237919}
+ m_Father: {fileID: 6722545905680127086}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7596605291968733702
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1247928352190458286}
+ m_Layer: 0
+ m_Name: Environment
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1247928352190458286
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7596605291968733702}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 7938971758796787378}
+ - {fileID: 4682245877935220536}
+ - {fileID: 3623959134223671661}
+ m_Father: {fileID: 6722545905680127086}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8399213631255980749
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7938971758796787378}
+ m_Layer: 0
+ m_Name: Rocks
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7938971758796787378
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8399213631255980749}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 2910416392369106427}
+ - {fileID: 1986407428178769009}
+ - {fileID: 1012151880701697099}
+ - {fileID: 2774976562991348545}
+ - {fileID: 3469434088266725575}
+ - {fileID: 7695351659104187654}
+ - {fileID: 5094283331497342911}
+ - {fileID: 6186807514685781954}
+ - {fileID: 6087013536502808476}
+ m_Father: {fileID: 1247928352190458286}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8802985210330865214
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6722545905680127086}
+ m_Layer: 0
+ m_Name: Beach_Scene
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6722545905680127086
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8802985210330865214}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 5669970946232439895}
+ - {fileID: 2427288521484247103}
+ - {fileID: 106167211924268354}
+ - {fileID: 1247928352190458286}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &337025658049290353
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 7938971758796787378}
+ m_Modifications:
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.7808003
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.7807996
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.7807999
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -300.47
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -1.54
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -337.53
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.8883727
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.005060061
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.45809343
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.03031019
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 1.076
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 54.525
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -3.354
+ objectReference: {fileID: 0}
+ - target: {fileID: 7957809826432291963, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_Name
+ value: Rocks_01_C
+ objectReference: {fileID: 0}
+ - target: {fileID: 7957809826432291963, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7957809826432291963, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: b423bf7a132bc5348a001906e8cc291b, type: 3}
+--- !u!4 &7695351659104187654 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ m_PrefabInstance: {fileID: 337025658049290353}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &904862544298052755
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 5669970946232439895}
+ m_Modifications:
+ - target: {fileID: 6079220456006713144, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_Name
+ value: Post-Processing
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 5e01cffb9e8324147affb8e08fd5ed13, type: 3}
+--- !u!4 &8185967281873239260 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ m_PrefabInstance: {fileID: 904862544298052755}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &922502922613022520
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 5669970946232439895}
+ m_Modifications:
+ - target: {fileID: 2452750316707852747, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_Name
+ value: Camera
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -334.50903
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 4.05268
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -354.99826
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.97533154
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.12830949
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.17808306
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.02348732
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: c26fe2b4fef6c484089497b549dd6b04, type: 3}
+--- !u!4 &3369968984622558964 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ m_PrefabInstance: {fileID: 922502922613022520}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1229556587225151146
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2427288521484247103}
+ m_Modifications:
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.18892908
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.07825698
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.9043557
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.3745964
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5304508333967466499, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_Name
+ value: Sun
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 774ab582b39374a7e9d5dac8e31b9a5a, type: 3}
+--- !u!4 &178800688571301925 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ m_PrefabInstance: {fileID: 1229556587225151146}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &2304887824100470236
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 7938971758796787378}
+ m_Modifications:
+ - target: {fileID: 4001800002490710713, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4001868460905879681, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4001916033514215127, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002198735768388743, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002682753704487717, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Name
+ value: Rocks_01_A
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002682753704487717, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002682753704487717, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.1962993
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.1963
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.196299
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -304.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.55
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -316.63
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.37714875
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.06494639
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.9234919
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.026523726
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 135.57
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 8.046
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 22afbe6f819a3d24f9715685e137cf23, type: 3}
+--- !u!4 &2910416392369106427 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ m_PrefabInstance: {fileID: 2304887824100470236}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &2616671664387288852
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 7938971758796787378}
+ m_Modifications:
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 1.926958
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 1.926958
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 1.926959
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -307.54
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -3.83
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -306.35
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.74191254
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.13775901
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.6438566
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.12663698
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -21.56
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 81.782
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0.648
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129480598278614191, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Name
+ value: Rocks_03
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129480598278614191, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129480598278614191, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129578638580487585, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7130365165781936757, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7130507600156305085, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7131167526129675643, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 6e74665197120c846b9f23c9fdf26789, type: 3}
+--- !u!4 &5094283331497342911 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ m_PrefabInstance: {fileID: 2616671664387288852}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &3174571554076439638
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 7938971758796787378}
+ m_Modifications:
+ - target: {fileID: 4001800002490710713, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4001868460905879681, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4001916033514215127, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002198735768388743, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002682753704487717, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Name
+ value: Rocks_01_A
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002682753704487717, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002682753704487717, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.1962993
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.1963
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.196299
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -306.11
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -2.66
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -346.42
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: -0.92099994
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.026948856
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.38319385
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.06477118
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 405.181
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 8.046
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 22afbe6f819a3d24f9715685e137cf23, type: 3}
+--- !u!4 &1986407428178769009 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ m_PrefabInstance: {fileID: 3174571554076439638}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &3902106064156194949
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2427288521484247103}
+ m_Modifications:
+ - target: {fileID: 963553959586484309, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_Name
+ value: Lighting
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: bece9afbf3ddd49059dd73ba2cc986f6, type: 3}
+--- !u!4 &7322179407985237919 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ m_PrefabInstance: {fileID: 3902106064156194949}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &3934919292017682231
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 7938971758796787378}
+ m_Modifications:
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 1.926958
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 1.9269581
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 1.9269586
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -353.74
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -4.9
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -334.89
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.50145197
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.0024415178
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.85152847
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.1530988
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 14.968
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -117.777
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 9.395
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129480598278614191, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Name
+ value: Rocks_03
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129480598278614191, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129480598278614191, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129578638580487585, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7130365165781936757, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7130507600156305085, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7131167526129675643, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 6e74665197120c846b9f23c9fdf26789, type: 3}
+--- !u!4 &6087013536502808476 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ m_PrefabInstance: {fileID: 3934919292017682231}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &3979275616488124265
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 7938971758796787378}
+ m_Modifications:
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 1.926958
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 1.926958
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 1.926959
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -336.96
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -3.83
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -314.8
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.75030226
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.024465017
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.65797436
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.059311163
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 6.59
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 82.309
+ objectReference: {fileID: 0}
+ - target: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -3.278
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129480598278614191, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Name
+ value: Rocks_03
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129480598278614191, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129480598278614191, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 7129578638580487585, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7130365165781936757, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7130507600156305085, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7131167526129675643, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 6e74665197120c846b9f23c9fdf26789, type: 3}
+--- !u!4 &6186807514685781954 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7125484819499571371, guid: 6e74665197120c846b9f23c9fdf26789,
+ type: 3}
+ m_PrefabInstance: {fileID: 3979275616488124265}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &4149110273584929900
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 7938971758796787378}
+ m_Modifications:
+ - target: {fileID: 4001800002490710713, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4001868460905879681, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4001916033514215127, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002198735768388743, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002682753704487717, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Name
+ value: Rocks_01_A
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002682753704487717, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4002682753704487717, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.1962996
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.1962998
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.196299
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -336.1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.55
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -305.8
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.37165272
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.06510295
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.9257175
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.02613722
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 136.252
+ objectReference: {fileID: 0}
+ - target: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 8.046
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 22afbe6f819a3d24f9715685e137cf23, type: 3}
+--- !u!4 &1012151880701697099 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 4008057477555011623, guid: 22afbe6f819a3d24f9715685e137cf23,
+ type: 3}
+ m_PrefabInstance: {fileID: 4149110273584929900}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &5252473665286860342
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 7938971758796787378}
+ m_Modifications:
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.7808
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.7808
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.7808
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -292.79892
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.3297863
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -329.22272
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.98748785
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.12004468
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.10117082
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.01488242
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -13.892
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -11.663
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -0.30100003
+ objectReference: {fileID: 0}
+ - target: {fileID: 7957809826432291963, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_Name
+ value: Rocks_01_C
+ objectReference: {fileID: 0}
+ - target: {fileID: 7957809826432291963, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7957809826432291963, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: b423bf7a132bc5348a001906e8cc291b, type: 3}
+--- !u!4 &2774976562991348545 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ m_PrefabInstance: {fileID: 5252473665286860342}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &6792516105649958320
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 7938971758796787378}
+ m_Modifications:
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.7808
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.7808
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.7808
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -286.12
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.22
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -317.06
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.4722085
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.055268947
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.8731477
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.107598975
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -13.892
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -123.153
+ objectReference: {fileID: 0}
+ - target: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -0.301
+ objectReference: {fileID: 0}
+ - target: {fileID: 7957809826432291963, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_Name
+ value: Rocks_01_C
+ objectReference: {fileID: 0}
+ - target: {fileID: 7957809826432291963, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_Layer
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7957809826432291963, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: b423bf7a132bc5348a001906e8cc291b, type: 3}
+--- !u!4 &3469434088266725575 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7955110126290359671, guid: b423bf7a132bc5348a001906e8cc291b,
+ type: 3}
+ m_PrefabInstance: {fileID: 6792516105649958320}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &7282285977707048229
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2427288521484247103}
+ m_Modifications:
+ - target: {fileID: 2054049920268771810, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: sharedProfile
+ value:
+ objectReference: {fileID: 11400000, guid: e9a93ddf7b06549febe0f3094eb3cefe,
+ type: 2}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2942909709672342223, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_Name
+ value: Atmosphere
+ objectReference: {fileID: 0}
+ - target: {fileID: 8705736009777882428, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: _SkyBox
+ value:
+ objectReference: {fileID: 2100000, guid: 3cc19cc9306194b059fe31ca3c4a841b, type: 2}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 63a4b7e65d06948649ac3e10077d8c2e, type: 3}
+--- !u!4 &8829073919524098785 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ m_PrefabInstance: {fileID: 7282285977707048229}
+ m_PrefabAsset: {fileID: 0}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Prefabs/Beach_Scene.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Prefabs/Beach_Scene.prefab.meta
new file mode 100644
index 0000000..43e23d1
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Prefabs/Beach_Scene.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 608e3429fd0c14b53b4116191f6dabe8
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props.meta
new file mode 100644
index 0000000..4696759
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f0174aaac6567456fa556380aee1e178
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR.meta
new file mode 100644
index 0000000..60d0579
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8b82e2720a95e49d6b13e3c810490c45
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials.meta
new file mode 100644
index 0000000..2937271
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ef82132b3a09d4559bd6f7525fcb8bcc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks.mat b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks.mat
new file mode 100644
index 0000000..7e8483d
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks.mat
@@ -0,0 +1,434 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Beach_Rocks
+ m_Shader: {fileID: -6465566751694194690, guid: 717b077102735454887bdc5c26938762,
+ type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _DISABLE_SSR_TRANSPARENT
+ - _SPECULARHIGHLIGHTS_OFF
+ m_InvalidKeywords:
+ - _NORMALMAP
+ - _NORMALMAP_TANGENT_SPACE
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 2225
+ stringTagMap:
+ MotionVector: User
+ RenderType: Opaque
+ disabledShaderPasses:
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AnisotropyMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseColorMap:
+ m_Texture: {fileID: 2800000, guid: 61b5a5de5f22277438332dd10549bb81, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseMap:
+ m_Texture: {fileID: 2800000, guid: 61b5a5de5f22277438332dd10549bb81, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 2800000, guid: da86c28217cf3de43a76d7731a124ff6, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _CoatMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DispTex:
+ m_Texture: {fileID: 2800000, guid: 36b2627314c0ff7458bdec9c1d15e485, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DistortionVectorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissiveColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _HeightMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MOS:
+ m_Texture: {fileID: 2800000, guid: 86bc65d715b6abc429ae4fb1b92af084, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: 61b5a5de5f22277438332dd10549bb81, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMap:
+ m_Texture: {fileID: 2800000, guid: da86c28217cf3de43a76d7731a124ff6, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 2800000, guid: e1c6267808eb2564b9064f1ed5106b2f, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecularColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SubsurfaceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TransmissionMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TransmittanceColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AORemapMax: 1
+ - _AORemapMin: 0
+ - _ATDistance: 1
+ - _AddPrecomputedVelocity: 0
+ - _AlbedoAffectEmissive: 0
+ - _AlphaClip: 0
+ - _AlphaCutoff: 0.5
+ - _AlphaCutoffEnable: 0
+ - _AlphaCutoffPostpass: 0.5
+ - _AlphaCutoffPrepass: 0.5
+ - _AlphaCutoffShadow: 0.5
+ - _AlphaDstBlend: 0
+ - _AlphaRemapMax: 1
+ - _AlphaRemapMin: 0
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _AlphaToMaskInspectorValue: 0
+ - _Anisotropy: 0
+ - _BUILTIN_AlphaClip: 0
+ - _BUILTIN_Blend: 0
+ - _BUILTIN_CullMode: 2
+ - _BUILTIN_DstBlend: 0
+ - _BUILTIN_QueueControl: 1
+ - _BUILTIN_QueueOffset: 0
+ - _BUILTIN_SrcBlend: 1
+ - _BUILTIN_Surface: 0
+ - _BUILTIN_ZTest: 4
+ - _BUILTIN_ZWrite: 1
+ - _BUILTIN_ZWriteControl: 0
+ - _Blend: 0
+ - _BlendMode: 0
+ - _BlendModePreserveSpecular: 0
+ - _BumpScale: 1
+ - _CastShadows: 1
+ - _CoatMask: 0
+ - _ConservativeDepthOffsetEnable: 0
+ - _Cull: 2
+ - _CullMode: 2
+ - _CullModeForward: 2
+ - _Cutoff: 0.5
+ - _DepthOffsetEnable: 0
+ - _DetailAO: 0.5
+ - _DetailAlbedoMapScale: 0
+ - _DetailAlbedoScale: 1
+ - _DetailNormalMapScale: 1
+ - _DetailNormalScale: 1
+ - _DetailSmoothnessScale: 1
+ - _DiffuseAO: 0
+ - _DiffusionProfile: 0
+ - _DiffusionProfileHash: 0
+ - _DispOffset: 0.5
+ - _DispPhong: 0
+ - _Displacement: 0.088
+ - _DisplacementLockObjectScale: 1
+ - _DisplacementLockTilingScale: 1
+ - _DisplacementMode: 0
+ - _DistortionBlendMode: 0
+ - _DistortionBlurBlendMode: 0
+ - _DistortionBlurDstBlend: 1
+ - _DistortionBlurRemapMax: 1
+ - _DistortionBlurRemapMin: 0
+ - _DistortionBlurScale: 1
+ - _DistortionBlurSrcBlend: 1
+ - _DistortionDepthTest: 1
+ - _DistortionDstBlend: 1
+ - _DistortionEnable: 0
+ - _DistortionScale: 1
+ - _DistortionSrcBlend: 1
+ - _DistortionVectorBias: -1
+ - _DistortionVectorScale: 2
+ - _DoubleSidedEnable: 0
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 1
+ - _DstBlend: 0
+ - _EdgeLength: 10.1
+ - _EmissiveColorMode: 1
+ - _EmissiveExposureWeight: 1
+ - _EmissiveIntensity: 1
+ - _EmissiveIntensityUnit: 0
+ - _EnableBlendModePreserveSpecularLighting: 1
+ - _EnableFogOnTransparent: 1
+ - _EnableGeometricSpecularAA: 0
+ - _EnergyConservingSpecularColor: 1
+ - _EnvironmentReflections: 1
+ - _ExcludeFromTUAndAA: 0
+ - _GI_AO: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _HeightAmplitude: 0.02
+ - _HeightCenter: 0.5
+ - _HeightMapParametrization: 0
+ - _HeightMax: 1
+ - _HeightMin: -1
+ - _HeightOffset: 0
+ - _HeightPoMAmplitude: 2
+ - _HeightTessAmplitude: 2
+ - _HeightTessCenter: 0.5
+ - _InvTilingScale: 1
+ - _Ior: 1.5
+ - _IridescenceMask: 1
+ - _IridescenceThickness: 1
+ - _LinkDetailsWithBase: 1
+ - _MaterialID: 1
+ - _Metallic: 0
+ - _MetallicRemapMax: 0
+ - _MetallicRemapMin: 0
+ - _Mode: 0
+ - _NormalMapSpace: 0
+ - _NormalScale: 1
+ - _Normal_Flip_Back_Faces: 1
+ - _ObjectSpaceUVMapping: 0
+ - _ObjectSpaceUVMappingEmissive: 0
+ - _OcclusionStrength: 1
+ - _OpaqueCullMode: 2
+ - _PPDLodThreshold: 5
+ - _PPDMaxSamples: 15
+ - _PPDMinSamples: 5
+ - _PPDPrimitiveLength: 1
+ - _PPDPrimitiveWidth: 1
+ - _Parallax: 0.005
+ - _QueueControl: -1
+ - _QueueOffset: 0
+ - _RayTracing: 0
+ - _ReceiveShadows: 1
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _RefractionModel: 0
+ - _RenderQueueType: 1
+ - _RequireSplitLighting: 0
+ - _SPECULARHIGHLIGHTS_OFF: 1
+ - _SSRefractionProjectionModel: 0
+ - _Smoothness: 0.31
+ - _SmoothnessRemapMax: 1
+ - _SmoothnessRemapMin: 0
+ - _SmoothnessTextureChannel: 0
+ - _SpecAO: 0
+ - _SpecBurn: 0
+ - _SpecularAAScreenSpaceVariance: 0.1
+ - _SpecularAAThreshold: 0.2
+ - _SpecularHighlights: 1
+ - _SpecularOcclusionMode: 1
+ - _SrcBlend: 1
+ - _StencilRef: 0
+ - _StencilRefDepth: 8
+ - _StencilRefDistortionVec: 4
+ - _StencilRefGBuffer: 10
+ - _StencilRefMV: 40
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 9
+ - _StencilWriteMaskDistortionVec: 4
+ - _StencilWriteMaskGBuffer: 15
+ - _StencilWriteMaskMV: 41
+ - _SubsurfaceMask: 1
+ - _SupportDecals: 1
+ - _Surface: 0
+ - _SurfaceType: 0
+ - _Tess: 1.3
+ - _TexWorldScale: 1
+ - _TexWorldScaleEmissive: 1
+ - _Thickness: 1
+ - _TransmissionEnable: 1
+ - _TransmissionMask: 1
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UVBase: 0
+ - _UVDetail: 0
+ - _UVEmissive: 0
+ - _UVSec: 0
+ - _UseEmissiveIntensity: 0
+ - _UseShadowThreshold: 0
+ - _WorkflowMode: 1
+ - _ZTest: 4
+ - _ZTestDepthEqualForOpaque: 3
+ - _ZTestGBuffer: 4
+ - _ZTestModeDistortion: 4
+ - _ZTestTransparent: 4
+ - _ZWrite: 1
+ - _ZWriteControl: 0
+ - _maxDist: 25
+ m_Colors:
+ - _BaseColor: {r: 0.4339623, g: 0.39420637, b: 0.34184766, a: 1}
+ - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0}
+ - _Color: {r: 0.56700003, g: 0.51591897, b: 0.44440544, a: 1}
+ - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0}
+ - _Displacement_TO: {r: 1, g: 1, b: 0, a: 0}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
+ - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1}
+ - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}
+ - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
+ - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
+ - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
+ m_BuildTextureStacks: []
+--- !u!114 &2197706086620354442
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!114 &4380554692931032899
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 13
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
+--- !u!114 &6233532979947264323
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 639247ca83abc874e893eb93af2b5e44, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 0
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks.mat.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks.mat.meta
new file mode 100644
index 0000000..c548b43
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 771456db69106436da2ee97788477e13
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_01.mat b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_01.mat
new file mode 100644
index 0000000..d2a47c5
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_01.mat
@@ -0,0 +1,83 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Beach_Rocks_01
+ m_Shader: {fileID: -6465566751694194690, guid: 717b077102735454887bdc5c26938762,
+ type: 3}
+ m_Parent: {fileID: 2100000, guid: 771456db69106436da2ee97788477e13, type: 2}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _DISABLE_SSR_TRANSPARENT
+ - _SPECULARHIGHLIGHTS_OFF
+ m_InvalidKeywords:
+ - _NORMALMAP
+ - _NORMALMAP_TANGENT_SPACE
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap:
+ MotionVector: User
+ RenderType: Opaque
+ disabledShaderPasses:
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs: []
+ m_Ints: []
+ m_Floats: []
+ m_Colors: []
+ m_BuildTextureStacks: []
+--- !u!114 &2197706086620354442
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!114 &4380554692931032899
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 13
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
+--- !u!114 &6233532979947264323
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 639247ca83abc874e893eb93af2b5e44, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 0
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_01.mat.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_01.mat.meta
new file mode 100644
index 0000000..342074c
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_01.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 34dfbaaa4036b024e9ddf60e339194d3
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_02.mat b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_02.mat
new file mode 100644
index 0000000..bba722c
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_02.mat
@@ -0,0 +1,108 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-6804726229188060463
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 639247ca83abc874e893eb93af2b5e44, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 0
+--- !u!114 &-1090719722964937430
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Beach_Rocks_02
+ m_Shader: {fileID: -6465566751694194690, guid: 717b077102735454887bdc5c26938762,
+ type: 3}
+ m_Parent: {fileID: 2100000, guid: 771456db69106436da2ee97788477e13, type: 2}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _DISABLE_SSR_TRANSPARENT
+ - _SPECULARHIGHLIGHTS_OFF
+ m_InvalidKeywords:
+ - _NORMALMAP
+ - _NORMALMAP_TANGENT_SPACE
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap:
+ MotionVector: User
+ RenderType: Opaque
+ disabledShaderPasses:
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BaseColorMap:
+ m_Texture: {fileID: 2800000, guid: e4d2e6ba1b3710b468d7265fdb2e8178, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseMap:
+ m_Texture: {fileID: 2800000, guid: e4d2e6ba1b3710b468d7265fdb2e8178, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 2800000, guid: 7dae416bc5cdd024e814490c64ec0046, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: e4d2e6ba1b3710b468d7265fdb2e8178, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMap:
+ m_Texture: {fileID: 2800000, guid: 7dae416bc5cdd024e814490c64ec0046, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 2800000, guid: 6baeb1a69140dc4409413799b4a94598, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _Parallax: 0.02
+ m_Colors: []
+ m_BuildTextureStacks: []
+--- !u!114 &5604477534606191496
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 13
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_02.mat.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_02.mat.meta
new file mode 100644
index 0000000..5ff0c18
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_02.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ec445cf5b7f1b1948a5319317e342ce0
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_03.mat b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_03.mat
new file mode 100644
index 0000000..7217927
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_03.mat
@@ -0,0 +1,108 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-7694236360789842960
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 639247ca83abc874e893eb93af2b5e44, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 0
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Beach_Rocks_03
+ m_Shader: {fileID: -6465566751694194690, guid: 717b077102735454887bdc5c26938762,
+ type: 3}
+ m_Parent: {fileID: 2100000, guid: 771456db69106436da2ee97788477e13, type: 2}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _DISABLE_SSR_TRANSPARENT
+ - _SPECULARHIGHLIGHTS_OFF
+ m_InvalidKeywords:
+ - _NORMALMAP
+ - _NORMALMAP_TANGENT_SPACE
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap:
+ MotionVector: User
+ RenderType: Opaque
+ disabledShaderPasses:
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BaseColorMap:
+ m_Texture: {fileID: 2800000, guid: 1e4248cafbd551c46a42d2d549782e16, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseMap:
+ m_Texture: {fileID: 2800000, guid: 1e4248cafbd551c46a42d2d549782e16, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 2800000, guid: 241ad574a42e48043b18246233402ac6, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: 1e4248cafbd551c46a42d2d549782e16, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMap:
+ m_Texture: {fileID: 2800000, guid: 241ad574a42e48043b18246233402ac6, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 2800000, guid: a123b5c937d22f149beaa4a596f77717, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _Parallax: 0.02
+ m_Colors: []
+ m_BuildTextureStacks: []
+--- !u!114 &1519216598126387917
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 13
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
+--- !u!114 &8396004880355684114
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_03.mat.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_03.mat.meta
new file mode 100644
index 0000000..e860873
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Materials/Beach_Rocks_03.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 77ce9408feb236347ba84bdccd758de9
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs.meta
new file mode 100644
index 0000000..a7444fb
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 64a2bc2d1920446efab950f378700ec5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_A.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_A.prefab
new file mode 100644
index 0000000..7246ca8
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_A.prefab
@@ -0,0 +1,368 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &4001800002490710713
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4007996265358130763}
+ - component: {fileID: 4033196819969975873}
+ - component: {fileID: 4024944731306083955}
+ m_Layer: 0
+ m_Name: MountainRocks01_A_LOD2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4007996265358130763
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4001800002490710713}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1}
+ m_LocalPosition: {x: -0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4008057477555011623}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4033196819969975873
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4001800002490710713}
+ m_Mesh: {fileID: 4300006, guid: 0bb18f6e1b1695449ba0b6ab75a16ae3, type: 3}
+--- !u!23 &4024944731306083955
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4001800002490710713}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 34dfbaaa4036b024e9ddf60e339194d3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &4001868460905879681
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3999376395965082419}
+ - component: {fileID: 4033064875196064957}
+ - component: {fileID: 4025626158886625085}
+ m_Layer: 0
+ m_Name: MountainRocks01_A_LOD0
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3999376395965082419
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4001868460905879681}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1}
+ m_LocalPosition: {x: -0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4008057477555011623}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4033064875196064957
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4001868460905879681}
+ m_Mesh: {fileID: 4300004, guid: 0bb18f6e1b1695449ba0b6ab75a16ae3, type: 3}
+--- !u!23 &4025626158886625085
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4001868460905879681}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 34dfbaaa4036b024e9ddf60e339194d3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &4001916033514215127
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3999440281400884527}
+ - component: {fileID: 3992857567305929563}
+ m_Layer: 0
+ m_Name: Collider
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3999440281400884527
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4001916033514215127}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4008057477555011623}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!64 &3992857567305929563
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4001916033514215127}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 0
+ serializedVersion: 5
+ m_Convex: 0
+ m_CookingOptions: 30
+ m_Mesh: {fileID: 4300006, guid: 0bb18f6e1b1695449ba0b6ab75a16ae3, type: 3}
+--- !u!1 &4002198735768388743
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3999321522754877363}
+ - component: {fileID: 4032757162434730667}
+ - component: {fileID: 4025194952917531697}
+ m_Layer: 0
+ m_Name: MountainRocks01_A_LOD1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3999321522754877363
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4002198735768388743}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1}
+ m_LocalPosition: {x: -0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4008057477555011623}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4032757162434730667
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4002198735768388743}
+ m_Mesh: {fileID: 4300002, guid: 0bb18f6e1b1695449ba0b6ab75a16ae3, type: 3}
+--- !u!23 &4025194952917531697
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4002198735768388743}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 34dfbaaa4036b024e9ddf60e339194d3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &4002682753704487717
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4008057477555011623}
+ - component: {fileID: 3843649808388076123}
+ m_Layer: 0
+ m_Name: Beach_Rocks_01_A
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4008057477555011623
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4002682753704487717}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 3999376395965082419}
+ - {fileID: 3999321522754877363}
+ - {fileID: 4007996265358130763}
+ - {fileID: 3999440281400884527}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!205 &3843649808388076123
+LODGroup:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4002682753704487717}
+ serializedVersion: 2
+ m_LocalReferencePoint: {x: -0.1868267, y: 0.41261053, z: 0.0866518}
+ m_Size: 12.298626
+ m_FadeMode: 1
+ m_AnimateCrossFading: 1
+ m_LastLODIsBillboard: 0
+ m_LODs:
+ - screenRelativeHeight: 0.32129273
+ fadeTransitionWidth: 0
+ renderers:
+ - renderer: {fileID: 4025626158886625085}
+ - screenRelativeHeight: 0.125
+ fadeTransitionWidth: 0
+ renderers:
+ - renderer: {fileID: 4025194952917531697}
+ - screenRelativeHeight: 0.01
+ fadeTransitionWidth: 0
+ renderers:
+ - renderer: {fileID: 4024944731306083955}
+ m_Enabled: 1
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_A.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_A.prefab.meta
new file mode 100644
index 0000000..9b37162
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_A.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 22afbe6f819a3d24f9715685e137cf23
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_C.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_C.prefab
new file mode 100644
index 0000000..250b4c2
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_C.prefab
@@ -0,0 +1,108 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &7957809826432291963
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7955110126290359671}
+ - component: {fileID: 7934383164240814333}
+ - component: {fileID: 7942834061952321429}
+ - component: {fileID: 7965795701293661711}
+ m_Layer: 0
+ m_Name: Beach_Rocks_01_C
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7955110126290359671
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7957809826432291963}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &7934383164240814333
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7957809826432291963}
+ m_Mesh: {fileID: 4300000, guid: 308f055afb4aa1a418277f5c3d4a8073, type: 3}
+--- !u!23 &7942834061952321429
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7957809826432291963}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 34dfbaaa4036b024e9ddf60e339194d3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &7965795701293661711
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7957809826432291963}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 0
+ serializedVersion: 5
+ m_Convex: 1
+ m_CookingOptions: 30
+ m_Mesh: {fileID: 4300000, guid: 308f055afb4aa1a418277f5c3d4a8073, type: 3}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_C.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_C.prefab.meta
new file mode 100644
index 0000000..a996b59
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_01_C.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b423bf7a132bc5348a001906e8cc291b
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_03.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_03.prefab
new file mode 100644
index 0000000..1aa1c43
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_03.prefab
@@ -0,0 +1,368 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &7129480598278614191
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7125484819499571371}
+ - component: {fileID: 6929771233754094019}
+ m_Layer: 0
+ m_Name: Beach_Rocks_03
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7125484819499571371
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7129480598278614191}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 7132585736562356983}
+ - {fileID: 7125464496954188397}
+ - {fileID: 7125811618948156335}
+ - {fileID: 7133038873034698207}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!205 &6929771233754094019
+LODGroup:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7129480598278614191}
+ serializedVersion: 2
+ m_LocalReferencePoint: {x: -0.05410576, y: 0.34712505, z: 0.13384008}
+ m_Size: 23.506737
+ m_FadeMode: 1
+ m_AnimateCrossFading: 1
+ m_LastLODIsBillboard: 0
+ m_LODs:
+ - screenRelativeHeight: 0.7195744
+ fadeTransitionWidth: 0
+ renderers:
+ - renderer: {fileID: 7107020764198466059}
+ - screenRelativeHeight: 0.31735748
+ fadeTransitionWidth: 0
+ renderers:
+ - renderer: {fileID: 7107037821217791949}
+ - screenRelativeHeight: 0.01
+ fadeTransitionWidth: 0
+ renderers:
+ - renderer: {fileID: 7107107215797476063}
+ m_Enabled: 1
+--- !u!1 &7129578638580487585
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7133038873034698207}
+ - component: {fileID: 7067882419984095281}
+ m_Layer: 0
+ m_Name: Collider
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7133038873034698207
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7129578638580487585}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7125484819499571371}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!64 &7067882419984095281
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7129578638580487585}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 0
+ serializedVersion: 5
+ m_Convex: 0
+ m_CookingOptions: 30
+ m_Mesh: {fileID: 4300006, guid: 741f96502db525040bf3b8d7c17b91ad, type: 3}
+--- !u!1 &7130365165781936757
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7125811618948156335}
+ - component: {fileID: 7100665154125361983}
+ - component: {fileID: 7107107215797476063}
+ m_Layer: 0
+ m_Name: RockMoutain03_LOD2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7125811618948156335
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7130365165781936757}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7125484819499571371}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &7100665154125361983
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7130365165781936757}
+ m_Mesh: {fileID: 4300006, guid: 741f96502db525040bf3b8d7c17b91ad, type: 3}
+--- !u!23 &7107107215797476063
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7130365165781936757}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 77ce9408feb236347ba84bdccd758de9, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &7130507600156305085
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7125464496954188397}
+ - component: {fileID: 7099072016875874871}
+ - component: {fileID: 7107037821217791949}
+ m_Layer: 0
+ m_Name: RockMoutain03_LOD1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7125464496954188397
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7130507600156305085}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7125484819499571371}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &7099072016875874871
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7130507600156305085}
+ m_Mesh: {fileID: 4300004, guid: 741f96502db525040bf3b8d7c17b91ad, type: 3}
+--- !u!23 &7107037821217791949
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7130507600156305085}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 77ce9408feb236347ba84bdccd758de9, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &7131167526129675643
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7132585736562356983}
+ - component: {fileID: 7100701287155549511}
+ - component: {fileID: 7107020764198466059}
+ m_Layer: 0
+ m_Name: RockMoutain03_LOD0
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7132585736562356983
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7131167526129675643}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7125484819499571371}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &7100701287155549511
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7131167526129675643}
+ m_Mesh: {fileID: 4300002, guid: 741f96502db525040bf3b8d7c17b91ad, type: 3}
+--- !u!23 &7107020764198466059
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7131167526129675643}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 77ce9408feb236347ba84bdccd758de9, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_03.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_03.prefab.meta
new file mode 100644
index 0000000..7fe5936
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Prefabs/Beach_Rocks_03.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 6e74665197120c846b9f23c9fdf26789
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources.meta
new file mode 100644
index 0000000..58b67fa
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: be61f6573d80f49cab910e5d03beba54
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes.meta
new file mode 100644
index 0000000..8da3861
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b3ad218c56bc244b59ca8c9fabb59469
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_A.FBX b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_A.FBX
new file mode 100644
index 0000000..a48172a
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_A.FBX differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_A.FBX.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_A.FBX.meta
new file mode 100644
index 0000000..272a65e
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_A.FBX.meta
@@ -0,0 +1,175 @@
+fileFormatVersion: 2
+guid: 0bb18f6e1b1695449ba0b6ab75a16ae3
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable:
+ - first:
+ 1: 100000
+ second: //RootNode
+ - first:
+ 1: 100002
+ second: MountainRocks01_A_LOD0
+ - first:
+ 1: 100004
+ second: MountainRocks01_A_LOD1
+ - first:
+ 1: 100006
+ second: MountainRocks01_A_LOD2
+ - first:
+ 4: 400000
+ second: //RootNode
+ - first:
+ 4: 400002
+ second: MountainRocks01_A_LOD0
+ - first:
+ 4: 400004
+ second: MountainRocks01_A_LOD1
+ - first:
+ 4: 400006
+ second: MountainRocks01_A_LOD2
+ - first:
+ 23: 2300000
+ second: //RootNode
+ - first:
+ 23: 2300002
+ second: MountainRocks01_A_LOD0
+ - first:
+ 23: 2300004
+ second: MountainRocks01_A_LOD1
+ - first:
+ 23: 2300006
+ second: MountainRocks01_A_LOD2
+ - first:
+ 33: 3300000
+ second: //RootNode
+ - first:
+ 33: 3300002
+ second: MountainRocks01_A_LOD0
+ - first:
+ 33: 3300004
+ second: MountainRocks01_A_LOD1
+ - first:
+ 33: 3300006
+ second: MountainRocks01_A_LOD2
+ - first:
+ 43: 4300000
+ second: MountainRocks01_A
+ - first:
+ 43: 4300002
+ second: MountainRocks01_A_LOD1
+ - first:
+ 43: 4300004
+ second: MountainRocks01_A_LOD0
+ - first:
+ 43: 4300006
+ second: MountainRocks01_A_LOD2
+ - first:
+ 205: 20500000
+ second: //RootNode
+ externalObjects: {}
+ materials:
+ materialImportMode: 0
+ materialName: 1
+ materialSearch: 1
+ materialLocation: 0
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 1
+ meshes:
+ lODScreenPercentages:
+ - 0.25
+ - 0.125
+ - 0.01
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 0
+ importVisibility: 0
+ importBlendShapes: 1
+ importCameras: 0
+ importLights: 0
+ nodeNameCollisionStrategy: 0
+ fileIdsGeneration: 1
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 1
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 0
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 0
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 0
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 0
+ importBlendShapeDeformPercent: 0
+ remapMaterialsIfMaterialImportModeIsNone: 1
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_C.FBX b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_C.FBX
new file mode 100644
index 0000000..a455d53
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_C.FBX differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_C.FBX.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_C.FBX.meta
new file mode 100644
index 0000000..8e04c75
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainRocks01_C.FBX.meta
@@ -0,0 +1,124 @@
+fileFormatVersion: 2
+guid: 308f055afb4aa1a418277f5c3d4a8073
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable:
+ - first:
+ 1: 100000
+ second: //RootNode
+ - first:
+ 4: 400000
+ second: //RootNode
+ - first:
+ 23: 2300000
+ second: //RootNode
+ - first:
+ 33: 3300000
+ second: //RootNode
+ - first:
+ 43: 4300000
+ second: MountainRocks01_C
+ externalObjects: {}
+ materials:
+ materialImportMode: 0
+ materialName: 1
+ materialSearch: 1
+ materialLocation: 0
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 1
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 0
+ importVisibility: 0
+ importBlendShapes: 1
+ importCameras: 0
+ importLights: 0
+ nodeNameCollisionStrategy: 0
+ fileIdsGeneration: 1
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 1
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 0
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 0
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 0
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 0
+ importBlendShapeDeformPercent: 0
+ remapMaterialsIfMaterialImportModeIsNone: 1
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainsRocks03.FBX b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainsRocks03.FBX
new file mode 100644
index 0000000..f8228ae
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainsRocks03.FBX differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainsRocks03.FBX.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainsRocks03.FBX.meta
new file mode 100644
index 0000000..d2972bd
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Meshes/MountainsRocks03.FBX.meta
@@ -0,0 +1,175 @@
+fileFormatVersion: 2
+guid: 741f96502db525040bf3b8d7c17b91ad
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable:
+ - first:
+ 1: 100000
+ second: //RootNode
+ - first:
+ 1: 100002
+ second: RockMoutain03_LOD0
+ - first:
+ 1: 100004
+ second: RockMoutain03_LOD1
+ - first:
+ 1: 100006
+ second: RockMoutain03_LOD2
+ - first:
+ 4: 400000
+ second: //RootNode
+ - first:
+ 4: 400002
+ second: RockMoutain03_LOD0
+ - first:
+ 4: 400004
+ second: RockMoutain03_LOD1
+ - first:
+ 4: 400006
+ second: RockMoutain03_LOD2
+ - first:
+ 23: 2300000
+ second: //RootNode
+ - first:
+ 23: 2300002
+ second: RockMoutain03_LOD0
+ - first:
+ 23: 2300004
+ second: RockMoutain03_LOD1
+ - first:
+ 23: 2300006
+ second: RockMoutain03_LOD2
+ - first:
+ 33: 3300000
+ second: //RootNode
+ - first:
+ 33: 3300002
+ second: RockMoutain03_LOD0
+ - first:
+ 33: 3300004
+ second: RockMoutain03_LOD1
+ - first:
+ 33: 3300006
+ second: RockMoutain03_LOD2
+ - first:
+ 43: 4300000
+ second: RockMoutain03
+ - first:
+ 43: 4300002
+ second: RockMoutain03_LOD0
+ - first:
+ 43: 4300004
+ second: RockMoutain03_LOD1
+ - first:
+ 43: 4300006
+ second: RockMoutain03_LOD2
+ - first:
+ 205: 20500000
+ second: //RootNode
+ externalObjects: {}
+ materials:
+ materialImportMode: 0
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 0
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 1
+ meshes:
+ lODScreenPercentages:
+ - 0.25
+ - 0.125
+ - 0.01
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 0
+ importVisibility: 0
+ importBlendShapes: 1
+ importCameras: 0
+ importLights: 0
+ nodeNameCollisionStrategy: 0
+ fileIdsGeneration: 1
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 1
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 0
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 0
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 0
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 0
+ importBlendShapeDeformPercent: 0
+ remapMaterialsIfMaterialImportModeIsNone: 1
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Source.txt b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Source.txt
new file mode 100644
index 0000000..a7ab794
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Source.txt
@@ -0,0 +1,3 @@
+Photoscanned MoutainsRocks PBR by The Tales Factory
+Standard Unity Asset Store EULA
+https://assetstore.unity.com/packages/3d/environments/landscapes/photoscanned-moutainsrocks-pbr-130876
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Source.txt.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Source.txt.meta
new file mode 100644
index 0000000..6529c86
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Source.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a171a6bab4e3f436590465d93cc2c44d
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures.meta
new file mode 100644
index 0000000..d0cba92
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4fc7eb14d5d974f1b9c1dd1afa3eed0a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Albedo.tga b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Albedo.tga
new file mode 100644
index 0000000..f579684
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Albedo.tga differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Albedo.tga.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Albedo.tga.meta
new file mode 100644
index 0000000..64d3032
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Albedo.tga.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: 61b5a5de5f22277438332dd10549bb81
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 16
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Normal.tga b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Normal.tga
new file mode 100644
index 0000000..aab382f
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Normal.tga differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Normal.tga.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Normal.tga.meta
new file mode 100644
index 0000000..1435875
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Normal.tga.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: da86c28217cf3de43a76d7731a124ff6
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 16
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 1
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Occlusion.tga b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Occlusion.tga
new file mode 100644
index 0000000..4b8045d
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Occlusion.tga differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Occlusion.tga.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Occlusion.tga.meta
new file mode 100644
index 0000000..86ea1be
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks01_MountainsRocks01_Occlusion.tga.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: e1c6267808eb2564b9064f1ed5106b2f
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Albedo.tga b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Albedo.tga
new file mode 100644
index 0000000..88b7c0e
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Albedo.tga differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Albedo.tga.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Albedo.tga.meta
new file mode 100644
index 0000000..19950c9
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Albedo.tga.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: 1e4248cafbd551c46a42d2d549782e16
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 16
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Normal.tga b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Normal.tga
new file mode 100644
index 0000000..1e60980
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Normal.tga differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Normal.tga.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Normal.tga.meta
new file mode 100644
index 0000000..2e14589
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Normal.tga.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: 241ad574a42e48043b18246233402ac6
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 16
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 1
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Occlusion.tga b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Occlusion.tga
new file mode 100644
index 0000000..061e36d
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Occlusion.tga differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Occlusion.tga.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Occlusion.tga.meta
new file mode 100644
index 0000000..013fc48
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Props/PhotoscannedMountainsRocksPBR/Sources/Textures/MountainsRocks03_RockMoutain03_Occlusion.tga.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: a123b5c937d22f149beaa4a596f77717
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 16
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Scenes.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Scenes.meta
new file mode 100644
index 0000000..64d14cd
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8bad53bfa8f22416fbbee48d4675e9eb
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Scenes/Beach.unity b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Scenes/Beach.unity
new file mode 100644
index 0000000..923babf
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Scenes/Beach.unity
@@ -0,0 +1,247 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 2100000, guid: 3cc19cc9306194b059fe31ca3c4a841b, type: 2}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 4890085278179872738, guid: 6e72aca972f324f7886200f86939d735,
+ type: 2}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &34390402
+GameObject:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 34390404}
+ - component: {fileID: 34390403}
+ m_Layer: 0
+ m_Name: StaticLightingSky
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &34390403
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 34390402}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 441482e8936e35048a1dffac814e3ef8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Profile: {fileID: 0}
+ m_StaticLightingSkyUniqueID: 0
+ m_StaticLightingCloudsUniqueID: 0
+ m_StaticLightingVolumetricClouds: 0
+--- !u!4 &34390404
+Transform:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 34390402}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &4120667251611423247
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 6722545905680127086, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6722545905680127086, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6722545905680127086, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6722545905680127086, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 6722545905680127086, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6722545905680127086, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6722545905680127086, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6722545905680127086, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6722545905680127086, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6722545905680127086, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8802985210330865214, guid: 608e3429fd0c14b53b4116191f6dabe8,
+ type: 3}
+ propertyPath: m_Name
+ value: Scene
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 608e3429fd0c14b53b4116191f6dabe8, type: 3}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 34390404}
+ - {fileID: 4120667251611423247}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Scenes/Beach.unity.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Scenes/Beach.unity.meta
new file mode 100644
index 0000000..55a70ce
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Scenes/Beach.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4e90eaa0c0f384ba98dd8ddb10bd1a19
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings.meta
new file mode 100644
index 0000000..11762bf
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f659fb00221e245d6b950f6faa0542a1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Atmosphere.asset b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Atmosphere.asset
new file mode 100644
index 0000000..c46567e
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Atmosphere.asset
@@ -0,0 +1,137 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
+ m_Name: Beach_Atmosphere
+ m_EditorClassIdentifier:
+ components:
+ - {fileID: 5979967998024641912}
+--- !u!114 &5979967998024641912
+MonoBehaviour:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 59b6606ef2548734bb6d11b9d160bc7e, type: 3}
+ m_Name: HDRISky
+ m_EditorClassIdentifier:
+ active: 1
+ rotation:
+ m_OverrideState: 1
+ m_Value: 12
+ skyIntensityMode:
+ m_OverrideState: 0
+ m_Value: 0
+ exposure:
+ m_OverrideState: 0
+ m_Value: 0
+ multiplier:
+ m_OverrideState: 0
+ m_Value: 1
+ upperHemisphereLuxValue:
+ m_OverrideState: 0
+ m_Value: 1
+ upperHemisphereLuxColor:
+ m_OverrideState: 0
+ m_Value: {x: 0, y: 0, z: 0}
+ desiredLuxValue:
+ m_OverrideState: 0
+ m_Value: 20000
+ updateMode:
+ m_OverrideState: 0
+ m_Value: 0
+ updatePeriod:
+ m_OverrideState: 0
+ m_Value: 0
+ includeSunInBaking:
+ m_OverrideState: 0
+ m_Value: 0
+ hdriSky:
+ m_OverrideState: 0
+ m_Value: {fileID: 0}
+ distortionMode:
+ m_OverrideState: 0
+ m_Value: 0
+ flowmap:
+ m_OverrideState: 0
+ m_Value: {fileID: 0}
+ upperHemisphereOnly:
+ m_OverrideState: 0
+ m_Value: 1
+ scrollOrientation:
+ m_OverrideState: 0
+ m_Value:
+ mode: 1
+ customValue: 0
+ additiveValue: 0
+ multiplyValue: 1
+ scrollSpeed:
+ m_OverrideState: 0
+ m_Value:
+ mode: 1
+ customValue: 100
+ additiveValue: 0
+ multiplyValue: 1
+ enableBackplate:
+ m_OverrideState: 0
+ m_Value: 0
+ backplateType:
+ m_OverrideState: 0
+ m_Value: 0
+ groundLevel:
+ m_OverrideState: 0
+ m_Value: 0
+ scale:
+ m_OverrideState: 0
+ m_Value: {x: 32, y: 32}
+ projectionDistance:
+ m_OverrideState: 0
+ m_Value: 16
+ plateRotation:
+ m_OverrideState: 0
+ m_Value: 0
+ plateTexRotation:
+ m_OverrideState: 0
+ m_Value: 0
+ plateTexOffset:
+ m_OverrideState: 0
+ m_Value: {x: 0, y: 0}
+ blendAmount:
+ m_OverrideState: 0
+ m_Value: 0
+ shadowTint:
+ m_OverrideState: 0
+ m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ pointLightShadow:
+ m_OverrideState: 0
+ m_Value: 0
+ dirLightShadow:
+ m_OverrideState: 0
+ m_Value: 0
+ rectLightShadow:
+ m_OverrideState: 0
+ m_Value: 0
+ m_SkyVersion: 1
+ enableDistortion:
+ m_OverrideState: 0
+ m_Value: 0
+ procedural:
+ m_OverrideState: 0
+ m_Value: 1
+ scrollDirection:
+ m_OverrideState: 0
+ m_Value: 0
+ m_ObsoleteScrollSpeed:
+ m_OverrideState: 0
+ m_Value: 1
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Atmosphere.asset.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Atmosphere.asset.meta
new file mode 100644
index 0000000..9f0d8d2
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Atmosphere.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e9a93ddf7b06549febe0f3094eb3cefe
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Lod_Foam.asset b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Lod_Foam.asset
new file mode 100644
index 0000000..f270f2a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Lod_Foam.asset
@@ -0,0 +1,23 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 03aa24b56404b45a190a2cfc0c7cc100, type: 3}
+ m_Name: Beach_Lod_Foam
+ m_EditorClassIdentifier:
+ _Version: 0
+ _Maximum: Infinity
+ _FoamFadeRate: 0.2
+ _WaveFoamStrength: 1
+ _WaveFoamCoverage: 0.55
+ _FilterWaves: 2
+ _ShorelineFoamMaximumDepth: 0.65
+ _ShorelineFoamStrength: 0.15
+ _ShorelineFoamPriming: 5
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Lod_Foam.asset.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Lod_Foam.asset.meta
new file mode 100644
index 0000000..8a6d825
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Settings/Beach_Lod_Foam.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0a2c1b990ef0647a383d218455508a27
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain.meta
new file mode 100644
index 0000000..80b173c
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 67f25b828696342cb9a39c030c2065d7
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Beach_Terrain.asset b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Beach_Terrain.asset
new file mode 100644
index 0000000..1a1e8e7
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Beach_Terrain.asset differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Beach_Terrain.asset.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Beach_Terrain.asset.meta
new file mode 100644
index 0000000..2861e93
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Beach_Terrain.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 795a7e9d9baf8408c88e4bf9bb76538e
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Sand.terrainlayer b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Sand.terrainlayer
new file mode 100644
index 0000000..5e46db0
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Sand.terrainlayer
@@ -0,0 +1,22 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1953259897 &8574412962073106934
+TerrainLayer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Sand
+ m_DiffuseTexture: {fileID: 2800000, guid: 3b2f0be8bf51544b9ae8c7c06b811ea1, type: 3}
+ m_NormalMapTexture: {fileID: 2800000, guid: eed074426350a4772aa6d43fa8ba1c15, type: 3}
+ m_MaskMapTexture: {fileID: 0}
+ m_TileSize: {x: 2, y: 2}
+ m_TileOffset: {x: 0, y: 0}
+ m_Specular: {r: 0, g: 0, b: 0, a: 0}
+ m_Metallic: 0
+ m_Smoothness: 0
+ m_NormalScale: 1
+ m_DiffuseRemapMin: {x: 0, y: 0, z: 0, w: 0}
+ m_DiffuseRemapMax: {x: 1, y: 1, z: 1, w: 1}
+ m_MaskMapRemapMin: {x: 0, y: 0, z: 0, w: 0}
+ m_MaskMapRemapMax: {x: 1, y: 1, z: 1, w: 1}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Sand.terrainlayer.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Sand.terrainlayer.meta
new file mode 100644
index 0000000..63f3547
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/Sand.terrainlayer.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 69230bc75e6d0430287e5109a977e3c6
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 8574412962073106934
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/WetSand.terrainlayer b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/WetSand.terrainlayer
new file mode 100644
index 0000000..71cb213
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/WetSand.terrainlayer
@@ -0,0 +1,22 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1953259897 &8574412962073106934
+TerrainLayer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: WetSand
+ m_DiffuseTexture: {fileID: 2800000, guid: 70c2839d32d2d4fac8a8e850e047daa8, type: 3}
+ m_NormalMapTexture: {fileID: 2800000, guid: ad064369b12714a7cad9b500076c379a, type: 3}
+ m_MaskMapTexture: {fileID: 0}
+ m_TileSize: {x: 2, y: 2}
+ m_TileOffset: {x: 0, y: 0}
+ m_Specular: {r: 0, g: 0, b: 0, a: 0}
+ m_Metallic: 0
+ m_Smoothness: 0
+ m_NormalScale: 1
+ m_DiffuseRemapMin: {x: 0, y: 0, z: 0, w: 0}
+ m_DiffuseRemapMax: {x: 1, y: 1, z: 1, w: 1}
+ m_MaskMapRemapMin: {x: 0, y: 0, z: 0, w: 0}
+ m_MaskMapRemapMax: {x: 1, y: 1, z: 1, w: 1}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/WetSand.terrainlayer.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/WetSand.terrainlayer.meta
new file mode 100644
index 0000000..10bad48
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Terrain/WetSand.terrainlayer.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4af70b5567d774bb38b44945e2d37e3f
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 8574412962073106934
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures.meta
new file mode 100644
index 0000000..3fa40b0
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 117052fe49f0c4f92a279840e083a7a9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG.meta
new file mode 100644
index 0000000..aa8ef9a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ab77f18766be24e8c97de22367eb26c8
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_Color.png b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_Color.png
new file mode 100644
index 0000000..8bac539
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_Color.png differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_Color.png.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_Color.png.meta
new file mode 100644
index 0000000..86be6c9
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_Color.png.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: 3b2f0be8bf51544b9ae8c7c06b811ea1
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_NormalGL.png b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_NormalGL.png
new file mode 100644
index 0000000..840f59c
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_NormalGL.png differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_NormalGL.png.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_NormalGL.png.meta
new file mode 100644
index 0000000..0233ceb
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Ground033_1K-PNG_NormalGL.png.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: eed074426350a4772aa6d43fa8ba1c15
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 1
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Source.txt b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Source.txt
new file mode 100644
index 0000000..10ca129
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Source.txt
@@ -0,0 +1,3 @@
+Created using Ground 033 from ambientCG.com,
+licensed under the Creative Commons CC0 1.0 Universal License.
+https://ambientcg.com/a/Ground033
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Source.txt.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Source.txt.meta
new file mode 100644
index 0000000..02939ae
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground033_1K-PNG/Source.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: aa6d31715387c4125a0b4e26fcf6e6a1
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG.meta
new file mode 100644
index 0000000..4e704d8
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d9498bd0c1ab54a22b00027002f827b5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_Color.png b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_Color.png
new file mode 100644
index 0000000..7d40796
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_Color.png differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_Color.png.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_Color.png.meta
new file mode 100644
index 0000000..4fe8c90
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_Color.png.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: 70c2839d32d2d4fac8a8e850e047daa8
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_NormalGL.png b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_NormalGL.png
new file mode 100644
index 0000000..4199545
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_NormalGL.png differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_NormalGL.png.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_NormalGL.png.meta
new file mode 100644
index 0000000..35178cd
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Ground057_1K-PNG_NormalGL.png.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: ad064369b12714a7cad9b500076c379a
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 1
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Source.txt b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Source.txt
new file mode 100644
index 0000000..1e5a369
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Source.txt
@@ -0,0 +1,3 @@
+Created using Ground 057 from ambientCG.com,
+licensed under the Creative Commons CC0 1.0 Universal License.
+https://ambientcg.com/a/Ground057
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Source.txt.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Source.txt.meta
new file mode 100644
index 0000000..4a6681e
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/Beach/Textures/Ground057_1K-PNG/Source.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f4eb3cecdc3c74568b47ce63cb899069
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River.meta
new file mode 100644
index 0000000..c56e7cc
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 61c54755c46774ee08db92b3cedb3380
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Data.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Data.meta
new file mode 100644
index 0000000..c308311
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Data.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c24adbf0c6a2a48c4a4a277601addb5b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Data/River_Spectrum.asset b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Data/River_Spectrum.asset
new file mode 100644
index 0000000..9ea7e49
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Data/River_Spectrum.asset
@@ -0,0 +1,67 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 382a5d8b1147b4e78a31353c022b8e15, type: 3}
+ m_Name: River_Spectrum
+ m_EditorClassIdentifier:
+ _Version: 0
+ _WaveDirectionVariance: 90
+ _GravityScale: 1
+ _Multiplier: 1
+ _PowerLogarithmicScales:
+ - -7.10794
+ - -6.42794
+ - -5.93794
+ - -5.27794
+ - -4.67794
+ - -3.71794
+ - -3.17794
+ - -2.60794
+ - -1.93794
+ - -1.11794
+ - -0.85794
+ - -0.36794
+ - 0.04206
+ - -8
+ _PowerDisabled: 0000000000010101010101010101
+ _ChopScales:
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ _GravityScales:
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ - 1
+ _Chop: 1.6
+ _ShowAdvancedControls: 0
+ _Model: 0
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Data/River_Spectrum.asset.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Data/River_Spectrum.asset.meta
new file mode 100644
index 0000000..3a196c4
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Data/River_Spectrum.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3a5418fe90d8b4e56ac33226cf26d531
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Materials.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Materials.meta
new file mode 100644
index 0000000..edca850
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Materials.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d10419404b9b74d1abf3c2a8091edafc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Materials/River_Water.mat b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Materials/River_Water.mat
new file mode 100644
index 0000000..02f105a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Materials/River_Water.mat
@@ -0,0 +1,109 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-5994654682710206810
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 13
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
+--- !u!114 &-4042563326011365698
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: River_Water
+ m_Shader: {fileID: -6465566751694194690, guid: 00ffe7d0b7161420897069dc6e12822c,
+ type: 3}
+ m_Parent: {fileID: -876546973899608171, guid: 00ffe7d0b7161420897069dc6e12822c,
+ type: 3}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - CREST_FLOW_ON
+ - _ALPHATEST_ON
+ - _BUILTIN_ALPHATEST_ON
+ - _BUILTIN_AlphaClip
+ - _BUILTIN_SURFACE_TYPE_TRANSPARENT
+ - _BUILTIN_TRANSPARENT_RECEIVES_SHADOWS
+ - _DOUBLESIDED_ON
+ - _ENABLE_FOG_ON_TRANSPARENT
+ - _SPECULAR_SETUP
+ - _SURFACE_TYPE_TRANSPARENT
+ - _TRANSPARENT_WRITES_MOTION_VEC
+ m_InvalidKeywords: []
+ m_LightmapFlags: 2
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 1
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ MotionVector: User
+ RenderType: Transparent
+ disabledShaderPasses:
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ - SHADOWCASTER
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs: []
+ m_Ints: []
+ m_Floats:
+ - CREST_FLOW: 1
+ - _AlphaDstBlend: 10
+ - _BUILTIN_DstBlend: 10
+ - _BUILTIN_QueueControl: 0
+ - _BUILTIN_SrcBlend: 5
+ - _BUILTIN_ZWrite: 1
+ - _Crest_CausticsEnabled: 0
+ - _Crest_FoamFeather: 1
+ - _Crest_FoamScale: 2
+ - _Crest_NormalMapEnabled: 1
+ - _Crest_NormalsStrengthOverall: 1
+ - _CullMode: 0
+ - _CullModeForward: 0
+ - _DstBlend: 10
+ - _QueueControl: 0
+ - _SrcBlend: 5
+ - _ZTestGBuffer: 3
+ m_Colors:
+ - _DoubleSidedConstants: {r: 1, g: 1, b: 1, a: 0}
+ m_BuildTextureStacks: []
+--- !u!114 &4748330692745026848
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 639247ca83abc874e893eb93af2b5e44, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 0
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Materials/River_Water.mat.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Materials/River_Water.mat.meta
new file mode 100644
index 0000000..5ccab8b
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Materials/River_Water.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3c0afaa7b76654d0b9a0090283a931a7
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Prefabs.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Prefabs.meta
new file mode 100644
index 0000000..f009fb9
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6230888ef718349ba972ecc5a33058f9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Prefabs/River_Scene.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Prefabs/River_Scene.prefab
new file mode 100644
index 0000000..ee5233f
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Prefabs/River_Scene.prefab
@@ -0,0 +1,3384 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &12359611455926996
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4088882662646388973}
+ - component: {fileID: 8427949512230513141}
+ m_Layer: 0
+ m_Name: Water
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4088882662646388973
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 12359611455926996}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 7741016946220147711}
+ - {fileID: 5972405796698518407}
+ m_Father: {fileID: 1395742053880712351}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &8427949512230513141
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 12359611455926996}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e64c239f69eea46778ded6dcc3427a34, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Layer: 4
+ _Material: {fileID: 2100000, guid: 3c0afaa7b76654d0b9a0090283a931a7, type: 2}
+ _VolumeMaterial: {fileID: 0}
+ _ChunkTemplate: {fileID: 1516456258233481520, guid: 17840562212c147d6bdb5144d35bc442,
+ type: 3}
+ _CastShadows: 0
+ _WaterBodyCulling: 1
+ _TimeSliceBoundsUpdateFrameCount: 1
+ _SurfaceSelfIntersectionFixMode: 4
+ _AllowRenderQueueSorting: 0
+ _Version: 1
+ _Camera: {fileID: 0}
+ _TimeProvider: {fileID: 0}
+ _WindZone: {fileID: 0}
+ _OverrideWindZoneWindSpeed: 0
+ _WindSpeed: 150
+ _OverrideWindZoneWindDirection: 0
+ _WindDirection: 0
+ _OverrideWindZoneWindTurbulence: 0
+ _WindTurbulence: 0.145
+ _OverrideGravity: 0
+ _GravityOverride: -9.8
+ _GravityMultiplier: 1
+ _PrimaryLight: {fileID: 0}
+ _InjectionPoint: 0
+ _WriteToColorTexture: 1
+ _WriteToDepthTexture: 1
+ _WriteMotionVectors: 1
+ _OverrideRenderHDR: 0
+ _RenderHDR: 1
+ _Surface:
+ rid: 1002
+ _ScaleRange: {x: 4, y: 256}
+ _DropDetailHeightBasedOnWaves: 0
+ _Slices: 7
+ _Resolution: 512
+ _GeometryDownSampleFactor: 2
+ _ExtentsSizeMultiplier: 100
+ _Viewpoint: {fileID: 0}
+ _CenterOfDetailDisplacementCorrection: 1
+ _SampleTerrainHeightForScale: 1
+ _ForceScaleChangeSmoothing: 0
+ _TeleportThreshold: 10
+ _AnimatedWavesLod:
+ rid: 7000983362431877122
+ _DepthLod:
+ rid: 7000983362431877123
+ _LevelLod:
+ rid: 7000983362431877124
+ _FoamLod:
+ rid: 7000983362431877125
+ _DynamicWavesLod:
+ rid: 7000983362431877126
+ _FlowLod:
+ rid: 7000983362431877127
+ _ShadowLod:
+ rid: 7000983362431877128
+ _AbsorptionLod:
+ rid: 1000
+ _ScatteringLod:
+ rid: 1001
+ _ClipLod:
+ rid: 7000983362431877129
+ _AlbedoLod:
+ rid: 7000983362431877130
+ _Reflections:
+ rid: 7000983362431877131
+ _Underwater:
+ rid: 7000983362431877132
+ _Meniscus:
+ rid: 1003
+ _Portals:
+ rid: 7000983362431877133
+ _ShowWaterProxyPlane: 0
+ _EditModeFrameRate: 30
+ _FollowSceneCamera: 1
+ _HeightQueries: 1
+ _Debug:
+ _AttachDebugGUI: 0
+ _ShowHiddenObjects: 0
+ _DisableFollowViewpoint: 0
+ _DestroyResourcesInOnDisable: 0
+ _DrawLodOutline: 0
+ _ShowDebugInformation: 0
+ _LogScaleChange: 0
+ _PauseOnScaleChange: 0
+ _IgnoreWavesForScaleChange: 0
+ _ForceNoGraphics: 0
+ _Resources: {fileID: 11400000, guid: 0817af17dea584e5382e6216db162d4a, type: 2}
+ references:
+ version: 2
+ RefIds:
+ - rid: 1000
+ type: {class: AbsorptionLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 100
+ _TextureFormat: 7
+ _ShorelineColorSource: 0
+ _ShorelineColor: {r: 1.026, g: 2.085, b: 2.5500002, a: 0.306}
+ _ShorelineColorMaximumDistance: 10
+ _ShorelineColorFalloff: 2
+ - rid: 1001
+ type: {class: ScatteringLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 200
+ _TextureFormat: 23
+ _ShorelineColorSource: 0
+ _ShorelineColor: {r: 0, g: 0.588, b: 1.2, a: 6}
+ _ShorelineColorMaximumDistance: 10
+ _ShorelineColorFalloff: 2
+ - rid: 1002
+ type: {class: SurfaceRenderer, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Version: 0
+ _Enabled: 1
+ _Layer: 4
+ _Material: {fileID: 2100000, guid: 3c0afaa7b76654d0b9a0090283a931a7, type: 2}
+ _VolumeMaterial: {fileID: 0}
+ _ChunkTemplate: {fileID: 1516456258233481520, guid: 17840562212c147d6bdb5144d35bc442,
+ type: 3}
+ _CastShadows: 0
+ _WaterBodyCulling: 1
+ _TimeSliceBoundsUpdateFrameCount: 1
+ _SurfaceSelfIntersectionFixMode: 4
+ _AllowRenderQueueSorting: 0
+ _Debug:
+ _UniformTiles: 0
+ _DisableSkirt: 0
+ - rid: 1003
+ type: {class: Meniscus, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _Layer: 4
+ _Material: {fileID: 2100000, guid: 238e45299a5ec46308e9bf99ddf67963, type: 2}
+ - rid: 7000983362431877122
+ type: {class: AnimatedWavesLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 0
+ _Resolution: 256
+ _TextureFormatMode: 200
+ _TextureFormat: 48
+ _WaveResolutionMultiplier: 2
+ _AttenuationInShallows: 1
+ _ShallowsMaximumDepth: 3
+ _CollisionSource: 2
+ _CollisionLayers: -1
+ _MaximumQueryCount: 4096
+ _BakedWaveData: {fileID: 0}
+ - rid: 7000983362431877123
+ type: {class: DepthLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 100
+ _TextureFormat: 46
+ _IncludeTerrainHeight: 0
+ _EnableSignedDistanceFields: 1
+ - rid: 7000983362431877124
+ type: {class: LevelLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 0
+ _Resolution: 256
+ _TextureFormatMode: 300
+ _TextureFormat: 45
+ - rid: 7000983362431877125
+ type: {class: FoamLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 100
+ _TextureFormat: 45
+ _SimulationFrequency: 30
+ _Prewarm: 1
+ _Settings: {fileID: 11400000, guid: ecf87873110b84378a15fbe66bb0a41b, type: 2}
+ - rid: 7000983362431877126
+ type: {class: DynamicWavesLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 0
+ _Resolution: 512
+ _TextureFormatMode: 300
+ _TextureFormat: 46
+ _SimulationFrequency: 60
+ _AttenuationInShallows: 1
+ _Settings: {fileID: 0}
+ - rid: 7000983362431877127
+ type: {class: FlowLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 1
+ _Resolution: 128
+ _TextureFormatMode: 100
+ _TextureFormat: 46
+ - rid: 7000983362431877128
+ type: {class: ShadowLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 1
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 100
+ _TextureFormat: 6
+ _SimulationFrequency: 60
+ _DynamicSoftShadows: 1
+ _SoftJitterExtinctionFactor: 0.75
+ _JitterDiameterSoft: 15
+ _CurrentFrameWeightSoft: 0.03
+ _JitterDiameterHard: 0.6
+ _CurrentFrameWeightHard: 0.15
+ _AllowNullLight: 0
+ _AllowNoShadows: 0
+ - rid: 7000983362431877129
+ type: {class: ClipLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 1
+ _Resolution: 256
+ _TextureFormatMode: 100
+ _TextureFormat: 5
+ _DefaultClippingState: 0
+ - rid: 7000983362431877130
+ type: {class: AlbedoLod, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _OverrideResolution: 1
+ _Resolution: 768
+ _TextureFormatMode: 100
+ _TextureFormat: 8
+ - rid: 7000983362431877131
+ type: {class: WaterReflections, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Version: 0
+ _Enabled: 0
+ _Mode: 0
+ _Layers:
+ serializedVersion: 2
+ m_Bits: 1
+ _Resolution: 256
+ _RenderOnlySingleCamera: 0
+ _Sky: 0
+ _DisablePixelLights: 1
+ _DisableShadows: 1
+ _HDR: 1
+ _Stencil: 0
+ _AllowMSAA: 0
+ _QualitySettingsOverride:
+ _OverrideLodBias: 0
+ _LodBias: 0.5
+ _OverrideMaximumLodLevel: 0
+ _MaximumLodLevel: 1
+ _OverrideTerrainPixelError: 0
+ _TerrainPixelError: 10
+ _ClipPlaneOffset: 0
+ _FarClipPlane: 1000
+ _DisableOcclusionCulling: 1
+ _RefreshPerFrames: 1
+ _FrameRefreshOffset: 0
+ _UseObliqueMatrix: 1
+ _NonObliqueNearSurface: 0
+ _NonObliqueNearSurfaceThreshold: 0.05
+ _Debug:
+ _ShowHiddenObjects: 0
+ _DisableRecursiveRendering: 0
+ - rid: 7000983362431877132
+ type: {class: UnderwaterRenderer, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Version: 0
+ _Enabled: 1
+ _Layer: 4
+ _Material: {fileID: 2100000, guid: f2b096e4d95e646c49d48ece0afa0547, type: 2}
+ _EnvironmentalLightingEnable: 0
+ _EnvironmentalLightingWeight: 1
+ _EnvironmentalLightingVolumeProfile: {fileID: 0}
+ _AllCameras: 0
+ _CopyWaterMaterialParametersEachFrame: 1
+ _FarPlaneMultiplier: 0.68
+ _CullLimit: 0.001
+ _Debug:
+ _VisualizeMask: 0
+ _DisableMask: 0
+ _VisualizeStencil: 0
+ _DisableHeightAboveWaterOptimization: 0
+ _DisableArtifactCorrection: 0
+ _OnlyReflectionCameras: 0
+ - rid: 7000983362431877133
+ type: {class: PortalRenderer, ns: WaveHarmonic.Crest.Portals, asm: WaveHarmonic.Crest}
+ data:
+ _Enabled: 0
+ _Mode: 2
+ _Geometry: {fileID: 0}
+ _Invert: 0
+--- !u!1 &1020980343231628668
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8467863637850930443}
+ - component: {fileID: 1940856061548157001}
+ m_Layer: 0
+ m_Name: Lower Lake
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8467863637850930443
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1020980343231628668}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
+ m_LocalPosition: {x: 82.5, y: 5.11, z: 20.48}
+ m_LocalScale: {x: 20, y: 40, z: 10}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 5972405796698518407}
+ m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
+--- !u!114 &1940856061548157001
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1020980343231628668}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a4edd034314af4679ba066d79580dc1d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Mode: 7
+ _Weight: 1
+ _Queue: 0
+ _Blend: 0
+ _FeatherWidth: 0.1
+ _FollowHorizontalWaveMotion: 0
+ _Data:
+ rid: 1790563051476090880
+ _DrawBounds: 0
+ _OverrideHeight: 0
+ _HeightRange: {x: -100, y: 100}
+ _Version: 1
+ references:
+ version: 2
+ RefIds:
+ - rid: 1790563051476090880
+ type: {class: LevelGeometryLodInputData, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Input: {fileID: 1940856061548157001}
+ _Geometry: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1095983012310862697
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1797437123073308413}
+ m_Layer: 0
+ m_Name: Rocks
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1797437123073308413
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1095983012310862697}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 8126386832092772026}
+ - {fileID: 2443760194990343673}
+ - {fileID: 576760522377659833}
+ - {fileID: 191219875336768422}
+ - {fileID: 3741208176659308090}
+ - {fileID: 8254921078966363976}
+ - {fileID: 589313464002553648}
+ - {fileID: 4179549508784535428}
+ - {fileID: 2597417704489697020}
+ - {fileID: 6336324341114153421}
+ - {fileID: 6559091743067559027}
+ - {fileID: 9014185170525150822}
+ - {fileID: 1494439052992245319}
+ - {fileID: 316432520812771183}
+ - {fileID: 2831518371175514555}
+ - {fileID: 8851709656945360763}
+ - {fileID: 8795637539784805971}
+ - {fileID: 3328043941943069902}
+ - {fileID: 3653953723876183928}
+ - {fileID: 5030452250825116913}
+ - {fileID: 3957633230822681217}
+ - {fileID: 8414354562148722942}
+ - {fileID: 4814173199877216585}
+ m_Father: {fileID: 2963044197998998021}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1667316526013732550
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8518063449728252689}
+ m_Layer: 0
+ m_Name: Lighting
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8518063449728252689
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1667316526013732550}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 6813415163750874970}
+ - {fileID: 3390121929715549705}
+ - {fileID: 4219678492117686297}
+ m_Father: {fileID: 1395742053880712351}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &3388084798414284514
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2996559850084528445}
+ - component: {fileID: 4821652768968063271}
+ m_Layer: 0
+ m_Name: Upper Lake
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2996559850084528445
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3388084798414284514}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
+ m_LocalPosition: {x: 130.05, y: 16.86, z: 10.55}
+ m_LocalScale: {x: 17.37, y: 28.73, z: 10}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 5972405796698518407}
+ m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
+--- !u!114 &4821652768968063271
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3388084798414284514}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a4edd034314af4679ba066d79580dc1d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Mode: 7
+ _Weight: 1
+ _Queue: 0
+ _Blend: 0
+ _FeatherWidth: 0.1
+ _FollowHorizontalWaveMotion: 0
+ _Data:
+ rid: 1790563051476090929
+ _DrawBounds: 0
+ _OverrideHeight: 0
+ _HeightRange: {x: -100, y: 100}
+ _Version: 1
+ references:
+ version: 2
+ RefIds:
+ - rid: 1790563051476090929
+ type: {class: LevelGeometryLodInputData, ns: WaveHarmonic.Crest, asm: WaveHarmonic.Crest}
+ data:
+ _Input: {fileID: 4821652768968063271}
+ _Geometry: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &5807071863337433624
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7741016946220147711}
+ - component: {fileID: 8764914699052382764}
+ m_Layer: 0
+ m_Name: Waves
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7741016946220147711
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5807071863337433624}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 4088882662646388973}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &8764914699052382764
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5807071863337433624}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 88bb6e05d83b64105a4d8cbd478f5916, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Mode: 5
+ _Weight: 1
+ _Queue: 0
+ _Blend: 0
+ _FeatherWidth: 0.1
+ _FollowHorizontalWaveMotion: 0
+ _Data:
+ rid: -2
+ _DrawBounds: 0
+ _Spectrum: {fileID: 11400000, guid: 3a5418fe90d8b4e56ac33226cf26d531, type: 2}
+ _EvaluateSpectrumAtRunTimeEveryFrame: 0
+ _RespectShallowWaterAttenuation: 1
+ _OverrideGlobalWindDirection: 1
+ _WaveDirectionHeadingAngle: 125.12195
+ _OverrideGlobalWindSpeed: 0
+ _WindSpeed: 20
+ _Resolution: 128
+ _DrawSlicesInEditor: 0
+ _AlphaSource: 0
+ _OverrideGlobalWindTurbulence: 1
+ _WindTurbulence: 0.145
+ _WindAlignment: 0
+ _TimeLoopLength: Infinity
+ _MaximumVerticalDisplacement: 10
+ _MaximumHorizontalDisplacement: 15
+ _EnableBakedCollision: 0
+ _TimeResolution: 4
+ _SmallestWavelengthRequired: 2
+ _BakedTimeLoopLength: 32
+ _Version: 2
+ references:
+ version: 2
+ RefIds:
+ - rid: -2
+ type: {class: , ns: , asm: }
+--- !u!1 &6209579273066343583
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1395742053880712351}
+ m_Layer: 0
+ m_Name: River_Scene
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1395742053880712351
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6209579273066343583}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2119564229340644841}
+ - {fileID: 8518063449728252689}
+ - {fileID: 4088882662646388973}
+ - {fileID: 2963044197998998021}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7553694119167565188
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7347186310487439012}
+ - component: {fileID: 9173118453130709105}
+ - component: {fileID: 1718093580076659466}
+ m_Layer: 31
+ m_Name: Terrain
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 2147483647
+ m_IsActive: 1
+--- !u!4 &7347186310487439012
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7553694119167565188}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 50, y: 0, z: -50}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children: []
+ m_Father: {fileID: 2963044197998998021}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!218 &9173118453130709105
+Terrain:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7553694119167565188}
+ m_Enabled: 1
+ serializedVersion: 6
+ m_TerrainData: {fileID: 15600000, guid: d45a468890d48485b99fca5ee978b769, type: 2}
+ m_TreeDistance: 5000
+ m_TreeBillboardDistance: 50
+ m_TreeCrossFadeLength: 5
+ m_TreeMaximumFullLODCount: 50
+ m_DetailObjectDistance: 80
+ m_DetailObjectDensity: 1
+ m_HeightmapPixelError: 5
+ m_SplatMapDistance: 1000
+ m_HeightmapMinimumLODSimplification: 0
+ m_HeightmapMaximumLOD: 0
+ m_ShadowCastingMode: 2
+ m_DrawHeightmap: 1
+ m_DrawInstanced: 0
+ m_DrawTreesAndFoliage: 1
+ m_StaticShadowCaster: 0
+ m_IgnoreQualitySettings: 0
+ m_ReflectionProbeUsage: 1
+ m_MaterialTemplate: {fileID: 10650, guid: 0000000000000000f000000000000000, type: 0}
+ m_BakeLightProbesForTrees: 1
+ m_PreserveTreePrototypeLayers: 0
+ m_DeringLightProbesForTrees: 1
+ m_ReceiveGI: 1
+ m_ScaleInLightmap: 0.0256
+ m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
+ m_GroupingID: 0
+ m_RenderingLayerMask: 1
+ m_AllowAutoConnect: 1
+ m_EnableHeightmapRayTracing: 1
+ m_EnableTreesAndDetailsRayTracing: 0
+ m_TreeMotionVectorModeOverride: 3
+--- !u!154 &1718093580076659466
+TerrainCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7553694119167565188}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_TerrainData: {fileID: 15600000, guid: d45a468890d48485b99fca5ee978b769, type: 2}
+ m_EnableTreeColliders: 1
+--- !u!1 &8401688394622220963
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5972405796698518407}
+ m_Layer: 0
+ m_Name: Bodies
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &5972405796698518407
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8401688394622220963}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 6364306438577549498}
+ - {fileID: 2996559850084528445}
+ - {fileID: 8467863637850930443}
+ m_Father: {fileID: 4088882662646388973}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8639566901132044709
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2119564229340644841}
+ m_Layer: 0
+ m_Name: Camera
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2119564229340644841
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8639566901132044709}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 3027092538604765390}
+ - {fileID: 1743139209657707752}
+ m_Father: {fileID: 1395742053880712351}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8989256522517758903
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6364306438577549498}
+ - component: {fileID: 9192577471958641087}
+ - component: {fileID: 7940750380843477946}
+ m_Layer: 0
+ m_Name: River
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6364306438577549498
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8989256522517758903}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 107.7, y: 0, z: -24.9}
+ m_LocalScale: {x: 70, y: 1, z: 70}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 5972405796698518407}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &9192577471958641087
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8989256522517758903}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9a87083040be2a947bf2d5f126a800e4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Version: 0
+ _Preset: 2
+ _Width: 70
+ _Depth: 1
+ _Placement: 0
+ _PlaceAtSeaLevel: 1
+ _Friction: 0.1
+ _DynamicSeabed: 0
+ _SampleDepthProbeDirectly: 1
+ _SampleWaterLevelInputsDirectly: 1
+ _AdditionalWater: 0
+ _DrainWaterAtBoundaries: 0
+ _Evaporation: 0
+ _BlendDepthRange: {x: 0, y: 4}
+ _BlendPushUpStrength: 1
+ _EnableDistanceCulling: 0
+ _CullDistance: 75
+ _CullTransitionSpeed: 0.5
+ _TimeStep: 0.01666667
+ _CourantNumber: 0.475
+ _OvershootReductionStrength: 0.25
+ _TexelSize: 0.0625
+ _MaximumResolution: 768
+ _BlurShapeForRender: 1
+ _BlurMaskIterations: 10
+ _WaterEdgeMargin: 1
+ _WaterEdgeMarginWidth: 8
+ _WaterEdgeMarginBakedWidth: 32
+ _Mode: 0
+ _InjectShape: 2
+ _LevelTexture: {fileID: 2800000, guid: 24c6e7f123e1941b59d237d1abe05628, type: 3}
+ _MaximumDisplacementVertical: 100
+ _PaddingWidth: 2
+ _InjectFlow: 1
+ _FlowTexture: {fileID: 2800000, guid: 450d37331825842f388924ea69dc9b30, type: 3}
+ _FlowStrength: 1
+ _InjectFoam: 1
+ _FoamTexture: {fileID: 2800000, guid: ec916cbff6aad41fd8fd9d58b3dbd40e, type: 3}
+ _FoamStrength: 0.3
+ _Debug:
+ _SkipUpdate: 0
+ _SkipUpdateHeight: 0
+ _SkipUpdateVelocities: 0
+ _SkipAdvect: 0
+ _SkipAdvectHeights: 0
+ _DisableStabilityImprovements: 0
+ _DisableMacCormackScheme: 0
+ _DisableMacCormackSchemeForHeight: 0
+ _DisableUpwindHeight: 0
+ _DisableDepthLimiter: 0
+ _DisableOvershootReduction: 0
+ _AlwaysExecuteSimulation: 1
+ _SkipInjectShape: 0
+ _ShowSimulationData: 0
+ _ShowSimulationDataInScene: 0
+--- !u!114 &7940750380843477946
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8989256522517758903}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 70deb49b538e247b9ab1bf7773d16809, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _Type: 0
+ _RefreshMode: 0
+ _Layers:
+ serializedVersion: 2
+ m_Bits: 2147483649
+ _Resolution: 1024
+ _CaptureRange: {x: -1000, y: 100}
+ _FillHolesCaptureHeight: 0
+ _EnableBackFaceInclusion: 1
+ _QualitySettingsOverride:
+ _OverrideLodBias: 1
+ _LodBias: Infinity
+ _OverrideMaximumLodLevel: 1
+ _MaximumLodLevel: 0
+ _OverrideTerrainPixelError: 1
+ _TerrainPixelError: 0
+ _SavedTexture: {fileID: 0}
+ _GenerateSignedDistanceField: 1
+ _AdditionalJumpFloodRounds: 7
+ _Debug:
+ _ForceAlwaysUpdateDebug: 0
+ _ShowHiddenObjects: 0
+ _ShowSimulationDataInScene: 0
+ _Version: 1
+--- !u!1 &9019526915926749875
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2963044197998998021}
+ m_Layer: 0
+ m_Name: Environment
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2963044197998998021
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9019526915926749875}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 7347186310487439012}
+ - {fileID: 1797437123073308413}
+ m_Father: {fileID: 1395742053880712351}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &66573576061047372
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 99.42
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.27
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -22.1
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 648533235605357392, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_2
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 40233e759b9f549539f7d447b2f7c0af, type: 3}
+--- !u!4 &191219875336768422 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ m_PrefabInstance: {fileID: 66573576061047372}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &270446227837381359
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.4999998
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.5000002
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 100.71
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.62
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -21.23
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.98536944
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.15241411
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.07537305
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.011658489
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -17.374
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -9.17
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 2.76
+ objectReference: {fileID: 0}
+ - target: {fileID: 8792257075096557341, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_4
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 84abedbc7f85f4f469c7220fb2bfc78f, type: 3}
+--- !u!4 &8254921078966363976 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ m_PrefabInstance: {fileID: 270446227837381359}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &579715078549205250
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2119564229340644841}
+ m_Modifications:
+ - target: {fileID: 2452750316707852747, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_Name
+ value: Camera
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 98.77208
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 21.526186
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -35.098743
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: -0.95872533
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.22431105
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.1701575
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.039709464
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: c26fe2b4fef6c484089497b549dd6b04, type: 3}
+--- !u!4 &3027092538604765390 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2452750316707852748, guid: c26fe2b4fef6c484089497b549dd6b04,
+ type: 3}
+ m_PrefabInstance: {fileID: 579715078549205250}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1296919683427703102
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 6945626157949959423, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_7 (3)
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 3.3400002
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 3.68
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 126.88
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 15.15
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -16.21
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: -0.5916758
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.80617607
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -252.552
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_ConstrainProportionsScale
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8602d844b80dd46adb55fb29573b3c60, type: 3}
+--- !u!4 &8851709656945360763 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ m_PrefabInstance: {fileID: 1296919683427703102}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1599010118900004899
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 6945626157949959423, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_7
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 89.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 5.81
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -12.88
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8602d844b80dd46adb55fb29573b3c60, type: 3}
+--- !u!4 &9014185170525150822 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ m_PrefabInstance: {fileID: 1599010118900004899}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &2300715405984599739
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 6945626157949959423, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_7 (3)
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 102.066
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.747
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -22.767
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.8235286
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.11890595
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.14937805
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.53418
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 2.078
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 21.92
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 66.341
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8602d844b80dd46adb55fb29573b3c60, type: 3}
+--- !u!4 &8414354562148722942 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ m_PrefabInstance: {fileID: 2300715405984599739}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &2783412585406325866
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.4999998
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.5000002
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 100.71
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.62
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -21.23
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.98536944
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.15241411
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.07537305
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.011658489
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -17.374
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -9.17
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 2.76
+ objectReference: {fileID: 0}
+ - target: {fileID: 8792257075096557341, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_4 (1)
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 84abedbc7f85f4f469c7220fb2bfc78f, type: 3}
+--- !u!4 &6336324341114153421 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ m_PrefabInstance: {fileID: 2783412585406325866}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &2791411040278310954
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 8570444726160424675, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_6 (4)
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 93.71
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.49
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -18.43
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.8103254
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.5859802
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -71.745
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8a46b87981fbc476abf4f6d9418c8096, type: 3}
+--- !u!4 &6559091743067559027 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ m_PrefabInstance: {fileID: 2791411040278310954}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &3019491582817074956
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 6945626157949959423, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_7 (2)
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.4999999
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.49999985
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 101.589
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.745
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -23.307
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.56161517
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.2085993
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.75056994
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.27878234
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 10.614
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 102.56
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -39.581
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8602d844b80dd46adb55fb29573b3c60, type: 3}
+--- !u!4 &4814173199877216585 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ m_PrefabInstance: {fileID: 3019491582817074956}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &3379884686758783668
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 6945626157949959423, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_7
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 102.73
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 7.024
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -22.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8602d844b80dd46adb55fb29573b3c60, type: 3}
+--- !u!4 &5030452250825116913 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ m_PrefabInstance: {fileID: 3379884686758783668}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &3496177175325456845
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 8518063449728252689}
+ m_Modifications:
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2942909709672342223, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ propertyPath: m_Name
+ value: Atmosphere
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 63a4b7e65d06948649ac3e10077d8c2e, type: 3}
+--- !u!4 &3390121929715549705 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2272289698115174340, guid: 63a4b7e65d06948649ac3e10077d8c2e,
+ type: 3}
+ m_PrefabInstance: {fileID: 3496177175325456845}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &3530451208955336338
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 102.87
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.83
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -23.42
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: -0.06747475
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.67349696
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.06302713
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.73340076
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -190.564
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -94.951996
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -0.8200073
+ objectReference: {fileID: 0}
+ - target: {fileID: 648533235605357392, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_2 (1)
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 40233e759b9f549539f7d447b2f7c0af, type: 3}
+--- !u!4 &3653953723876183928 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ m_PrefabInstance: {fileID: 3530451208955336338}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &3576047382928426960
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 98.09
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.46
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -20.12
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.9701297
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.018770529
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.2418144
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.0046787397
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 2.217
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -27.993
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 648533235605357392, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_2 (1)
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 40233e759b9f549539f7d447b2f7c0af, type: 3}
+--- !u!4 &3741208176659308090 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ m_PrefabInstance: {fileID: 3576047382928426960}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &4976125530228400883
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 103.15
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.78
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -20.43
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.7270538
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.13313511
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.6625324
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.12132019
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -20.754
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 84.683
+ objectReference: {fileID: 0}
+ - target: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4504680061625519859, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_8 (1)
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 4d3a638b96a0740acad16f75907743c5, type: 3}
+--- !u!4 &8126386832092772026 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3875354122211890249, guid: 4d3a638b96a0740acad16f75907743c5,
+ type: 3}
+ m_PrefabInstance: {fileID: 4976125530228400883}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &5426610739093273123
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.5000002
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.4999998
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 101.8
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 7.07
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -25.93
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.49853745
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.1063734
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.85831934
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.058591977
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -11.926
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 120.464
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -7.292
+ objectReference: {fileID: 0}
+ - target: {fileID: 8792257075096557341, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_4 (3)
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 84abedbc7f85f4f469c7220fb2bfc78f, type: 3}
+--- !u!4 &4179549508784535428 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ m_PrefabInstance: {fileID: 5426610739093273123}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &5504401948429527038
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 6945626157949959423, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_7 (2)
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 3.1699996
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 3.17
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 3.17
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 122.66
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 14.67
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -17.58
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: -0.6272076
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.38455454
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.55120254
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.39357877
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 2.78
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -275.549
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 66.741
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8602d844b80dd46adb55fb29573b3c60, type: 3}
+--- !u!4 &2831518371175514555 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ m_PrefabInstance: {fileID: 5504401948429527038}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &5613004158086531541
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 8518063449728252689}
+ m_Modifications:
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: -0.7179891
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.2974008
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.5814164
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.24083056
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5304508333967466499, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_Name
+ value: Sun
+ objectReference: {fileID: 0}
+ - target: {fileID: 8430430470315967237, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_BoundingSphereOverride.w
+ value: -1.0495928e-21
+ objectReference: {fileID: 0}
+ - target: {fileID: 8430430470315967237, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_BoundingSphereOverride.x
+ value: 4e-45
+ objectReference: {fileID: 0}
+ - target: {fileID: 8430430470315967237, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_BoundingSphereOverride.y
+ value: 4.9e-44
+ objectReference: {fileID: 0}
+ - target: {fileID: 8430430470315967237, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ propertyPath: m_BoundingSphereOverride.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 774ab582b39374a7e9d5dac8e31b9a5a, type: 3}
+--- !u!4 &6813415163750874970 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 1399345652565587599, guid: 774ab582b39374a7e9d5dac8e31b9a5a,
+ type: 3}
+ m_PrefabInstance: {fileID: 5613004158086531541}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &6144156972344210267
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.4999998
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 124.331
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 15.794
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -20.047
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.98921585
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.01122717
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.13152896
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.06345264
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0.316
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 15.168
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 7.382
+ objectReference: {fileID: 0}
+ - target: {fileID: 8792257075096557341, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_4 (4)
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 84abedbc7f85f4f469c7220fb2bfc78f, type: 3}
+--- !u!4 &2597417704489697020 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ m_PrefabInstance: {fileID: 6144156972344210267}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &6652516275202990496
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 8570444726160424675, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_6 (2)
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 106.87
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 7.17
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -20.74
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.9710375
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.23892713
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 27.646
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8a46b87981fbc476abf4f6d9418c8096, type: 3}
+--- !u!4 &2443760194990343673 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ m_PrefabInstance: {fileID: 6652516275202990496}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &6756618696631995588
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 6945626157949959423, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_7 (1)
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 102.87118
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.836
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -22.956854
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.58013576
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.40916535
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.6032874
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.36341527
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 2.078
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 93.6
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 66.341
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8602d844b80dd46adb55fb29573b3c60, type: 3}
+--- !u!4 &3957633230822681217 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ m_PrefabInstance: {fileID: 6756618696631995588}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &7039725011541977080
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 4960264602429190540, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_3
+ objectReference: {fileID: 0}
+ - target: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 102.08
+ objectReference: {fileID: 0}
+ - target: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 6.84
+ objectReference: {fileID: 0}
+ - target: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -22.21
+ objectReference: {fileID: 0}
+ - target: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.9255601
+ objectReference: {fileID: 0}
+ - target: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.37860078
+ objectReference: {fileID: 0}
+ - target: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 44.494
+ objectReference: {fileID: 0}
+ - target: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: b9e6050eba9c94bbe8f2b388f80cc4cd, type: 3}
+--- !u!4 &3328043941943069902 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 5736942489928739638, guid: b9e6050eba9c94bbe8f2b388f80cc4cd,
+ type: 3}
+ m_PrefabInstance: {fileID: 7039725011541977080}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &7287965007403605159
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2119564229340644841}
+ m_Modifications:
+ - target: {fileID: 6079220456006713144, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_Name
+ value: Post-Processing
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 5e01cffb9e8324147affb8e08fd5ed13, type: 3}
+--- !u!4 &1743139209657707752 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 9013060131419009103, guid: 5e01cffb9e8324147affb8e08fd5ed13,
+ type: 3}
+ m_PrefabInstance: {fileID: 7287965007403605159}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &7581181676177948419
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 8518063449728252689}
+ m_Modifications:
+ - target: {fileID: 963553959586484309, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_Name
+ value: Lighting
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: bece9afbf3ddd49059dd73ba2cc986f6, type: 3}
+--- !u!4 &4219678492117686297 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 6033288213199496986, guid: bece9afbf3ddd49059dd73ba2cc986f6,
+ type: 3}
+ m_PrefabInstance: {fileID: 7581181676177948419}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &8483257907181461984
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 8570444726160424675, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_6 (3)
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: -2
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: -2
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: -2
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 104.71
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 7.57
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -19.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.9867837
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.1620432
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -18.651
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8a46b87981fbc476abf4f6d9418c8096, type: 3}
+--- !u!4 &576760522377659833 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ m_PrefabInstance: {fileID: 8483257907181461984}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &8672732883687593913
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 101.23
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 7.1851215
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -19.72
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.9776437
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.21026824
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -24.276
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 648533235605357392, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_2
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 40233e759b9f549539f7d447b2f7c0af, type: 3}
+--- !u!4 &8795637539784805971 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 165468967546821098, guid: 40233e759b9f549539f7d447b2f7c0af,
+ type: 3}
+ m_PrefabInstance: {fileID: 8672732883687593913}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &8746596222678198935
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 2.4999998
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 2.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 2.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 103.93
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 7.07
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -25.26
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.9970338
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.010329243
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.07626529
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.00079010427
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 1.173
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -8.75
+ objectReference: {fileID: 0}
+ - target: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -0.181
+ objectReference: {fileID: 0}
+ - target: {fileID: 8792257075096557341, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_4 (2)
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 84abedbc7f85f4f469c7220fb2bfc78f, type: 3}
+--- !u!4 &589313464002553648 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 8164902521399922087, guid: 84abedbc7f85f4f469c7220fb2bfc78f,
+ type: 3}
+ m_PrefabInstance: {fileID: 8746596222678198935}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &8781939069576024886
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 6115710937068508270, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -0.009
+ objectReference: {fileID: 0}
+ - target: {fileID: 6115710937068508270, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.002
+ objectReference: {fileID: 0}
+ - target: {fileID: 6115710937068508270, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0.009
+ objectReference: {fileID: 0}
+ - target: {fileID: 8570444726160424675, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_6 (7)
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 3.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 3.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 3.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 121.88
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 14.66
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -16.57
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.4553732
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.6466548
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0.6076203
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.0725982
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 42.622
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -218.642
+ objectReference: {fileID: 0}
+ - target: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -282.012
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8a46b87981fbc476abf4f6d9418c8096, type: 3}
+--- !u!4 &316432520812771183 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 9059983223426720857, guid: 8a46b87981fbc476abf4f6d9418c8096,
+ type: 3}
+ m_PrefabInstance: {fileID: 8781939069576024886}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &9193345451966203906
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1797437123073308413}
+ m_Modifications:
+ - target: {fileID: 6945626157949959423, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_7 (1)
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: -2
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: -2
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: -2
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 88.73
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 5.67
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -11.71
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 8602d844b80dd46adb55fb29573b3c60, type: 3}
+--- !u!4 &1494439052992245319 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7721424432143853125, guid: 8602d844b80dd46adb55fb29573b3c60,
+ type: 3}
+ m_PrefabInstance: {fileID: 9193345451966203906}
+ m_PrefabAsset: {fileID: 0}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Prefabs/River_Scene.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Prefabs/River_Scene.prefab.meta
new file mode 100644
index 0000000..41c8038
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Prefabs/River_Scene.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3ef658b53e32d45c49e30f89b7eb1d6c
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props.meta
new file mode 100644
index 0000000..699c5a7
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 630dcd368e4f0496490a1e06ac5cc280
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks.meta
new file mode 100644
index 0000000..9a05d27
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5604ccf82e2f74a92baefa28bbd9aa56
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Materials.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Materials.meta
new file mode 100644
index 0000000..70ab82a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Materials.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b36c2e0f798554811af90f5fd440a3a2
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Materials/River_Rocks.mat b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Materials/River_Rocks.mat
new file mode 100644
index 0000000..e4395dd
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Materials/River_Rocks.mat
@@ -0,0 +1,223 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-8809510013997332584
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 13
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
+--- !u!114 &-7341708559167123484
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 639247ca83abc874e893eb93af2b5e44, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 0
+--- !u!114 &-908390253939417639
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: River_Rocks
+ m_Shader: {fileID: -6465566751694194690, guid: 717b077102735454887bdc5c26938762,
+ type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _DISABLE_SSR_TRANSPARENT
+ - _SPECULARHIGHLIGHTS_OFF
+ m_InvalidKeywords: []
+ m_LightmapFlags: 2
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 2000
+ stringTagMap:
+ MotionVector: User
+ RenderType: Opaque
+ disabledShaderPasses:
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 2800000, guid: df4f674b58fa548b28be7c7dbdafae8d, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: 9d09cb7a68b6f43d2a6c67d65e0fe8ca, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 2800000, guid: 1716dcefd808e41ffb65bfe48f365d4b, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AddPrecomputedVelocity: 0
+ - _AlphaClip: 0
+ - _AlphaCutoffEnable: 1
+ - _AlphaDstBlend: 0
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _BUILTIN_AlphaClip: 0
+ - _BUILTIN_Blend: 0
+ - _BUILTIN_CullMode: 2
+ - _BUILTIN_DstBlend: 0
+ - _BUILTIN_QueueControl: 0
+ - _BUILTIN_QueueOffset: 0
+ - _BUILTIN_SrcBlend: 1
+ - _BUILTIN_Surface: 0
+ - _BUILTIN_ZTest: 4
+ - _BUILTIN_ZWrite: 1
+ - _BUILTIN_ZWriteControl: 0
+ - _Blend: 0
+ - _BlendMode: 0
+ - _BlendModePreserveSpecular: 0
+ - _BumpScale: 1
+ - _CastShadows: 1
+ - _ConservativeDepthOffsetEnable: 0
+ - _Cull: 2
+ - _CullMode: 2
+ - _CullModeForward: 2
+ - _Cutoff: 0.5
+ - _DepthOffsetEnable: 0
+ - _DetailAlbedoMapScale: 0
+ - _DetailNormalMapScale: 1
+ - _DoubleSidedEnable: 0
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 2
+ - _DstBlend: 0
+ - _EnableBlendModePreserveSpecularLighting: 1
+ - _EnableFogOnTransparent: 1
+ - _ExcludeFromTUAndAA: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _Normal_Flip_Back_Faces: 1
+ - _OcclusionStrength: 1
+ - _OpaqueCullMode: 2
+ - _Parallax: 0.02
+ - _QueueControl: 1
+ - _QueueOffset: 0
+ - _RayTracing: 0
+ - _ReceiveShadows: 1
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _RefractionModel: 0
+ - _RenderQueueType: 1
+ - _RequireSplitLighting: 0
+ - _SPECULARHIGHLIGHTS_OFF: 1
+ - _Smoothness: 0.467
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _StencilRef: 0
+ - _StencilRefDepth: 8
+ - _StencilRefDistortionVec: 4
+ - _StencilRefGBuffer: 10
+ - _StencilRefMV: 40
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 9
+ - _StencilWriteMaskDistortionVec: 4
+ - _StencilWriteMaskGBuffer: 15
+ - _StencilWriteMaskMV: 41
+ - _SupportDecals: 1
+ - _Surface: 0
+ - _SurfaceType: 0
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UVSec: 0
+ - _UseShadowThreshold: 0
+ - _WorkflowMode: 1
+ - _ZTest: 4
+ - _ZTestDepthEqualForOpaque: 3
+ - _ZTestGBuffer: 3
+ - _ZTestTransparent: 4
+ - _ZWrite: 1
+ - _ZWriteControl: 0
+ m_Colors:
+ - _Color: {r: 0.95731175, g: 1, b: 0.936, a: 1}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissiveColor: {r: 0, g: 0, b: 0, a: 0}
+ - _SpecularColor: {r: 0.19999987, g: 0.19999987, b: 0.19999987, a: 0}
+ m_BuildTextureStacks: []
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Materials/River_Rocks.mat.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Materials/River_Rocks.mat.meta
new file mode 100644
index 0000000..2705cda
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Materials/River_Rocks.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f815eb94e461542318582f4fad9d9f29
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs.meta
new file mode 100644
index 0000000..524967a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 957d26982d7474aa7a0760c740e95bc3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks.prefab
new file mode 100644
index 0000000..c2a7ccd
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks.prefab
@@ -0,0 +1,110 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &4770917562100121679
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: -8679921383154817045, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8428954980326238777, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: f815eb94e461542318582f4fad9d9f29, type: 2}
+ - target: {fileID: -8367197949238459352, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: f815eb94e461542318582f4fad9d9f29, type: 2}
+ - target: {fileID: -7206131731897801335, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: f815eb94e461542318582f4fad9d9f29, type: 2}
+ - target: {fileID: -4982575473978090623, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: f815eb94e461542318582f4fad9d9f29, type: 2}
+ - target: {fileID: -2948771633777158598, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: f815eb94e461542318582f4fad9d9f29, type: 2}
+ - target: {fileID: -2302356373486275898, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: f815eb94e461542318582f4fad9d9f29, type: 2}
+ - target: {fileID: 919132149155446097, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks
+ objectReference: {fileID: 0}
+ - target: {fileID: 1905805599344130455, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: f815eb94e461542318582f4fad9d9f29, type: 2}
+ - target: {fileID: 7368743845736150974, guid: 5a4197775d65a46aaa9acae8881d06b2,
+ type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: f815eb94e461542318582f4fad9d9f29, type: 2}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 5a4197775d65a46aaa9acae8881d06b2, type: 3}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks.prefab.meta
new file mode 100644
index 0000000..b415d75
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 851808b2a8d5a4725b748d818a2a6df2
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_1.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_1.prefab
new file mode 100644
index 0000000..e9f6bb8
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_1.prefab
@@ -0,0 +1,225 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &3099891307050009881
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 402365700275511756, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 878255009017175938, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1185608322517906359, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2739060878388682722, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3304399188521138605, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3411914326454395478, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4722075694076961635, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5689416248541822238, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 851808b2a8d5a4725b748d818a2a6df2, type: 3}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_1.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_1.prefab.meta
new file mode 100644
index 0000000..a2f7e70
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_1.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 665308787655740cdaacadc2fd9cf284
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_2.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_2.prefab
new file mode 100644
index 0000000..31c1b47
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_2.prefab
@@ -0,0 +1,230 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &5184998205449928270
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 402365700275511756, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 878255009017175938, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1185608322517906359, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2739060878388682722, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3304399188521138605, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3411914326454395478, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4722075694076961635, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5689416248541822238, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_2
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9190208821620096637, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 851808b2a8d5a4725b748d818a2a6df2, type: 3}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_2.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_2.prefab.meta
new file mode 100644
index 0000000..2534eb0
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_2.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 40233e759b9f549539f7d447b2f7c0af
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_3.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_3.prefab
new file mode 100644
index 0000000..4476aee
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_3.prefab
@@ -0,0 +1,230 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &730352313416797330
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 402365700275511756, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 878255009017175938, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1185608322517906359, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2739060878388682722, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3304399188521138605, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3411914326454395478, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4722075694076961635, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5689416248541822238, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_3
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9190208821620096637, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 851808b2a8d5a4725b748d818a2a6df2, type: 3}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_3.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_3.prefab.meta
new file mode 100644
index 0000000..cce7041
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_3.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b9e6050eba9c94bbe8f2b388f80cc4cd
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_4.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_4.prefab
new file mode 100644
index 0000000..e5821c1
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_4.prefab
@@ -0,0 +1,230 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &3814692743752460803
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 402365700275511756, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 878255009017175938, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1185608322517906359, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2739060878388682722, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3304399188521138605, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3411914326454395478, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4722075694076961635, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5689416248541822238, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_4
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9190208821620096637, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 851808b2a8d5a4725b748d818a2a6df2, type: 3}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_4.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_4.prefab.meta
new file mode 100644
index 0000000..f0744bd
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_4.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 84abedbc7f85f4f469c7220fb2bfc78f
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_5.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_5.prefab
new file mode 100644
index 0000000..a0d6ab4
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_5.prefab
@@ -0,0 +1,230 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &3943949758298431614
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 402365700275511756, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 878255009017175938, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1185608322517906359, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2739060878388682722, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3304399188521138605, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3411914326454395478, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4722075694076961635, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5689416248541822238, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_5
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9190208821620096637, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 851808b2a8d5a4725b748d818a2a6df2, type: 3}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_5.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_5.prefab.meta
new file mode 100644
index 0000000..dd86d48
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_5.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3cb6d24cd91604f77a0918d74eceaecd
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_6.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_6.prefab
new file mode 100644
index 0000000..d737661
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_6.prefab
@@ -0,0 +1,230 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &4036505092629906429
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 402365700275511756, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 878255009017175938, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1185608322517906359, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2739060878388682722, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3304399188521138605, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3411914326454395478, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4722075694076961635, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5689416248541822238, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_6
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9190208821620096637, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 851808b2a8d5a4725b748d818a2a6df2, type: 3}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_6.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_6.prefab.meta
new file mode 100644
index 0000000..cccadfd
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_6.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8a46b87981fbc476abf4f6d9418c8096
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_7.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_7.prefab
new file mode 100644
index 0000000..cb58e2c
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_7.prefab
@@ -0,0 +1,230 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &3357169501017670113
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 402365700275511756, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 878255009017175938, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1185608322517906359, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2739060878388682722, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3304399188521138605, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3411914326454395478, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4722075694076961635, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5689416248541822238, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_7
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9190208821620096637, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 851808b2a8d5a4725b748d818a2a6df2, type: 3}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_7.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_7.prefab.meta
new file mode 100644
index 0000000..df2fe8e
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_7.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8602d844b80dd46adb55fb29573b3c60
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_8.prefab b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_8.prefab
new file mode 100644
index 0000000..0634389
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_8.prefab
@@ -0,0 +1,230 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &8103958463078659053
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 402365700275511756, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 878255009017175938, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1185608322517906359, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1605894942097295512, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2739060878388682722, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3304399188521138605, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3411914326454395478, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4722075694076961635, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5025750293587683236, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5689416248541822238, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_Name
+ value: River_Rocks_8
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5763246048786159777, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6312857216489648639, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7800846022303097499, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7844097712159086483, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8591273644774780669, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8731103880038882045, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8932506003540781851, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9190208821620096637, guid: 851808b2a8d5a4725b748d818a2a6df2,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 851808b2a8d5a4725b748d818a2a6df2, type: 3}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_8.prefab.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_8.prefab.meta
new file mode 100644
index 0000000..9ce6a66
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Prefabs/River_Rocks_8.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4d3a638b96a0740acad16f75907743c5
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources.meta
new file mode 100644
index 0000000..202b41f
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e59273278baff44e2b9d189da90e59fe
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/Source.txt b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/Source.txt
new file mode 100644
index 0000000..6e67dc6
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/Source.txt
@@ -0,0 +1,2 @@
+"Set of Modular Rocks" (https://skfb.ly/oGBSx) by Cleuza Costa is licensed under Creative Commons Attribution (http://creativecommons.org/licenses/by/4.0/).
+https://sketchfab.com/3d-models/set-of-modular-rocks-f435208fadd24363ad285d8e505a794d
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/Source.txt.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/Source.txt.meta
new file mode 100644
index 0000000..6b509d0
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/Source.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: cd74c2ef0358248b08c33b2c92acf914
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low.fbx b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low.fbx
new file mode 100644
index 0000000..a4e5847
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low.fbx differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low.fbx.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low.fbx.meta
new file mode 100644
index 0000000..b65e08a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low.fbx.meta
@@ -0,0 +1,109 @@
+fileFormatVersion: 2
+guid: 5a4197775d65a46aaa9acae8881d06b2
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_BaseColor.png b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_BaseColor.png
new file mode 100644
index 0000000..2e87df7
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_BaseColor.png differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_BaseColor.png.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_BaseColor.png.meta
new file mode 100644
index 0000000..ed74603
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_BaseColor.png.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: 9d09cb7a68b6f43d2a6c67d65e0fe8ca
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Metallic.png b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Metallic.png
new file mode 100644
index 0000000..02fc399
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Metallic.png differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Metallic.png.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Metallic.png.meta
new file mode 100644
index 0000000..bae99dc
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Metallic.png.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: 1716dcefd808e41ffb65bfe48f365d4b
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Normal.png b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Normal.png
new file mode 100644
index 0000000..e90e5e9
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Normal.png differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Normal.png.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Normal.png.meta
new file mode 100644
index 0000000..0302a66
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Normal.png.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: df4f674b58fa548b28be7c7dbdafae8d
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 1
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Roughness.png b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Roughness.png
new file mode 100644
index 0000000..e7dd7cc
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Roughness.png differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Roughness.png.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Roughness.png.meta
new file mode 100644
index 0000000..bc20e32
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Props/SetOfModularRocks/Sources/rocks_low_rocks_texture_Roughness.png.meta
@@ -0,0 +1,127 @@
+fileFormatVersion: 2
+guid: 913a00cb70c804eda937b2cc57ff794f
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Scenes.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Scenes.meta
new file mode 100644
index 0000000..58d0a95
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1e50cf59867154dbda970f4161367c6d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Scenes/River.unity b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Scenes/River.unity
new file mode 100644
index 0000000..82a8065
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Scenes/River.unity
@@ -0,0 +1,199 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 2100000, guid: 9dbeaf053c6fb4c2f93b45a9995c408e, type: 2}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 112000000, guid: 61a04ecf9a42f478484b3ee8e49dd08b,
+ type: 2}
+ m_LightingSettings: {fileID: 4890085278179872738, guid: 6e72aca972f324f7886200f86939d735,
+ type: 2}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1001 &188239911440951982
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 1395742053880712351, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1395742053880712351, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1395742053880712351, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1395742053880712351, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1395742053880712351, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1395742053880712351, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1395742053880712351, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1395742053880712351, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1395742053880712351, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1395742053880712351, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6209579273066343583, guid: 3ef658b53e32d45c49e30f89b7eb1d6c,
+ type: 3}
+ propertyPath: m_Name
+ value: Scene
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 3ef658b53e32d45c49e30f89b7eb1d6c, type: 3}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 188239911440951982}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Scenes/River.unity.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Scenes/River.unity.meta
new file mode 100644
index 0000000..ee15985
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Scenes/River.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 36c007ea258c841f78d21589d328b50b
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Settings.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Settings.meta
new file mode 100644
index 0000000..5f2b726
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Settings.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cdb782fb2004a42ef8d71d888fc937df
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Settings/River_Lod_Foam.asset b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Settings/River_Lod_Foam.asset
new file mode 100644
index 0000000..f96c380
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Settings/River_Lod_Foam.asset
@@ -0,0 +1,23 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 03aa24b56404b45a190a2cfc0c7cc100, type: 3}
+ m_Name: River_Lod_Foam
+ m_EditorClassIdentifier:
+ _Version: 0
+ _Maximum: Infinity
+ _FoamFadeRate: 0.25
+ _WaveFoamStrength: 1
+ _WaveFoamCoverage: 0
+ _FilterWaves: 2
+ _ShorelineFoamMaximumDepth: 0.644
+ _ShorelineFoamStrength: 0
+ _ShorelineFoamPriming: 5
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Settings/River_Lod_Foam.asset.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Settings/River_Lod_Foam.asset.meta
new file mode 100644
index 0000000..5633a1a
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Settings/River_Lod_Foam.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ecf87873110b84378a15fbe66bb0a41b
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain.meta
new file mode 100644
index 0000000..cc7f9c3
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d21ece9fd24574033a813ea9b996ca72
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Grass.terrainlayer b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Grass.terrainlayer
new file mode 100644
index 0000000..ce6f9ac
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Grass.terrainlayer
@@ -0,0 +1,22 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1953259897 &8574412962073106934
+TerrainLayer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: River_Grass
+ m_DiffuseTexture: {fileID: 2800000, guid: 3889d2e3065324298915c7dc8c217a76, type: 3}
+ m_NormalMapTexture: {fileID: 2800000, guid: 44bad67befe3b416ca7f443082d89cbd, type: 3}
+ m_MaskMapTexture: {fileID: 2800000, guid: af7dd0fb2371c453eb1f9ba3a41e071c, type: 3}
+ m_TileSize: {x: 2, y: 2}
+ m_TileOffset: {x: 0, y: 0}
+ m_Specular: {r: 0, g: 0, b: 0, a: 0}
+ m_Metallic: 0
+ m_Smoothness: 0
+ m_NormalScale: 1
+ m_DiffuseRemapMin: {x: 0, y: 0, z: 0, w: 0}
+ m_DiffuseRemapMax: {x: 1, y: 1, z: 1, w: 1}
+ m_MaskMapRemapMin: {x: 0, y: 0, z: 0, w: 0}
+ m_MaskMapRemapMax: {x: 1, y: 1, z: 1, w: 1}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Grass.terrainlayer.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Grass.terrainlayer.meta
new file mode 100644
index 0000000..0a9da91
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Grass.terrainlayer.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3cbad80b8eb2f440b86eba5de5ecc236
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 8574412962073106934
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Sand.terrainlayer b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Sand.terrainlayer
new file mode 100644
index 0000000..c6bddd5
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Sand.terrainlayer
@@ -0,0 +1,22 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1953259897 &8574412962073106934
+TerrainLayer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: River_Sand
+ m_DiffuseTexture: {fileID: 2800000, guid: 23f2e9e0ff93b4a5cad4c5564824bc33, type: 3}
+ m_NormalMapTexture: {fileID: 2800000, guid: 1178c4145389f4312a5cd5db6733e5b5, type: 3}
+ m_MaskMapTexture: {fileID: 2800000, guid: 0b00140d958854b31ae2b4ba09716df6, type: 3}
+ m_TileSize: {x: 2, y: 2}
+ m_TileOffset: {x: 0, y: 0}
+ m_Specular: {r: 0, g: 0, b: 0, a: 0}
+ m_Metallic: 0
+ m_Smoothness: 0
+ m_NormalScale: 1
+ m_DiffuseRemapMin: {x: 0, y: 0, z: 0, w: 0}
+ m_DiffuseRemapMax: {x: 1, y: 1, z: 1, w: 1}
+ m_MaskMapRemapMin: {x: 0, y: 0, z: 0, w: 0}
+ m_MaskMapRemapMax: {x: 1, y: 1, z: 1, w: 1}
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Sand.terrainlayer.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Sand.terrainlayer.meta
new file mode 100644
index 0000000..d7c8f05
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Sand.terrainlayer.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7953c040653564ea7aacd04a17450c74
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 8574412962073106934
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Terrain.asset b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Terrain.asset
new file mode 100644
index 0000000..54ed083
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Terrain.asset differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Terrain.asset.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Terrain.asset.meta
new file mode 100644
index 0000000..629a799
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Terrain/River_Terrain.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d45a468890d48485b99fca5ee978b769
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 15600000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures.meta
new file mode 100644
index 0000000..c1f0849
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c609d8cc5f7d744828085ee96efdb238
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A.meta
new file mode 100644
index 0000000..f577723
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 565668974548f4c7296b7d481288ceb6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_BaseColor.tif b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_BaseColor.tif
new file mode 100644
index 0000000..7d88138
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_BaseColor.tif differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_BaseColor.tif.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_BaseColor.tif.meta
new file mode 100644
index 0000000..ab19783
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_BaseColor.tif.meta
@@ -0,0 +1,140 @@
+fileFormatVersion: 2
+guid: 23f2e9e0ff93b4a5cad4c5564824bc33
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 1
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 4
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 0
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: PS4
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: 25
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: 25
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_MaskMap.tif b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_MaskMap.tif
new file mode 100644
index 0000000..bf1d23b
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_MaskMap.tif differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_MaskMap.tif.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_MaskMap.tif.meta
new file mode 100644
index 0000000..7d4473f
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_MaskMap.tif.meta
@@ -0,0 +1,140 @@
+fileFormatVersion: 2
+guid: 0b00140d958854b31ae2b4ba09716df6
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 1
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 4
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: 25
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: PS4
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: 25
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_Normal.tif b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_Normal.tif
new file mode 100644
index 0000000..3105513
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_Normal.tif differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_Normal.tif.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_Normal.tif.meta
new file mode 100644
index 0000000..62bbfa4
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/River_Black_Sand_A_Normal.tif.meta
@@ -0,0 +1,140 @@
+fileFormatVersion: 2
+guid: 1178c4145389f4312a5cd5db6733e5b5
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 1
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 4
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 1
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: 25
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: PS4
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: 25
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/Source.txt b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/Source.txt
new file mode 100644
index 0000000..093a93f
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/Source.txt
@@ -0,0 +1,3 @@
+The Unity Terrain - URP Demo Scene
+Standard Unity Asset Store EULA
+https://assetstore.unity.com/packages/3d/environments/unity-terrain-urp-demo-scene-213197
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/Source.txt.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/Source.txt.meta
new file mode 100644
index 0000000..e09cca2
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Black_Sand_A/Source.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: bf70ac2c0b0fb4ef483ce09ad04cca44
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A.meta
new file mode 100644
index 0000000..42ac5dc
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 12c7e0f29d83346e18d49060d07641fc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_BaseColor.tif b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_BaseColor.tif
new file mode 100644
index 0000000..65d778a
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_BaseColor.tif differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_BaseColor.tif.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_BaseColor.tif.meta
new file mode 100644
index 0000000..6e090ac
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_BaseColor.tif.meta
@@ -0,0 +1,140 @@
+fileFormatVersion: 2
+guid: 3889d2e3065324298915c7dc8c217a76
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 1
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 4
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: PS4
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: 25
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 4096
+ resizeAlgorithm: 0
+ textureFormat: 25
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_MaskMap.tif b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_MaskMap.tif
new file mode 100644
index 0000000..5803506
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_MaskMap.tif differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_MaskMap.tif.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_MaskMap.tif.meta
new file mode 100644
index 0000000..1cd8b5e
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_MaskMap.tif.meta
@@ -0,0 +1,140 @@
+fileFormatVersion: 2
+guid: af7dd0fb2371c453eb1f9ba3a41e071c
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 1
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 4
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: 25
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: PS4
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: 25
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_Normal.tif b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_Normal.tif
new file mode 100644
index 0000000..5d0507a
Binary files /dev/null and b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_Normal.tif differ
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_Normal.tif.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_Normal.tif.meta
new file mode 100644
index 0000000..56ada92
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/River_Grass_A_Normal.tif.meta
@@ -0,0 +1,140 @@
+fileFormatVersion: 2
+guid: 44bad67befe3b416ca7f443082d89cbd
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 1
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 4
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 1
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: 27
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: PS4
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: 27
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 1
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 2
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/Source.txt b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/Source.txt
new file mode 100644
index 0000000..093a93f
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/Source.txt
@@ -0,0 +1,3 @@
+The Unity Terrain - URP Demo Scene
+Standard Unity Asset Store EULA
+https://assetstore.unity.com/packages/3d/environments/unity-terrain-urp-demo-scene-213197
diff --git a/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/Source.txt.meta b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/Source.txt.meta
new file mode 100644
index 0000000..636e251
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/Samples~/River/Textures/Grass_A/Source.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5d4020d9c6c2c42a49eebf59ae396c55
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest.shallow-water/package.json b/Packages/com.waveharmonic.crest.shallow-water/package.json
new file mode 100644
index 0000000..3207c50
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "com.waveharmonic.crest.shallow-water",
+ "version": "1.3.3",
+ "displayName": "Crest - Shallow Water",
+ "description": "Shallow Water Simulation for Crest.",
+ "unity": "2022.3",
+ "hideInEditor": false,
+ "documentationUrl": "https://docs.crest.waveharmonic.com/Packages/ShallowWater/Introduction.html",
+ "changelogUrl": "https://docs.crest.waveharmonic.com/Packages/ShallowWater/History.html",
+ "author": {
+ "name": "Wave Harmonic",
+ "email": "support@waveharmonic.com",
+ "url": "https://waveharmonic.com/"
+ },
+ "samples": [
+ {
+ "displayName": "Beach",
+ "description": "Demonstrates the shoreline preset.",
+ "path": "Samples~/Beach"
+ },
+ {
+ "displayName": "Stream",
+ "description": "Demonstrates the stream preset.",
+ "path": "Samples~/River"
+ }
+ ],
+ "dependencies": {
+ "com.waveharmonic.crest": "5.6.0"
+ }
+}
\ No newline at end of file
diff --git a/Packages/com.waveharmonic.crest.shallow-water/package.json.meta b/Packages/com.waveharmonic.crest.shallow-water/package.json.meta
new file mode 100644
index 0000000..4e352e5
--- /dev/null
+++ b/Packages/com.waveharmonic.crest.shallow-water/package.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 36acb52d9b87645e68bdb5432524a2b5
+PackageManifestImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest/Documentation~/API.pdf b/Packages/com.waveharmonic.crest/Documentation~/API.pdf
new file mode 100644
index 0000000..bff449f
Binary files /dev/null and b/Packages/com.waveharmonic.crest/Documentation~/API.pdf differ
diff --git a/Packages/com.waveharmonic.crest/Documentation~/API.pdf.meta b/Packages/com.waveharmonic.crest/Documentation~/API.pdf.meta
new file mode 100644
index 0000000..ea428fa
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Documentation~/API.pdf.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1c86a082904904ed8b5bac5029f5b811
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest/Documentation~/Manual.pdf b/Packages/com.waveharmonic.crest/Documentation~/Manual.pdf
new file mode 100644
index 0000000..5e7788d
Binary files /dev/null and b/Packages/com.waveharmonic.crest/Documentation~/Manual.pdf differ
diff --git a/Packages/com.waveharmonic.crest/Documentation~/Manual.pdf.meta b/Packages/com.waveharmonic.crest/Documentation~/Manual.pdf.meta
new file mode 100644
index 0000000..aa21640
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Documentation~/Manual.pdf.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 735ed5b3b44b54da1af9edc799f25799
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest/Editor.meta b/Packages/com.waveharmonic.crest/Editor.meta
new file mode 100644
index 0000000..b6a229f
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a7c5b0e70850c4b5b9cc74cde678c8f5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest/Editor/Icons.meta b/Packages/com.waveharmonic.crest/Editor/Icons.meta
new file mode 100644
index 0000000..9e68bce
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Editor/Icons.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 07713a05ee7134f699db61252add8587
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest/Editor/Icons/Logomark.png b/Packages/com.waveharmonic.crest/Editor/Icons/Logomark.png
new file mode 100644
index 0000000..639e754
Binary files /dev/null and b/Packages/com.waveharmonic.crest/Editor/Icons/Logomark.png differ
diff --git a/Packages/com.waveharmonic.crest/Editor/Icons/Logomark.png.meta b/Packages/com.waveharmonic.crest/Editor/Icons/Logomark.png.meta
new file mode 100644
index 0000000..7df6548
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Editor/Icons/Logomark.png.meta
@@ -0,0 +1,114 @@
+fileFormatVersion: 2
+guid: 72a325a76c6624c768822a08fe625d55
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 1
+ swizzle: 50462976
+ cookieLightType: 1
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 1
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest/Editor/Scripts.meta b/Packages/com.waveharmonic.crest/Editor/Scripts.meta
new file mode 100644
index 0000000..488f979
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Editor/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9e5b7e45774a04476ac12d691fec9152
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest/Editor/Scripts/Assembly.cs b/Packages/com.waveharmonic.crest/Editor/Scripts/Assembly.cs
new file mode 100644
index 0000000..822b457
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Editor/Scripts/Assembly.cs
@@ -0,0 +1,19 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("WaveHarmonic.Crest.Samples.Editor")]
+[assembly: InternalsVisibleTo("WaveHarmonic.Crest.CPUQueries.Editor")]
+[assembly: InternalsVisibleTo("WaveHarmonic.Crest.Paint.Editor")]
+[assembly: InternalsVisibleTo("WaveHarmonic.Crest.ShallowWater.Editor")]
+[assembly: InternalsVisibleTo("WaveHarmonic.Crest.Splines.Editor")]
+[assembly: InternalsVisibleTo("WaveHarmonic.Crest.Watercraft.Editor")]
+[assembly: InternalsVisibleTo("WaveHarmonic.Crest.Whirlpool.Editor")]
+
+// Define empty namespaces for when assemblies are not present.
+namespace UnityEditor.Rendering.HighDefinition { }
+namespace UnityEngine.Rendering.HighDefinition { }
+namespace UnityEngine.Rendering.Universal { }
+namespace WaveHarmonic.Crest.Paint { }
+namespace WaveHarmonic.Crest.Splines { }
diff --git a/Packages/com.waveharmonic.crest/Editor/Scripts/Assembly.cs.meta b/Packages/com.waveharmonic.crest/Editor/Scripts/Assembly.cs.meta
new file mode 100644
index 0000000..c5cda04
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Editor/Scripts/Assembly.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8bd644d8cd9e34f6aaa99d6b83420b22
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest/Editor/Scripts/BuildProcessor.cs b/Packages/com.waveharmonic.crest/Editor/Scripts/BuildProcessor.cs
new file mode 100644
index 0000000..b2a7aed
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Editor/Scripts/BuildProcessor.cs
@@ -0,0 +1,378 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+using WaveHarmonic.Crest.Editor.Settings;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEditor;
+using UnityEditor.Build;
+using UnityEditor.Build.Reporting;
+using UnityEditor.Rendering;
+using UnityEngine;
+using UnityEngine.Rendering;
+
+namespace WaveHarmonic.Crest.Editor.Build
+{
+ sealed class LegacyShaderGraphProcessor : IPreprocessShaders, IPostprocessBuildWithReport
+ {
+ static readonly ShaderTagId s_ShaderGraphShaderShaderTagId = new("ShaderGraphShader");
+
+ public int callbackOrder => -1;
+
+ int _VariantCount;
+ int _VariantCountStripped;
+
+ bool LogVariantStripping =>
+#if CREST_DEBUG
+ true;
+#else
+ false;
+#endif
+
+ static readonly string[] s_ShadowCollectorKeywords = { "SHADOWS_SINGLE_CASCADE", "SHADOWS_SPLIT_SPHERES", "SHADOWS_SOFT" };
+
+ public void OnProcessShader(Shader shader, ShaderSnippetData snippet, IList data)
+ {
+ // Not one of our shaders.
+ if (!shader.name.StartsWithNoAlloc("Hidden/Crest/") && !shader.name.StartsWithNoAlloc("Crest/"))
+ {
+ return;
+ }
+
+ // Not a Shader Graph.
+ if (shader.GetSubShaderTag(snippet, s_ShaderGraphShaderShaderTagId) != "true")
+ {
+ return;
+ }
+
+ // Sub-shader is not targeting the built-in render pipeline.
+ if (shader.TryGetRenderPipelineTag(snippet, out _))
+ {
+ return;
+ }
+
+ // Only strip if there is a sub-shader per render pipeline.
+ if (shader.subshaderCount < 3)
+ {
+ return;
+ }
+
+ _VariantCount += data.Count;
+
+ // Strip BIRP sub-shader if not using BIRP, as Unity only strips HDRP/URP sub-shaders.
+ if (!RenderPipelineHelper.IsLegacy)
+ {
+ _VariantCountStripped += data.Count;
+ data.Clear();
+ return;
+ }
+
+ for (var i = data.Count - 1; i >= 0; --i)
+ {
+ var strip = false;
+ var keywords = data[i].shaderKeywordSet.GetShaderKeywords();
+ var isLightingPass = snippet.passType is PassType.ForwardBase or PassType.ForwardAdd;
+ var isTransparent = keywords.Any(x => x.name == "_BUILTIN_SURFACE_TYPE_TRANSPARENT");
+ var isTransparentShadowReceiver = keywords.Any(x => x.name == "_BUILTIN_TRANSPARENT_RECEIVES_SHADOWS");
+
+ // Invalid combination.
+ if (isLightingPass && !isTransparent && isTransparentShadowReceiver)
+ {
+ strip = true;
+ }
+
+ if (!strip)
+ {
+ foreach (var keyword in keywords)
+ {
+ var name = keyword.name;
+ strip =
+ // Invalid combination.
+ isLightingPass && (!isTransparent || !isTransparentShadowReceiver) && s_ShadowCollectorKeywords.Contains(keyword.name);
+
+ if (strip) break;
+ }
+ }
+
+ if (strip)
+ {
+ _VariantCountStripped++;
+ data.RemoveAt(i);
+ }
+ }
+ }
+
+ public void OnPostprocessBuild(BuildReport report)
+ {
+ if (LogVariantStripping)
+ {
+ Debug.Log($"Crest: {_VariantCountStripped} / {_VariantCount} stripped from Crest BIRP. Total variants: {_VariantCount - _VariantCountStripped}");
+ }
+ }
+ }
+
+ sealed class BuildProcessor : IPreprocessComputeShaders, IPreprocessShaders, IPostprocessBuildWithReport
+ {
+ public int callbackOrder => 0;
+
+ int _VariantCount;
+ int _VariantCountStripped;
+
+ ProjectSettings _Settings;
+ WaterResources _Resources;
+
+ void Logger(string message)
+ {
+ Debug.Log(message);
+ }
+
+ bool StripShader(Object shader, IList data)
+ {
+ _Settings = ProjectSettings.Instance;
+ _Resources = WaterResources.Instance;
+
+ if (!AssetDatabase.GetAssetPath(shader).StartsWithNoAlloc("Packages/com.waveharmonic.crest"))
+ {
+ return false;
+ }
+
+ if (shader.name.StartsWithNoAlloc("Hidden/Crest/Samples/"))
+ {
+ return false;
+ }
+
+ if (_Settings.DebugEnableStrippingLogging)
+ {
+ Logger($"Shader: '{shader.name}' @ {AssetDatabase.GetAssetPath(shader)}");
+ }
+
+ _VariantCount += data.Count;
+
+ if (ShouldStripShader(shader))
+ {
+ if (_Settings.LogStrippedVariants)
+ {
+ Logger($"Stripping Shader: {shader.name}");
+ }
+
+ _VariantCountStripped += data.Count;
+ data.Clear();
+ return false;
+ }
+
+ return true;
+ }
+
+ bool ShouldStripVariant(Object shader, ShaderCompilerData data, string[] keywords)
+ {
+ return false;
+ }
+
+ bool ShouldStripVariant(ProjectSettings.State state, ShaderCompilerData data, string[] keywords, LocalKeyword keyword, Object shader0, Object shader1)
+ {
+ if (shader0 != shader1)
+ {
+ return false;
+ }
+
+ return state switch
+ {
+ ProjectSettings.State.Disabled => data.shaderKeywordSet.IsEnabled(keyword),
+ // Strip if keyword is not enabled and appears in one other variant.
+ ProjectSettings.State.Enabled => !data.shaderKeywordSet.IsEnabled(keyword) && ArrayUtility.Contains(keywords, keyword.name),
+ _ => false,
+ };
+ }
+
+ bool ShouldStripVariant(ProjectSettings.State state, ShaderCompilerData data, string[] keywords, ShaderKeyword keyword)
+ {
+ return state switch
+ {
+ ProjectSettings.State.Disabled => data.shaderKeywordSet.IsEnabled(keyword),
+ // Strip if keyword is not enabled and appears in one other variant.
+ ProjectSettings.State.Enabled => !data.shaderKeywordSet.IsEnabled(keyword) && ArrayUtility.Contains(keywords, keyword.name),
+ _ => false,
+ };
+ }
+
+ bool ShouldStripVariant(Object shader, ShaderKeyword[] keywords)
+ {
+ // Strip debug variants.
+ if (!EditorUserBuildSettings.development)
+ {
+ foreach (var keyword in keywords)
+ {
+ if (keyword.name.StartsWithNoAlloc("_DEBUG"))
+ {
+ if (_Settings.LogStrippedVariants)
+ {
+ Logger($"Stripping Keyword: {keyword.name}");
+ }
+
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ bool ShouldStripShader(Object shader)
+ {
+ if (!EditorUserBuildSettings.development)
+ {
+ if (shader.name.Contains("Debug"))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ void StripKeywords(Object shader, IList data)
+ {
+ // Get all keywords for this kernel/stage.
+ string[] keywords;
+ {
+ var set = new HashSet();
+ for (var i = 0; i < data.Count; i++)
+ {
+ // Each ShaderCompilerData is a variant which is a combination of keywords. Since each list will be
+ // different, simply getting a list of all keywords is not possible. This also appears to be the only
+ // way to get a list of keywords without trying to extract them from shader property names. Lastly,
+ // shader_feature will be returned only if they are enabled.
+ set.UnionWith(data[i].shaderKeywordSet.GetShaderKeywords());
+ }
+
+ keywords = set.Select(x => x.name).ToArray();
+ }
+
+ for (var i = data.Count - 1; i >= 0; --i)
+ {
+ if (_Settings.LogStrippedVariants)
+ {
+ Logger($"Keywords: {string.Join(", ", data[i].shaderKeywordSet.GetShaderKeywords())}");
+ }
+
+ if (ShouldStripVariant(shader, data[i].shaderKeywordSet.GetShaderKeywords()))
+ {
+ _VariantCountStripped++;
+ data.RemoveAt(i);
+ continue;
+ }
+
+ if (ShouldStripVariant(shader, data[i], keywords))
+ {
+ _VariantCountStripped++;
+ data.RemoveAt(i);
+ continue;
+ }
+
+ if (_Settings.LogKeptVariants)
+ {
+ Logger($"Keywords: {string.Join(", ", data[i].shaderKeywordSet.GetShaderKeywords())}");
+ }
+ }
+ }
+
+ bool ShouldStripSubShader(Shader shader, ShaderSnippetData snippet)
+ {
+ if (!shader.name.StartsWithNoAlloc("Crest/") && !shader.name.StartsWithNoAlloc("Hidden/Crest/"))
+ {
+ return false;
+ }
+
+ // There will be at least three sub-shaders if one per render pipeline.
+ if (shader.subshaderCount <= 2)
+ {
+ return false;
+ }
+
+ // Strip BIRP sub-shader if not using BIRP as Unity only strips HDRP/URP sub-shaders.
+ if (!RenderPipelineHelper.IsLegacy && !shader.TryGetRenderPipelineTag(snippet, out _))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ public void OnProcessShader(Shader shader, ShaderSnippetData snippet, IList data)
+ {
+ // Fixes point light cookie variant trigger shader compiler error:
+ // > Shader error in 'Crest/Water': call to 'texCUBE' is ambiguous at
+ // > Buidin/Library/PackageCache/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Includes/PBRForwardAddPass.hlsl(58) (on gamecore_scarlett)
+ if (ProjectSettings.Instance.StripBrokenVariants && RenderPipelineHelper.IsLegacy && shader.name == "Crest/Water")
+ {
+ var pointCookie = new LocalKeyword(shader, "POINT_COOKIE");
+
+ for (var i = data.Count - 1; i >= 0; --i)
+ {
+ var d = data[i];
+
+ if (d.buildTarget != BuildTarget.GameCoreXboxSeries && d.shaderCompilerPlatform != ShaderCompilerPlatform.GameCoreXboxSeries)
+ {
+ continue;
+ }
+
+ if (d.shaderKeywordSet.IsEnabled(pointCookie))
+ {
+ _VariantCountStripped++;
+ data.RemoveAt(i);
+ Debug.Log($"Crest: Removing POINT_COOKIE {shader.name} {d.buildTarget} {d.shaderCompilerPlatform}");
+ continue;
+ }
+ }
+ }
+
+ if (!StripShader(shader, data))
+ {
+ return;
+ }
+
+ if (ShouldStripSubShader(shader, snippet))
+ {
+ _VariantCountStripped += data.Count;
+ data.Clear();
+ return;
+ }
+
+ if (_Settings.DebugEnableStrippingLogging)
+ {
+ Logger($"Pass {snippet.passName} Type {snippet.passType} Stage {snippet.shaderType}");
+ }
+
+ // TODO: Add stripping specific to pixel shaders here.
+
+ StripKeywords(shader, data);
+ }
+
+ public void OnProcessComputeShader(ComputeShader shader, string kernel, IList data)
+ {
+ if (!StripShader(shader, data))
+ {
+ return;
+ }
+
+ if (_Settings.DebugEnableStrippingLogging)
+ {
+ Logger($"Kernel {kernel}");
+ }
+
+ // TODO: Add stripping specific to compute shaders here.
+ StripKeywords(shader, data);
+ }
+
+ public void OnPostprocessBuild(BuildReport report)
+ {
+ _Settings = ProjectSettings.Instance;
+ _Resources = WaterResources.Instance;
+
+ if (_Settings.DebugEnableStrippingLogging)
+ {
+ Debug.Log($"Crest: {_VariantCountStripped} / {_VariantCount} stripped from Crest. Total variants: {_VariantCount - _VariantCountStripped}");
+ }
+ }
+ }
+}
diff --git a/Packages/com.waveharmonic.crest/Editor/Scripts/BuildProcessor.cs.meta b/Packages/com.waveharmonic.crest/Editor/Scripts/BuildProcessor.cs.meta
new file mode 100644
index 0000000..3dd2533
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Editor/Scripts/BuildProcessor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cc038d319256b40b6912636ac2129a2c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.waveharmonic.crest/Editor/Scripts/Editors.cs b/Packages/com.waveharmonic.crest/Editor/Scripts/Editors.cs
new file mode 100644
index 0000000..03f19be
--- /dev/null
+++ b/Packages/com.waveharmonic.crest/Editor/Scripts/Editors.cs
@@ -0,0 +1,511 @@
+// Crest Water System
+// Copyright © 2024 Wave Harmonic. All rights reserved.
+
+using UnityEditor;
+using UnityEngine;
+using WaveHarmonic.Crest.Internal;
+
+namespace WaveHarmonic.Crest.Editor
+{
+ [CustomEditor(typeof(WaterRenderer))]
+ sealed class WaterRendererEditor : Inspector
+ {
+ // Whether validation was triggered by user request, which should never skip console logging.
+ internal static bool ManualValidation { get; private set; }
+
+ WaterRenderer _Target;
+
+ protected override void OnEnable()
+ {
+ base.OnEnable();
+ _Target = (WaterRenderer)target;
+ }
+
+ protected override void RenderInspectorGUI()
+ {
+ var target = this.target as WaterRenderer;
+
+ var currentAssignedTP = serializedObject.FindProperty(nameof(WaterRenderer._TimeProvider)).objectReferenceValue;
+
+ base.RenderInspectorGUI();
+
+ // Detect if user changed TP, if so update stack
+ var newlyAssignedTP = serializedObject.FindProperty(nameof(WaterRenderer._TimeProvider)).objectReferenceValue;
+ if (currentAssignedTP != newlyAssignedTP)
+ {
+ if (currentAssignedTP != null)
+ {
+ target.TimeProviders.Pop(currentAssignedTP as TimeProvider);
+ }
+ if (newlyAssignedTP != null)
+ {
+ target.TimeProviders.Push(newlyAssignedTP as TimeProvider);
+ }
+ }
+
+ // Display version in information box.
+ {
+ // Fix leftover nesting from drawers.
+ EditorGUI.indentLevel = 0;
+
+ var padding = GUI.skin.GetStyle("HelpBox").padding;
+ GUI.skin.GetStyle("HelpBox").padding = new(10, 10, 10, 10);
+
+#if CREST_DEBUG
+ if (target._Debug._ShowDebugInformation)
+ {
+ EditorGUILayout.Space();
+
+ var baseScale = target.CalcLodScale(0);
+ var baseTexelSize = 2f * 2f * baseScale / target.LodResolution;
+
+ var message = "";
+ for (var i = 0; i < target.LodLevels; i++)
+ {
+ message += $"LOD: {i}\n";
+ message += $"Scale: {target.CalcLodScale(i)}\n";
+ message += $"Texel: {2f * 2f * target.CalcLodScale(i) / target.LodResolution}\n";
+ message += $"Minimum Slice: {Mathf.Floor(Mathf.Log(Mathf.Max(i / baseTexelSize, 1f), 2f))}";
+ if (i < target.LodLevels - 1) message += "\n\n";
+ }
+
+ if (target.Surface.Material.HasVector(WaterRenderer.ShaderIDs.s_Absorption))
+ {
+ message += $"\n\nDepth Fog Density: {target.Surface.Material.GetVector(WaterRenderer.ShaderIDs.s_Absorption)}";
+ }
+
+ EditorGUILayout.HelpBox(message, MessageType.None);
+ }
+#endif
+
+ GUI.skin.GetStyle("HelpBox").padding = padding;
+ }
+ }
+
+ protected override void RenderBottomButtons()
+ {
+ base.RenderBottomButtons();
+
+ var target = this.target as WaterRenderer;
+
+ EditorGUILayout.Space();
+
+#if CREST_DEBUG
+ if (GUILayout.Button("Change Scale"))
+ {
+ var scale = target.ScaleRange;
+ scale.x = scale.x == 4f ? 256f : 4f;
+ target.ScaleRange = scale;
+ EditorApplication.isPaused = false;
+ }
+#endif
+
+ if (GUILayout.Button("Validate Setup"))
+ {
+ ManualValidation = true;
+
+ ValidatedHelper.ExecuteValidators(target, ValidatedHelper.DebugLog);
+
+ foreach (var component in FindObjectsByType(FindObjectsSortMode.None))
+ {
+ if (component is WaterRenderer) continue;
+ ValidatedHelper.ExecuteValidators(component, ValidatedHelper.DebugLog);
+ }
+
+ Debug.Log("Crest: Validation complete!", target);
+
+ ManualValidation = false;
+ }
+ }
+ }
+
+ [CustomEditor(typeof(WaveSpectrum))]
+ sealed class WaveSpectrumEditor : Inspector, IEmbeddableEditor
+ {
+ static readonly string[] s_ModelDescriptions = new[]
+ {
+ "Select an option to author waves using a spectrum model.",
+ "Fully developed sea with infinite fetch.",
+ };
+
+ static readonly GUIContent s_TimeScaleLabel = new("Time Scale");
+
+ System.Type _HostComponentType = null;
+ public void SetTypeOfHostComponent(System.Type hostComponentType)
+ {
+ _HostComponentType = hostComponentType;
+ }
+
+ protected override void OnEnable()
+ {
+ base.OnEnable();
+
+ Undo.undoRedoEvent -= OnUndoRedo;
+ Undo.undoRedoEvent += OnUndoRedo;
+ }
+
+ protected override void OnDisable()
+ {
+ base.OnDisable();
+ Undo.undoRedoEvent -= OnUndoRedo;
+ }
+
+ void OnUndoRedo(in UndoRedoInfo info)
+ {
+ var target = (WaveSpectrum)this.target;
+
+ if (info.undoName == "Change Spectrum")
+ {
+ target.InitializeHandControls();
+ }
+ }
+
+ protected override void RenderInspectorGUI()
+ {
+ // Display a notice if its being edited as a standalone asset (not embedded in a component) because
+ // it displays the FFT-interface.
+ if (_HostComponentType == null)
+ {
+ EditorGUILayout.HelpBox("This editor is displaying the FFT spectrum settings. " +
+ "To edit settings specific to the ShapeGerstner component, assign this asset to a ShapeGerstner component " +
+ "and edit it there by expanding the Spectrum field.", MessageType.Info);
+ EditorGUILayout.Space();
+ }
+
+ base.RenderInspectorGUI();
+
+ EditorGUI.BeginChangeCheck();
+
+ var beingEditedOnGerstnerComponent = _HostComponentType == typeof(ShapeGerstner);
+
+ var showAdvancedControls = false;
+ if (beingEditedOnGerstnerComponent)
+ {
+ EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(WaveSpectrum._GravityScale)));
+
+ EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(WaveSpectrum._WaveDirectionVariance)));
+
+ EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(WaveSpectrum._ShowAdvancedControls)));
+ showAdvancedControls = serializedObject.FindProperty(nameof(WaveSpectrum._ShowAdvancedControls)).boolValue;
+ }
+ else
+ {
+ EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(WaveSpectrum._GravityScale)), s_TimeScaleLabel);
+ }
+
+ var spSpectrumModel = serializedObject.FindProperty(nameof(WaveSpectrum._Model));
+ var spectraIndex = serializedObject.FindProperty(nameof(WaveSpectrum._Model)).enumValueIndex;
+ var spectrumModel = (WaveSpectrum.SpectrumModel)Mathf.Clamp(spectraIndex, 0, 1);
+
+ EditorGUILayout.Space();
+
+ var spDisabled = serializedObject.FindProperty(nameof(WaveSpectrum._PowerDisabled));
+ EditorGUILayout.BeginHorizontal();
+ var allEnabled = true;
+ for (var i = 0; i < spDisabled.arraySize; i++)
+ {
+ if (spDisabled.GetArrayElementAtIndex(i).boolValue) allEnabled = false;
+ }
+ var toggle = allEnabled;
+ if (toggle != EditorGUILayout.Toggle(toggle, GUILayout.Width(13f)))
+ {
+ for (var i = 0; i < spDisabled.arraySize; i++)
+ {
+ spDisabled.GetArrayElementAtIndex(i).boolValue = toggle;
+ }
+ }
+ EditorGUILayout.LabelField("Spectrum", EditorStyles.boldLabel);
+ EditorGUILayout.EndHorizontal();
+
+ var spec = target as WaveSpectrum;
+
+ var spPower = serializedObject.FindProperty(nameof(WaveSpectrum._PowerLogarithmicScales));
+ var spChopScales = serializedObject.FindProperty(nameof(WaveSpectrum._ChopScales));
+ var spGravScales = serializedObject.FindProperty(nameof(WaveSpectrum._GravityScales));
+
+ // Disable sliders if authoring with model.
+ var canEditSpectrum = spectrumModel == WaveSpectrum.SpectrumModel.None;
+
+ for (var i = 0; i < spPower.arraySize; i++)
+ {
+ EditorGUILayout.BeginHorizontal();
+
+ var spDisabled_i = spDisabled.GetArrayElementAtIndex(i);
+ spDisabled_i.boolValue = !EditorGUILayout.Toggle(!spDisabled_i.boolValue, GUILayout.Width(15f));
+
+ var smallWL = WaveSpectrum.SmallWavelength(i);
+ var spPower_i = spPower.GetArrayElementAtIndex(i);
+
+ var isPowerDisabled = spDisabled_i.boolValue;
+ var powerValue = isPowerDisabled ? WaveSpectrum.s_MinimumPowerLog : spPower_i.floatValue;
+
+ if (showAdvancedControls)
+ {
+ EditorGUILayout.LabelField(string.Format("{0}", smallWL), EditorStyles.boldLabel);
+ EditorGUILayout.EndHorizontal();
+
+ // Disable slider if authoring with model.
+ using (new EditorGUI.DisabledGroupScope(!canEditSpectrum || spDisabled_i.boolValue))
+ {
+ powerValue = EditorGUILayout.Slider(" Power", powerValue, WaveSpectrum.s_MinimumPowerLog, WaveSpectrum.s_MaximumPowerLog);
+ }
+ }
+ else
+ {
+ EditorGUILayout.LabelField(string.Format("{0}", smallWL), GUILayout.Width(50f));
+
+ // Disable slider if authoring with model.
+ using (new EditorGUI.DisabledGroupScope(!canEditSpectrum || spDisabled_i.boolValue))
+ {
+ powerValue = EditorGUILayout.Slider(powerValue, WaveSpectrum.s_MinimumPowerLog, WaveSpectrum.s_MaximumPowerLog);
+ }
+
+ EditorGUILayout.EndHorizontal();
+ // This will create a tooltip for slider.
+ GUI.Label(GUILayoutUtility.GetLastRect(), new GUIContent("", powerValue.ToString()));
+ }
+
+ // If the power is disabled, we are using the MIN_POWER_LOG value so we don't want to store it.
+ if (!isPowerDisabled)
+ {
+ spPower_i.floatValue = powerValue;
+ }
+
+ if (showAdvancedControls)
+ {
+ EditorGUILayout.Slider(spChopScales.GetArrayElementAtIndex(i), 0f, 4f, " Chop Scale");
+ EditorGUILayout.Slider(spGravScales.GetArrayElementAtIndex(i), 0f, 4f, " Grav Scale");
+ }
+ }
+
+
+ EditorGUILayout.Space();
+ EditorGUILayout.LabelField("Empirical Spectra", EditorStyles.boldLabel);
+
+ EditorGUILayout.BeginHorizontal();
+ spectrumModel = (WaveSpectrum.SpectrumModel)EditorGUILayout.EnumPopup(spectrumModel);
+ spSpectrumModel.enumValueIndex = (int)spectrumModel;
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.Space();
+ EditorGUILayout.HelpBox(s_ModelDescriptions[(int)spectrumModel], MessageType.Info);
+ EditorGUILayout.Space();
+
+ if (spectrumModel == WaveSpectrum.SpectrumModel.None)
+ {
+ Undo.RecordObject(spec, "Change Spectrum");
+ }
+ else
+ {
+ // It doesn't seem to matter where this is called.
+ Undo.RecordObject(spec, $"Apply {ObjectNames.NicifyVariableName(spectrumModel.ToString())} Spectrum");
+
+
+ // Descriptions from this very useful paper:
+ // https://hal.archives-ouvertes.fr/file/index/docid/307938/filename/frechot_realistic_simulation_of_ocean_surface_using_wave_spectra.pdf
+
+ switch (spectrumModel)
+ {
+ case WaveSpectrum.SpectrumModel.PiersonMoskowitz:
+ var water = WaterRenderer.Instance;
+ spec.ApplyPiersonMoskowitzSpectrum(water != null ? water.Gravity : Mathf.Abs(Physics.gravity.y));
+ break;
+ }
+ }
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ // NOTE: Undo/Redo will not update for some reason.
+ serializedObject.ApplyModifiedProperties();
+ spec.InitializeHandControls();
+ }
+
+ if (GUI.changed)
+ {
+ // We need to call this otherwise any property which has HideInInspector won't save.
+ EditorUtility.SetDirty(spec);
+ }
+ }
+ }
+
+ [CustomEditor(typeof(LodSettings), true)]
+ sealed class SimSettingsBaseEditor : Inspector
+ {
+ protected override void RenderInspectorGUI()
+ {
+ EditorGUILayout.Space();
+ if (GUILayout.Button("Open Online Help Page"))
+ {
+ var targetType = target.GetType();
+ var helpAttribute = (HelpURL)System.Attribute.GetCustomAttribute(targetType, typeof(HelpURL));
+ Debug.AssertFormat(helpAttribute != null, "Crest: Could not get HelpURL attribute from {0}.", targetType);
+ Application.OpenURL(helpAttribute.URL);
+ }
+ EditorGUILayout.Space();
+
+ base.RenderInspectorGUI();
+ }
+ }
+
+ [CustomEditor(typeof(WaterChunkRenderer)), CanEditMultipleObjects]
+ sealed class WaterChunkRendererEditor : Inspector
+ {
+ Renderer _Renderer;
+ protected override void RenderInspectorGUI()
+ {
+ base.RenderInspectorGUI();
+
+ var target = this.target as WaterChunkRenderer;
+
+ if (_Renderer == null)
+ {
+ _Renderer = target.GetComponent();
+ }
+
+ GUI.enabled = false;
+ var boundsXZ = new Bounds(target._UnexpandedBoundsXZ.center.XNZ(), target._UnexpandedBoundsXZ.size.XNZ());
+ EditorGUILayout.BoundsField("Bounds XZ", boundsXZ);
+ EditorGUILayout.BoundsField("Expanded Bounds", _Renderer.bounds);
+ GUI.enabled = true;
+ }
+ }
+
+ [CustomEditor(typeof(DepthProbe))]
+ sealed class DepthProbeEditor : Inspector
+ {
+ [InitializeOnLoadMethod]
+ static void OnLoad()
+ {
+ // Allows DepthProbe to trigger a bake without referencing assembly.
+ DepthProbe.OnBakeRequest -= Bake;
+ DepthProbe.OnBakeRequest += Bake;
+ }
+
+ protected override void RenderBottomButtons()
+ {
+ base.RenderBottomButtons();
+
+ EditorGUILayout.Space();
+
+ var target = this.target as DepthProbe;
+
+ var isBaked = target.Type == DepthProbeMode.Baked;
+ var onDemand = target.Type == DepthProbeMode.RealTime && target.RefreshMode == DepthProbeRefreshMode.ViaScripting;
+ var canBake = !onDemand && !Application.isPlaying;
+ var canPopulate = Application.isPlaying ? onDemand : target.Type != DepthProbeMode.Baked;
+
+ if (isBaked ? GUILayout.Button("Switch to Real-Time") : target.SavedTexture != null && GUILayout.Button("Switch to Baked"))
+ {
+ Undo.RecordObject(target, isBaked ? "Switch to Real-Time" : "Switch to Baked");
+ target.Type = isBaked ? DepthProbeMode.RealTime : DepthProbeMode.Baked;
+ EditorUtility.SetDirty(target);
+ }
+
+ if (canPopulate && GUILayout.Button("Populate"))
+ {
+ target.Populate();
+ }
+
+ if (canBake && GUILayout.Button("Bake"))
+ {
+ Bake(target);
+ }
+ }
+
+ internal static void Bake(DepthProbe target)
+ {
+ target.ForcePopulate();
+
+ var rt = target.RealtimeTexture;
+ RenderTexture.active = rt;
+ var tex = new Texture2D(rt.width, rt.height, TextureFormat.RGBAHalf, false);
+ tex.ReadPixels(new(0, 0, rt.width, rt.height), 0, 0);
+ RenderTexture.active = null;
+
+ byte[] bytes;
+ bytes = tex.EncodeToEXR(Texture2D.EXRFlags.OutputAsFloat);
+
+ var path = target.SavedTexture
+ ? AssetDatabase.GetAssetPath(target.SavedTexture)
+ : $"Assets/DepthProbe_{System.Guid.NewGuid()}.exr";
+ System.IO.File.WriteAllBytes(path, bytes);
+ AssetDatabase.ImportAsset(path);
+
+ if (target.SavedTexture == null)
+ {
+ var serializedObject = new SerializedObject(target);
+ serializedObject.FindProperty(nameof(DepthProbe._SavedTexture)).objectReferenceValue = AssetDatabase.LoadAssetAtPath(path);
+ serializedObject.FindProperty(nameof(DepthProbe._Type)).enumValueIndex = (int)DepthProbeMode.Baked;
+ serializedObject.ApplyModifiedProperties();
+ }
+
+ var ti = AssetImporter.GetAtPath(path) as TextureImporter;
+ ti.textureShape = TextureImporterShape.Texture2D;
+ ti.sRGBTexture = false;
+ ti.alphaSource = TextureImporterAlphaSource.None;
+ ti.mipmapEnabled = false;
+ ti.alphaIsTransparency = false;
+ // Compression will clamp negative values.
+ ti.textureCompression = TextureImporterCompression.Uncompressed;
+ ti.filterMode = FilterMode.Bilinear;
+ ti.wrapMode = TextureWrapMode.Clamp;
+ // Values are slightly different with NPOT Scale applied.
+ ti.npotScale = TextureImporterNPOTScale.None;
+
+ // Set single component.
+ if (!target._GenerateSignedDistanceField)
+ {
+ ti.textureType = TextureImporterType.SingleChannel;
+
+ var settings = new TextureImporterSettings();
+ ti.ReadTextureSettings(settings);
+ settings.singleChannelComponent = TextureImporterSingleChannelComponent.Red;
+ ti.SetTextureSettings(settings);
+ }
+ else
+ {
+ ti.textureType = TextureImporterType.Default;
+ }
+
+ // Set format.
+ {
+ var settings = ti.GetDefaultPlatformTextureSettings();
+ settings.format = target._GenerateSignedDistanceField ? TextureImporterFormat.RGFloat : TextureImporterFormat.RFloat;
+ ti.SetPlatformTextureSettings(settings);
+ }
+
+ ti.SaveAndReimport();
+
+ Debug.Log("Crest: Probe saved to " + path, AssetDatabase.LoadAssetAtPath