diff --git a/Assets/External/Stylized Water 3.meta b/Assets/External/Stylized Water 3.meta new file mode 100644 index 00000000..d7c317b0 --- /dev/null +++ b/Assets/External/Stylized Water 3.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6f78aeba0793a949852face9715ac7b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/CHANGELOG.md b/Assets/External/Stylized Water 3/CHANGELOG.md new file mode 100644 index 00000000..89ffc66b --- /dev/null +++ b/Assets/External/Stylized Water 3/CHANGELOG.md @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50bf54ad56ffb8f7f4defd5bae6811d4118142fb596efae48a999c6d45dbc334 +size 7013 diff --git a/Assets/External/Stylized Water 3/CHANGELOG.md.meta b/Assets/External/Stylized Water 3/CHANGELOG.md.meta new file mode 100644 index 00000000..a6bfd3e9 --- /dev/null +++ b/Assets/External/Stylized Water 3/CHANGELOG.md.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 793931a466dcf8743a80dc24cd9f9a56 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/CHANGELOG.md + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Documentation.url b/Assets/External/Stylized Water 3/Documentation.url new file mode 100644 index 00000000..2e44fb08 --- /dev/null +++ b/Assets/External/Stylized Water 3/Documentation.url @@ -0,0 +1,6 @@ +[{000214A0-0000-0000-C000-000000000046}] +Prop3=19,2 +[InternetShortcut] +IDList= +URL=https://staggart.xyz/unity/stylized-water-3/sw3-docs/ +HotKey=0 diff --git a/Assets/External/Stylized Water 3/Documentation.url.meta b/Assets/External/Stylized Water 3/Documentation.url.meta new file mode 100644 index 00000000..0e344187 --- /dev/null +++ b/Assets/External/Stylized Water 3/Documentation.url.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 34cd7ff569c148941a18a2b494e0e596 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Documentation.url + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor.meta b/Assets/External/Stylized Water 3/Editor.meta new file mode 100644 index 00000000..98b00490 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e7bfc054e36c424b97776205fef2d54 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Editor/AssetInfo.cs b/Assets/External/Stylized Water 3/Editor/AssetInfo.cs new file mode 100644 index 00000000..b6fde6fa --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/AssetInfo.cs @@ -0,0 +1,419 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#if !UNITY_6000_0_OR_NEWER +#error [Stylized Water 3] Imported in a version older than Unity 6, all present script and shader compile errors are valid and not something to simply be fixed. Upgrade the project to Unity 6 to resolve them. +#endif + +using System; +using System.Collections.Generic; +using System.Net; +using UnityEditor; +using UnityEditor.PackageManager; +using UnityEditor.PackageManager.Requests; +using PackageInfo = UnityEditor.PackageManager.PackageInfo; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace StylizedWater3 +{ + public class AssetInfo + { + private const string THIS_FILE_GUID = "b15801d8ff7e9574288149dd4cebaa68"; + + public const string ASSET_NAME = "Stylized Water 3"; + public const string ASSET_ID = "287769"; + public const string ASSET_ABRV = "SW3"; + + public const string INSTALLED_VERSION = "3.2.1"; + + private static readonly Dictionary REQUIRED_PATCH_VERSIONS = new Dictionary() + { + { "6000.0", 22 }, + { "6000.1", 3 } + }; + public const string MIN_URP_VERSION = "17.0.3"; + + public const string DOC_URL = "https://staggart.xyz/unity/stylized-water-3/sw3-docs/"; + public const string FORUM_URL = "https://discussions.unity.com/t/1542753"; + public const string EMAIL_URL = "mailto:contact@staggart.xyz?subject=Stylized Water 3"; + public const string DISCORD_INVITE_URL = "https://discord.gg/GNjEaJc8gw"; + +#if !URP //Enabled when com.unity.render-pipelines.universal is below MIN_URP_VERSION + [InitializeOnLoad] + sealed class PackageInstaller : Editor + { + [InitializeOnLoadMethod] + public static void Initialize() + { + GetLatestCompatibleURPVersion(); + + if (EditorUtility.DisplayDialog(ASSET_NAME + " v" + INSTALLED_VERSION, "This package requires the Universal Render Pipeline " + MIN_URP_VERSION + " or newer, would you like to install or update it now?", "OK", "Later")) + { + Debug.Log("Universal Render Pipeline v" + lastestURPVersion + " will start installing in a moment. Please refer to the URP documentation for set up instructions"); + Debug.Log("After installing and setting up URP, you must Re-import the Shaders folder!"); + + InstallURP(); + } + } + + private static PackageInfo urpPackage; + + private static string lastestURPVersion; + +#if SWS_DEV + [MenuItem("SWS/Get latest URP version")] +#endif + private static void GetLatestCompatibleURPVersion() + { + if(urpPackage == null) urpPackage = GetURPPackage(); + if(urpPackage == null) return; + + lastestURPVersion = urpPackage.versions.latestCompatible; + +#if SWS_DEV + Debug.Log("Latest compatible URP version: " + lastestURPVersion); +#endif + } + + private static void InstallURP() + { + if(urpPackage == null) urpPackage = GetURPPackage(); + if(urpPackage == null) return; + + lastestURPVersion = urpPackage.versions.latestCompatible; + + AddRequest addRequest = Client.Add(URP_PACKAGE_ID + "@" + lastestURPVersion); + + //Update Core and Shader Graph packages as well, doesn't always happen automatically + for (int i = 0; i < urpPackage.dependencies.Length; i++) + { +#if SWS_DEV + Debug.Log("Updating URP dependency " + urpPackage.dependencies[i].name + " to " + urpPackage.dependencies[i].version); +#endif + addRequest = Client.Add(urpPackage.dependencies[i].name + "@" + urpPackage.dependencies[i].version); + } + + //Wait until finished + while(!addRequest.IsCompleted || addRequest.Status == StatusCode.InProgress) { } + + WaterShaderImporter.ReimportAll(); + } + } +#endif + + public const string URP_PACKAGE_ID = "com.unity.render-pipelines.universal"; + + public static PackageInfo GetURPPackage() + { + SearchRequest request = Client.Search(URP_PACKAGE_ID); + + while (request.Status == StatusCode.InProgress) { /* Waiting... */ } + + if (request.Status == StatusCode.Failure) + { + Debug.LogError("Failed to retrieve URP package from Package Manager..."); + return null; + } + + return request.Result[0]; + } + + //Sorry, as much as I hate to intrude on an entire project, this is the only way in Unity to track importing or updating an asset + public class ImportOrUpdateAsset : AssetPostprocessor + { + private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromPath) + { + for (int i = 0; i < importedAssets.Length; i++) + { + OnPreProcessAsset(importedAssets[i]); + } + + for (int i = 0; i < deletedAssets.Length; i++) + { + OnPreProcessAsset(deletedAssets[i]); + } + } + + private static void OnPreProcessAsset(string m_assetPath) + { + //Importing/updating the Stylized Water 3 asset + if (m_assetPath.EndsWith("Stylized Water 3/Editor/AssetInfo.cs") || m_assetPath.EndsWith("com.staggartcreations.stylizedwater3/Editor/AssetInfo.cs")) + { + Installer.Initialize(); + Installer.OpenWindowIfNeeded(); + } + + //These files change every version, so will trigger when updating or importing the first time + if (m_assetPath.EndsWith("Extension.UnderwaterRendering.cs")) + { + OnImportExtension("Underwater Rendering"); + } + + if (m_assetPath.EndsWith("Extension.DynamicEffects.cs")) + { + OnImportExtension("Dynamic Effects"); + } + } + + private static void OnImportExtension(string name) + { + Debug.Log($"[Stylized Water 3] {name} extension installed/deleted or updated. Reimporting water shader(s) to toggle integration."); + + //Re-import any .watershader3 files, since these depend on the installation state of extensions + WaterShaderImporter.ReimportAll(); + } + } + + public static bool MeetsMinimumVersion(string versionMinimum) + { + Version curVersion = new Version(INSTALLED_VERSION); + Version minVersion = new Version(versionMinimum); + + return curVersion >= minVersion; + } + + public static void OpenAssetStore(string url = null) + { + if (url == string.Empty) url = "https://assetstore.unity.com/packages/slug/" + ASSET_ID; + + Application.OpenURL(url + "?aid=1011l7Uk8&pubref=sw3editor"); + } + + public static void OpenReviewsPage() + { + Application.OpenURL($"https://assetstore.unity.com/packages/slug/{ASSET_ID}?aid=1011l7Uk8&pubref=sw3editor#reviews"); + } + + public static void OpenInPackageManager() + { + Application.OpenURL("com.unity3d.kharma:content/" + ASSET_ID); + } + + public static void OpenForumPage() + { + Application.OpenURL(FORUM_URL + "/page-999"); + } + + public static string GetRootFolder() + { + //Get script path + string scriptFilePath = AssetDatabase.GUIDToAssetPath(THIS_FILE_GUID); + + //Truncate to get relative path + string rootFolder = scriptFilePath.Replace("Editor/AssetInfo.cs", string.Empty); + +#if SWS_DEV + //Debug.Log("Package root " + rootFolder); +#endif + + return rootFolder; + } + + public static class VersionChecking + { + public static string MinRequiredUnityVersion = "undefined"; + + public enum UnityVersionType + { + Release, + Beta, + Alpha + } + public static UnityVersionType unityVersionType; + + [InitializeOnLoadMethod] + static void Initialize() + { + if (CHECK_PERFORMED == false) + { + CheckForUpdate(false); + CHECK_PERFORMED = true; + } + } + + private static bool CHECK_PERFORMED + { + get => SessionState.GetBool("SW3_VERSION_CHECK_PERFORMED", false); + set => SessionState.SetBool("SW3_VERSION_CHECK_PERFORMED", value); + } + + public static string LATEST_VERSION + { + get => SessionState.GetString("SW3_LATEST_VERSION", INSTALLED_VERSION); + set => SessionState.SetString("SW3_LATEST_VERSION", value); + } + public static bool UPDATE_AVAILABLE => new Version(LATEST_VERSION) > new Version(INSTALLED_VERSION); + + public static string GetUnityVersion() + { + string version = UnityEditorInternal.InternalEditorUtility.GetFullUnityVersion(); + + //Remove GUID in parenthesis + return version.Substring(0, version.LastIndexOf(" (")); + } + + public static bool supportedMajorVersion = true; + public static bool supportedPatchVersion = true; + public static bool compatibleVersion = true; + + private static void ParseUnityVersion(string versionString, out int major, out int minor, out int patch, out UnityVersionType type) + { + var match = System.Text.RegularExpressions.Regex.Match(versionString, @"^(\d+)\.(\d+)\.(\d+)"); + if (match.Success) + { + major = int.Parse(match.Groups[1].Value); + minor = int.Parse(match.Groups[2].Value); + patch = int.Parse(match.Groups[3].Value); + + if (versionString.Contains("b")) + { + type = UnityVersionType.Beta; + } + else if (versionString.Contains("a")) + { + type = UnityVersionType.Alpha; + } + else + { + type = UnityVersionType.Release; + } + } + else + { + throw new FormatException($"Invalid Unity version format: {versionString}."); + } + } + + public static void CheckUnityVersion() + { + string unityVersion = GetUnityVersion(); + + #if !UNITY_6000_0_OR_NEWER + compatibleVersion = false; + #endif + + #if !UNITY_6000_0_OR_NEWER || UNITY_7000_OR_NEWER + supportedMajorVersion = false; + #endif + + ParseUnityVersion(unityVersion, out int major, out int minor, out int patch, out unityVersionType); + + //Get the minimum required patch version for the current Unity version (eg. 6000.1) + if (REQUIRED_PATCH_VERSIONS.TryGetValue($"{major}.{minor}", out int minPatchVersion)) + { + supportedPatchVersion = patch >= minPatchVersion; + } + else + { + //None found, current Unity version likely unknown + supportedPatchVersion = true; + } + + MinRequiredUnityVersion = $"{major}.{minor}.{minPatchVersion}"; + } + + public static string apiResult; + private static bool showPopup; + + public enum VersionStatus + { + UpToDate, + Outdated + } + + public enum QueryStatus + { + Fetching, + Completed, + Failed + } + public static QueryStatus queryStatus = QueryStatus.Completed; + +#if SWS_DEV + [MenuItem("SWS/Check for update")] +#endif + public static void GetLatestVersionPopup() + { + CheckForUpdate(true); + } + + private static int VersionStringToInt(string input) + { + //Remove all non-alphanumeric characters from version + input = input.Replace(".", string.Empty); + input = input.Replace(" BETA", string.Empty); + return int.Parse(input, System.Globalization.NumberStyles.Any); + } + + public static void CheckForUpdate(bool showPopup = false) + { + //Offline + if (Application.internetReachability == NetworkReachability.NotReachable) + { + LATEST_VERSION = INSTALLED_VERSION; + return; + } + + VersionChecking.showPopup = showPopup; + + queryStatus = QueryStatus.Fetching; + + var url = $"https://api.assetstore.unity3d.com/package/latest-version/{ASSET_ID}"; + + using (System.Net.WebClient webClient = new System.Net.WebClient()) + { + webClient.DownloadStringCompleted += OnRetrievedAPIContent; + webClient.DownloadStringAsync(new System.Uri(url), apiResult); + } + } + + private class AssetStoreItem + { + public string name; + public string version; + } + + private static void OnRetrievedAPIContent(object sender, DownloadStringCompletedEventArgs e) + { + if (e.Error == null && !e.Cancelled) + { + string result = e.Result; + + AssetStoreItem asset = (AssetStoreItem)JsonUtility.FromJson(result, typeof(AssetStoreItem)); + + LATEST_VERSION = asset.version; + //LATEST_VERSION = "9.9.9"; + +#if SWS_DEV + Debug.Log("Asset store API Update available = " + UPDATE_AVAILABLE + " (Installed:" + INSTALLED_VERSION + ") (Remote:" + LATEST_VERSION + ")"); +#endif + + queryStatus = QueryStatus.Completed; + + if (VersionChecking.showPopup) + { + if (UPDATE_AVAILABLE) + { + if (EditorUtility.DisplayDialog(ASSET_NAME + ", version " + INSTALLED_VERSION, "An updated version is available: " + LATEST_VERSION, "Open Package Manager", "Close")) + { + OpenInPackageManager(); + } + } + else + { + if (EditorUtility.DisplayDialog(ASSET_NAME + ", version " + INSTALLED_VERSION, "Installed version is up-to-date!", "Close")) { } + } + } + } + else + { + Debug.LogWarning("[" + ASSET_NAME + "] Contacting update server failed: " + e.Error.Message); + queryStatus = QueryStatus.Failed; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/AssetInfo.cs.meta b/Assets/External/Stylized Water 3/Editor/AssetInfo.cs.meta new file mode 100644 index 00000000..e8dd4285 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/AssetInfo.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: b15801d8ff7e9574288149dd4cebaa68 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/AssetInfo.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors.meta b/Assets/External/Stylized Water 3/Editor/Inspectors.meta new file mode 100644 index 00000000..49562af4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6ed5097af7d138040808f978ab8fbaa8 +timeCreated: 1701083972 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs b/Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs new file mode 100644 index 00000000..ecdfe02b --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs @@ -0,0 +1,137 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.UIElements; +using UnityEngine.UIElements; +using PrefabStageUtility = UnityEditor.SceneManagement.PrefabStageUtility; + +namespace StylizedWater3 +{ + [CanEditMultipleObjects] + [CustomEditor(typeof(AlignToWater))] + public class AlignToWaterInspector : Editor + { + AlignToWater script; + + SerializedProperty heightInterface; + + SerializedProperty followTarget; + + SerializedProperty surfaceSize; + + SerializedProperty heightOffset; + SerializedProperty rollAmount; + + SerializedProperty rotation; + SerializedProperty smoothing; + + private bool isRiver; + private bool wavesEnabled; + + private string proSkinPrefix => EditorGUIUtility.isProSkin ? "d_" : ""; + + private void OnEnable() + { + script = (AlignToWater)target; + + heightInterface = serializedObject.FindProperty("heightInterface"); + + followTarget = serializedObject.FindProperty("followTarget"); + + surfaceSize = serializedObject.FindProperty("surfaceSize"); + + heightOffset = serializedObject.FindProperty("heightOffset"); + rollAmount = serializedObject.FindProperty("rollAmount"); + + rotation = serializedObject.FindProperty("rotation"); + smoothing = serializedObject.FindProperty("smoothing"); + + ValidateMaterial(); + } + + public override void OnInspectorGUI() + { + UI.DrawHeader(); + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(EditorGUIUtility.labelWidth); + AlignToWater.EnableInEditor = + GUILayout.Toggle(AlignToWater.EnableInEditor, new GUIContent(" Run in edit-mode (global)", EditorGUIUtility.IconContent( + (AlignToWater.EnableInEditor ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button"); + } + + EditorGUILayout.Space(); + + serializedObject.Update(); + + if (script.rigidbody) + { + EditorGUILayout.HelpBox("RigidBody attachment detected! A fair reminder that this is not a physics-compatible component." + + "\n\n" + + "Physics will be overriden and its position and rotation will be set directly." + + "\nVertical forces applied to it will cause visible jittering.", MessageType.Warning); + } + + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(heightInterface); + + //UI.DrawNotification(isRiver, "Material has river mode enabled, buoyancy only works for flat water bodies", MessageType.Error); + //UI.DrawNotification(!wavesEnabled && !isRiver, "Material used on the water object does not have waves enabled.", MessageType.Error); + + /* + if (script.waterObject && script.waterObject.material) + { + UI.DrawNotification((script.waterObject.material.GetFloat("_WorldSpaceUV") == 0f), "Material must use world-projected UV", "Change", ()=> script.waterObject.material.SetFloat("_WorldSpaceUV", 1f), MessageType.Error); + } + */ + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(surfaceSize); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(followTarget); + EditorGUILayout.PropertyField(heightOffset); + EditorGUILayout.PropertyField(rollAmount); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(rotation); + EditorGUILayout.PropertyField(smoothing); + + UI.DrawNotification(smoothing.floatValue == 0f && script.rigidbody, "Smoothing is required to mitigate jittering of the RigidBody", MessageType.Warning); + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + + ValidateMaterial(); + } + + UI.DrawFooter(); + } + + private void ValidateMaterial() + { + /* + if (script.waterObject && script.waterObject.material) + { + if (script.waterObject.material != script.waterObject.meshRenderer.sharedMaterial) script.waterObject.material = script.waterObject.meshRenderer.sharedMaterial; + + wavesEnabled = WaveParameters.WavesEnabled(script.waterObject.material); + isRiver = script.waterObject.material.IsKeywordEnabled(ShaderParams.Keywords.River); + } + */ + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs.meta b/Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs.meta new file mode 100644 index 00000000..fc7d9644 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: e47e6ece236452443bf1418a01d87491 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 148978298399363526, guid: 0000000000000000d000000000000000, type: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs b/Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs new file mode 100644 index 00000000..ba3f46e6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs @@ -0,0 +1,92 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using UnityEditor; +using UnityEngine; + +namespace StylizedWater3 +{ + [CustomEditor(typeof(OceanFollowBehaviour))] + public class OceanFollowBehaviourInspector : Editor + { + private SerializedProperty material; + private SerializedProperty enableInEditMode; + private SerializedProperty followTarget; + + private bool isvalidSetup; + + private void OnEnable() + { + material = serializedObject.FindProperty("material"); + enableInEditMode = serializedObject.FindProperty("enableInEditMode"); + followTarget = serializedObject.FindProperty("followTarget"); + + isvalidSetup = ((OceanFollowBehaviour)target).InvalidSetup(); + } + + private bool materialChanged; + + public override void OnInspectorGUI() + { + UI.DrawHeader(); + + serializedObject.Update(); + + UI.DrawNotification(isvalidSetup, "This component has an invalid set up, one or more references went missing." + + "\n\nThis component must not be added manually." + + "\n\nInstead go to GameObject->3D Object->Water->Ocean to create an ocean", + MessageType.Error); + + EditorGUI.BeginChangeCheck(); + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(EditorGUIUtility.labelWidth); + OceanFollowBehaviour.ShowWireFrame = GUILayout.Toggle(OceanFollowBehaviour.ShowWireFrame, new GUIContent(" Show Wireframe", EditorGUIUtility.IconContent((OceanFollowBehaviour.ShowWireFrame ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button"); + } + + EditorGUILayout.Separator(); + + using (new EditorGUILayout.HorizontalScope()) + { + materialChanged = false; + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(material); + + if (EditorGUI.EndChangeCheck()) materialChanged = true; + + EditorGUI.BeginDisabledGroup(material.objectReferenceValue == null); + if (GUILayout.Button("Edit", EditorStyles.miniButton, GUILayout.Width(50f))) + { + Selection.activeObject = material.objectReferenceValue; + //StylizedWaterEditor.PopUpMaterialEditor.Create(material.objectReferenceValue); + } + EditorGUI.EndDisabledGroup(); + } + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(enableInEditMode); + EditorGUILayout.PropertyField(followTarget); + if (followTarget.objectReferenceValue == null) + { + EditorGUILayout.HelpBox("None assigned. The actively rendering camera will be automatically followed", MessageType.Info); + } + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + + if (materialChanged) + { + OceanFollowBehaviour component = (OceanFollowBehaviour)target; + component.ApplyMaterial(); + } + } + + UI.DrawFooter(); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs.meta b/Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs.meta new file mode 100644 index 00000000..68224b45 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d01f8235914f45d2b896c0384d978acc +timeCreated: 1729594576 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs b/Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs new file mode 100644 index 00000000..3fe1a3b5 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs @@ -0,0 +1,361 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.XR; + +namespace StylizedWater3 +{ + [CustomEditor(typeof(PlanarReflectionRenderer))] + public class PlanarReflectionRendererInspector : Editor + { + private PlanarReflectionRenderer renderer; + + //Rendering + private SerializedProperty rotatable; + private SerializedProperty cullingMask; + private SerializedProperty rendererIndex; + private SerializedProperty offset; + private SerializedProperty includeSkybox; + private SerializedProperty enableFog; + private SerializedProperty enableInSceneView; + + //Quality + private SerializedProperty renderShadows; + private SerializedProperty renderScale; + private SerializedProperty maximumLODLevel; + + private SerializedProperty waterObjects; + private SerializedProperty moveWithTransform; + + private Bounds curBounds; + private bool waterLayerError; + + private bool previewReflection + { + get => EditorPrefs.GetBool("SWS2_PREVIEW_REFLECTION_ENABLED", true); + set => EditorPrefs.SetBool("SWS2_PREVIEW_REFLECTION_ENABLED", value); + } + private RenderTexture previewTexture; + +#if URP + private void OnEnable() + { + PipelineUtilities.RefreshRendererList(); + + renderer = (PlanarReflectionRenderer)target; + + rotatable = serializedObject.FindProperty("rotatable"); + cullingMask = serializedObject.FindProperty("cullingMask"); + rendererIndex = serializedObject.FindProperty("rendererIndex"); + offset = serializedObject.FindProperty("offset"); + includeSkybox = serializedObject.FindProperty("includeSkybox"); + enableFog = serializedObject.FindProperty("enableFog"); + enableInSceneView = serializedObject.FindProperty("enableInSceneView"); + renderShadows = serializedObject.FindProperty("renderShadows"); + renderScale = serializedObject.FindProperty("renderScale"); + maximumLODLevel = serializedObject.FindProperty("maximumLODLevel"); + waterObjects = serializedObject.FindProperty("waterObjects"); + moveWithTransform = serializedObject.FindProperty("moveWithTransform"); + + if (renderer.waterObjects.Count == 0 && WaterObject.Instances.Count == 1) + { + renderer.waterObjects.Add(WaterObject.Instances[0]); + renderer.RecalculateBounds(); + renderer.EnableMaterialReflectionSampling(); + + EditorUtility.SetDirty(target); + serializedObject.ApplyModifiedPropertiesWithoutUndo(); + } + + ValidateWaterObjectLayer(); + + curBounds = renderer.CalculateBounds(); + + RenderPipelineManager.endCameraRendering += OnEndCameraRendering; + } + + private Camera currentCamera; + private string currentCameraName; + private bool waterObjectsVisible; + + private void OnEndCameraRendering(ScriptableRenderContext context, Camera camera) + { + if (!previewReflection) return; + + if (renderer.InvalidContext(camera)) return; + + currentCamera = camera; + + waterObjectsVisible = renderer.WaterObjectsVisible(currentCamera); + + previewTexture = renderer.TryGetReflectionTexture(currentCamera); + currentCameraName = currentCamera.name; + } + + private void OnDisable() + { + RenderPipelineManager.endCameraRendering -= OnEndCameraRendering; + } +#endif + + public override void OnInspectorGUI() + { +#if !URP + UI.DrawNotification("The Universal Render Pipeline package v" + AssetInfo.MIN_URP_VERSION + " or newer is not installed", MessageType.Error); +#else + UI.DrawHeader(); + + if (ShaderUtil.anythingCompiling) + { + EditorGUILayout.HelpBox("Rendering is temporarily paused, while the editor finishes compiling shaders", MessageType.Info); + } + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(EditorGUIUtility.labelWidth); + previewReflection = + GUILayout.Toggle(previewReflection, new GUIContent(" Preview reflection", EditorGUIUtility.IconContent( + (previewReflection ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button"); + } + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(EditorGUIUtility.labelWidth); + EditorGUILayout.LabelField("Status: " + (waterObjectsVisible && currentCamera ? $"Rendering (camera: {currentCamera.name})" : "Not rendering (water not in view for any camera)"), EditorStyles.miniLabel); + } + + UI.DrawNotification(PipelineUtilities.VREnabled(), "Not supported with VR rendering", MessageType.Error); + + UI.DrawNotification(PlanarReflectionRenderer.AllowReflections == false, "Reflections have been globally disabled by an external script", MessageType.Warning); + + serializedObject.Update(); + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.LabelField("Rendering", EditorStyles.boldLabel); + + EditorGUI.BeginChangeCheck(); + UI.DrawRendererProperty(rendererIndex); + if (EditorGUI.EndChangeCheck()) + { + renderer.SetRendererIndex(rendererIndex.intValue); + } + + //Default renderer + if (rendererIndex.intValue == 0) + { + UI.DrawNotification("\n" + + "Using the default renderer for reflections is strongly discouraged." + + "\n\nMost (if not all) render features, such as third-party post processing effects, will also render for the reflection." + + "\n\nThis can lead to rendering artefacts and negatively impacts overall performance." + + "\n", MessageType.Warning); + + //If there are no other renderers to assign, suggest to auto-create one + UI.DrawNotification(PipelineUtilities.rendererIndexList.Length <= 2, "It is highly recommend to create a separate empty renderer", "Create and assign", CreateRenderer, MessageType.None); + + EditorGUILayout.Space(); + } + + EditorGUILayout.PropertyField(cullingMask); + + EditorGUILayout.PropertyField(includeSkybox); + EditorGUILayout.PropertyField(enableFog); + if(enableFog.boolValue) EditorGUILayout.HelpBox("Unity's built-in fog does not support oblique projections. Expect incorrect fog shading on tall objects or large triangles", MessageType.Warning); + EditorGUILayout.PropertyField(enableInSceneView); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(rotatable); + EditorGUILayout.PropertyField(offset); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Quality", EditorStyles.boldLabel); + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(renderShadows); + if (EditorGUI.EndChangeCheck()) + { + renderer.ToggleShadows(renderShadows.boolValue); + } + EditorGUILayout.PropertyField(renderScale); + EditorGUILayout.PropertyField(maximumLODLevel); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Target water objects", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(moveWithTransform, new GUIContent("Move bounds with transform", moveWithTransform.tooltip)); + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(waterObjects); + if (EditorGUI.EndChangeCheck()) + { + curBounds = renderer.CalculateBounds(); + } + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + } + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + if(GUILayout.Button(new GUIContent("Auto-find", "Assigns all active water objects currently in the scene"), EditorStyles.miniButton)) + { + renderer.waterObjects = new List(WaterObject.Instances); + + renderer.RecalculateBounds(); + curBounds = renderer.bounds; + renderer.EnableMaterialReflectionSampling(); + + ValidateWaterObjectLayer(); + + EditorUtility.SetDirty(target); + } + if(GUILayout.Button("Clear", EditorStyles.miniButton)) + { + renderer.ToggleMaterialReflectionSampling(false); + renderer.waterObjects.Clear(); + renderer.RecalculateBounds(); + + EditorUtility.SetDirty(target); + } + } + + if (renderer.waterObjects != null) + { + UI.DrawNotification(renderer.waterObjects.Count == 0, "Assign at least one Water Object", MessageType.Info); + + if (renderer.waterObjects.Count > 0) + { + UI.DrawNotification(curBounds.size != renderer.bounds.size || (moveWithTransform.boolValue == false && curBounds.center != renderer.bounds.center), "Water objects have changed or moved, bounds needs to be recalculated", "Recalculate",() => RecalculateBounds(), MessageType.Error); + } + + UI.DrawNotification(waterLayerError, "One or more Water Objects aren't on the \"Water\" layer.\n\nThis causes recursive reflections", "Fix", () => SetObjectsOnWaterLayer(), MessageType.Error); + } + +#endif + + UI.DrawFooter(); + } + +#if URP + + private void CreateRenderer() + { + int index = -1; + string path = ""; + + PipelineUtilities.CreateAndAssignNewRenderer(out index, out path); + + if (index >= 0) + { + rendererIndex.intValue = index; + + serializedObject.ApplyModifiedProperties(); + serializedObject.Update(); + + renderer.SetRendererIndex(rendererIndex.intValue); + + if (path != string.Empty) + { + Debug.Log("New renderer created at path " + path + ""); + } + } + } + + public override bool HasPreviewGUI() + { + return previewReflection && previewTexture; + } + + public override bool RequiresConstantRepaint() + { + return HasPreviewGUI(); + } + + public override GUIContent GetPreviewTitle() + { + return currentCamera ? new GUIContent(currentCameraName + " reflection") : new GUIContent("Reflection"); + } + + public override void OnPreviewSettings() + { + if (HasPreviewGUI() == false) return; + + GUILayout.Label($"Resolution ({previewTexture.width}x{previewTexture.height})"); + } + + private bool drawAlpha; + + public override void OnPreviewGUI(Rect r, GUIStyle background) + { + if (drawAlpha) + { + EditorGUI.DrawTextureAlpha(r, previewTexture, ScaleMode.ScaleToFit); + } + else + { + GUI.DrawTexture(r, previewTexture, ScaleMode.ScaleToFit, false); + } + + Rect btnRect = r; + btnRect.x += 10f; + btnRect.y += 10f; + btnRect.width = 150f; + btnRect.height = 20f; + + drawAlpha = GUI.Toggle(btnRect, drawAlpha, new GUIContent(" Alpha channel")); + } + + private void ValidateWaterObjectLayer() + { + if (renderer.waterObjects == null) return; + + waterLayerError = false; + int layerID = LayerMask.NameToLayer("Water"); + + foreach (WaterObject obj in renderer.waterObjects) + { + //Is not on "Water" layer? + if (obj.gameObject.layer != layerID) + { + waterLayerError = true; + return; + } + } + } + + private void SetObjectsOnWaterLayer() + { + int layerID = LayerMask.NameToLayer("Water"); + + foreach (WaterObject obj in renderer.waterObjects) + { + //Is not on "Water" layer? + if (obj.gameObject.layer != layerID) + { + obj.gameObject.layer = layerID; + EditorUtility.SetDirty(obj); + } + } + + waterLayerError = false; + } + #endif + + private void RecalculateBounds() + { +#if URP + renderer.RecalculateBounds(); + curBounds = renderer.bounds; + EditorUtility.SetDirty(target); +#endif + } + } +} diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs.meta b/Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs.meta new file mode 100644 index 00000000..de39b8ca --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: ddec133f70260bb4aa7800414c2ba3c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs b/Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs new file mode 100644 index 00000000..6c44582b --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs @@ -0,0 +1,158 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#if URP +using System; +using UnityEditor; +using UnityEngine; + +namespace StylizedWater3 +{ + [CustomEditor(typeof(StylizedWaterRenderFeature))] + public partial class RenderFeatureEditor : Editor + { + private StylizedWaterRenderFeature renderFeature; + + private SerializedProperty screenSpaceReflectionSettings; + + private SerializedProperty allowDirectionalCaustics; + + private SerializedProperty heightPrePassSettings; + private SerializedProperty terrainHeightPrePassSettings; + + private void OnEnable() + { + renderFeature = (StylizedWaterRenderFeature)target; + + screenSpaceReflectionSettings = serializedObject.FindProperty("screenSpaceReflectionSettings"); + + allowDirectionalCaustics = serializedObject.FindProperty("allowDirectionalCaustics"); + + heightPrePassSettings = serializedObject.FindProperty("heightPrePassSettings"); + #if SWS_DEV + terrainHeightPrePassSettings = serializedObject.FindProperty("terrainHeightPrePassSettings"); + #endif + + EnableFlowMapEditor(); + DynamicEffectsOnEnable(); + UnderwaterRenderingOnEnable(); + } + + public override void OnInspectorGUI() + { + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField($"Version {AssetInfo.INSTALLED_VERSION}", EditorStyles.miniLabel); + + if (GUILayout.Button(new GUIContent(" Documentation", EditorGUIUtility.FindTexture("_Help")))) + { + Application.OpenURL(AssetInfo.DOC_URL); + } + if (GUILayout.Button(new GUIContent(" Debugger", EditorGUIUtility.IconContent("Profiler.Rendering").image, "Inspect the render buffer outputs"))) + { + RenderTargetDebuggerWindow.Open(); + } + + } + EditorGUILayout.Space(); + + UI.DrawNotification(PipelineUtilities.RenderGraphEnabled() == false, "Render Graph is disabled, functionality on this render feature will not be functional", "Enable", () => + { + UnityEngine.Rendering.Universal.RenderGraphSettings settings = UnityEngine.Rendering.GraphicsSettings.GetRenderPipelineSettings(); + settings.enableRenderCompatibilityMode = false; + }, MessageType.Error); + + serializedObject.Update(); + EditorGUI.BeginChangeCheck(); + + UI.DrawNotification(renderFeature.heightReadbackCS == null, "A compute shader is not assigned to the render feature. Do not add render features in Play mode!", "Attempt fix", () => + { + renderFeature.VerifyReferences(); + }, MessageType.Error); + + EditorGUILayout.PropertyField(allowDirectionalCaustics); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(screenSpaceReflectionSettings); + + if (renderFeature.screenSpaceReflectionSettings.reflectEverything && screenSpaceReflectionSettings.isExpanded) + { + UI.DrawNotification("Enabling this option bypasses failed reflection ray filtering." + + "\n\nReflection artefacts are to be expected!", MessageType.Warning); + } + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(heightPrePassSettings); + if (heightPrePassSettings.isExpanded) + { + HeightPrePass.Settings settings = ((StylizedWaterRenderFeature)target).heightPrePassSettings; + + string statsText = ""; + + statsText += $"Current resolution: {PlanarProjection.CalculateResolution(settings.range, settings.cellsPerUnit, 16, settings.maxResolution)}px\n"; + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(EditorGUIUtility.labelWidth); + EditorGUILayout.HelpBox(statsText, MessageType.None); + } + + EditorGUILayout.HelpBox("This will pre-render all the height (including any displacement effects) of all water objects (on the Watter layer!) into a buffer. Allowing other shaders to access this information." + + "\n\nSee the Height.hlsl shader library for the API, or use the \"Sample Water Height\" Sub-graph in Shader Graph." + + "\n\nThis is for advanced users, and Water Decals and the \"GPU Async Readback\" height readback API makes use of this", MessageType.Info); + if (HeightQuerySystem.RequiresHeightPrepass) + { + EditorGUILayout.HelpBox("Height Pre-pass is forcible enabled at the moment, because there are height queries being issued from script.", MessageType.Info); + + + } + } + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("GPU Height Queries", EditorStyles.boldLabel); + HeightQuerySystem.DISABLE_IN_EDIT_MODE = EditorGUILayout.Toggle("Forced Disable In Edit-mode", HeightQuerySystem.DISABLE_IN_EDIT_MODE); + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField(""); + + if (GUILayout.Button(new GUIContent(" Inspect Queries", EditorGUIUtility.FindTexture("_Help")))) + { + HeightQuerySystemEditor.HeightQueryInspector.Open(); + } + } + + #if SWS_DEV + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(terrainHeightPrePassSettings); + #endif + EditorGUILayout.Space(); + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + } + + DrawFlowMapEditor(); + DynamicEffectsOnInspectorGUI(); + UnderwaterRenderingOnInspectorGUI(); + + UI.DrawFooter(); + } + + partial void EnableFlowMapEditor(); + partial void DrawFlowMapEditor(); + + partial void DynamicEffectsOnEnable(); + partial void DynamicEffectsOnInspectorGUI(); + + partial void UnderwaterRenderingOnEnable(); + partial void UnderwaterRenderingOnInspectorGUI(); + } +} +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs.meta b/Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs.meta new file mode 100644 index 00000000..03ce1af8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7b8b99303c66f4b4691ee9f596f1a3bf +timeCreated: 1701084026 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs new file mode 100644 index 00000000..f2d645c2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs @@ -0,0 +1,114 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using UnityEditor; +using UnityEngine; + +namespace StylizedWater3 +{ + [CustomEditor(typeof(WaterGrid))] + public class CreateWaterGridInspector : Editor + { + private WaterGrid script; + + private SerializedProperty material; + private SerializedProperty followSceneCamera; + private SerializedProperty autoAssignCamera; + private SerializedProperty followTarget; + + private SerializedProperty scale; + private SerializedProperty vertexDistance; + private SerializedProperty rowsColumns; + + private int vertexCount; + + private void OnEnable() + { + script = (WaterGrid) target; + script.m_rowsColumns = script.rowsColumns; + + material = serializedObject.FindProperty("material"); + followSceneCamera = serializedObject.FindProperty("followSceneCamera"); + autoAssignCamera = serializedObject.FindProperty("autoAssignCamera"); + followTarget = serializedObject.FindProperty("followTarget"); + + scale = serializedObject.FindProperty("scale"); + vertexDistance = serializedObject.FindProperty("vertexDistance"); + rowsColumns = serializedObject.FindProperty("rowsColumns"); + } + + public override void OnInspectorGUI() + { + UI.DrawHeader(); + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(EditorGUIUtility.labelWidth); + WaterGrid.DisplayGrid = GUILayout.Toggle(WaterGrid.DisplayGrid , new GUIContent(" Display Grid", EditorGUIUtility.IconContent((WaterGrid.DisplayGrid ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button"); + WaterGrid.DisplayWireframe = GUILayout.Toggle(WaterGrid.DisplayWireframe, new GUIContent(" Show Wireframe", EditorGUIUtility.IconContent((WaterGrid.DisplayWireframe ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button"); + } + + serializedObject.Update(); + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.LabelField("Appearance", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(material); + if(material.objectReferenceValue == null) EditorGUILayout.HelpBox("A material must be assigned", MessageType.Error); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Movement", EditorStyles.boldLabel); + + EditorGUILayout.PropertyField(followSceneCamera); + using (new EditorGUI.DisabledScope(autoAssignCamera.boolValue)) + { + EditorGUILayout.PropertyField(followTarget); + } + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(autoAssignCamera); + EditorGUI.indentLevel--; + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Grid geometry", EditorStyles.boldLabel); + + EditorGUILayout.PropertyField(scale, GUILayout.MaxWidth(EditorGUIUtility.labelWidth + 95f)); + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.PrefixLabel(rowsColumns.displayName); + using (new EditorGUI.DisabledScope(rowsColumns.intValue <= 0)) + { + if (GUILayout.Button("-", EditorStyles.miniButtonLeft, GUILayout.Width(25f))) + { + rowsColumns.intValue--; + } + } + EditorGUILayout.PropertyField(rowsColumns, GUIContent.none, GUILayout.MaxWidth(40f)); + if (GUILayout.Button("+", EditorStyles.miniButtonRight, GUILayout.Width(25f))) + { + rowsColumns.intValue++; + } + EditorGUILayout.LabelField($"= {rowsColumns.intValue * rowsColumns.intValue} tiles", EditorStyles.miniLabel); + } + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(vertexDistance, new GUIContent("Min. vertex distance", vertexDistance.tooltip)); + vertexCount = Mathf.FloorToInt(((scale.floatValue / rowsColumns.intValue) / vertexDistance.floatValue) * ((scale.floatValue / rowsColumns.intValue) / vertexDistance.floatValue)); + //EditorGUILayout.HelpBox($"Vertex count: {vertexCount}", MessageType.None); + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + + //Executed here since objects can't be destroyed from OnValidate + script.Recreate(); + } + + UI.DrawFooter(); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs.meta b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs.meta new file mode 100644 index 00000000..ec2e47a9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b340d2e902f13d1438eb157b2904daa3 +timeCreated: 1680100927 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs new file mode 100644 index 00000000..17595f71 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs @@ -0,0 +1,169 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using UnityEditor; +using UnityEditor.AssetImporters; +using UnityEngine; + +namespace StylizedWater3 +{ + [CustomEditor(typeof(WaterMeshImporter))] + public class WaterMeshImporterInspector: ScriptedImporterEditor + { + private SerializedProperty waterMesh; + + private SerializedProperty shape; + + private SerializedProperty scale; + private SerializedProperty UVTiling; + + private SerializedProperty vertexDistance; + + private SerializedProperty noise; + private SerializedProperty boundsPadding; + + private WaterMeshImporter importer; + + private bool autoApplyChanges; + private bool previewInSceneView + { + get => EditorPrefs.GetBool("SWS2_PREVIEW_WATER_MESH_ENABLED", true); + set => EditorPrefs.SetBool("SWS2_PREVIEW_WATER_MESH_ENABLED", value); + } + + public override void OnEnable() + { + base.OnEnable(); + + importer = (WaterMeshImporter)target; + + waterMesh = serializedObject.FindProperty("waterMesh"); + + shape = waterMesh.FindPropertyRelative("shape"); + scale = waterMesh.FindPropertyRelative("scale"); + UVTiling = waterMesh.FindPropertyRelative("UVTiling"); + vertexDistance = waterMesh.FindPropertyRelative("vertexDistance"); + noise = waterMesh.FindPropertyRelative("noise"); + boundsPadding = waterMesh.FindPropertyRelative("boundsPadding"); + + SceneView.duringSceneGui += OnSceneGUI; + } + + public override void OnInspectorGUI() + { + UI.DrawHeader(); + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(EditorGUIUtility.labelWidth); + previewInSceneView = + GUILayout.Toggle(previewInSceneView, new GUIContent(" Preview in scene view", EditorGUIUtility.IconContent( + (previewInSceneView ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button"); + } + if (previewInSceneView && WaterObject.Instances.Count > 0) + { + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(EditorGUIUtility.labelWidth); + EditorGUILayout.HelpBox($"Drawing on WaterObject instances in the scene ({WaterObject.Instances.Count})", MessageType.None); + } + } + + EditorGUILayout.Space(); + + serializedObject.Update(); + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(shape); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(scale); + EditorGUILayout.PropertyField(vertexDistance); + + int subdivisions = Mathf.FloorToInt(scale.floatValue / vertexDistance.floatValue); + int vertexCount = Mathf.FloorToInt(subdivisions * subdivisions); + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(EditorGUIUtility.labelWidth); + + EditorGUILayout.HelpBox($"Vertex count: {vertexCount:N1}", MessageType.None); + } + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(UVTiling); + EditorGUILayout.PropertyField(noise); + EditorGUILayout.PropertyField(boundsPadding); + + EditorGUILayout.Space(); + + autoApplyChanges = EditorGUILayout.Toggle("Auto-apply changes", autoApplyChanges); + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + + if (autoApplyChanges && HasModified()) + { + this.SaveChanges(); + + //importer = (WaterMeshImporter)target; + } + } + + this.ApplyRevertGUI(); + + UI.DrawFooter(); + } + + private void OnDestroy() + { + SceneView.duringSceneGui -= OnSceneGUI; + } + + private Material mat; + private void OnSceneGUI(SceneView obj) + { + if (!previewInSceneView) + { + GL.wireframe = false; + return; + } + + if (!mat) + { + mat = new Material(Shader.Find("Unlit/Color")); + mat.color = new Color(0,0,0, 0.25f); + mat.mainTexture = Texture2D.whiteTexture; + } + mat.SetPass(0); + + if (importer.waterMesh.mesh) + { + GL.wireframe = true; + if (WaterObject.Instances.Count > 0) + { + foreach (WaterObject waterObject in WaterObject.Instances) + { + Graphics.DrawMeshNow(importer.waterMesh.mesh, waterObject.transform.localToWorldMatrix); + } + } + else + { + if (SceneView.lastActiveSceneView) + { + //Position in view + Vector3 position = SceneView.lastActiveSceneView.camera.transform.position + (SceneView.lastActiveSceneView.camera.transform.forward * importer.waterMesh.scale * 0.5f); + + Graphics.DrawMeshNow(importer.waterMesh.mesh, position, Quaternion.identity); + } + } + GL.wireframe = false; + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs.meta b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs.meta new file mode 100644 index 00000000..c371807d --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 97fbcf08a16d4498b8d18b0ce8df5fee +timeCreated: 1728821855 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs new file mode 100644 index 00000000..e09e11b9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs @@ -0,0 +1,149 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; +#if URP +using UnityEngine.Rendering.Universal; +#endif + +namespace StylizedWater3 +{ + [CustomEditor(typeof(WaterObject))] + [CanEditMultipleObjects] + public class WaterObjectInspector : Editor + { + private WaterObject component; + + private SerializedProperty material; + private SerializedProperty meshFilter; + private SerializedProperty meshRenderer; + + private bool depthTextureRequired; + private bool opaqueTextureRequired; + + private bool showInstances + { + get => SessionState.GetBool("WATEROBJECT_SHOW_INSTANCES", false); + set => SessionState.SetBool("WATEROBJECT_SHOW_INSTANCES", value); + } + + private Texture icon; + + private void OnEnable() + { + component = (WaterObject)target; + + icon = Resources.Load("water-object-icon"); + + material = serializedObject.FindProperty("material"); + meshFilter = serializedObject.FindProperty("meshFilter"); + meshRenderer = serializedObject.FindProperty("meshRenderer"); + + CheckMaterial(); + } + + private void CheckMaterial() + { + #if URP + if (UniversalRenderPipeline.asset == null || component.material == null) return; + + depthTextureRequired = UniversalRenderPipeline.asset.supportsCameraDepthTexture == false && component.material.GetFloat("_DisableDepthTexture") == 0f; + opaqueTextureRequired = UniversalRenderPipeline.asset.supportsCameraOpaqueTexture == false && component.material.GetFloat("_RefractionOn") == 1f; + #endif + } + + public override void OnInspectorGUI() + { + #if URP + if (UniversalRenderPipeline.asset) + { + UI.DrawNotification( + depthTextureRequired, + "Depth texture is disabled, but is required for the water material", + "Enable", + () => + { + StylizedWaterEditor.EnableDepthTexture(); + CheckMaterial(); + }, + MessageType.Error); + + UI.DrawNotification( + opaqueTextureRequired, + "Opaque texture is disabled, but is required for the water material", + "Enable", + () => + { + StylizedWaterEditor.EnableOpaqueTexture(); + CheckMaterial(); + }, + MessageType.Error); + } + #endif + + EditorGUILayout.HelpBox("This component provides a means for other scripts to identify and find water bodies", MessageType.None); + + + UI.DrawNotification(component.gameObject.layer != LayerMask.NameToLayer("Water"), "Object is not on the \"Water\" layer. This means it won't work with height readback operations", "Fix", () => + { + component.gameObject.layer = LayerMask.NameToLayer("Water"); + }, MessageType.Warning); + + EditorGUILayout.LabelField("References (Read only)", EditorStyles.boldLabel); + + EditorGUI.BeginDisabledGroup(true); + { + EditorGUILayout.PropertyField(material); + EditorGUILayout.PropertyField(meshFilter); + EditorGUILayout.PropertyField(meshRenderer); + } + EditorGUI.EndDisabledGroup(); + + //In case the material was changed on the attached Mesh Renderer, reflect the change + foreach (Object currentTarget in targets) + { + WaterObject water = (WaterObject)currentTarget; + water.FetchWaterMaterial(); + } + + if (WaterObject.Instances.Count > 1) + { + EditorGUILayout.Space(); + + showInstances = EditorGUILayout.BeginFoldoutHeaderGroup(showInstances, $"Instances ({WaterObject.Instances.Count})"); + + if (showInstances) + { + this.Repaint(); + + using (new EditorGUILayout.VerticalScope(EditorStyles.textArea)) + { + foreach (WaterObject obj in WaterObject.Instances) + { + var rect = EditorGUILayout.BeginHorizontal(EditorStyles.miniLabel); + + if (rect.Contains(Event.current.mousePosition)) + { + EditorGUIUtility.AddCursorRect(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 27, 27), MouseCursor.Link); + EditorGUI.DrawRect(rect, Color.gray * (EditorGUIUtility.isProSkin ? 0.66f : 0.20f)); + } + + if (GUILayout.Button(new GUIContent(" " + obj.name, icon), EditorStyles.miniLabel, GUILayout.Height(20f))) + { + EditorGUIUtility.PingObject(obj); + Selection.activeGameObject = obj.gameObject; + } + EditorGUILayout.EndHorizontal(); + } + } + } + EditorGUILayout.EndFoldoutHeaderGroup(); + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs.meta b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs.meta new file mode 100644 index 00000000..2605f9f1 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9bef468d6b3e196468eb63fc634d8dca +timeCreated: 1685014300 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs new file mode 100644 index 00000000..139f4191 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs @@ -0,0 +1,381 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System.IO; +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; +using UnityEditor.AssetImporters; + +namespace StylizedWater3 +{ + [CustomEditor(typeof(WaterShaderImporter))] + [CanEditMultipleObjects] + public class WaterShaderImporterEditor : ScriptedImporterEditor + { + private WaterShaderImporter importer; + + private SerializedProperty template; + + private SerializedProperty settings; + + private SerializedProperty shaderName; + private SerializedProperty hidden; + private SerializedProperty type; + + private SerializedProperty autoIntegration; + private SerializedProperty fogIntegration; + + private SerializedProperty lightCookies; + private SerializedProperty additionalLightCaustics; + private SerializedProperty additionalLightTranslucency; + private SerializedProperty singleCausticsLayers; + + private SerializedProperty customIncludeDirectives; + private SerializedProperty additionalPasses; + + private SerializedProperty configurationState; + + private bool underwaterRenderingInstalled; + private bool dynamicEffectsInstalled; + private FogIntegration.Integration firstIntegration; + private bool curvedWorldInstalled; + + private bool showDependencies; + + private ShaderData shaderData; + + public override void OnEnable() + { + base.OnEnable(); + + underwaterRenderingInstalled = StylizedWaterEditor.UnderwaterRenderingInstalled(); + dynamicEffectsInstalled = StylizedWaterEditor.DynamicEffectsInstalled(); + firstIntegration = FogIntegration.GetFirstInstalled(); + curvedWorldInstalled = StylizedWaterEditor.CurvedWorldInstalled(out var _); + + importer = (WaterShaderImporter)target; + + template = serializedObject.FindProperty("template"); + + settings = serializedObject.FindProperty("settings"); + //settings.isExpanded = true; + + shaderName = settings.FindPropertyRelative("shaderName"); + hidden = settings.FindPropertyRelative("hidden"); + type = settings.FindPropertyRelative("type"); + + lightCookies = settings.FindPropertyRelative("lightCookies"); + additionalLightCaustics = settings.FindPropertyRelative("additionalLightCaustics"); + additionalLightTranslucency = settings.FindPropertyRelative("additionalLightTranslucency"); + singleCausticsLayers = settings.FindPropertyRelative("singleCausticsLayer"); + + autoIntegration = settings.FindPropertyRelative("autoIntegration"); + fogIntegration = settings.FindPropertyRelative("fogIntegration"); + + customIncludeDirectives = settings.FindPropertyRelative("customIncludeDirectives"); + additionalPasses = settings.FindPropertyRelative("additionalPasses"); + + configurationState = serializedObject.FindProperty("configurationState"); + + Shader shader = importer.GetShader(); + if (shader != null) + { + shaderData = ShaderUtil.GetShaderData(shader); + } + } + + public override bool HasPreviewGUI() + { + //Hide the useless sphere preview :) + return false; + } + + public override void OnInspectorGUI() + { + //base.OnInspectorGUI(); + Color defaultColor = GUI.contentColor; + + UI.DrawHeader(); + + Shader shader = AssetDatabase.LoadAssetAtPath(importer.assetPath); + if (shader == null) + { + UI.DrawNotification("Shader failed to compile, try to manually recompile it now.", MessageType.Error); + } + + UI.DrawNotification(EditorSettings.asyncShaderCompilation == false, "Asynchronous shader compilation is disabled in the Editor settings." + + "\n\n" + + "This will very likely cause the editor to crash when trying to compile this shader (D3D11 Swapchain error).", "Enable", () => + { + EditorSettings.asyncShaderCompilation = true; + }, MessageType.Error); + + if (GUILayout.Button(new GUIContent(" Recompile", EditorGUIUtility.IconContent("RotateTool").image), GUILayout.MinHeight(30f))) + { + importer.Reimport(); + return; + } + + GUILayout.Space(-2f); + using (new EditorGUILayout.HorizontalScope()) + { + using (new EditorGUI.DisabledGroupScope(shader == null)) + { + if (GUILayout.Button(new GUIContent(" Show Generated Code", EditorGUIUtility.IconContent("align_horizontally_left_active").image), EditorStyles.miniButtonLeft, GUILayout.Height(28f))) + { + GenericMenu menu = new GenericMenu(); + + menu.AddItem(new GUIContent("With tessellation"), false, () => OpenGeneratedCode(true)); + menu.AddItem(new GUIContent("Without tessellation"), false, () => OpenGeneratedCode(false)); + + menu.ShowAsContext(); + } + if (GUILayout.Button(new GUIContent("Clear cache", "Unity's shader compiler will cache the compiled shader, and internally use that." + + "\n\nThis may result in seemingly false-positive shader errors. Such as in the case of importing the shader, before the URP shader libraries are." + + "\n\nClearing the cache gives the compiler a kick, and makes the shader properly represent the current state of the project/dependencies."), EditorStyles.miniButtonRight, GUILayout.Height(28f))) + { + importer.ClearCache(); + } + } + } + + EditorGUILayout.Space(); + + serializedObject.Update(); + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(template); + + if (template.objectReferenceValue == null) EditorGUILayout.HelpBox("• Template is assumed to be in the contents of the file itself", MessageType.None); + //EditorGUILayout.LabelField(importer.GetTemplatePath(), EditorStyles.miniLabel); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Settings", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(shaderName); + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(hidden); + EditorGUI.indentLevel--; + + EditorGUILayout.PropertyField(type); + + if (type.intValue == (int)WaterShaderImporter.WaterShaderSettings.ShaderType.WaterSurface) + { + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Integrations", EditorStyles.boldLabel); + + EditorGUILayout.PropertyField(autoIntegration, new GUIContent("Automatic detection", autoIntegration.tooltip)); + if (autoIntegration.boolValue) + { + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUI.indentLevel++; + EditorGUILayout.LabelField("Fog post-processing", GUILayout.MaxWidth(EditorGUIUtility.labelWidth)); + EditorGUI.indentLevel--; + + using (new EditorGUILayout.HorizontalScope(EditorStyles.textField)) + { + GUI.contentColor = Color.green; + EditorGUILayout.LabelField(firstIntegration.name); + + GUI.contentColor = defaultColor; + } + } + + if (curvedWorldInstalled) + { + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUI.indentLevel++; + EditorGUILayout.LabelField("Curved World 2020", GUILayout.MaxWidth(EditorGUIUtility.labelWidth)); + EditorGUI.indentLevel--; + + using (new EditorGUILayout.HorizontalScope(EditorStyles.textField)) + { + GUI.contentColor = Color.green; + EditorGUILayout.LabelField("Installed"); + GUI.contentColor = defaultColor; + } + } + } + } + else + { + EditorGUILayout.PropertyField(fogIntegration); + } + if (curvedWorldInstalled) EditorGUILayout.HelpBox("Curved World integration must be manually activated through minor code changes, see documentation.", MessageType.Info); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Functionality support", EditorStyles.boldLabel); + + EditorGUILayout.PropertyField(lightCookies); + EditorGUILayout.PropertyField(additionalLightCaustics); + EditorGUILayout.PropertyField(additionalLightTranslucency); + EditorGUILayout.PropertyField(singleCausticsLayers); + } + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Extensions", EditorStyles.boldLabel); + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField("Underwater Rendering", GUILayout.MaxWidth(EditorGUIUtility.labelWidth)); + + using (new EditorGUILayout.HorizontalScope(EditorStyles.textField)) + { + if (underwaterRenderingInstalled) + { + GUI.contentColor = Color.green; + EditorGUILayout.LabelField("Installed"); + } + else + { + GUI.contentColor = new Color(1f, 0.65f, 0f); + EditorGUILayout.LabelField("(Not installed)"); + } + + GUI.contentColor = defaultColor; + } + } + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField("Dynamic Effects", GUILayout.MaxWidth(EditorGUIUtility.labelWidth)); + + using (new EditorGUILayout.HorizontalScope(EditorStyles.textField)) + { + if (dynamicEffectsInstalled) + { + GUI.contentColor = Color.green; + EditorGUILayout.LabelField("Installed"); + } + else + { + GUI.contentColor = new Color(1f, 0.65f, 0f); + EditorGUILayout.LabelField("(Not installed)"); + } + + GUI.contentColor = defaultColor; + } + } + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(customIncludeDirectives); + if (customIncludeDirectives.isExpanded) + { + EditorGUILayout.HelpBox("These are defined in a HLSLINCLUDE block and apply to all passes" + + "\nMay be used to insert custom code.", MessageType.Info); + } + EditorGUILayout.PropertyField(additionalPasses); + if (additionalPasses.isExpanded) + { + EditorGUILayout.LabelField("Compiled passes:", EditorStyles.miniBoldLabel); + if (shaderData != null) + { + ShaderData.Subshader subShader = shaderData.GetSubshader(0); + int passCount = subShader.PassCount; + for (int i = 0; i < passCount; i++) + { + EditorGUILayout.LabelField($"{i}: {subShader.GetPass(i).Name}", EditorStyles.miniLabel); + } + } + } + + if (EditorGUI.EndChangeCheck()) + { + //Force the parameter to a matching value. + //This way, if the "auto-integration" option is used, the .meta file will be changed when using the shader in a package, spanning different projects. + //When switching a different project, the file will be seen as changed and will be re-imported, in turn applying the project-specific integration. + if (autoIntegration.boolValue) + { + fogIntegration.intValue = (int)firstIntegration.asset; + } + + serializedObject.ApplyModifiedProperties(); + } + + this.ApplyRevertGUI(); + + showDependencies = EditorGUILayout.BeginFoldoutHeaderGroup(showDependencies, $"Dependencies ({importer.dependencies.Count})"); + + if (showDependencies) + { + this.Repaint(); + + using (new EditorGUILayout.VerticalScope(EditorStyles.textArea)) + { + foreach (string dependency in importer.dependencies) + { + var rect = EditorGUILayout.BeginHorizontal(EditorStyles.miniLabel); + + if (rect.Contains(Event.current.mousePosition)) + { + EditorGUIUtility.AddCursorRect(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 27, 27), MouseCursor.Link); + EditorGUI.DrawRect(rect, Color.gray * (EditorGUIUtility.isProSkin ? 0.66f : 0.20f)); + } + + if (GUILayout.Button(dependency == string.Empty ? new GUIContent(" (Missing)", EditorGUIUtility.IconContent("console.warnicon.sml").image) : new GUIContent(" " + dependency, EditorGUIUtility.IconContent("TextAsset Icon").image), + EditorStyles.miniLabel, GUILayout.Height(20f))) + { + if (dependency != string.Empty) + { + TextAsset file = AssetDatabase.LoadAssetAtPath(dependency); + + EditorGUIUtility.PingObject(file); + } + } + EditorGUILayout.EndHorizontal(); + } + } + + EditorGUILayout.HelpBox("Should any of these files be modified/moved/deleted, this shader will also re-import", MessageType.Info); + } + EditorGUILayout.EndFoldoutHeaderGroup(); + + //EditorGUILayout.PropertyField(configurationState); + + UI.DrawFooter(); + + if (shader) + { + UI.DrawNotification(ShaderUtil.ShaderHasError(shader), "Errors may be false-positives due to caching", "Clear cache", () => importer.ClearCache(true), MessageType.Warning); + } + } + + void OpenGeneratedCode(bool tessellation) + { + importer = (WaterShaderImporter)target; + + string filePath = $"{Application.dataPath.Replace("Assets", string.Empty)}Temp/{importer.settings.shaderName}(Generated Code).shader"; + + string templatePath = importer.GetTemplatePath(); + string[] lines = File.ReadAllLines(templatePath); + + string code = TemplateParser.CreateShaderCode(importer.GetTemplatePath(), ref lines, importer, tessellation); + File.WriteAllText(filePath, code); + + if (!File.Exists(filePath)) + { + Debug.LogError(string.Format("Path {0} doesn't exists", filePath)); + return; + } + + string externalScriptEditor = ScriptEditorUtility.GetExternalScriptEditor(); + if (externalScriptEditor != "internal") + { + InternalEditorUtility.OpenFileAtLineExternal(filePath, 0); + } + else + { + Application.OpenURL("file://" + filePath); + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs.meta b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs.meta new file mode 100644 index 00000000..8c2da32f --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e59f1c83d0548634b871a63644021f94 +timeCreated: 1691138447 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Installer.cs b/Assets/External/Stylized Water 3/Editor/Installer.cs new file mode 100644 index 00000000..c0a9dfbc --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Installer.cs @@ -0,0 +1,732 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEditor.PackageManager; +using UnityEditor.PackageManager.Requests; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +using PackageInfo = UnityEditor.PackageManager.PackageInfo; + +namespace StylizedWater3 +{ + //Verifies any and all project settings and states + public static class Installer + { + public class SetupItem + { + public MessageType state = MessageType.None; + public string name; + public string description; + public string actionName; + + public Action action; + + public SetupItem(string name) + { + this.name = name; + } + + public SetupItem(string name, MessageType state) + { + this.name = name; + this.state = state; + } + + + public void ExecuteAction() + { + action.Invoke(); + action = null; + + if (state == MessageType.Error) + { + m_errorCount--; + } + else if (state == MessageType.Warning) + { + m_warningCount--; + } + + state = MessageType.None; + + Installer.Initialize(); + } + } + + public static List SetupItems = new List(); + + public static int ErrorCount + { + get => m_errorCount; + } + private static int m_errorCount; + public static int WarningCount + { + get => m_warningCount; + } + private static int m_warningCount; + + public static bool HasError => ErrorCount > 0; + + private static void AddItem(SetupItem item) + { + if (item.state == MessageType.Error) m_errorCount++; + else if (item.state == MessageType.Warning) m_warningCount++; + + SetupItems.Add(item); + } + + public static void Initialize() + { + SetupItems.Clear(); + m_errorCount = 0; + m_warningCount = 0; + + SetupItem unityVersion = new SetupItem(AssetInfo.VersionChecking.GetUnityVersion()); + { + AssetInfo.VersionChecking.CheckUnityVersion(); + + unityVersion.state = MessageType.None; + unityVersion.description = $"Likely compatible and supported Unity version"; + + + //Too old + if (AssetInfo.VersionChecking.compatibleVersion == false || AssetInfo.VersionChecking.supportedPatchVersion == false) + { + unityVersion.state = MessageType.Error; + unityVersion.description = $"This version of Unity is not compatible and is not subject to support. Update to at least {AssetInfo.VersionChecking.MinRequiredUnityVersion}. Errors and issues need to be resolved locally"; + } + else + { + //Too broken + if (AssetInfo.VersionChecking.unityVersionType != AssetInfo.VersionChecking.UnityVersionType.Release) + { + unityVersion.state = MessageType.Warning; + unityVersion.description = "Alpha/preview versions of Unity are not supported. Shader/script errors or warnings may occur depending on which weekly-version you are using." + + "\n\n" + + "After the release version becomes available, compatibility will be verified and an update may follow with the necessary fixes/changes."; + } + + //Too new + if (AssetInfo.VersionChecking.supportedMajorVersion == false) + { + unityVersion.state = MessageType.Warning; + unityVersion.description = $"This version of Unity is not supported. An upgrade version of this asset that does support this may be available. See the documentation for up-to-date information."; + } + } + } + AddItem(unityVersion); + + AssetInfo.VersionChecking.CheckForUpdate(); + SetupItem assetVersion = new SetupItem($"Asset version ({AssetInfo.INSTALLED_VERSION})"); + { + //Testing + //AssetInfo.VersionChecking.compatibleVersion = false; + //AssetInfo.VersionChecking.alphaVersion = true; + //AssetInfo.VersionChecking.UPDATE_AVAILABLE = false; + + if (AssetInfo.VersionChecking.UPDATE_AVAILABLE) + { + assetVersion.state = MessageType.Info; + assetVersion.description = $"An updated version is available (v{AssetInfo.VersionChecking.LATEST_VERSION})" + + "\n\n" + + "Asset can be updated through the Package Manager. Please update any extensions as well!"; + + assetVersion.actionName = "Open Package Manager"; + assetVersion.action = AssetInfo.OpenInPackageManager; + } + else + { + assetVersion.state = MessageType.None; + assetVersion.description = "Installed version is the latest"; + } + } + AddItem(assetVersion); + + SetupItem graphicsAPI = new SetupItem($"Graphics API ({PlayerSettings.GetGraphicsAPIs(EditorUserBuildSettings.activeBuildTarget)[0].ToString()})"); + { + graphicsAPI.state = MessageType.None; + graphicsAPI.description = $"Compatible"; + } + AddItem(graphicsAPI); + + + SetupItem colorSpace = new SetupItem($"Color space ({PlayerSettings.colorSpace.ToString()})"); + { + if (PlayerSettings.colorSpace == ColorSpace.Linear) + { + colorSpace.state = MessageType.None; + colorSpace.description = $"Linear"; + } + else + { + colorSpace.state = MessageType.Warning; + colorSpace.description = $"All content is authored for the Linear color space, water colors will not look as advertised."; + } + } + AddItem(colorSpace); + + /* + //Also counts non-script related errors! + SetupItem compileErrors = new SetupItem("Script compilation"); + { + ConsoleWindowUtility.GetConsoleLogCounts(out var errors, out var _, out var _); + + if (errors > 0) + { + compileErrors.state = MessageType.Error; + compileErrors.description = "Your project has one or more script compilation errors. These can prevent the water shader from working, or components from being available!"; + } + else + { + compileErrors.state = MessageType.None; + compileErrors.description = "Project is free of script compilation errors"; + } + AddItem(compileErrors); + } + */ + + SetupItem shaderCompiler = new SetupItem("Shader Compiler"); + { + Shader defaultShader = ShaderConfigurator.GetDefaultShader(); + var shaderCompiled = defaultShader != null; + shaderCompiler.state = shaderCompiled ? MessageType.Error : MessageType.None; + + //Shader object created + if (shaderCompiled) + { + shaderCompiler.state = MessageType.None; + shaderCompiler.description = "Shader compiled without any errors"; + + ShaderMessage[] shaderErrors = ShaderConfigurator.GetErrorMessages(defaultShader); + + //Compiled with errors + if (shaderErrors != null && shaderErrors.Length > 0) + { + shaderCompiler.state = MessageType.Error; + shaderCompiler.description = "Water shader has one or more critical errors:\n"; + + for (int i = 0; i < shaderErrors.Length; i++) + { + shaderCompiler.description += "\n• " + $"{shaderErrors[i].message} (line:{shaderErrors[i].line})"; + } + + shaderCompiler.description += "\n\nThese messages may provide a clue as to what went wrong"; + + shaderCompiler.actionName = "Try recompiling"; + shaderCompiler.action = () => + { + string defaultShaderPath = AssetDatabase.GUIDToAssetPath(ShaderConfigurator.DEFAULT_SHADER_GUID); + AssetDatabase.ImportAsset(defaultShaderPath); + }; + } + //Success + else + { + WaterShaderImporter importer = WaterShaderImporter.GetForShader(defaultShader); + bool requiresRecompile = importer.RequiresRecompilation(out var recompileMessage); + + if (requiresRecompile) + { + shaderCompiler.state = MessageType.Warning; + shaderCompiler.description = "Water shader needs to be recompiled:" + + "\n" + + recompileMessage + + "\n"; + + shaderCompiler.actionName = "Recompile"; + shaderCompiler.action = () => + { + importer.Reimport(); + }; + } + + //Shader is valid, but also check if any water meshes have a pink shader + { + Shader errorShader = Shader.Find("Hidden/InternalErrorShader"); + List brokenWaterMaterials = new List(); + + foreach (WaterObject obj in WaterObject.Instances) + { + if(obj.material == null) continue; + + if (obj.material.shader == null) + { + brokenWaterMaterials.Add(obj.material); + } + else if (obj.material.shader == errorShader) + { + brokenWaterMaterials.Add(obj.material); + } + } + + //Remove duplicates + brokenWaterMaterials = brokenWaterMaterials.Distinct().ToList(); + + if (brokenWaterMaterials.Count > 0) + { + SetupItem waterObjectShaderError = new SetupItem("Water Objects with invalid material"); + waterObjectShaderError.state = MessageType.Error; + waterObjectShaderError.description = "One or more water objects in the scene have an invalid material and likely render as pink:"; + + for (int i = 0; i < brokenWaterMaterials.Count; i++) + { + waterObjectShaderError.description += $"\n• {brokenWaterMaterials[i].name}"; + } + + waterObjectShaderError.description += "\n\nIt could be that the shader wasn't able to compile at some point and Unity assigned these materials the error-shader."; + + waterObjectShaderError.actionName = "Fix"; + waterObjectShaderError.action = () => + { + for (int i = 0; i < brokenWaterMaterials.Count; i++) + { + brokenWaterMaterials[i].shader = defaultShader; + + EditorUtility.SetDirty(brokenWaterMaterials[i]); + } + }; + + AddItem(waterObjectShaderError); + } + } + } + } + else + { + shaderCompiler.state = MessageType.Error; + shaderCompiler.description = "Shader failed to compile. Please ensure that there are no unresolved scripting compilation errors in the project." + + "\n\n" + + "After resolving them, re-import this asset"; + } + + AddItem(shaderCompiler); + } + + SetupItem renderFeature = new SetupItem("Render Feature"); + { + PipelineUtilities.RenderFeatureMissing(out ScriptableRendererData[] renderers); + + if (renderers.Length > 0) + { + renderFeature.state = MessageType.Error; + renderFeature.description = "The Stylized Water render feature hasn't been added to these renderers:"; + + for (int i = 0; i < renderers.Length; i++) + { + renderFeature.description += $"\n• {renderers[i].name}"; + } + + renderFeature.description += "\n\nThe following functionality will be unavailable if they are active:\n" + + "\n• Directional caustics" + + "\n• Screen-space Reflections" + + "\n• Water Decals" + + "\n• Height query system" + + "\n• Dynamic Effects (if installed)" + + "\n• Underwater Rendering (if installed)"; + + renderFeature.description += "\n\nFor some use cases this is intentional and this warning can be ignored"; + + renderFeature.actionName = "Add to renderers"; + renderFeature.action = () => + { + for (int i = 0; i < renderers.Length; i++) + { + PipelineUtilities.AddRenderFeature(renderers[i]); + } + }; + } + else + { + renderFeature.state = MessageType.None; + renderFeature.description = "Render feature has been set up on all renderers"; + + SetupItem renderGraph = new SetupItem("Render Graph", PipelineUtilities.RenderGraphEnabled() ? MessageType.None : MessageType.Error); + { + if (renderGraph.state == MessageType.Error) + { + renderGraph.description = "Disabled (Backwards Compatibility mode). The render feature (and its functionality) will be unavailable!"; + renderGraph.actionName = "Enable"; + renderGraph.action = () => + { + RenderGraphSettings settings = GraphicsSettings.GetRenderPipelineSettings(); + settings.enableRenderCompatibilityMode = false; + }; + } + else + { + renderGraph.state = MessageType.None; + renderGraph.description = "Render Graph is enabled"; + } + + AddItem(renderGraph); + } + + SetupItem heightPrePass = new SetupItem("Height Pre-Pass"); + { + StylizedWaterRenderFeature currentRenderFeature = StylizedWaterRenderFeature.GetDefault(); + + if (currentRenderFeature.heightPrePassSettings.enable) + { + heightPrePass.state = MessageType.None; + heightPrePass.description = "Enabled on the default renderer"; + } + else + { + heightPrePass.state = MessageType.Warning; + heightPrePass.description = "Disabled on the default renderer. This makes the following functionality unavailable:" + + "\n • Water Decals" + + "\n • GPU-based height readback"; + + heightPrePass.actionName = "Enable"; + heightPrePass.action = () => + { + currentRenderFeature = StylizedWaterRenderFeature.GetDefault(); + currentRenderFeature.heightPrePassSettings.enable = true; + + EditorUtility.SetDirty(currentRenderFeature); + }; + } + + AddItem(heightPrePass); + } + } + + AddItem(renderFeature); + } + + SetupItem depthTexture = new SetupItem("Depth texture"); + { + depthTexture.state = PipelineUtilities.IsDepthTextureOptionDisabledAnywhere(out var depthLessRenderers) ? MessageType.Warning : MessageType.None; + + if (depthTexture.state == MessageType.Warning) + { + depthTexture.description = "Depth texture option is disabled these renderers:\n"; + + for (int i = 0; i < depthLessRenderers.Count; i++) + { + depthTexture.description += "• " + depthLessRenderers[i].name + "\n"; + } + depthTexture.description += "\nThis will cause depth-based effects (when enabled) such as underwater fog, caustics or refraction not to render on certain quality levels or platforms. On Android the water will turn invisible!"; + + depthTexture.actionName = "Enable"; + depthTexture.action = () => + { + PipelineUtilities.SetDepthTextureOnAllAssets(true); + }; + } + else + { + depthTexture.description = "Enabled on all renderers"; + } + AddItem(depthTexture); + } + + SetupItem opaqueTexture = new SetupItem("Refraction support"); + { + opaqueTexture.state = PipelineUtilities.IsOpaqueTextureOptionDisabledAnywhere(out var opaqueLessRenderers) ? MessageType.Warning : MessageType.None; + + if (opaqueTexture.state == MessageType.Warning) + { + opaqueTexture.description = "Opaque texture option is disabled these renderers:\n"; + + for (int i = 0; i < opaqueLessRenderers.Count; i++) + { + opaqueTexture.description += "• " + opaqueLessRenderers[i].name + "\n"; + } + opaqueTexture.description += "\nThis will cause water materials with Refraction enabled to have a gray tint and not show any color of submerged geometry!"; + + opaqueTexture.actionName = "Enable"; + opaqueTexture.action = () => + { + PipelineUtilities.SetOpaqueTextureOnAllAssets(true); + }; + } + else + { + opaqueTexture.description = "Opaque texture option is enabled on all renderers"; + + SetupItem opaqueDownsampled = new SetupItem("Opaque texture resolution"); + { + opaqueDownsampled.state = PipelineUtilities.IsOpaqueDownSampled(out var downsampledRenderers) ? MessageType.Warning : MessageType.None; + + if (opaqueDownsampled.state == MessageType.Warning) + { + opaqueDownsampled.description = "Opaque texture resolution is halved on these renderers:\n"; + for (int i = 0; i < downsampledRenderers.Count; i++) + { + opaqueDownsampled.description += "• " + downsampledRenderers[i].name + "\n"; + } + opaqueDownsampled.description += "\nThis will cause water materials with Refraction enabled to appear blurry!"; + opaqueDownsampled.description += "\n\nUnderwater rendering will also appear blurred with visible outlines around geometry!"; + + opaqueDownsampled.actionName = "Switch to full resolution"; + opaqueDownsampled.action = () => + { + PipelineUtilities.DisableOpaqueDownsampling(downsampledRenderers); + }; + } + else + { + opaqueDownsampled.description = "Opaque texture is rendering at full resolution"; + } + + AddItem(opaqueDownsampled); + } + } + AddItem(opaqueTexture); + } + + SetupItem depthMode = new SetupItem("Depth mode"); + { + bool hasIncorrectRenderers = PipelineUtilities.IsDepthAfterTransparents(out List renderers); + + if (hasIncorrectRenderers) + { + depthMode.state = MessageType.Warning; + depthMode.description = "The depth texture is configured to render AFTER transparent materials on these renderers:"; + + for (int i = 0; i < renderers.Count; i++) + { + depthMode.description += $"\n• {renderers[i].name}"; + } + + depthMode.description += "\n\nThis can cause the water to appear semi-transparent, or the depth information to lag behind one frame."; + + depthMode.actionName = "Set to render before"; + depthMode.action = () => + { + for (int i = 0; i < renderers.Count; i++) + { + renderers[i].copyDepthMode = CopyDepthMode.AfterOpaques; + EditorUtility.SetDirty(renderers[i]); + } + }; + } + else + { + depthMode.state = MessageType.None; + depthMode.description = "The depth texture renders before transparent materials do."; + } + AddItem(depthMode); + } + + if (StylizedWaterEditor.DynamicEffectsInstalled()) + { + SetupItem splinesPackage = new SetupItem("Splines Package"); + + var splinesInstalled = true; + + #if !SPLINES + splinesInstalled = false; + #endif + + if (splinesInstalled) + { + splinesPackage.state = MessageType.None; + splinesPackage.description = "Installed"; + } + else + { + splinesPackage.state = MessageType.Warning; + splinesPackage.description = "Splines package not installed. Some functionality won't be available."; + + splinesPackage.actionName = "Install"; + splinesPackage.action = () => + { + InstallPackage("com.unity.splines"); + }; + } + AddItem(splinesPackage); + } + + SetupItem reflectionProbes = new SetupItem("Reflection Probes"); + { + if (QualitySettings.realtimeReflectionProbes) + { + reflectionProbes.state = MessageType.None; + reflectionProbes.description = "Realtime reflection probes are supported."; + } + else + { + reflectionProbes.state = MessageType.Warning; + reflectionProbes.description = "Realtime reflection probes are disabled in Quality Settings. Water reflections may appear black in demo scenes."; + reflectionProbes.actionName = "Enable"; + reflectionProbes.action = () => + { + QualitySettings.realtimeReflectionProbes = true; + }; + } + + AddItem(reflectionProbes); + } + + SetupItem asyncShaderCompilation = new SetupItem("Asynchronous Shader Compilation"); + { + if (EditorSettings.asyncShaderCompilation) + { + asyncShaderCompilation.state = MessageType.None; + asyncShaderCompilation.description = "Enabled in project settings"; + } + else + { + asyncShaderCompilation.state = MessageType.Error; + asyncShaderCompilation.description = "Disabled in project settings. This will cause the editor to crash when attempting to compile the water shader"; + + asyncShaderCompilation.actionName = "Enable"; + asyncShaderCompilation.action = () => + { + EditorSettings.asyncShaderCompilation = true; + }; + } + + AddItem(asyncShaderCompilation); + } + + if (WaterObject.Instances.Count > 0) + { + SetupItem waterLayer = new SetupItem("Objects on the \"Water\" layer"); + { + int waterLayerIndex = LayerMask.NameToLayer("Water"); + + List invalidObjects = new List(); + foreach (var obj in WaterObject.Instances) + { + if (obj.gameObject.layer != waterLayerIndex) + { + invalidObjects.Add(obj); + } + } + + var invalidObjCount = invalidObjects.Count; + if (invalidObjCount > 0) + { + waterLayer.state = MessageType.Warning; + waterLayer.description = $"{invalidObjCount} water object(s) are not on the \"Water\" layer:"; + + foreach (var obj in invalidObjects) + { + waterLayer.description += $"\n• {obj.name}"; + } + + waterLayer.description += "\n\n This will result in them not being accessible for height queries"; + + waterLayer.actionName = "Fix"; + waterLayer.action = () => + { + foreach (var obj in invalidObjects) + { + obj.gameObject.layer = waterLayerIndex; + + EditorUtility.SetDirty(obj); + } + }; + } + else + { + waterLayer.state = MessageType.None; + waterLayer.description = "All water objects in the scene are on the Water layer"; + } + + AddItem(waterLayer); + } + } + + if (SceneView.lastActiveSceneView) + { + SetupItem sceneViewAnimations = new SetupItem("Scene view animations"); + + if (SceneView.lastActiveSceneView.sceneViewState.alwaysRefreshEnabled == false) + { + sceneViewAnimations.state = MessageType.Warning; + sceneViewAnimations.description = "The \"Always Refresh\" option is disabled in the scene view. Water surface animations will appear to be jumpy"; + + sceneViewAnimations.actionName = "Enable"; + sceneViewAnimations.action = () => + { + SceneView.lastActiveSceneView.sceneViewState.alwaysRefresh = true; + }; + AddItem(sceneViewAnimations); + } + } + + /* + //Test formatting + SetupItem error = new SetupItem("Error"); + { + error.state = MessageType.Error; + error.description = "An error has occured"; + + error.actionName = "Fix"; + error.action = () => + { + + }; + AddItem(error); + } + + SetupItem warnings = new SetupItem("Warning"); + { + warnings.state = MessageType.Warning; + warnings.description = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."; + + warnings.actionName = "Enable"; + warnings.action = () => + { + + }; + AddItem(warnings); + } + */ + + //Sort to display errors first, then warnings. + SetupItems = SetupItems.OrderBy(o=> (o.state == MessageType.Info || o.state + == MessageType.None)).ToList(); + } + + public static void OpenWindowIfNeeded() + { + if (m_errorCount > 0 && Application.isBatchMode == false && BuildPipeline.isBuildingPlayer == false) + { + HelpWindow.ShowWindow(true); + } + } + + public static void InstallPackage(string id) + { + SearchRequest request = Client.Search(id, false); + + while (request.Status == StatusCode.InProgress) + { + /* Waiting... */ + } + + if (request.IsCompleted) + { + if (request.Result == null) + { + Debug.LogError($"Searching for package {id} failed"); + return; + } + + PackageInfo packageInfo = request.Result[0]; + string packageName = packageInfo.name; + + //Installed in project? + bool installed = packageInfo.resolvedPath != string.Empty; + + if (installed) + { + Debug.Log($"{packageName} is already installed"); + return; + } + + Debug.Log($"Installation of package \"{packageName}\" will start in a moment..."); + AddRequest addRequest = Client.Add(packageInfo.name + "@" + packageInfo.versions.latestCompatible); + + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Installer.cs.meta b/Assets/External/Stylized Water 3/Editor/Installer.cs.meta new file mode 100644 index 00000000..30c27986 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Installer.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 758e43dd4bbd4106af8f4817e1dc4832 +timeCreated: 1731943756 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Installer.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/PropertyDrawers.meta b/Assets/External/Stylized Water 3/Editor/PropertyDrawers.meta new file mode 100644 index 00000000..e7056282 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/PropertyDrawers.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 80efacfdc732f144aa910ee5c422e086 +timeCreated: 1716196788 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs new file mode 100644 index 00000000..b0416bcf --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs @@ -0,0 +1,200 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using UnityEngine; +using UnityEditor; +using UnityEditor.UIElements; +using UnityEngine.UIElements; + +namespace StylizedWater3 +{ + [CustomPropertyDrawer(typeof(HeightQuerySystem.Interface))] + public class HeightInterfaceDrawer : PropertyDrawer + { + private bool waveProfileMismatch; + private bool renderFeatureSetup; + + private bool enabled; + + private void OnEnable() + { + enabled = true; + + CheckRenderFeature(); + } + + private void CheckRenderFeature() + { + renderFeatureSetup = StylizedWaterEditor.IsRenderFeatureSetup(); + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + if(!enabled) OnEnable(); + + GUILayout.Space(-GetPropertyHeight(property, label)); + + EditorGUILayout.LabelField("Water Height Interface", EditorStyles.boldLabel); + + var methodProperty = property.FindPropertyRelative("method"); + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(methodProperty); + if (EditorGUI.EndChangeCheck()) + { + CheckRenderFeature(); + } + + if (methodProperty.intValue == (int)HeightQuerySystem.Interface.Method.CPU) + { + EditorGUILayout.Separator(); + + EditorGUI.BeginChangeCheck(); + + EditorGUI.indentLevel++; + + var waterObject = property.FindPropertyRelative("waterObject"); + var autoFind = property.FindPropertyRelative("autoFind"); + using (new EditorGUI.DisabledScope(autoFind.boolValue)) + { + EditorGUILayout.PropertyField(waterObject); + } + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(autoFind); + EditorGUI.indentLevel--; + + var waveProfile = property.FindPropertyRelative("waveProfile"); + EditorGUILayout.PropertyField(waveProfile); + if (waveProfile.objectReferenceValue == null) + { + if (waterObject.objectReferenceValue) + { + UI.DrawNotification(true, "A wave profile must assigned", "Try get", () => + { + waveProfile.objectReferenceValue = WaveProfileEditor.LoadFromWaterObject(waterObject.objectReferenceValue as WaterObject); + }, MessageType.Error); + } + else + { + UI.DrawNotification("A wave profile must assigned", MessageType.Error); + } + } + else + { + if (waveProfileMismatch) + { + UI.DrawNotification(true, "The wave profile does not match the one used on the water material." + + "\n\nWave animations will likely appear out of sync", "Attempt fix",() => + { + WaterObject obj = (WaterObject)waterObject.objectReferenceValue; + waveProfile.objectReferenceValue = WaveProfileEditor.LoadFromMaterial(obj.material); + }, MessageType.Warning); + } + } + var waterLevelSource = property.FindPropertyRelative("waterLevelSource"); + EditorGUILayout.PropertyField(waterLevelSource); + + if (waterLevelSource.intValue == (int)HeightQuerySystem.Interface.WaterLevelSource.FixedValue) + { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(property.FindPropertyRelative("waterLevel")); + EditorGUI.indentLevel--; + } + + EditorGUI.indentLevel--; + + if (EditorGUI.EndChangeCheck()) + { + waveProfileMismatch = false; + + if (waveProfile.objectReferenceValue && waterObject.objectReferenceValue) + { + WaveProfile profile = (WaveProfile)waveProfile.objectReferenceValue; + WaterObject obj = (WaterObject)waterObject.objectReferenceValue; + + WaveProfile materialProfile = WaveProfileEditor.LoadFromMaterial(obj.material); + waveProfileMismatch = materialProfile != profile; + } + } + } + else + { + #if UNITY_WEBGL + UI.DrawNotification("This technique is not supported on the WebGL/WebGPU platform." + + "\n\n" + + "It does not support asynchronous compute shaders, which this functionality relies on.", MessageType.Error); + #endif + + UI.DrawRenderFeatureSetupError(ref renderFeatureSetup); + + if (Application.isPlaying == false && HeightQuerySystem.DISABLE_IN_EDIT_MODE) + { + UI.DrawNotification("GPU height queries have been disabled while in edit mode. You'll find this option on the render feature", MessageType.Warning); + } + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField(""); + + if (GUILayout.Button(new GUIContent(" Inspect Queries", EditorGUIUtility.FindTexture("_Help")))) + { + HeightQuerySystemEditor.HeightQueryInspector.Open(); + } + } + } + } + + /* + private PropertyField waterObjectField; + private PropertyField waveProfileField; + + public override VisualElement CreatePropertyGUI(SerializedProperty property) + { + // Create property container element. + var container = new VisualElement(); + + Label headerLabel = new Label("Height interface"); + container.Add(headerLabel); + + var methodProperty = property.FindPropertyRelative("method"); + // Create property fields. + var methodField = new PropertyField(methodProperty); + methodField.RegisterValueChangeCallback(OnMethodChange); + + waterObjectField = new PropertyField(property.FindPropertyRelative("waterObject")); + var autoFindProperty = property.FindPropertyRelative("autoFind"); + var autoFind = new PropertyField(autoFindProperty, "Auto find"); + + waveProfileField = new PropertyField(property.FindPropertyRelative("waveProfile")); + + autoFind.RegisterValueChangeCallback(OnAutoFindChange); + + // Add fields to the container. + container.Add(methodField); + + container.Add(waterObjectField); + container.Add(autoFind); + + container.Add(waveProfileField); + container.Add(new PropertyField(property.FindPropertyRelative("waterLevelSource"))); + container.Add(new PropertyField(property.FindPropertyRelative("waterLevel"))); + + return container; + } + + private void OnMethodChange(SerializedPropertyChangeEvent evt) + { + HeightQuerySystem.Interface.Method method = (HeightQuerySystem.Interface.Method)evt.changedProperty.intValue; + + waterObjectField.visible = method == HeightQuerySystem.Interface.Method.CPU; + waveProfileField.visible = method == HeightQuerySystem.Interface.Method.CPU; + } + + private void OnAutoFindChange(SerializedPropertyChangeEvent evt) + { + waterObjectField.SetEnabled(!evt.changedProperty.boolValue); + } + */ + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs.meta b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs.meta new file mode 100644 index 00000000..0b839247 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 76d63d50bd644766b0f1ad187f4492e7 +timeCreated: 1719918895 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs new file mode 100644 index 00000000..a195caff --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs @@ -0,0 +1,66 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using UnityEditor; +using UnityEngine; + +namespace StylizedWater3 +{ + //Use as "[MinMaxSlider(0, 5)]" on a material property. Proper should be a Vector type + public class MinMaxSliderDrawer : MaterialPropertyDrawer + { + private readonly float min; + private readonly float max; + + private Rect minFieldRect; + private Rect sliderFieldRect; + private Rect maxFieldRect; + + public MinMaxSliderDrawer(float min, float max) + { + this.min = min; + this.max = max; + } + + public override void OnGUI(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) + { + MaterialEditor.BeginProperty(prop); + + float minVal = prop.vectorValue.x; + float maxVal = prop.vectorValue.y; + + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = prop.hasMixedValue; + + Rect labelRect = position; + labelRect.width = EditorGUIUtility.labelWidth; + EditorGUI.LabelField(labelRect, label); + + minFieldRect = labelRect; + minFieldRect.x = labelRect.x + labelRect.width; + minFieldRect.width = EditorGUIUtility.fieldWidth; + minVal = EditorGUI.FloatField(minFieldRect, minVal); + + sliderFieldRect = labelRect; + sliderFieldRect.x = minFieldRect.x + minFieldRect.width + 5f; + sliderFieldRect.width = position.width - (EditorGUIUtility.fieldWidth * 2f) - labelRect.width - 10f; + + EditorGUI.MinMaxSlider(sliderFieldRect, ref minVal, ref maxVal, min, max); + + maxFieldRect = labelRect; + maxFieldRect.x = sliderFieldRect.x + sliderFieldRect.width + 5f; + maxFieldRect.width = EditorGUIUtility.fieldWidth; + maxVal = EditorGUI.FloatField(maxFieldRect, maxVal); + + if (EditorGUI.EndChangeCheck()) + { + prop.vectorValue = new Vector4(minVal, maxVal); + } + EditorGUI.showMixedValue = false; + + MaterialEditor.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs.meta b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs.meta new file mode 100644 index 00000000..0f65f46b --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: cf68eb48df7045e6ab979eeb7dd25215 +timeCreated: 1718782193 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs new file mode 100644 index 00000000..3a850e72 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs @@ -0,0 +1,53 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using UnityEditor; +using UnityEngine; + +namespace StylizedWater3 +{ + public class WaveProfileDrawer : MaterialPropertyDrawer + { + private const float EDIT_BTN_WIDTH = 50f; + + public override void OnGUI (Rect position, MaterialProperty prop, String label, MaterialEditor editor) + { + MaterialEditor.BeginProperty(prop); + + // Setup + WaveProfile profile = WaveProfileEditor.LoadFromLUT(prop.textureValue); + + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = prop.hasMixedValue; + + Rect labelRect = position; + labelRect.width = EditorGUIUtility.labelWidth + 37; + EditorGUI.LabelField(labelRect, label); + + Rect fieldRect = position; + fieldRect.x = labelRect.width; + fieldRect.width = (EditorGUIUtility.fieldWidth * 4f) - EDIT_BTN_WIDTH; + profile = (WaveProfile)EditorGUI.ObjectField(fieldRect, profile, typeof(WaveProfile), false); + + Rect editBtnRect = position; + editBtnRect.x = fieldRect.x + fieldRect.width; + editBtnRect.width = EDIT_BTN_WIDTH; + + if (GUI.Button(editBtnRect, "Edit")) + { + Selection.activeObject = WaveProfileEditor.LoadFromLUT(prop.textureValue); + } + + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) + { + prop.textureValue = profile.shaderParametersLUT; + } + + MaterialEditor.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs.meta b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs.meta new file mode 100644 index 00000000..1539ede3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4d2ada3c8d25ab44ebe13baf27cd9427 +timeCreated: 1716196796 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Resources.meta b/Assets/External/Stylized Water 3/Editor/Resources.meta new file mode 100644 index 00000000..83b0844a --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c930fe87ed5a85d4fbeabe2b7c876659 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png b/Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png new file mode 100644 index 00000000..063fff61 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:522c37f085017abea81a2369c7f36b5f3b4d9809f30d4410ea696efad7af73b4 +size 2253 diff --git a/Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png.meta b/Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png.meta new file mode 100644 index 00000000..db2c0c85 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png.meta @@ -0,0 +1,154 @@ +fileFormatVersion: 2 +guid: 22661e393f063dd4085f7fe57377fbc7 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 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: 0 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png b/Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png new file mode 100644 index 00000000..e6642477 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2b18f256e31178b16348cba2b4fb6447b9158d365238449378cfdc932b47241 +size 4180 diff --git a/Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png.meta b/Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png.meta new file mode 100644 index 00000000..2e856193 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png.meta @@ -0,0 +1,154 @@ +fileFormatVersion: 2 +guid: 6029dbabe4690f0489934aee6b44ec4a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 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: 0 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png b/Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png new file mode 100644 index 00000000..67a203e9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:625c9bf7d83cb1a53a02870e3f437c33d72f86172da57cd337e06184de33cab5 +size 3617 diff --git a/Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png.meta b/Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png.meta new file mode 100644 index 00000000..549a9deb --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 0c0ecf1cb80894043a5dd86626f73513 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Shader.meta b/Assets/External/Stylized Water 3/Editor/Shader.meta new file mode 100644 index 00000000..95216ff0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 224b51d419be4102913e055f9be99871 +timeCreated: 1729855785 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs b/Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs new file mode 100644 index 00000000..3eac2b97 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs @@ -0,0 +1,142 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. +// +// +using System; +using UnityEditor; +using UnityEngine; + +namespace StylizedWater3 +{ + public class FogIntegration + { + public enum Assets + { + None, + [InspectorName("Default Unity")] + UnityFog, + #if SWS_DEV + [InspectorName("Colorful Sky")] //Unreleased + Colorful, + #endif + [InspectorName("COZY: Stylized Weather v3")] + COZY, + AtmosphericHeightFog, + [InspectorName("Enviro 3 - Sky & Weather")] + Enviro3, + [InspectorName("Azure[Sky] Dynamic Skybox")] + Azure, + [InspectorName("Buto (2022+)")] + Buto + } + + [Serializable] + public class Integration + { + public string name; + public Assets asset; + public string libraryGUID; + public string url; + public bool underwaterCompatible = true; + public string thumbnailBytes; + public Texture2D thumbnail; + public bool installed; + public bool includeWithPragmas; + + public Integration(string name, Assets asset, bool includeWithPragmas, bool uwc, string guid, string url, string thumbData) + { + this.name = name; + this.asset = asset; + this.underwaterCompatible = uwc; + this.includeWithPragmas = includeWithPragmas; + this.libraryGUID = guid; + this.url = url; + this.thumbnailBytes = thumbData; + if (thumbData == string.Empty) this.thumbnail = EditorGUIUtility.IconContent("d_UnityLogo").image as Texture2D; + else this.thumbnail = UI.CreateIcon(thumbData) as Texture2D; + } + } + + private static Integration[] _Integrations; + public static Integration[] Integrations + { + get + { + if (_Integrations == null) _Integrations = GetAvailableIntegrations(); + return _Integrations; + } + } + + private static Integration[] GetAvailableIntegrations() + { + Integration[] integrationsArray = new[] + { + new Integration("None", Assets.None, true, true,"", "", ""), + new Integration("Default Unity", Assets.UnityFog, true, true, "", "", ""), + #if SWS_DEV + new Integration("Colorful Sky", Assets.Colorful, true, true,"4a93911cc8864a3ba9f264d522fdfa3a", "", "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"), + #endif + new Integration("COZY: Stylized Weather v3", Assets.COZY, true, true,"e9bc566e199a97947a3e600f2563fe85", "https://assetstore.unity.com/packages/slug/271742", + "iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAgAElEQVR4Ad2daZNkyZWWY809a+tFrd5G6lFLMGpJPcPwFTMw41fxgzDjV2DGF8YwwIYZpkfGYFLvXdVdXVW5x87zvMfvjcisaiHA+ACekTf8up/9HD/ufu+NiOFf/et/M96MNqvBajLcbAaj1Xow2MzHm9VoM1pxOlwMh8vRYN/2wQYIjr74G9UJtc3QLiBWw/QI0so69SCO1kEYDocSkdRwDWYBdPDFgrPVcLROZ9HiKCPJU2RTsoxkTZ80q9CRM1paI8BK37rBHfInWGRozdIYrjuUDtr3jYYpKXI6gFisYV+17PRD2bbBbHQAo9FgPdosxxGRxpU9IwQDKq/BZMzJaj0eTtbrzWg4HNO9WSPjcjWYrAbj9XA6GC5wDDo3ZtLA+sB3QtGFBENIYuJq5GibZxCjjHJKBSUR33Zb7draLlbdWk2KZV7BUuOYNiirAaf80SL5DkYISjpTy8FGYRSnYDUD9eBHCPm1rqB4QDWgePUdG6w6NPhsCVvrjX+Ph0Q6aThYEcxFVrfjYwjWcTRcr9cTyI8nYw03Hi3FGGp9wJQ0toPZcLCUFX+lhiJlAChD4lrGkUmAkq1ELsGEo1SnHXJpjWktBWzpW/WUJ0A6UBReGmmyOfUNA7TaOjzOFL6nI05XGv92igQgFVWbQmFLJi1db0dPCsPxesDAK4xGsutPYNs1mG6WQ0KZEdCpGmaT0Wi42tCI9Tej8WSynAxWKyJ8/NOPf3Xw4H6SQoYAwcmAXOttR8Rw1ateyvcaEvrhGA1kkrPoFjs3EW3vvVEYTeq+o5Hp3jqyRa9rvfNuSEjA4xZhWxOcs90GwH+o7IIVzKtaJPBy+y48vYhDZsgQb9wc+o6e4bdPv/+3/+6vRmMz04S38Wi0GAwOHt47ee1R1GHwbBwNpgjGmqE4/UGOjXoZPkbYKrgrJfU6HRdoj5fKLuTtHs+2FF/u++Naiv7/OZ0/jturoZDBrJQyId8wUEfDyXQ4GjECqLYJ0ZDCTZgJxR35gwH1zpP/UxVuAeye9CbebYww4dTX/u9UXsn0/w6rH6SKBQj5pExTE8meRDTZYwRsBnvj6Zi5wVEz+O6zL8+ePsXySTwka0YAiyISlzYEiyP5S0J0pmx5Jq9mnWNiMs/H8JVuC4yEhpNN+vo3E7hAntDmYsqzRlyUmh+2PKxV2gOQHOmpBAUsVI4pnimnAtvLYJ9Op5NxRRfNHWAqEihHtTeF2KzXi+VyMV+s1iZu84YpQVYYhELoFg/rW4KxDBxGZS4w1u++8/bP//QDgGhiik522UxOHt0fLzDyaDydMkCgdvXs7PvffbFar5B6uh6ySCX934xX4YaQ6hNjUSvzNUtrgs4I9OEv/uLH1lrywYVWha9e5W6QEm62HcgvjGiTddxfndPxeMrQdS2xvtZAi9VqCU0NNBrt7e9PJhNw5ssFtgN1xDRWDphMDvb3cUE4Vj4Im2gFO4NNGSIizGQ9XMzn88VivWLOHE3Gk/VkQvSuVmv8slySPVw9Rl/FFBedExLCZK2IqJsVy4XhL/70AzX0JW1gJ5s90hEr9NFmPCTvI9rxydGjRw/ni/kSnOVmsFgzTU9Y0GqCxkI2VGlxGNWZNmWdy1kBjZXCuR6pohbogrZcZxQmTNpyza4SHwQKyhY/1moiZteBfff3sbAmrqg/YsU9n1/fXC8WC9YUR4eH0+leRulmhQHERcbmAOpQ0BxGb8aOK6ywDXfiDRiLWikSXp3sj/f2DqwGd5lJkdP1+gA5A2goJEKKFBy0xnK1vkK4xRIjufbsiDuvxhKwmLAJGLLnwSG0ylCrESNwXQ4PIIMD1qv1dLmYzWbEQsK64NiqEVciIIehwopWNkijfgBxgCakpZwGOY9dhwUR0wDAYiDSV0goufHh34iYgyTxAUGtyfne8cF0bw/jqjwAm+HRwQFg19eXtCA4KcYBgQtNGChL1eCN0IrkeRlKodhBtJNIWVA7R401RIgCUgZW7LEnQdvjqk+ZL6igYNTpeA8BL4iQxRxIGhtd3wlPU9EEAdWP7kaBcF2z0IXJeuw4Qf/JZry/nh7u7d3M/FsuGSoxqVtVC8INSQt708k+LAk38yZs8ZlMkjQLEu1XrsQGxOl4PIEvpmSIE2ghJCXlHEGPpIip9wh2BFwCB1+2H2OyEwknlnQ3YuI52Mfsx0SKFnccooxKUYovXVv95WFHXnH3rvGaoP1bRIpw2kl1uEpgHPb2tNlx3Kxhu6RhuN4bjY8P9sgfs+ulWCn0IzOLG7a5kzlzgVHCrFw0RWXS5c9CfMZTbOam+1Omaqx8dXU1n83lx5AMTaxHXjg4OBxN2WjogOlqNZ7MIEX2LNca1iXAejMdje4fHYNBmiNRXw2GOJUgz0yE2acaFeJmC0RWjCmWHU8hwGAfkI9Vwh73KmvSK7PrmMFMHwg4SUjHjJv/EENh+UcpKsYwdWwqg/jDps6INO4UYQo7AhGf2ghgDZc/wliBgq8ELPA3c2ZwI2ayNx0fDpcs9VtRNsKeDR07sQV6YT9kiVvty75XZNOkXc4QwyHTEOynB/uHmGZyg+FgmbRoajw4OJhMp6jMjA0FZsmDCRc4Jouz55ghxKLqRo+Sv5WXjDEc7h8eHOxNMRZJHF1IIa7LLFEzyiT00sLIMBuYcwVxqKCMrtDaLSrNaJyBaoqqwmUYLYWFfClKLEqDcFUk09V330GRl16jGdtp64Itl8WL0gYC2EAP10sMEEgDjuhlsu2oYkijC3KT4/lmvF4vE8tc9hFkM1xpV7OjiwKmXwlLXRabAcsIqJGJoOJkaCP9GszqGvBWmEsO9w9urm/ImzAraVekvOmIa1RrKu7W8QmJZbg3naImbl8NzOBFIooPQxHSJi9hlMLY4I2XvBUC36g6YrjGM6otsHW4hF57B0UKCsuBgAAqNKXzqtKnKbuDFXJQbe8STEl0pLYcT9NPDyquGQWsvwqIc67vjLiMsuESqKL7yr8A0ozgTfIoZ0eaMToVjmRn38IkfR5oSFtqGGwk2OzmBpr4FKq4nXliekDzXgEXK5FTEMdYS+m7bKRZS7Wu4sIJLXes1oEUjWbThqiHbPcQRRpQ9Gj1V77tEAVXE/yxpRkE9UmpHZJxVDZnvWxjDl1vThsPuflPKR3Ut0qUrxyKlhTwzTUpnATNKx3kKUIA07Nyyew+ZMJw7ZssAcGi2dgXZoi3Ft6Mkq1jqh0sKv4HuARoZ3fQqzXH/lDodQpP0EOu6PVQP1j5o+ASu4iJbbABSafIEfWs3NbDCZOV6xBSp9L8IEnR+u5Oz24YR1XRsTxGaizaEAIRBzA9sHYiy2eJwoVu1zNMmvRCjdLbwnrk2G0soQu4q4Nhyek2MjjNbKFMBdkPDs972VTnFaX6X9mloB1Gz7hruPteTLF536F1818tDIWjg333uIMxaTizmRLXq8fardDlhJ4mZIkwIVpWaOd095p32DjAfdOUXRWM2EKyq3PdSfgXnR3VOpyOza3z7kQhShC5KUTX4zsnJdIOVPp7+3HW1XcxWQlaVK7rTsPLhz8M0LtcUULNSUo5t5Q49zZMZkDuw7h2y4y1C7OFViOgbWDq2JGOphBtCjMp3rZFSAjBnH14eAijFXd5zGDsNLQ+pa8EuB1oL5pUaOolp9Gya3Iht6hWO6ls3akXKdq68Nz6SUhNRcR2CTRNf+DQU+thlKsjXo2RC7uytY7OMOhEpepJzYhCl159f+kokIIVuTreOumkLd4FLo0AcejYyYoplyR4dXWdDcSGVT8Fx6DJrjKScp50SimOIW4dV3UySLsKLUD2PlCn7mQbiQGyq5EsMh47LnYUJmDb7v+lWoxaRigZIqW3UrYUOwHK/llwDrKI7LT9AY5KpWGToAnfHVW2xBvXHQ2qzxVkFGTBenh4gB3XSy5urK+vr1kX0EhGqgUSFLRIJ+XLwhSAjDqY1EM9av6QiZHk5a47sVXsOpe8zNwW2f1Q6USiX0MFkrYOobp3gJpVXE23Ui279EXuePaS9RbuSHfvu5hdnT4IKBAtWblyKc0FGbeAFosblqfp7YkX3p3TjpjvnTjbtrIJ9LNXaACvMPcW43+/hmBVbpFgyN4yrJ0doLqnBKYDK5NlK8ZGclsa2bJaM7QRyV8rDaLs2Z1UXzvr3naJlNXcWOODfXcAvQ+8hJl9L0RohGlvYlqKWCd2R/qV738QyHG1Uzjxdbuk/3bTD5/tEGukfxjWfeErehUAO46yEYNeP6oDK0ZmXtuzfhXkbgkNZ9SuI2jA5b1xBRGbFro3oycTNgFeIErhah3v5Q+OEHKrkFIoVGta4LT3TQFwTKPsGjNaXK7dKsIoe4Ta6XkVQdp2ILrqy3y7nm3sv4oaHIsc+lvdCmmzUqGac4DmT1PRpcpClXCkg/ZIb/edEgwP2K3yQAPahaVeVDBAxACevM/OgMvkrEqZirm056WNMdfc60qqcsq4L4ZC82JviwKAr12qhqBRUIl7TdOrnlvle6rFpSe4236n3gvzxwDfxlWwGPCVMkCYzVh5yawiNC82zCMulHqtBdlzoa501IgduF2Nl6YqB4LAuiumAzIeBqr70xpSYDt2fHw08WIS13xc3lTs66GMBgiIrroZOpINchiGbePdW5uxAwgIvgnmojjgvlOLgFZeVYLRNGv9r4RUATm0wx0Yem3pWpsgcFaNqCKiRRNpP0DXXIrgjFHrJUX+7OIK6sgLbYMNz0JwAYeLoVwrBlENAQ+noKsxLbmcLWWRQoFDXTJTILN/qMekoOgk4p3AFz0Sg4knONXvFscLA1E32CDbtCpCq4hpo8ZO3XNFsFQiSrtAzHUFLcEA1KGBQ/5Wc1MTmDvwYskgTDoU3osOrbUWCARnSp03xOmvBKlBbbwAZw5AtJCTdhWQ8mqS+iaIaAIgk9u4nNAXi9hxi4p2ENELQdtZQnT8QXOVqKCOZX27f6AopnybBAVFi6KGHMJ1neG7Aw8EdzeafACF6y6fIhGxbO4ruzB/oN4Y34bQ40Z+lfhh10IRh0OuV2jtKNagtUiZr7eUPR1YA/Uya7kE1UMhHUWqxw9ih9Fx2WVQPG8LUG2JvkhS+MBQdjfjDa69VdBv2wq+jq720sOxqtW+hVa/VvpK1/Dq947kq3v71i5Q+4Yteaz0ihGAyvwRbQxteahyJYNgRpFmX95ScpEHb+sHGmqgcFKGbkC0J/QK18zmabEI5S217vpUwQch40xo8p1XlLrSIXnugwNZWCu98dcB5R11cFFr7iioYFleWW7BcyKdDrKEvwNB7yvbG5gDQKJK0g+G6ut4TQTYVQJILBerA2nV4JFAGVd0xMqbh5Z/U/XsDp/WXmqUrDLUyeEaEV+pxh3FSsyeQhPGVmWhvYgkNypxqDfFNHosVUQ6WXfe6YaI4tsIfPWleQfsVdXABK0o9DAqKMltQ1+LhXO5tFZB2hY4QSOEi1CCviJNWbreZvpSBpykU4Kyo7xlVi0hK3ozXFcJSZGVhJc8LA0+Feq9udMPpO/auoVxJC6bVXuheHExl94D1rFuxoBjb9/w3B6ipUzLHoW47f4jak3EgkSYVKKUJCPuLhXNxbOh3BnhAenuZgFtmJ9GxeFGistQSDj0X5JIfv739gNGa2bukXo6BemLK07gNQKwracI94tRgI0ApmvzVLtqLXz5IVhZd7rUUT3aQwkIxM6WOz6wT+nppYu3eKSBd0L3orUKSMUp2CLSUceCkOZdpE6Cu+3KhRZF4DZWuWeI4WvTFYN3+PCmmY4MApXCEuhKjYI4LFoCod4IV4UaposLJFT24k3vawUVE9GHTXMqapSx24cYFFGSFunb2+KoWtKTg+4rUPcePRoUaQ0dfSBWTgWGWY6FKO/dIrFm+lvNERuUHfgitotekuzi9XUDoKnZtalUGuE40fw++qlFCsDw57kOtMiyAm6cU5CAwilw3GkEOFWRMmmWbe0t1Src3NRZQCQ84254yz7eEDmaNC9JjUKnpiNN8lxAuoR3QNjcF4Rw/4JCVPr2nMZ3jhCHQESJtPpg97o/NJsWUV+WcFe1xqQAtmD0pqvXPXANWk1KHVtvyxq4lw+mIG/NhAIYvGKkBB/NBHqGQcUhbpAE0EgEp05VAlvj+IDDrcLp2vuPFjjEAfghaSGAUC9NwOfeMXS8FhSXSx8UHA9hunMKsMaMuF2LYL3W1aVPEs6Cwzg2s8nx5DsEbO6sX1jQ6SuAFf2I+cceoAmFhlhCBrUn+zIhUhA6tjyrKhabEqzT4WrsQyJ8YCtGoQ/q3NjiudREo9AJ8DyV490HPCeUaqZQywNSGU2tJd0ln6L551PHGRLcHoA9tzBpodN+rNuGn4bE/KUhXZpJmh44QftwcG9MArKxWmh2HMk3lreC5ztSDasBF4kcYSSX3r1pVIaqdOzgY0MH11DC6TZq0G4fsg9AYyh05JQjd27XPAnI862D1XrEw3gGoTx4SDMPvZpWkE9pnPY4bR8koDWlGKW9GYJmGyOtpHLuhxMgsoBZyGfbjId5tIuHbQ0FxWtWgBrSaUwSv9w5OmJik6Irr6Is3eYDNQKK4YAOSUzVWcBCtfO8xQCtJTLudlrXRC8XGZRrtn1AYiagX4kBHM/K8/CYD/AJxAtzkjRmeeCbW1U8PMVddJ40VWENJO12rCBTNRTTRlTVLqNeMBYAvYY5F1loWXWiusyCYGYJ2l0dY1QfjeTZ7CWXTidjP0RSZnW0OrdCQ/zI0wWP6x8LjfTW/CtY/GHiDwYAbYNZ04YRJS3olwGpF/G08Oyy5lPewmdIyKQVSVKijTJJQ8hYUgSxaKsA2MGk1fHHJMznAMwRAUVoYNY8N8K1YtIOV4oAMcBxkI/ZKZv8SpiQ9VzkkpFaRBDWJpVXgELIacMNVvhFXIFCRlF9geeo4o4NAkKDiQDr4w6OTCbVxdSC6HIQ20rkKyHSqndilgBAnJfmiRSazCkvqBJQZujVqN3qBPkUEizeqyBTPhCkKEFPQ86a7eGnRCrDOwyrx14baBZ54gPMMPTRqQQQ7YGm13cOUlPuIG4J0bRLscAk3dujEOIupZRShYgdiGPj3ZbQ3GVlcvOqdUmCP0QmKNQHuRkokS4EvXpSFY7ClfRWHEG4rkZSrOPDx2UoNcGqG1y9yHPt0qaIF6MKjyezKaIt0uh3uqEbmhz4i90zpkDhIfyyv7pvFZfqTpmohSNA0bdFpSABV9tjqG1nVwtMFKa2w0PZlbn5TDXLFKVToTeU0jBNadHZkhKFajpiiaJIl6XR5hH2UT6DYkP+txwKCjOZYvzYtx+HTrhLmVlE74FUPDzFEjAuPEAydkLX1rK6T9U0jASEhhFTgX36hkkLjM6Wkb4MwRFPJT4E2CmZ5SCgg4MgYagqtFi826PQsimY4NOEMHcag9UDexZYoIoICkDEtq4lDALEwVAM665X+ACXHMKZgjICjBwSNJILIsWSj3ehw0bQhBZdTE+uIPgvoQDIDBnVwK9MEnahRq8S1XaQio02NAvBIOhxpOx4PnvMZ4NTsohUHERxIlTdVxdvSTKMaiUhSAnHO+ybpA0z5EpHW5ADXCshLnxXp1LAVFJCrAPr4EsosJStJ55euEhWFtSInWKURoC1IU/AZ+W6NHH22mkhS7gWoxw1BH8qVL2QKlW1UUOnx0b+DPmiUaS701I4MHIQJEhh50qcNM7Hacx0SOiCzY8lKXZeAbtz4InBXvrGUyyjrCkfoZuOctsZB9AtdYpor4kzGYGnHZqTELQQ+2NQwsIuzqwXhY4LjdFYCejRuMWomFZuKSMU4hYg8qZLImBqAtAQSVBp8W/ohaLUUwu/0tyOcE6HGFU4tQ4Rc5uO5GgjFWnyYR4/I8G6kY9fjP20gx8XYfSFTiPSaZKPSiiGkvWFajuLge3TKfQrZ2+mNPYtVADoe4FtWLy5yGxdxagHa0BJwYXeS5EPYtSqtkynHV2FlA3DC4GKYMPiJHJmilZ4ZYzYpT5CKqeqOHdm1RFUsZr8fQqnQ6wG3oKjM01jXGQDFMZSDiU0Sq2IBotUWN2awhCPaO3x9IbmG80KnuGof0PCxnTuHGhwB30rbHe6qYqq/KHYs4+nem05s86oxWqFjo0gW3qwBc5caY8SMLY7o2tKW6O5Net9bzXUEcQIEZASS1p6v1gWM5o6deyuYovofREjvg2+mArUhOmhqPjZQnYyzvc10naINDh0dyccR++gai+KOaSKkjq2tEuv4Z3Twi85CsyWyKde+Lt5i9bS2v7SbRcLXNs7Z3CGHIyf1pgZTcwUxevIyVROQvYlJpZdwj10eggxUalg/RBWidXxt6O3PeL0eCIEUQKF/RJfQXL9xH2cX0bjtw1AogNPf5RiEqYj1a6Xs5RQla1nPSvqO/ayb8dY1Iv0llExjQLhtO2xpg7biN72yTLLj8YrAhYkVw+pcDmkTncFqGW+M2EoNwaFqwJeBiQgcx3Ic5koGTJwoi88Ca4aqwsthp+AnlmaGAxNYX+wgEjA0s2+1si9BdwT84PZ8kx/ByLD0OXNDvsF27F1utO8ExqxsgiYoIBBK1Y5LaISL0hp0u1poMKputLSpAQXME68LMFC28Ufl0u8yApYAQECNerVUOIqZHh2UDZkKFbyty8rQHUIjFQaV94lShTURV7d0NyDwFKyKLtk+oa05iCw9ABxdQTLWjVsIVKrFHSn0dOoxCEmkofF0wRsp6c2q5ZdACKxGmvub0YqiBxDvBA52iQn1WicOCvcBDWraj/QUAXgjR8i9lopn0b26mv2orQzKNgZFDWOlES18YehS2Ya5cF/d261tdDcNKIh0WGf7henfCCuopIbYedZ+UWM3RIOAYa513e4alKO34Xi06zNr7YqRysyQ0SOhIyy6MwyWfNBNXt0sIEabK/yCmlzXNVVoRFpUUNadbOrhxGXXN+olLp8iRqFh7f8hiOVpDeRJEmUogs3lE6IQEVlvFjLoEfXOKMZx3bZG0/aLbJqItfqCQH1jYoe7JGdmrkjto0CYESDSiCgZ5+UBW1QAaUhH9pka4ZmPGfIRfY89qoSKy5T8Pkkn2jjyTjFyv9t/JBR3nBH8rvdXQDJvLQoiOimqlK4hdRO4lrVSz+NGIlji9DgwVaFqqAYvGQnlFh1JiIN6U1PZB1WpvIhX5xQV86BhxQEsnNmwPDNI7W2CrmQkG6KkhdCk9E34BDDjsgKIGdpsUp7E6xDaZS8cK7XYF9P+URmWqQm4qY9Gxo5wiaY9qW/YLa8ooZqU7TInYIkYnpsKuS8P+0NEX6iR1uODohGUKerZ74lIvV4wm4FbwdTTeK4mmVhn0tZaZqWHIuVDGmtIcHoKKEBFQqIztoh3HDBu2VJiadk5JaKaemaw7FAOBap/pQKNonKrS311uBNeas9gL5MEy1NyFh0h16Hsc2qIWAclEQF0HMrbcs0ChdAvaoxZZZQ0licemc+u3l2kCSfEAEM2K60E7rkl1Cym/N4pKUpaeaiABRIOmxKiXq/om3F19h4xaYQKxWGjKO9lW0NIvCBVrhyzOAse0kkKjQsoYBQI45Q3qFoh62WwGTVC588mNVQmvkKQEAgKwPqjOCGenGFDaXqTQ51JgrDoCQNzwKjq5HgPYg9Ou1Q8FSunrh/n/ApTq1JFwXr+heFPQj66tKRlTfwUCD8c1eBNDBaLNd8d4l3wrupGzgEr+CRankmtJUlEnkG3RDc5Zw2IUqwIBUgFIEXhRliF0VKOfdAwoRE/AbkthQqetpaZGKygmhcO/Bd3taboW+N4h2UxKpR3jiCIgbLHnI2dkneIGAVnj7Tik5QkKAIb0/YK5VTYBWXmGUjaQd3vfbblpbL+YqvTmIu9HtR8Qd3+pjDK0112Hk3DIwqWcSurVcJrUYGap6UgAVgewA4Bd3eSiBBxKdS7CA6QFHa5wN20BvxMFAKKcprq79NOW2clFmh67R6c8m9uULherE48XJC2cd2cT0maxOVfLVL5e4oknAUH+LKKwb1hlVha1NXihdgwDAD83VJvNy1wRT3JME5MWRsgbTrg9DvReo5awMF6FmkXqeNnS2tvzeCXYrsi74iJ6W4B39k7TQyBdFy+16BuFE65ilKMTEycFY86shp33K3N7k97MQq+WPHiOFBDA+hBQyBb+ynoQkNYpFIq9CRrLTwDDhaGnnvgJu1WBpuNrM531mUT4Rj8TbRQEzdwNAr4cttcRvc32lEKxHIzlCGdj/K6JWCxf4QKDt3EnT2CanIRlQxI3jXS/pVENErRHyfTIkDzUa2gwBV9hFJ9SroImKBIEpVEOJOvVoinObp4dMekl0Iw2OLjpgQigKaoEMEvadPvY+1nmwatQXxTbbxRjF5ia+fzaRcczskROxEVSxukeEsLhM4HYwdHPAMdLEr1SWujJxlR1Rci2U0EzhG1CV9Lz4rR8WwfvEbT/Ks8l2gfBX0enM9my3hO/VDeohWNjKYKBo2xs17UTctKER3BCwyNYQSUKzIIMlOGKquCLpTSEuEg9aR4S6wvbYCXbubkihcukMMqdQBVnQsjnpOFWuMnhLp4mUJUghCaBHIQbclSdlGpgRfGRDe5IxDmk2jCDBhV7rBkT1UmprdI4gkW2kaZRIEcLZa3vgk1RwugdDxfGJ9BvrCzWPwY3G6PbUhHDkqME3QaU3ClCQ9ShdW2u2W6Xs3OETA6o4ykSIFIjLIX1bEwBR3GNc2prAKvI7hLA2SDbbnTj0+yABvnpaGpY5wCLcctqzDGBjsIiG1IjHxrVR8d4MiOD1kZVxjqEjUkbGqGUqa28diDbGkePaDq9lyNfdLzaOswPLBBLyWfF/QLnqTGhrYwo6yTmq3LUuTAu+UTmf9VF0c+8Ye1l5t0KyuXBq8EfJM+QCxVSF6J+7wqiqhTtjW937QUtC1EBLAqw++d2JAFt7C2ekNk3ALgIDi00/c5lCfwOcAACAASURBVNva8H4+PRiybgtDa3sIbU93SkhkOYdsLHxxLLsOn/DhKfRYvIDBxT28eNrHr4as0hmhROGIaPZor9QRULt19i2sW24oYatj51gwPWJnWcIMraI2dF1u8i2M3kitR0w7MN5DS9YlkYIBzAUfv/2jk5cK8ipCvNtTtoW/uJ244vp82YKsyh+wjb7oidNENx0UnwuMBbJfLTkCDs2SxYoU1DFV6JVsHiHgbRAvHXKjUl4FLbLzzXg4zv2AGIIuuDm0qDgfQpcbIXyffalAf/gY19Ex/MRB7o629Dk31Gzs2qVgxDXnYWGW5DTRT5g64JSHZr52rwRjpnKdljFkZ2MCHy5l+aWyTKFMtigYdnKVGSh+qZyYQYFcaa15EkrqFVidEjA1KHinCqdvtHco5PKhOvA1/mQjB4ELJx9mdrfJH4/pIT/tmhlZIcgkxBqA2TaEeJQI23PtCUwf3IcmPfz7IFbCv/YBiveKUu5NhzbtUkoq+sCiNzg0H/QVO3ZoghLovtU+msRO6GsO655AC2SLSGKiojbFwMvV1fWNGZItFY9MhkhR5khQ6wERd9jJW1mg7x8ArSHsPU0Fg6mKEDvHSMVXmeNp3JLMHNIghWTnbHgyl/hAJ6PG8A5P2NIhQ4Ctl6h1Rh3RMgcEqPruHhuKzdFL7lVpx84E0qDEdqVAAOFtESt/AdG+NnZNVEtiGtyv0gNI+NCh9enOSoWMzzfQ8WUHJhCJ6rS8Q9LIdCzZYLGzhIjNgwFbIQu70D1VGC8L2ZNxpI00m76mnbgmhl00OnADF8XpciFAykdAF76ZzYt7sY4QEpGtpHYsKpwbMZopyuq7UgW4U01rpDu9uwfA6rRMbL0sa02O6hUY9bZNLtGWt+DKLI+e0iB2oBwHLEZcguglEIj2rPAd3ms+TSIcnyfA4uCAWAKUnqFkk3pItKkWLWWxlTYshYxpyqn4H4MEEcgkTrfufg8xl/R5VDhUwxTrM8FytYMv4NG0neFKHplLmYFjThcjRTm2oG7EgGt9t99ADg0geuxOAXoq0oKtAnV6i0LYG31VsY9ARmIu9/KgbePbMYekCSTwRBJoyokNQPBukrkaboxyGgk8slDB7NKXRcDALZvUaUmQALBakVCw0cD0VYLo9dyFqicBOJNChpdPAjs7+uQV7kUw0g0RIYA3AR0bKgk4sjEtaL9mO088s/CeUxq8H9BK19ud13vfGluAprYhgR6wi5LNxDK/6wbbes7aDXuu+FEg5iZJl+3QF1EcvuK3dkDhQKNpdcn3HUuHyzrzm9ngJNEdSVQeuJCSV844VzBtWhZJa4t0+xgr+rNKhx6FpAAAFCRaXYJpU4TnW+yRnK87RFCvMTkGXVeJ4V/xE/VVZduOzBYcFzirOyVd7dwOlMBS1WBfJA1P2gSwheQYItarpRBKpNQhQiFsNI7mC0JO6JcBSTynuhRPce3YnMMAjmsGA/aPTAP0sioBvPCtdIUm/mjviNtRIlDpdLC38liEhUAo1CH1ThKaXDchawEpl8++sbxfshxgYAKO9aHciRCOUozRehFzHiJFqY6JPbr+QGn6IGkvrNbodRG1ydfaFIXGOqZiLPctrB6xSCOb5ggQGurnXV3C3gq64i2GQmcvr/Pw7x0Vkpg71Z5LieS5pC3UHTexDr0CwFdRZF8lgBEieanTwDQFIOxxdokaSgxVLmhvWO1wV+fq+hpBQTEHUUJTHu3Mc3Bh2XXuvpcEbQQE4/YhEiiEdLsT38OHwac+xTQMPA23XTKFJ1jE4BQwljEEN1RN9CWdOiSdan/snhfLIfOozMGy0JeufM0TVPWrbghAJ1LHqXiLXzzELtmiejMTLfGZbSYURLJA1nGDp4tLoyG+5uANaohBPLCd8lpFiNotxxAXJ0UskezauqdOw7315+3OIYylXRbgSBXeXH6hHoo9645MRKkumvoK9kMn0vkNgbPwu9JJLykaH5e4bQwMBIhtrN6jQwR2LrFjxOKuaTL26MWIUgDFV6+mItFLgTvRam+KVioDtXPzOIOLm2XmUrOOKutU91gxExAFnJzDICAFcRWqvAoxOuUkpifW25mkOss3Eh0lF9mCBqPva1L2QFS2TSjDfg8LOgFRDeNirT2KuaiNfXTu6uvF3F+BII3wZVlRMQkHs4JnQTlzEZQqtIszHbgEL/EiOLELxoJ7UptIvBAp9mqqSCuylSQYQFzailGp1GlFAAOOX5lhggiUNiunSkgO/uFpTnjqGYmAR0jiX22BaaqHsYdWlJMi466pe5fgtr7TL3xfYuSt+1HBb57kY6rdiEa6yLgl0HGyZ0cUSCI0WhFpGItTs3znoQLNkc8MqzMFuSFABYsbbsC7KHUiqDiFlUYJZVqDxCGySNtZRFHFM+/1ounOLPPBtdFL9gvEAsOWNMGJ5FgNcRLN3C9SKtYCl5eXuryzVSryL/QmSTeYwqQx7958d1YRQVFkzD+EIj/t2YL5SCVkgkW3IasxzAZiWDILGbuskeVkEKfkHQPx8hINlsvvOWRl6Ue3d0ygsRsX7ceZ5GPL5B8v+pv3KEzRsZ45MPoqM65FMBtgZhEdITE8vZzgbGXrCl0GgaxkG88GuASXLr5zmIeerYFl4teosDs/P3c2YkvIICgv9bgSDXziR9y0pL8OJeCA7yZja8fvHfJd9jgBORFizpfb82VafKSKX1DiZtqUx3vZ97g/ccPOfW5imJwcHaOVnXwMgcDlW87YW/ALPFMGalnQSYpculjPL65WVzOfX+NTwdm2a8gu22hZ1CD5jwb51Q3Ic+5lZYpfceaTKu6CDGrWIdc3bk/TK64FhoBj1jK5jWqu9Y14DdGZk9CNAxJkrPHp9yoa+rYhBYC/1cG4IXaM/3iCZ1v4Crf1gO3I+cXFsxcvaghgbgKWD3xhP02taWJRF9ZuGgCARHMAEAlqPKnrsvS2K/1cZTTFcqo2ycjk6+F6MWLJtbhZ81rOvv/uyddffH727CmXx7iGuTcZ7nFp1bG08me6uEqADFxp8jd0/GpEghf9oEjgLPh9Jn6Xy+OCEC02cMIEbSJVlJIl1oulMJZGjTf4OByQHPVM8CAKdqK8JUYNRl8SHbgAcMRdGqa6RGhP7lOjEzkVgT9swtfmudAA2CkHUoUVOzqwvvrqq2SsFYOAXkSmyLFme08y/pQ5zQF4+cCvKGWp2/kGCNfpq8V0uu8iI/H1/PmzLz/73b2TU0zx/bNnEP7m8Te46d79Bz/7+S8evPY610j2D46m/LiQ8Nh7jjOjA7+kxWiZI403yOf5ltBmXogt0IxpLEPHFRIG4nEg+tuQFjIpxbsjkraLXwrjl33yvdM0plvpqWMLrMfTV6yovJDuynLFd4WUcTUDHBhGSV1AQlGLxK/EHFHBlEqw8PNCkcX++Dd+QihzJnlgfH7+HG/xC0N8+S+u9bc/MtSKGoQZ/cjDpMWn/SWSMIn8giAuI4oIhTU/5cmKcJGriEYdL52IdVd8IpeYFve7b7/9/X/7LYmfTqxoH2NiNDx78fz5i+cI9O77f/LRr37NR9qh+OzZ919+9SV2fP31N4imq4tLRjAPh9w7PjXI5nNyCJ/nRAJMgNYmKJ7A5aoWTBnvGx3PKdIgOvbnQQm/uzFZHheChQ58AS8t/GgVFzVq5oRMWS2Xt2KsZJXVGFsZ2jBqllBPPZpozQTNr77x/IQjf4kX+XpfzAp9GIG7d7CPGEZFltFIeXMzYyEUwf3+ccB0vM9zOOwQY8KPqRqJ/FSqz9M3ZYCjtNGSqpejFzCee+XRDacFe+mEJT8JhczD+fX8+dPvVrNrlMd+SO0SEBgG6ewGubnf8PDhw8Xs5vnVs+fPXnz62e+++vorxHrw6NHV1SWSkWWvzq/+/OOPX3v4Gs87swTCEIYl99CJI+IVW+AMsgSxg4TYvVxQJ7bU8DDemSPAooUSu7gDUAwG03BEl98wkQ9xSLVLPugFMDBUOOJpmHKCoSFJXEOhuFIxvDQrB38kx/tZXqpisLoAvby41ErjMVFFzOAMflouIrtw0D7LVQUR3MNRwaTXlUYaBl6OXszI6YxbhDJslA9jLAfj5Xg4he35+Ytvvv56lp+qYwXYooZlA3MwT/rNridEyP7ei7Pn/+k//ucnjx9nMWfCJXEZZZTVZn+y98UXXzy8/wDrsBNGe2ztvijxx/TgxsC7pxqe+YMpCJFdFGTw6iw003wcNgQpZjo8OiJ9AcM4QBMA+EEojtCa5PepS384QVM00CuVY3cc5i1fRwemRJK4UPXZi/Flvqcnp9ix+HIcT/aUKmIQ+ISqv9c3HPEd8Fc31yh1enxcDlbQWoxxzx29VpiJVYmDwCIHx0B8YOvky09/N17OXn/n3SMXQSl4k7mea6srZrYliw14Iyi0zBlYBNldtznTGxqLxaeff355PXv8zTfXVxfYCftqytw0pIr/Z/PZi7MXDBD3UwxkvvKGQMH6XlrJvtqnGqBrlhr644pZdvjN9mO2fJzCn2iFKAUdSb78MMfV4pIfNiNIO8mT3dFQyi3e6fK0MMsCCJ1eGHJPHLOyqpNjXISETO+MxrhEgrTgOyMPT4xHuOf65ubi8uKYcnLy4MEDRhzA5FV+KxQwhpSuNracUIkPXe/U3ixsIOkD3TH577/9ZLyefX9+8etffMzvMtqm9bn7M7y5uvzu6bc3VzfZA0GK+FcV0HWDRByX+IJAwBwELWZCCwIKQjIk4vADMm2Gs8Xs++fPTo5PuBPw+Ol3PKX08NEjfvuNrwbi18n8tUzdOsTKJKODwyOGI5kESkSoquMvD1oK/9AAI2YC1EV59KWRFmOKSdjhYpyoDfIA7IxCg27OpfA4MhLSbp9vLhx4j1ZgMXhAZaBIkN8QREcaDvb5/R1jnx+wpAVCKEvewm2MWuTHSsDz0mfrlb8+lwHKeQxs/qYCH6SbvPj+28l6+f359YfXV3HA8PmzZ4vH37yYTL999vS3v/3k6pKHiNz3ojFri9yGJoS576wyUGKzcENOYF1JTsRLgGaA2a1WLo1InudXV59/9dW901O+8uTpd9+/ODs7vnf65ptv/qMPf8FPuemkRCUmznrWW6wQxwDIqlf4dT5/KM4NlzGZlTuZZLy3T51SwJoYBG6H1Kq/HwdZFGJNrazJUiIggUuZ7S1G11f4zdmVj6+Yyp0eEACR+PIiAr+GGsTpwrJMFQxEe1mW5Ue9SFpqXFOLwRC3x82IHV3otOgD7+4MJ8sFv7K2Jiv33Z9/9uln/+HfM8efXV7MF9fcwCesfeaMocGLBGAOcRhHfvztBc5vnzzGBSZJ3WKu1Q1V147LF+fnZ+cXKIsBiBIXc9eXL87P7t+/j2WBxHNRm9s1E5Qe77mQgAQBjvLhZRhQMDcmM9JjUCr0lukBQFVsKmpaJYHC/CuyjdDwNMuaNEg7MKURYDoYAHjBpxxAxJNyjg6PWTtfXl2xNsNbtQw1rwppgRIyMEuNB+xkkQqdcIU3cziRbQnDMYW513THVpj4jlhcaJuzoz1/8WzO03TunmieMEeqEdFMbMUTIOS2op68ubn84ovPSFbwwvoOLXQxc2oEzCViQpLAYZxDwW8LHI8vr6//6yd/9+zp9z//0w8ZXHvTPezItxXtH/gJZvRHSHSDCLo5ODZMuX7lNx5Ko2MBbSmc4gnR22+ioHgZX1VBKWFozNjXEIjKsVZfDCYtlW0XLoQUOJCiOPJ4GsNygw2fPvfHGQE4OjpCJOqqnJKKQ7a4QCH2N7Xar2GqIJCd/BM7jBu2Xl6brE40MJbdvfprnLkAg05alVzOUkPjAqqBSE00+ynopZusKYTMtuWDsMNAMCB/GVXMZshhL7+H6rMyyMHO7uzZiydfP/7wg5+98/Y7PKxkju5ThzOBv0R2cXEBT/iiBlhIByV+P5QTKsA7tug1ziwYjmNPB4sw8qpxOtkjexiPwZUsUSJHgzNRvOE6D/iIAhHCnLT54sWL09N7stiskQcUfqgR3zx+/Pi9d9/jwhzzAasvGWUA+RudbUbBEC4ikAj02BkLwZ9vhFyP5qYXrMsocRkrwGB4eXmFJKygct3eCzmoy8sEj+UyBLwejPbGOdMsWCOmAeZpCVMABYCLK179NObiVy8Zx2eKoaxEGRGPt9er43snQ34RlTHnIJjRjQbECA9FIRQKAI+ZOKEQpKzHcQO7abJBkpgE0Rk91bUWYoDDJDapMARIr2hc2ymYizyjMEEv79EOL9I82RXLMscxy3EL7ODw8P79B+x/1HK1OT0+/fGP3mL8AUPAIiQC6Eu00kDFnIiLrmXf8KQKI1rZBe37m7OuHO3n/623frz+6S+ef/f07PJLl/1QIVKiSDIL0oPIusYFJUjRVFSbNz50HcdIC8VlF8ZmstTiele5BmD37MDe8eFss5yt5j55AyKqLOaMGTgyHNkDohcSswAiaqBHLF+cX+b3UNz06CJEUff0I5xrJSSRJS9jT/sCan7QjxGNCpMJy0pcJhF3IJLCfijGaLy+vOJnAPG3TIkM2Qz5IV42X5fPrpjQTg6PydXsSL2XUCFfjqwYiHDg4tAcrVEgYipg4KoVRLtehEBdhtjh4REiuunNT6qyxRE/QhehjCGMqT1Qoy8Q0yvlORGCE55Vt5vVPwjmSnHxGZdTDvk54iw/EIhGlGVlTSxX3pBRNlmih5nWHgyIyun+HmMz9EwyfLpMdOPBGFNdoqesH8+RVgxTqOhNRpsf4nACZZqRifUIIE1mKdb9eACznJ2dn5ye7+0fAABheBEn7IT3DvdIF9CDCyjIBREmSNaHbKYQkta4tSynQYC0OAcgqamlItxgcRN4sP/Z+Rm5j6SvAhgs+StR7IKvVCJS6YaltoS9gWaLJOUROEnayzEccySXhIx05Lz+9PefPbz36IOf/oQ9swKtVofjQyyIpZjuikKhO8A7pwLGCpg1IoZAZwDIFZOpiQjZDI1w7wVAEFoBxq80UqBA2JLLM6koKHRstJi4Wew/fvIEFlDC7kzEXH/A6OQk0AFC0znL78WSOCCX0QgFkhFfFYQYKp1Lrdo4FinZqSdEGQHe9eTAmwU7Pf3+6ZdffMGsgm0SRU4Q+FCVpOEo9N0YwjVsWUFFMV3k/By3IJlYAYSsrP3XDR5F4k/bUzAoDv7yyy9Pj08e3L9/enSM6dja8FPU5XjGB9+k6XixyIOCdUi+rGGyybQL6rzMvsnFmlADIbU7A6VLoABZ6gPAuosIwJ64pO+FLAtlWJBFCP/D41N+xp4P7WNZxgEj7CaXdUE/Ozs7ue/MDEHWvrAWC6ENar+ID75IloBsMRoTKL+FEQBwQsWNOIQo33333d///d+TDN16anbaNL19DSSeJ8CMRrRqFqGzMijdQKI1LBKGImJvCOiWmv2AjgRpk8o33zxZzJbvvfPOL//sz4xmcSgGqdTwvI9n6Tbo0gU2hkZVmJhSaIEWRk+hElVDozGSe7UDFBldzkICKZ0xMm4AqEBTHfZ9cz9XRF3Aleufg6NDVqIEKJDIpktyhRyhEEZgtMkxFesyVcBIlANdFKBdq0eFMjTobscZUFAoP9ICgOYzvNW9UNRbyVuRnC8OFgUw9DwVzI0eUQEpqcWgQjlJNihJXV9dsrhWCBc/PhNOYSakD+HNvJqCVxnSccOjWqQDcMu4XKthUgULGKWJOI6LFIVJkNYp5qMFFNCdZgPM7U6WRSQleHC1oSYhs7Fyy5f9JNZn60vL6ekpCzCSZDjCVIkhrjzN0KI0eeKYXhKHCKsguJK5c++5umIgSGhEChJScqGKFoIshKsVd+CvSMUhE4AwCcVC1li99ppd4CAglSrJxIbTk/snx8eP7t9760c/cg50t7wYuaF1IxY5FKVIoA+2hZLpGirYMewgZCKk2V2LgtCgOCnOu/Gerg6eIGwO1u7gsLWSOL5clc5vruFG1JPNufZGKqRg98OLY8YjqyAcASg7+dMH91mD0otUuV8ZogjBRSS++LbjDrDsU7AR8A6p/T1TUC67aNrq9o3/krrecqRZc7iiEzaJXFDt4hHho0IZI43KkpWZvUUdEAqpxC7mGHBGXFP72c9+9tOf/ISbUkfHxwDmIeQBse3eryuQYrfl1aYih7lSFALjZq8nWf5jaNt1koy58Y0ABmZmXbsSrYC7ITS4Kew8vCTAwodOZmrmXryB3R/uP4J5sidzH9c+Fww7qNOFKYkVfIB4ZTbAMFRiVTPJKOpGrvCBEycpLG/cUGR4ARopOnPnXMsmVCOiCrfBoQET/uiC/JmaW0oBvo39mACi2AyAmEILSbkElMqINS+3dBjUJ6enyEaagCuZBHOwHoQlGiKtI4PSVNDGhn8MDJHycDHZ5Y5Z2pJL4Q0EgMn4GibMYGg2sLgE4pR+Q8yLHH608eDwYDLdoxtk1srMAsiT0Ys0Ph3EG27giIS4Xy5RuWTjFCLNxHKhKIlx5Pq/DANKBUF16sGS3MABnrfAx/w1GdgsVh2R3iFAFyowSgMfkGJkgzpzhZmFgVB4DbrBWK9//+mnX3/ztTSAqtsPC3eVJAcUkwU9KdR0XxyBVu6WrXPQNUCiNoDU75QY3LZMh8IrfhtPRmTBk/0P9g/d+ProwBwhqZ2dn5ExCIjZ9TUrHzZuLv90mL9Ix8/01lW5xpe3XRkaYcWuAl+SIHJS2IIjBS9U77rLOTRFsYxdmJXpu7Hq0tQEV5EDJnTKxD2drhFQLBl/mkLYZeH85B4kCvvr2c2nn306m12fnh4/uncP+TFO/O9ilEKdCEPcdLWYCH2X/LRDh2OCRsti4nIJ8CnA0hSgnAMceK4S2kz8KnaGXYJ1zV2K2XKeXJ/9UPQG7OaGj5xKrKf74vmZK6OjI/hGVP2rwhQAfSUretaKturE6qMBsAZRfSUidQmFHNgI2ZPRXwEtyDpmbtNMfaOjjxQ8ab/JIFIGCTAh6EgkuEi43zx+/Dd/8zfcaSq6INIIHcAQoeBVSotZeOMEo4DMpOrwV057QVHvlCylyiVBDEEgUQYU4tc7+2FR8PHyhp2HgocfBEsdZEVBYkL2NHo9bsqkxUzACKCFUylTIgIHGuMBM17a7FSJko0hznNGmCSR0KLbJ+HkzXoCKScEGBYjYk2KLHVKPQUIxYaELWDhJaP6k49iaCNzfkyDODQxaiopFyWFZCzx6NdmzaNO0ONCDtesuSzHoQQtapWO0L+LFDmiFdbhN+txgtftkr5LOHBdNJDxMFZsoaq8KkDJ9C63RuwDMByOZE5B98z/zdCza7a7iO9khFyMiSO/SM0pBA9x+efe6Qkz1pEP7GheLg1yxEQ+7VbTTALCEa/mSlvCI5tOwF0sC8DxmpggeWFFjC8ObV5q1heciGTiKzPCEr/EpuZzFzQaVypOA0hBXb0TBZzYQnHF682aeim2AI6BxfKN19+Y+oQB8YIh/Eo47EIBDebdchuZkERR9R0XwbmOdHiIMjwtxPMBXCTOUFA9VUtEqrdIEUbduevqF0rSQgX4DCBYGMFe92EDxo4AcfMAOmMxkg72D/jNXQkxl/EI2uHBPtsA7tWQhVgIGSJufbWC8Bq1zUlapSJO88UYWpDbHsZuEVeYVuyKqSsBpNU2CnUoeBAxHvA0ymFwvVz9jhmB6YQKgkVw/ZdIoAvxNGArWJzbrZcXF4ePuEArGk6hj/tQGOLy8pojSRYOvWfLp8DiJI7kE2yJ4bwjFjHLE3QRxYQAlqeO9nxAjVWW7fGfwvGEB3mM66t7B9z/XVxeHx8dcZGHaIcvVsZDFOrIxiWT1Xr/2fPnyHOK7/amrJiZBnhUwu/TT4ELw0CvMx7YWSQcYhGtgvJQ5LEtx2d8QFfXG9m9IknYNdvaVd0qQImPQTXudWGiH0snskUtQ8f+bINrqNSuTS85RLhozlBjv5+Bwu2D+fz3v/s990O1vg/qzGBJWGFWM6DZhUyJQJ2cEm8O1DZugb1Dgiljz2Q+kZwbHDQp4GAf/ln/QBmr0UUmOj05gRXop6cnvDEJQ9wLTdmOYUho4GZyPZPO6ckRcjBOmXuQ8P7JKfEfeG6HYD4LUoILT6RyY6kQXqqjAIG9aGKA+XvCYMbmdlQ/BtIu5j3lDUA69VaK5AOPRcSGpD6oemspRhlDoVuQQRCjsJLT2AyaLnjU7uzm0WugYwhTB1k5dwR5VA1xFmTYMqLcdIPHcMfKVLGslqPuM6mDxcblUxkfUspXEQUDBgF93o/0BsbBMTvboc8XTbz8R1xDldsA2A4uEGeix9bQAgz3wBSHkakSwj7GQnF88Rg9zw8mTKAPn9FgzGU8x20SPlLBFEkySNh38n1BxFBM0QdWQWBLHxiTmLryypmZrGwvF1r952WhSqRqZo0Cb7MvIvtic2gekpMDrnNeUEWPGV1xP3/x4uz8/P6DBw4nTBS1GDC5xZTpqtk81gQTuJRKvBUu+ABOLOSN3IiPOfAlSmFExgoHLFKq1SoImWm/urkhCZHQr2Zzxgc3AoCqMbSa3Rwc8oT2hAc7uCVAeuQpg4cPHkCfNT1s8D07Z+CzTKCZNthSSDV+qtkIKM2TNHiCnEZGgEaJ0axQuEL74N49ZqMLEutoushHuogZNqZMxs6g5RiNiArBwlK804c3rTi+6KEZsYy8OIC3IPlkGZYCuHMeqcxA4EYTV3f3Dw+QOn6HEqLpugD7Bv04GLtDg67EMlagRBdUIEq6gc1ZUINFvyy1qU6wjRDJXWvZ5FYMUY6rEJTTmxsnHvPMwd7YRxXyQ+CT6dHBIfM0XNgWcwmL60V8eB8sooSJBJbQjLmpSsc5H0vJDYtpKphVi08kunE1A9hP82uPHn78m9/sT8bfXlyeXc0+//T33AZ+7c3XKTjzybfffv7FlzwikT/ik4HmEZXVun6sINQZlQfkjimPEBNHI271ogATD7v4WMWDPHUDnDXrG2+8kqd00AAADZVJREFU8etf/4oLEtwiJvjxaGJFcVHJZJo7HgAXPN2IQTBiDn2jrVDGd3iAEptoTdujNl4jwyin5z4S4dLOS3KutfjnlgtcTD4KRRwJCM0aB3GmNoVz5hbXo5yCiiIEFpDgwo7JBwWoMNFhdZyjsBa1pnDO5St/xIfcwVn6PLALP3v2jIuTJK+Dvc3777335huP3vjxW1yxIUW45CIjr9bcs1BVrsWrmAFnhEAtUc+4ZgG3P5784sMP3T0y4+0ffvHlF0iOJc4uzg2RCIToplaIDIfvvvvu/fv3MBw2kholUaqQKKCarna0dY5AappkW2AlDifecgmPt2IhYhTEQDQRsFzCYWWAJSBk1PFcAZR9GItHRZl+WNrqbhBjOy1I8jk5Or5/754UyG55Vgx48Mk0VDjiSDhqShRCKU996Jjox8HNxBkBLJXQhIv+pCHVYUDCA5V5UTvcPzg5OuI20Lvvv8b7vdMjZveb2ZxHWB7eO/31R7/ksYDPv/zqu6dPD7gScnTMc5/oxj25XL9cnxwd/uqjj0hwPFLwk/feJwvNeIpkM7i6OCfD3z89ZXWNI7EKIp6cnNy7d4+15vnlxbOn3/n06ZiH42q7jHkNF4zqShz4pDXFVOyBN415cAz9sQdXLHK1Dls73IIqC70VV4IEqAbyURytLp0Euv51sWbgD73PDKggCQIoIOTl5QULHi7GITMrXR5fxmfoy714nZewzijS1fBtoUDaztiQo7nUQoV7zP50IA6IIps333idRZjDVoANFjxhb7nnLuPo6NA49FItrAdvv/XWkyff7o0m//jDDz9Zrx89es1V8PX125T33kWw337yyaNHj9750ZusRVDWcOJBGhfmhN8KS//q1x89ffbs008/JW8QZ+/9yU9+/Pbbh8WFdSfLcz8Cxtd5VcQoEbEZeyqINqtAyTr6ejHHagWq1qhOiLqI03ydAzjRiyrraDPhiAJVrOF7u7CKrfhsFQwuLq8yGUCSe/TaGl2YlpF5/zBXnh1MNEOJoe44gIVcTH4ZizzKDx822owfnnPmnipDIQVX4Da2GGBN3vrRm++98aOH77/PY3eg0oRzGJDwI6z4Whgp+5gs3/+NZFwkmbz+6OH5+SXPGX74wQdkgsfffst0dnx49Nq9+ywEjvf22Exxf9q8xBMciSkTIDe2lkuebTo+2D9++633f/wWLFjwsHb3QW82Nocupdl9wYdKlxeRKAHlPVrvZ6F3jJhfYRyNb5ZzsjNdOebGIU5KODNKcAPUkpN0m75zj6JfMBYN/AvuLGPMknpyBXTAuv7i8hKG6MxMZlcrI79uL1cAYYr5HQF4SetLLS7P/SAI4gDyvA5AP+yhbyzu/NdLpiHG3F/+k794dHKf+5sgC4gDeNDXiWHF/KnABh9hYjozYrARt+KOyYb3zQMjn1r9hptKWnw9He299/bbeI44QypE3Jt4CwWTISbU+HARmz+ChmjCy/ePTxibXBbg8hO32HNfu0JSsTMG8nwDbFURelrNRW0kwcE0aIiEPjVYKCvrcRCS8YEHDwmqgpCYTXWSNDRZVMRwUkcmaQ7JQiQXxpZPPOSaBLEPjCOC1UQerYAgfLk0DTs8bbh5q44SFVbDJR9MVBC2JQIY1DEyMBBlvYQXWPTycBafaOBr+kc3fsLRryQZL9iEkToGe8BdzghjHnxng8K1AL6mwod38qgoDPmiWx7jWQxX13zOibXd3oSrG8wL5EizLdocTDZzmWmPyfiau8188xG7c0a7xlRqQ5Q7sWMdA38XpF4YUyVDqugYHho+L3QkfFze0M/wjhc8oDp60om/jLSqWNUrkNCLHP0Ge30aerKIG7jV5ThIUHNFekz6vby5CsshPZfzmzEfCJvwGNLghm3eanh2eTOLFMyczi/DAbi4hGwzW80IzcVscXh4fPTa/evFxfvvPFAHljmD1ZOrx989PV+/mE2uz88PBuvF9Dhui9TI51e2ISfGmjG+Rpv9k/WES5R8XpUoN0yMH0yCHpODIdfPpoMZn2blTi6eJrG57MK0FYpsYdl0Y2u/wJzfaUVbAt7IGyy4ISQUQU0zbPGaNsIi6hV54wHE9oSEWmsXKJgQzd0+Js6JsUnayuVAEkeMGzH1Hx04Tntz1D1JB3jLlSLyVLt8DYsp27QNUTdd7a1YZbD4RSY2Rmx9z56/qLmBS9DfPvnmyZNvjo65GHo6yvPrrO5o13+EEnkRWXmiDqW+Hs9W1x//yXuafzDggxef/O3fnr2Y7c+4z+nHLsi7PpyLUnTz7MecK4I+PEjycCbhSacln1I1SMwfrDswh8oRG6QDxg77AEZb0NE2n+RI0mQ37SLAIFYzhqGzP6uvlvL4+Cu20ZbOmo4SDEThiAmrotXE97oRKQAm4EORgPbThH7CXV46EOc72A1tsSGbLFQUbAyhkNLWEMziJ+2qBLgf98i9MJ1K8uFRbR4Sv7me4Xs+RIWzZ4vry2smiCsgCfvnZ8PxE3e12B1EBU1yI+p8kMPkul5egz3jG3NVCTkWq4vvzwbrKVbnGXY3SBnsIAaAOzuagGBk785vbLi5Yl52N8Onjnhi1TmmRhyT2XLGszN80mwz4/baauKVZugZv8oSZxAHZpnNbMBdPde7pnAcgwONRH2jABEC3NguH0CWjy4pWpwVCLRc0jAgiDQu2uS5XbmiS6Ul+RraOsNCFvSb3QC3PS/yKfHFB3Vsi/OYGEmVcWMeGV+u+F4Lkgm9zhqEmZd6lteLG33ipdOxyQCO7oiiCCoZFnLl458MsAmLA9MBgJBoBQCEgwK3drgWFAXp4uIbO1UrPug44m4rcwBbRvbRPDo/9cFmFhl8FGHqCN7sjQ/wroN4eT1cXo9WM1bOI/YcWNjrSHozemForvuZmwfzzZT5aMYYU0gAnBm1W8I9G3bbtR5vrlx5w0PNlDEom2SnLydGPlC3uOYz+3giPqAdNQlSzErIWSIBzJc+3ApdG/iHJr7EFfn6CfqVB6PON34KDMcEUsEhrrkcnAirqK4OnOR5Rt5QYcxB0wohkPChh7UJkeqwVhnzpKwSWujMOo8kSc7BOZN9Ri1rODYvPietRXgSYH7Dh1cJVggw4Q7XTgQRSo2wCl9DikbqQUDzoX2mGmIG1fEGQyNaA+iKw8fXk4OY92cX+Gl4fnHJdC25LhgxZWLCx8rrRc+1VswpiLXR4jlaAhIZzC04mPS55sP21LE7rACHu7kixqeFaMAYBgD3A7QybbGWQZL8Uz4yU7GKWPP4o8vZhI4WdXmst0x3KW76MjtV0kMFwGhU0WQ8yeumwYoZD0RMxAoMo89v+KIe3aQbCX8GFp8/9HsdEFMevOf6yOAnv/lo9uO3Hr3+gNUO13bNjBEB0vCDMWZFQbad0IL2zx+99vA3f84n7t585x0Wo8oKLSmaqRFOluav1UcPvGXx4M3X8WmZKGmBgGNnqIctuloL3PdyTYILYglbTuMzLl34OSdXHY4PzGQ7MDggjXwygTMtgQXz0mECp9Cu5GAlQqhwiry0m43RN93UlCPH4kU12kmKHv4p6picSr2aRCf4gWJKifWgyrX0f/rxX9jBp+MJ9wWfAuaxOC6N8ZkIVp7cg5oYTeSev/yX/0w4Jz3HpqI6/IpsxzYAxe8DILa8NV4KbaJ0p7b9crcj9f6wC1aNjV8P8f9HhfUDl6b1gR4nn0+uhpv57Iocgx95HBJD8CqDOnqiNqH4soEKkv6CoUKou54M8Mvw1d6B8W4psJ7ULlY58I4b7pwWkf+Xjt7gwVKmd0c3G9i//uu/4wNhi+Hkx7/8L6+/uCAzMXlkdck3pzKGM44dl7Ezg8qB6lB0UJfqGZBVFTBGcvhlaNvem43eDOPW1Ld3nlAo4EPXCHG7erukq/Gtng6ib8yoDQ2llxUgLhdSemE571Fa1+2WorMrPWCgOKV0mLFHJ0FR8Wg3MEzXTMSsQ6lz1Zvop8LN4U/+4R8ul9z05xe4h8N/9S/+OWq6AuIzx94JYjHDl/44eXE9gauKLBpcb3PHLWmUoeKHZLFzZ19MqlOKLwsj06IiuGKPLD0greZhxIhhFTPCi6/rckzGh2Q2HoLQHHr6LqldyCpUvKISCJChxiHEql8HGAkNIr1KG8hUFMRzCutJ7OUk0BrSmrks3TnlQGCyrbOSENQOpUUAemx2QCy+WTVyKZqpfJEvQWKOrx/Um2ftRIaZXCy5gMPFiAWLGp7sYjmA/VytMW/wAXDEYe+JF/KgCxOaKxbzPHEQtnJVZQVX2+jM5J/z0pX2+M5+1XOyN4Yia7DKBkXPDu3sxj4DQgzdJjy7tVAJ11Kbc+nKvo2+IkxrJyC4ufYroQDzbp9YOwbnVOpSoqtghd+1r2eGT/JBKGD+iouSUCn4Yw+2cp/PyorNvs7IIGC69oPzSSBw4IrB5Hoy5j4/ywq2UKyNXNXmOh0rkxtWm44EvzZrggc0gtZHgFzaajJmKEAV0/MlWlkjRhOUCYYq2AnbSKoGzkO98iokUTqo8DLFNWuz5AOyQkKx6UT7gBXd4gEMgFLIkjdd2wMdRHcVoGI8AI1cqIsntuhdzmv2pdkVF28N2zfwKiEHJRSQKnZxlyElgFgj870RtSGNYmJGtVwngaVPn23W/wOQI1eh7IDfTgAAAABJRU5ErkJggg=="), + new Integration("Atmospheric Height Fog", Assets.AtmosphericHeightFog, false, true, "8db8edf9bba0e9d48998019ca6c2f9ff", "https://assetstore.unity.com/packages/slug/143825", + "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"), + new Integration("Enviro 3 - Sky & Weather", Assets.Enviro3, true, true, "8db9bd7b531f93d46ae2cb21180a00a8", "https://assetstore.unity.com/packages/slug/236601", + "iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAgAElEQVR4Ae29abBl13Xfd+f73n3zPL/ufj28HoAmAJIYCIIAAdAskoljilJJZadSsWU5Slyxq1RxXK6UrI/y9yRl5aO+SVFsJxZNkZSIiZgBAt0N9ICe+83zPN05v/9a+5x3XwM0pVTlm3bfPmefPay9pr322sM5L1mr1xP8CLok+Rff9aD0aiKZUtbfhr8xB4yx4mEtkUwam5OEumLiZzKZyMD+FHdJgUKJWq2eSqd42tndXVtZOdjfr1cqNYqmM3+d1oH0K4OLOy4WIRQn/OciRwoD6Je0F1QnQKJcxIj/HGzlJaVqf91gfPylheGpeJtKFQqFrq7ulpYWgNdq8JKMOoQQ4fGQrUpKJqvl8uLiytTM9KdXr73x+hvTDx5UypVUKllDPL8q0GSS7vKrQj2Rqn+OTleKRn7+Kp6F/KO8/lVt//+W7wxtBF+tVZOpZCadOX78+De+8fwjFy6Mjo729vbmcjlXoyC/cq1WqVbqWKJKleu1T6/+zj/+nTOTZ/sHh3JNLYkEGsEv3Qj6b+N/Iw7kmpoHBobOnrvwT/6737169Sp8r1aQThXNrlVryVK1lk7CY2nSe++8/S//53/51jvvIpJEKtvc2pZOZVFr2at66eFWXQUPbY4KJZKfU9zPJZjpc2CHlVXXQkhq7AtRw1bi8+DilAZocVqo6yNbBMjvX9AE+McVjhZufHoYeADXWERxLHsS25GA1VtbW4laNZ3JPPP0U//m3/zhs88+KzMka5FMlmq1FOpfq926ceOf/tP/4e133ilWa02F1q6+/nOPXGwqtFXKNbBKfl4AUYPe+9StksmaDddGmifLEBIiuhRPJWopM98yeZEFwVzKglmwZMpJK44E2XL9Iwh/jx9COCyrzCOBdr7AuD8EXu02JHnUrw+BA7bSo9IiBE4fDcBKpdP5XG5/d+f9999bnJ/b293NplNPP/3kH/3bfzs5edpbS2KCMMnLiwt/8Pu//8d//MelarWlrf3cxS+NTZwutHYkU1mGYNQ6lazE8COSLUGNGxulZKlaMgwqDv0QxZgjyWQ6UU0ZF42GqIj1QmrJI1Bli3gLDaSJ72KG3U0CR1hjEEMRKxTjnJIADgHRSANGlLIsqVBcI0SESpR9JM/rKzuEQ4hRuXQahyZdrpQ21lZv3/zs0kcfbm9uplPJ3/nH/+hf/8HvD/YPgHxGHSWZmJ6Zee2Nnx9Uys2FtrOPPDpxejJbaCtX4XuiKg8qVdMwIM47plETzityHPNApIGM0rwoSd6/4VoyXY0sFfC9KvVrxnRaAyU4YaquzNguiBG04JTjSJgAqnqGEOHlOTUDTr7jSibZ8vAI3pjFvEZDkqGosiHbSTLQVg08PImGAOaNKc2DUFDlkA7r6tUadXCEMgODw4XmZpzRD99/f29n47XXX/9H0/9wcHAQTDOA2tvbu3zlyvrmVjKZ7e4dGB47kW1qLaL5DAC1iCrDN6KJJgOe3MVDdRKYU0/XK4amsi0dhIwePQTGYKb42YPxRYQF/aQP8YAkKCtXzatGjUVNettUE06w13kGpsjwkAXODi9EMXhhKHlhxQVWoEixuCyg6BBgJXpJ4WKllRphYgWU75ncvDApXgbsadA0CY1nrK13dvWcPXf+/v37U7s7a2sbn3z66fnz5wotLTJdqysrr7/++sbGZqFV6l9o6yhWwSIDZZoBAKBWJa7HiFwjWohJEUmXnKxRBpbakZ8svn51E08tbdoj1kX0iGoh7kGEO+tEuYUo64vuSC5FN2esS6UVBVn1WsGWQgi2gl8j9jUCsuyG9snzypYh8yCWKgCbR9pQM55gAIk2AvS4JVLYeGiCrVSqHZ1djz/+RGtr28bmxhuv/3xlZY2BTib74GB/amqqVCrmmtpwPVPZprLmx4ILd80DdcZLL5UcereEZyoDClKcOqJ29tEkwayAlVUBKyz0iPsYIEAiTCm6KEsDkg2+5Ih/SrSrYg0hTlSzIEEZKmsyCSLMWqQVRAwxh3Kooyp6CFbs8RRVpV6UZSCd+6ogPBVMCw2uo+OYqMGHQor5LOUwQaoJPrl8U1d3dyab2dku3Z+a2tvfpwYCqFfKpYP9A+wkZUuVWpn5AFDFGXquaEHiQk4/QFpcsG1qJh7qv7WerEYzBiumoox+yrOplxWTpUpq1i3GRUpKEyosEjUztwoySw8Hb6iRWivkGHpzsprqtKhDxFCH67BEg00qadChiSyLSYnMllhWSPVhTfzAmtNCkKqgqITXFH38t38RyqSAJ70TG0SL3oIpNiCr+3v79AnKRk6L6KAJDYHYrhTjJHPfejXHQC52+RgWEPYmnAtiGBWNBAQiyUXBY6AJlqThzKoYMSQqGejZbiYJq2isVykVE3ERLLsf8ssyBUkArAFjniAmGYcSVTqWZRkXlGgNC4pDViSy214rZJGsVsXbQ/tjtQIulI5LCIg/SRpGkFVVO6LXGmMorslISikqwDXBqaZ6hgkAkGl6rXpAvYw5T9VTTNDSpEhyJDJRS9cSEpeIfYgrJAT6hHfjjDlgTB3RQ4BXehBYw1vKBdaeTRcRS5Tv1laaoBDAKEYBx8Bq6VEYSbkoqp83ILOmkuq8YouRbFUMYCBBfA9BFhEgSlCat0tEvoGhZDRbropZIYt4i6pMp1NrZAmCoKG2PHgxnANQZJyyQVTwpeu2LhR6gCodDYJEYzEyUS7NONAoQXdr2xFrTD4SjyuKZ94lpac2zttoIWyD1jkFAftGKCTJfoCXhcYs4g8hFvWnhwXwUC1DQRbAQkSdiURCUZPiaohLAIfBWzSOkkiW88uTVdWQ8nR7MEiH9SMT5JoX0lVPrelREWDys8fGmh531lPMI6HKFxUXqBDEPKI2hlj3gUQZbVEqi4lqYG4jNaf3ej3Vkh6FthxIAGs3UmJMiBj3jCWqZ6wxi2UPgdERkECkgVFrwtU0kIi0wmEZHnEZe9KFMqpPd7FG4gKqJ844JCsX88CrRQKIQUnOgNIl+m+RxgKNMExCh5m/NAYeh3miJjw53axM0CHVpBYpajKYIGF+tHPfrwYkqklpkzojbZxkPUqQA1sFUZmUcGHTnFXiQu24XkDGE+KMhsdQ1m8PVfRHWqQVoAZYhh4P5KpR0wyLxvkhIhPkcjua46IU+kI2ymtsuzEe5dvdGotT4mIGxBFEJRxkAIwVZ/CgSXEzcEtPpCOQtLHTjFOMiAjzJvCyDNe4QUXiXE+lrEuCiPTRr0b40ZLBK1NpszvkKjwML7SlnIa2HKGYWTx6o9zA0OCEbhfq2+2LxwBjAxXtJ3yPoOANN7YdIMaMbWzB4qLhMJFohIozj/bkkBqSFDOSJQsMh42lZqAQgWgJVDlY1y+x8lAKMXqHDbKebu2bIRIiwSKZJIxKB4d9C407xwJS/mAExA15K/GViGc5mZYOO0Soo2HIh8xGxCQA8hx98qlJMFqpH+GppEMKhb8FbmpCj5Sw/x5rbCEUFYcEWuWCoBQ3CLqqAYG1Arrx34yvxGADhLwdpRoYh6qrYFgt3SUJB2tPuvhjxJ1IfNa0l/eSsiABeqil1sGI5olYq14yvjpkZRr3ucZZRBxXWR8ZJv6hUJraHC0VzQPimgbNIAbKAlZxgcZIDEuYW/Bcoh4JZIuxKuCJfvVHT4qyXDICRhnQDjxpqChIAG3gssEWyACwofDRlLigyqqCBcoEJIMWShGsojqDF8Rhd1DUiCNxdU95KJ1c88Fcp4AordP1sGUH8DkBhDYCVKumko3Yh5pxkwFNS44TvZAwj8gghSdPUNxA6rEhxA/GYemehgHH3ooFZlFbPUrBb8BplArpDtnAe5+IYVutwGXFG3CIgR1yKkawoZhqeYhaEfAjDShb0EiMKgLJ7VHAXEUiLyiqKxFZgMIoTaVszUuRhhCzIE4L3DGUvVXnMgXCo2dFFR5K9AZjsCYDTYVwYNRzrZZXadSHQKUViOtSjHiEiO7MO73ZCMlDvkTo+EAiaRFI/GXXOCuu6ClqxWJRenCzPVl5SF1oqFR0/VwPsNZD06BgBWULwmhgVf3ihYg3kt2Y1ajjjcRYGddKc7F5jmE1RGmRqSzTcvCW+XeFMpTiVsR9YyyRWNieC15Sp5jQKDVuKo7ERQK5EQ5eIC7WGCEeUw1gHunrUQsxNWAmvBrgU/CwmKc/7AVRQKVEjce0pmWxGP4XRwRa/0PzgnG0YGNCoxo0ph+pYaNfTOcRDTAD4lluihxIDCpEuBkWXCUqC55CNI44IzzTWHZIwtFiKkKtRsI+Fzei4QQl0Vo9WTQymCp/iIsAmhfkkyA9atsLbJGn0ai5HcKtc8JCuYSgiB416FQwQQe4ehCOMcUG0eqGi2Gl0ioWscbJilpRSQGI8CbKUpSJTclezWpH5LCNwyxa0wmCpnWau5EoCDacBoS8BW/Z+o4Ge7C11lQ1QpdU0tWWBXtQIQUoJGpPoQxAImi0aoV086gzRFIJjpxAiMEqhwCY/bBsJOqYDxEybNqyoMgmJPsJkg2kaUfFkDEmqCq0WYKnay3PUh2q2W+lBGTU0mFokA5a7GVcnW3QDrWcDC9guax1g6WSqcItxI0RrIGCTxXNUTZny5KcRYAWivIMOT4P8LZU3YKjZFFakMmSsBy+YU6WlwklYVykE4cQAidVxOobCqqo9dCQqhwJzPAzybn8TAAmTSUCnFWyiqm9hOWY2HzUJAGGYrpQdBiCbgHw1pguMdIeiR9D0V9+U3tHcnlSexFMIR/TT6KNcWAjR4nzkyz5VipFcKxWSpVqiXX05uYCq/GiCgmgVl8QAh226gE8WoibC4Q04g8oPYZSUQHqOPWmE8SjRxgV4FuK0Hf4hogaIvgYEBXVZKhar5bZS8um0+xDsoKKyLV0zWZXZC6opk7rPcswjuFGbUfIRZipSkM8xox0pyrQxnMc5H/GwaNcFXGyRE2EhHhchf/F7Z3NleWlar2cy2Y5DTg6ehxSctmM9sctgIZQFz6eEK4mA9EVZ0UFQkVPt7qqCRzDRvJw0vxR6RaQewBthVUl8jmUHrWOAFx91QwbtoVcJpOqV+pl9mHQG3UaZKCqLiqSYoTiBgwhQY1DBD5qO86wloPZ8USwJYIKcDsihgZLpTwr5oUpDxKKq6qhUa9z/GZ7a31m6n57W8u3XnqhVC698urrlBs/NiEjYR1XFaXFutpGn+oTAGVU6eJNxA3FEStol+DxKMcxCFVixlgpxzeuJQoEPE4QKjw4W0NyS1P+0fOTuebCg+nZcq2U1L48mgN8N85C3YJqQog8E6JKVo6iuujBSnqax5Uc1X2YKDJ8vdPqejEr23BBb60NwY8tNVFpCUdaq5W9vd3lhYWdzY3/8rvf+t53/g7GtFgsvfX2e/39QxwzcE4ZjgaAS0SaovwijI2pwgEsY0QtU02DhTKMljhXhS3Va3G10JivClbGIFm2USLNkzp4jVwuc+b0iVMnxgtNWWxORp4URxy0n2OM9VKCpCGFVAOJuyH5hAAi+lmIJBPqicyI0giUAWuoHmoCLOBEAQL8oS54hh/jm0MjgzNLyYNSaXd3d3VlOZfLnpo4gd+WyWTOnj1L5e2dHRoL2BmsCJoDoQMJaEDI4YrAgInVDZRSG2N8iG3Ajc51mOht2TWADDdn/9E0nqwHqDFhgCXNpZP9/T2nThybmV/c3D1ghz4rN7ScTmaRE9LIpCGYwkYKNyJijhDnn82YAvZOgZcL9EWSpi3SuXrPIhIHT+cRYtHijBZigEuUswIotQLuDSdeOfZNqXo6ze52uVItlit7xWI+V6Am27CJimTALk/ZjkcFdnIEuVwEVKlYLJfL2VyupZWDIE3ejVwRAwKhgvBskIU9conRlfA8hLuXpkRjNcpbFQTpvpspsIFxEyQ+AgZaoffY2EhPT/fSyvpnd+7fuTe1vbuPV6ECyUQWbmts4WCVuo6qqKIBF8saMTMMABiliTyLC1MrGZcncoR4gxzBI0e+WengYHtra2lpkVNOcBYI/QMDfX19iXQzUFVCZ45rW9vbSysrZ5PniE/NzJbKZQ6IA4IA2uXiAQPF6srS7vY2x8Q5RNPW3jk6fqy5pc3ajLlEhPKBLkf8ENuAfoxliPiNOuBj9FnMoARADjBIKtSSAKJsJeG9NTXl80353p6ekeHhkYH+azc+m51f2ucsNRuFaXbn61kNy7BM5VVXXYB/elZPkJ1Q3PDgHkL8qCFRmQoB0YYxQISTrrGVRrjT73AsS1ub67NTU1iYF557jgNld+/dvXbteml/d/DESe9GSCWXz2+urbzy6mt9/f1o+KuvvMrQUmgpCFq9ytnYzfXVqQf3mnPZrz/7tbPnzi2vrP7FT3+6srw8otNQNtURKdah1aUJ6teORhQJ9lZIBiJULg5OF4/kEgASpwSC4qIWCT3AGlMCdTSF5J6o93S0PPbIJNdbd+7fuD+7vrHJ2Qhmm2JvQIsaNqdj1dJq2+whBqYkFbUA5BA5+tiYi+QO0TXUQYNzeQcHe+urK2srS09+9SuPP/Zoc3Pz6ZPHO1pb3n777eb2ju7unlwmja9J+lq18sorr3x28zNmAJxxOnP2PEaMo/ickN3e2pydmcKe/voPvv/iN19oa2vb2Tu4duP61Oz80MhIUqf0Q4BAqVTATPokXlqKIgRjFPkWDQW5ueZ5umdFUMRQpQtInKaUIABFpXRWzvwNbX3XKtlEdai3s73tfHtv/6XLnywurWhTQShgoAHk2kw11syk/od4C9RhS3HcIodIxOmOgIneo4dXqKoUSwd7O6Xi/vbmeml/L59OFfLZbzz7zOrSwtziXFshX60Ud7c3d7Y2efEBmEtLSwij0NI6NzMNWj29/VibVUzP4uJ3vv2t5597jq3/g/299bU1bBES4lUhXHBkZv0aAEaaUBCq0mPvGUd5Z8UCnn+duEGL6Iq0NBaAErw1YDEF0shbKu5xiq5YbMo3T545lc1mf/Hx5fnFVUlaknLTQwwFoXZQE0fFdUHXSCqkWzE1cgSVCCXdo8JEMSyi2yqhC/JT67VPP73yxmv9I6Mj8BcV7upsv3HnzuJcdn1tfXN9Y6C/7ytPPDY6Ntzb2w0+a6sb0zNzCwucvV9MZLPF/V3Ec+LYMZw9xuGD4sGrP/vZnVu3T5w5A3CtW8ADNSdiYgyFgBZq7O4XYRWeraRV8jpGoSqDvAyFguqHYPWjBzcNEkBo1zN0bI0aeo2Gfgtm8B36WzKJc6dOFPcP1jc+3C/yroA4awOxIcMcTq1IcA4GCAbWn3S1DF34r1GTizA0KRpi8st5VtfTaqDJQgWJZDLZfK65paUdR/P//LN/19TUhH53dnZWq7ViubS9vsFR7x98/++dO3cW1jNO0JlZmdBYXasvLixdunLl5+++e/3uNHOFy1cuTZ49wxD95ptv/uXPXmlt7+zs6s6wUFHH0RD+Qg8chJyhEVAW0iFIPy0ElTO0Va+R1yEOLco21gjEobYGgHEPsPoUNunCcbCA9UIireWUVL3c0tR64tjY9Vt3Z+aXBcrgOhcBRhFxzTqr5YSLOOm20ToD7NTqjZm7iKSgLCSammsHQAU4o8dyJopQIfhFyyGsEm5t7+3uHWxt77a2tubzmfX19dGR4b6+ns7O9mqtsn9QyaYz1US5XCrl0pmhgb7Bb714/sLZH/3oR3/+w//0H//8P35y7RpNbW/vtHd1j44fz+byUIos04wCaplGuBjfiIhSbsowWpwuiqgQwRMbr57eeAWWYNrPgKue+PHQGEAKqsEPDdCh72ROAvDuyWuqHPet1xjrVM/gBXwFywAqWYjyyE3FFCwzPPiIDbaOhqWqtAqbEZCPqzqcoyyX+G1tbi4uzjG/RRZdXe2D/d3gU65U9vf24OAucjiQil2+fHlubu7ll19+7rlnmSDs7uwwYWopFLSCwjnLZGJ8/MRv/dbfpyP93//Pn89Mz3Z398rFGxrp7urO5wvyq5OMBWl6IUFoGYKGqFx3WWUNjU4LeV6EdKV4cJr86ikC1fBs1SKNpQUrZD0g9BIpqpRNb+jR6zmhm0xW+M9kk26Q2drduXH9+vLSEsjYNMBwjFoH8xg2oPk5ssAMRY7eoEqcFm1+42W2Eo2hhpwcRnm3ttbnZmd2trf7ervPnJlAkfH7m5uaMSxguL+/v7KyOj+/eO/O3Xv37/PICfs/+7M/++zmzY6Ojr29HeTU1tJ67uzZL138UkdnZ2n/oLW1/fvf/8Hq6ubVa9cmTkz09Q+0dnQ0NxWa801irXq/KRDclTECwYBdxO6AruUrTZjrKgIarypnoYH5PAfhhTx7JO4myHhAER0A0esczAbIg6d6kRLO4vowapnbwGsEmVTOzIm1GrHXGgtwvA3PCbRFzdrde45qUIarqmmYFRvw1tHulZXlqfu3W1sKTz35+LHxsWYZCVClO1K+ms2mW1p6hoeHHn30kd3tpy9f+QSDPj+/wLTr/Q8/ABjsM0WqvP7Gm089+dRv/Mavj4wMM6R1dnS99NJLS8srjCHofqG1Jal3KNRdUTHgCxdjaMBXIlHgkf9+VwknNIpZEU+K86T71Ij1L9TlFgq6XTYBBHDWpr1uwgVdTNAbqI8qZbRLky40N42NjS6uYYFLcliNX44gfLRRS00CRqwXVSGAC1KMnigRxuqogG26SfbV4sH+zvbm/ML81IP7Z09NfOniI61trXgsxSJZTIB50VOBDrlfrZVKJeL4Qs9/47mJiRM//cu/unbjxkBvb6HQgkEnl560sbHx05+9wirFf/vf/IPe3j6GhTOnT0+cOI4MUDIIBDUMGnxm8kkKP4J1BhOGmG7BCDOeRpJo4D6keZbRCLm6c5VoA3NFvuIRzV6SaxiEXVCwNMsLHKJQbj29gTo8yjon6jgeOBtNn93Z3i+R5IuJAgTYqEdYsxKGEhRoWCgYNpag4koOmAUbikDrrBNsb2uuND87c25y8rEL5yh5sLtLXRBgg8IVggl5FvOoFSlB3a/tk8uk/Qe/9mtNf/HjqekpbAtuEj1gbW0t39y8vLzy8zffPHli9O/+3f+KSUJTc9Pk5Jk7d+6sLC+i9kvLSwfFonlMmd6+vsGhIQZ2oNt0J6zRgqpIEBWKwCW7BxLiuPEw5j4FRbVxwAkPQBpSlB4E4EWogZJBD9LXygrvM2ZyaAX6iwRomDwc8NTmbigPMFNt0wa1Js7bzdq2rmAXQ8dyVEbyogMhYgkPJdRSDuMqy5lL87Oz2Jyzk6eYvaICIEN/dPJRCxVnSadu242oMDsX6VTVJl+4QN/59rd/9JOfoPtjY+NoD29jZbN5tGhhfub999996qknUSCmN8PDA3SPz25c5Sj2yOj4I49caC40b25s3Lp9d2N9/fyFC8zgaFb0ewjqIuZCSMxxj0BQlCIC40Q9HH0Mdc00QLyz6KgArI46oPnkdHh1BQrCKXpTKoX6dHV1rW8z5hWZW0YNKCJJiKuyeoanYNGkNad4HIQiqTibhoOe6vVi8WBrawPdb28tnDl1Ev+nXKqiDVEtwMoLQw0swvawYGO1uOTzeWSAS7R/sE98c3mFAQPuY1XoB/v7B1uba0vLiyury0NDg4xhhUIT+8f3H0w///wL/+C//vtQhCeKdbpz5/7/9e/+AxtqJ9pakTWTD9koU3jQAE8wl4usiMbIiO9gQhzcxOE4nUgcglTMIqlEQ4gpDGlinvYfjY80RRB7rTWNCnpdkua5qFyUp1JeluyjAQEqybjckEMvEFZeibWavd2d1eVlRuDJi4/mc5mDvb0sC+BJOgb9QwegQRT8eYeH/qk+in9gzgI2k5cM5+YX3v/gg5u3bmfz+fHxY0gG6C0thba21gJuTj5fqexKpqUSKkU/Bu7W1mZ/X+9Afz9S5B05Fkfped1dXTs72/T+dJqZQZXBBjjOBq6ShWjQxaPK1JOR6JkqYLniUWBLVNjSg9W1crEJakwUiw2EQbcLBySStYNSZXllGXd7a3ObV4jpEFbyYY4HwA034SGxCVMF03yeHDR0sjS/t7u9vr7a2lro7u5CDHRBuFyuVlJ4R8QkLlGJMMhiqNJBDnQ/27y+vvY+vP/wF7t7ey2tLfmm5p2dnVu3bg0MDLS3tSOx5nwOTSm0tmM83VjxXjSbZaWD8s/fePPYseOnz5yB+2ura2+9/c6tWzfPTp5l1GMJlkmD0Qaazl85Dx6cFsNfxJHoKUcizsNIBgjPch3A4fVID7D2oFDKSReUIRLjNCALmnQ+xTQBt0FTBE1UvUuKlyqg+qbYh/AFjSfhJxgOyEsbYPYUq5WDA+zP1vbWdm93J6sFLYVmPAFNR7TvoBUyNh51PK6myTke1cFBFb1GALOzM7fv3ML4PPPMM339fWyw4LVt7+7s7e0vLy/PzMwweFd547xO363t7vImKCN5ndUhTCju04MHD/63//V/P3PmDHH8pYWl5ZGx8a7uLojJsAogjmn4McK8w3o/90QjStn8ZJE8iFILSjcQRIx95CiICw3hiACimjCaXdZqqVQmhf0Mm3aBQaq9o6O9vZ0xoMRnDOzwE4oo/13K4fjKHXU09RxQEGBHSFmgg1wNZ4ZK7CwDAKtMWOc7t28vzM309vZgDZipApnvuvDyPTXobskUyzXmF6eSLBRWMFz7OxMTE/39Ayg+WkyxdDaH0ECVeTKuzvXr1xfnF1nHWNnY+uEPf9Te3jE+Pn7//gMEMzZ2jNbpDVevXkOuTN+OHTs2fvwEG23gKOQ9QIK4xhXco2hIETFxkpUJ9ZRohkQwrAQZpIlVR0MkAEunSqgFBSnsDpshNSbHOp/CMZVEqi2XOHdsIF8rzS0ul6r1Az40lMjYV5/wTXAWdYBLTQStB5xwpkXpjIgSA2GkjDn9iw+xlItb6ytLsw9Wl2b5WBTrHPSGu3fvz8zOnzo5ceHCeQZSVIHC2CFChVMzGgMype6vFrsAACAASURBVDrDY6qru5e5MXynFnYMSlPpIqMCGtTe0vTlxx49Pjby7jvv/OIXv4DXly9fQrtffvlbN27d7h0YGh4eZn6AkrH0wk4OAkC3Orq68s2tKSZ9gBK+xhKnwbRMJPBfnZ3W/OpcU7oS7aJr6BWi22iXzhl7Q0ljUuSGAikKwDX2oGqsRGALy8xWAAdvU62FptMnjnW2tQ+vri+tbd6fXWDfGFPAqgVtY7AY/TBThhnwQFAeFbXlVgsh6Qs+J0aB/sUK/ury4vSDe3vbW60tzSyo4b9jc2DK6hrbP+t3795DwakC61XZxGB4mkjQkFQSY56qaJhAThKR4cBdKKdSDLPf/vbfAf+33nqHih988MHCwhKe0+nTZ3p6exmPGcqZISMAdoZbmpub+LxMPu8sMAmoNWOqrqTbo65xRIVV5jDL4yLbCtlNcrMfHPBkz44E4IXsaoLBw9DdF6XlObAcCvdwTDs6C5zy6Bka7lpe3zg42DlYgoZqogLfYbPBVgegGSA0omUAlajN22plc2OdOdfczFRLU+7UqZNQ7oVpq7WtrX9gENdoc3MDE8Hg6XW9KxAnCCUL8NrjYroFcCAFh8fFgWl64YUX1tc32MIkZW5u9ty583g7/JjdiS1mstzn5sgBQQREIYYJRY6hX8n3iPp8NDo3FgCqOBiYIFag17EJMj9fMohMkLVHgtkKjba4GXxKCDkIvCy8xkNcY03NOAZSS7AQT9AAB68pCGz1NAGlrCm7UAzJBh9sYD376xsba6ydzU1P9XZ3DPb3Y9A39veEjc080GcmUJgjzAJMZ5CgaRFgI5NBEmFxBLYS9xRQ9keuGCUqYp0YY5977utsk1Gmq7uHvcnbt26SOzI61tSchyytrGC9NNZFiktNPYoEu9KcYRBIjNK5Gx5RMZWxBBUHJy54kHoQfto3pAn7L4BEjghAwA2A7DNzoVKJWhzsQ8lkZcAQlUmmNja2H8zNs1m/tLKm4SGZsRE1QBT0IHaiARtHi51xfPHtrY1FNP/enYG+3o62NroCTGYYhGDYTR2agDugYEYl4wKAs+iyFwA+hbkSYHQcoSrptEV1SgKTMyxccUzx91nIwu1hwgF8TlTcvPkZntKjX/oSpl/HDLCSQlYM0ABoMbtyMf0VRz2YotkTuhiS7JGqPB5exU+Tqo6S1G3XOu+9Ra1YVQlAEokDYuP7cJjhor7lwcKEFAMJMPClsyC5urZ56ZNrVz+7ub6zx2pFikQZHPx1VVRfOQzENTAE28TyRrW6j8e5uTEz/SCfzbS14LNvwTAfj1NaauPgC48VvmOEt88aXC4neuCyc5wSsJu4Pzay3pv1FJjOo0uORknkSyXnJs/yuZ7t7S0Wi1588ZuY/ldef/3SRx89+eRTLPlx6ogqNOVwnD1cQUfJMgqBNGIkOeu9mFVUUa/rJeGGHuXK6zBVW1t7V1fn7u5W1o4Jg5IXPtoDvAZriRU5oK6VFAUtfbusUl/fWL9zd+rO3QdrGzv6KGOaHRsdnxJ7JG1BPUTEWpC2qEuAT71cKbPUzPkGNlhOHD/O4g/2Ad6CE6tC2ACYZTaEA1XMuVgZTKMKKD6sdMMCSEC51ht4Ay3wIYAIQqKWi8rjJEJAf38/EQaVtdVV1lKYgj391Sd//vZbnDVimIFY2QvTaJGgIMYb90m154giZ7FKeEoUIf1IOdLrNYD39nT19fZyWJiejzBUyfDlbgII7eK1IC2YAPfroA66JKi0Csh3pGcvLq3SCdhlwtbqwx7SDFRcfLadXqugJKGsumpLlACqdFDkXNTa6opWM1PJnZ19EpEcvOaOw4s5gbmYeqqzAFE2XmNPLDGGRiUVc+APXckiBcyt3cOSUKUurK1HHVLZ2d5h2sHSUHdn18rqyrHjx9R9jc9UbOCikmJ2O0XQEkgTRoFITzGqSVQ6FPAfRPr7eo6NjUElp4d3dW7Du1oA8nAPYDSFVREBdB8RgwIRYWmsvb1TjjnLhHp3A/EgAPReZkscVi8QdAVhBD4a08wMQniVUYXNQia9THZgK8Hx1hAOR9kYjwInRXgGogNztnpmhFtU1LCNH8gl/pB4SGE8gRjSsTzM5Hd2d+hVOzu79JUmFh601QMu2BZnqkXNzijVmNwQEXs9MRBKSZ5dV6PCql2vNjc1dbS1sn7O+s3O9gYDK0QGouxmAhDPQypdxtJJcO6bdRFW+vYQBw7sM2es1unrTuJPVE8RgJgaqTRRSUHagxbg+cuwaWAvYnbaWzoZHrE2Qptx3hTTagVwZJHufCTiTOdK8MQ4Ky7m1RvTyfJALbNFjMxao0YAr7322szMHOd2N7Y2n3jiCVMgqYqxFaWSXonJnqSHIBhasVTuKu1XbhoS9NSQiHOSyna0t+LPofscikE//WflAuskALE84qPxXWaICMSAOpXEDGaesJMZZntrOpvBnYG3cTVhbBzHdBso9QVL0JOEocAJB80AqAZ8WOyDJK3w6MQIMwtqNwpWV/hRkniUrHv86GVi7scl43Rm85tb27SP/4PW84G8jy99zJEUTlBzwNQGf5lFMAUThYj7tKInu36e9Z4O9435PB0Whndd3Z2DgwPMMYv7e2FmKEOhYgpWRwIw8EoBXXiBiYQ5PAYuCLjlaIMi29pW6Ozu2JpbEq+t55GLiKwHCrg1oAv1qGaHfbxnk4gup7E/BwdFTjdzpNksOVsfWH8zc2iD6T5NOzcdKxKFn+HhPPUrxR6K8OiJXt3jaA504QKxFcyCDz7FfvGAlTtOFrHi1KYPBFOcj4RVudMKHBdPjat+VaInRayOcxEVynJYLCrAuM/EnkVDJAEngM9VEz3RcRjCGBDV4vS23H+46QSoIHxDBMx2MSfpRE9P1/lzZ3cPyqtbO6bjsvJSdyFxiIeUXglUQq3YXpAxAiYrnZ1dXay4icOsBOiD1RWGR8Yo86HUiNrkfxSY5anrkS4BYpgOM2G3hBwZK9UgwQt4ljGUY+oY4Knp6aGh4ePHT4Ap8mRew+oPR7xsN1h9K5BMS4SG0cARAS3P4ZGIX5VoZDYmqjwAapWN9bXW5vxATxfuXBkvHEoiTYoplAAkQFUSz/hin95oE7vEMfo9+s2SHJaI51q13FHInT05try4yGFx5sFmiKhvjBCvJW3Bgp3iqH9rgFc98FozTblse6Gp0ta8lKhiFjkSwjDIh9RSvISqER0EUtUUZ6pseAEYUvehUwvSlQSctZGaRP1oR4c5yzpTqKY1auFM4cNy2JNN1GqdhUL8zzyd4ta9W3TS4ydPdnb3wnQQRAPYOGN6w+o/DJXRNMaKy8JffLWYFEmM1jXkqEFPs3TRS4DpqqKFAykNX9zLJPnBtIr2gsr7B8U9Dm4Yf6QBFgk9wCH4FU4Lq2hrXuOqwMIhazWpAwQEw8AwcfabVjkE0PCOJlHAFCMPWqlVb2vjnHJnZ9vyysrw8DhHABiUJSXTXY0k6gPwT3iKz85yvCRTbLjMpJy5IUONfgzgUAirEwxRdHD0GhjQXGV5DR3M5iEly9dSb9+6M3lmkq/H44wjAKcFA0UQZ+1wsVHk1BqjLQMKLF3XOOKJjY8i3CBBANyHe10tzT1d7XwwF68Lv4MVd5jvzpiqq4IuDwsAhGxfXsCsiAnUHEQNzIg2Ud3Y3Fpd36jAHjZtUEv5mxIOTUvvYTcRq04iBFrH0+lvfLKWPP2gtrW1urW9s7y82N3TT8licY8y+vQqGozK6j2E8LcOXE+k3SKQK0bUviJIa/ZLalkaltNSGP+REd09Wa7km5tYO+F87tXr13u6e9gJKDQX2J4ENRQ/EKhbYLqhzHMIIt+CR7jCHK4Ekv0aR6Q/IWBtUyyxDA92thWaIZ4DfighBOJ4MBQhewuCQJAALCVARCU1AbZcRh3Jgcr6mChQYAzTxcSCwqL51ep0oKN5rKLRT31VqsDVOoDO7tLPoYBNxHy2a2xkiKnQ9PQCq3KMyYwKbK0w/Gs9gFVALdmVZJHk3fnwolbMXSMRYfOoFGEuFaAcgsMVEIEgrD21HANM/d6DW/enZto7u86cnuRUFrqPbkYsAB1B9f4KqeLHUS7H/CUSxykTxz1iKarrckF7OFLWqs8Ss6TAopZ6qo64mSaqXEM40gPAgdVO6oOLHAN00taF8NkRQTabg8xSucIaFl99Zc/SLIczA1aIADEZGg4bgF30BpSXNGbXWbzYXDpXPtji1FS1XJtbXNkoFTmKk81nC1yZptMJdP4lqzoeGBzB5XPBk7LINsWknfU0Td2pi7JtbG5ubm2yqbC1u9c3MDQ5eZYt4o72DnRLjITlUgYhbD3dNDBiq1HhtFhRS1edo5HGR/fkBUrFdMaGwy+cLpdCsPjL9vP+PrPOeACmLsDs5yYoIGDJwkwiABwdBtYzW+FQIqcBk3r9LbW1wXLWZi7D5CqlU+qm6qb7AaShKrXyZvRoP9QA283pro5Cc/Vgu7Rfqpaq7IMsr3LWbiu5m8Qv5CVlLJUN5Vhl+pSCZCtDCMNEoKVxl5xIlI6otbAoQgYrrpyT4LhVW0fH6VOnh8eOsfrG2RNGLlUzIymwknQjlk5+BF6NPhy3NNKNsijfHsAFWQJcByyBLJNpB7t5u4LjraBDmnwEr9pwPdIDjFScRRlbxkb2yQmlIktDtZbWZpaH4Tlzip6urmQ6PzW/sr0vu6SOQvPOB6PIeS7Gg5c4qHbRYs0XEolCc8tg/yCvXTbnW1oL812dXWub2xvbmxxrQFkYBvK2taKTMfKlxDJtiuquaQT79czkaNQZoaUFFjnKeFlyJRl72dbCvzzWfWxgcIiPwXd097a1cwhXe23OHd2EnP2MyaAX3R1lPVqioW9P0BHSjCznodHnBYFmfR03OIOlxQGr7nN6e2dvf5cRTmK3YQBCjgQTgOmFwAgPDeKc0eSUAOfuEQNGE9Wkv9MJmEd0d3UW2rpm5lcXVzZ39ksUR1xmuFk9s6Uhgx/pFjzBbplW4GhnmMe1j4yNVPe7eaOriZdEW9oYz+eXVlY3ecNFTXZRYKAfWwRcqYyGaI42y4ngbTp8GIwJp1RpFzeNXnWAj0GBYhHXgKn16OjoIFs8ffI1s+h8cyt/iIXtHQTmI6gY7ZZHfAxBtCtwFX8UgZsSk9LtCiKyrFZG5oG4AqOIyqqiEtk0TNb1sQHOTO7sosGsP8J3yjQMv14zXCUAeOQAIRibw3oZazZ4TviuhlYS02mum57YvqhuH3CkknVdaooq626GCOg7ZrGYRRMBzIVnnfWAreXVls5W3q3rYRTBIvHD5pUqlemZGTw2OgHrt2dOnmRPjHNB+G8sISwuLd29/wA4WFI0//SpU0348Fn2bSpbe/vY+rsPHmB22Pli0+Oxi4+yoc/xwoVFxqoS3pVUXvprHBT3wwAgzCzABFk5+RHCV4/WS4g4rxuKedTIPKxrtepVFE30FNAPTsGoQ2vRDGuks0zp1rYWXsdhjLXmqMLdxgBrVcghK50OZ43e7Bl4Yzfw21paWvNNBblH2RyvHq6trS8uLTMa44YaGJDXPNu4DjDTB2jgWfxHT8FU9MNQXvNjCOnr7irQBbIcXmtlu4rZ9/T0FGv0nd1dxb29qdlZ/ujT8PAgfgPdAmtO38CScnIWHUf25fLpM6dPInhsK8+8H7C6sjo0PIQ1W+GIxcz0E49dHBkZBVtcIKaWpgAilwh0go3HnZcWV9R4LVw9kO5ZfiXxoYjRLmjWVdTXmehwuIIBklGTPssEVmyQE5TgVGdvf1/f2hp+JnAorQrqQoKqZ0UYKDRU68Mj6BoCoMtjT/FSkrk8f1eAb3rvHJQ2ttkLU2+jl2rWid4wZ4bHmCKu4rxwdboFmCdKChlEmuFw+9zK5sziykGpyn7n7t7u3bt3OLuZyWUWl5eKlfLS2tqVa1cFNcUfeSrPLy7OzM+1tLVxAEKudL125dNPd/Z2MTCs3nAEenp6FjxbCi2MeAwAV65cnpmeZg1ybGS4v7dXYwVISBWk+8ZGoWkREW3shvlqz/qKJXiqus5hiHIdjgTm2U4ivi/2mdMFMA/TbW6n3H/jAEObBMH8A6tqrQaemwBMII4LJeA+/QCbxUISE4p2XubP5ZOZPF7V7OLKhx9d/sXHV1bWN1mgUQ/QjrYmwWCvH164cZ9nATTyJBjlQwnSwnviVA8eFBOqDG8Z3X/ARPUBNOlv920i3D2sKZueWBXeyZmbn783dV+GIJ1aXFle39pkosgWypVPriC55bXVBw+mMIZs3+Mv4Hoyi9zb2Xn1tVcW5ucYsYYG+xmWne9cjV8ug4CbcdeT6cQ8uTwOmf4FsaiIURdAMjzyRhSvuLPcztiLDARLymi6yMdcDjiKsFEsFZ0xmG4fk2wQNjYJI0V0AlfeCM54RtNFTCjT+XI9Mb+4/NFHl+/cvc8cOJsvdLa0sNHKKUtOAiJd3p9TdQPCxcXAo7wXw9ikrE0FdR1Kcv67jv6uTs/NsFKWaS5srOpPemA6m+lt+fzNWzdP1U7Ozs2h4x1d3evrm7RCv2RA5vTu3Xv3WEbmj6/MLyxwXk/GU1OTRLGU5dzDvbvk3+VsS2trS1dHO2M8kKHIEDw0MsY8WK5/xnpjgIopxKxviFtUWYJk/zT20jP0x5ASdfx9Nv0rpSLaTouQCff4agVFiTOsMsg5dPLVM+IxQIyy/xgK5r2a2jIksH4EVdk0PgSeIAq2vrHFdyPwqSfGR/u6Owr53J179+8crO/VMqVEDpj61BBw0HYBJ2LuKekuEWjKZPIIgPlhmfW4nZW1pdWN9RJbAyxWlSuZDOfg6sWDcltz28rKenv76sbmNsMY5II9hNq8pswBqs2tHcZYXuHb40h6obC3jzfEcMtnU8qoPOgjGE48Msfu7+2kZ5S0vi6WagHP+K2pjpJki3ARZTuj4KyHrV6Hq02Z1ZHFZs05uOszbryFyYcPGDJBrI4FZA6mP70JRK3e0OPgACsnUCAaCBggYzwdAIsE5NADXBqYK5xxAu9oa+xgJgYYqw9rhgf7zp89DdqMCuOjw6x04G3xbY+Wto67cytzy5tqAaSBha4SFbYEaT039mDop3rmq2jJGofsWItEI4R6tZ6nO+Xov/q2Bo4EXhgGhI5MLlrPKN3cnGe4xkKyK0eSlJeXaniTEhDlMm/CpEoawZhCkMjeD+zjAzbtHZ3AZWaTsD9eQevigoI0TNcoxFlfHFFBlacS/xUzIaAKrc28haB3STD6LNlyJx8GeIQrkgZFrAVLgfjKLmdYLV7FAjDQsKaGymOtkI5GDUZjQLE4ykmpTK6jpfn8mZNdHR3Ym6ZMqry/m2/Ojw0P9vYPVpO3cRb36Tr8VSBrnCsSoG2YAlh0EzUBa+LMqbs72sdGh+gI68tz7S2tGU507h/0dndzWBRpMZmFxP6Bfj47hsvPM18ZwIGzmTIaw+noffxUnE56QFMuz7EGjlgxDMADZtJ6w2J8DDxhFfqIEPFY9dEa0zIYqRakIeIp0IyfxlpL8tQoqnvce6OSgoANIUsRYzfyFvh6usrrjBa8Ob/iPnbzRYuengdT09agmAQ0QugBLlhSXeOYUzKT1pnLepavYKDLvBKGVFoL+dMnxxnltjbWWOVLJbIcH8pmmibGhpi13Z/TsUuNsjbcAZ1+ivZJC7wBPg/T1jo+2Nff3c6nNvi0g60aDq2urM8uLrH8o0VKmJjNnD83OT46SkUWdfBk5hbm19dW8LArqH4iMTYycnZykhFvv7Ozv7cbnZl+cL+1vV37TcnE8ODAE48/jucGLmhAZ0fnxubO3vK60SvdFbPFPYK7Br+U+1EVZ5bXCKyC42gwfVN9wblpRgweEryiX9E53pPlUAzfoEEbo6wvFoB2a1mURJQYM6iBczlsGu6OhuIU34Dhy0hwHwnwFhmfkuCNlL7Bkf5evtrQkp1n9YnmahwCyGWyWnwuFLDu+I7EaZ6z/wBoK2RbmlD5HaTdzrLt0MjW5k4u17S5vU1tUiYmjp/jowPdPdj9/YMBNjMQCT0Mwnh9Y3hwiLOk/B1AoZQUC1DwxeVljrdnck2nJiaeefqrx0ZH29vbODhNHyqWOP2wQ+eACigSs90rED8DF4y14UK+WGsiUpz/FvdsxWX+DI5sIIsxNWycmRy8k8B98gECKyifa84zFKEQNGZjgQBKESyoB9Ad/YEoDGY0zIEBmsyvVGZIgBGcJrB1fdaJsbEMbwes9NH/6MmY4GyGjbfOnZGB5bVN/LDOzg7Yh/WAfurio7M4gFOLx3nz5s2Uvr9V2y/uwUCc98GBAV4e4rAs+7T4DD29PX19vK/Yy3wYzxrWMxPkjQEdaGhvG+jrxxCh+53t7Sg7wx/7mp0dHRw7BPP2jvbTJyeYo3V3dtDfOzt7mElywpepHATCff075Cax0BGMow9fJCdZesoEeURsF/cECOrTKWhk7QGO4INQAHNNW1g+7wekYCoJJBIHn7gDOs8lgFgRiDM0Y93QRLWJ9dbiRJmz4miZRjMt/NK0rdJYC1j6MmNPudjd3cl2D/Ydsbe1suvEZhzrdNW2zlZWfJqzibam7GBPZ+rkif6+zhY8TY5sbrPIinHsgYSB3V1OizCEso7OQUFWKMhChduxIF3doEHrDP44xDtb2/ROJlxwwAaJQk9vN14QZZjr88EU5o0Ij+MnzEvxjZixw0kZJ9gGyyBACk6a+GXki8mY2Vg0StQD9xCoEjOUJLGAXyKJR0BbxFl8ZgCmGNsbWkLe1vYGrNDBd70BSM/Hx9O5yghkuMdjwGG6I+r9Bap4QYOdWwCgyPQjXBSXJOAx2ZggZANf8AcwRPlMAotMz7aztmlGFNkpPuazleSLP5iXzvYTdE3WmnAMeJeIsbGtvR3IdCuEj77rVVgWpTMZVJgT5CCgRVhSLMD9Jda7+GqXPCh2iSr0BgSsMiwX5rLshIhxsqA63K3Xi9NZWV71VayoVkzRH5OBVFKMjo2KnsX1cDON9hRAUcUDo5o+eKOTNVVkTB+0RTPVgj+4Opw8Q2vxSUmhgDbmzKbRNHBcBLEkPicAy6EU1sV0XQMM5HGqFnpx1kstRZCkTwFLStrcwhqRFpiy9WxrobVZnx0xAZCZBbPVdWavm8wEOJTIGM/f8mMs3SxrgVPfPpGHiB7lkKy+opJOMuKw8kcvGBroZ+FPCoPdsLNDYih/igu14g2Z0v7m2oZWaNNMLbQpo61UvpuFmgmk1lTYC0xn0yzqMfyglbZEAlOkalAJU4zRwaQr7tyXSLxzWFEbEigPYCqgz4wuqDWWjWktIxvtoey4M5gX2CKq/U9lq5folTq8IhKpLt4HkMLBwxEBmNYLOSRFtiYSmCfhpXro7P4eqlWiEyBVTLMBTegNr+KB+8I0hOGGobRNm7wqiknZ7enGCWR0ByMsOp0GsfUODLZ3Vzc3thhRqMAfVNQEUh+ky7R2cHShH38JhdUsDFiggKj4/kY7+6zNTDEXFubp1qAmAWT1NjnFhCjWWaWtuH3hjok9P/AnWyKkAgCd+4J9GFRGxUKiV/ErhSAHywOB9HWqmzbog3T4F6xBMNTBDXozoyOjJgXY/EZdKQYEdJR26ZXAeUgGLoBILohIP6pgJRGY4owDggHSxiQ2nECEPoiXBHSCilEN/vLuHEahWkHn6PuIgYV47p1dTfgHdFUtmqpbJQpt7YWObhZW2zsRKR8ore1ubfBVAnSYv+HNGzhNfMaQDVW9LkAXVAOQhF6iSuggk3sizE1oNpvTYQtakccvgmF3AiWFU8Rn5xev8iLDzVskAwEuYCLYUVB1mQURHksAKh7ivvhlAXXDuHkTONxQC5fRQ4hicIIbwoGNk2yWZTSwoiEQhzWcOmKCQnMQAQIxQKCKzQ3zAHtSquMjZAAk9mIAfNghk2cGnHKR9+kwOwiGHiZri38OLNYA6nWOHfMSKIMPO19FvUyZ5PwNb2AlMjrq72scLOGxSoLFb+3Q5mayWsoyK4NKWcy2eoYXdGEuKyoaMw1p87ek3RoAqnwDSGcnJXhjmTD1HyzF7EMq/YPP/L3z/kfvvPfRIxe/xHwVprAbwTsaADx+/Dh2UvDF4sBl4gZNjxYPF6AxtGJ2JGIFtknUzwBouiHWwWKu9AOtI5CKiGoV5EE/tlFallzQPxe8B7gwyFQJ6ZvKqhMoSdXCkGCNgnlyH9ZisaVl2vinm7BAhirAMLZQdLoxUddRE3BJJJuZ6+rNizIsNxyMdnPMhSeTjFSKL3dqywGrJStPIv1OH+0FAEwXVpzewoDYsRXjEGup0nHQxSvWl9OZOdpuPm4qAl5Z2/jo0pUPP/zwpRdfeubZr2MuIeSHP/whr4dgNLDLPCIo8LMB0mgEOdPTwMGq1BzLSR6n0DTQ2acy5DTiJeodUhQU+48baLYlwVIgzg4GIJfI6Z0iDjIjAIRsmiJ5i7fGbLtAls2Epeu2oiw69Z+L6hCwGgjFFp4QiKynNgCSmRKN4s7zQVcDaZRgYjK4qZU0L5+yaLnPbpavo6GRfGpFtsTA4p2AJgaFdAZMjhBU0lne9aC25FUrM8Wj+8IfqTdawBDH4c4yJxj1sS6oh9eFluauni7myQxKiEmpOCosm9sWBTPfubmFy59cXVld7e3t4mOioIt6fnbjOhDYKgAm3GRsMC3WfjUkIz+UXWyt8km/Im+xzczMsKBErtKrVRyzl19+GVXDBqCYMBrTzgIo+oYZgmOwi7VYwUR1dYhE75hAAnZCiizr63wVbz3Eg7BIJdOF5OVolWrqBRoIlKW5p2kNV5ZFa0V1RhyPOrxj45xPyxgBnKwTJ+WH6Et4O7v7ycx2vlLYL+pbQHytk30uZsss10yePsVmJwsQ7C9qOxUuaou9pBFF0gJrIUBHwIxhqmS7zSNibxl8eN/mYF+vb8gLklOswZ9KeLnziwsPpqauXb/+r/7V/0LHIhWtYAX7CommggAAHCRJREFU0UcfnZ6exqQAmXTqcmWdgCsN8czyHjNnJowff/zxC9984fz5CzK2tdqljz++dvXqysoKk0oawlgy0rD2hdWB8wyAeCWaF6q/wkxyxCvhrnFYc13kDc7Od1MtRSUAFQ/prnPitQ2WZgjY0vOJR63OPhROLofaqAHqsg/yGcQnmkFgSFyHSnRXl4VmDiRDdjmRXL8//cGHH37wiw+zucLo2Pj+7tbayvJ3v/sdzqxhdmgPmAQQ1ued9Qq4cHeGwiSaY6DDFZng1fi+XlGSROPzJh6+WTDHgh0TFfE6nWE7+/LlK4j513/wG7wPDCimKm+++Sasv3b9Gop87tw5405icXHx5mc3v/rkV1ljR0hiVpLlvOV79+498ZUvf+e732XQZlh//733333vPZb779y5s7axBiagRI9hecaGBHkHOMLWhbSQBiEk4PGNjY3xEg76Cw+lGupmLoJwtR4QuE+PASsY4R0ahpgPqOVo1uhL0HPr9m0+yra2oY0nmqQ0BCMuefMEjB29jwESfwujzWO1yizpy1/9an9f/9vvvsvf8UbXcvnC1tYO39BAcf7ypz+TYUEAQk8SpAqeLtXBhhNgWIBuZro9vcI9lVpanP+t3/yt7333O2gacwWqsEGNtr766muoLZNqytAVHkw9+PTqta9/4/knn+IFvHZQ4zOLly5foSEQf+GbL/JSBsad5tileuedd7BOVIdNwhnXpbn5e//F95752teYWCEzJPenf/qnpWKJL9Ctb26yIGZiRv80PDAy0Sa0001llzEMdpw7US1euvSL7/+97//g+7+mA1Q2kwiM0qMYRohNUEgwbTazTw0kiYdo22nzC0t0yZu3buH0InedZuZTBft7yBUkTKx2lErdKYHHhhklg6kzIrl05VNwmp2dZVGQjRSsFz7i3M4WqxGaPSC/DKM3HVZdij1VnSHE0OZyHOn54P0PGJ+HR7Qyit6xpHv77t2FxSVeq6c8g97V6zd/+pc/ZVrylaee5vMocHh6euqtd989KJYnJk4xc9zY3MB3vXzpMt+EYJZ+9uy50dExejFcK5eLn376KQjDceYcmAHIET7p9OraGp+53Nvf++ijj3i//itf/spv/uZv8iEVcLjDx15v39bgrDMJ0jxUA67jwF24cGFkZFSJycTm2sLmxhqrKRqcEDUSwumKxoC4G8QCiFPEeLkhmC1b7GZ7YHFp8aNLl/GmMS5bO2wX1/k4BjSgofBF8qcOLlOKUVkzRr7gDwjIa9lrwRZhiDjihdnlI5N26qTAkAUZdAIcNcrTWKWe5HMd29u7vE04MXEcj1Qudk4zrNm5+d6+AbyLVGq7t6eb71pNz85293Qvzs+/9957P/6rVzG+w6PjxVKVWTdf03nrrbe4npmcBDIKDtloyN27d9FxGI091NGb3R1y79+/9yd/8idsJsNWqS3BhjoapRvDWb4fSC6f/fvt3/5t3uyg0wP5P/z7f3/50iV8foqDFVaCqS8NDQ+P/t7v/d758+dxMeiub7x6hRnA+NgYsqGkdThmTpGiR/w+IgAyKarexBEX2mds4UtirLZPzdz47JZOp+mULhxXR2bWBz0URqiIipIYkyISkGvGjw6eATO+EcCogSVFRmCJcqENrEScO3tmZHiQaS3f2APa9t4+J38+/fQ67o02Vne3GXUJS0vLfAN6dXUVBgEBgpkH3bv/AJahmG+89hqzj9H+AZ3h29mBO3du38R3pJUTJ04ieFQE4BwUxf0HGlOwgYF+NnBQL/SGPs1a7Plz5xhhAG5GTrNLsiADOAzjTE2++73vss6Kx0X6u+++OzM99ezXnmYEhkw8BjoZx5Y++eTTvr6esbFhMId2xls6zsjwEB9JAyABbnL1Hi/WEqQZ7oYGqYiZcAcWqRfamME7detrGzOzcwAgh8ENJBxRFmoYB2R8hLr6ANpDt9Fa4A5r91rW5ngAbZALL2AK7AOMXM9q+Zmnn5w8fVLrFtkc5y146Z7d0Fv527ysurm1gRQRDLJnCwF8FhfmteKUySAa1lsufXzp5mc3PvvsM2TS29HBIQna31jfYIufAZYCIAkE5E3rKAtnuclCgrZmIJjqlxUdtfvWyy+dmDihAcD6PQwAT8DihjKQIOyhoSHWEHmnDJ2CNM6FX7hw/pvPfwPyUS9OAnBm4MqVT/gO+NeffQYHlxf/aR0bRSemN6AoxhlzlLESOs8TdwL1AvWAqDcogv4zstdZk2TuxZyzWmP2uLC4KJLMSaAbqifOz3P8AiFSHUOCk4JbRgXUG0LQ3ZYmjivLVYBcLBnY6KSF+o5WMc+emTg/eYa/FIEJQi8wa7Ol0jIvTLNqxuzBXsumC0IeHw7C80NnMR28VAMEDgBdvnKFgZ4TD3TBpaUF8GF/Hzp5dwpzxFd0R7WbVlmYn8dNok8z/CDFjg6+AtJGZ0JpeJydmTl//uwTTzw+NjrKWtby8gq6jJLRBEaDwZbhlw6E24p4WO6ilVu3bt24cePF55+DFoSBqcFHQMxIhWnK8bFx5msYA/TsZ3/1U3YsTpw4AX/Qehlzum+ZLyNpet/IczNBsQRch1FZapj37WJnGLAFBekgeRz+4or7Ba9hPc4DS80sXuLXq+9wtDyXY9WTrZW19fX33/+QnRfm8axMsTKs4S5R/srjj3OAE7kxZTsoFVlZnJvheIqOJmLOkDpeFocME7X86dOnrtVQtAMYik2gXewMvGBdFGLwXhApV86cPfXkV9lIuH/3HjudhXwTNgk4ObpeuTw7O41g4Boaw9YmDGAJbXZ2hj/jMDTIsfU2jBZfTUQ9mRqiq/QeWDk3O8u4BcJ8ygu9oVFaBM69+/fmZmdws1Ed1vwxOCy3vvDii3Rt6KW5t99+E515/rmvMwYgaZwjhErr9CpyvQOI06a+1gNkQmIh0AvQdYSAChLxg6H52cVlWGqs1+jQ1tbCn7wCOoaNmcjIQN/Fi4+ODA7wMhhaznYKZ3UYM/iUG9amDUPTzFoAXRtomWPDo2Mjo7jrWjLnIPD+wdrK6p1bd3Cr2EWxJRCpAN1VJwxHx0AdpV5fXWVjD6xAHSvIP3wBWE/rj1x4hBnTsbFxjnixI09j+OhlJol8mGBnV5M+FmrqNV7ZpdfCNbg5t7rCZGJwoL/Nto7ZxcOIofyQphMCtSICYNjo6+lF91fKK6itPIJk8syp06gCWEgi4IHNTmf6OTzQ0jrDieXV5UuXLwHk29/+FjM4pMUWBS3KrmAKNZlREwTY7ZIIg3DMflEmIjVwgxCtYlXHx4/tFdmbpKNj3GXuNRBgzrUnxbdrW0+dmjg7ebq3s5NP2QCb5WbG1rWNDVw7HJ3V1XVOvcm2ZfKDg20Xzl9gNYYlFFoCiNY8SxXaYi96d20DN5rhF9Qnxgee/OqX+SYWpyqRAeMhpoDeTesEEEM9GVKPHxt/9tmvXXz0UWS5sDDnujYzMwMe+Kk4zbyCMD46trK6NG8BqYAznfUrX/4yI6RUD3e5pUWWcHOHE8k0DeW838J2KbZrZnZWdpNx0fjozMNDIwIraIOhhUZhF7rFj8EZyBcvfomNUpAEOGYDrxJREGF1iBUbA8JVtkgCYANFY4SJxbsCEAWf4/a5LB/SuzB5ur2tlS91oA4kUhW4IIVa8dYVp2LPnD7V09WBW8laJdNxVjV1lD2R7OvuuTA5yQiGNYD9rE0xpo0P9Wug0IKmuic7MHgaJ46PM+5zMFjrM5k0vW2SkycnJ3p6+/i0Erab/WQ+okV/98DgAYWMEGfPnh/jEEpXFyZxdGgIDxinGNOM34HOdXR0okAAXF3pwVOiLqziqAB7yGdPn2RvgcLInuUQBMN3FNl+Q2Kg3t3V/tSTT3AuD8sJslBNMXoVPY6SyBU4nBhAaaTgKX3HgVGwt6fn+IkTExMnBrp1iAaWwlnzZpAUUmIJQwtE4jl6DBNdANJpogoI0tjrXo1elk/C+olj4xhZZiW0p0qCJn8JkTLRwNyzCax6AkOX1MI/cb5KjurxYhCmWspCX7U9IwpTBLxhh9xiXmnr7LzAQZTJUzhOHISgAaagfCydMxDdCLaT/ZnuC49cYOQzX5QhR/s/9LxeTZL76G6gDfCx8fEn9naHhwZYkdXbr3zvWlacv3bFQvG4DVqaM7JB1tXZQUX0WJaKZRvZKFCWKnImrFKr4FN2dT8ln5rVKdplbYoJKecm9/bYhuW8Fy2y04ddpxb8RB1x5+g2uAbspLZgr0yFaRpTyRVyEaP8QHFQrbmuBxOkFAtK1XqM1okJpGFA5dW0tZsTaSIycSIADcqInrU0Tp7pyI68C/Ue8zsRCcoL+7wiwABIrrYM7dyAJhb0J9aim5tR4Y5O1tfkfWOTKMZcD98J74FeOMAprb4BE5bqwgjkhIpBby6vPWrBSSb6+vrVKVtamEfYmXikAm9ZqadqN1oMWAqDpPilE3agVs7W88CEQYyQcBxbQ25PRw/DGHUZ6fkBAKlzRB4PLc9bVp1dVMH1ZACjE9Od4Sq1CCJQX0KzAD3wXf2HGYM2wlkRIYE86ahJIhZAqCLjYqIDZfgsIWgiJ9NiHpAEoPoouqwNHn2N1WcSMYtwlqDG+Oyw5K3ZBM1kEjoNoBxWvZnjgZT6X2iIJMkRrPW1Q6FBiyqK6wZTOJKuz5SSqS0giAN1cIf7PGFzaQ6SMaH0JxSFWRtXnB/g4xDAOFgOVuDnaAtTeWU4z5gxWUq1aQs14ECHoALnXug5FKCi5Ied1DavzBceHvt9KDuPWu2EZJwW7Iyz0zljIDnAAxlIWJps8zU+8sZyHsSJSC52f1gAUB6Mk/DG6RQvJAtVQtFMHpoQSOXEJlvUFYVaf6auNjo8XQ6lilMUAvl5MGRtzg8GoSQbzuUyc1n6k5hhWsNIKHQZkxmSmyUNEGOVlGUoUEFeahPLJj9PyVoa4ySZmlMQuuAkMtE4X6HkSZTQcTFxsFsjECGNgOWgcNISM4ur2KxjNf5CKysr7OWmixW9LwRqNMoyLzsZvMcgyKi/MdKpVnP6LpUmaMkyrrPWM2gT5WCrxnRSHxFSMAy5xwIwfTQGA0JaJjOuPus8tEpc1NntItogFqWQe+DBmidKFnURO2oDU0w5qEi6KT4lnFP2yJOQ1luc/H0ULWJTlR++ASn4P3jwakuc1wAjHkrxaFmHlJRFd8PAyXJysIVdwHb4ymhJipUTOtpRE+5iF+cMOC2kkYmMGiZOb08S6BaYL9IYN9h6BjEAUoAuaAefBcI6OZ+TRbHpZOiYPgEBSkB2wqkCLcV0sc6rvTU2MDgjyEkRhhWW5NULrSk15xFedT8SHEV1TJZ3tKah/SaC9S2oNclYDUvk0YSm7oKJ4SqHl3wqwkQnDJhiqbUklkkzJQyKUYAMGnIk6D48m0jgOKtvYjrajXHGpUH1sQHQw24Ip50AhX3gynoYVTi0wZXJLiJEbZk9y54Yx2mNYgLLsV/MQrXCNA1R4H0ZErpQgJVzTnsQx/iAHwTCXkNeTiKqwSYFQGAK03umzULbiKIM6VQkQi3ZU73Kifw0A4UhMqQURlcZhI0Rscmyv8gTSQNwgDDRAA6Y6uOhvEG3ZkgM3dzU1Lq38Q8a2DKBfPVr/CUpuqyAjIdBcRSB7O0oIgLsf0MBaCC4XADCiMygAuvBiB7ADg/W28Yb8QhsoR015c1v+QNMA5sLfMyYvNVldiI1njPowmBasl1Vq2XkUR2+0MkwaOiOZCyS1e/FSmmAOgE40CcqJfHRCDEbyXJ0YJWqAJxiRLjCfY0cfE2PE2UMg9a0NE5kawQOQZViEyT5AUOKACZE4QD+k0O2vMBEg0K60BLpzNqMy1SjYS6CYtgIIaKhRYFSFYOsjg2uSjAgrki2uUGGWlIINaVI6jf+0RpBRzHFThXReRfELO+VZTsIlz/OJ2g4vKMtfn87Xa2GQFSg1bAtEauPy17t89lvXmtVHlARC2aNNQYN8nwDROe9JA2rDEMxeUTBHbyk2RYoyd0NAIsWbF0DiR5BiiNAPELD7paqMYBqnmE32XSfbiJ8gjASJJOXc9erG/8EXdzRzi1ab/yONUJOiFUFJNVDK3rQM+gy5aaqjIMHHqFcKPHfGiQ9xg2mU9SHe3w6FmKsMtrKqYVN5um8xKCv/+SboJ8hnbc3GMyEjQQe7KG0woLAOsskQcMTk619/yR9AsLlH1HABEAR7k2JJjDnwB22GaAkahImIoQDQcprK9sggDNIA1rgUw9Qk1AleCp4GOJBOKQDl0GcZigbB4nBqjjqfgWuD4ki0PJFqLqvcU+Yky5lAhgFjEgRTzolQAeYzl0HSAtk6cp/lZOWW9TQVyFZUX2JgCMXGtNcHPZuM7MHNu6xQLgc/HGGzU1W0AAm71M3NUoQCMH2htQFHUPMGm6pikUdECrEOOkve65YI00ZMHF4FZXigbQkGleEl7nP1k6gmrYgw2ikrs6wgIqoVbrR6JTHJsgSlQVoWqJhEDWcxUSBs3YOL0BjeYTj7KihduHlb9BVMcmUpTy1NEXA8xIPBVnsQ+WJBMy8ATk7et0KM+4MUjlAWgXxWFwzTnMR/0CQVTw4Ig7hpNmHkHDx+GO2OO8sfrGOxjIyfgvKCBb+8SkNRCFEpNsjys6uA46uxnNthChAi2Yg9vFUUKdBfCo4QxlybTlAuKBjWDnTMIA7dnDOjLNoVpKlA0N2BXfJuBEQcM5YDzCRWBUmDhDIvM6SDBsBoouJbSFANpDhbwBITZ6pgVNgzYv5DCD8VetDpdOZIiPZeoPYLQFonZA3+0Q4Qxa7ITCbHuQlje8aWiRam2NGCEC8iQ+AtMXSh9Ym8zlW0LAhMJQARMHnxhl5+rSpn/lRAg4JjgwQgUB5ymg2wHQQnrLVwnslIsG/4WYqb3NdVYQoCJbaCbFySm/3uw1wGtW0MNMLXqRQiKtmptSUXI6EYIJEkAWKYYAoqT6DjTMvQjXFf5XgYj+mP+6EST9hpLni+qi/I8EaFzJzQRpgIESdydgS2CPZoTIynbBYnNF/oU1vwaGFITiF2vNhiqBpmlAxesBUwyOTIravSMzzF25zeEqs5QkKxxdFLxMVOCGqJVbjuqqz6CM8OcUhq8MJuN0DmmT9gzmufagX/UcwBCJaNgSGvgIlC8vhMx0kA0vDGprNDIAPimtAJfhamkUN/X1K4cwyghpn5ACOiUCjkvBzL0gR467NZoHE6R4xgO1fG8FhiCFgFIkFFIcAyBFbXaZyEy3LdMHEpcwogi6YkaEqukFjRFRVsABlJouDh/r6EubMugJSVXXc/qz+3mBeKzZyWZgUWBsSGc5JuQjnZABtWQJdp0A85NKCOoFMgDgOErKAEGv6G9wa/bFJuS+y9fi7uC92EF89QEojjBWMULXMO0kp/fFomueBqkiolCipv1PeeKII4wQmHVuGw6rZuoygtMBY7a4mD+oBEILnpjZY1OaVPI6HgBOGQaOsXrJQ62yXCH3hxLjvPiFxE6l0lsJQ5twnWSR5lwHHwASph1jq2ieKpJyCbTepkHmccmfTLKCrlyuJiROzHiZaDL/aOZGpoDng42GQDAimZOVieau8xecM+EYtVejBtKOWTd6gTjvWsfDPzZsSdMpAk1wZzSA0VEoVsMMIWtQJPeHswXjIyCzUqUghUCJgtRnI4IEzGAgSDDu7NpcR72UCk/CO4g6OHRHsHWD1nwnh+PgYHZjlCrw3CqHbUj/tOIpWG2doVMpAX8AyOcd5dBxpEDUAT3+klNnYgDiJnh5EEoqJJwRULKJTqKqzIWM+nqhPIvItvkoxyesmWqiwXNVilLKqUh3OQmOxSwcsV+gvEPCmMRY5qXNLKgkwbuKstaEk4cqUHWpMSwBKIFlzVJMa8IPui14wiorwRGC1NMkryXVhJN2QHokKdSPwkSKq5wom/2EE6zH8wRtGAjaUrt+4wd4UFpVPh/NeARUlANb6X/jmN3/yk5+wvvrRRx+PDI/wYlalVsLuyrXXH4QNmo0YhY70Bt2S7daPhqTE6mG0SLvAVIehjFRBEVKoKrWVklgpGSVhqiLw1voyd2k2ThHr2xyJlMjpxEXNZXEoBduA29V0gzef0EJ7D8LoNn00cEIKTFXJecTdAyBEkHLJ1sXHWxv6NI8FT5ZfcUhk/J0co1F4k1BLwPxYCQSAAC1igYrzBLZoMOyHEAYJ3qPBS7h55+7P33yLL44NDgx+4xvP8woWK9M6Rcs2wsWLj7HtwfmWGzdvnrtz94nHH6Myw4+OJldl3FE5KLGmbMz1XmzbMqQqxymVJAiixVnlsqMijFWSQHiOR8AbGXhpxgYtJ9G5TTgwSRNrZjbphH3f3kQNhc5gDmhzMsDn66ge6cgK3aUrgpB1SDqR7AA4wB/TFYnAuqqm0+BjWAonVZSxUnmsBy1yx3bgJKkUcdWAK6JWgrCaAifKBdsIkfPNg0YzzUm4aRsMoh5MT7/++utT09PU4HzfxYsX2ZgCSfUASvEh9xde+ObM9AyHVX/8kx+jhhMTE3h1wKIFDKLUWw9cIMZZLo7qCHkUAIUSgJlrNI/OLLFd+g5r5X3wEHRSjBKOLjWV5xkK4AQl0jKaegnB7AesJRdWeojaRNeAjQqTbM3aa/bCAbhqyVq2GCwCWeGhGnK2WGyLCgk/CFP3w/7JgbKXHMENDMVfY5PhTUlbfQCo1I7uAstVUN6m0YbcBE+5yIKt0KmZGU6v/qe/+DFnfNhOeOmllzk4A4I0J/8UdsPiW7du/4v/6V+89tqrzDOHh4dOnzz1+OOP43sw1FDUtMqalCoZD/2JJtSukarWFSL6FYcxulmwglxEPrWN9WAeVROxIgp8+GnwoSeb8TG9E5EBsliicmraYIUMMZ0WeXIMyVdDQhjdMU+Bi2MMeDXjEKRLTBh0BIRhhUoYd3nuiExMtFKmJk5OVCmuHay/FbRBzDCgIjPojz6+9PobP+cjBXAfZ/rpp5/5oz/6P06fPi30qRAzCGD8va0/+Nd/8Oqrr7CfwLReb1qxTKjurD5slIaL6VDgIxnOBn9uKKYqoP1QyiGkUEEArIz03vlFgiXFtxiG6VqoID4Yzz03gNPNos6mUNNbUMUAk3SPew5w4IYkYhUk0VDTMdGDQ+YaZ3keVajaANjIYDyTueBkG9+Z4UA/q9zi/h/+4R9+7Wtfk4Doc5g3Ri3YSwfnSqP86bn//nd/l2PAHJpkVz3C4W/v/985gMfJ8ZlHH33kn/3z/xEvCC7Da2c4PFcPMGFL+ESwRQwD/MUnznO/+eab9+7d0yI4qmLzrAiLI0pAYmRUpAlRGd0b1OhIsumQ9MZSFaFkZJpUr1HJXBVdna1Y3ITANzQYA2xsK8QPdfZIZgxKuKr+kS5libb2ECpZl5ElPALk8MHpdVSBRISp4pkzk08/8/T58+c5XsXZA19QwgCGwggDABQ12oSG12fPiKOpLJJIQodNNMQMDS/ckPpwtBGnKC82SgxtIRgwtd3AfXqwGOQQLNLI7qimIX/48EUxjZBfTEODAKzhw2eP/VJWf1EzD6XRotk0nEw+RshCIeLDwTDDL3ygjn4A3yWAmE0mBroFPsIhdx6C/LePfyMOIAj7icdBp+QtSguRwf8LxKiGrwD57Y0AAAAASUVORK5CYII="), + new Integration("Azure[Sky] Dynamic Skybox", Assets.Azure, true, true, "5da6209b193d6eb49b25c88c861e52fa", "https://assetstore.unity.com/packages/slug/36050", + "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"), + new Integration("Buto - Volumetric Fog and Volumetric Lighting", Assets.Buto, true, true, "ada48e5159bb1a5469288f9c75ca4629", "https://assetstore.unity.com/packages/slug/258881", + "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") + }; + + for (int i = 0; i < integrationsArray.Length; i++) + { + integrationsArray[i].installed = IsFogLibraryPresent(integrationsArray[i]); + } + + return integrationsArray; + } + + public static Integration GetIntegration(Assets asset) + { + for (int i = 0; i < Integrations.Length; i++) + { + if (Integrations[i].asset == asset) return Integrations[i]; + } + + return null; + } + + public static bool IsFogLibraryPresent(Integration integration) + { + if (integration.asset == Assets.None || integration.asset == Assets.UnityFog) return true; + + string path = AssetDatabase.GUIDToAssetPath(integration.libraryGUID); + + return path != string.Empty && AssetDatabase.LoadAssetAtPath(path, typeof(TextAsset)); + } + + public static Integration GetFirstInstalled() + { + for (int i = 0; i < Integrations.Length; i++) + { + //Always installed anyway + if (Integrations[i].asset == Assets.None || Integrations[i].asset == Assets.UnityFog) continue; + + #if SWS_DEV + //Gets in the way of testing and using default Unity fog + //if(Integrations[i].asset == Assets.SCPostEffects || Integrations[i].asset == Assets.Colorful) continue; + #endif + + if (IsFogLibraryPresent(Integrations[i])) + { + return Integrations[i]; + } + } + + //No third-party assets installed, default to Unity fog + return GetIntegration(Assets.UnityFog); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs.meta b/Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs.meta new file mode 100644 index 00000000..06f4ad98 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3a3be5417b7946088b3cbec887cf0dfe +timeCreated: 1729855911 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs b/Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs new file mode 100644 index 00000000..b281cbda --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs @@ -0,0 +1,1736 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + + +//#define DEFAULT_GUI + +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEditor.AnimatedValues; +#if URP +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +#endif + +namespace StylizedWater3 +{ + public partial class MaterialUI : ShaderGUI + { +#if URP + private MaterialEditor materialEditor; + + private MaterialProperty _ZWrite; + private MaterialProperty _ZClip; + private MaterialProperty _Cull; + private MaterialProperty _ShadingMode; + private MaterialProperty _Direction; + private MaterialProperty _Speed; + + private MaterialProperty _SlopeStretching; + private MaterialProperty _SlopeSpeed; + private MaterialProperty _SlopeAngleThreshold; + private MaterialProperty _SlopeAngleFalloff; + private MaterialProperty _SlopeFoam; + + private MaterialProperty _BaseColor; + private MaterialProperty _ShallowColor; + private MaterialProperty _ColorAbsorption; + + private MaterialProperty _HorizonColor; + private MaterialProperty _HorizonDistance; + private MaterialProperty _DepthVertical; + private MaterialProperty _DepthHorizontal; + private MaterialProperty _VertexColorTransparency; + private MaterialProperty _FogSource; + + private MaterialProperty _WaveTint; + private MaterialProperty _WorldSpaceUV; + private MaterialProperty _TranslucencyStrength; + private MaterialProperty _TranslucencyStrengthDirect; + private MaterialProperty _TranslucencyExp; + private MaterialProperty _TranslucencyCurvatureMask; + private MaterialProperty _EdgeFade; + private MaterialProperty _ShadowStrength; + + private MaterialProperty _CausticsTex; + private MaterialProperty _CausticsBrightness; + private MaterialProperty _CausticsChromance; + private MaterialProperty _CausticsTiling; + private MaterialProperty _CausticsSpeed; + private MaterialProperty _CausticsDistortion; + private MaterialProperty _EnableDirectionalCaustics; + private MaterialProperty _RefractionStrength; + private MaterialProperty _RefractionChromaticAberration; + + private MaterialProperty _UnderwaterSurfaceSmoothness; + private MaterialProperty _UnderwaterRefractionOffset; + private MaterialProperty _UnderwaterReflectionStrength; + + private MaterialProperty _IntersectionFoamOn; + private MaterialProperty _IntersectionSource; + private MaterialProperty _IntersectionSharp; + private MaterialProperty _IntersectionNoise; + private MaterialProperty _IntersectionColor; + private MaterialProperty _IntersectionLength; + private MaterialProperty _IntersectionClipping; + private MaterialProperty _IntersectionFalloff; + private MaterialProperty _IntersectionTiling; + private MaterialProperty _IntersectionDistortion; + private MaterialProperty _IntersectionRippleDist; + private MaterialProperty _IntersectionRippleStrength; + private MaterialProperty _IntersectionRippleSpeed; + private MaterialProperty _IntersectionSpeed; + + private MaterialProperty _FoamTex; + private MaterialProperty _FoamColor; + private MaterialProperty _FoamSpeed; + private MaterialProperty _FoamSubSpeed; + private MaterialProperty _FoamTiling; + private MaterialProperty _FoamSubTiling; + private MaterialProperty _FoamDistortion; + private MaterialProperty _FoamCrestMinMaxHeight; + private MaterialProperty _DistanceFoamFadeDist; + private MaterialProperty _DistanceFoamTiling; + + private MaterialProperty _FoamBubblesSpread; + private MaterialProperty _FoamBubblesStrength; + private MaterialProperty _FoamBaseAmount; + private MaterialProperty _FoamStrength; + private MaterialProperty _FoamClipping; + private MaterialProperty _VertexColorFoam; + + private MaterialProperty _FoamTexDynamic; + private MaterialProperty _FoamSpeedDynamic; + private MaterialProperty _FoamSubSpeedDynamic; + private MaterialProperty _FoamTilingDynamic; + private MaterialProperty _FoamSubTilingDynamic; + private MaterialProperty _FoamClippingDynamic; + + private MaterialProperty _BumpMap; + private MaterialProperty _BumpMapSlope; + private MaterialProperty _BumpMapLarge; + private MaterialProperty _NormalTiling; + private MaterialProperty _NormalSubTiling; + private MaterialProperty _NormalStrength; + private MaterialProperty _NormalSpeed; + private MaterialProperty _NormalSubSpeed; + private MaterialProperty _DistanceNormalsFadeDist; + private MaterialProperty _DistanceNormalsTiling; + private MaterialProperty _SparkleIntensity; + private MaterialProperty _SparkleSize; + + private MaterialProperty _SunReflectionSize; + private MaterialProperty _SunReflectionStrength; + private MaterialProperty _SunReflectionDistortion; + private MaterialProperty _SunReflectionSharp; + + private MaterialProperty _PointSpotLightReflectionStrength; + private MaterialProperty _PointSpotLightReflectionSize; + private MaterialProperty _PointSpotLightReflectionDistortion; + private MaterialProperty _PointSpotLightReflectionSharp; + + private MaterialProperty _ReflectionStrength; + private MaterialProperty _ReflectionDistortion; + private MaterialProperty _ReflectionBlur; + private MaterialProperty _ReflectionFresnel; + private MaterialProperty _ReflectionLighting; + private MaterialProperty _ScreenSpaceReflectionsEnabled; + + private MaterialProperty _WaveProfile; + private MaterialProperty _WaveSpeed; + private MaterialProperty _WaveFrequency; + private MaterialProperty _WaveHeight; + private MaterialProperty _VertexColorWaveFlattening; + private MaterialProperty _WaveNormalStr; + private MaterialProperty _WaveFadeDistance; + private MaterialProperty _WaveSteepness; + private MaterialProperty _WaveMaxLayers; + + private MaterialProperty _TessValue; + private MaterialProperty _TessMin; + private MaterialProperty _TessMax; + + private bool tesselationEnabled; + + private UI.Material.Section generalSection; + private UI.Material.Section renderingSection; + private UI.Material.Section lightingSection; + private UI.Material.Section colorSection; + private UI.Material.Section underwaterSection; + private UI.Material.Section normalsSection; + private UI.Material.Section lightReflectionSection; + private UI.Material.Section environmentReflectionSection; + private UI.Material.Section intersectionSection; + private UI.Material.Section foamSection; + private UI.Material.Section wavesSection; + private List sections; + + //Keyword states + private MaterialProperty _LightingOn; + private MaterialProperty _ReceiveShadows; + private MaterialProperty _FlatShadingOn; + private MaterialProperty _TranslucencyOn; + private MaterialProperty _RiverModeOn; + private MaterialProperty _SpecularReflectionsOn; + private MaterialProperty _EnvironmentReflectionsOn; + private MaterialProperty _DisableDepthTexture; + private MaterialProperty _CausticsOn; + private MaterialProperty _NormalMapOn; + private MaterialProperty _DistanceNormalsOn; + private MaterialProperty _FoamOn; + private MaterialProperty _FoamDistanceOn; + private MaterialProperty _RefractionOn; + private MaterialProperty _WavesOn; + + private MaterialProperty _ReceiveDynamicEffectsHeight; + private MaterialProperty _ReceiveDynamicEffectsFoam; + private MaterialProperty _ReceiveDynamicEffectsNormal; + + private MaterialProperty _CurvedWorldBendSettings; + + private GUIContent simpleShadingContent; + private GUIContent advancedShadingContent; + + private bool initialized; + private bool transparentShadowsEnabled; + private bool depthAfterTransparents = false; + private bool underwaterRenderingInstalled; + private bool dynamicEffectsInstalled; + + private List foamTextures; + private List normalMapTextures; + private List causticsTextures; + + private StylizedWaterRenderFeature renderFeature; + [NonSerialized] + private WaveProfile waveProfile; + + private WaterShaderImporter importer; + private bool requiresRecompile; + private string recompileMessage; + + private void FindProperties(MaterialProperty[] props, Material material) + { + tesselationEnabled = material.HasProperty("_TessValue"); + + if (tesselationEnabled) + { + _TessValue = FindProperty("_TessValue", props); + _TessMin = FindProperty("_TessMin", props); + _TessMax = FindProperty("_TessMax", props); + } + + _Cull = FindProperty("_Cull", props); + _ZWrite = FindProperty("_ZWrite", props); + _ZClip = FindProperty("_ZClip", props); + _ShadingMode = FindProperty("_ShadingMode", props); + _ShadowStrength = FindProperty("_ShadowStrength", props); + _Direction = FindProperty("_Direction", props); + _Speed = FindProperty("_Speed", props); + + _SlopeStretching = FindProperty("_SlopeStretching", props); + _SlopeSpeed = FindProperty("_SlopeSpeed", props); + _SlopeAngleThreshold = FindProperty("_SlopeAngleThreshold", props); + _SlopeAngleFalloff = FindProperty("_SlopeAngleFalloff", props); + _SlopeFoam = FindProperty("_SlopeFoam", props); + + _DisableDepthTexture = FindProperty("_DisableDepthTexture", props); + _RefractionOn = FindProperty("_RefractionOn", props); + + _BaseColor = FindProperty("_BaseColor", props); + _ShallowColor = FindProperty("_ShallowColor", props); + _ColorAbsorption = FindProperty("_ColorAbsorption", props); + //_Smoothness = FindProperty("_Smoothness", props); + //_Metallic = FindProperty("_Metallic", props); + _HorizonColor = FindProperty("_HorizonColor", props); + _HorizonDistance = FindProperty("_HorizonDistance", props); + _DepthVertical = FindProperty("_DepthVertical", props); + _DepthHorizontal = FindProperty("_DepthHorizontal", props); + _VertexColorTransparency = FindProperty("_VertexColorTransparency", props); + _FogSource = FindProperty("_FogSource", props); + + _WaveTint = FindProperty("_WaveTint", props); + _WorldSpaceUV = FindProperty("_WorldSpaceUV", props); + _TranslucencyStrength = FindProperty("_TranslucencyStrength", props); + _TranslucencyStrengthDirect = FindProperty("_TranslucencyStrengthDirect", props); + _TranslucencyExp = FindProperty("_TranslucencyExp", props); + _TranslucencyCurvatureMask = FindProperty("_TranslucencyCurvatureMask", props); + _EdgeFade = FindProperty("_EdgeFade", props); + + _CausticsOn = FindProperty("_CausticsOn", props); + _CausticsTex = FindProperty("_CausticsTex", props); + _CausticsBrightness = FindProperty("_CausticsBrightness", props); + _CausticsChromance = FindProperty("_CausticsChromance", props); + _CausticsTiling = FindProperty("_CausticsTiling", props); + _CausticsSpeed = FindProperty("_CausticsSpeed", props); + _CausticsDistortion = FindProperty("_CausticsDistortion", props); + _EnableDirectionalCaustics = FindProperty("_EnableDirectionalCaustics", props); + _RefractionStrength = FindProperty("_RefractionStrength", props); + _RefractionChromaticAberration = FindProperty("_RefractionChromaticAberration", props); + + _UnderwaterSurfaceSmoothness = FindProperty("_UnderwaterSurfaceSmoothness", props); + _UnderwaterRefractionOffset = FindProperty("_UnderwaterRefractionOffset", props); + _UnderwaterReflectionStrength = FindProperty("_UnderwaterReflectionStrength", props); + + _IntersectionSource = FindProperty("_IntersectionSource", props); + _IntersectionSharp = FindProperty("_IntersectionSharp", props); + + _IntersectionNoise = FindProperty("_IntersectionNoise", props); + _IntersectionColor = FindProperty("_IntersectionColor", props); + _IntersectionLength = FindProperty("_IntersectionLength", props); + _IntersectionClipping = FindProperty("_IntersectionClipping", props); + _IntersectionFalloff = FindProperty("_IntersectionFalloff", props); + _IntersectionTiling = FindProperty("_IntersectionTiling", props); + _IntersectionDistortion = FindProperty("_IntersectionDistortion", props); + _IntersectionRippleDist = FindProperty("_IntersectionRippleDist", props); + _IntersectionRippleStrength = FindProperty("_IntersectionRippleStrength", props); + _IntersectionRippleSpeed = FindProperty("_IntersectionRippleSpeed", props); + _IntersectionSpeed = FindProperty("_IntersectionSpeed", props); + + _FoamTex = FindProperty("_FoamTex", props); + _FoamColor = FindProperty("_FoamColor", props); + _FoamSpeed = FindProperty("_FoamSpeed", props); + _FoamSubSpeed = FindProperty("_FoamSubSpeed", props); + _FoamTiling = FindProperty("_FoamTiling", props); + _FoamSubTiling = FindProperty("_FoamSubTiling", props); + _FoamDistortion = FindProperty("_FoamDistortion", props); + _FoamBaseAmount = FindProperty("_FoamBaseAmount", props); + _FoamStrength = FindProperty("_FoamStrength", props); + _FoamClipping = FindProperty("_FoamClipping", props); + _FoamCrestMinMaxHeight = FindProperty("_FoamCrestMinMaxHeight", props); + _DistanceFoamFadeDist = FindProperty("_DistanceFoamFadeDist", props); + _DistanceFoamTiling = FindProperty("_DistanceFoamTiling", props); + + _FoamBubblesSpread = FindProperty("_FoamBubblesSpread", props); + _FoamBubblesStrength = FindProperty("_FoamBubblesStrength", props); + _VertexColorFoam = FindProperty("_VertexColorFoam", props); + + _FoamTexDynamic = FindProperty("_FoamTexDynamic", props); + _FoamSpeedDynamic = FindProperty("_FoamSpeedDynamic", props); + _FoamSubSpeedDynamic = FindProperty("_FoamSubSpeedDynamic", props); + _FoamTilingDynamic = FindProperty("_FoamTilingDynamic", props); + _FoamSubTilingDynamic = FindProperty("_FoamSubTilingDynamic", props); + _FoamClippingDynamic = FindProperty("_FoamClippingDynamic", props); + + _BumpMap = FindProperty("_BumpMap", props); + _BumpMapSlope = FindProperty("_BumpMapSlope", props); + _NormalTiling = FindProperty("_NormalTiling", props); + _NormalSubTiling = FindProperty("_NormalSubTiling", props); + _NormalStrength = FindProperty("_NormalStrength", props); + _NormalSpeed = FindProperty("_NormalSpeed", props); + _NormalSubSpeed = FindProperty("_NormalSubSpeed", props); + + _BumpMapLarge = FindProperty("_BumpMapLarge", props); + _DistanceNormalsFadeDist = FindProperty("_DistanceNormalsFadeDist", props); + _DistanceNormalsTiling = FindProperty("_DistanceNormalsTiling", props); + + _SparkleIntensity = FindProperty("_SparkleIntensity", props); + _SparkleSize = FindProperty("_SparkleSize", props); + + _SunReflectionSize = FindProperty("_SunReflectionSize", props); + _SunReflectionStrength = FindProperty("_SunReflectionStrength", props); + _SunReflectionDistortion = FindProperty("_SunReflectionDistortion", props); + _SunReflectionSharp = FindProperty("_SunReflectionSharp", props); + + _PointSpotLightReflectionStrength = FindProperty("_PointSpotLightReflectionStrength", props); + _PointSpotLightReflectionSize = FindProperty("_PointSpotLightReflectionSize", props); + _PointSpotLightReflectionDistortion = FindProperty("_PointSpotLightReflectionDistortion", props); + _PointSpotLightReflectionSharp = FindProperty("_PointSpotLightReflectionSharp", props); + + _ReflectionStrength = FindProperty("_ReflectionStrength", props); + _ReflectionDistortion = FindProperty("_ReflectionDistortion", props); + _ReflectionBlur = FindProperty("_ReflectionBlur", props); + _ReflectionFresnel = FindProperty("_ReflectionFresnel", props); + _ReflectionLighting = FindProperty("_ReflectionLighting", props); + _ScreenSpaceReflectionsEnabled = FindProperty("_ScreenSpaceReflectionsEnabled", props); + + _WaveProfile = FindProperty("_WaveProfile", props); + _WaveSpeed = FindProperty("_WaveSpeed", props); + _WaveHeight = FindProperty("_WaveHeight", props); + _WaveFrequency = FindProperty("_WaveFrequency", props); + _VertexColorWaveFlattening = FindProperty("_VertexColorWaveFlattening", props); + _WaveNormalStr = FindProperty("_WaveNormalStr", props); + _WaveFadeDistance = FindProperty("_WaveFadeDistance", props); + _WaveSteepness = FindProperty("_WaveSteepness", props); + _WaveMaxLayers = FindProperty("_WaveMaxLayers", props); + + //Keyword states + _LightingOn = FindProperty("_LightingOn", props); + _ReceiveShadows = FindProperty("_ReceiveShadows", props); + _FlatShadingOn = FindProperty("_FlatShadingOn", props); + _TranslucencyOn = FindProperty("_TranslucencyOn", props); + _RiverModeOn = FindProperty("_RiverModeOn", props); + _FoamOn = FindProperty("_FoamOn", props); + _FoamDistanceOn = FindProperty("_FoamDistanceOn", props); + _SpecularReflectionsOn = FindProperty("_SpecularReflectionsOn", props); + _EnvironmentReflectionsOn = FindProperty("_EnvironmentReflectionsOn", props); + _IntersectionFoamOn = FindProperty("_IntersectionFoamOn", props); + _NormalMapOn = FindProperty("_NormalMapOn", props); + _DistanceNormalsOn = FindProperty("_DistanceNormalsOn", props); + _WavesOn = FindProperty("_WavesOn", props); + + _ReceiveDynamicEffectsHeight = FindProperty("_ReceiveDynamicEffectsHeight", props); + _ReceiveDynamicEffectsFoam = FindProperty("_ReceiveDynamicEffectsFoam", props); + _ReceiveDynamicEffectsNormal = FindProperty("_ReceiveDynamicEffectsNormal", props); + + if(material.HasProperty("_CurvedWorldBendSettings")) _CurvedWorldBendSettings = FindProperty("_CurvedWorldBendSettings", props); + + simpleShadingContent = new GUIContent("Simple", + "Mobile friendly"); + + advancedShadingContent = new GUIContent("Advanced", + "Advanced mode does:\n\n" + + "• Physically-based refraction + chromatic aberration\n" + + "• Caustics & Translucency shading for point/spot lights\n" + + "• Caustics masked in underwater shadows" + + "• Double sampling of water depth/fog, for accurate refraction\n" + + "• Accurate blending of light color for translucency shading\n" + + "• Additional texture sample for distance normals"); + + if (_WaveProfile.textureValue && !waveProfile) + { + waveProfile = WaveProfileEditor.LoadFromLUT(_WaveProfile.textureValue); + } + } + + private ShaderMessage[] shaderMessages; + private void OnEnable(MaterialEditor materialEditorIn) + { + sections = new List(); + sections.Add(generalSection = new UI.Material.Section(materialEditorIn,"GENERAL", new GUIContent("General"))); + sections.Add(renderingSection = new UI.Material.Section(materialEditorIn,"RENDERING", new GUIContent("Rendering"))); + sections.Add(lightingSection = new UI.Material.Section(materialEditorIn,"LIGHTING", new GUIContent("Lighting"))); + sections.Add(colorSection = new UI.Material.Section(materialEditorIn,"COLOR", new GUIContent("Color", "Controls for the base color of the water and transparency"))); + sections.Add(underwaterSection = new UI.Material.Section(materialEditorIn,"UNDERWATER", new GUIContent("Underwater", "Pertains the appearance of anything seen under the water surface. Not related to any actual underwater rendering"))); + sections.Add(normalsSection = new UI.Material.Section(materialEditorIn,"NORMALS", new GUIContent("Normals", "Normal maps represent the small-scale curvature of the water surface. This is used for lighting and reflections"))); + sections.Add(lightReflectionSection = new UI.Material.Section(materialEditorIn,"LIGHT_REFLECTIONS", new GUIContent("Light Reflections", "Realtime specular reflection highlight from directional, point and spot lights. "))); + sections.Add(environmentReflectionSection = new UI.Material.Section(materialEditorIn,"ENVIRONMENT_REFLECTIONS", new GUIContent("Environment Reflections", "Reflections from reflection probes, planar- and screen-space reflections."))); + sections.Add(foamSection = new UI.Material.Section(materialEditorIn,"FOAM", new GUIContent("Surface Foam"))); + sections.Add(intersectionSection = new UI.Material.Section(materialEditorIn,"INTERSECTION", new GUIContent("Intersection Foam", "Draws a foam effects on opaque objects that are touching the water"))); + sections.Add(wavesSection = new UI.Material.Section(materialEditorIn,"WAVES", new GUIContent("Waves", "Parametric gerstner waves, which modify the surface curvature and animate the mesh's vertices"))); + + underwaterRenderingInstalled = StylizedWaterEditor.UnderwaterRenderingInstalled(); + dynamicEffectsInstalled = StylizedWaterEditor.DynamicEffectsInstalled(); + + #if URP + transparentShadowsEnabled = PipelineUtilities.TransparentShadowsEnabled(); + depthAfterTransparents = PipelineUtilities.IsDepthAfterTransparents(); + #endif + + Material mat = (Material)materialEditorIn.target; + + foreach (UnityEngine.Object target in materialEditorIn.targets) + { + MaterialChanged((Material)target); + } + + shaderMessages = ShaderConfigurator.GetErrorMessages(mat.shader); + + importer = WaterShaderImporter.GetForShader(mat.shader); + requiresRecompile = importer.RequiresRecompilation(out recompileMessage); + + string rootFolder = AssetInfo.GetRootFolder(); + LoadTextures(rootFolder + "Materials/Textures/Foam", ref foamTextures); + //Default white texture + foamTextures.Add(Texture2D.whiteTexture); + LoadTextures(rootFolder + "Materials/Textures/Normals", ref normalMapTextures); + //Default flat normal + normalMapTextures.Add(Texture2D.normalTexture); + LoadTextures(rootFolder + "Materials/Textures/Caustics", ref causticsTextures); + + renderFeature = StylizedWaterRenderFeature.GetDefault(); + + initialized = true; + } + + private void LoadTextures(string folderPath, ref List collection) + { + string[] contentGUIDS = AssetDatabase.FindAssets("t:Texture2D", new[] { folderPath }); + + collection = new List(); + + foreach (var guid in contentGUIDS) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + + Texture2D tex = AssetDatabase.LoadAssetAtPath(path); + + collection.Add(tex); + } + } + + public override void OnClosed(Material material) + { + initialized = false; + } + + partial void DrawDynamicEffectsUI(); + + //https://github.com/Unity-Technologies/Graphics/blob/648184ec8405115e2fcf4ad3023d8b16a191c4c7/com.unity.render-pipelines.universal/Editor/ShaderGUI/BaseShaderGUI.cs + public override void OnGUI(MaterialEditor materialEditorIn, MaterialProperty[] props) + { + this.materialEditor = materialEditorIn; + + materialEditor.SetDefaultGUIWidths(); + materialEditor.UseDefaultMargins(); + EditorGUIUtility.labelWidth = 0f; + + Material material = materialEditor.target as Material; + + //Requires refetching for undo/redo to function + FindProperties(props, material); + +#if DEFAULT_GUI + base.OnGUI(materialEditor, props); + return; +#endif + + if (!initialized) + { + OnEnable(materialEditor); + } + + ShaderPropertiesGUI(material); + + UI.DrawFooter(); + } + + public void ShaderPropertiesGUI(Material material) + { + DrawHeader(); + + DrawDynamicEffectsUI(); + + EditorGUILayout.Space(); + + EditorGUI.BeginChangeCheck(); + + DrawGeneral(); + DrawRendering(material); + DrawLighting(); + DrawColor(); + DrawNormals(); + DrawUnderwater(); + DrawFoam(); + DrawIntersection(); + DrawLightReflections(); + DrawEnvironmentReflections(); + DrawWaves(); + + EditorGUILayout.Space(); + + if (material.HasProperty("_CurvedWorldBendSettings")) + { + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Curved World 2020", EditorStyles.boldLabel); + DrawShaderProperty(_CurvedWorldBendSettings, _CurvedWorldBendSettings.displayName); + EditorGUILayout.Space(); + } + + if (EditorGUI.EndChangeCheck()) + { + foreach (var obj in materialEditor.targets) + MaterialChanged((Material)obj); + } + } + + public override void OnMaterialInteractivePreviewGUI(MaterialEditor materialEditor, Rect r, GUIStyle background) + { + //base.OnMaterialInteractivePreviewGUI(materialEditor, r, background); + } + + //Material sphere preview is mostly useless, due to simplistic rendering. Overlay an icon instead + public override void OnMaterialPreviewGUI(MaterialEditor materialEditor, Rect rect, GUIStyle background) + { + GUI.DrawTexture(rect, UI.AssetIcon, ScaleMode.ScaleToFit); + } + + void DrawNotifications() + { + UI.DrawNotification(!UniversalRenderPipeline.asset, "Universal Render Pipeline is currently not active!", "Show me", StylizedWaterEditor.OpenGraphicsSettings, MessageType.Error); + + if (!UniversalRenderPipeline.asset) return; + + if (UniversalRenderPipeline.asset && initialized) + { + UI.DrawNotification( + UniversalRenderPipeline.asset.supportsCameraDepthTexture == false && + _DisableDepthTexture.floatValue == 0f, + "Depth texture is disabled, which is required for the material's current configuration", + "Enable", + StylizedWaterEditor.EnableDepthTexture, + MessageType.Error); + + UI.DrawNotification( + UniversalRenderPipeline.asset.supportsCameraOpaqueTexture == false && (_RefractionOn.floatValue == 1f || _ScreenSpaceReflectionsEnabled.floatValue > 0), + "Opaque texture is disabled, which is required for the material's current configuration", + "Enable", + StylizedWaterEditor.EnableOpaqueTexture, + MessageType.Error); + } + + #if UNITY_6000_0_OR_NEWER + if (tesselationEnabled && UniversalRenderPipeline.asset.gpuResidentDrawerMode != GPUResidentDrawerMode.Disabled) + { + UI.DrawNotification(true, "[Unity 6+] Using the GPU Resident Drawer with Tessellation enabled is not supported!" + + "\n\nEither disable Tessellation (under the Rendering tab), or disable GPU Resident Drawer in your pipeline settings.", MessageType.Error); + } + #endif + + #if URP + UI.DrawNotification(PipelineUtilities.RenderGraphEnabled() == false, "Render Graph is disabled in your project, some rendering functionality will not be available.", "Enable", () => + { + RenderGraphSettings settings = GraphicsSettings.GetRenderPipelineSettings(); + settings.enableRenderCompatibilityMode = false; + }, MessageType.Error); + #endif + + UI.DrawNotification(depthAfterTransparents && _DisableDepthTexture.floatValue < 0.5, "\nDepth Texture Mode is set to \"After Transparents\" on the default renderer\n\nWater material may not render properly\n", MessageType.Warning); + + if (shaderMessages != null && shaderMessages.Length > 0) + { + Material targetMat = (Material)materialEditor.target; + UI.DrawNotification(shaderMessages != null, $"Shader has {shaderMessages.Length} compile errors.\n\nCheck the inspector to view them", "View", () => Selection.activeObject = targetMat.shader, MessageType.Error); + } + + UI.DrawNotification( + requiresRecompile, + "\n" + + "The shader requires to be recompiled." + + "\n" + + recompileMessage + + "\n", + "Repair", + () => + { + importer.Reimport(); + requiresRecompile = false; + }, + MessageType.Warning); + } + + private void DrawRenderFeatureNotification() + { + if (!renderFeature) + { + UI.DrawNotification(true, "The Stylized Water render feature hasn't been added to the default renderer." + + "\n\nFeatures such as Directional Caustics and Screen-space Reflections are unavailable.", "Add", () => + { + PipelineUtilities.ValidateRenderFeatureSetup("Stylized Water 3"); + renderFeature = StylizedWaterRenderFeature.GetDefault(); + }, MessageType.Info); + } + } + + private void MaterialChanged(Material material) + { + if (material == null) throw new ArgumentNullException(nameof(material)); + + SetMaterialKeywords(material); + + material.SetTexture("_CausticsTex", _CausticsTex.textureValue); + material.SetTexture("_BumpMap", _BumpMap.textureValue); + material.SetTexture("_BumpMapSlope", _BumpMapSlope.textureValue); + material.SetTexture("_BumpMapLarge", _BumpMapLarge.textureValue); + material.SetTexture("_FoamTex", _FoamTex.textureValue); + material.SetTexture("_IntersectionNoise", _IntersectionNoise.textureValue); + + if(_WaveFrequency.hasMixedValue == false) _WaveFrequency.floatValue = Mathf.Max(_WaveFrequency.floatValue, 0.1f); + + if (dynamicEffectsInstalled) + { + material.SetTexture("_FoamTexDynamic", _FoamTexDynamic.textureValue); + } + + UpgradeObsoleteProperties(material); + } + + private void SetMaterialKeywords(Material material) + { +#if URP + //Keywords; + CoreUtils.SetKeyword(material, "_ADVANCED_SHADING", material.GetFloat("_ShadingMode") == 1f); + + if (material.GetFloat("_FoamOn") > 0.5) + { + CoreUtils.SetKeyword(material, "_SURFACE_FOAM_SINGLE", true); + CoreUtils.SetKeyword(material, "_SURFACE_FOAM_DUAL", material.GetFloat("_FoamDistanceOn") > 0.5); + } + else + { + CoreUtils.SetKeyword(material, "_SURFACE_FOAM_SINGLE", false); + CoreUtils.SetKeyword(material, "_SURFACE_FOAM_DUAL", false); + } +#endif + } + + private void DrawHeader() + { + Rect rect = EditorGUILayout.BeginHorizontal(); + + //Negate room made for parameter locking (material variants functionality) + rect.xMin -= 15f; + rect.yMin += 5f; + + GUIContent c = new GUIContent("Version " + AssetInfo.INSTALLED_VERSION); + rect.width = EditorStyles.label.CalcSize(c).x; + //rect.x += (rect.width * 2f); + rect.y -= 3f; + GUI.Label(rect, c, EditorStyles.label); + + rect.x += rect.width + 3f; + rect.y -= 2f; + rect.width = 16f; + rect.height = 16f; + + GUI.DrawTexture(rect, EditorGUIUtility.IconContent("preAudioLoopOff").image); + if (Event.current.type == EventType.MouseDown) + { + if (rect.Contains(Event.current.mousePosition) && Event.current.button == 0) + { + AssetInfo.VersionChecking.GetLatestVersionPopup(); + Event.current.Use(); + } + } + + if (rect.Contains(Event.current.mousePosition)) + { + Rect tooltipRect = rect; + tooltipRect.y -= 20f; + tooltipRect.width = 120f; + GUI.Label(tooltipRect, "Check for update", GUI.skin.button); + } + + c = new GUIContent(" Open asset window", EditorGUIUtility.IconContent("_Help").image, "Show help and third-party integrations"); + + Rect assetWindowBtnRtc = EditorGUILayout.GetControlRect(); + assetWindowBtnRtc.width = (EditorStyles.miniLabel.CalcSize(c).x + 32f); + assetWindowBtnRtc.x = EditorGUIUtility.currentViewWidth - assetWindowBtnRtc.width - 17f; + assetWindowBtnRtc.height = 20f; + + if (GUI.Button(assetWindowBtnRtc, c)) + { + HelpWindow.ShowWindow(); + } + + Rect tooltipBtnRtc = EditorGUILayout.GetControlRect(); + tooltipBtnRtc.width = 130f; + tooltipBtnRtc.height = assetWindowBtnRtc.height; + tooltipBtnRtc.x = assetWindowBtnRtc.x - assetWindowBtnRtc.width + 15f; + + UI.ExpandTooltips = GUI.Toggle(tooltipBtnRtc, UI.ExpandTooltips, new GUIContent(" Toggle tooltips", EditorGUIUtility.IconContent(UI.iconPrefix + (UI.ExpandTooltips ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button"); + + EditorGUILayout.EndHorizontal(); + + GUILayout.Space(3f); + + DrawNotifications(); + + if (importer.configurationState.fogIntegration.asset != FogIntegration.Assets.UnityFog) + { + EditorGUILayout.LabelField($"Active fog integration: {importer.configurationState.fogIntegration.name}" + (importer.settings.autoIntegration ? " (Automatic)" : ""), EditorStyles.miniLabel); + } + } + + #region Sections + private void DrawGeneral() + { + generalSection.DrawHeader(() => SwitchSection(generalSection)); + + if (EditorGUILayout.BeginFadeGroup(generalSection.anim.faded)) + { + EditorGUILayout.Space(); + + using (new EditorGUI.DisabledGroupScope(_RiverModeOn.floatValue > 0)) + { + DrawShaderProperty(_WorldSpaceUV, new GUIContent(_WorldSpaceUV.displayName, "Use either the mesh's UV or world-space position coordinates as a base for texture tiling")); + } + if(_RiverModeOn.floatValue > 0) EditorGUILayout.HelpBox("Shader will use always the mesh's UV coordinates when River Mode is enabled.", MessageType.None); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Animation", EditorStyles.boldLabel); + + UI.Material.DrawVector2(_Direction, "Direction"); + UI.Material.DrawFloatField(_Speed, label:"Speed"); + + UI.DrawNotification(WaterObject.CustomTime > 0, $"Shader animations are driven by a custom time value set through script ({WaterObject.CustomTime}).", MessageType.Info); + + if (EditorWindow.focusedWindow && EditorWindow.focusedWindow.GetType() == typeof(SceneView)) + { + if (SceneView.lastActiveSceneView.sceneViewState.alwaysRefreshEnabled == false) + { + UI.DrawNotification("The \"Always Refresh\" option is disabled in the scene view. Water surface animations will appear to be jumpy", messageType:MessageType.None); + } + } + + EditorGUILayout.Space(); + + DrawShaderProperty(_RiverModeOn, new GUIContent("River Mode", + "When enabled, all animations flow in the vertical UV direction and stretch on slopes, creating faster flowing water." + + " \n\nSurface Foam also draws on slopes + A separate normal map can be used for slopes")); + + if (_RiverModeOn.floatValue > 0 || _RiverModeOn.hasMixedValue) + { + DrawShaderProperty(_SlopeAngleThreshold, new GUIContent(_SlopeAngleThreshold.displayName, "Surface angle at which it is considered a slope for river-based shading"), 1); + DrawShaderProperty(_SlopeAngleFalloff, new GUIContent(_SlopeAngleFalloff.displayName, "Surface angle over which the slope gradient should smoothly fade out over."), 1); + + EditorGUILayout.Space(); + + DrawShaderProperty(_SlopeStretching, new GUIContent("Slope stretching", null, "On slopes, stretches textures by this much. Creates the illusion of faster flowing water"), 1); + DrawShaderProperty(_SlopeSpeed, new GUIContent("Slope speed", null, "On slopes, animation speed is multiplied by this value"), 1); + } + + EditorGUILayout.Space(); + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawRendering(Material material) + { + renderingSection.DrawHeader(() => SwitchSection(renderingSection)); + + if (EditorGUILayout.BeginFadeGroup(renderingSection.anim.faded)) + { + EditorGUILayout.Space(); + + using (new EditorGUILayout.HorizontalScope()) + { + MaterialEditor.BeginProperty(_ShadingMode); + + if (_ShadingMode.hasMixedValue) + { + DrawShaderProperty(_ShadingMode, advancedShadingContent); + } + else + { + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = _ShadingMode.hasMixedValue; + EditorGUILayout.LabelField(_ShadingMode.displayName, GUILayout.Width(EditorGUIUtility.labelWidth)); + + float shadingMode = GUILayout.Toolbar((int)_ShadingMode.floatValue, new GUIContent[] { simpleShadingContent, advancedShadingContent, }, GUILayout.MaxWidth((250f))); + + if (EditorGUI.EndChangeCheck()) + { + _ShadingMode.floatValue = shadingMode; + } + EditorGUI.showMixedValue = false; + } + + MaterialEditor.EndProperty(); + } + + if ((EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android || + EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS ||EditorUserBuildSettings.activeBuildTarget == BuildTarget.Switch) && _ShadingMode.floatValue == 1f) + { + EditorGUILayout.Space(); + + UI.DrawNotification("The current shading mode is not intended to be used on mobile hardware", MessageType.Warning); + } + + EditorGUILayout.Space(); + + materialEditor.EnableInstancingField(); + + materialEditor.RenderQueueField(); + GUILayout.Space(-3f); + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + + if (GUILayout.Button(new GUIContent(EditorGUIUtility.IconContent(UI.iconPrefix + "Toolbar Minus")), EditorStyles.miniButtonLeft, GUILayout.MaxWidth(EditorGUIUtility.fieldWidth / 2))) material.renderQueue--; + if (GUILayout.Button(new GUIContent(EditorGUIUtility.IconContent(UI.iconPrefix + "Toolbar Plus")), EditorStyles.miniButtonRight, GUILayout.MaxWidth(EditorGUIUtility.fieldWidth / 2))) material.renderQueue++; + } + + if (material.renderQueue <= 2450 || material.renderQueue >= 3500) + { + UI.DrawNotification("Material must be on the Transparent render queue (2450-3500). Otherwise incurs rendering artefacts", MessageType.Error); + } + //materialEditor.DoubleSidedGIField(); + + EditorGUILayout.Space(); + + DrawShaderProperty(_Cull, new GUIContent(_Cull.displayName, "Controls which sides of the water mesh surface are rendered invisible (culled)")); + DrawShaderProperty(_ZWrite, new GUIContent("Depth writing (ZWrite)", "Enable to have the water perform depth-based sorting on itself. Allows for intersecting transparent geometry. Advisable with high waves." + + "\n\nIf this is disabled, other transparent materials will either render behind or in front of the water, depending on their render queue/priority set in their materials")); + DrawShaderProperty(_ZClip, new GUIContent("Frustum clipping (ZClip)", "Enable to clip the surface when it extends beyond the camera's far clipping plane. This is default for all shaders." + + "\n\nDisable to aid in creating water that expands towards the horizon." + + "\n\nNote: Effects such as edge fading and intersection foam still consider the camera's far clipping plane, this is normal.")); + + EditorGUILayout.Space(); + + DrawShaderProperty(_DisableDepthTexture, new GUIContent("Disable depth texture", "Depth texture is made available by the render pipeline and is used to measure the distance between the water surface and opaque geometry behind/in front of it, as well as their position.\n\n" + + "This is used for a variety of effects, such as the color gradient, intersection effects, caustics and refraction." + + "\n\nDisable if targeting a bare bones rendering set up without a depth pre-pass present.")); + + EditorGUILayout.Space(); + + EditorGUI.BeginChangeCheck(); + var tessellationTooltip = "Dynamically subdivides the mesh's triangles to create denser topology near the camera." + + "\n\nThis allows for more detailed wave animations." + + "\n\nOnly supported on GPUs with Shader Model 4.6+ and the Metal graphics API on Mac/iOS. Should it fail, it will fall back to the non-tessellated shader automatically"; + tesselationEnabled = EditorGUILayout.Toggle(new GUIContent("Tessellation", tessellationTooltip), tesselationEnabled); + if(UI.ExpandTooltips) EditorGUILayout.HelpBox(tessellationTooltip, MessageType.None); + + if (EditorGUI.EndChangeCheck()) + { + foreach (UnityEngine.Object target in materialEditor.targets) + { + Material mat = (Material)target; + bool usingTessellation = mat.shader.name.Contains(ShaderParams.ShaderNames.TESSELLATION_NAME_SUFFIX); + + string newShaderName = mat.shader.name; + + if (usingTessellation) + { + newShaderName = mat.shader.name.Replace(ShaderParams.ShaderNames.TESSELLATION_NAME_SUFFIX, string.Empty); + } + else + { + newShaderName += ShaderParams.ShaderNames.TESSELLATION_NAME_SUFFIX; + } + + #if SWS_DEV + //Debug.Log("Switching to shader: " + newShaderName); + #endif + + Shader newShader = Shader.Find(newShaderName); + if(newShader) AssignNewShaderToMaterial(material, material.shader, newShader); + #if SWS_DEV + else + { + Debug.Log("Failed to find tessellation shader with name: " + newShaderName); + } + #endif + } + } + + if (tesselationEnabled && _TessValue != null) + { + UI.DrawNotification(_FlatShadingOn.floatValue > 0 || _FlatShadingOn.hasMixedValue, "Flat shading is enabled, tessellation should not be used to achieve the desired effect", MessageType.Warning); + + EditorGUI.indentLevel++; + + DrawShaderProperty(_TessValue, _TessValue.displayName); + #if UNITY_PS4 || UNITY_XBOXONE || UNITY_GAMECORE + //AMD recommended performance optimization + EditorGUILayout.HelpBox("Value is internally limited to 15 for the current target platform (AMD-specific optimization)", MessageType.None); + #endif + UI.Material.DrawFloatField(_TessMin); + _TessMin.floatValue = Mathf.Clamp(_TessMin.floatValue, 0f, _TessMax.floatValue - 0.01f); + UI.Material.DrawFloatField(_TessMax); + EditorGUI.indentLevel--; + + UI.DrawNotification(material.enableInstancing, "Tessellation does not work correctly when GPU instancing is enabled", MessageType.Warning); + } + + EditorGUILayout.Space(); + + if (dynamicEffectsInstalled) + { + EditorGUILayout.LabelField("Apply Dynamic Effects", EditorStyles.boldLabel); + + if (UI.ExpandTooltips) + { + EditorGUILayout.HelpBox("This functionality is specific to the Dynamic Effects extension", MessageType.None); + } + + DrawShaderProperty(_ReceiveDynamicEffectsHeight, new GUIContent("Height", "Specify if this material should apply dynamic effects displacement to itself.")); + DrawShaderProperty(_ReceiveDynamicEffectsFoam, new GUIContent("Foam")); + DrawShaderProperty(_ReceiveDynamicEffectsNormal, new GUIContent("Normals")); + + EditorGUILayout.Space(); + } + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawLighting() + { + lightingSection.DrawHeader(() => SwitchSection(lightingSection)); + + if (EditorGUILayout.BeginFadeGroup(lightingSection.anim.faded)) + { + EditorGUILayout.Space(); + + DrawShaderProperty(_LightingOn, new GUIContent("Enable lighting", "Color from lights and ambient light (Flat/Gradient/Skybox) will affect the material. If using overall Unlit shaders in the scene, or fixed lighting, disable to skip lighting calculations.")); + + DrawShaderProperty(_FlatShadingOn, new GUIContent("Flat/low-poly shading", "When enabled, normals are calculated per mesh face, resulting in a faceted appearance (low poly look). The mesh needs sufficient vertices to really sell the effect (eg. a quad mesh won't do)")); + UI.DrawNotification(_FlatShadingOn.floatValue > 0 && tesselationEnabled, "Tessellation is enabled, it should not be used to achieve the desired effect", MessageType.Warning); + + UI.DrawNotification(_FlatShadingOn.floatValue > 0f && _WavesOn.floatValue == 0f, "Flat shading has little effect if waves are disabled", MessageType.Warning); + + DrawShaderProperty(_ReceiveShadows, new GUIContent("Receive shadows", "Allows the material to receive realtime shadows from other objects.\n\nAlso enables light-based effects such as reflections and caustics to hide themselves in shadows.")); + if ((_ReceiveShadows.floatValue > 0 || _ReceiveShadows.hasMixedValue) && !transparentShadowsEnabled && _ShadingMode.floatValue != 0) + { + #if URP + transparentShadowsEnabled = PipelineUtilities.TransparentShadowsEnabled(); + #endif + } + UI.DrawNotification((_ReceiveShadows.floatValue > 0 || _ReceiveShadows.hasMixedValue) && !transparentShadowsEnabled, + "Transparent shadows are disabled in the default Forward renderer", "Show me", + StylizedWaterEditor.SelectForwardRenderer, MessageType.Warning); + + using (new EditorGUI.DisabledScope(_LightingOn.floatValue < 1f || _LightingOn.hasMixedValue)) + { + if ((_ReceiveShadows.floatValue > 0 || _ReceiveShadows.hasMixedValue)) + { + DrawShaderProperty(_ShadowStrength, "Strength", 1); + } + + DrawShaderProperty(_NormalStrength, new GUIContent("Diffuse lighting", "Controls how much the curvature of the normal map affects directional lighting")); + } + + EditorGUILayout.Space(); + + using (new EditorGUI.DisabledScope(_NormalMapOn.floatValue == 0f)) + { + EditorGUILayout.LabelField("Sparkles", EditorStyles.boldLabel); + DrawShaderProperty(_SparkleIntensity, new GUIContent("Intensity", "The color/intensity of the main directional light is multiplied on top of this.")); + DrawShaderProperty(_SparkleSize, "Size"); + } + UI.DrawNotification(_NormalMapOn.floatValue == 0f, "Sparkles require the normal map feature to be enabled", MessageType.None); + + EditorGUILayout.Space(); + + DrawShaderProperty(_TranslucencyOn, new GUIContent("Translucency", "Creates the appearance of sun light passing through the water and scattering.\n\nNote that this is mostly visible at grazing light angle")); + + if (_TranslucencyOn.floatValue > 0 || _TranslucencyOn.hasMixedValue) + { + DrawShaderProperty(_TranslucencyStrength, new GUIContent("Intensity", "Acts as a multiplier for the light's intensity"), 1); + DrawShaderProperty(_TranslucencyExp, new GUIContent("Exponent", "Essentially controls the width/scale of the effect"), 1); + DrawShaderProperty(_TranslucencyCurvatureMask, new GUIContent("Curvature mask", "Masks the effect by the orientation of the surface. Surfaces facing away from the sun will receive less of an effect. On sphere mesh, this would push the effect towards the edges/silhouette."), 1); + + EditorGUILayout.Space(); + + DrawShaderProperty(_TranslucencyStrengthDirect, new GUIContent("Direct Light Intensity", "Simulate light scattering from direct sun light. Typically seen in glacial lakes."), 1); + } + + EditorGUILayout.Space(); + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawColor() + { + colorSection.DrawHeader(() => SwitchSection(colorSection)); + + if (EditorGUILayout.BeginFadeGroup(colorSection.anim.faded)) + { + EditorGUILayout.Space(); + + UI.Material.DrawColorField(_BaseColor, true, _BaseColor.displayName, "Base water color, alpha channel controls transparency"); + UI.Material.DrawColorField(_ShallowColor, true, _ShallowColor.displayName, "Water color in shallow areas, alpha channel controls transparency. Note that the caustics effect is visible here, setting the alpha to 100% hides caustics"); + if (_ShadingMode.floatValue == 1 || _ShadingMode.hasMixedValue) //Advanced shading + { + using (new EditorGUI.DisabledGroupScope(_RefractionOn.floatValue == 0 && !_RefractionOn.hasMixedValue)) + { + DrawShaderProperty(_ColorAbsorption, new GUIContent(_ColorAbsorption.displayName, "Darkens the underwater color, based on the water's depth. This is a particular physical property of water that contributes to a realistic appearance.")); + } + if (_RefractionOn.floatValue == 0) EditorGUILayout.HelpBox("Requires the Refraction feature to be enabled", MessageType.None); + + EditorGUILayout.Space(); + } + + //DrawShaderProperty(_Smoothness); + //DrawShaderProperty(_Metallic); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Fog/Density", EditorStyles.boldLabel); + DrawShaderProperty(_FogSource, new GUIContent("Depth source", "The Green vertex color channel subtracts (visual) depth from the water, making it appear shallow. When River Mode is enabled, this controls the complete opacity of the material instead")); + if (_FogSource.floatValue == 0 || _FogSource.hasMixedValue) + { + if (_DisableDepthTexture.floatValue > 0) + { + UI.DrawNotification("Depth texture is disabled", MessageType.Warning); + } + using (new EditorGUI.DisabledGroupScope(_DisableDepthTexture.floatValue == 1f && !_DisableDepthTexture.hasMixedValue)) + { + DrawShaderProperty(_DepthVertical, new GUIContent("Distance Depth", "Distance measured from the water surface, to the geometry behind it, along the camera's viewing angle. Water turns denser the more the camera looks along the water surface, and through it.")); + DrawShaderProperty(_DepthHorizontal, new GUIContent("Vertical Depth", "Density as measured from the water surface, straight down. This acts as a type of artificial height fog.")); + } + } + + EditorGUILayout.Space(); + + DrawShaderProperty(_VertexColorTransparency, new GUIContent("Vertex color transparency (G)", "The Green vertex color channel adds transparency to the water, making it appear invisible.")); + + using (new EditorGUI.DisabledGroupScope(_DisableDepthTexture.floatValue == 1f && !_DisableDepthTexture.hasMixedValue)) + { + UI.Material.DrawFloatField(_EdgeFade, "Edge fading", "Fades out the water where it intersects with opaque geometry.\n\nRequires the depth texture option to be enabled"); + _EdgeFade.floatValue = Mathf.Max(0f, _EdgeFade.floatValue); + } + EditorGUILayout.Space(); + + UI.Material.DrawColorField(_HorizonColor, true, _HorizonColor.displayName, "Color as perceived on the horizon, where looking across the water"); + DrawShaderProperty(_HorizonDistance, _HorizonDistance.displayName); + + DrawShaderProperty(_WaveTint, new GUIContent(_WaveTint.displayName, "Adds a bright/dark tint based on wave height\n\nWaves feature must be enabled")); + + EditorGUILayout.Space(); + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawNormals() + { + normalsSection.DrawHeader(() => SwitchSection(normalsSection)); + + if (EditorGUILayout.BeginFadeGroup(normalsSection.anim.faded)) + { + EditorGUILayout.Space(); + + DrawShaderProperty(_NormalMapOn, new GUIContent("Enable", "Normals add small-scale detail curvature to the water surface, which in turn is used in various lighting techniques")); + + EditorGUILayout.Space(); + + if (_NormalMapOn.floatValue > 0f || _NormalMapOn.hasMixedValue) + { + DrawTextureSelector(_BumpMap, ref normalMapTextures); + + if (_RiverModeOn.floatValue > 0f || _RiverModeOn.hasMixedValue) + { + DrawTextureSelector(_BumpMapSlope, ref normalMapTextures); + } + + EditorGUILayout.LabelField("Tiling & Offset", EditorStyles.boldLabel); + //UI.Material.DrawFloatTicker(_NormalTiling, tooltip:"Determines how often the texture repeats over the UV coordinates. Smaller values result in the texture being stretched larger, higher numbers means it becomes smaller"); + UI.Material.DrawVector2Ticker(_NormalTiling, "Tiling"); + + EditorGUI.indentLevel++; + UI.Material.DrawFloatTicker(_NormalSubTiling, "Sub-layer (multiplier)", "The effect uses a 2nd texture sample, for variety. This value controls the speed of this layer"); + EditorGUI.indentLevel--; + UI.Material.DrawFloatTicker(_NormalSpeed, tooltip:"[Multiplied by the animation speed set under the General tab]\n\nControls how fast the texture moves in the animation direction. A negative value (-) makes it move in the opposite direction", showReverse:true); + EditorGUI.indentLevel++; + UI.Material.DrawFloatTicker(_NormalSubSpeed, "Sub-layer (multiplier)", tooltip: "Multiplier for the 2nd texture sample.", showReverse:true); + EditorGUI.indentLevel--; + if (_RiverModeOn.floatValue > 0 && _NormalSubSpeed.floatValue < 0) + { + EditorGUILayout.HelpBox("River Mode is enabled, negative speed values create upstream animations", MessageType.None); + } + + EditorGUILayout.Space(); + + DrawShaderProperty(_DistanceNormalsOn, new GUIContent("Distance normals", "Resamples normals in the distance, at a larger scale. At the cost some additional shading calculations, tiling artifacts can be greatly reduced")); + + if (_DistanceNormalsOn.floatValue > 0 || _DistanceNormalsOn.hasMixedValue) + { + DrawTextureSelector(_BumpMapLarge, ref normalMapTextures); + + UI.Material.DrawFloatTicker(_DistanceNormalsTiling, "Tiling"); + + UI.Material.DrawMinMaxSlider(_DistanceNormalsFadeDist, 0f, 500, "Blend distance range", tooltip:"Min/max distance range (from the camera) the effect should to blend in"); + } + } + + EditorGUILayout.Space(); + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawUnderwater() + { + underwaterSection.DrawHeader(() => SwitchSection(underwaterSection)); + + if (EditorGUILayout.BeginFadeGroup(underwaterSection.anim.faded)) + { + EditorGUILayout.Space(); + + DrawShaderProperty(_CausticsOn, new GUIContent("Caustics", "Caustics are normally a complex optical effect, created by light passing through a surface and refracting." + + "\n\nA static caustics texture can be used to approximate this effect by projecting it onto the opaque geometry behind the water surface." + + "\n\nIf Advanced shading is enabled, point- and spot lights also create this effect.")); + + if (_CausticsOn.floatValue == 1 || _CausticsOn.hasMixedValue) + { + DrawTextureSelector(_CausticsTex, ref causticsTextures); + + UI.Material.DrawFloatField(_CausticsBrightness, "Brightness", "The intensity of the incoming light controls how strongly the effect is visible. This parameter acts as a multiplier."); + if(!_CausticsBrightness.hasMixedValue) _CausticsBrightness.floatValue = Mathf.Max(0, _CausticsBrightness.floatValue); + + DrawShaderProperty(_EnableDirectionalCaustics, new GUIContent("Directional Projection", "Projects the effect from the main directional light's direction. Feature needs to also be enabled on the render feature (default)." + + "\n\nThis involves reconstructing the underwater geometry's normal, using 3 additional depth texture samples. Disable when performance is critical")); + DrawRenderFeatureNotification(); + + using (new EditorGUI.DisabledGroupScope((_DisableDepthTexture.floatValue == 1f && _CausticsOn.floatValue == 1f))) + { + if (renderFeature && _EnableDirectionalCaustics.floatValue > 0) + { + UI.DrawNotification(renderFeature.allowDirectionalCaustics == false, "Directional caustics are disabled on the render feature", MessageType.Warning); + } + } + + EditorGUILayout.Separator(); + + DrawShaderProperty(_CausticsChromance, new GUIContent(_CausticsChromance.displayName, "Blends between grayscale and RGB caustics")); + DrawShaderProperty(_CausticsDistortion, new GUIContent(_CausticsDistortion.displayName, "Distort the caustics based on the normal map")); + + EditorGUILayout.Space(); + + UI.Material.DrawFloatTicker(_CausticsTiling); + UI.Material.DrawFloatTicker(_CausticsSpeed); + } + if (_FogSource.floatValue == 1f && _CausticsOn.floatValue == 1f) + { + UI.DrawNotification("Caustics project on the water surface itself, because the \"Disable depth texture\" option is enabled.", MessageType.None); + + UI.DrawNotification(_DisableDepthTexture.floatValue == 1 && !_DisableDepthTexture.hasMixedValue, "\nDepth texture is disabled, so water has no means of creating shallow water. Caustics will not seem visible.\n\nEnable the use of vertex color opacity to manually paint shallow water.\n", "Enable", () => _FogSource.floatValue = 1); + } + + EditorGUILayout.Space(); + + DrawShaderProperty(_RefractionOn, new GUIContent("Refraction", "Simulates how the surface behind the water appears distorted, because the light passes through the water's curvy surface")); + + if (_RefractionOn.floatValue == 1f || _RefractionOn.hasMixedValue) + { + if (UniversalRenderPipeline.asset) + { + UI.DrawNotification(UniversalRenderPipeline.asset.opaqueDownsampling != Downsampling.None, "Opaque texture is rendering at a lower resolution, water may appear blurry"); + } + + if (_NormalMapOn.floatValue == 0f && _WavesOn.floatValue == 0f) + { + UI.DrawNotification("Refraction will have little effect if normals and waves are disabled", MessageType.Warning); + } + + DrawShaderProperty(_RefractionStrength, new GUIContent("Strength", "Note: Distortion strength is influenced by the strength of the normal map texture"), 1); + if (_ShadingMode.floatValue == 1f || _ShadingMode.hasMixedValue) + { + DrawShaderProperty(_RefractionChromaticAberration, new GUIContent("Chromatic Aberration (Max)", + "Creates a prism-like rainbow effect where the refraction is the strongest. Controls the maximum offset, and is based on refraction strength (both the parameter and the context)\n\nCan create some discrepancies in the underwater fog!")); + } + } + else + { + if (underwaterRenderingInstalled && _ShadingMode.floatValue > 0.5) + { + UI.DrawNotification("[Underwater Rendering] It's recommended to keep Refraction enabled for correct shading of geometry above the water surface.", MessageType.Warning); + } + } + + if (underwaterRenderingInstalled) + { + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Underwater Surface Rendering", EditorStyles.boldLabel); + DrawShaderProperty(_UnderwaterSurfaceSmoothness, new GUIContent("Surface Smoothness", "Controls how distorted everything above the water appears from below")); + DrawShaderProperty(_UnderwaterRefractionOffset, new GUIContent("Refraction offset", "Creates a wide \"circle\" of visible air above the camera. Pushes it further away from the camera")); + DrawShaderProperty(_UnderwaterReflectionStrength, new GUIContent("Reflection Strength", "Visibility of the rendered reflections")); + } + + EditorGUILayout.Space(); + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawFoam() + { + foamSection.DrawHeader(() => SwitchSection(foamSection)); + + if (EditorGUILayout.BeginFadeGroup(foamSection.anim.faded)) + { + EditorGUILayout.Space(); + + DrawShaderProperty(_FoamOn, new GUIContent("Enable", "Draws a cross-animated foam texture on the water surface")); + if (_FoamOn.floatValue > 0 || _FoamOn.hasMixedValue) + { + UI.Material.DrawColorField(_FoamColor, true, "Color", "Color of the foam, the alpha channel controls opacity"); + + DrawTextureSelector(_FoamTex, ref foamTextures); + + EditorGUILayout.LabelField("Application", EditorStyles.boldLabel); + DrawShaderProperty(_VertexColorFoam, new GUIContent("Vertex color painting (A)", + "Enable the usage of the vertex color Alpha channel to add foam")); + + DrawShaderProperty(_FoamBaseAmount, new GUIContent("Base amount", "Adds a uniform amount of foam")); + + if (_RiverModeOn.floatValue > 0 || _RiverModeOn.hasMixedValue) + { + DrawShaderProperty(_SlopeFoam, new GUIContent(_SlopeFoam.displayName, "Control the amount of Surface Foam that draws on slopes")); + } + + DrawShaderProperty(_FoamCrestMinMaxHeight, new GUIContent(_FoamCrestMinMaxHeight.displayName, "Add foam between a min and max wave height")); + + DrawShaderProperty(_FoamClipping, new GUIContent("Clipping", "Gradually cuts off the texture, based on its gradient")); + DrawShaderProperty(_FoamStrength, new GUIContent("Strength", "Scales the amount of foam")); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Bubbles", EditorStyles.boldLabel); + + DrawShaderProperty(_FoamBubblesSpread, new GUIContent("Spread", "Blends in the GREEN channel of the foam texture, which is a blurred version of the foam map")); + DrawShaderProperty(_FoamBubblesStrength, new GUIContent("Strength", "Blends in the GREEN channel of the foam texture, which is a blurred version of the foam map")); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Tiling & Offset", EditorStyles.boldLabel); + //UI.Material.DrawFloatTicker(_FoamTiling, tooltip:"Determines how often the texture repeats over the UV coordinates. Smaller values result in the texture being stretched larger, higher numbers means it becomes smaller"); + UI.Material.DrawVector2Ticker(_FoamTiling, "Tiling"); + EditorGUI.indentLevel++; + UI.Material.DrawFloatTicker(_FoamSubTiling, "Sub-layer (multiplier)", "The effect uses a 2nd texture sample, for variety. This value controls the speed of this layer"); + EditorGUI.indentLevel--; + UI.Material.DrawFloatTicker(_FoamSpeed, tooltip:"[Multiplied by the animation speed set under the General tab]\n\nControls how fast the texture moves in the animation direction. A negative value (-) makes it move in the opposite direction", showReverse:true); + EditorGUI.indentLevel++; + UI.Material.DrawFloatTicker(_FoamSubSpeed, "Sub-layer (multiplier)", tooltip:"Multiplier for the 2nd texture sample.", showReverse:true); + EditorGUI.indentLevel--; + if (_RiverModeOn.floatValue > 0 && _FoamSubSpeed.floatValue < 0) + { + EditorGUILayout.HelpBox("River Mode is enabled, negative speed values create upstream animations", MessageType.None); + } + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Distance foam", EditorStyles.boldLabel); + + DrawShaderProperty(_FoamDistanceOn, new GUIContent("Enable", "Blends in a 2nd layer of surface foam, visible within the configured viewing range. Mitigates visible tiling at the cost of more shading calculations")); + + if (_FoamDistanceOn.floatValue > 0 || _FoamDistanceOn.hasMixedValue) + { + DrawShaderProperty(_DistanceFoamFadeDist, "Fade start/end"); + UI.Material.DrawFloatTicker(_DistanceFoamTiling, "Tiling multiplier", tooltip:"Determines how often the texture repeats over the UV coordinates. Smaller values result in the texture being stretched larger, higher numbers means it becomes smaller"); + } + + EditorGUILayout.Space(); + + if (dynamicEffectsInstalled && (_ReceiveDynamicEffectsFoam.floatValue > 0.5 || _ReceiveDynamicEffectsFoam.hasMixedValue)) + { + EditorGUILayout.LabelField("Dynamic Effects", EditorStyles.boldLabel); + + DrawTextureSelector(_FoamTexDynamic, ref foamTextures); + DrawShaderProperty(_FoamClippingDynamic, new GUIContent("Clipping", "Gradually cuts off the texture, based on its gradient")); + + EditorGUILayout.Separator(); + + UI.Material.DrawFloatTicker(_FoamTilingDynamic, tooltip:"Determines how often the texture repeats over the UV coordinates. Smaller values result in the texture being stretched larger, higher numbers means it becomes smaller"); + EditorGUI.indentLevel++; + UI.Material.DrawFloatTicker(_FoamSubTilingDynamic, "Sub-layer (multiplier)", "The effect uses a 2nd texture sample, for variety. This value controls the speed of this layer"); + EditorGUI.indentLevel--; + UI.Material.DrawFloatTicker(_FoamSpeedDynamic, tooltip:"[Multiplied by the animation speed set under the General tab]\n\nControls how fast the texture moves in the animation direction. A negative value (-) makes it move in the opposite direction", showReverse:true); + EditorGUI.indentLevel++; + UI.Material.DrawFloatTicker(_FoamSubSpeedDynamic, "Sub-layer (multiplier)", tooltip:"Multiplier for the 2nd texture sample.", showReverse:true); + EditorGUI.indentLevel--; + } + + EditorGUILayout.Space(); + + DrawShaderProperty(_FoamDistortion, new GUIContent(_FoamDistortion.displayName, "Distorts the foam by the amount of vertical displacement, such as that created by waves")); + } + + EditorGUILayout.Space(); + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawIntersection() + { + intersectionSection.DrawHeader(() => SwitchSection(intersectionSection)); + + if (EditorGUILayout.BeginFadeGroup(intersectionSection.anim.faded)) + { + EditorGUILayout.Space(); + + DrawShaderProperty(_IntersectionFoamOn, new GUIContent("Enable", "Draws an animated foam effect on the geometry where it intersects with the water surface.")); + + if (_IntersectionFoamOn.floatValue > 0 || _IntersectionFoamOn.hasMixedValue) + { + EditorGUILayout.Space(); + + DrawShaderProperty(_IntersectionSource, new GUIContent("Gradient source", null, "The effect requires a linear gradient to work with, something that represents the distance from the intersection point out towards the water." + + "\n\nThis parameter control what's being used as the source to approximate this information.")); + DrawShaderProperty(_IntersectionLength, new GUIContent(_IntersectionLength.displayName, "Distance from objects/shore")); + DrawShaderProperty(_IntersectionFalloff, new GUIContent(_IntersectionFalloff.displayName, "The falloff represents a gradient")); + + EditorGUILayout.Separator(); + + DrawShaderProperty(_IntersectionSharp, new GUIContent(_IntersectionSharp.displayName)); + if (_IntersectionSharp.floatValue == 1f || _IntersectionSharp.hasMixedValue) + { + EditorGUI.indentLevel++; + DrawShaderProperty(_IntersectionClipping, new GUIContent(_IntersectionClipping.displayName, "Clips the effect based on the texture's gradient.")); + EditorGUI.indentLevel--; + } + + EditorGUILayout.Separator(); + + if (_IntersectionSource.floatValue == 0 && _DisableDepthTexture.floatValue == 1f) + { + UI.DrawNotification("The depth texture option is disabled in the Rendering tab", + MessageType.Error); + } + + + materialEditor.TextureProperty(_IntersectionNoise, "Texture (R=Noise)"); + UI.Material.DrawColorField(_IntersectionColor, true, "Color", "Alpha channel controls the opacity"); + + EditorGUILayout.Separator(); + + EditorGUILayout.LabelField("Noise Tiling & Speed", EditorStyles.boldLabel); + + UI.Material.DrawFloatTicker(_IntersectionTiling, "Tiling"); + UI.Material.DrawFloatTicker(_IntersectionSpeed, "Speed", "This value is multiplied by the Animation Speed value in the General tab"); + + EditorGUILayout.Separator(); + + if (_NormalMapOn.floatValue > 0 || _NormalMapOn.hasMixedValue) + { + DrawShaderProperty(_IntersectionDistortion, new GUIContent("Distortion", "Offset the texture sample by the normal map")); + } + + EditorGUILayout.Separator(); + + EditorGUILayout.LabelField("Ripples", EditorStyles.boldLabel); + UI.Material.DrawFloatTicker(_IntersectionRippleDist, "Frequency", "Distance between each ripples over the total intersection length"); + UI.Material.DrawFloatTicker(_IntersectionRippleSpeed,"Speed", "Speed at which the ripples move"); + DrawShaderProperty(_IntersectionRippleStrength, new GUIContent("Strength", "Sets how much the ripples should be blended in with the effect")); + } + + EditorGUILayout.Space(); + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawLightReflections() + { + lightReflectionSection.DrawHeader(() => SwitchSection(lightReflectionSection)); + + if (EditorGUILayout.BeginFadeGroup(lightReflectionSection.anim.faded)) + { + EditorGUILayout.Space(); + + DrawShaderProperty(_SpecularReflectionsOn, new GUIContent("Enable", + "Creates a specular reflection based on the relationship between the light-, camera and water surface angle." + + "\n\nA combination between the Size and Distortion parameter can achieve different visual styles")); + + if (_SpecularReflectionsOn.floatValue > 0f || _SpecularReflectionsOn.hasMixedValue) + { + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Directional Light", EditorStyles.boldLabel); + + DrawShaderProperty(_SunReflectionStrength, new GUIContent("Strength", "This value is multiplied over the sun light's intensity")); + if (UniversalRenderPipeline.asset) + { + if(UniversalRenderPipeline.asset.supportsHDR == false) EditorGUILayout.HelpBox("Note: HDR is disabled on the current pipeline asset", MessageType.None); + } + if(!_SunReflectionStrength.hasMixedValue) _SunReflectionStrength.floatValue = Mathf.Max(0, _SunReflectionStrength.floatValue); + + DrawShaderProperty(_SunReflectionSize, new GUIContent("Size", "Determines how wide the reflection appears")); + DrawShaderProperty(_SunReflectionSharp, new GUIContent("Sharp", "Tightens the reflection towards a hard edge")); + DrawShaderProperty(_SunReflectionDistortion, new GUIContent("Distortion", "Distortion is largely influenced by the strength of the normal map texture and wave curvature")); + + if (_LightingOn.floatValue > 0f || _LightingOn.hasMixedValue) + { + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Point & Spot lights", EditorStyles.boldLabel); + + DrawShaderProperty(_PointSpotLightReflectionStrength, new GUIContent("Strength", "This value is multiplied over the light's intensity")); + if (UniversalRenderPipeline.asset) + { + if(UniversalRenderPipeline.asset.supportsHDR == false) EditorGUILayout.HelpBox("Note: HDR is disabled on the current pipeline asset", MessageType.None); + } + if(!_PointSpotLightReflectionStrength.hasMixedValue) _PointSpotLightReflectionStrength.floatValue = Mathf.Max(0, _PointSpotLightReflectionStrength.floatValue); + + DrawShaderProperty(_PointSpotLightReflectionSize, new GUIContent("Size", "Specular reflection size for point/spot lights")); + DrawShaderProperty(_PointSpotLightReflectionSharp, new GUIContent("Sharp", "Tightens the reflection towards a hard edge")); + DrawShaderProperty(_PointSpotLightReflectionDistortion, new GUIContent("Distortion", "Distortion is largely influenced by the strength of the normal map texture and wave curvature")); + } + } + + EditorGUILayout.Space(); + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawEnvironmentReflections() + { + environmentReflectionSection.DrawHeader(() => SwitchSection(environmentReflectionSection)); + + if (EditorGUILayout.BeginFadeGroup(environmentReflectionSection.anim.faded)) + { + EditorGUILayout.Space(); + + DrawShaderProperty(_EnvironmentReflectionsOn, new GUIContent("Enable", "Enable reflections from the skybox, reflection probes, screen-space- and planar -reflections.")); + + var customReflection = RenderSettings.customReflectionTexture; + + if (_EnvironmentReflectionsOn.floatValue > 0 && RenderSettings.defaultReflectionMode == DefaultReflectionMode.Custom && !customReflection) + { + UI.DrawNotification("Lighting settings: Environment reflections source is set to \"Custom\" without a cubemap assigned. No reflections may be visible", MessageType.Warning); + } + + UI.DrawNotification(_EnvironmentReflectionsOn.floatValue > 0 && QualitySettings.realtimeReflectionProbes == false && PlanarReflectionRenderer.Instances.Count == 0, + "Realtime reflection probes are disabled in Quality Settings", "Enable", () => + { + QualitySettings.realtimeReflectionProbes = true; + },MessageType.Error); + + EditorGUILayout.Space(); + + if (_EnvironmentReflectionsOn.floatValue > 0 || _EnvironmentReflectionsOn.hasMixedValue) + { + DrawShaderProperty(_ReflectionStrength, _ReflectionStrength.displayName); + if (_LightingOn.floatValue > 0f || _LightingOn.hasMixedValue) + { + DrawShaderProperty(_ReflectionLighting, new GUIContent(_ReflectionLighting.displayName, "Technically, lighting shouldn't be applied to the reflected image. If reflections aren't updated in realtime, but lighting is, this is still beneficial.\n\nThis controls how much lighting affects the reflection")); + } + + EditorGUILayout.Space(); + + DrawShaderProperty(_ReflectionFresnel, new GUIContent(_ReflectionFresnel.displayName, "Masks the reflection by the viewing angle in relationship to the surface (including wave curvature), which is more true to nature (known as fresnel)")); + DrawShaderProperty(_ReflectionDistortion, new GUIContent(_ReflectionDistortion.displayName, "Distorts the reflection by the wave normals and normal map")); + DrawShaderProperty(_ReflectionBlur, new GUIContent(_ReflectionBlur.displayName, "Blurs the reflection probe, this can be used for a more general reflection of colors")); + + EditorGUILayout.Space(); + + DrawShaderProperty(_ScreenSpaceReflectionsEnabled, new GUIContent(_ScreenSpaceReflectionsEnabled.displayName, "This technique simulates reflections based on what's already visible on the screen. " + + "\nSSR calculates reflections from the water surface's curvature by using the opaque texture, rather than re-rendering the entire scene. " + + "\n\n" + + "While it improves visual quality with minimal performance impact compared to full reflections, SSR can produce artifacts or incomplete reflections for objects not visible on the screen," + + "\nas it only has information from the camera’s current viewpoint available." + + "\n\nWhere SSR fails to calculate a reflection it falls back on the reflection probe")); + + UI.DrawNotification( + UniversalRenderPipeline.asset.supportsCameraOpaqueTexture == false && (_ScreenSpaceReflectionsEnabled.floatValue > 0), + "Opaque texture is disabled, which is required this effect", + "Enable", + StylizedWaterEditor.EnableOpaqueTexture, + MessageType.Error); + + if (renderFeature) + { + UI.DrawNotification(renderFeature.screenSpaceReflectionSettings.allow == false, "Screen-space reflections are disabled on the active render feature"); + } + else + { + UI.DrawNotification(_ScreenSpaceReflectionsEnabled.floatValue > 0.5, "Render feature hasn't been set up on the default renderer. SSR will have no effect.", MessageType.Warning); + } + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField($"Planar Reflections renderers in scene: {PlanarReflectionRenderer.Instances.Count}", EditorStyles.miniLabel); + if (PlanarReflectionRenderer.Instances.Count > 0) + { + using (new EditorGUILayout.VerticalScope(EditorStyles.textArea)) + { + foreach (PlanarReflectionRenderer r in PlanarReflectionRenderer.Instances) + { + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField(r.name); + if (GUILayout.Button("Select")) + { + Selection.activeGameObject = r.gameObject; + } + } + } + } + } + + EditorGUILayout.Space(); + } + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawWaves() + { + wavesSection.DrawHeader(() => SwitchSection(wavesSection)); + + if (EditorGUILayout.BeginFadeGroup(wavesSection.anim.faded)) + { + EditorGUILayout.Space(); + + DrawShaderProperty(_WavesOn, "Enable"); + + EditorGUILayout.Space(); + + if (_WavesOn.floatValue == 1 || _WavesOn.hasMixedValue) + { + DrawShaderProperty(_WaveProfile, "Wave Profile"); + //EditorGUILayout.LabelField(AssetDatabase.GetAssetPath(_WaveProfile.textureValue), EditorStyles.miniLabel); + EditorGUI.indentLevel++; + UI.Material.DrawIntSlider(_WaveMaxLayers, tooltip:"Clamp the maximum number of wave layers being calculated"); + EditorGUI.indentLevel--; + + EditorGUILayout.Space(); + + UI.Material.DrawFloatTicker(_WaveSpeed, label: "Speed multiplier"); + UI.Material.DrawFloatTicker(_WaveFrequency, label: "Wave length multiplier"); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Displacement", EditorStyles.boldLabel); + DrawShaderProperty(_WaveHeight, new GUIContent(_WaveHeight.displayName, "Scales the amplitude of the waves (this also scales the normal strength)")); + EditorGUI.indentLevel++; + DrawShaderProperty(_VertexColorWaveFlattening, new GUIContent("Vertex color flattening (B)", + "The Blue vertex color channel flattens waves")); + EditorGUI.indentLevel--; + DrawShaderProperty(_WaveSteepness, new GUIContent(_WaveSteepness.displayName, "Sharpness, depending on other settings here, a too high value will causes vertices to overlap. This also creates horizontal movement")); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Shading", EditorStyles.boldLabel); + + if (_FlatShadingOn.floatValue < 0.5) + { + DrawShaderProperty(_WaveNormalStr, new GUIContent(_WaveNormalStr.displayName, "Normals affect how curved the surface is perceived for direct and ambient light. Without this, the water will appear flat")); + } + + UI.Material.DrawMinMaxSlider(_WaveFadeDistance, 0f, 1000f, "Fade Distance", "Fades out the waves between the start- and end distance. This can avoid tiling artifacts in the distance"); + } + + EditorGUILayout.Space(); + } + EditorGUILayout.EndFadeGroup(); + } + + private void DrawShaderProperty(MaterialProperty prop, string label, int indent = 0) + { + DrawShaderProperty(prop, new GUIContent(label), indent); + } + + private void DrawShaderProperty(MaterialProperty prop, GUIContent content, int indent = 0) + { + materialEditor.ShaderProperty(prop, content, indent); + + if (UI.ExpandTooltips && content.tooltip != string.Empty) + { + EditorGUILayout.HelpBox(content.tooltip, MessageType.None); + } + } + + private void DrawTextureSelector(MaterialProperty prop, ref List textures) + { + using (new EditorGUILayout.HorizontalScope()) + { + materialEditor.TextureProperty(prop, prop.displayName); + + GUILayout.Space(-2); + + if (GUILayout.Button(new GUIContent("▼", "Select a texture"), GUILayout.Height(65f), GUILayout.Width(21))) + { + GenericMenu menu = new GenericMenu(); + + for (int i = 0; i < textures.Count; i++) + { + Texture2D tex = textures[i]; + menu.AddItem(new GUIContent(textures[i].name, textures[i]), prop.textureValue && prop.textureValue == tex, () => + { + prop.textureValue = tex; + }); + } + + menu.ShowAsContext(); + } + } + } + + private void SwitchSection(UI.Material.Section target) + { + foreach (var section in sections) + { + section.Expanded = (target == section) && !section.Expanded; + //section.Expanded = true; + } + } + #endregion + + private void UpgradeObsoleteProperties(Material material) + { + bool upgraded = false; + float _VertexColorDepth = GetLegacyFloatProperty(material, "_VertexColorDepth"); + + //Any material not yet upgraded would have this property... + if (_VertexColorDepth >= 0) + { + upgraded = true; + + _VertexColorTransparency.floatValue = _VertexColorDepth; + + DeleteFloatProperty(material, "_VertexColorDepth"); + } + + float _ReceiveDynamicEffects = GetLegacyFloatProperty(material, "_ReceiveDynamicEffects"); + + if (_ReceiveDynamicEffects > 0) + { + upgraded = true; + + _ReceiveDynamicEffectsHeight.floatValue = _ReceiveDynamicEffects; + + DeleteFloatProperty(material, "_ReceiveDynamicEffects"); + } + + if(upgraded)Debug.Log($"[Stylized Water 3] {material.name} upgraded to v3.0.3+ format"); + } + + private float GetLegacyFloatProperty(Material mat, string name) + { + SerializedObject materialObj = new SerializedObject(mat); + + //Note: Vectors are actually stored as colors + SerializedProperty floatProperties = materialObj.FindProperty("m_SavedProperties.m_Floats"); + + float prop = Mathf.NegativeInfinity; + + if (floatProperties != null && floatProperties.isArray) + { + for (int j = floatProperties.arraySize-1; j >= 0; j--) + { + string propName = floatProperties.GetArrayElementAtIndex(j).displayName; + + if (propName == name) + { + SerializedProperty val = floatProperties.GetArrayElementAtIndex(j).FindPropertyRelative("second"); + + #if SWS_DEV + Debug.Log($"Found obsolete property \"{propName}\" with value: {val.floatValue} on material \"{mat.name}\""); + #endif + + return val.floatValue; + } + } + } + + return prop; + } + + private void DeleteFloatProperty(Material mat, string name) + { + SerializedObject materialObj = new SerializedObject(mat); + + SerializedProperty floatProperties = materialObj.FindProperty("m_SavedProperties.m_Floats"); + + if (floatProperties != null && floatProperties.isArray) + { + for (int j = floatProperties.arraySize-1; j >= 0; j--) + { + string propName = floatProperties.GetArrayElementAtIndex(j).displayName; + + if (propName == name) + { + floatProperties.DeleteArrayElementAtIndex(j); + materialObj.ApplyModifiedProperties(); + + EditorUtility.SetDirty(mat); + + #if SWS_DEV + Debug.Log($"Deleted obsolete material property: {name}"); + #endif + } + } + } + } +#else + public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] props) + { + UI.DrawNotification("The Universal Render Pipeline package v" + AssetInfo.MIN_URP_VERSION + " or newer is not installed", MessageType.Error); + } +#endif + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs.meta b/Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs.meta new file mode 100644 index 00000000..7a92d550 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: f6df0d541f8b14642985c92afdb9f538 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs b/Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs new file mode 100644 index 00000000..d5e5a394 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs @@ -0,0 +1,316 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#if SWS_DEV +#define ENABLE_SHADER_STRIPPING_LOG +#endif + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Rendering; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Serialization; +using Debug = UnityEngine.Debug; +using Object = UnityEngine.Object; +using Random = UnityEngine.Random; +#if URP +using UnityEngine.Rendering.Universal; +#endif + +namespace StylizedWater3 +{ + public static class ShaderConfigurator + { + public const string DEFAULT_SHADER_GUID = "823f6b206953b674a9a64f9e3ec57752"; + + public static Shader GetDefaultShader() + { + string defaultShaderPath = AssetDatabase.GUIDToAssetPath(DEFAULT_SHADER_GUID); + Shader defaultShader = AssetDatabase.LoadAssetAtPath(defaultShaderPath); + + return defaultShader; + } + + public static ShaderMessage[] GetErrorMessages(Shader shader) + { + ShaderMessage[] messages = null; + + int n = ShaderUtil.GetShaderMessageCount(shader); + + if (n < 1) return messages; + + messages = ShaderUtil.GetShaderMessages(shader); + + //Filter for errors + messages = messages.Where(x => x.severity == ShaderCompilerMessageSeverity.Error).ToArray(); + + return messages; + } + + #if URP + //Strips keywords from the shader for features belonging to newer URP versions. + private class KeywordStripper : IPreprocessShaders + { + private const string LOG_FILEPATH = "Logs/Stylized Water 3 Compilation.log"; + + #if ENABLE_SHADER_STRIPPING_LOG + private System.Diagnostics.Stopwatch m_stripTimer = new System.Diagnostics.Stopwatch(); + #endif + + private List StrippedKeywords = new List(); + + //URP 18+ + private readonly ShaderKeyword _TEST = new ShaderKeyword("_TEST"); + + private readonly bool heightPrePassEnabled; + + #if SWS_DEV + [MenuItem("SWS/Debug/HeightPrePassEnabled")] + #endif + private static bool HeightPrePassEnabled() + { + bool state = false; + + if (StylizedWaterRenderFeature.RequireHeightPrePass) return true; + + //Check if the displacement pre-pass is enabled anywhere + for (int i = 0; i < GraphicsSettings.allConfiguredRenderPipelines.Length; i++) + { + UniversalRenderPipelineAsset pipeline = (UniversalRenderPipelineAsset)GraphicsSettings.allConfiguredRenderPipelines[i]; + + ScriptableRendererData[] renderers = PipelineUtilities.GetRenderDataList(pipeline); + + for (int j = 0; j < renderers.Length; j++) + { + StylizedWaterRenderFeature renderFeature = (StylizedWaterRenderFeature)PipelineUtilities.GetRenderFeature(renderers[j]); + + if (renderFeature) + { + state |= renderFeature.heightPrePassSettings.enable; + + #if SWS_DEV + //Debug.Log($"{renderers[j].name}. Enable?:{renderFeature.heightPrePassSettings.enable}"); + #endif + } + } + } + + #if SWS_DEV + //Debug.Log("Height pre-pass enabled somewhere: " + state); + #endif + + return state; + } + + //Note: Constructor is called once, when building starts + public KeywordStripper() + { + if (PlayerSettings.GetGraphicsAPIs(EditorUserBuildSettings.activeBuildTarget)[0] == GraphicsDeviceType.OpenGLES3) + { + if (UniversalRenderPipeline.asset.msaaSampleCount > 1) + { + Debug.LogWarning("[Stylized Water 3] You are deploying a build using the OpenGLES 3.0 graphics API with MSAA enabled (in your URP pipeline asset). Due to a bug in some graphics chips, transparent materials (including the water) will not render. " + + "Disable MSAA, or use the Vulkan graphics API", UniversalRenderPipeline.asset); + } + } + + //Check if the displacement pre-pass is enabled anywhere + heightPrePassEnabled = HeightPrePassEnabled(); + + StrippedKeywords.Clear(); + + if (!heightPrePassEnabled) + { + StrippedKeywords.Add(new ShaderKeyword(ShaderParams.Keywords.WaterHeightPass)); + } + + //Note: Keywords for extensions are only injected through the shader generator. Hence they don't need to be stripped + + #if !UNITY_6000_0_OR_NEWER + StrippedKeywords.Add(_TEST); + #endif + + LogInitialization(); + } + + public int callbackOrder => 0; + + public void OnProcessShader(Shader shader, ShaderSnippetData snippet, IList compilerDataList) + { + #if URP + if (UniversalRenderPipeline.asset == null || compilerDataList == null || compilerDataList.Count == 0) return; + + //Only run for specific shaders + if (shader.name.Contains("Stylized Water 3") == false) return; + + LogStart(shader, snippet, compilerDataList); + + var inputShaderVariantCount = compilerDataList.Count; + for (int i = 0; i < inputShaderVariantCount;) + { + //If any of the excluded keywords are enabled in this variant, strip it + bool removeInput = StripUnused(shader, compilerDataList[i], snippet); + + // Remove at swap back + if (removeInput) + compilerDataList[i] = compilerDataList[--inputShaderVariantCount]; + else + ++i; + } + + if (compilerDataList is List inputDataList) + { + inputDataList.RemoveRange(inputShaderVariantCount, inputDataList.Count - inputShaderVariantCount); + } + else + { + for (int i = compilerDataList.Count - 1; i >= inputShaderVariantCount; --i) + compilerDataList.RemoveAt(i); + } + + LogStrippingEnd(compilerDataList.Count); + #endif + } + + private bool StripUnused(Shader shader, ShaderCompilerData compilerData, ShaderSnippetData snippet) + { + if (StripPass(shader, snippet)) + { + return true; + } + + foreach (var keyword in StrippedKeywords) + { + if (StripKeyword(shader, keyword, compilerData, snippet)) + { + return true; + } + } + + return false; + } + + private bool StripPass(Shader shader, ShaderSnippetData snippet) + { + if (heightPrePassEnabled == false && snippet.passName == ShaderParams.Passes.HeightPrePass) + { + Log($"- Stripped Pass {snippet.passName} ({shader.name}) (Stage: {snippet.shaderType})"); + + return true; + } + + return false; + } + + private bool StripKeyword(Shader shader, ShaderKeyword keyword, ShaderCompilerData compilerData, ShaderSnippetData snippet) + { + if (compilerData.shaderKeywordSet.IsEnabled(keyword)) + { + LogStripping(shader, keyword, snippet); + return true; + } + + return false; + } + + #region Logging + struct StrippingLog + { + public Shader shader; + public ShaderKeyword keyword; + public string passName; + public ShaderType shaderType; + } + + private void LogInitialization() + { + #if ENABLE_SHADER_STRIPPING_LOG + //Clear log file first + File.WriteAllLines(LOG_FILEPATH, new string[] {}); + + Log("KeywordStripper initialized...", true); + + Log(string.Empty); + + Log($"Displacement Pre-pass enabled in build: {heightPrePassEnabled}", true); + + Log(string.Empty); + + for (int i = 0; i < StrippedKeywords.Count; i++) + { + Log($"• {StrippedKeywords[i].name} keyword to be stripped"); + } + + Log($"{StrippedKeywords.Count} total keywords to be stripped"); + #endif + } + + private void LogStart(Shader shader, ShaderSnippetData snippet, IList compilerDataList) + { + #if ENABLE_SHADER_STRIPPING_LOG + m_stripTimer.Start(); + + var text = $"OnProcessShader running for {shader.name}. (Pass: {snippet.passName}) (Stage: {snippet.shaderType}). Num variants: {compilerDataList.Count}"; + + Log(text, true); + #endif + } + + StrippingLog prevLog; + + private void LogStripping(Shader shader, ShaderKeyword keyword, ShaderSnippetData snippet) + { + #if ENABLE_SHADER_STRIPPING_LOG + + //Try to avoid spamming the log with duplicates, this otherwise slows down compilation to a crawl + if (prevLog.keyword.index == keyword.index && prevLog.shader == shader && prevLog.passName == snippet.passName && prevLog.shaderType == snippet.shaderType) + { + //File.AppendAllText(LOG_FILEPATH, "- Skipping log!\n" ); + return; + } + + prevLog.shader = shader; + prevLog.keyword = keyword; + prevLog.passName = snippet.passName; + prevLog.shaderType = snippet.shaderType; + + var text = $"- Stripped {keyword.name} ({shader.name}) variant. (Pass {snippet.passName}) (Stage: {snippet.shaderType})"; + + Log(text); + #endif + } + + private void LogStrippingEnd(int count) + { + #if ENABLE_SHADER_STRIPPING_LOG + m_stripTimer.Stop(); + System.TimeSpan stripTimespan = m_stripTimer.Elapsed; + + var text = $"Stripping took {stripTimespan.Minutes}m{stripTimespan.Seconds}s ({stripTimespan.Milliseconds}ms). Remaining variants to compile: {count}"; + + Log(text); + + m_stripTimer.Reset(); + #endif + } + + private void Log(string text, bool newLine = false) + { + #if ENABLE_SHADER_STRIPPING_LOG + File.AppendAllText(LOG_FILEPATH, (newLine ? "\n" : "") + text + "\n"); + #endif + } + #endregion + } + #endif + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs.meta b/Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs.meta new file mode 100644 index 00000000..9da8581a --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: c05c2f42980e1b649a1c2cd783b30b58 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs b/Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs new file mode 100644 index 00000000..f7cbfaaa --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs @@ -0,0 +1,484 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using UnityEditor; +using Object = UnityEngine.Object; + +namespace StylizedWater3 +{ + public static class TemplateParser + { + public const int SHADER_GENERATOR_VERSION_MAJOR = 5; + public const int SHADER_GENERATOR_MINOR = 1; + public const int SHADER_GENERATOR_PATCH = 3; + + //Stencil mask used by water shader. Currently used for underwater rendering + //Values 1-65 are used by deferred rendering + public const int STENCIL_REF = 65; + + //Converts relative include paths such as (../../Libraries/File.hlsl) to an absolute path + //Supports the source file being part of a package + public static string RelativeToAbsoluteIncludePath(string filePath, string relativePath) + { + string fileDir = Path.GetDirectoryName(filePath); + + //Count how many folders should be traversed up + int levels = relativePath.Split(new[] + { + ".." + }, StringSplitOptions.None).Length - 1; + + string traveledPath = fileDir; + if (levels > 0) + { + for (int i = 0; i < levels; i++) + { + //Remove the number of needed sub-directories needed to reach the destination + int strimStart = traveledPath.LastIndexOf(Path.DirectorySeparatorChar); + traveledPath = traveledPath.Remove(strimStart); + } + } + + //The directory without the "up" navigators + string relativeFolder = relativePath.Replace("../", string.Empty); + + //Concatenate them together + string absolutePath = traveledPath + "/" + relativeFolder; + + //Convert back- to forward slashes + absolutePath = absolutePath.Replace("\\", "/"); + + return absolutePath; + } + + //Pre-process the template to inject additional template contents into it + private static void ModifyTemplate(ref string[] lines, WaterShaderImporter importer) + { + StringBuilder templateBuilder = new StringBuilder(); + + for (int i = 0; i < lines.Length; i++) + { + string line = lines[i]; + + //Inject additional passes into template + if (line.Contains("%passes%")) + { + List passes = new List(importer.settings.additionalPasses); + + if (StylizedWaterEditor.UnderwaterRenderingInstalled()) + { + string maskPassGUID = "46c22cecd601401a875ca4554695986f"; + string maskPassPath = AssetDatabase.GUIDToAssetPath(maskPassGUID);; + + Object underwaterMaskPass = AssetDatabase.LoadAssetAtPath(maskPassPath); + + passes.Add(underwaterMaskPass); + } + + int passCount = passes.Count; + for (int j = 0; j < passCount; j++) + { + if (passes[j] != null) + { + string filePath = AssetDatabase.GetAssetPath(passes[j]); + + importer.RegisterDependency(filePath); + + string[] passContexts = File.ReadAllLines(filePath); + + for (int k = 0; k < passContexts.Length; k++) + { + templateBuilder.AppendLine(passContexts[k]); + } + } + } + + continue; + } + + templateBuilder.AppendLine(lines[i]); + } + lines = templateBuilder.ToString().Split(new[] { Environment.NewLine }, StringSplitOptions.None); + } + + public static string CreateShaderCode(string templatePath, ref string[] lines, WaterShaderImporter importer, bool tessellation = false) + { + if (importer == null) + { + throw new Exception("Failed to compile shader from template code. The importer is invalid, this should not even be possible. Whatever you did, undo it..."); + } + + //Extension installation states + var underwaterInstalled = StylizedWaterEditor.UnderwaterRenderingInstalled(); + var dynamicEffectsInstalled = StylizedWaterEditor.DynamicEffectsInstalled(); + + FogIntegration.Integration fogIntegration = importer.GetFogIntegration(); + + AssetInfo.VersionChecking.CheckUnityVersion(); + + //Shader name + string prefix = importer.settings.hidden ? "Hidden/" : string.Empty; + string suffix = tessellation ? ShaderParams.ShaderNames.TESSELLATION_NAME_SUFFIX : string.Empty; + string shaderName = $"{prefix}{AssetInfo.ASSET_NAME}/{importer.settings.shaderName}"; + + string shaderPath = importer.assetPath; + + ModifyTemplate(ref lines, importer); + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < lines.Length; i++) + { + //Ignore blank lines and comments for analysis + if (string.IsNullOrWhiteSpace(lines[i]) || lines[i].StartsWith("//")) + { + sb.AppendLine(lines[i]); + continue; + } + + //First non-space character + int indent = System.Text.RegularExpressions.Regex.Match(lines[i], "[^-\\s]").Index; + + string whitespace = lines[i].Replace(lines[i].Substring(indent), ""); + + //AppendLine using previous line's white spacing + void AddLine(string source) + { + sb.AppendLine(source.Insert(0, whitespace)); + } + + //Remove whitespaces + string line = lines[i].Remove(0, indent); + + bool Matches(string source) { return string.CompareOrdinal(source, line) == 0; } + + if (Matches("%asset_version%")) + { + AddLine($"//Asset version {AssetInfo.INSTALLED_VERSION}"); + continue; + } + + if (Matches("%compiler_version%")) + { + AddLine($"//Shader generator version: {new Version(SHADER_GENERATOR_VERSION_MAJOR, SHADER_GENERATOR_MINOR, SHADER_GENERATOR_PATCH)}"); + continue; + } + + if (Matches("%unity_version%")) + { + AddLine($"//Unity version: {AssetInfo.VersionChecking.GetUnityVersion()}"); + continue; + } + + if (Matches("%shader_name%")) + { + AddLine($"Shader \"{shaderName}{suffix}\""); + continue; + } + + if (Matches("%custom_directives%")) + { + foreach (WaterShaderImporter.Directive directive in importer.settings.customIncludeDirectives) + { + if(directive.enabled == false) continue; + + string directivePrefix = string.Empty; + + switch (directive.type) + { + case WaterShaderImporter.Directive.Type.define: + directivePrefix = "#define "; + break; + case WaterShaderImporter.Directive.Type.include: + directivePrefix = "#include "; + break; + case WaterShaderImporter.Directive.Type.include_with_pragmas: + directivePrefix = "#include_with_pragmas "; + break; + case WaterShaderImporter.Directive.Type.pragma: + directivePrefix = "#pragma "; + break; + } + + if (directive.value != string.Empty) AddLine($"{directivePrefix}{directive.value}"); + } + continue; + } + + if (Matches("%global_defines%")) + { + if (importer.settings.singleCausticsLayer) + { + AddLine("#define CAUSTICS_SINGLE_LAYER"); + } + + continue; + } + + if (Matches("%pragma_target%")) + { + if (tessellation) + { + AddLine("#pragma target 4.6"); + } + else + { + AddLine("#pragma target 3.0"); + } + + continue; + } + + if (Matches("%pragma_renderers%")) + { + if (tessellation) + { + AddLine("#pragma exclude_renderers gles"); + } + + continue; + } + + if (line.StartsWith("Fallback")) + { + if (tessellation) + { + //Fallback to non-tessellation variant (with without suffix) + AddLine($"Fallback \"{shaderName}\""); + //Test, disable fallback + //AddLine(line); + } + else + { + //Leave as is + AddLine(line); + } + + continue; + } + + if (Matches("%tessellation_properties%")) + { + if (tessellation) + { + AddLine("_TessValue(\"Max subdivisions\", Range(1, 64)) = 16"); + AddLine("_TessMin(\"Start Distance\", Float) = 0"); + AddLine("_TessMax(\"End Distance\", Float) = 15"); + } + + continue; + } + + if (Matches("%tessellation_directives%")) + { + if (tessellation) + { + AddLine("#define TESSELLATION_ON"); + AddLine("#pragma require tessellation tessHW"); + AddLine("#pragma hull Hull"); + AddLine("#pragma domain Domain"); + } + + continue; + } + + if (line.Contains("%stencilID%")) + { + int stencilID = STENCIL_REF; + + if (importer.settings.fogIntegration == FogIntegration.Assets.COZY) + { + + } + + line = line.Replace("%stencilID%", stencilID.ToString()); + AddLine(line); + + continue; + } + + if (Matches("%stencil%")) + { + + continue; + } + + if (Matches("%multi_compile_light_cookies%")) + { + if (importer.settings.lightCookies) + { + AddLine("#pragma multi_compile_fragment _ _LIGHT_COOKIES"); + } + + continue; + } + + if (line.Contains("%render_queue_offset%")) + { + int offset = 0; + + switch (fogIntegration.asset) + { + //case FogIntegration.Assets.COZY: offset = 2; + //break; + //case Fog.Assets.AtmosphericHeightFog : offset = 2; //Should actually render after the fog sphere, but asset inherently relies on double fog shading it seems? + //break; + default: offset = 0; + break; + } + + line = line.Replace("%render_queue_offset%", offset.ToString()); + AddLine(line); + + continue; + } + + if (Matches("%defines%")) + { + if (importer.settings.additionalLightCaustics) + { + AddLine("#define _ADDITIONAL_LIGHT_CAUSTICS"); + } + if (importer.settings.additionalLightTranslucency) + { + AddLine("#define _ADDITIONAL_LIGHT_TRANSLUCENCY"); + } + + continue; + } + + if (Matches("%multi_compile underwater rendering%")) + { + if (underwaterInstalled) + { + importer.configurationState.underwaterRendering = true; + + AddLine($"#pragma multi_compile_fragment _ {ShaderParams.Keywords.UnderwaterRendering}"); + } + + continue; + } + + if (Matches("%multi_compile_vertex dynamic effects%")) + { + if (dynamicEffectsInstalled) + { + importer.configurationState.dynamicEffects = true; + + AddLine($"#pragma multi_compile_vertex _ {ShaderParams.Keywords.DynamicEffects}"); + } + + continue; + } + + if (Matches("%multi_compile dynamic effects%")) + { + if (dynamicEffectsInstalled) + { + importer.configurationState.dynamicEffects = true; + + AddLine($"#pragma multi_compile _ {ShaderParams.Keywords.DynamicEffects}"); + } + + continue; + } + + if (line.StartsWith("#include ")) + { + string includePath = line.Replace("#include ", string.Empty); + //Remove parenthesis + includePath = includePath.Replace("\"", string.Empty); + + importer.RegisterDependency(includePath); + } + + if (importer.settings.type == WaterShaderImporter.WaterShaderSettings.ShaderType.WaterSurface) + { + if (Matches("%define_fog_integration%")) + { + AddLine($"#define {fogIntegration.asset.ToString()}"); + + if (fogIntegration.asset == FogIntegration.Assets.UnityFog) + { + AddLine("#pragma multi_compile_fog"); + } + + continue; + } + + /* include FogLibrary */ + if (Matches("%include_fog_integration_library%")) + { + //Default until otherwise valid + line = string.Empty; + + //Mark the asset integration as being compiled in + importer.configurationState.fogIntegration = fogIntegration; + + if (fogIntegration.asset != FogIntegration.Assets.None && fogIntegration.asset != FogIntegration.Assets.UnityFog) + { + string includePath = AssetDatabase.GUIDToAssetPath(fogIntegration.libraryGUID); + + importer.RegisterDependency(includePath); + + //Not found error + if (includePath == string.Empty) + { + if (EditorUtility.DisplayDialog(AssetInfo.ASSET_NAME, + fogIntegration.name + " fog shader library could not be found with the GUID \"" + fogIntegration.libraryGUID + "\".\n\n" + + "This means it was changed by the author (rare!), you deleted the \".meta\" file at some point, or the asset simply isn't installed.", "Ok")) + { + + } + } + else + { + var pragma = fogIntegration.includeWithPragmas ? "include_with_pragmas" : "include"; + line = $"#{pragma} \"{includePath}\""; + + AddLine(line); + continue; + } + } + } + } + + //Shaders created using "ShaderUtil.CreateShaderAsset" don't exist in a literal sense. Hence any relative file paths are invalid + //Convert them to absolute file paths + //Bonus: moving a shader file (or its folder) triggers it to re-import, thus always keeping the file path up-to-date + if (line.StartsWith("#include_library")) + { + string relativePath = line.Replace("#include_library ", string.Empty); + //Remove parenthesis + relativePath = relativePath.Replace("\"", string.Empty); + + string includePath = RelativeToAbsoluteIncludePath(shaderPath, relativePath); + + line = $"#include \"{includePath}\""; + + importer.RegisterDependency(includePath); + + AddLine(line); + continue; + } + + //Insert whitespace back in + line = line.Insert(0, whitespace); + + //Nothing special, keep whatever line this is + sb.AppendLine(line); + } + + //Convert to separate lines again + lines = sb.ToString().Split(new[] { Environment.NewLine }, StringSplitOptions.None); + + //Convert to single string, respecting line breaks and spacing. + return String.Join(Environment.NewLine, lines); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs.meta b/Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs.meta new file mode 100644 index 00000000..8ad68415 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 14c82c38120d418bbd44cd7c0df0778d +timeCreated: 1729855802 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs b/Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs new file mode 100644 index 00000000..4ba39442 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs @@ -0,0 +1,361 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using UnityEditor.AssetImporters; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using UnityEditor; +using UnityEditor.Rendering; +using UnityEditorInternal; +using UnityEngine; +using UnityEngine.Rendering.Universal; +using UnityEngine.Serialization; +using Debug = UnityEngine.Debug; +using Object = UnityEngine.Object; + +namespace StylizedWater3 +{ + [ScriptedImporter(TemplateParser.SHADER_GENERATOR_VERSION_MAJOR + TemplateParser.SHADER_GENERATOR_MINOR + TemplateParser.SHADER_GENERATOR_PATCH, TARGET_FILE_EXTENSION, 0)] + public class WaterShaderImporter : ScriptedImporter + { + private const string TARGET_FILE_EXTENSION = "watershader3"; + private const string ICON_NAME = "water-shader-icon"; + + [Tooltip("Rather than storing the template in this file, it can be sourced from an external text file" + + "\nUse this if you intent to duplicate this asset, and need only minor modifications to its import settings")] + [SerializeField] public LazyLoadReference template; + + [Space] + + public WaterShaderSettings settings = new WaterShaderSettings(); + + /// + /// File paths of any file this shader depends on. This list will be populated with any "#include" paths present in the template + /// Registering these as dependencies is required to trigger the shader to recompile when these files are changed + /// + //[NonSerialized] //Want to keep these serialized. Will differ per-project, which also causes the file to appear as changed for every project when updating the asset (this triggers a re-import) + public List dependencies = new List(); + + [Serializable] + //Keep track of what was being compiled in + //Used to detect discrepencies between the project state, and the compiled shader + public class ConfigurationState + { + public bool underwaterRendering; + public bool dynamicEffects; + public FogIntegration.Integration fogIntegration; + + public void Reset() + { + underwaterRendering = false; + dynamicEffects = false; + fogIntegration = FogIntegration.GetIntegration(FogIntegration.Assets.None); + } + } + public ConfigurationState configurationState = new ConfigurationState(); + + public string GetTemplatePath() + { + return template.isSet ? AssetDatabase.GetAssetPath(template.asset) : assetPath; + } + + private void OnValidate() + { + if(settings.shaderName == string.Empty) settings.shaderName = $"{Application.productName} ({DateTime.Now.Ticks})"; + } + + public override void OnImportAsset(AssetImportContext context) + { + Shader shader = AssetDatabase.LoadAssetAtPath(context.assetPath); + //if (shader != null) ShaderUtil.ClearShaderMessages(shader); + + string templatePath = GetTemplatePath(); + + if (templatePath == string.Empty) + { + Debug.LogError("Failed to import water shader, template file path is null. It possibly hasn't been imported first?", shader); + return; + } + + #if SWS_DEV + Stopwatch sw = new Stopwatch(); + sw.Start(); + #endif + + string[] lines = File.ReadAllLines(templatePath); + + if (lines.Length == 0) + { + Debug.LogError("Failed to generated water shader. Template or file content is empty (or wasn't yet imported)..."); + return; + } + + dependencies.Clear(); + + configurationState.Reset(); + + string shaderLab = TemplateParser.CreateShaderCode(context.assetPath, ref lines, this, false); + + Shader shaderAsset = ShaderUtil.CreateShaderAsset(shaderLab, true); + + int passCount = shaderAsset.passCount; + + ShaderInfo shaderInfo = ShaderUtil.GetShaderInfo(shaderAsset); + ShaderData shaderData = ShaderUtil.GetShaderData(shaderAsset); + + //Unity will always create 3 base passes: Unnamed, DepthNormalsOnly & DepthOnly + if (shaderInfo.hasErrors && shaderData.GetSubshader(0).GetPass(0).Name.Contains("Unnamed")) + { + Debug.LogError($"Failed to compile water shader at {context.assetPath}. It contains no passes. " + + $"This may happen if the shader file was imported while one or more script compile errors were present, or moving the Stylized Water 3 folder, or the meta-file was deleted. Resulting in all configurations getting wiped. To resolve this, re-import the file from the Package Manager."); + return; + } + ShaderUtil.RegisterShader(shaderAsset); + + Texture2D thumbnail = Resources.Load(ICON_NAME); + if(!thumbnail) thumbnail = EditorGUIUtility.IconContent("ShaderImporter Icon").image as Texture2D; + + context.AddObjectToAsset("MainAsset", shaderAsset, thumbnail); + context.SetMainObject(shaderAsset); + + //Do not attempt to create a tessellation variant for the underwater post-effect shaders + if (settings.type == WaterShaderSettings.ShaderType.WaterSurface) + { + //Re-read the original template again + lines = File.ReadAllLines(templatePath); + shaderLab = TemplateParser.CreateShaderCode(context.assetPath, ref lines, this, true); + + Shader tessellation = ShaderUtil.CreateShaderAsset(shaderLab, true); + //ShaderUtil.RegisterShader(tessellation); + + context.AddObjectToAsset("Tessellation", (Object)tessellation, thumbnail); + } + + //Set up dependency, so that changes to the template triggers shaders to regenerate + if (template.isSet && AssetDatabase.TryGetGUIDAndLocalFileIdentifier(template, out var guid, out long _)) + { + //Note: this strictly only works when adding the file path! + //context.DependsOnArtifact(guid); + + dependencies.Insert(0, AssetDatabase.GUIDToAssetPath(guid)); + } + + //Dependencies are populated during the template parsing phase. + foreach (string dependency in dependencies) + { + context.DependsOnSourceAsset(dependency); + } + + #if SWS_DEV + sw.Stop(); + //Debug.Log($"Imported \"{Path.GetFileNameWithoutExtension(assetPath)}\" water shader in {sw.Elapsed.Milliseconds}ms. With {dependencies.Count} dependencies.", shader); + #endif + } + + public bool RequiresRecompilation(out string message) + { + bool isValid = true; + + var underwaterInstalled = configurationState.underwaterRendering == StylizedWaterEditor.UnderwaterRenderingInstalled(); + var dynamicEffectsInstalled = configurationState.dynamicEffects == StylizedWaterEditor.DynamicEffectsInstalled(); + var fogIntegration = configurationState.fogIntegration.asset == GetFogIntegration().asset; + + isValid = underwaterInstalled & dynamicEffectsInstalled & fogIntegration; + + message = string.Empty; + + if (isValid == false) + { + if (!underwaterInstalled) message += "\nUnderwater Rendering extension installed, but not activated"; + if (!dynamicEffectsInstalled) message += "\nDynamic Effects extension installed, but not activated"; + if (!fogIntegration) message += $"\nFog integration does not match.\nInstalled: {configurationState.fogIntegration.name} - Detected in project: {GetFogIntegration().name}"; + } + + return !isValid; + } + + public void Reimport() + { + this.SaveAndReimport(); + } + + public void ClearCache(bool recompile = false) + { + var objs = AssetDatabase.LoadAllAssetsAtPath(assetPath); + + foreach (var obj in objs) + { + if (obj is Shader) + { + ShaderUtil.ClearShaderMessages((Shader)obj); + ShaderUtil.ClearCachedData((Shader)obj); + + if(recompile) AssetDatabase.ImportAsset(assetPath); + + #if SWS_DEV + Debug.Log($"Cleared cache for {obj.name}"); + #endif + } + } + } + public void RegisterDependency(string dependencyAssetPath) + { + if (dependencyAssetPath.StartsWith("Packages/") == false) + { + string guid = AssetDatabase.AssetPathToGUID(dependencyAssetPath); + + if (guid == string.Empty) + { + //Also throws an error for things like '#include_library "SurfaceModifiers/SurfaceModifiers.hlsl"', which are wrapped in an #ifdef. That's a false positive + //Debug.LogException(new Exception($"Tried to import \"{this.assetPath}\" with an missing dependency, supposedly at path: {dependencyAssetPath}.")); + return; + } + } + + //Tessellation variant pass may run, causing the same dependencies to be registered twice, hence check first + if(dependencies.Contains(dependencyAssetPath) == false) dependencies.Add(dependencyAssetPath); + } + + //Handles correct behaviour when double-clicking a .watershader asset. Should open in the IDE + [UnityEditor.Callbacks.OnOpenAsset] + public static bool OnOpenAsset(int instanceID, int line) + { + Object target = EditorUtility.InstanceIDToObject(instanceID); + + if (target is Shader) + { + var path = AssetDatabase.GetAssetPath(instanceID); + + if (Path.GetExtension(path) != "." + TARGET_FILE_EXTENSION) return false; + + string externalScriptEditor = ScriptEditorUtility.GetExternalScriptEditor(); + + if (externalScriptEditor != "internal" && externalScriptEditor != string.Empty) + { + InternalEditorUtility.OpenFileAtLineExternal(path, 0); + } + else + { + Application.OpenURL("file://" + path); + } + + return true; + } + + return false; + } + + public static WaterShaderImporter GetForShader(Shader shader) + { + return AssetImporter.GetAtPath(AssetDatabase.GetAssetOrScenePath(shader)) as WaterShaderImporter; + } + + public Shader GetShader() + { + return AssetDatabase.LoadAssetAtPath(assetPath); + } + + [Serializable] + public class Directive + { + public enum Type + { + [InspectorName("(no prefix)")] + custom, + [InspectorName("#include")] + include, + [InspectorName("#pragma")] + pragma, + [InspectorName("#include_with_pragmas")] + include_with_pragmas, + [InspectorName("#define")] + define + } + public bool enabled = true; + public Type type; + public string value; + + public Directive(Type _type, string _value) + { + this.type = _type; + this.value = _value; + } + } + + public static string[] FindAllAssets() + { + DirectoryInfo directoryInfo = new DirectoryInfo(Application.dataPath); + + FileInfo[] fileInfos = directoryInfo.GetFiles("*." + TARGET_FILE_EXTENSION, SearchOption.AllDirectories); + + #if SWS_DEV + //Debug.Log($"{fileInfos.Length} .{TARGET_FILE_EXTENSION} assets found"); + #endif + + string[] filePaths = new string[fileInfos.Length]; + + for (int i = 0; i < filePaths.Length; i++) + { + filePaths[i] = fileInfos[i].FullName.Replace(@"\", "/").Replace(Application.dataPath, "Assets"); + } + + return filePaths; + } + + #if SWS_DEV + [MenuItem("SWS/Reimport water shaders")] + #endif + public static void ReimportAll() + { + string[] filePaths = FindAllAssets(); + foreach (var filePath in filePaths) + { + #if SWS_DEV + //Debug.Log($"Reimporting: {filePath}"); + #endif + AssetDatabase.ImportAsset(filePath); + } + } + + public FogIntegration.Integration GetFogIntegration() + { + return settings != null && settings.autoIntegration ? FogIntegration.GetFirstInstalled() : FogIntegration.GetIntegration(settings.fogIntegration); + } + + [Serializable] + public class WaterShaderSettings + { + [Tooltip("How it will appear in the selection menu")] + public string shaderName; + [Tooltip("Hide the shader in the selection menu. Yet still make it findable with Shader.Find()")] + public bool hidden; + public enum ShaderType + { + WaterSurface, + PostProcessing + } + public ShaderType type; + + [Tooltip("Before compiling the shader, check whichever asset is present in the project and activate its integration")] + public bool autoIntegration = true; + public FogIntegration.Assets fogIntegration = FogIntegration.Assets.UnityFog; + + [Tooltip("Add support for native light cookies. Disabled by default to allow for cookies to act as caustics projectors that ignore the water surface")] + public bool lightCookies = false; + [Tooltip("Point and spot lights add caustics")] + public bool additionalLightCaustics = false; + public bool additionalLightTranslucency = true; + [Tooltip("When disabled, two caustics textures are cross-animated. Disable this when using a flipbook caustics texture!")] + public bool singleCausticsLayer; + + public List customIncludeDirectives = new List(); + [FormerlySerializedAs("passes")] + [Tooltip("Pass blocks that are to be added to the shader template")] + public Object[] additionalPasses = new Object[0]; + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs.meta b/Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs.meta new file mode 100644 index 00000000..86cb5c10 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: fb104378e2fbf2942ae8b66abb7a1d57 +timeCreated: 1678979614 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs b/Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs new file mode 100644 index 00000000..63a51d41 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs @@ -0,0 +1,342 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.Rendering; +#if URP +using System.Collections.Generic; +using UnityEngine.Rendering.Universal; +using UnityEngine.SceneManagement; +#endif + +namespace StylizedWater3 +{ + public class StylizedWaterEditor : Editor + { + #if URP + [MenuItem("GameObject/3D Object/Water/Single Object", false, 0)] + public static void CreateWaterObject() + { + Material mat = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath("e8333e151973f1c4188ff534979c823b")); + Mesh mesh = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath("d0abf58b1088fc044aaa6d97c5d51d65")); + + WaterObject obj = WaterObject.New(mat, mesh); + + //Position in view + if (SceneView.lastActiveSceneView) + { + obj.transform.position = SceneView.lastActiveSceneView.camera.transform.position + (SceneView.lastActiveSceneView.camera.transform.forward * (Mathf.Max(mesh.bounds.size.x, mesh.bounds.size.z)) * 0.5f); + } + + if (Selection.activeGameObject) obj.transform.parent = Selection.activeGameObject.transform; + + Selection.activeObject = obj; + + if(Application.isPlaying == false) EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + } + + [MenuItem("GameObject/3D Object/Water/Grid", false, 1)] + public static void CreateWaterGrid() + { + GameObject obj = new GameObject("Water Grid", typeof(WaterGrid)); + Undo.RegisterCreatedObjectUndo(obj, "Created Water Grid"); + + obj.layer = LayerMask.NameToLayer("Water"); + + WaterGrid grid = obj.GetComponent(); + grid.Recreate(); + + if (Selection.activeGameObject) obj.transform.parent = Selection.activeGameObject.transform; + + Selection.activeObject = obj; + + //Position in view + if (SceneView.lastActiveSceneView) + { + Vector3 position = SceneView.lastActiveSceneView.camera.transform.position + (SceneView.lastActiveSceneView.camera.transform.forward * grid.scale * 0.5f); + position.y = 0f; + + grid.transform.position = position; + } + + if(Application.isPlaying == false) EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + } + + private const string OCEAN_PREFAB_GUID = "3b290065ab77e714d91b7f9e02c830d7"; + + [MenuItem("GameObject/3D Object/Water/Ocean", false, 2)] + public static void CreateOcean() + { + string prefabPath = AssetDatabase.GUIDToAssetPath(OCEAN_PREFAB_GUID); + + if (prefabPath == string.Empty) + { + Debug.LogError("Failed to find the Ocean prefab with the GUID " + OCEAN_PREFAB_GUID); + return; + } + + Object prefab = AssetDatabase.LoadAssetAtPath(prefabPath, typeof(Object)); + + GameObject obj = PrefabUtility.InstantiatePrefab(prefab, Selection.activeGameObject ? Selection.activeGameObject.scene : EditorSceneManager.GetActiveScene()) as GameObject; + + Undo.RegisterCreatedObjectUndo(obj, "Ocean"); + + if (Selection.activeGameObject) obj.transform.parent = Selection.activeGameObject.transform; + + Selection.activeObject = obj; + + if(Application.isPlaying == false) EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + } + + [MenuItem("Window/Stylized Water 3/Set up render feature", true, 3000)] + public static bool SetupRenderFeatureValidate() + { + return IsRenderFeatureSetup() == false; + } + + [MenuItem("Window/Stylized Water 3/Set up render feature", false, 3000)] + public static void SetupRenderFeature() + { + List renderers = PipelineUtilities.SetupRenderFeature("Stylized Water 3"); + + Debug.Log($"Added the Stylized Water 3 render feature to {renderers.Count} renderers"); + } + + [MenuItem("GameObject/3D Object/Water/Planar Reflections Renderer", false, 1000)] + public static void CreatePlanarReflectionRenderer() + { + GameObject obj = new GameObject("Planar Reflections Renderer", typeof(PlanarReflectionRenderer)); + Undo.RegisterCreatedObjectUndo(obj, "Created PlanarReflectionRenderer"); + PlanarReflectionRenderer r = obj.GetComponent(); + r.ApplyToAllWaterInstances(); + + Selection.activeObject = obj; + + if(Application.isPlaying == false) EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + } + + [MenuItem("Window/Stylized Water 3/Create default reflection probe", false, 2000)] + public static void CreateDefaultReflectionProbe() + { + GameObject obj = new GameObject("Skybox Reflection", typeof(ReflectionProbe)); + Undo.RegisterCreatedObjectUndo(obj, "Created Skybox Reflection"); + + ReflectionProbe probe = obj.GetComponent(); + + probe.mode = ReflectionProbeMode.Realtime; + probe.size = Vector3.one * 10000f; + probe.cullingMask = 0; + probe.shadowDistance = 0; + + probe.RenderProbe(); + + //Selection.activeObject = obj; + + if(Application.isPlaying == false) EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + } + + [MenuItem("Window/Stylized Water 3/Open demo scene", false, 2000)] + public static void OpenDemoScene() + { + string path = AssetDatabase.GUIDToAssetPath("2477c7e727bfe2f4bba7e621f08fd50b"); + + Scene scene = SceneManager.GetSceneByPath(path); + + EditorSceneManager.OpenScene(path); + } + #endif + + [MenuItem("Assets/Create/Water/Mesh")] + private static void CreateWaterPlaneAsset() + { + ProjectWindowUtil.CreateAssetWithContent("New Watermesh.watermesh", ""); + } + + [MenuItem("CONTEXT/Transform/Align To Water")] + private static void AddAlignToWater(MenuCommand cmd) + { + Transform t = (Transform)cmd.context; + + if (!t.gameObject.GetComponent()) + { + Undo.AddComponent(t.gameObject); + + EditorUtility.SetDirty(t); + } + } + + public class PopUpMaterialEditor : EditorWindow + { + private Object target; + private MaterialEditor editor; + + public static void Create(Object asset) + { + var window = CreateWindow($"{asset.name} | {asset.GetType().Name}"); + window.target = asset; + window.editor = (MaterialEditor)Editor.CreateEditor(asset, typeof(MaterialEditor)); + //window.editor.OnEnable(); + //window.editor.target = asset as Material; + + window.Show(); + } + + private void OnGUI() + { + EditorGUI.BeginDisabledGroup(true); + target = EditorGUILayout.ObjectField("Asset", target, typeof(Material), false); + EditorGUI.EndDisabledGroup(); + + //editor.OnInspectorGUI(); + editor.PropertiesGUI(); + } + } + + public class PopUpAssetEditor : EditorWindow + { + private Object target; + private Editor editor; + + public static void Create(Object asset) + { + var window = CreateWindow($"{asset.name} | {asset.GetType().Name}"); + window.target = asset; + window.editor = Editor.CreateEditor(asset); + window.editor.target = asset; + window.ShowModalUtility(); + } + + private void OnGUI() + { + EditorGUI.BeginDisabledGroup(true); + target = EditorGUILayout.ObjectField("Asset", target, target.GetType(), false); + EditorGUI.EndDisabledGroup(); + + editor.OnInspectorGUI(); + } + } + + public static bool IsRenderFeatureSetup() + { + return PipelineUtilities.RenderFeatureAdded(); + } + + public static bool UnderwaterRenderingInstalled() + { + //Checking for Extension.UnderwaterRenderer.cs meta file + string path = AssetDatabase.GUIDToAssetPath("f8689f15308f4e6da4c0bb17b8b3af04"); + return AssetDatabase.LoadMainAssetAtPath(path); + } + + public static bool DynamicEffectsInstalled() + { + //Checking for the RenderFeature.DynamicEffects.cs meta file + string path = AssetDatabase.GUIDToAssetPath("4f5bfefce00aeb5479fc940fb8e61837"); + return AssetDatabase.LoadMainAssetAtPath(path); + } + + public static bool CurvedWorldInstalled(out string libraryPath) + { + //Checking for "CurvedWorldTransform.cginc" + libraryPath = AssetDatabase.GUIDToAssetPath("208a98c9ab72b9f4bb8735c6a229e807"); + return libraryPath != string.Empty; + } + + public static void OpenGraphicsSettings() + { + SettingsService.OpenProjectSettings("Project/Graphics"); + } + + public static void SelectForwardRenderer() + { + #if URP + if (!UniversalRenderPipeline.asset) return; + + Selection.activeObject = PipelineUtilities.GetDefaultRenderer(); + #endif + } + + public static void EnableDepthTexture() + { + #if URP + if (!UniversalRenderPipeline.asset) return; + + UniversalRenderPipeline.asset.supportsCameraDepthTexture = true; + EditorUtility.SetDirty(UniversalRenderPipeline.asset); + + PipelineUtilities.IsDepthTextureOptionDisabledAnywhere(out var renderers); + + if (renderers.Count > 0) + { + string[] rendererNames = new string[renderers.Count]; + for (int i = 0; i < rendererNames.Length; i++) + { + rendererNames[i] = "• " + renderers[i].name; + } + + if (EditorUtility.DisplayDialog(AssetInfo.ASSET_NAME, "The Depth Texture option is still disabled on other pipeline assets (likely for other quality levels):\n\n" + + System.String.Join(System.Environment.NewLine, rendererNames) + + "\n\nWould you like to enable it on those as well?", "OK", "Cancel")) + { + PipelineUtilities.SetDepthTextureOnAllAssets(true); + } + } + #endif + } + + public static void EnableOpaqueTexture() + { + #if URP + if (!UniversalRenderPipeline.asset) return; + + UniversalRenderPipeline.asset.supportsCameraOpaqueTexture = true; + EditorUtility.SetDirty(UniversalRenderPipeline.asset); + + PipelineUtilities.IsOpaqueTextureOptionDisabledAnywhere(out var renderers); + + if (renderers.Count > 0) + { + string[] rendererNames = new string[renderers.Count]; + for (int i = 0; i < rendererNames.Length; i++) + { + rendererNames[i] = "• " + renderers[i].name; + } + + if (EditorUtility.DisplayDialog(AssetInfo.ASSET_NAME, "The Opaque Texture option is still disabled on other pipeline assets (likely for other quality levels):\n\n" + + System.String.Join(System.Environment.NewLine, rendererNames) + + "\n\nWould you like to enable it on those as well?", "OK", "Cancel")) + { + PipelineUtilities.SetOpaqueTextureOnAllAssets(true); + } + } + + #endif + } + + /// + /// Configures the assigned water material to render as double-sided, which is required for underwater rendering + /// + public static void DisableCullingForMaterial(Material material) + { + if (!material) return; + + material.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off); + + EditorUtility.SetDirty(material); + } + + #if !SPLINES + [MenuItem("Window/Stylized Water 3/Install Splines package", false, 3000)] + private static void InstallSplines() + { + UnityEditor.PackageManager.Client.Add($"com.unity.splines"); + + Debug.Log("The Splines package will be installed in a moment..."); + } + #endif + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs.meta b/Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs.meta new file mode 100644 index 00000000..11d60f84 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: c533cb37af7224547ae4fa71f337c480 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/UI.cs b/Assets/External/Stylized Water 3/Editor/UI.cs new file mode 100644 index 00000000..7e04bd2f --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/UI.cs @@ -0,0 +1,1089 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.AnimatedValues; +using UnityEditor.Rendering; +using UnityEngine; +using UnityEngine.Rendering; +#if URP +using UnityEngine.Rendering.Universal; +#endif + +namespace StylizedWater3 +{ + public static class UI + { + private const string AssetIconData = "iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAgAElEQVR4Aey9aZBtWXWYec695843M18Obx5rpCZqAIpBooyQWqYRCIGNLeMflkMhS1Z4jv4hqe0/HdEOyz8cLbsVLautULslt4iOljUZhG2EZEBMZiiqKKii6lH15sx8OWfeefT3rZP5VAwFVUUBJUfv927ee8/ZZw9rXmuvvW86nIyTF1t643HSGY2S9niU9HgfTSZJWkiTLMuSelpIysViUitmSYP3j2ysJYeK5eRsvZ7MlkrJI9ubyW0zs8lMVkqudTvJ0WotudJpJyfrjWSl10lO1OrJznCYzJfLif147UytmfQZ7zL1zvHseDJNtof95DDP+nmSTJMBY9ji2tZokOyOhklrOEr2xoOky+feaJz0aXNAvT7jTYaTZETbCWOuFrKkXCgw9iLjzZIac2gy3plylsxVKoyjlizyXmJehZQ58lrp95L5Ujkp8fyjO7vJrc1GUisUky/t7iY3NxpJgzZWer1kiecutlrJaa5dabeTM81mstbrJseZY4txPdnaS+6bm0/ajOlav5OsdHvJQ0tH4vsu458mwHgwTKaMdcoYC46v5PiKSZ3PFV4vthRe7IP//3P/fUDgxZPOy2v+RYZT4eV86rxu4nUzr+O8jvE6ymuB1zyvGV4NXlVeB/NHHCQ9Xm1ee7y2eG3yWuW1wmuZ19O8nuHV4WX9Pq8XLz55+OVQDgDwchjLCx2DCPd1+gvbG/etdnt3bvU6t6/2unfuDnsnx+O0XChOCsO0WJwWpkXEdnFcRG7vFyR1Mi5Mk/GomBRRG+PCINkZJEkKaqk0HafpmGfGBf5Ni+NJoZgO5or1q4u1yuNL5fqTRyq1x0/V64/Q3GVeEoOvP3flzxsByLVNXvd/eOXqG1ZarVdf7bQfaE+Gh5MpaJpOs6kafSqeweQY5MKkaQmMDtME9ZlMeBXQ2WMooJgVkrRSSCpjvov2IjdpYDqZpulkkiXFNBtCJNMR14fj5EraWrjY6949GG+PhijkrFhcO1NtPnxupvnZO5uzn6DTz/Nq8VKa/Lkofx4IQPE+x+veD61effOFvd03rU56948Gk9q4MCmPSxhFICi1VlIAZ3Bw4BGsU6Zw92TK9fI0SUFuOaR2MZlQrzDFbMSonPLwFMooZXwfQQy8p1SYTsehI0YQywSDrkBbw8Go0ErT8vXBJBmMB2ceb3XOTNbW30pz3Vc0m59/7aH5D79uYf5P6PpRXju8XtZq4uVMAHL7iU9srP/wk+3ttz7Tab0Rj+UQYrs4AfhlIQump7I8XCxyRxMuUkAGnA/yvQdXZ7wm8UXK4DuEgixAzk+SDET3uVdK+d6VWGgETTHgWampg1ooJHgOXO+Pp3gksDceR2k4TfZ4X6ZimgzL1C2vD3be9KmdnTf+q4tX/s5bl+b+9KGFxQ+8ZmHhg7R0jdfLUiq8HAlAA+3OP1q59vYv7my8bbnfvxd5Wy6WQIzuzmAEfkAgGJ6C8dQXn8V9NoYgYDhxl7Mdn+DcyXQQBFP0OQRDiQdAN7UoEECD+0PUgG3qFepSFnBtux1blRggEohlVJwmeGU0AcqRDmeguhZDWhmkSR3pUC9Qf5AUV5Ph4u9f7f7YF5EMt8w2H31wfun9bzi89D4ae5yXhubLprycCKAGVO77wysX3/XozsY71rqdV6CqU+BO0V9Pk+K4D+j5B6K6IkJGRo8P4Uw8c159GVxFEOhVEkgw6n7aQkrQGLGAwXSoaAgOl1CGSgSsv3G/kKABiDVQbZolU1TBAALDCkgyRE7GGHpFCAyVM0KqtJEUZ3nNF5VISBkaMw5yFPLr87k3npSf3G2/5tJe+9X/dXPtx1+/tPQHr188/Lt0qfHY5fU9Ly8HAgATyd3vu3rprzy8tfaXr3W7dxbBcEZgBhwHV/qWhQj30xiOBtBw8tAnQT4mW1Im8DMiiGM1eB5iQELw8h07LiSEHD7CtvNioUjr0yKcDsLhbGxIkBr0kQxB4hACkfiGJe6BzTbIx47ErkTKII2qEAZCgkBXPzmFlGlABB2+V2m+xAhKDGQERYwI4CCY0n5n744PPbN3x+evb/zoQ8cP//vXLB35/xjaF3lJg9+z8r0mgGMfvHb1PX+6eu09y+32a8B7qi6fgLH+SL5DFKdwIkDHDQsEo2oDWIF7EIRFAMDHaGHqAUpdOi7n0Tow1Ic4qJJUwPQEiknh9KLcD7ZxEnIi44lxocwlxD2ERddE4XJdnxBtK9RKyTbtaiBWiCoWQH6fKOIABLeoex3DYJiOI7BgNNQxD9Ul3CuiPmpAeRYxVC2Mku3uzp0futz+x5f2tt9y3+KR996/ePi9DNdYw/ekfK8IQP/9f/zNrzz1E59dX3vbsFAop1rZIgI9rajWgUtBvNIZEz04dzTAIuM6Bn2IempHvaESHI6z6hhjDvc/dPQEm4GqEEkxxDoCIqQB+AnMp+hsPTwEfISQR2C+A+I6EEgfApA1pyB8osiR45ECHa5OvecYqd/l6SmfU7TKFv1JfAMq1OirSgNMi8EVwh3Yo5+IOQzT9OmNnQc/tdO+78HtvYe+/+jh/5ta/5HXdz2W8L0ggJO/f+XSz/yXtdWf3BlNTk4qqH4UtxHvIiycyp1ikjIB0FN0tno+OEuOR2OHqEZHlwEoEXJsAzmeVxARqsMLyAWRq/j3m3aDxIBVAYbsAARCEbj39A0H02kvOLqQDPpIIJA5ZADID5BLJXROBtkWoLZOeZx0QyWMkgpjLxt3oMkx9V0rmGceI1QTtmGyzRzscuIAJxI1BmNpmCzwPpxMyh+/fuVd5/d2XvtDx4//+g8cOfarDOyqw/xule82AbzlNy5+5e9/YWfvrd1ReOJB8nX0MbwRwRl1eAlkATeYHXPOYA0AHCuX+U+UB27FV5/2QuTL1dbNAPwUoFMVAuA5AZ9iNEIoklfGPw1EXT+cfHx66rH4EhxLjT6qoYfkELGt8RB/nxeIBW3YGjyIaJ+hzUN0KGdXsRuKWpeBXcgEpFdH5ZA8o0kJhOtiGndgzKgfwpIskGEsQlhNniNOmezS1xZqadztn/ydy0//k2fa7Ve/5cTxf8Uj/4nXd6V8twhAn/6nf3P5yj/qTPvnxvjt5TpiF/jNAGF1sYjRyNLbw8WOokGA5MWPT+EsEG/Ax3v80Wgbw+kjLKwMAGtsFQCokqKYGekD8DxrG3L/CB5PEeVTjEvQkxObREdz9jEM20KVAiFAEOuKfT7XsSGmBn2oucelda7OaRcwVomvCtH0HCOihvAhxip2BFgPQ5C6FvQbLiJEApFWjVXyrC7sDP1k1VGyPigmvUGaPrJ9/UdWB927/uLRE/8bj/2fvL7jsYP0u7AcfPS/bC7/3Ic2t3+2n4yqOsEZLC54CwCti1p3mdPwrUyujhzC4cA9GWNoTUBqOhkG0iYsHetrAW+MuiyQjPqFuwQoSkTOhtMLQzwsxTd1dMtUA1K6z4G7kBQ8wvcCaEWp0FcLHS60CScnuw4OAmjxWh3A2Q6G52pQktJ+A7V0yu/UU/rYv0uzkpN9BFXxwQVqZYiCwslJiBYJAXswaWDMlHhOr8MxVpjblP5ZXu79wIkzv/L2s+f+OcvBq9/J5eDvtAS46/+6dul//cjW9rtuQgaMNaQwc4oYSX2AO8JHD2sZAI9BVhUp0AajEY0DUMBJ1gKScAhAylg7l320C0ZFtTY6FdGrywZI8RRAOAjKSuQH0FGRPqBw6gjCvEBLQWQabk4emz5UA95eEMAAPXGINiYg4zhdT0ppssYzTcY+h0zXLtElbNHmIjZHiq4Z4B2MaHikaKedMojWlOFvropspyohM3qeLyAFzDvA1AiSqWAbFJBaU9rrI+1gh+p/WFn5R8vD0bkfP3vun9DQl2ztO1G+kxLgofetXvrnD++039ABeHUmKIW3xhpXAEszGz3q6gwLbkTY0N8aTyBAvE/ApEgAF4qK/KW8liDCGJAUSuhh1YGgxk2DxYJejOYgEbTyU/rVbQvgS1H4hOIGVAU3ZxDIGKx5DXIBsYwL0ujSpm0VYPk9pJJuS3h2EKLrCYaEqaK8CVWgNeFYJSptDdWCrWqIpsytivDKuKE5oRcip0fwCCIt0VEmgXNTF7LIu+1UaPOO5swn3nH81M+REPLR70RCyHeKAN72oY0r/+KJducVeyh0ORFchpgbYDSxPqtGBuEpET1ip8RXieGBfIABVIfqeACoJABeEAKct68WAtuAB1LxBsBSLIM+6qYCslzFwBILIkNVkyNoqi1AmzoIMJxhfj5ABCBcBCmJUgjNFeMBhKgr6WJQnQfmNeC+KtCDjmesBno0WKS3AY326FNiL4BsYw+sItMXpBmEqa9hTINKDp03DBsQzvj47NK00iPGy1zGPOsYVVkn680vv/vsLf8TBPD+lzoj6DtBAO/6wPUrv7Qy7p/pA5QiCO8gMsPqFptMDGM9fGpX6qrcH0L1bYjBdK5AutDhv4svUzhD6hmAILlGzlBPh1RQ3vuZmHBRZHJPJIaFBuS4SxQPwkDXlrEfsqpyggLX66ONWAMQW4ps2xm5AoSMdx1AN06pJFaUDGP+KQWeHeiJrqnShOBmfIdYMoilwrhKujKM2f76XGtBKGPmoVebgvgKg8vCKMhXHB2r4DGSMIailD5FKQICcd4LteqlH735Ff8QAvjdlzIl7KUmgHf+7qXzv7w5HJ+U9xSmHXS7UwvKZ/L855uO2SSpgZAGwBXO20iBLZBi5H0C4KogXi5owQ0jgFDimvUm+4i1ldTFAMW6RetMcOPCeW8IJwrMItgNoQ/kFaHWKVZYzhER/MNxoz/7hPj4PoEADPHqUjLqWAga+xxNG1iylnRyEOjBmUF/K7qlIhDOvVyaSSz5tXzJWc+AsdJPRp6jdW2/gJEpkehRWCo8rwop6W4yHg3lOu8ZOYDzterVv3bzbX8XAvi9lyon8KUkgLe+9/LTv7rT7ZyeZwK6TLvMTD1o0iQB2DC41APCqo9UgOH5ylIripKIOdPnGs9KHLpXiwB3FW7dAwGHK4hYfLsOD5GtE26fKkPEpYpiOG5Mw+pYVYywJhkIwHIdjIpcsEo4GALQWOO6l5DWiGqIlXsZ9kIKp3YZy4BrA9o26ljjM8MNka8FX6fuQaBHQy7QzHUJVK+iTN0Z+6ZXLkUF3ULvaduwSBTBpWHoAYYBIVeBRdAQf8qoCXKRklJFCVkK+8EVzDKDPVxuXP7r5275GQjgAy9FUuhLRQDf/1uXnv71zX7v9gaAbzOZQL5cCavp88rV4sVwqha46J4AtCHAGLs6R8BGg0kVOUBcj6jDIntE07gcnB+wVGWApDYc7fUKxIWbDmh5EFFru+pmZUlHtUAUz3CsOh0GdrWWxiBHhnZglGm9U52MXix9KkWmMMSl92A7ZgEXaHPIACWUMe0qCRg6Ypy+uYYwS6oOgbFXEN0MJdnBezGfoM7nQsbzBDyGQxatMEbGIywU1ZuiiHoqGYnFS2WeNyJaQnpWGLPE5Ng1JAsYOCeb1Sd//PRtPwkBfOzbzQp+KQjgjt+6cP7fXt7del2FQXcB5q4UDnCKAE0eEMAu6Bjjn/TQr04XTg79LsAlBBfauR7AEYsAwYCM3EVTyQDO7Ql8PgMLjCOggehVT+LwUR0dDUcJRJdzS2BYna1CaHHfGEGNcRlJ3OB+C0KscG2BDg7CwfZTYRhNFTD/9e+N5hkdrILAUBt0oGRXjXGbEYMYX8xBQivplfB9RKMpRLeHm7iD62u+gUGgIpVacPcQWDjmFH2i5HDeZcZXEk4in3FW6afMIleNtrUzSqxJSwQaqjc35j71V0/f9DchgCe+nbTwb5cADv+/zzz1bx5dX/sxdVgHkBhMqTCRKUAUWYJKblYKONMRLKNuh7koxMP5q/En1BSP+TNU5YJaWF6jekiCpkCGRbZFCs/5WKR2QGBKHdXDYZ5AXSabiIUS7amrOzS6xUsvYZ729EAavOvqrYOoGvWktAZiFubG7Rsnx+REEUM/2GxJk5dcDc6iMCVGp5fCmINQlBYU6/FP8a9ILyHCu1zTK2DiYeS6z8Hgk4Eq1QACLY8XQLGGtE1VKzOmKhOp03YV9VazD4Bcg7ALDKRIg3c1ln7/nafO/S0IYC0G9SL+yEwvtlT+88rVX/jC9vY7JnBjG8oXOvrVIwYvgIAjnMcfuFuXD1UaxpUdyvUW4akrp/hPQZpobyuSgaQLKxJBF2AKXmP8Y+qq0zX65CKV81G45TgzOc8qkZFGbZCjKOIuBKEut7WTcPAK1GZO9wlFKWM5xTOgKdnkeg0CndkP9Oi1tNBFrvMfBHpMG8vDTSACxPoS1a45BGGAGINEEkGEn9n8IpVLyE0JhQeG2DEj1MAhxLjhhshxMMoJURcrqi3mqxEqnCRtYhkV1pJLME4BXVCAOvWAUHo0PU0eG269Y75SefovHjv9C3SLnHnhJe1DjS+ktInGrbCTZ7nX+Qf/4eqFXwRn1Riw2IaaRXRwPJ8nEIQ40lIfKVapoiSQA4RUPCcggaBcmYF4AzfgijCsxh/ooV6N6wPctV36MB+vJqho2BnvUUHRfoR2NgHcNazqOoA8jVJe5Nky9eTQGsTTpd02/Vdoz9TdBvflANf663wG3nDXnwV6HLqBHhEc05BcqAd2QgKJJNuWCEoQjOPXtnBuqd8xejRv9AglBkkR1Y8q0WWlRZHJfLQhDApJqNoANdSB6rQBLFxFVA1JsQWJH3uhqPtKG5qVqJne22+59eeP1ur/8mi9yTyd0fMvL5YAfvg3v/LlX1vr9s+wWh5WrxGztghmAgUodhIKE6Ay+L4yTmEKR5lhKyeFiAda+sUTJlxAX2oGmQ+geFZ0b+IPb/GohlYbxT4iYujTPAKgsdSRsaoHU7Msi9zpAvQdCKy0j5Q5+jwMBLULqtG3yES/0o8An0GUHoY4idSG9FDvapIF4YgcVIT9+bwW/150DlJp35GYayCSRJyp5hK1LjC4DWLO5U9OrMEMcLGxBLemTWUW2tB7UXq4LqD6OgSxzmVYSva1X/R49H70QipahhCCi2CADjumdOk9t73ipyCAD343CODUb3zlqX/96NbG27SE9eOF/zaiX/+4ABeYdTVGpvMVaDApgDyEVUZIDwlEq1193wcQWv364XoIEgNwgJDGpFilEZO/BhL0HIzDaywNAIBuloje5oEudVt8Fpnq6nnqtEDiIn0ofuT0w7wU2epvicnkwyEXIuorEEGcDXhdn12W12txXUCPvcl85miviWhCsAN4dLPhO+YuIXcg3jZfR1C73epOChT3RkrWIskiMRju1t5VIFpUQdoHNf4IC7k6SItxjOR+x8Z1jd06hJEbmVpGsAJjcHVTWN5+aOH9bz9729+GAK5Ew8/zD1N7QaX+RyurP/3Z7d23uMFSMTRgUHJGrMHTVNj9WDgujYI7xOAkaQKgEZC7jv4zvZrQixWDUwyf8j8AZqKHAF4CcEb+dK3uJZATkgXgaSKKUK3qHu5Ul3aNsB2CVTrU7cNJhoHPQYQNfLI8zENdcvrk8CBMqLQFEkZtfAekgx5AAT0sPvRgJDLTuzS6yhCoYt1Q7xbzXHPY1O9igxjnMKXBaGaONMYOwgz2lHDYKyDUfQTeV+BLE9KB89M4LOBKSMgV7hmJ3OW63sVUV5E2qtQ2uKQ0cQw1GgjHF4xp3CIgKLmkU21d2d14yyPrzZ9+/dHTv8gNTZ3nVciqdljfumyzq/Yrrb13/B9PP/Ura4PxCQgSgAIlHocpoyiy5AFbFKkRsIGSdW802QXCCIqlWoj4JeTdNSTHNhciro54yCAc8+gEhrGEIxDMMdpnWxemD32BITJpcAkVo7h0XIOJoz07Fphu/sPbjKRRdoSF3m05BtHsuHl2om5ybKCvDEHwWLSviJ1hfUJJ1QPwLWwK59IFjQMoWi/HurO8lDj8D71fZnymq08I6ijRykgn5ylsMnYZV4gxOH+xHwYk40vFIlRvcqtSwuu6eGUQari3wNJhhfpGA0cQuzkHZRpUwujmRvIsg9PdziDi2WL12o/dfPvPnpqZ/YOGS+fPo7wQCXDiP65t/sS1SXoicqSdPEB0JY+NdHTFDBhcikcgqJ28Yc0yCG/tj0XUu0BjMEX3zyzaOhOpwVauicvRiny9COP1AmOHhi7wjFm3coXAd6dPrKSRPbIIgPQStOolwD5td3hWsahKYUdgZPDUoCgXohTp2knmIE7JSAkXjnHzWBDekIdWQZgqwM8iP8QDSDWjx52n+urGCORPGSFjbM7ZqGS/M0yKEkEgGiRx3VVJK+jpCIMwNrkxZWXUzWxqE4YTdkCoKuCA3LkhNUxJrzKSHFn0hdRTxZr/OIEYikZBJ7Vkuzg98bntjZ+AAD5Dt9d4fcvyfAkg+6ONjb/24d3Nt4U9Z7ydQav/TIYMKDDDcGGYKLiMYrKmektq0GLvM9DuoB8Ikrs1eI5I6UgSs3BvhaXugyC2MRIuQgizYKXGtV3W9kUcGzUDiKLFbrW+E5I2mwDBRaCMdvSty2IJ6TCCe8N4Qs6Hpc3zjk0xP4F4DEn12QvQ4ZrCrGS7EIPSpsTgKuiMjHGUGIdcB1qZK+4nhGFUkJqaOMkeOsJkUjV+sVRh8YfgFASgISntw6BRdJHLrl9QUsSZ2czRJN8nUFJZooFIrVKgX0PWU+wO510EDtBFSBkjlAF26gz4nAFcJeeE+l/a2X7b2Zn1j33fUqSWCaFvWrKh5uq3KJe73bv/cGXtPXuDMaEKB81InJWcKomjtxSZAl+OksPL6Ec3VexC7oo3yxF05+2kg802CPXy4AXSgb7SN/+O1S7a1cLugACt8nsJr/Wkcp47ZLI9H/ZoqE9HjtiQs5DS7ZyCUZETfjL9DSAqOU37SZdSH5zhcJ8XYy7BqR1GkFFP962EBFMtiCw5O1iUBwrcM6QzhSA079X5Tj3PMAQFYL9LG0LZRSHcfPrTzeU5qDPyGb1p3ww6cwsbg0olFuoa3zefQR4pW2l/nPEI94vMVw41Xc7YR2DKdhiPK4m2kWnEUAIcECIeReXR1eX33NqY+9BiteoGlG9abP9blfoHt7fe/dig/SqpdIL7Eb0x4FgzZ3Apzq6WOnYzQNT00krPaUN5q6iyXOZ1nUyJk5zgsciIDwGoW3nKfHyfWQORq6R+b3LvKBMkHT+66pAzFzF4IQDw5DVjCdjAcAIIoH8WcUGumzAAsEYdMysDWXWl3StaBeyEPtTHdcSvgRjFcg0kGJ6WqzKRo0iNvhR03iMOAYFJHCLZTSmlYjXGBhNGyNkvuopG6w4zBhGuVa8K0rtQwnjN0WtUync9e6WueYQ0GFJVtWkSafj+fJY4lCZ6V9GO1ejH6rHTCV2v0lX9udo5wp98ZnPzVY/OrLz7zafPPUXX39Qg/JYE8Hirfd/vXF5+90priCRSD0N9tKro0g/VEZd7vKZLomMk2tw0oX3pOp9yl49ByRtM9hoDNWOmzuQPI1NqIMXtv/O8jhL71nrWy9AHd2IjEuhavkPyCuIp/Y5dUgU4hoZrZmBQnypwjZAGOEgfkzyQunxVJ0MMMXDEPkQ8FjsUcyLDIsckN05gFjEmBmOHUJBk2ooiQ5XQB0/2oSjX0Oswly7qoA93KhAlYiWinA2zhw6X8ORWg1W8xWfXBAxMHZGFGUbZzSpAyPWR6ANJo2QYMxC6jkhixj3bNyPaMWNqRPuRCxnzyj2nqAe1fOzqtXffdmjxD0+SUeSwnqvEo891k+v1j25svqPT67ziKDWXuNBGCui66ZoJJA21jISOKcRRFOjqUABVc+YhupgCwNKC94YWd437cpIBmV1SwwaQj7FtAd0FcBp4ir9tDMquMKIdtUAVoIlfOXIGVHCLLuAgqF6yczIaVG4V6/PFZWEXgpUwbuTo812RnWLD6GmMwIjc51BVP4ZcU1irBIANRjUht13eO7S3Actq+mj0GsbuQJxDWLnMOA1I5QEk+qctcxdgfJiFsfKMrK/h6ryrPH+MyS/iAZh4QjWSUFk0MhJEewOCBOAYFYLhC/UHWUurNGzMQ+6XKCTrg5S5Kq4JijSSTAyrD1CDlwc7r3hkdeUdEIBq4DmlALYNvT1H+VKrfff7r19/5zYhqyWqlUCyCZAabCIi53ctcwwRRoWUCpdEC9jAjzrQoJVDXmISC9zfpPYedafMcsCkD4FukeeKoaLXtf8yilZXbgmiENnq+llFAc/1ZUk+ujIY6oCvPUmBai66GO4d0c5Ifw0gD+V2VIQIia3iDLxGnF5xDNnCqcQCAPoIrjam7daveeLvM7ZB2xPsm1h6pn6fMTpWDS+DPLP0Z/BL+aPoD5lPhSkMYcawU7eO817CGGnAMDUGIl/rLexwX4/KtLjuPpMAhVA3GZJll/pGGZV8GfPByiGzSU+LrphPPE7bPeCjQoLOQ2XodRQxXB7d2XznA53275xqznw6r/31fwM9X385rpQ+ubb2I1d2d283NGlQxrTomxHZy3SwiTuQQsFLON4CZZMB1PSJ4DD16DwUoWBzFc5QiG5OAUv2HAhwuVh9WWKrTRMOYtyQMEAFs8YWdnkeozvnTpHD5/DDCd0pao2n61AOc5keXOQYpIkMyIROBEgVCYMxqTbc1cM3xD1PMkylSUMEM69spsb4tCEQ7UikEcC/Buea/u3eBf5HwObAG1CBtyVgxlFmMHVksxolDE4qz9gjbRnOdmHK7CZX/9a53hqS/oakKUBYksKA/sx5FHMxN46qcaSubgq5GbkKjjYT2iyhDp6N1pahYG2kcEUJehiSTpnYFGli5rERw+XW3u1sUf8RCMCTS5RFX1eyle5z7lI+++Tm2ttfy8oJ4w8CaNCBRtVxRuoGiQrIV7RuQxjzAKVHvSZI2cbAciXOxZZjTKAF97okexwgN2jsEM9xC7GIaoAglCFspoHyjaSNk4VpCfFKZsmkfSgAACAASURBVA4s2Eb/wwjBjSM4y/hG6Fo+z0jpNKQLKPBiZymEIYJFNLDgviJfXxkEydKMQS+gBoFGQqZ1CmYlufjkIpFup8kkLCaBFOE/pJMp89IINsag5KsRXSwxL/MN3cegX1OWyikGoySIKch6BnxuQZl9nqqgx+CPsEXGKTm/ELq7iPSmtFm0J4yA+Wx+kgmkzBwNPbsaaCRgCtOVnAzfptQdISW1e3r02cF+yZAkoY6A/16hXPjE1ubbX3P8+P/DA+cd29eWzHP4vlF5eHPtBwdJ/77FBkhmXCOAsgNlGUEr84yUbUFIkUSBzgUwRvPMilHkLfOM6+o3QZmvbmTJRSa3y6b+Kqa0S6tNqHmGl/6riyIadk7LGL8xA7mrIc+yaxf08ZIlFIHe1JaW2pEYTHiEK+kRLyZVKIRoLvxlPSR1dlmMUE/9zlPUI9bAM+pv7RhgHGOXEKs0UIaAj7HvgG5k9vDxFfVKHFO3LOEu8k7Lof4kLPMatMS3ie7JVi1lEXN0tB4gYTraCE4wdC47ApqYTwNuVhPHtjOnzD2RbRzArOIw9CBiLXxXS+0zBeYV9YDqgWfNXUCswITMEYJ1m5v0/lhn775HdrZ/8I1Lh78xAfDYNyoLj+3uvJVgTckdsxUmp+8Zuofu+/KsYszBCmShRNHIGQDYWZB0JwPflKsw93cmfSRDBeRSgWc9lFEAOMCqGBUQcN8YjFVBqjj2mBCNSSuNeA7ao/AAAFQSSBAujepiHqR05VvJkES0ozoQkr53sQEMroRkAGA6DQ65TccecKlhZbaNQS6XpSfwRAEiUKaP8BOJFfGZ/wCgBDH1QcQYLhRpzkGjbY+O9qASdipACKosl3RTpBThXAjPRA9LERXA8HPXEaZwmEox3VxtmR0RyPjcMWWeZI01DyANs0DA9JkBd0sF/QJNB8FnSgnaMH9wHvExUmeSduxeDAildGV3863J0uHf5jGPvvuqklUlw68pX97dfuCxzetvKqKfIm1rP/Ox6EiZmCJU8Q1RM0TtA7wB/B4jUWGMQBkF7i8BoUNIAaolh4DyEoDV/TOmLTKGAH/LAxSAgtypHnQ00FvOlWBdw2tCbMDFJjE6REIUMa3t38ijefI6xRkL+iaX6n+Zj69xm4eMdFvl+xACQbQh0QCkQM+qFeIEjBEic3a6pinjm2L0cDJNcPUIjGi0SoZuGB0hx7VchLNEKjFquC6WMZIRy7NwRcNVKTqCf+H83EvxrIIRC0VG8gaMO5JbVKFQHqCOQsgjKWEgxaISg25BEEU68nYdaeW2OmGnJ1bn2YY2DnVcfNsDnqq74xgli4yxQd05iG0h671pd9h5YKk686G8lz/7y+2vK9kT7fZDe4XSfIaVUWdyikypWnqN8Ie6DyAbcRVpDkB9G1+ZskQiVyhwTWsCTbyYWbA0BqAtCW16NwQUVK34ZEJSOzCEs7R5MaioOChXEOU6RGzQ4KJcF2vjE7ZsBgtZEz2sqKfQJSVu0B7SACL3m0QgMfruADkKLj4rVlUjfrPfMRZbD8JUNRnjqCCdVBciPm+JMeAtTIl1y9ju5EnpW9kVm1zBVg+D1WVtt5BBX3hF9MHwehhsQYB8llik6zriKTa0CjP6t4zQ9eZRalgayWIY2AioUNUdlwxNj7A5+rzWGQdmbHIK7+VmoqxH8T+beEAZiSNt1M6jW9P5aXnjoR89OfNhm+Z1o2Sevfs15VBv2P4LdyNiDFm6eqdVr6xxsWaXxwuKP6xqd/HksBYj1EGkxWlcIjckC9eRnxzVCGMats3rK650z5gtxh9eP23lUOIdca0V64JKpsijg8NUtXn1sMOd0F4PaTSakvsDO4zpV0AJGGW+od8wkACuy6uqFgMk0HG04x48/UCTMn3GOhmuoYEjg0ZT0niraVXSCXcU+EcZx7Ixel01wsx1LyVaVyUHvDqQkFvJR7gcnjUATYIY/lBH9RRb3CEsSIngEYYmkkHjWII3z0+VGjkKvEv9nFSZG5QArIpEKbGfwcBXCrdFZBSicsn4VnSuZxo3UR22fRWJuddm9RZkPQr8Xcb+Hwabf+FNR04domXt9xslc9/6s8vFzu4DT3V2HjQBQZ/TdW8nmzFw+k/uhwVrIAfmAEuMUiALIFkeajdmHSc7AXAkNBNXEDNQ7hnOZLwAnM/c9HDmpMCeYZTimEjcCGMRlUUFRB9sLsIrEiwI1N7RJVPKmwVcBlJjKDDl2ZF2BN0bPWMnSKwNKGF4hKYkwJzsDfxgrYbFz0ggVuYhMBlzbDGjYhilcI2D53hQ7AUICM7ntFGkA5Y7ky2EOGSezE1xjrnPK9f/LiGzikSbPKMfz9D0aLDj4XLarRFi4hG5mtPPIGizmGA02tSy4RO6XyCFZgv7QBfGJeEifYj8BrBadImQrjKeVaYu73Ujjc59jh6odRkj69q4Cq5YTqe5y6PWg4+39x7gHMMP0vuNwvC+qmS/dX379f/LlW5jKhBkGRWy0FQ0gfgljQuWsnaQBh6VpgWteIzC5F0902jTD3ahxikVmKTALuFuuQSu37tAW0cQm83gRF0ZT9saJSeJkineTkIHZuKaItZsElACKD1aE4e6cwaCYCBaz61qPtIvYw0PIR+O16aIE/ALUdIvEJuC0CbSTRwYrDJaqasoIEPKMA4DRilID7JBukw58TtKEBWIzL/liIRoikVGR4Nu5mTiSQeFvjdC0UFAPQ0F5hrYov8gSjqKg6iYZwmfraqUwuqdUt/7jlO0elilySplCMjcQcPFkEwkz3bghA597iH+JSDHn2n5c60jUdLt2Yy1GQjLEPPWaNL4xOrG6yGAP6ELQRMFWO4jL/9emx11H/iryJJtWtqCy0SekaY9gLLMY+tIguhFWUWnEUnxs8pQaeJcva68538UISZ0w4j0C23h633RrA0AWGIMVSjpDKJ7CdE1C5GtsbxWRry3yJaYgxhqAKKFrCwRTHJyGSrkOIl56umjEJLGjgGXCpM3q3iDvjeZw66Eynsfv01j0EGBU8DoKCAI+sQORNqov7mGnnUjasEvmuuUCePR/ZXYFXo8Am8oWfjgnPhv+LkDMY3Z8m6gwq1bgsBNpLGaJ1z2i1vBXe+o8C7YGGIUVYwSCauRJnk4rms7MGY6H1qRPvboooOYd61khiEcZhz5cTQQCnDWRaWHpAuMPcSK6nwvJo/t7DzAIpprSh6IHQUVEL3EF5Z9zzzWab2KxYr0bqqN4ZANnwaAXWKrR5nMDg1PDKLQcBydhvJtAShDsDWEl66UgDX/X0rmwGb+wiUgbkwwnTsY7SCSZt0uhYlLuBT/mjsc+kJcfMyhzZy/3+mDFIw+ruUxdHP5EY8aTgLQiJBDB5DyDZIvOY70qKPfD0EIR8jpWuLzaTmMtWMPmmg7fsa5Zj8gVHfW8UoNAgxRhlfA2QKqFyIrVOcGHIffaFeCSl+ewzxoITcgvQhOQLzjYI6Mq0icxGcnZFG50cQdyKo81aAyUU2gSpEwwDXEA5HSPr0irUyupW2lZxA6QTQQr5DFSqEu8AAvDbA8MWXcITIu5yWqusy5C2F4/I0qyFJjXpohT++2XsVvEZy5udnweLooOYnnnwt/urV7/7+70jrac7YAmRkFcHISpStrCwXvezN6p2d1IqpCLopn8j+MjHt+VlYz8fwBBuVXb0lFSNerWn35WPfr+WZbdES7pmzrajbp0DPfj0BUfYBhoAaIJBchmGtKsk108ch1D57TMAlWHSdnK+XkHojgLJG4kxh4ZxuV5O45EAGEXcBeB1gbbPjfIrqHwxm2CTZgGJb61Ia8JWOdPz2aAW7aEFdUFSfxKAhc/TNmX9HU57PrJlVXsKiCgonxaD8oFvpIiTZIclXS6KKixwBvn+FLOUqHA0PPJXJT4MLTQNr06JNLOQwh4gnEMQbOLm27JF9jhHH8LV1Wgb0t26cmWr/XPvrMzs79EMDjtMBgGJsndeyXyhOd/h1EniBHHopeeIr/IeZEhiG6eM6L+1jUmofjQj6qAmQH6dlmtR2wlHOIcE9IxX3q0FxUst34nH/dH1fc0p0zru8eOkPGOwxmBWRcBCBHAITd7jJcjgTggCYAQTslXQoAYsg2iIxQ60UAcNHtRFqlHC4VKysA7F6kxOvni8npWiU5h8q5g1dkBaEjVqm2wpAMaQsOkeTKnkafvniFTkcQzRQJpnazr/CW+KCN46wnRBOdW4bvb3av6d+edBLGLL8iAueAdHx+qplRLP6t72kpcWKJ7SI5q3TgKqlfJfo+YMTODHdYt6jE/IyKzlEjMpG5zxBBPyoJHLj0DShJq0sKaxxYidq381gDIHR8gwCKT7Vbt0HhGKNc87IyiI6DmxhgEIBcLWIttqp5HojnDTVRBSHqYh8z09U8vOBmzfcofuf5/SYUItKEtqbeGRBF4ETnCocApJgNQmCCDW4Z+3ahZZM2rhIpC+gIHggsRHo0bh9Cgsa9qESTAPiKDxbQe3R3nDx6je8Zucbo7WajmjzQxHiinfubxeQWROc8z5WIw28B5BUedytZx8V4H4uxIEmoT4uATUnBJCRqud2ixOyBaJ53JVPQma8ogIwNgDo43M9cgri7SByXwru0owA7SoxX/a2+D1uB5gWTdoz3jdGEWQqLpxiTNu1ilmgRDwrSyGAKIihm4+HwNh7nybxkLcTffmk+vrJx52QHx9EehJR4sGrMjncGDTlxzZnz2aIYdPSMxpy2DjdcwnwDtsFJCGMNnf1lAHDBboSJz9muBYx7zq9tuBVb+zIqRJ8+QNthNxBH4Jsp6Cn9NEuc3c/tXgTrfcax8pCIte1gSd5BarQntGJZj3eJ1flpvCmiHZP1iXa2UB8fJR3po1T5d4ofFjbOUu92jMCHsDJP4G7eh8HZwF11vKaoXyMkdx2DTAvAVTPXRgE73eRE4dkCqpoq7VS4ptGtLRI7jF3IoWupv8prjK0xx33D73FAJQahoHVKIttYh6AXhk7D2IEM4aUq45LweDz6zmBiF8kITjIa4Mc92i10h4M7USmQeQw/yZ7eczddlJsvtHrnYkRQ/hzGUwnqV32Ll4ChPdEY82QguDI66t4Ilwk9gyKsIpIKsO4jhEOXoV4TSe6qV5JX8cweBPQl2utah0m2cJc8ayeIQnxLDKwb5IjP35hOBEoEtjJ4k2c2lVo+R5uxmiIrKv9FrAhV/lGkV4sLMogQ6lCBcUeAQbEjp1pJSeHiA82EPeNF1uiTnUJykWsXGdsHFX8qeuByB4RzF67paVTGPfVS8gPNCk1OwkvaBlhtt4DLsYxPwSNbgvs8l4HPsGEEhWK4YpJ5e18il3iGEMZIgua6XphgNsMKyzekhQtzLo9TU7JD1xNNxAAW+WKzAVMb4rdvA2WzDLsNc4wh5M6oe26t372Zamq4JHumfWM5+CaqIGuYbcQs6RWq1QCLyBqkJ67Fk9QqT+5Bkn2T2hmQ+/w1jsoAu4cI79DUJq7BE4GRIXFsXBfViEV1wGOBRD5GFaiqxEz4Xa5gXH0Vs3H0NAxKaelOyZdygUSsER0OXA7hvlheE2EWoSpC6cqMGUEabOM1uT6kA42BSA2uKKqpGA/31UVC0uLYRJCNCRMphNDdE5wp98R1btoXivVV+KmvRSrcCuOc0OtA509Q4j1CyuscELCGCuoiYSawu+La0HlDlw8MoRTilLMwxUCSeQMahKluJJKutK+R9Rzca8kP2MS2tBoENwA28TsH1O+0e6HpVAFdkN+d9kP71SQMJR3eiZHIQXFSXO11bmLkH+eVZMsCMC/Hcw7gCwBw6TeKsCjzRQDaOvMugcgZZIsixhQw4ROKnJUehWFwClawhy2cAsjH6P8JunH7uKt9PQxDEyJEom6za5kuhZ6j+cMQj5L7KuyzAUAmiHmjZaEARQhUXGKbT+ygUX7av0pUDnccQWSOl8bEr1Eg+xB/EgNjDuOSfmC0yE4KOSvrSCAGbWqMgI+WOgxRZe6qcrtTA45RXW7fVqtoG3wOgvjcDqxvJQzLNxOPP804D0PUZ2jr7jqcDML2OIl6kzbaDCxFeggz91QaK1INyvUiydzLcOEgPqWINO/+AddT3DGtNxHRVmDrdGOawBoHGQhjmAoWiMDDrvpIIj0Ow+ECYYphutnqHudLlGwlV7x+OTaacVRMREAyuICCXKT1Ea4as/dsPwhk07RfAFNHLB7ndYqJzzI406fmqHYTgEyBsNRsE7Ow9AWWulaIjWrFms7cAXgO0oEJGLy1cCbk/jKIQ8qyvk0/hHeVDjEHhjWUOk3Qo50oDlXgM/pAoBsSxLpWpXUEokSwv+SmTRjp8Ma2fU5pwGsOjtQLwIsPwHZBRJ3xniQQcQwda5xiHYhn2DXu3pmlHWMap9Coxxh7lQT9HjptHhXw+A7bt2l2gyjTAkbkCYJrR+njLqREA3gqODch8A0mtcszrhAYCjZ+kiIGRkilOLQK+LgrSPhPGYs5D5ATL0AggnlGEBYZq624PJ+ztDED4Ad1GbEth7RDfpZLGb9leIzHo2Q1XZW8HHlVZVo0RNRCRE8INJjgoQOxZf4WHblpoc5kPKQgdDedFeAQ3pJ1xF4XZBW532MySEaIgBg09sBldLcBpV0ot8ZEZhGn4iSiaUgBU8klEg9XegKE6Ml79Il5BTPVakygJ1IRa7lipXF7DXFOJXOplQT8Dz8p7tED/elGRVFRukQr0nhFCwBTpp+Fm+e5VUEKqapMyzYFboZkFNf0N2DDTYIjJrrewgMnWQb1ZBGYPDkBZx5CPXaBwzKSiGM9k8c5arTATQ20T7T6yZdXmRGfl2jrHHGI22cyPAwIp1pOziDNDhGjgPGT6/xkzQaEvw0c7VdujhNDQt05drwMbJ3AC9LBtQ1np6VvYos07m8miC2XrSUQj9OfMO94hjqTKUdsDnpHqBIlm1dE5mVpnmyFdchH3WsRER7TEiIdQqiDJY9buQ4hlHlNQbYxeqNQnT0JCdXAaGYI+G8AoDUGM8cgtVBPY0EzFNrDdrBduvBU7akTcqKw/S7UumnuAQhoMaxWGJhM0eEw+YjZilxnbdaEN0Lk5x+b9DOLLpZs1Y9dpJXr5j4iAo6AlEUMRBFp6Nmyg0x3VdBmBqibFn1fANlG6CRJLambkSRHmatn/cwDbCXNOvrAf08iTraIt65jn+wwftPazFnwwAmjjVedaBTS6Pi4jvT6zAZ2l1wNk81AaXdiRD6I8L2dbcg3ISUe0N5ijpswyhUkRCThcq2MJJTOGwzAaRkdDFUHBDUFA5M8NwBu4d4jqSSsiDhqqCseEIszhakJ3lHSh/704wefP/7Rze03CCzP0bHoznkS1RzivMM1V+GiZ2/CfYwlOB0YRfhRY9xBeKTJAMAWsFyMU5+Ea7RDpDUZ0fNviEGza1ixidSAU/0xhhUG3oZghM0z1L0MMRTpx1xDDGDq6Vrh4zKMKoQWefvM0NSzPe0AJnkCv98Nn2YIQ+9ExpiyhAsXb4WNwgXaMHNHMVxnvnMQs5s5GoxXselmDSHgUi1aCkM4TZZo19PBwEOkhRmq6NHPHvVdmvXIWQlbnLiKinSPHAnD4jA8AR9TxUjUZI7ubo6aUhmEGpskBaarmtgM96JyXHW9jQOBboFo5/FWVLtKmOvAxXEJZ37WMPBh2Fh2wFoKoRd5DNyzSR1TaqEi/IRa5uK5Q/ETd9/H5ST9y5/6lO+Wxziu/G5zzw1FmpToKVU+LhW5K3cA5EUqhmTS4XONDtU3u9RyQ8MOQOZn1UIizyG2NJp03xbp+DgIX4LrFpijEtv1fpMldoJTCe0CRJkyzuLxPgMtwNHu7mkRLRORBjZMstiBw1zs8VBnicOVxDjFC7RdcMOCxODsIYjjjNesZqWPq4UCw3V/AcgQZebg7FkIz74lYg09Pb4ZXuHx8NAq3OymFoNTti1jW3+OthDO4JP1fca5w5zWALvaxyBPjTGXWbqteuQbwDITSLWjG70BTDXQtJuUHhGocoAOzqCV8EYyvBZ9ei/vd2HRH0OlzdCmXsMG7W1Qz7MZ/H2rUAiMnf/MNmgDxEnMNOoF3hlmcqJxyLWAe7ySnvvDP/Hd8syF0eCckMdOie3PY3R3EQTNA5XjIKPGwy4EGXRx35wLOCZCKooEpBEsd9A4hxIDM+eeccZ3f1ljW13Kd5YmMVfQkQwOgxluhktQzL5bBKhLqyY66qRGG4ypIyVinPbo05fGnDn6uwBCtzlO96SJPv0oRRZgU3/8yYQsT844BIWJVBfARFAYHrYPYjPmox3iQo9cb0YygcJYTeOHLcIdnkFyORb7NlXtQHsq3W4GPjcDmwXUhT8NIxW1aHBDFQGRuIuox/yMjopYN514ZoH7Gkt4RR0wau5FGKhcXwXu0oD5C2FwOXdUl8bJSZjpXtTFneikm1BNSxCFNoOHVLh2sI200chlJgE8motx51zhXsvqBS7dxCtJ3/PHf+y75dpqq3V8BgS6Hu/v6ogIxbsbGNYZh5LLY1BFlPvzmyDwMKxpwqMGXIN7ckcwIR89At6MVpckzaMvgxBFlUe4NwC4myd8xHm5dcusGcWU4lRrl3kEOTdtlNIGMwLfrCN/xaMEEjRu3GgSRik6rkFdmg9Rrmro0m/oSgjHVUVv2J/FfDpzjmuIS+dqzsIq7W7zEhmeUwjTIVBUGXL1hMim9/gMPGaYjDhyZ4/WeAkR7vKs3sFxCNo9EzPMS1XU67GcLXJ44ApttBjnEAZRbcwzrgUGKVGqEfwNBOdlXy5CBfc6diRFDhQq8j+Qw2SPsvp4DwRxH0Gbs+BvASKp8Jw23I5ZR7wb0NNYNDFltlxZ5tIJXkn6B49/3HfL9d5gcNjkAYsD0K9knmFIeTiCY1DcGn8euuzJoE25NlKlSDSnX4+hLRlT+QIXBZoEoN9qBrAGDQwQXqaywvCp7aqhqM3SshwMHYE48wBL5P25Fctc/RoPzkCYfM0pmnpmLHvMm20SN4F7Da8aigV0QhPk2r4HTZXhRFfN7NcECy3lNmxmWkKX5+QaY/YX4Xh/ls4opgRKiwFvD2yUUGLfI2PQbdNe4rcsUQ2s8AEzzzzQAFsGcNod8+jwY6S9LUFJJ5BAczQwIICwSV01lYmiihw3erolXHxLwP4ohfaSgx+gMwxTeNv4gHzhUbh7EN4uRLHNvNbAsHsbdUdvgwhuwRj25LQjGI4zSAjHqV3iphuAs0YT4Qmk//QTH+ZzlOvt6fiwchBYhgj1nf5DZ5cx7Mz6VaOYHWwmLTwb3Eg/oasZU7xX4G7Tv4zOOomwxBn4rlKESh7vtgtwDAmbY+iJ4pFDR33dHDOMwlPAnlDoKgUNuoiFEJP071cJQiPSgx3r9KdhpiQxGAW9hLhX1FqMNxhC9gei53hGO8RQhhLFpVf1sHaGwPeUs2WQ4n5BQ9tGiQlzoAr1HmIY2BGqDDk0J+gyO+cVw/OMpQlz3Mtu1zsAjGcHKAHcJewppcLEE0lnIR889ZCqJn679dwlbvcsIoCwpxgzL105eZJLCK+cEGVKmU4JZ/6/YyK3GcZgzMBzDRh3uKeKPow+P8LKo4SxCGHMArOFavkGAWR1TdS8eGY7EMBgolGRHwLIzukgcvqVpXQwNezKgBlDIIKrABFAKN95J/MLYCBeebVoT13uESpHGEQTN8cjUwy42ZzPms0i1wyYucmVY9o3ztOndXfDihz3yXm65w43qGr3iF4Ih3ta2C4VmzljoWmQWEyu8r6XowivwNgFbfusELbT0D1c8AEG4pjm+HoaIB2jraMAAdRFxNCpuaFFIm/CaUYum+hfiXmG5IGTUMgilWoQVx2D7yg/LOXqlllNrhFuIGYu0OcWsEVoQvzDkDKET1CHrNxTrwRcwnugTek2DtvE4Nbz8ZKGI38DH9pPR2RKh858Yn2Fz46LQ6XxxCA7YODBFWZGXcNarsKJTWyUM1MT8/LCGU43CKDfUbERBNICl8IUnv6yFjgMUR6Baj5jckQmr2SiXa2q0IMRoZ6yFTTPoLQFXD+3PQ8/th2nMGXyzC/0L7AM8a1F7tl4ME9Sw+I1B0fjikdCf+2SXRMcM6hCCEQOkJ9j7IstiPY6WOnSvjhdY2pbcGJsM6PeAmPaBQW2b86/doCAGbGOMcv1MtyowViGUwz5Mm2QilvICI1oHiJbWE7SXjAlXTHsoMBXjFsPPLQsk1/l0xaW2O7WKLnCOogqgKkEc7jtPKw6njVjWeNWeIjBwYjgMFQBW9A/qonrwsfbLq83kCrCV5VTRZJ4RMw2c3Msc4h3T2GpIPnMxWTJD/sEtQmglRTOWyLxxyh0PzaHbZimEo4ol1n6kCXy0h5BfkU6UCQ6ahHiaZUQUCBRXxIYxeBsL0ekEB2wRm5QBy7yBoOFiaKeO4q4EshSpMkYtmFdT+MCZpAPBh596H/HBk0zgyEVRbpp0Lp/VdjTSZq/d0igwxIjfrP5cHOUzBEv6KIDpwKGmbObmViDc8mjlkYlpTwNVXff6OZF6ofiHSg2MB61Qawma4zgRDnHDZqqJmMK21zXAcIA512Qorc57sZnTDdrQZDaOmt83nVrEQRRd6MInUmYBs4KWZX2IBmYStWobWEQTDvB3z12jQTQRcTacZjk4RKyZxVL6GJNuJkLER4E369x0WRZ7wnzeSy9Q7xreho36RO/0EZxo+smNpl2xz3zM5oUUbJZxMV+2YU2iO+og6gFNY0Aqr/YqY51QELRXSqxgUPdyRRcEBLBuo6G3nkKFaDy4As3CpqflEih5iM4CWRo8Pmbe7q/zCmMLWeXMtgiJ32UWRuXH7Rag/K5XgZRwA4xSxBIFzPqV5KbYGEzY/US3F/fh3i3seJUG5sYEB4532Cccv8sI9N1lTvMbF6hrhFm8yKMRahL4xwC7it2tV/2UEl7cJxADo5ywMzNQyiNBXjMTN3AFGPzHcn1MgAAIABJREFU+FkNzx5z64D5DTmWefch3gnt6CkZodTGKe5nE7UFoLClb1cDSfVjzhAHc9yU1ijaXAwlxtPkngdcBmNyzS57SEEXz/bYsOIuKheDXDklFQOCYRc3XHdMgxMXdbEwDW+UxwjIubc5L9sjD/NDNJpebDDIfXEGcPkSSBUicSKYIUX+OyAtFDtTYigOHc4QLDO+AISYFV5hYDFS98Hbo4ZkkAZcjxTDF4a7MRYif56GaRFwKBBzAur2e8kWVzxoWuQBj9izp1HrTt8awRafUY+baWOunaQ9C5I8lfM8+sjcvw5t+HCNfl0zX6Bzf93DEK8xg12kiJLJ4Rv08QSweVo+rSVNB87ZxRhhqfB0EUe3tAOHXYfwDUyZA1gCVp4wvgSFDxmfG0H0oHSrPfFU481jbjoQtuB0ThJ3A0JRGnqs3RZtxFqdTAa8hH8dZtzguQJhYsEuUc8jbRZZ2DqNLbIhsUIZSpw8JA0+AeE281ikc5N2jleqCrQoWTOc7fi8XoU0i6nrUUCDhvkMfkEC4t2Ba/dLIP5mn5zssa8uc+q9O4sxk9Jg0R3zeQWJTp5k4QZLLgHc3JCKDRWI9om6DISYVlWEWqVzHc6cbJxz7taJaOuoC0WO1K1I9hw9U6kH6D2vR/YIFO/xdIcY9BmU8OxcNTwD/fBduG8dKWEUzWXZLraFUsP1AcPeiwDfdphRpAAUySmsqre4qIciIhhCwIM33pmzzIJRYMZyJG3SrkGfFvDweHeJuwsw3MTJf+ZA62C8tW/xq4AkuVaMiWiiQQ30X5M6EpQMomFg0KwEoVGN+vymIaurJdSMQnYdIgQtGJSoHPoPaCMVVpXkjhPf+inmj+cwmh2l61yKki1FcmJ8vn6FeOp4rLVCzwwU/ITPXWDh3rN/pVQD3AeHIpM2h0TQGRRldjrgSRBJRX35GAbAMUiiK3ew8SH0laiG+NRVcpaT4JEgFg0sCD0oXNdC70KSANMKnDDADLoIFx6lpZzYVEbgHQnjDh71NmIRY8zVPbl0hpuzPHec14Q1ehebdsgS2sRC3+71k20w4BrTABugAqLVs3X0c7nACYV4HxO4yPFW4TgllQNw7cocRb3zyNIB6BqgbSakSroW84IbVU8QvwEaDSr+hsssMQWCuaK08WSUWQBr4CmIhe9uplX16CEAxtiCj1DANWYcEJ0BHtEcm3K4f5h6O6pEJI4SEZQFLrVVkCDjV9er16kWhZPLHEKUFbDPSSlT+sLCZnIaJuplqc3gCsQVxSPYLQY9QHeIwzhrx5i3HIJn0UDO27L6z8fiTDyBRZOuqmloamS6MVNogB/EIlxHXRFq0R5RAkh8Zr6KVOu6iKNP7cGMAiSGBdL0QJQUBy0grCAu1Aqc6CEL9EIdOJMukfqEbatsRsE2OKxIR/QC4RYNeNaBv1/oaGAI8uqGMS/dY3P4+7hI20xMQ1HbwW3hqhaDSy6Fe/LpQGkB7MyoMn3cI2El4ghh077byS3qfI21OZz5OSQD9BcWvGsyAXDGr8qxX40/9/+5TmFCihnAbib1wKkSmzWNrFrQRAFLDVaTaeNQTZ6VgVmZHT240FzJa4KjeX+8OS/Lc2RkjHUheCR4WoceDnGoKdC0AT8rsqjgf/7AFQxK/W9qs752HHioo84AMkhQCu7LVXw3myVO9+bhFr6qdoYJlqoSRaxF+8DgicjLO8WAgqCkeg0f9b+SYCw1URyHyZceMhGI9jkEWQXlV0KEC0JVSxAQ6iGFazQ+2xCWB1YWQLxeQB1RU0OXeorJvPh3nqioTiCbtDbIroSOZSdYco7VLw9pKCLjXWVcZw5GEV3G3qSvNsZfCyRJ2ICF5W79jrzEPGASU8Ykog5zd8lWOLhQ5ZYyU0vdCGJY3GHIxcK+ycQ9nNODI4YkuLjxts9pGkYUPcVkhu8NKMVDvCW+kJqICH87sVRpIz1RjZXy8v5QOB6ncsMLeIZDDomkAiogFdY5PRaxGvHOGahIZiwCHlGmWnRsFrbBUZELWKDAFqqGo5ilA/XkrZxzuUHxsSEc4AkgunkWM7d1zTwkQvUYUgdgmu8mYvarKZfQt6oYnqWe9yQQ21QSyUmYXEBHiHEVPeRWS3nfIeYygPeDcQMU7ReJw/8pyTGh0pSpALKMO1qAcNUrvayO3TNDZpLUPmD7mqeI0Qdjn5kZJq8CGeZLOC7tmg66YR1k7TD/HSptMmd1fodx6YWU+KwDtqRJDPJiSRkDVIS7I0tPwr2Lnh5Gc2Fozzlv+tulTaOYdl4i2cMwtF5bETeSpshAKiQ3EZiKjap855QDiIm2QcSYeHi90njGpy1ZsxK7/P38dLFcvXB9Mr5X7gtgMZk+EkCrlX6DgscgVp3qMSS6iy606m+rgwwLBTZsjev6+1qxDmqIz2wjPJaLLWO7fE/lWp8E2YaanaBUVNGvBPi6j9REZUAQBGVo0gpSGcSA3GHiQQBwkTdVGwwmDFBtGH6Iw9qxhu84QjhEG/7Jg14F2Cs/nBkHi9Bc2aRO7nowE8E+jndl8YoNJ/5O0QxZwBW2f08yDqfk3hDSajD/efof4qks49+RBJRUiB8fgSAWUBsykC5rFwQoIVw8MjvKgI1WEPwSYj+IFuL1eFslQgTCsezdnNLGXnLnURd4lmG2g11JikXdYo1Tj69RIpSR1nXg4tnK7hT2Z3YBTBDyocrMhZla4+kDELDJJQcpF1oL1cbjm53WPXBYQCaYCIxgmwirKK67O1pRr/LwuBd/E3CCaJH7QWOIYzlSxIgMqgfibMbvBQAsIVgEj9fpJbjQZ4pYtv7mXlHSZzCxSmg/isgbA+FZro2katoKhvCPRMC7+QYOWbUDjPRS4+Vnr3uGYBy5JiIYlITm2MpFsAfAaDrqmZZdajAqxBWr4+xHgMsY8NAECPp2G5YTMOq3A9e3eWn0DvGglJpdiHSPCJjIdGCmaLu6afqZEixjp3UxMo4ZFE1JocKrRf/+KIV9qF7d8GT+SAkX6zg48xbHZsCUSNNJB2HHLJh7D2BsIPlcJOIST4qr/MipcnEweWiu8Xix4E6YvGiCHZQx68RPcZYuqnyKoAh05Raq0JOduCSyFZuCTWDGuX0A0b3uGnQSRkk5COIUOw7Co9vKzMAWFb8GkpSVUr5bpqgCENTfOQx4C+KxvhJBiTjEslGlCH2NIhccXL7NRX9eH6IPLnDNnwp0ATEylCg04sHLFjdteLSMK4FRHA7P6PZ6cLQ7dEJnUD3UA9gohihG2jAG/WupSTWpIPN3kcZ0BCMSd2BhikYnGGXaKwPUyBC7Q7G9QcRUVXCdTYB637rGIhEoBJytbzGwpNQI5cZt1w4CFtxz9bTN+ORbdw95HsOO4Xu41aiicW3RNYe0UpJ3sDX0DjwjmeGNjtYbTxGPsNMohIgZRV7687XZJ5TF7lqRMkSIHY9pREHrCl8YJdwwU2cffFaIg5AFVxkJEfTik3RTCvXAhILTgBvXaJp7gJb2o10GLDFIF8HN+aNclHOYpCyBWHTUGlWeAaSbJOmkiOIC0scNkn3quTXclTB344h9NGwUdSwGO/o5z8LRMFNp2S8gA3nYH+h+4wflQo0wLu1HwB8VxLMuZvnTbf6GcKptocvCODzzz6jfiEk7Pg+QMkcyzkSQafivLFrEnTxOEqguoieUafyZsdtjQvEDFgzInAnDyQJBHjcVr4JhZzBOCS68pGdD6p5G5q+cai4vSOjcHBMrcB1BbHnyqqatK5lykb/fXEqzyYnm7BO48ZpEUbLt7o2w8GSp1vz8Uqm82hoPzxoFk0r1feVWNfXB0aRSuLtT3ASpP+zhjrp5Dk5d6iNhRzAYi7UklkDGPnJEpL+r50QUXWLWUenCGEMwyKOL42mitqUIduHSn31zyddfCPG3eD3Pp52y0RvOcn2gI1C5brKImT/uM1ROCDTVjvadwRtdKjq35ZzKEcMFYsLu3ZcQRhB9nF5KXY3VNiw3wN3rEhxgQTNStThCjWANAhZ1ZahWonKHtItWY0R8JGMyL3Gqh6BKkGiPICqqxl8Yj0fOml+ha+MPaxkD8nSU9qALcQ35tRN/ll65CmzgdFc/XTJ2Pq4peCCkTBVSiAaFWxtk74BAw8NOUOKWHE40aqvHZ+c/f2nXxea8ZM3yDTfQK5cO1Wc/t7q5fEb8OK6CTjfiNtMipkOXdiVsNyAq8/gYO1XlJB0B0WWkSkII8chnDy3g0RiM8W1FleJZN0dtofGgMbdA245GU28c0RGMMNptYhPMInqNiz8NJbXJEBbRbr9SYpQgpBA7IG4WI31OMFNXE8vwmIQVvxAG8sNvpu34rV/6RtruSzp5CblC+6Jsir5R5Tg/x+4BnnLUHomIbShJ2Lj+rhRQ9cRpZdQIU9jvPGeRE0VemNoSE21B0yGt1GiaEAqaQpyaiguHvB/BKeVGLULFnvzlYdSKfo/p3SLAtEUDXbwORzx14QyPZAI+TPpwT4t+3RAKMaM7JJ/oZ5j3HF743NFG4xK3b5RnqwAvdhcasw/Xtjfe6XSjMECGB0gBI+nScrLkY4QpTrTiXUvWg5Plp5i4M8bCVZBBfFxz1ohOvri8afTKQ6NKxToLQiKDFlU7cjhu5xLMISLHxTZLofRrsj3rpwZ7I3MGrPt7AZ4JTMuBJZ4OAnRshkSlzwIBCtXFLN+VVDKEP06htJiC0RTiVvrEdUcJ0QaCbJMuDRbJfQaPZC3bdmoSidLE0HdMkD68DhNTIALpTmhw0RV2YaIv47H2ftGDKjFImg8KVKKZz6gNsIdXxPYMxsESNsg9AiFIrFNC1jKei1UeTuXhXh7jY89DVSWyX2YYIqmUcAWYxoxqA0YRzqfO7SdOPMyPTLoSfaNkq62vOjtwdLwx+8kvlor+Shsbc0SMXUBpDEpqyq1GrHFmJ2cxz+BoJxkraVChHBzHsMbUUQDcBNRYtXzGOKlWb0KnyuucE15qs0Vsl1PHODKFw3tNmWoCiW2CMzsEC7YwLtfRRbtQfQM9Z8KGIWjAIVbhiqCdIEwv+XNywBJPgvFyz/NzgUMs7FAzRKQ5B67PCzCHqKGoiE6GxPFkS4rItuSzpz3aljhUY3K/1WULO7YZjTE/GUKLynwSfmiSHNHcjWejFs9C+CFBeEYXV4LxmBmze7ScJzBJD+Lz/AAlUDFS8JACUEGGgansNSSPr4qKB9nAfcrvMGhMuxo7xn3vAesOUlEGqxaz9vzs0ie39jYd6I2SYfjd+LL/4eHFauPTy7tbb3YnkDH6gRxKMeZtPFqtyrxisEoCzZQ4LFKgMEB/jdufXeErk+QuECpQkUcBnAchbzC5NrBrRdDJpdpM6cIC/DLrr7sgfAt9O1Evh2QgFo7YNsrYlltsWHZD//ubgxKBRQTBQDE2z+oxCUKZ5Hj1TyzB8TyvtJJDlFNKAAQYcMfQ8z1GHtUDic4VGMd906+lEe0PvQZzEAMezIHuWbEETrRv+DoCUyJUZNGxEU5sQYaubyHSfAJJQ32ZzGRZf3GEEe1DmPHbPqeLFrAFvO8hV0NCkR6vN1H8Vzkqz2gn9YozPDftJnXOaVgiWDWDhBiwxrEHMXE62adn6jMPR4fP+pOVEXtfU7ZP1WY/srWx8uY4gRqo1gGwboe7Wj2dzCccelzL4cqQXfbkIpMbMi6PX3eVLAQdutKdvZ4vWEnbAH8DQlGaEK5lQgP20RnoMO5uYqUqo06tAkA0O9jsHw0ldfAIoA+QPq4RqOe5FNgJwhMzjEHjVbi7Q8Z3D3LWJhGLVgeSXEOKMTdP9Yift2dCGSJBItXAksAkXAmjTX9j19nhVMO1qhO0VBRhEEk0QoTnAjZ0Ks+IyIjBYAe4YqnKcJXQYqRUERXrF3wsGnHku8a3sA0ZR+dhwqIOxkiFWCyHWlXHJQggJEZnBw+MGAk4qk4bSZnw4mB2NmkRsApPAtVxFOmUZosfQdzeWAaOLviTre19lQrw+ujo3OJHz1+vbpEbP+9umAhaAIgISTAxmDiQYZTP5V2BKsz8g9SiIPCZsJ5/3IOL/eGj+Pk4YsgVxJkxaTl5wjq9SRcaUilSogmiR1Cv+fLxdK7McQX1u7H2kalmI2tN27jdiUCLFr8SSwCCp3h3QUSQe2iS7143XOyZ/lpj/nilvyxeZi765SLfjZ/mCrgde4KUcYFVHW5U8BBBLJGvRAEntGffkCbt6MHI4VKRQ9oXTDEOrtKffQEvCMklYp93iVsPSGJ1VtJH/BQM96QRiU37wLMKJSp/jEJXRoSbqBu/gQCB1bBtiukeZwNwSkuLdRcoaYjHss6CQLeZbi0mjY+a2hLjeNafbL7+dSrA2w8fm1v88LXNtXeSIxTAO3iGMQAl/8Qn3vVy/6wIDynPJBGBnd9DKjBPGdRfy3IbGH8VFlxAy1JPY1HvQDfGQxFlP3EvlwpRD0kqoddsUO7PQ8RUEFHUUKEfnPwt8ONHq0GTMfO4zzOOVAj4i93jCRu7aJvbsWXdc3WFuGOUMMzGNY+xyecaWDWZwwif85FIJFjdsVwu5X3YhBLAPlSDjpwKUBYvJwai1UGpXgjiy3EyrCiqgPzHpLnuXOFwo5V5tq/ZUDxD3N8lY9uoIBUKLHYVp5xPinvoIpKLSmp4j6rxPCI9MuF6cunkhxdO1b5O/NtxdmHjaj6Cr/67uTQz/4HzK5ff1p1OS+p5ixNzvOpZLzlhOUE8xmT57K96iVk3x6h68jwdJwqFU1Ghtm//8lTMhaewLWQHigjQwpDaFcFyO2TBnEEfYVBzGCvU1ais0IExgxavQfhv+v75OJETPJerAGtrSPmuISZ3+8nfKpEIUpIAdN+sb2q3B1L5Y4yeSWi6ee5Kcg9iEInSp7CgOlk/yhPbdtwKZ2Lx3oMSGHIuIfCPNdKUXrmfCQe7hEpb0oT2RNgItFXhgGptBQlJ2jG3QqgY5BLoNBPFH9E2zlAk9Ow+BQ+cVqJa2yr0yAcYpVganju2CC4vfZ2ot6Hs2Oxh379R+eO5mdlHpq3t14TJy5DUyRa5/CA8aY8OVKNP48e9cCJUgvC1H8YhCsU35x9DBKn5fKJuAf1qGpkTsi2rqFi6QDB+gs0HMQoztmurb/2JV1fuMiSJv+3jQU5kceilomMFHhzOX08bsQTR0ZZtO8YAZLxpS1s3H2tQLN/i18kNXYPlvpzHYEPsy5UA2xx+j5R1vcA2XbeKrCDu1UUq4/CMQ7lbGeMCmtIwlzdYH1RQIJhk69B1V3kkxxzzEd6SvQau0cFAaDAIBM0Xo31e9C0OzWYCg9ChNrLPAHSo8FxsHHrkxPyRP87vfP3frMnBiM9RLt68cOJ9X+jt8nNxsITIZ2xRnDUUqasntvyKxGSCAl9w7kOGT0YIjW5pxBDVZNyMinbcZDphJj2Qr74P+4DmtLI9uxdtGdxUwXCqco4asEIVmZlTIrcA0UiCQB9dOCFaY4r3HLr5VixlT8d2VbFE+0byBLBp3usA1SSSEC1ajwCMpgFiLta5DZeqDhC6XFd0eoKJdownnrspw3GXWJ3zNwr6iF13T4UrKWjgVC6BXPSy2KEtvvIIHygeDRs+iWLBqxCV9wZgNKSoKgrRrST0vCF/uFpfXy8oVl6YSC7VaIdx8D9g6oGTamRAG0ThGyONzjlqdnJm4dj7mtXGRS99o5Ju7um4PGd58HNPf/Y3trudO9TPIYWcj737Brcx1ZiAf03KsMgBsTgUEgNxy+R1U9Sd4CdEo+sKTqSNVRuRCRZKFJ1OxgkYKAodCMu6kDHRaLPQeJUYguf7FgqzgTRSL8hsGSTHiRVXweqkzxIt1uASVlmB1Z0LdGQS5h5AjuPXGA9KIYJSQVkQg7l0HoplGphhZJNR6hBRuF6OGyJ1E6lJbxz7Ewaf28b1DLRDGBFjhHOlJFAt95mxJDGIwJLuAJ8lgviVE6r1QbgnrBrjaHPdeImpa9ooI2Dp5halbWzXM85gXxRR4Ccli1lInhbGEFAPzEsRsV/mGrNPPHjH9/8Nvn764NrXvmezdbPQnrN8cWn2+O9d33vy54CB/YblahdS7xTkeZSJo3SSikXR54qZssoUKpdrXbQwm1jycCOGWaqCpsNnFzE0iNwToHg+IsAwOkwPV32g2oIAFLOCUuLIFP+chO2vaAuwEuceVvx1Kg59LB+jgveucKALiU8abm5Pb9B+Fxbf1ADF5crdWfqB1c2g9VBqG3d3kSFkLe8NRokXhXaBcKjnDt42P2MbOyaZqzpXfjb44691eIBkwVxFiFOj1RNBjRp58LzqRX3uHD3qzoBVibRxfyC6Kve7zkD76m2PlHWe4NPJxLgKtOnRb6LBhB0lm7fNOBYP8l4IKeCJ4LBMjy6e/r3Z+twX49tz/Emv7248x60bl9/wsace/vVWd/cOB2WJzkwRYwh2JscHKLzBGOUE5hEIdyWtD/J9NjcaqQky3LLNvLkuL3JtX0fbgITuHDxoWUkhsWgMCpYQhIrZjINjCYgUsDYrGIdj0opc7o0EHsUtY0hJ/isDWIFHqwFQmqMvgspClzYNMElEwWXUcanV4IuZwruIqzbRtR0szR7fVWN12vYgaI1D0BscGosu+MTOUe/HyFuJuLY7rJVocrSGpO6vmNP1i9g91CD8KoR2/al6JaISQ2jZlkTC5FEvtEnF2JRLUxjmoXJjlZT6UqGgdzwWCWO+OffE973yjT/Jx0947blKNt+Ye657B9cfuWnpxG9/+fLO/yyfetFdNwZNgtH3O3ekWp7a0gVEn/6rYonasfLmg4qzPq4VKQfoWhZeQDrDD6IJalcS6O9SuaY44z4EHiAR/WZFhIcgX+PzxuGxwBSzAORifXDGzpC97KoiT/jGZAhDLbKYfRykyaVTER5iilZRE/7QFVkQSYfNJKokVzrdUu2eQ1O4ibVhE0CmINIklSnPmjxq7p62j4aYY1ZsG4Z1rm2gE2SP1HErWBOiY7EayWZEFMnGeKUL8yUnEIu/+iXByOTaHxH+JUYNuAKyur1Kw4F/IDBBO+LZfBWW5yB+fy4mCoGEM0fP/vbizLw/GvlNS7rTip8v/KaVuHnfI08+/Gvbrd3X+Ctcmn2eeGkMWnILv9hpOyov8ZFhBlcZ1DBi5eZFAWtGcJkKUrVq5KA4cfAdvrASwR+R9Ih22xGQVAfpfAodZ0gKQNOXnZq6FZIEIyIibDzlPTnE7eNyhgmkimTz7Er60upUfGmfVxoVQZznBbkRVQTpkZiTWIeUDQCZxuU5/CLcM4WUSnlQhguU+K0C3vUW4tfLaFokhktI30wFdSdjCBuJLM8xkKDtLwocY2v5+YbB2DF2GU28C25X+jzcrITK8fTP+GUxxqYvEy3R79Lckc+8/pXf91NU/ZYEkBEfpt63LF+85cSZ956/9KVXkkJf6UMErpC5R45AGUChe341QyNRIjSx0inFmbhMWlI3/h3AiAgg3yOT1H6lGgDFmxyhyNQT8OdgvSNReI6+v6SpDhzLwRKOzVJjwrGkLqxEIhYBlxCecF3wCCJnlUPzTcyMH7GgQdvLQD74jXC1sQBFewUMyU3+5J1oQmJjhevX61l4wiY+BPX00T3lu4E7WmUvmG6aY3GsholZ1uLgar7QLguicUOiiUsQjUfRS5Qea+8M+8DNH+GOpWuPsaO5g0KzuTRgTPFzdVCUEtFl98m4R9gYgoRodGYzVQ73Ode4f+vpm98714xjYA6aes73tEfiwfMsJx658Mj/fnFz+S+ZaChn6yKZGietBg3zx4MLRp6dC/dIzQJGxJuGZTTN00K9JnfEZJmQE/WVl9xKDk1IHaleve3ENXLsJ4XgVC/WyVWDYh2EMSa9D+086C0SQ3SlmtQyVOrPxadwTowVImY5hcZoS3UjATA+ff7gSPqMfZJIq/iZWoioqupTFHHPhJQNCG7I6pjHyzi+MlEox+MSrGKct2AKBydvCypPVUtxNTitLfR/wdR77jhmhpQX7IygUL6F5OM9xsy784IGaY0Oopgz5fwxspnL2ZO3/s5r73rD3+PWtf0K3/Qtvbqx/E0rfM3Nd3zuK4/8SnfQORFBUADiVmVTzJyi0sAgSREqR2gHtwGXGyVfQcun4l8BLxSs40fZBNW4zy5QtwgGuE51/3a8K97NyPKLCz9CboRF3ceYyp/ynpY/iSCmVPHZaj5jfrw2gRwTS69QUgoXKl1sMpau+eBYNQ7N5jVO4ZoBLMYQqcd1+3WobmEXeRJnmUm4YDaCRaH/nFsZwwHybF84mT3k5/gOlZh/6Rxd0PJd9DpeM6bsVptGYrJEW1SKr6hDJbF1XY6uVWeuvfGVD/0sX//Aus+npAZdXkCpP3XpyZ9/bPnJXyAlO6w1Y9AubgBXxJt6SKvbFiURijNyphQRGjYBEwZeOYDjzv6fuAgByd45JOJN/RZLObRvtrDI0GjTHKA2d7UzBBiPgWx1dOw6glIimUOWsXfqy5mKcd3MOJYegvWHn+Vd5AciH0kFAeua+luADkUPQc6OAywEOAjEeQivxsMalR4SgEW/3Iccm3sB4xfGJGzua+TRGgGtnNhoKrwBsWt/sYGUkVgtQCa7049E4EsVpZtqqEEPjAnwn2cxUNlLPbrntvv/2W3n7v5FOtGGfV4l7faed92DBk99/vzn/vXy5pW3SbfqVE/yAJxh7Dlm9au6TmHrGX1RmJRAN3kTHnD44UWIFEATnAbu+OSz8sk+sMCsli/MF4aZtfXZ7fegaT5GEWg+pXoJoNGLp5QcXGeYORFwXV/b2sFrhGK1AxQ9HrmqWWiamSt7qjstcff2heHJs6p9pZAqXoSH60cvxvMdgAEZpYwcrY8cfTAg5xzTBUC+Y8sFYUCvfqIfN6YgccQ749NLUsMb7bO2R/XJHCR3MgAkG26lY9QYnFk8+v4TN73yb1Pxiq0935Je31x5vnWfXe+HH37qv/5u0M5iAAATG0lEQVRal9+fMUtIALvgJVqD2fjs4kfECZi4ItJK+6TAF+vmxcma9SrsFL8iqQyhSAxiWPmk+DNpIoI1tGJKlz9Rr+IxL193yEIT/KEtnr8REYOdwmiiD38iTwlgDCA/zx8gs0AjsQB+nkezElcIgHPNVrUyJFIjfhq5DstXPk+fcGoiFzvIB0C6sX5tIBNaYtYgzXtmKof6keO55tgdT5zt730Xi2hJoq3wU7vGL2z3oN6EAJlrKsYhyrjSnt/gpp1OMb3UOHnXT/HwB3m9oJJ+5er5F/TAsyr/g0cvPfqLiENPLQlgCSQnDjyYMMAFPK7WId1CXwbwAhi5BHC6OUI00LwrskEqdQ6ig3KJRTUg0cBXsSATVkcACIQp/y28ucc/Vtz4koNTFPiUt3N96fo/Aip+PsDM5iJehl67Ke8xCohIvZz/ox5zEZUSgp6PGzUtGn4Hrre4jwGAIO0EqcoRaHha319dLxB+DHtECSaRgGh/OKuOIVFhoanEewSJQnVBuAxygn1i3MG0pypZy46yx1L2BiFKf3qXH4jqnTv92p+n838ZQ3iBf1iTkIZfVKk8fvEL/+z8yvl/yHS1j9HPKAUiZ7pluWwDSEIOQGnJRwFAniJudrHKLvLhAIj1ZORc3PEl7htvgNt4VtT4z1wAucxooq6lR8iI6JgFrmMFLJFeSOaw9kJOhDbsUaux0IJUMfPIWIB78PoasI43ELbfDi1qExxARvKyb4lxquxX99KOi0wSlUV15DO6ZfA7LdCGhKz4osoorFXGw/Y2xYFH1NES9+R2pAGcYNaSUs6VPaVCqdQnw0foAgMIqILrV97tc9AFad9sLgEW09uO3f9L99/2hl+gJYXwCy4pJ0e/4Iee9cDh8+c//28ur137MVfk3C1rCFYOCDfFiTNNz+vzirRgAqYzj6QOw6IQBHCKoogNA4ILglbTLAoixKcj316WE8jG3sPqkwjQg9Sp8L2wH48YwT2e+6eNawDGxZzIygUh+Zn8SKED4hdH4jUfYdCenGr/6vew/RnnAUHkqFY18KBX+a9KyEmU8TAfdwpJLNoJShtT2aIBPRCnRR1/kUzfnQ64x7igogGc7rZvDVPPV4roIO2krHpGuoo/Ky4Qmc/hI+d+/4EHfuhv8bTHvr2okrbIKfs2yx0PP/XJf7u+vfk6z+kxWzgWVwBnWODCSMy6eqG1zFcBKbCkcudvIRCHGwexW4F361jMG3SdgMawC3TLsHg1gOir4AFIog3daF6A/bR4sAfWw9LmsThwMpYgaUzi4TkNDCUfBjVPycN88DYvEzUdkwiNNX6uefqoFKKd6N4IK0oYxjVcEg5Oto7SBIN1iCRiCSIQas5fnLRmP7QZfTpnmUCRF4tEcD434xAubsXP1/JuJBOy4YPMADE7KGDmNrDFmSOfev39P/Q3ufsErxdd0uXN1Rf98LMe/P4/efQjv77b3r5dMZlvy8qtfInbKJ+IVb85Ied/ILZlQnPv5BTxsw/NEPskI4W6MDhgzAA1STCGDSdUcyk1fvyZxtz7ZhawljxMT1/urc/j+HwFSYAP6RDbrrluuDYOXVId0XdkBXHNopUtXiIyx3fbjPFChNo1/lC00msCQRjalmgkQlqMz3HgI8aZXouZR7EuIXFQcoEDwdKgnx2bnU2QBPKHMYXYSsdnuqHFqEH/yEP6d3XVazNz80++7p4f/Eme/phNfDslvbZ25dt5/tnPvvUzT37yV1vtvdPOLo555a7izvPvRLxROScuE7m1WvHsIo7bzK0n/gW2VMCl+Kx7qTqItW6CN8b03WLdZ81/liC928tNEYPl6RPuRcQaeTzIPQgPwyZ1y0Cgfrl9mG8QTOst+uBbgDu0Cp+1LcLQBNn+BpJqo4Me79KvSA+3EY4PCcKFIe3pwtm4KXQub2u945BQwmvnolLR7/Ql0QbdoLqoEy4k41OqQK90sD8e6/JP5hculeqhy6+7/80/w5cPeOXbLRDApW+3jWc//87Hzn/mlzvd9sn4XRsGrhFnNsyA5VLj8QhN/rE44gRBHjwYCxxOOOaouEdE60F54vgEcW9EzMn3factOd5Dno26yWkV3BARpmWNBKYvvsPZtkcV+kACSCS0jQSlX27w7n0/+kVcuAFUYnANQ1dxRJKKC03uNXR7lvi1fe0cV0NjODzrYdI5YnneIe4TGkLihopT9UQCDW3wn+lwk3nmCSRxJcbAo6g070PTYay6/w9C4nqt3rz62vt+8O9y9/ds4qUo6eXViy9FO89u412fPf/pX9rrtM5oGnvEuzrRtX1dPY0a5oLYA+yIcYMr2tzqPRFiSpWrdJ7+FRYxgHDFy8wcjcn4CVWkhtWUIIJT8TmWs3mXxLgVKsZ3Hg+RrscRB0VDdK5O2leU/9beucTGeVUBOJnnPw/HThy3YweTNJFiOSl5qBVSBVXVBYIqCKmqWHSFxKIVGwRi0Q1LNl0gJDYIFkisWCAUCREVxAIhkKIqPNJKxNS4TWrXdsz4bY8f47HD951/pg1BqLTYAVJfJZ7Xf+9//3vOPe97jojBvRX4ms4HqMqQMuiv7u8NKIuCrEjYJhqBfMphwJTrQR4hTUuRKb0neNlubgKFUEk4cgs3Dvxzvnyv9zLGiXVI+wpsKaIs0/euUaXcNf74o09/jUEvd0bejde9QADndemPI69+e3ltaShOFbFtCNlLQcNDu9+iQrcQYqfxiUURORR0uE6FhgVQdpNHB7Ag/2byUG9XKPSUEtpTe/E0FLHQGEg0ArnIO2BD2PUZJxCDXSviRTIrv6Mv8AB4fODNpt5JLoBJwU3ALKQ4VVR3qfPlJTQF96pfO39mCzVx5s4fWhYCWooMyilpUUw0ATop8NoCIfnzHhXCYObzdH7zwb0fz+DzuRCV6uE3zg8/+Q0+XPGb3WwHOQm8m+PdPdaT1268+vLiwu0niJJCFXNxabyK8fGJB5RnpwKP5Jf1BloKazphQlJvL4h7VP4YsYRcFwYnxgLMsXiphsDvQMrdA17xm4jCPUC+gKW3FZIAXBe2GcQjOEQUA0ARe2jhSqmCA9CpIOD4R7xpqrvD920+j1ZQBA9+D1LE3KAsIKAyjvEExgWwfVHppAcgMn2crDYME0nK5vzFr20ipDKLQJfCbXC8uu/o0asXH33qJb78rdfsdju4+M8ng3bzHmeu//Xat25N3nxWoHjU2/UXZJ7SDYxQZQsHh7KuD8+TsxIRRgUMXAkFQdfdIsiWq5FmqCdrwInzAuzGIPGQ4izjSgGMIbSpyhnUrIBmEgcld+USK2qKBAojGln8ziNnGcaIKB3moGVTqZ8ZheYQ0j/vpUzphGRNTIz7S+ZFOAlKiuy6y0HGNvLRI4AdlIf3jqodQmewyEm3uE9QK957sKNWO3H5E2c+9U0+3uD/nrQP4wz6oBN5ePTm9ZdGx//ylaXWdrKMBauAAFAiJZ3SPDXMDlTInKGc7CK4NJpk9dXr5LBQoiFXYRQBqO7YoAYuGrIAMmJQBoEWGUwZxF2E+IadHD4u7wXoukvN3iUFsWlUtenK9u5KeKl3EKDg11b+cIfLOMzVo5leBNXsbdErLXmqt2HrYBwti1Iyyb4IE5I8iGHafLq0hUSfjud0q7cbjxgUS6shHm2CSLgik9s4dfzs984MffJlLtsVPb1zv3tfP6g7+N7+/+7n5LWxP79w7ca1r282GieqOOItOWPUgM0EykX4hK7kiL93Z/PefVExQhigKehJ3gPg/B6OErpbyCFs+/SQSrRw5iitG4K2jT4u4ijIiV6OKHPVBW5yCW9vFhFVRsdPJX/ZAggjjwcBKkAoh9E/sozTRfeMgTDOPAwzfBfxCAgvmpWZAPq/2g1XtAVb5QR9C9o51BB4AWmVNpRZ5BIKysQzAPyEej5nhx77zvCpCz/gsv/ITEv/9233CwEOzM5FgMpn3x4f+er03955hmdOw/fEfOjgDqZSkzZn2Wo5nO2SbXcUzg7eS16xJfCdtfNMSW/cfoX8QJHKLUDLsjKGgp/StiqUByzCJAyfdqFNFqFQ2hHqYlsDTOMcW5wsMoJZ4U3WbqZTDTMpBAR74At/07F1wxrZq/4v3MHJ9B700aJp1RONOpajUV1J6Rv3bl/HJXTgJ+Yp+wEd7vTXTrxy+tTF7/LLL/t6B71iz9t9Q4AmTqJ2O3ZrcvTF8emxL683Vo8pDZvUSeNN8G12bLq7BTKkGIFsE7Zhxm8zeGTN0QcSeFAk9APOCBQRwgqEhguQIiJ3wi6zuBXUFyRgd7HSag/BpwUA9+LSdBeDADquowVUUFfhv5aLM4GTLEcAypKULfRx2N9LJe5qA+50R0jd1VAHWRdzVf4wF6DERrkgmvIDSGMfZc0M7LCrkkz2H7/ww+OD577Pr5Nel7dW7n1o9w0BXLS7WnFqduJz49OjX7pdf+cSQh5aovo3u5Htp4FHO4ECtva4MvQZ+EYGLaNmArAuOadli7kScqK2dAJHsR+Yg9+wdFVzj6AbrSORBRZQkBTwEIbgu7IHObaxBjputEFoDDK2zotTAVNKQMgYCKg8ocHJTR0Ab89PBGJ6yqHMnf6QLhF2B+BTqleNkhoByDR2AvDhLGMSIE+z9tDglcHj537UXzv5C359d5eAeXzc+/bfQgDIfjxrbWp67PnJmbHn5xfqj7OwhM2zgG0gKyu5wfQVaLyRJ+QBsAxB/4Dp4fTkb2NXLkAZlCKa8Gt5tnF5YZoFi/IMpGwBdcZaqJQvh061CXe4jh3ZjGMqE0h5DLwwL0KGcSJ/r3IE4xhT6KVxKJPxPO+v1VOKEjkMoBZaIuUHsrSooAJiaPEL3z7jErt4p/fQQ78f+Njwj2v8Z5jbuXt3/IOOAPL4dssur86fnZge++LE5FvPLTfmho0nCCMxzNViVVa9oOgxZFijSTtwA0CkLIOFBzDrIXbDHthununLoGWoDRRC92Q8NhRoQB8ymUOidUsZ6JFX2JMO4HhKALjqpV65FPHcrVjxpNXgXFRTpY8BHsEaCOM2CpnZxb1ETL2Jns+3noHjRop5EEYtYgMErpQPjQz0n/5p7djQTypdvR7bkngEEvn6bvsIIQCkMNagtLQyd35i6s1nx6ff/MLy6vLQFrbfVhRPCIIbSOGVygusM/w14BKkfQ3l3Lp7XYRcR3AFeXPiIo6PaYhRss8T+1eG1C+hJogCZRJlF4nSUbNwd1qESvZzCICZabsIAhoXoEUubAXMIPi8JAAexSW8gJRSLGQGk1FYuyi0AqJ3pAo6qTLol9ly9xs9fSd/VqudvFw91OeBjXUdRp0mFfmH9hFEgNgxLEJlcWVhGET4/Hj97Uv1udlz+HqhzJp/WHD/gA8RNkYP1pf3dOJ3hSsFQ3demGeREWQfknvPpm9TEsfsI2oWVkurEnfXgnVsoWFkKQqRkGN2h+zSJch+N0hRBaAWbcozRkHAcrMsKosKnKrCHYM8uLkVv0KUdzIiM5hJ7RXGpSRGsef17qOPXOk9+vGfl6qHR5h9I0Vb/u4jAMtBa1OADgIAwmAPydrG6sBMffwz0zO3nplZnPr09nqzB59iFtc/16aWNoNBUtctr2CHe0r7viRclVAHlAUu1ATC7gBgcoRlaRi6s7VO8IgygRjVy0kfMumUSA9BcugC+ejAiTDJeuDUGIKEcRCaDiSQ/sjBt8mhGrJw2XQelQA89gy80slisdL3u/zhgVcO9Az8ivx3U1yCUtHZ5dKOfQSIRfDPv0CAjtUuu9Xa7J5dmD03Mzv+9HR96qmt9dkLROKUWltQBhcyPCssKtB373vCR9ZsHJ7FHm0GqeiJNKJHNdMwMTsoCoa6hiWPzP8IgVU0AnKLJECfZItaektkmixSgFBk0/xnciY1B60DiXF6KyvN/Mr2ejFTvZ6Uen+TP9L/62y553XSsxhuhaiRAr7zuk8BWJW7hMD3QwBcqRzXMKcOm7C13azOL85emKlPPjG/Un9sdqF+cWer0UfMX5YgzRwZM6k6n0r6smAl91C/JLfsdPMJZ9Ee3IM5+H8BY70h5tBzBDgrnnkbrPganJAjZC9FUtMYsWv990oxs1OoHmxlc4XtQr5QL5WO/KlarP6hlClc5eD4dUYxFTunyZARwrHP0PsI0MF5FzdtHxIBEKzQyaXJwAXKUWysrQwuLNbPzy/PDS+tLJ1eatSH51caxzimRelBjLBkpuQoF4YFlD3CivSyOZvw2gF8y93DPJTy4OzKFNohSBuVr5KZLUfOZ6oVkc+mlDvSLHUVJnsOJSOlcjLaVamMlHOl18ihPMH18gHyQ7WPhPNhHwFc57tayvXe+2IXECAoh6djaFh5twkM3uEQ8VZ5tbH8yGpj6eTGxlo/5xhrzc2Nh5vN9SOt7c3DkJOuzdYWXL5FYg6r80LOkwwV8BKOGRca4MNKkq8uFAvleTJ6zxQK5dtJ0jVdTrrfQj64SczgGtzEXA0CHfKOXMCHaP+HCADqPxBNat8542ZVTI87XX0gnmyPHyLE7T2+x/7w/8Mr8HcpapgIEO0nbAAAAABJRU5ErkJggg=="; + private static Texture _AssetIcon; + public static Texture AssetIcon + { + get + { + if (_AssetIcon == null) _AssetIcon = CreateIcon(AssetIconData); + return _AssetIcon; + } + } + + private const string DynamicEffectsAssetIconData = "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"; + private static Texture _DynamicEffectsAssetIcon; + public static Texture DynamicEffectsAssetIcon + { + get + { + if (_DynamicEffectsAssetIcon == null) _DynamicEffectsAssetIcon = CreateIcon(DynamicEffectsAssetIconData); + return _DynamicEffectsAssetIcon; + } + } + + private const string WarningIconData = "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"; + public static Texture WarningIcon; + private const string ErrorIconData = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAD9klEQVR4Ae2bz2vUQBTHJ91S7FZ6EH/VY/GuRy8evHoVWnELgl68eBG8eNhfUPoXeOxB6B5WsGAPpZT+ISK46j/Q7MZiy2q75u04a35MkjeTl7fbrQMhmTcv8973k8nM0E2dQbslrIrj6G9rb+ntVNbVNbueBgPtfTNa6wUy/gdA/LCrfn8w1oo8IAZZoRwBVdHeapBlltSRjEEGgQoAj3gFhRACBQBe8cQQ8gIYj3hCCHkAjFc8EQRbADWWCU+JzDrnmBNsANTE+1Y9Kyf2dksIs4aJ2ou//6AlHq/hlq+PH16L/d0XhrmJ4aiUW+Um9l6TEWAvHrIplz2xs93xr9KPg72OWFjoYgXE/AxHAhZAPvHBLHe2g7Xw9cFeuG5bM4CAAUAnXgnSQaASr2IgIWQBoBevEgxCoBavYiAgpAEoTrxKECAUJV7FyICQBKB48SpBjrOEUNOF0gGYLvFKtdy7xCBEAUyn+BQIs/6uTjXDuR6sTOW1HAmjv1uY7gTtmZydRUeb7OvkRNfnZZ2xCBsfgB/eVQMBSwa+uVz5AHS7NwwyNfE16Dbuygeg55qIMvGNqzKw8AFw3SWxGZpwZZq6H1iePWF7BfQTkwFBtOvJMUxsZYT/vJC+CNf8LnwjAHJ1D+HJfslI+1ZGO2kzLwCvdx0BAHzYCi8AOQKyxLG9/5AIL4AuaiVgWwH4AfRQe4EpBuC6N7PGv9+O8UF0g3PhfQW8LmaCw/jg1CG8eAEcHmKWOIwPQhrOhReA17sWSqu6LquNN0Ez6whwBo8eBoPDhw3Flbm5Y387LHeDnheOs7go688rP0W/Px9uJK+NPnDi2wqDBinsr1KtqEUG8aHAvK8AhIaVoFSKPH7fDiPi9JR1BYB0+AF8/3pHLN/+DcFj5VvnbsxWsIF3DihYjEH3Y5oDDDLkcuWdBLlUGcS58ABmxUolyKs+kV9/BDPMe71SqQe7iK4CjSGQIj+Bede+Ekwgdr1e2xWfP92L2SkMUvzoRxHoUvcKAIQ6RTxtH09XXd+uPzaarpgp6ZdIbWcGRo14uFsHAOxFQ4AY4bLRDNcpa6trNeE4Df8Q0SMJAITng1C0eCES6aYBKBbC200hjo7k8fIV5fP+1xc8+RTx4JgFAHzoRwKIjxZqCAjxkAIGAPjRQdCJhwhQqCAgxUPI6DIItqQCEATBPmE5KcDQ/qt/KbU9q9FAPHTlWPzT1OR+RWIoHgBgXwHwVYXudVA9UpwtxEPYmei6iKw3hAxIkXr+PizFSwD24ZsTASGH+LwA4P7xQsgpngLA+CAQiKcCwA+BSDwlAD4IhOIhaZONEPhnlabvAMe5KTb7gHMjDpPohQfwB63ZMyXk5VWPAAAAAElFTkSuQmCC"; + public static Texture ErrorIcon; + private const string InfoIconData = "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"; + public static Texture InfoIcon; + + public static readonly Color RedColor = new Color(1f, 0.31f, 0.34f); + public static readonly Color OrangeColor= new Color(1f, 0.68f, 0f); + public static readonly Color GreenColor = new Color(0.33f, 1f, 0f); + + private const float ANIM_SPEED = 12f; + + public static bool ExpandTooltips + { + get => SessionState.GetBool("SW3_UI_TOOLTIPS", false); + set => SessionState.SetBool("SW3_UI_TOOLTIPS", value); + } + + static UI() + { + WarningIcon = CreateIcon(WarningIconData); + ErrorIcon = CreateIcon(ErrorIconData); + InfoIcon = CreateIcon(InfoIconData); + } + + public static Texture CreateIcon(string data) + { + byte[] bytes = System.Convert.FromBase64String(data); + + Texture2D icon = new Texture2D(32, 32, TextureFormat.RGBA32, false, false); + icon.LoadImage(bytes, true); + + return icon; + } + + public static void DrawHeader() + { + EditorGUILayout.LabelField($"{AssetInfo.ASSET_NAME} - v{AssetInfo.INSTALLED_VERSION}", EditorStyles.centeredGreyMiniLabel); + EditorGUILayout.Space(); + } + + public static string iconPrefix => EditorGUIUtility.isProSkin ? "d_" : ""; + + public static void PropertyField(SerializedProperty prop, string label = null) + { + EditorGUILayout.PropertyField(prop, new GUIContent(label == null ? prop.displayName : label, prop.tooltip)); + + if (ExpandTooltips && prop.tooltip != string.Empty) EditorGUILayout.HelpBox(prop.tooltip, MessageType.None); + } + + public static void DrawRendererProperty(SerializedProperty property) + { + #if URP + property.serializedObject.Update(); + int selectedRendererOption = property.intValue; + EditorGUI.BeginChangeCheck(); + + Rect controlRect = EditorGUILayout.GetControlRect(true); + EditorGUI.BeginProperty(controlRect, new GUIContent(property.displayName, null, tooltip:property.tooltip), property); + + selectedRendererOption = EditorGUI.IntPopup(controlRect, new GUIContent(property.displayName, null, tooltip:property.tooltip), selectedRendererOption, PipelineUtilities.rendererDisplayList,PipelineUtilities.rendererIndexList); + + if (EditorGUI.EndChangeCheck()) + { + //Clamp to valid index + selectedRendererOption = PipelineUtilities.ValidateRenderer(selectedRendererOption); + + property.intValue = selectedRendererOption; + property.serializedObject.ApplyModifiedProperties(); + } + #else + EditorGUILayout.PropertyField(property); + #endif + } + + private static float Sin(float offset = 0f) + { + return Mathf.Sin(offset + (float)EditorApplication.timeSinceStartup * Mathf.PI * 2f) * 0.5f + 0.5f; + } + + public static void DrawNotification(string text, MessageType messageType = MessageType.None) + { + DrawHelpbox(text, messageType); + } + + public static void DrawNotification(bool condition, string text, string buttonLabel, Action action, MessageType messageType = MessageType.None) + { + DrawHelpbox(text, messageType, condition, buttonLabel, action); + } + + public static void DrawNotification(bool condition, string text, MessageType messageType = MessageType.None) + { + DrawHelpbox(text, messageType, condition, null, null); + } + + public static void DrawRenderFeatureSetupError(ref bool isSetup) + { + using (new EditorGUI.DisabledGroupScope(Application.isPlaying)) + { + bool state = isSetup; + UI.DrawNotification(!isSetup, "The Stylized Water render feature is required to be set up, but is missing from the active renderer", "Fix", () => + { + StylizedWaterEditor.SetupRenderFeature(); + state = true; + }, MessageType.Error); + + isSetup = state; + } + if (isSetup == false && Application.isPlaying) + { + EditorGUILayout.HelpBox("Exit play-mode to perform this action", MessageType.Warning); + } + } + + private static void DrawHelpbox(string text, MessageType messageType = MessageType.None, bool condition = true, string buttonLabel = "", Action action = null) + { + if (!condition) return; + + Rect r = EditorGUILayout.GetControlRect(); + r.width -= 10f; + + Color sideColor = Color.gray; + Texture icon = null; + switch (messageType) + { + case (MessageType.None): + { + sideColor = Color.gray; + } + break; + case (MessageType.Warning): //Warning + { + sideColor = Color.Lerp(OrangeColor, OrangeColor * 1.20f, Sin(r.y)); + icon = WarningIcon; + } + break; + case (MessageType.Error): //Error + { + sideColor = Color.Lerp(RedColor, RedColor * 1.33f, Sin(r.y)); + icon = ErrorIcon; + } + break; + case (MessageType.Info): //Info + { + sideColor = Color.Lerp(new Color(1f, 1f, 1f), new Color(0.9f, 0.9f, 0.9f), Sin(r.y)); + icon = InfoIcon; + } + break; + } + + float width = r.width; + //float rightPadding = + float height = EditorStyles.helpBox.CalcHeight(new GUIContent(text), EditorGUIUtility.currentViewWidth) + (EditorStyles.label.lineHeight * 2f); + r.height = height; + + Rect btnRect = r; + GUIContent btnContent = null; + //Showing a button instead + if (action != null) + { + icon = null; + + btnContent = new GUIContent(" " + buttonLabel, EditorGUIUtility.IconContent("SceneLoadIn").image, "Execute suggested action"); + float size = EditorStyles.toolbarButton.CalcSize(btnContent).x + 5f; + btnRect.width = size; + btnRect.x = width - size; + btnRect.height = EditorStyles.miniButtonMid.fixedHeight+5f; + //Vertical center + btnRect.y += (height * 0.5f) - (btnRect.height * 0.5f); + } + + Rect iconRect = r; + if (icon != null) + { + float size = Mathf.Min(height * 0.75f, 50f); + iconRect = r; + iconRect.x = r.width - size; + iconRect.width = size; + iconRect.height = iconRect.width; + //Vertical center + iconRect.y += (height * 0.5f) - (iconRect.height * 0.5f); + + //Recalculate text height + height = EditorStyles.helpBox.CalcHeight(new GUIContent(text), + EditorGUIUtility.currentViewWidth - size) + (EditorStyles.label.lineHeight * 2f); + r.height = height; + } + + float backgroundTint = EditorGUIUtility.isProSkin ? 0.4f : 1f; + EditorGUI.DrawRect(r, new Color(backgroundTint, backgroundTint, backgroundTint, 0.2f)); + + Rect colorRect = r; + colorRect.width = 7f; + + EditorGUI.DrawRect(colorRect, sideColor); + + Rect textRect = r; + textRect.x += colorRect.width + 10f; + + //Shrink text area on right side to make room + if (icon != null) textRect.width -= iconRect.width * 2f; + if(action != null) textRect.width -= btnRect.width + 50f; + + GUI.Label(textRect, new GUIContent(text), Styles.NotificationArea); + + if (icon != null) + { + GUI.DrawTexture(iconRect, icon, ScaleMode.ScaleToFit); + } + + if (action != null) + { + if (GUI.Button(btnRect, btnContent)) + { + action?.Invoke(); + } + } + + GUILayout.Space(height - EditorStyles.label.lineHeight); //17=default line height + } + + public static void DrawStatusBox(string prefix, string statusText, MessageType messageType = MessageType.None) + { + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField(prefix, GUILayout.MaxWidth(EditorGUIUtility.labelWidth)); + + Color defaultColor = GUI.contentColor; + + using (new EditorGUILayout.HorizontalScope(EditorStyles.textField)) + { + switch (messageType) + { + case MessageType.Error: GUI.contentColor = RedColor; + break; + case MessageType.Warning : GUI.contentColor = OrangeColor; + break; + case MessageType.Info: GUI.contentColor = GreenColor; + break; + } + + EditorGUILayout.LabelField(statusText); + GUI.contentColor = defaultColor; + } + } + } + + public static void DrawExtension(string name, string description, bool installed, int assetID, Texture icon) + { + EditorGUILayout.BeginHorizontal(); + { + Color defaultColor = GUI.contentColor; + + GUILayout.Label(icon, GUILayout.MaxHeight(100f)); + + EditorGUILayout.BeginVertical(); + { + EditorGUILayout.LabelField(name, Styles.BoldLabel, GUILayout.Height(20)); + + GUILayout.Space(5); + EditorGUILayout.LabelField(description, Styles.WordWrapLabel); + + if (installed == false) + { + using (new EditorGUILayout.HorizontalScope(EditorStyles.textField)) + { + EditorGUILayout.LabelField("Not Installed", GUILayout.MaxWidth((75f))); + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button(UI.Styles.AssetStoreBtnContent)) + { + Application.OpenURL($"https://assetstore.unity.com/packages/slug/{assetID}?aid=1011l7Uk8&pubref=sw3editor_extensions"); + } + } + } + } + EditorGUILayout.EndVertical(); + } + EditorGUILayout.EndHorizontal(); + } + + public static void DrawIntegration(FogIntegration.Integration integration) + { + EditorGUILayout.LabelField(integration.name, EditorStyles.boldLabel); + EditorGUILayout.BeginHorizontal(); + { + Color defaultColor = GUI.contentColor; + + GUILayout.Label(integration.thumbnail, GUILayout.Height(50f), GUILayout.Width(50f)); + + EditorGUILayout.BeginVertical(); + { + GUILayout.Space(5); + + if (integration.asset != FogIntegration.Assets.None && integration.asset != FogIntegration.Assets.UnityFog) + { + using (new EditorGUILayout.HorizontalScope(EditorStyles.textField)) + { + if (integration.installed) GUI.contentColor = GreenColor; + if (!integration.installed) GUI.contentColor = UI.OrangeColor; + EditorGUILayout.LabelField(integration.installed ? "Installed" : "Not Installed", GUILayout.MaxWidth((75f))); + GUI.contentColor = defaultColor; + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button(UI.Styles.AssetStoreBtnContent)) + { + AssetInfo.OpenAssetStore(integration.url); + } + } + + GUILayout.Space(5); + } + + if (!integration.installed) + { + //UI.DrawNotification("Shader library for asset not found in project", MessageType.Error); + } + } + EditorGUILayout.EndVertical(); + } + EditorGUILayout.EndHorizontal(); + } + + public static bool DrawSetupItem(Installer.SetupItem item) + { + Texture icon = Styles.CheckMark; + + switch (item.state) + { + case MessageType.Error: icon = Styles.ErrorIcon; break; + case MessageType.Warning: icon = Styles.WarningIcon; break; + case MessageType.None: icon = Styles.CheckMark; break; + case MessageType.Info: icon = Styles.InfoIcon; break; + } + + + using (new EditorGUILayout.HorizontalScope(EditorStyles.label)) + { + Color defaultColor = GUI.contentColor; + + switch (item.state) + { + case MessageType.Error: GUI.contentColor = UI.RedColor; + break; + case MessageType.Warning: GUI.contentColor = UI.OrangeColor; + break; + case MessageType.None: GUI.contentColor = UI.GreenColor; + break; + } + + EditorGUILayout.LabelField(new GUIContent(" " + item.name, icon), EditorStyles.boldLabel); + + GUI.contentColor = defaultColor; + + if (item.action != null) + { + if (GUILayout.Button(item.actionName)) + { + item.ExecuteAction(); + return true; + } + } + } + + GUILayout.Space(-3f); + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(25f); + EditorGUILayout.LabelField(item.description, Styles.WordWrapLabel); + } + + GUILayout.Space(-7f); + EditorGUILayout.LabelField("", GUI.skin.horizontalSlider, GUILayout.Height(12f)); + + GUILayout.Space(-3f); + + //No action clicked + return false; + } + + public static void DrawH2(string text) + { + Rect backgroundRect = EditorGUILayout.GetControlRect(); + backgroundRect.height = 25f; + + var labelRect = backgroundRect; + + // Background rect should be full-width + backgroundRect.xMin = 0f; + + // Background + float backgroundTint = (EditorGUIUtility.isProSkin ? 0.1f : 1f); + EditorGUI.DrawRect(backgroundRect, new Color(backgroundTint, backgroundTint, backgroundTint, 0.2f)); + + // Title + EditorGUI.LabelField(labelRect, new GUIContent(text), Styles.H2); + + EditorGUILayout.Space(backgroundRect.height * 0.5f); + } + + public static void DrawFooter() + { + GUILayout.Space(5f); + + Rect rect = EditorGUILayout.GetControlRect(); + + if (rect.Contains(Event.current.mousePosition)) + { + EditorGUIUtility.AddCursorRect(new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 27, 27), MouseCursor.Link); + EditorGUI.DrawRect(rect, Color.gray * (EditorGUIUtility.isProSkin ? 0.66f : 0.20f)); + } + + if (GUI.Button(rect,new GUIContent("- Staggart Creations -", "Open website"), EditorStyles.centeredGreyMiniLabel)) + { + Application.OpenURL("http://staggart.xyz"); + } + } + + public static class Material + { + //Section toggles + public class Section + { + public bool Expanded + { + get { return SessionState.GetBool(id, false); } + set { SessionState.SetBool(id, value); } + } + public AnimBool anim; + + public readonly string id; + public GUIContent title; + + public Section(MaterialEditor owner, string id, GUIContent title) + { + this.id = AssetInfo.ASSET_ABRV + "_" + id + "_SECTION"; + this.title = title; + + anim = new AnimBool(true); + anim.valueChanged.AddListener(owner.Repaint); + anim.speed = ANIM_SPEED; + anim.target = Expanded; + } + + public void DrawHeader(Action clickAction) + { + UI.Material.DrawHeader(title, Expanded, clickAction); + anim.target = Expanded; + } + } + + private const float HeaderHeight = 25f; + + //https://github.com/Unity-Technologies/Graphics/blob/d0473769091ff202422ad13b7b764c7b6a7ef0be/com.unity.render-pipelines.core/Editor/CoreEditorUtils.cs#L460 + public static bool DrawHeader(GUIContent content, bool isExpanded, Action clickAction = null) + { +#if URP + CoreEditorUtils.DrawSplitter(); +#endif + + Rect backgroundRect = GUILayoutUtility.GetRect(1f, HeaderHeight); + + //Negate room made for parameter locking (material variants functionality) + backgroundRect.xMin -= 15f; + + var labelRect = backgroundRect; + labelRect.xMin += 10f; + labelRect.xMax -= 20f + 16 + 5; + + var foldoutRect = backgroundRect; + foldoutRect.xMin -= 8f; + foldoutRect.y += 0f; + foldoutRect.width = HeaderHeight; + foldoutRect.height = HeaderHeight; + + // Background rect should be full-width + backgroundRect.xMin = 0f; + backgroundRect.width += 4f; + + // Background + float backgroundTint = (EditorGUIUtility.isProSkin ? 0.1f : 1f); + if (backgroundRect.Contains(Event.current.mousePosition)) backgroundTint *= EditorGUIUtility.isProSkin ? 1.5f : 0.9f; + + EditorGUI.DrawRect(backgroundRect, new Color(backgroundTint, backgroundTint, backgroundTint, 0.2f)); + + // Title + EditorGUI.LabelField(labelRect, content, EditorStyles.boldLabel); + + // Foldout + GUI.Label(foldoutRect, new GUIContent(isExpanded ? "−" : "≡"), EditorStyles.boldLabel); + + // Handle events + var e = Event.current; + + if (e.type == EventType.MouseDown) + { + if (backgroundRect.Contains(e.mousePosition)) + { + if (e.button == 0) + { + isExpanded = !isExpanded; + if(clickAction != null) clickAction.Invoke(); + } + + e.Use(); + } + } + + return isExpanded; + } + + public static void DrawIntSlider(MaterialProperty prop, string label = null, string tooltip = null) + { + MaterialEditor.BeginProperty(prop); + + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = prop.hasMixedValue; + + float value = (float)EditorGUILayout.IntSlider(new GUIContent(label ?? prop.displayName, null, tooltip), (int)prop.floatValue, (int)prop.rangeLimits.x, (int)prop.rangeLimits.y); + + if (ExpandTooltips && tooltip != string.Empty) EditorGUILayout.HelpBox(tooltip, MessageType.None); + + if (EditorGUI.EndChangeCheck()) + prop.floatValue = value; + EditorGUI.showMixedValue = false; + + MaterialEditor.EndProperty(); + } + + public static void DrawFloatField(MaterialProperty prop, string label = null, string tooltip = null) + { + MaterialEditor.BeginProperty(prop); + + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = prop.hasMixedValue; + + float value = EditorGUILayout.FloatField(new GUIContent(label ?? prop.displayName, null, tooltip), prop.floatValue, GUILayout.MaxWidth(EditorGUIUtility.labelWidth + 50f)); + + if (ExpandTooltips && tooltip != null) EditorGUILayout.HelpBox(tooltip, MessageType.None); + + if (EditorGUI.EndChangeCheck()) + prop.floatValue = value; + EditorGUI.showMixedValue = false; + + MaterialEditor.EndProperty(); + } + + public static void DrawFloatTicker(MaterialProperty prop, string label = null, string tooltip = null, bool showReverse = false) + { + MaterialEditor.BeginProperty(prop); + + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = prop.hasMixedValue; + + float value = m_DrawFloatTicker(prop.floatValue, label ?? prop.displayName, tooltip, showReverse); + + if (EditorGUI.EndChangeCheck()) + prop.floatValue = value; + EditorGUI.showMixedValue = false; + + MaterialEditor.EndProperty(); + } + + private static float m_DrawFloatTicker(float value, string label = null, string tooltip = null, bool showReverse = false) + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel(new GUIContent(label, null, tooltip)); + if (GUILayout.Button(new GUIContent("«", "-0.1"), EditorStyles.miniButtonLeft, GUILayout.Width(20))) + { + value -= 0.1f; + } + if (GUILayout.Button(new GUIContent("‹", "-0.01"), EditorStyles.miniButtonMid, GUILayout.Width(20))) + { + value -= 0.01f; + } + + value = EditorGUILayout.FloatField(value, GUILayout.MaxWidth(EditorGUIUtility.fieldWidth)); + + if (GUILayout.Button(new GUIContent("›", "+0.01"), EditorStyles.miniButtonMid, GUILayout.Width(20))) + { + value += 0.01f; + } + if (GUILayout.Button(new GUIContent("»", "+0.1"), EditorStyles.miniButtonRight, GUILayout.Width(20))) + { + value += 0.1f; + } + + if (showReverse) + { + if (GUILayout.Button("Reverse", EditorStyles.miniButton, GUILayout.MaxWidth(70f))) + { + value = -value; + } + } + EditorGUILayout.EndHorizontal(); + + if (ExpandTooltips && tooltip != null) EditorGUILayout.HelpBox(tooltip, MessageType.None); + + return value; + } + + public static void DrawMinMaxSlider(MaterialProperty prop, float min, float max, string label = null, string tooltip = null) + { + MaterialEditor.BeginProperty(prop); + + float minVal = prop.vectorValue.x; + float maxVal = prop.vectorValue.y; + + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = prop.hasMixedValue; + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField(new GUIContent(label, null, tooltip), GUILayout.MaxWidth(EditorGUIUtility.labelWidth)); + minVal = EditorGUILayout.FloatField(minVal, GUILayout.Width(EditorGUIUtility.fieldWidth)); + EditorGUILayout.MinMaxSlider(ref minVal, ref maxVal, min, max); + maxVal = EditorGUILayout.FloatField(maxVal, GUILayout.Width(EditorGUIUtility.fieldWidth)); + } + + if (ExpandTooltips && tooltip != null) EditorGUILayout.HelpBox(tooltip, MessageType.None); + + if (EditorGUI.EndChangeCheck()) + { + prop.vectorValue = new Vector4(minVal, maxVal); + } + EditorGUI.showMixedValue = false; + + MaterialEditor.EndProperty(); + } + + public static void DrawColorField(MaterialProperty prop, bool hdr, string name = null, string tooltip = null) + { + MaterialEditor.BeginProperty(prop); + + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = prop.hasMixedValue; + + Color color; + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.PrefixLabel(new GUIContent(name ?? prop.displayName, tooltip)); + color = EditorGUILayout.ColorField(new GUIContent("", null, tooltip), prop.colorValue, true, true, hdr, GUILayout.MaxWidth(60f)); + + EditorGUILayout.LabelField($"Opacity: {Math.Round(prop.colorValue.a * 100f, 2)}%", EditorStyles.miniLabel); + } + + if (ExpandTooltips && tooltip != null) EditorGUILayout.HelpBox(tooltip, MessageType.None); + + if (EditorGUI.EndChangeCheck()) + prop.colorValue = color; + EditorGUI.showMixedValue = false; + + MaterialEditor.EndProperty(); + } + + public static void DrawVector2(MaterialProperty prop, string label, string tooltip = null) + { + MaterialEditor.BeginProperty(prop); + + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = prop.hasMixedValue; + + Vector2 value; + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.PrefixLabel(new GUIContent(label, tooltip)); + value = EditorGUILayout.Vector2Field(new GUIContent("", null, tooltip), prop.vectorValue); + } + + if (ExpandTooltips && tooltip != null) EditorGUILayout.HelpBox(tooltip, MessageType.None); + + if (EditorGUI.EndChangeCheck()) + prop.vectorValue = value; + EditorGUI.showMixedValue = false; + + MaterialEditor.EndProperty(); + } + + public static void DrawVector2Ticker(MaterialProperty prop, string label, string tooltip = null) + { + MaterialEditor.BeginProperty(prop); + + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = prop.hasMixedValue; + + Vector2 value = prop.vectorValue; + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.PrefixLabel(new GUIContent(label, tooltip)); + + if (GUILayout.Button(new GUIContent("«", "-0.1"), EditorStyles.miniButtonLeft, GUILayout.Width(20))) + { + value.x -= 0.1f; + value.y -= 0.1f; + } + if (GUILayout.Button(new GUIContent("‹", "-0.01"), EditorStyles.miniButtonMid, GUILayout.Width(20))) + { + value.x -= 0.01f; + value.y -= 0.01f; + } + + value = EditorGUILayout.Vector2Field(new GUIContent("", null, tooltip), value, GUILayout.MaxWidth(EditorGUIUtility.fieldWidth * 2f)); + + if (GUILayout.Button(new GUIContent("›", "+0.01"), EditorStyles.miniButtonMid, GUILayout.Width(20))) + { + value.x += 0.01f; + value.y += 0.01f; + } + if (GUILayout.Button(new GUIContent("»", "+0.1"), EditorStyles.miniButtonRight, GUILayout.Width(20))) + { + value.x += 0.1f; + value.y += 0.1f; + } + } + + if (ExpandTooltips && tooltip != null) EditorGUILayout.HelpBox(tooltip, MessageType.None); + + if (EditorGUI.EndChangeCheck()) + { + value.x = Mathf.Max(value.x, 0.01f); + value.y = Mathf.Max(value.y, 0.01f); + + prop.vectorValue = value; + } + EditorGUI.showMixedValue = false; + + MaterialEditor.EndProperty(); + } + } + + public class Styles + { + public static GUIStyle _NotificationArea; + public static GUIStyle NotificationArea + { + get + { + if (_NotificationArea == null) + { + _NotificationArea = new GUIStyle(EditorStyles.label) + { + //margin = new RectOffset(15, 0, 15, 0), + //padding = new RectOffset(5, 5, 5, 5), + richText = true, + wordWrap = true, + clipping = TextClipping.Overflow, + }; + } + + return _NotificationArea; + } + } + + private static Texture _CheckMark; + public static Texture CheckMark + { + get + { + if (_CheckMark == null) + { + _CheckMark = EditorGUIUtility.IconContent("TestPassed").image; + + } + return _CheckMark; + } + } + + private static Texture _InfoIcon; + public static Texture InfoIcon + { + get + { + if (_InfoIcon == null) + { + _InfoIcon = EditorGUIUtility.IconContent("console.infoicon.sml").image; + } + return _InfoIcon; + } + } + + private static Texture _ErrorIcon; + public static Texture ErrorIcon + { + get + { + if (_ErrorIcon == null) + { + _ErrorIcon = EditorGUIUtility.IconContent("console.erroricon.sml").image; + } + return _ErrorIcon; + } + } + + private static Texture _WarningIcon; + public static Texture WarningIcon + { + get + { + if (_WarningIcon == null) + { + _WarningIcon = EditorGUIUtility.IconContent("console.warnicon.sml").image; + } + return _WarningIcon; + } + } + + + private static GUIStyle _UpdateText; + public static GUIStyle UpdateText + { + get + { + if (_UpdateText == null) + { + _UpdateText = new GUIStyle("Button") + { + //fontSize = 10, + alignment = TextAnchor.MiddleLeft, + stretchWidth = false, + }; + } + + return _UpdateText; + } + } + + private static GUIStyle _Footer; + public static GUIStyle Footer + { + get + { + if (_Footer == null) + { + _Footer = new GUIStyle(EditorStyles.centeredGreyMiniLabel) + { + richText = true, + alignment = TextAnchor.MiddleCenter, + wordWrap = true, + fontSize = 12 + }; + } + + return _Footer; + } + } + + private static GUIStyle _Button; + public static GUIStyle Button + { + get + { + if (_Button == null) + { + _Button = new GUIStyle(GUI.skin.button) + { + alignment = TextAnchor.MiddleLeft, + stretchWidth = true, + richText = true, + wordWrap = true, + padding = new RectOffset() + { + left = 7, + right = 0, + top = 5, + bottom = 5 + }, + imagePosition = ImagePosition.ImageLeft + }; + } + + return _Button; + } + } + + private static GUIContent _AssetStoreBtnContent; + public static GUIContent AssetStoreBtnContent + { + get + { + if (_AssetStoreBtnContent == null) + { + _AssetStoreBtnContent = new GUIContent(" View on Asset Store ", EditorGUIUtility.IconContent("Asset Store").image, "Open web page.\n\nURL may contain an affiliate ID, this commission helps to fund the purchase of new assets in order to investigate/develop integrations for them."); + } + + return _AssetStoreBtnContent; + } + } + + private static GUIStyle _H1; + public static GUIStyle H1 + { + get + { + if (_H1 == null) + { + _H1 = new GUIStyle(GUI.skin.label) + { + richText = true, + alignment = TextAnchor.MiddleCenter, + wordWrap = true, + fontSize = 18, + fontStyle = FontStyle.Normal + }; + } + + return _H1; + } + } + + private static GUIStyle _H2; + public static GUIStyle H2 + { + get + { + if (_H2 == null) + { + _H2 = new GUIStyle(GUI.skin.label) + { + richText = true, + alignment = TextAnchor.MiddleLeft, + wordWrap = true, + fontSize = 14, + fontStyle = FontStyle.Bold + }; + } + + return _H2; + } + } + + private static GUIStyle _Section; + public static GUIStyle Section + { + get + { + if (_Section == null) + { + _Section = new GUIStyle(EditorStyles.helpBox) + { + margin = new RectOffset(0, 0, -5, 5), + padding = new RectOffset(10, 10, 5, 5), + clipping = TextClipping.Clip, + }; + } + + return _Section; + } + } + + private static GUIStyle _WordWrapLabel; + public static GUIStyle WordWrapLabel + { + get + { + if (_WordWrapLabel == null) + { + _WordWrapLabel = new GUIStyle(EditorStyles.label); + _WordWrapLabel.wordWrap = true; + _WordWrapLabel.richText = true; + } + + return _WordWrapLabel; + } + } + + private static GUIStyle _BoldLabel; + public static GUIStyle BoldLabel + { + get + { + if (_BoldLabel == null) + { + _BoldLabel = new GUIStyle(EditorStyles.largeLabel); + _BoldLabel.fontStyle = FontStyle.Bold; + } + + return _BoldLabel; + } + } + + private static GUIStyle _Tab; + public static GUIStyle Tab + { + get + { + if (_Tab == null) + { + _Tab = new GUIStyle(EditorStyles.miniButtonMid) + { + alignment = TextAnchor.MiddleCenter, + stretchWidth = true, + richText = true, + wordWrap = true, + fontSize = 16, + fixedHeight = 27.5f, + fontStyle = FontStyle.Bold, + padding = new RectOffset() + { + left = 14, + right = 14, + top = 3, + bottom = 3 + } + }; + } + + return _Tab; + } + } + + private static GUIStyle s_CenterBoldLabel; + public static GUIStyle CenterBoldLabel + { + get + { + if (s_CenterBoldLabel == null) { + s_CenterBoldLabel = new GUIStyle(EditorStyles.largeLabel); + s_CenterBoldLabel.alignment = TextAnchor.UpperCenter; + s_CenterBoldLabel.padding = new RectOffset(); + s_CenterBoldLabel.fontStyle = FontStyle.Bold; + } + return s_CenterBoldLabel; + } + } + + private static GUIStyle s_AddOnTitle; + private static GUIStyle AddOnTitle + { + get + { + if (s_AddOnTitle == null) { + s_AddOnTitle = new GUIStyle(CenterBoldLabel); + s_AddOnTitle.fontSize = 14; + s_AddOnTitle.alignment = TextAnchor.MiddleLeft; + } + return s_AddOnTitle; + } + } + + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/UI.cs.meta b/Assets/External/Stylized Water 3/Editor/UI.cs.meta new file mode 100644 index 00000000..ccd66ad0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/UI.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 1f73882fe8e77ab4381fd27e07ec7d0f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/UI.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs b/Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs new file mode 100644 index 00000000..523f14e0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs @@ -0,0 +1,51 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using UnityEditor.AssetImporters; +using System; +using System.IO; +using UnityEngine; +using UnityEditor; +using Object = UnityEngine.Object; + +namespace StylizedWater3 +{ + [ScriptedImporter(3, FILE_EXTENSION, -1)] + public class WaterMeshImporter : ScriptedImporter + { + private const string FILE_EXTENSION = "watermesh"; + + [SerializeField] public WaterMesh waterMesh = new WaterMesh(); + + public override void OnImportAsset(AssetImportContext context) + { + waterMesh.Rebuild(); + + context.AddObjectToAsset("mesh", waterMesh.mesh); + context.SetMainObject(waterMesh.mesh); + } + + //Handles correct behaviour when double-clicking a .watermesh asset assigned to a field + //Otherwise the OS prompts to open it + [UnityEditor.Callbacks.OnOpenAsset] + public static bool OnOpenAsset(int instanceID, int line) + { + Object target = EditorUtility.InstanceIDToObject(instanceID); + + if (target is Mesh) + { + var path = AssetDatabase.GetAssetPath(instanceID); + + if (Path.GetExtension(path) != "." + FILE_EXTENSION) return false; + + Selection.activeObject = target; + return true; + } + + return false; + } + + } +} diff --git a/Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs.meta b/Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs.meta new file mode 100644 index 00000000..a945197d --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: b045ca0db52e8094dbdc7923faa70590 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs b/Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs new file mode 100644 index 00000000..eb2ee885 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs @@ -0,0 +1,396 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; +using Random = UnityEngine.Random; + +namespace StylizedWater3 +{ + [CustomEditor(typeof(WaveProfile))] + public class WaveProfileEditor: Editor + { + private SerializedProperty amplitudeMultiplier; + private SerializedProperty waveLengthMultiplier; + private SerializedProperty steepnessMultiplier; + + private SerializedProperty waveLengthCurve; + private SerializedProperty amplitudeCurve; + private SerializedProperty steepnessCurve; + private SerializedProperty steepnessClamping; + + private SerializedProperty layers; + + public void OnEnable() + { + amplitudeMultiplier = serializedObject.FindProperty("amplitudeMultiplier"); + waveLengthMultiplier = serializedObject.FindProperty("waveLengthMultiplier"); + steepnessMultiplier = serializedObject.FindProperty("steepnessMultiplier"); + + waveLengthCurve = serializedObject.FindProperty("waveLengthCurve"); + amplitudeCurve = serializedObject.FindProperty("amplitudeCurve"); + steepnessCurve = serializedObject.FindProperty("steepnessCurve"); + steepnessClamping = serializedObject.FindProperty("steepnessClamping"); + + layers = serializedObject.FindProperty("layers"); + } + + private string iconPrefix => EditorGUIUtility.isProSkin ? "d_" : ""; + private bool expandLayers = true; + + public override void OnInspectorGUI() + { + UI.DrawHeader(); + + serializedObject.Update(); + EditorGUI.BeginChangeCheck(); + + WaveProfile instance = (WaveProfile)target; + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + UI.ExpandTooltips = GUILayout.Toggle(UI.ExpandTooltips, new GUIContent(" Toggle tooltips", EditorGUIUtility.IconContent(UI.iconPrefix + (UI.ExpandTooltips ? "animationvisibilitytoggleon" : "animationvisibilitytoggleoff")).image), "Button"); + } + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Multipliers", EditorStyles.boldLabel); + using (new EditorGUILayout.HorizontalScope()) + { + UI.PropertyField(waveLengthMultiplier); + if (GUILayout.Button("Apply", EditorStyles.miniButton)) + { + for (int i = 0; i < layers.arraySize; i++) + { + SerializedProperty layer = layers.GetArrayElementAtIndex(i); + SerializedProperty waveLength = layer.FindPropertyRelative("waveLength"); + + waveLength.floatValue *= waveLengthMultiplier.floatValue; + } + waveLengthMultiplier.floatValue = 1f; + } + } + + using (new EditorGUILayout.HorizontalScope()) + { + UI.PropertyField(amplitudeMultiplier); + if (GUILayout.Button("Apply", EditorStyles.miniButton)) + { + for (int i = 0; i < layers.arraySize; i++) + { + SerializedProperty layer = layers.GetArrayElementAtIndex(i); + SerializedProperty amp = layer.FindPropertyRelative("amplitude"); + + amp.floatValue *= amplitudeMultiplier.floatValue; + } + amplitudeMultiplier.floatValue = 1f; + } + } + using (new EditorGUILayout.HorizontalScope()) + { + UI.PropertyField(steepnessMultiplier); + if (GUILayout.Button("Apply", EditorStyles.miniButton)) + { + for (int i = 0; i < layers.arraySize; i++) + { + SerializedProperty layer = layers.GetArrayElementAtIndex(i); + SerializedProperty steepness = layer.FindPropertyRelative("steepness"); + + steepness.floatValue *= steepnessMultiplier.floatValue; + } + steepnessMultiplier.floatValue = 1f; + } + } + + UI.PropertyField(waveLengthCurve); + UI.PropertyField(amplitudeCurve); + UI.PropertyField(steepnessCurve); + + EditorGUILayout.Space(); + UI.PropertyField(steepnessClamping); + + EditorGUILayout.Space(); + + if (GUILayout.Button("Open procedural editor")) + { + WizardWindow window = EditorWindow.CreateWindow("Wave creation wizard"); + window.target = instance; + window.Show(); + } + + EditorGUILayout.Space(); + + expandLayers = EditorGUILayout.BeginFoldoutHeaderGroup(expandLayers, $"Layers ({layers.arraySize})"); + + if (expandLayers) + { + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.Space(EditorGUIUtility.labelWidth); + + if (GUILayout.Button("Enable all", EditorStyles.miniButtonLeft)) + { + SetEnabledStateForAllLayers(true); + } + if (GUILayout.Button("Disable all", EditorStyles.miniButtonRight)) + { + SetEnabledStateForAllLayers(false); + } + } + + for (int i = 0; i < layers.arraySize; i++) + { + SerializedProperty layer = layers.GetArrayElementAtIndex(i); + SerializedProperty enabled = layer.FindPropertyRelative("enabled"); + + using (new EditorGUILayout.HorizontalScope(EditorStyles.toolbar)) + { + enabled.boolValue = EditorGUILayout.ToggleLeft($" Layer #{i+1}", enabled.boolValue, EditorStyles.boldLabel); + + if (GUILayout.Button(new GUIContent("", EditorGUIUtility.IconContent("d_TreeEditor.Trash").image, "Remove"), EditorStyles.miniButtonRight, GUILayout.MaxWidth(50f))) + { + layers.DeleteArrayElementAtIndex(i); + break; + } + } + + if (enabled.boolValue) + { + using (new EditorGUILayout.VerticalScope()) + { + EditorGUILayout.Space(1f); + EditorGUI.indentLevel++; + + UI.PropertyField(layer.FindPropertyRelative("waveLength")); + UI.PropertyField(layer.FindPropertyRelative("amplitude")); + UI.PropertyField(layer.FindPropertyRelative("steepness")); + + EditorGUILayout.Space(); + + SerializedProperty mode = layer.FindPropertyRelative("mode"); + UI.PropertyField(mode); + + if (mode.intValue == (int)WaveProfile.Wave.Mode.Directional) + { + UI.PropertyField(layer.FindPropertyRelative("direction")); + } + else + { + UI.PropertyField(layer.FindPropertyRelative("origin")); + } + + EditorGUI.indentLevel--; + EditorGUILayout.Space(10f); + + } + } + } + } + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + + if (GUILayout.Button(new GUIContent("Add", EditorGUIUtility.IconContent(iconPrefix + "Toolbar Plus").image, "Add new item"), GUILayout.Width(60f))) + { + layers.InsertArrayElementAtIndex(layers.arraySize); + + SerializedProperty layer = layers.GetArrayElementAtIndex(layers.arraySize-1); + layer.FindPropertyRelative("waveLength").floatValue -= 1; + layer.FindPropertyRelative("direction").floatValue -= 45; + } + } + + EditorGUILayout.EndFoldoutHeaderGroup(); + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + + instance.UpdateShaderParameters(); + + instance.RecalculateAverages(); + } + + /* + EditorGUILayout.LabelField("Average steepness: " + instance.averageSteepness); + EditorGUILayout.LabelField("Average amplitude: " + instance.averageAmplitude); + + if (instance.shaderParametersLUT) + { + Rect r = EditorGUILayout.GetControlRect(); + //r.width = 8 * 4; + //r.height = r.width * (2f / layers.arraySize); + r.height *= 2f; + EditorGUI.DrawPreviewTexture(r, instance.shaderParametersLUT); + //GUI.DrawTexture(r, instance.shaderParametersLUT); + } + */ + } + + private void SetEnabledStateForAllLayers(bool state) + { + serializedObject.Update(); + EditorGUI.BeginChangeCheck(); + + for (int i = 0; i < layers.arraySize; i++) + { + SerializedProperty layer = layers.GetArrayElementAtIndex(i); + SerializedProperty enabled = layer.FindPropertyRelative("enabled"); + + enabled.boolValue = state; + } + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + } + } + + //Handles correct behaviour when double-clicking an asset assigned to a field + //Otherwise the OS prompts to open it + [UnityEditor.Callbacks.OnOpenAsset] + public static bool OnOpenAsset(int instanceID, int line) + { + Object target = EditorUtility.InstanceIDToObject(instanceID); + + if (target is WaveProfile) + { + Selection.activeObject = target; + + return true; + } + + if (target is Texture2D) + { + var path = AssetDatabase.GetAssetPath(instanceID); + Object asset = AssetDatabase.LoadMainAssetAtPath(path); + + if (asset is WaveProfile) + { + Selection.activeObject = target; + + return true; + } + } + + return false; + } + + [MenuItem("Assets/Create/Water/Wave Profile")] + private static void CreateAsset() + { + WaveProfile asset = ScriptableObject.CreateInstance(); + ProjectWindowUtil.CreateAsset(asset, "New Wave Profile.asset"); + + asset.UpdateShaderParameters(); + } + + public static WaveProfile LoadFromLUT(Texture lut) + { + if (lut == null) return null; + + string assetPath = AssetDatabase.GetAssetPath(lut); + + //Debug.Log($"Wave profile loaded: {assetPath}"); + + return (WaveProfile)AssetDatabase.LoadMainAssetAtPath(assetPath); + } + + public static WaveProfile LoadFromMaterial(Material material) + { + Texture lut = material.GetTexture("_WaveProfile"); + + return LoadFromLUT(lut); + } + + public static WaveProfile LoadFromWaterObject(WaterObject waterObject) + { + return LoadFromMaterial(waterObject.material); + } + + public override bool HasPreviewGUI() + { + return false; + } + + public static WaveProfile GetDefault() + { + string assetPath = AssetDatabase.GUIDToAssetPath("1ca4610f5bf9e2f4bb39535503a79eeb"); + + return (WaveProfile)AssetDatabase.LoadMainAssetAtPath(assetPath); + } + + class WizardWindow : EditorWindow + { + public WaveProfile target; + public SerializedProperty proceduralSettings; + + [SerializeField] + private SerializedObject serializedObject; + + private void Initialize() + { + initialized = true; + + if(!target) Debug.LogError("Created null"); + + serializedObject = new SerializedObject(target); + proceduralSettings = serializedObject.FindProperty("proceduralSettings"); + } + + [NonSerialized] + private bool initialized; + + private void OnGUI() + { + if (!initialized) Initialize(); + + EditorGUILayout.ObjectField("Editing: ", target, typeof(WaveProfile), false); + + if (!target) return; + + EditorGUILayout.LabelField("Procedural parameters", EditorStyles.boldLabel); + + serializedObject.Update(); + EditorGUI.BeginChangeCheck(); + + UI.PropertyField(proceduralSettings); + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + + Apply(target.proceduralSettings); + } + + /* + if (target.shaderParametersLUT) + { + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Output LUT (visualized)", EditorStyles.boldLabel); + Rect r = EditorGUILayout.GetControlRect(); + //r.width = 8 * 4; + r.height = 37; + EditorGUI.DrawPreviewTexture(r, target.shaderParametersLUT); + } + */ + } + + private void Apply(WaveProfile.ProceduralSettings settings) + { + Undo.RecordObject(target, "Randomized wave profile"); + + settings.Apply((WaveProfile)target); + + + EditorUtility.SetDirty(target); + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs.meta b/Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs.meta new file mode 100644 index 00000000..a406a674 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: faca6b16b24385e46b7ac937e7bf4a48 +timeCreated: 1715773877 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Windows.meta b/Assets/External/Stylized Water 3/Editor/Windows.meta new file mode 100644 index 00000000..c0ae28c3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Windows.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2008754729f6447f9e7941b58df654fc +timeCreated: 1717592404 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs b/Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs new file mode 100644 index 00000000..2aafea67 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs @@ -0,0 +1,224 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace StylizedWater3 +{ + public static class HeightQuerySystemEditor + { + public class HeightQueryInspector : EditorWindow + { + [MenuItem("Window/Analysis/Stylized Water 3/Height Query Inspector", false, 0)] + public static void Open() + { + HeightQueryInspector window = GetWindow(false); + window.titleContent = new GUIContent("Height Query Inspector", EditorGUIUtility.IconContent("ComputeShader Icon").image); + + window.autoRepaintOnSceneChange = true; + window.minSize = new Vector2(1200f, 200f); + + window.Show(); + } + + private Vector2 scrollPos; + private Vector2 outputScrollPos; + + private int selectedQueryIndex; + private int requestIndex; + private int highlightedRequest = -1; + + //private bool showOutput = false; + private bool showIndices = false; + + [SerializeField] + private GUIStyle labelStyle; + private GUIStyle labelStyleSelected; + + private Color GetUniqueColor(int i) + { + UnityEngine.Random.InitState(i); + return Color.HSVToRGB(UnityEngine.Random.value, 0.75f, 1f); + } + + private readonly Color lineColor = new Color(0,0,0, 0.5f); + + private void OnGUI() + { + labelStyle = new GUIStyle(EditorStyles.label); + labelStyle.richText = true; + labelStyleSelected = new GUIStyle(EditorStyles.selectionRect); + labelStyleSelected.richText = true; + labelStyleSelected.onFocused = new GUIStyleState(); + labelStyleSelected.onFocused.background = Texture2D.grayTexture; + + this.Repaint(); + + var queryCount = HeightQuerySystem.QueryCount; + + if (queryCount == 0) + { + EditorGUILayout.HelpBox("No water height queries are currently enqueued", MessageType.Info); + return; + } + + //showOutput = EditorGUILayout.Toggle("Show output", showOutput); + + using (new EditorGUILayout.HorizontalScope(GUILayout.MaxWidth(200f))) + { + EditorGUILayout.LabelField($"Query ({queryCount}):", EditorStyles.boldLabel, GUILayout.MaxWidth(100f)); + GUIContent[] content = new GUIContent[queryCount]; + for (int i = 0; i < content.Length; i++) + { + content[i] = new GUIContent(i.ToString()); + } + selectedQueryIndex = GUILayout.Toolbar(selectedQueryIndex, content); + } + selectedQueryIndex = Mathf.Min(selectedQueryIndex, queryCount); + + int queryIndex = 0; + foreach (HeightQuerySystem.Query query in HeightQuerySystem.queries) + { + if (selectedQueryIndex == queryIndex) + { + EditorGUILayout.LabelField($"Capacity: {query.sampleCount}/{HeightQuerySystem.Query.MAX_SIZE}", EditorStyles.boldLabel); + Rect rect = EditorGUILayout.GetControlRect(); + rect.width -= 5f; + + //EditorGUI.DrawRect(rect, Color.grey); + + float cellWidth = rect.width / (float)HeightQuerySystem.Query.MAX_SIZE; + + //Draw available indices + for (int i = 0; i < query.availableIndices.Count; i++) + { + float x = rect.x + (float)(query.availableIndices[i] * cellWidth); + Rect cellRect = new Rect(x, rect.y, cellWidth, rect.height); + EditorGUI.DrawRect(cellRect, Color.grey * 0.6f); + } + + //Draw occupied indices + requestIndex = 0; + highlightedRequest = -1; + foreach (KeyValuePair request in query.requests) + { + Color color = GetUniqueColor(request.Key); + for (int i = 0; i < request.Value.indices.Count; i++) + { + int sampleIndex = request.Value.indices[i]; + float x = rect.x + (float)(sampleIndex * cellWidth); + + Rect cellRect = new Rect(x, rect.y, cellWidth, rect.height); + EditorGUI.DrawRect(cellRect, color); + + if (cellRect.Contains(Event.current.mousePosition)) + { + highlightedRequest = requestIndex; + + GUIContent tooltip = new GUIContent($"[{sampleIndex.ToString()}] {request.Value.label}"); + + Rect tooltipRect = cellRect; + tooltipRect.y -= tooltipRect.height + 5f; + tooltipRect.width = EditorStyles.label.CalcSize(tooltip).x; + EditorGUI.HelpBox(tooltipRect, tooltip); + } + } + requestIndex++; + } + + //Draw overlay lines + for (int i = 0; i < HeightQuerySystem.Query.MAX_SIZE; i++) + { + float x = rect.x + (float)(i * cellWidth); + Rect lineRect = new Rect(x, rect.y, 1f, rect.height); + EditorGUI.DrawRect(lineRect, lineColor); + } + + showIndices = EditorGUILayout.ToggleLeft("Show available indices", showIndices); + if (showIndices) + { + using (new EditorGUILayout.HorizontalScope(EditorStyles.textArea)) + { + string indicesString = ""; + for (int i = 0; i < query.availableIndices.Count; i++) + { + indicesString += $"{query.availableIndices[i].ToString()}, "; + } + + EditorGUILayout.LabelField(indicesString, EditorStyles.miniLabel); + } + } + EditorGUILayout.LabelField($"Requests ({query.requests.Count}):", EditorStyles.boldLabel); + + using (new EditorGUILayout.VerticalScope(EditorStyles.textArea)) + { + scrollPos = EditorGUILayout.BeginScrollView(scrollPos, true, true); + requestIndex = 0; + foreach (KeyValuePair request in query.requests) + { + using (new EditorGUILayout.HorizontalScope()) + { + Rect iconRect = EditorGUILayout.GetControlRect(GUILayout.MaxWidth(10f)); + iconRect.width = 10f; + iconRect.height = 10f; + iconRect.y += 5f; + EditorGUI.DrawRect(iconRect, GetUniqueColor(request.Key)); + + GUILayout.Space(5f); + + bool selected = highlightedRequest == requestIndex; + + EditorGUILayout.LabelField($"Label: {request.Value.label}", selected ? labelStyleSelected : labelStyle, GUILayout.Width(200f)); + EditorGUILayout.LabelField($"ID: {request.Value.hashCode}", selected ? labelStyleSelected : labelStyle, GUILayout.Width(75f)); + EditorGUILayout.LabelField($"Samples: {request.Value.SampleCount}", selected ? labelStyleSelected : labelStyle, GUILayout.Width(100f)); + + string indicesString = "{ "; + for (int i = 0; i < request.Value.indices.Count; i++) + { + indicesString += $"{request.Value.indices[i].ToString()}, "; + } + indicesString += " }"; + EditorGUILayout.LabelField($"Indices: {indicesString}", selected ? labelStyleSelected : labelStyle, GUILayout.MaxWidth(250f)); + + string heightsString = "{ "; + for (int i = 0; i < request.Value.sampler.heightValues.Length; i++) + { + heightsString += $"{Math.Round(request.Value.sampler.heightValues[i], 3)}, "; + } + heightsString += " }"; + EditorGUILayout.LabelField($"Heights: {heightsString}", selected ? labelStyleSelected : labelStyle); + } + + /* + if (showOutput) + { + EditorGUILayout.LabelField("Outputs"); + using (new EditorGUILayout.VerticalScope(EditorStyles.textArea, GUILayout.MaxHeight(200f))) + { + //outputScrollPos = EditorGUILayout.BeginScrollView(outputScrollPos); + for (int i = 0; i < request.Value.indices.Count; i++) + { + int index = request.Value.indices[i]; + EditorGUILayout.LabelField(index + ": " + query.outputOffsets[index], EditorStyles.miniLabel); + } + //EditorGUILayout.EndScrollView(); + } + } + */ + + requestIndex++; + } + EditorGUILayout.EndScrollView(); + } + } + queryIndex++; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs.meta b/Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs.meta new file mode 100644 index 00000000..a9f27207 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 59dec72c64294028996963ed7821a007 +timeCreated: 1717758709 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs b/Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs new file mode 100644 index 00000000..d34092a3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs @@ -0,0 +1,652 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; +using UnityEditor; +using UnityEditor.Build; +using UnityEngine; +using UnityEngine.Rendering; +#if URP +using UnityEngine.Rendering.Universal; +#endif + +namespace StylizedWater3 +{ + public class HelpWindow : EditorWindow + { + //Window properties + private static readonly int width = 600; + private static readonly int height = 640; + + [SerializeField] + private Changelog changelog; + + private bool underwaterExtensionInstalled; + private bool dynamicEffectsInstalled; + [NonSerialized] private string projectDetails; + private Vector2 projectDetailsScrollPos; + + [MenuItem("Window/Stylized Water 3/Hub Window", false, 1001)] + public static void ShowWindow() + { + ShowWindow(false); + } + + public static void ShowWindow(bool installation) + { + HelpWindow editorWindow = EditorWindow.GetWindow(true, AssetInfo.ASSET_NAME, true); + + //Open somewhat in the center of the screen + editorWindow.position = new Rect((Screen.currentResolution.width / 2f) - (width * 0.5f), (Screen.currentResolution.height / 2f) - (height * 0.5f), (width * 2), height); + + //Fixed size + editorWindow.maxSize = new Vector2(width, height); + editorWindow.minSize = new Vector2(width, height); + + if (installation) editorWindow.selectedSectionIndex = 1; + + editorWindow.Show(); + } + + [MenuItem("Window/Stylized Water 3/Forum", false, 1002)] + public static void OpenForum() + { + AssetInfo.OpenForumPage(); + } + + private class Constants + { + public readonly GUIStyle sectionScrollView = "PreferencesSectionBox"; + public readonly GUIStyle sectionElement = "PreferencesSection"; + public readonly GUIStyle selected = "OL SelectedRow"; + public readonly GUIStyle sectionHeader = new GUIStyle(EditorStyles.largeLabel); + + public Constants() + { + sectionScrollView = new GUIStyle(sectionScrollView); + sectionScrollView.overflow.bottom += 1; + + sectionHeader.fontStyle = FontStyle.Bold; + sectionHeader.fontSize = 18; + sectionHeader.margin.top = 10; + sectionHeader.margin.left += 1; + if (!EditorGUIUtility.isProSkin) + sectionHeader.normal.textColor = new Color(0.4f, 0.4f, 0.4f, 1.0f); + else + sectionHeader.normal.textColor = new Color(0.7f, 0.7f, 0.7f, 1.0f); + } + } + + static Constants constants = null; + private Section installationSection; + private void OnEnable() + { + AssetInfo.VersionChecking.CheckForUpdate(false); + AssetInfo.VersionChecking.CheckUnityVersion(); + + underwaterExtensionInstalled = StylizedWaterEditor.UnderwaterRenderingInstalled(); + dynamicEffectsInstalled = StylizedWaterEditor.DynamicEffectsInstalled(); + + Installer.Initialize(); + + sections = new List
(); + sections.Add(new Section("Home", DrawHome)); + installationSection = new Section("Installation", DrawInstallation); + sections.Add(installationSection); + sections.Add(new Section("Changelog", DrawChangelog)); + sections.Add(new Section("Integrations", DrawIntegrations)); + //sections.Add(new Section("Extensions", DrawExtensions)); + sections.Add(new Section("Support", DrawSupport)); + + } + + private void OnFocus() + { + Installer.Initialize(); + } + + private Texture m_HeaderImg; + private Texture HeaderImg + { + get + { + if (m_HeaderImg == null) + m_HeaderImg = UI.CreateIcon("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"); + return m_HeaderImg; + } + } + private Texture m_ReviewIcon; + private Texture ReviewIcon + { + get + { + if (m_ReviewIcon == null) + m_ReviewIcon = UI.CreateIcon("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAD0ElEQVRYCb1XaWxMURT+ph2GqUpF2libNtQyQlClIQSR1JYgokSkPyxVS/1C/KA/CJFUxBaRWEIJIVEk+FGSirYSZUgItYWOEkuVGqP7tL7zdKZ3xps3ozPpSb73zj33nu/cd+57595naruDiIhpemg0ajzxMamG0Ci8o9KolRE1hOgfiP8W8397dDgcoNqN6Ff0AGUZWzCBenVHt76mPnA4GZhO+mI1xLRN2Mf2FtWm6ncPAW1tTLlJtQKdzUCuLw2QlYHMNfnYT/sn/z5P2z94ZzMwnoR2D6nnXtcAd2o2trItk/CRioK/zUhlYJMPe3vD2gPRGxYhJ/cgjtP0S29MJDKQSGKHHrnYqmvRmJiJHKqnpS1SX/T3Lle9DER1dIekrTMaFR8Hy+al2NjQhCgCAlXCzcAgkr0ieqqk/nrlZ9QlL8MS2m+qn5yM08uAXiGSAMnEYGIoMbZdl++8LxFUPtXA2b8vznDgS+I1UUW8IxoIr3i+Agst6cQ2Io6wEb2JiEprK5xcgmdEJYm/ETJBu2RgJ5W1RALRZeKqhzN2DtLkJaz+7kRLl0VuD1T1FSaqe6LLK1BeWALXwqnI6G5GdFdM5MsPNE7MwSMWL4fpQp435KQFU1Da09Lp8uwlMlJqnGgauwoPP1Rru+cq7/fKb/b+xWLMbGqG24ggnL5aF5pT12jBZb+Q984VZbUACkqulmJ2ixut4QTS8/1Vh+bJG2B3fMFX9mcTtTJOzYBWuZiJ2+dvY4EUjUhJfSPc6ethr3Bo5wWppt893FEWHil0cP1SMRZ7BoVz55K2Ts2F/XklfpBH0v5Z5TNPkrKjL4Usq8eS+mmbi/6IEKyHC+Gwv9LSLZuUrL2PmBnASGTWYUlTi/Y+yYngvR6RFCIjCZwfIy+lz5aEGDYDFrpgExiicHVKTUxADzomBXI2OhPK4owK5BiqPbk/Ynhakp1VV4wyMJIeUq/Dkrhe6JZug41l10zAH0YTSAkW+elbOF+81z//qb5DBmg7bbJq8+hGExjtGeR///kbzavz8WzMSjwamYWCvFO4wycLWMJHJMJKjgH+PNI2msA/6y8levdZvImbh7KTN/CG/rKVbdxVgBkxszH3yBXtyCa8PjIuBbE06L4HRhOIV1nO3cLHPvNRuv0kKmk/SiwkSgjsyJIrig5dxvBhK5Bzrcy32sVatW1+uDbK/yIHxwDYRntb6RF8GzoQ9+gnv2LyR2QhgknMrFTkPz6BWuHgX9MTOvzzwxKMRPqXExJ4L+GTEba90p4BpPDcLFBEWvwr1DgmK3av+gf86jED3McCCAAAAABJRU5ErkJggg=="); + return m_ReviewIcon; + } + } + private Texture m_DocIcon; + private Texture DocIcon + { + get + { + if (m_DocIcon == null) + m_DocIcon = UI.CreateIcon("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEzklEQVRYCbVXTUhjVxR+L8nExtHEn6KtadMZ7DCLQVtShC5MRYrVYkFEQUUQxYWLrkRdjGhVxFIcLUPp1k0XrlwquKiVUFroDJV2OiJjFVRSicaf4kz+TGLmO7fvPl7eezeNZXrhcs89f/fknPPd+yLv7+9LZiOdTjO2LMtmYgOP63N/DocjQ2dtbS1jzzcyN+AMZf0eDutB4/ycIngOfRv0/ZifKj5yWsjIbLyJcy3RaDR5dXVFUZjpMB4OTttstpt5eXkWMJr29vYCWN8SGugEogBeJz2v1/tzJBJ5AfIKUxjF9PT0uz09PXeXlpYCDQ0NZeFw+AT6zAfWrEMUQJSshoeHPV1dXQ/z8/MzC6pxiezsIUudYN1dX18/Gxoa+gpl/fbo6Ohv8Io0qqakDRk0E7ygtPf399+C8KGZAueRPS+R2+3OA/8R9nfKy8v/PDk5ucDeyXXNVlEGmNHc3Nx2MBi8dLlcIj1pZ2cn2tvb666vry+zWCxUpjKPx/N4YGDg/dHR0d9CoVDWIGw8el109EukhYWFIHrga5CnmIXEMxsTExPN4H+u+GK9gv75fXV1tbqpqenJ8fHxc8hN7WV0rZnPp3B2z0xwTV4QJXLAl2txcfEJbN/T24syQJCSUMNYKpWSkFq9nbqntBNcz8/PE8XFxXZcQFY0JWusRCLhQgPLRUVFUjKZdI6Pj/fA8DvVGISotqWk5PP5HqEEQZApTHEU//ghuJ5jlmDexExiSlNTU3fQI15kgkpjJZ52iAKIkNLY2Nittra21dcwtEZEwyEdgOzKeqfUdHz8BT3qJ6/CMNwlIhiG4Vjq7u72wPBL7k27kjyXwfUQCJXFgHlRBtgFMjg4+Mfh4eElaqvqAVaJyspKx+zs7D30SBwIeFZYWGi12+2GEm1vb0f6+vrcjY2NbyAQitgYAI9Q92tu0B4wOkcP3AdJV6sKI9wLdDVvxGKx5PLy8jPQDzDzMZkdVnXMzMx8gs2IwjCkTVSCEAIr29ra+giGP6nedMTFxQX1AfXLY52IbRWIf6CRGQMQZICl8/T0NK5/DamUVqtVLikpsSs3H3U/G4I7hYtNV7W2OimDYW1t7S8oQQiyDBiWlpZaNzY2WgsKClQEZDmcyiUcogAYDNFgt1tbW39Ag9m5B2QsDJqwLjmdTvv8/Lyvvb39ATKjBqPRPQZNZRQOUQ8wGHZ2dr4Ny0mRNQK4gcOrIa8WlFI1/U8wxPfA00AgEEfKDd3Nr1ulD9SDtMTm5mZ4ZGTknebm5goEeH0YrqysEAxH4TQDhppDOK4N3c11ampqPgP9hbI36IlKwGHog+GP3FkO6yVSza5oRZcakD3tSgmMAQhqxxrq4OAgjBctDdhlPRvOJbya6YqKCgdeP7qQRMOACBEKWJfjCv0VJdiFN/pV2aPANYtbsaGqqsojOt2MLwqAwXBycvJ2S0uLH4+hCkMzJ8gA/TJ6ij80k2fjiXqAwbCjo4NgOJ7NAckEZfw3MyY3vGA5Wb1CJdEnWYzOiMfjqVdwlkz/mvBJxiGb4dIGQQZD2XxcV1f3Db71KnHRxM0UrsPDXzf57OyMmtjwgwy41Dim7zpqUgN0NDrXISkAekcSWiN5d3dX3eNXS36/n+3x1aPy/0/iJfpMtnfwrhsgAAAAAElFTkSuQmCC"); + return m_DocIcon; + } + } + private Texture m_FaqIcon; + private Texture FaqIcon + { + get + { + if (m_FaqIcon == null) + m_FaqIcon = UI.CreateIcon("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFRklEQVRYCa1XXyykVxT/vjEo1qKxSUuxiSUxTUtS3T5oMgm7NmM3EtKkL0v6sjw0G2lVmj548lCLCtG0kRINb4ZGttXSbiTYJbPjT2xaFqNhsBjs6CzKjD/9nc93ufPNmD/Sk5w5/++937nnnntHnJ+fFwgSEhIkyn7MZrMgiqIkHh0dCUFBQcLBwYFAvBKY3/HxsaBSqYSdnR0hNDRUcqOYmZkZp5CRkZFTWaSJ4uLihIWFBWkRPCUvGlCtVhN7BYPdwQK04DXAGGAI8BAL2ASdwwIM8O8Bb6TFrK+vC1FRURAFobe3V6Lsp6KiQmJFcmSwuLgoLYZk4mW4hkm/AH8XE4UxpSe6u7s7igw8gI+ez0BnZ6dTWHl5uSDSFlD6+S9nMry/BH6NiU/2wincu4AMGJGBj+BpPs/bKQOcUwC25mfIOk53IRYZcKAG7iK43d0AUgbcGAz46Otu9BdWdXd3f4bgOuUAIqVeAX9AvqHQOYlra2t7JpPp1crKyj7gKCIiQp2cnHwJeNnJUSGg8D6GyikTygV8DodvFHGSaLPZHIODg+sdHR2Wvr6+LShXgCbgGtAODNfpdBmlpaU3k5KSwiG7AGpiPz09PQmG0wrnt+BNpP2FS5SsmJub287MzHwE8TGQsvSMCpjVJ9dHNKOjo0PR0dERcqgTaW1t/ROKd5iSX0ALBvuEGdxRfN1v0OfU1taSWYvjmYoYahIDQKm7yMf6NvS/kJMSDg8PjzMyMoqh/4Fs4tTUFNHwkJCQLQSpSDgPkIVX2PMfU1JSdPC9xvsNDAzcg9yUlZVF6isOh8PC23m+oaHBVFNT8y50/6qoZQLzvE1OAyQmJoZrNJr7ysnJNjk5+VVBQcH1mJgYAVk4625kVEBOTs4bUN0hNftij1WviHcRNzY29pqbm6koE8mINL/t4sQp4uPjQyFmk4otQMPZ/WKnp6dt+KJRi8WyjMBuCkZtVHsaBHbK0FXyUVG2gJQSvwEXzGp2dvYY+sIEgouANpyMh9ii9z0NhgyRWfqhCiagW80vMBqNm0VFRc8RRCejamlpKRkD94NP9XGgkwVgteR/4GOQ5EYpLCkpmYZgAFahm76HyR+Df01y8OOH1YDVjxi65/eXl5f3EVMlx9WD+j05xbIFUEv1GQICAkStVmvHmyEJ+AEC43wOhmNgYCCbV1DLR5Zuv9u+DoI2G4yWegtbccvXGN5ve3vbATmIdOwU6HkHX3m8/fyqHTbu8PDwJngbySp6MgGf2+32SebgjW5tbdkLCwvH0tLSnmArHo2Pj/tVQ01NTdQzhmkeFb12ZaQHg0/Q1dX1or+/fwGL/hTnXre6uip1NV+CabG4Lbfh+xP5q/E1LO53ME8jIyO9voRQL3R2HwL/kh+v/6Ae2DgeaVlZGR3fMeDf5KjGLUiUwU1shxXP8NMqZQae5ufnx+BFJN2GKOLXgd/x9vP4+vp60+zs7B7sNcxHHBoaYjyjN2JjY+nB4RVwNZuDg4Mj4XjZmzO1bblzfgvfTuYvNjY2Mp6nxejx3+NPhtQmecNF+J6enpXi4mJKfQ/wAT+GWn6Q8DriG6G35ubmNuMNcElp9EeWHx9LiPkV6HJLevvCq5WVlXosJDUsLCzQn4lx1jeqq6vn5YqnGnHba0R8odDW1uY0dnt7uyTX1dXRK4j4ory8vPs4829RRuRT4BRDgtVq3TcYDC/1er0FtUWNhi6oFqBU8aAucJoBZS1gz5TOYVBQ6/0QSCcgAOgOXkL5FEiFTNe1RxAnJugtcQItLbTYM+AyIOBBemb4H7n/AIKWOUx2b5M6AAAAAElFTkSuQmCC"); + return m_FaqIcon; + } + } + private Texture m_DiscordIcon; + private Texture DiscordIcon + { + get + { + if (m_DiscordIcon == null) + m_DiscordIcon = UI.CreateIcon("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAElElEQVRYCb1WbUxbZRS+t7TMQfnoYMIYA8rKwkLWaSTMqH80+7FFs8wM94FfhGXZD0O2337Fjx9qdFmMxsQtatTMMZdoZh1uEswWzOLClH1RGbD2Im3pQCylXytbW59z6VvfW+6FgoyTPL3ve85z3ve85557+oq7900K85XBPz8XLOtb5nSLx6cEnS47xTv97UOpMRuICwmAOc/n6Ru/KtPPfveYwk2nmGU4oQxkIpQBJqYiq0CgA5uKNwp5BTUyljwDLCDKBAWhZ4r5PBdSA3R6vgZo84B/QMg0A/kIcBPwBNAB/AJoyXswuIBOwM5IWjUwVwA7sMAeYAuQS4vdvRPySYMnDuIr+AfTAoDq6DZwC6gDPgFkQQ0M4iv4BpPjQN+0Vvk7WwAXQW1Q0hc+QwZegncqOLaSVg28AsKibU6bFa6o+7j9ZIMDwzM0Z6KWgWIYxxhhMZ8u6UfPrx1Na7EmvTJZ1DLwLjMu9rO86qky9IBXsS5BlvRGZIJ2b9J2Tx7rrQeafX9fKQIEQnoA93RzOtEa8/ayZfcVtQACYckDEHV6sXJt4wvR2+PLAEUAFgRYq5V3x42vhn87t/9af++nkhZncqI/0N3V2tvddaA34L8Z1OKtqthyP2zyvxJfhJu1HPqufui4fPG1v2BvkwaOXzMYjHvN655t4fnhkCvSfrL+d+j6gWM3+77QPf2804Y0G3kejVcUP0AN7FGgkw+gnozpEo9FY8nNj8JGXU2otDxzAV2uEV2OWrQszhvH3Bi4gP2kSP7Nv40htWaFZGcXGKCwkpIPwKxgJSeJRJxGUUDenLs/hKFLBRCLRYl4CuCF/GZIPH4nASVlQVEDZTOYUGTpl2fVWltLAXYqotF/QykNmFRZdq7CWL4AcEHO9lXJXD4D1ANUZWPDW1bP8M+HYTwCPJh8Krj5ptq8zds6DheXbJJgEIE3gA3ArMIH8N/lLc1FFLPE1RVbD0JN0BRsXg3jFU2CioHvA/Rellz4AOT/+/QIgpOOkHuo3Zuun2se8A8G3UOn4TfzXFRXzJ9/Bc2xu5GvYeR1eJs6wevqvD4+2n02x7jm8ZWlDxfmGity9AajkickEpGwN0rNaNTTNTE+dilgrmnCRmIJNqOaSMktz3n6t80hhbiy9JGUAYPtqPaPVlc+Wc4raRwKDNlsbRvewbBOb8itN+aZLWgyhaIuS8QtKR4OuqbCITd9dl7YnY3NIy+THy+R8EjE3nPIOWA/Mgp9F/C6IrIkOb+8atubVTW7dqHwStC75dd0/syOnpHhDuoFHyR51Ezo7sBfy+iaNrF7n58oP+F89LkKwYAUcvR96bZfPuTBdAT4DKA74/SltO1ovsAyMea9QHqSanxaL1ave65pasoft/e8T86twHUyagnXA0wuydYuDZxY7pJ+8IHvBL4HbLyv4kZEgZAgAwKcGK8Qg60Adb5TTJnhMw+8PcAl4A81n/QaELgMCMiAMOmbeZnFO6bbsdp6so5lgR1Ik0gGRuZJlIH/I8kayGgJucAoCKoBVgcs/ZSB+cr0gUTVg6mtlUkNqPktmu5fRzyST440lD0AAAAASUVORK5CYII="); + return m_DiscordIcon; + } + } + private Texture m_ForumIcon; + private Texture ForumIcon + { + get + { + if (m_ForumIcon == null) + m_ForumIcon = UI.CreateIcon("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"); + return m_ForumIcon; + } + } + private Texture m_TwitterIcon; + private Texture TwitterIcon + { + get + { + if (m_TwitterIcon == null) + m_TwitterIcon = UI.CreateIcon("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAE5ElEQVRYCZ3VW2iWdRzA8b1LnTs4U9FVzra5bB6W6WblYaQkREE3ItGBJLyNCC8CFSHspi666EZCKUiHnYSioReeJhqIWrrNLRPncu82dWpzraZTc4e+35f3Eba9h2f+4MOz932e9////f7/3/NfJCMjIxM5mIAIgvDvobj7XG9jEA8TjuX42XC+u7gDx88owCeI4kZcD9d/4PUKfsJCPIKxhpNPwXrUowUfYSYyHfA/WN1KlCAXfj8OZj0Jfj8HDehCLHOuYcLVfRkf4yk4nyv5N9qdyA9WqmfhMrWiCZfQh2lwpVy+39GLsGHyn6EMzuHvj2IvuoMlNSsrm4F5uIUvsB2/oDTuca4XYWL2RbpwFefidYzHOdRiF65jVDjRfrg8ZlgOV2QV6mDznMBSOHiqsLhF2IMo/N2nKEIEsQhWIPhsZ3biBbhfrkoTzNYKHLAQ7utZuKSJwgmexgaswnlYgJW7vW57LEYm0M+3dn8WSjAZZn4ZUdi5JmYV3eiADTwEw4lt2mV4B69hIqL4ChYzbOtGJsD9WNM1ch3ASviDP3ENJuOWVMJ7VuK9XphEPt7ENlShDTbdbziMfxE6yniyAZ4D78PBDRv1c7j8nhubMBVWuhYu9z24OjVYB1clYSRageBBB3QbKmAyF9AOq7XquXE+Y6VPYDPmweT+wD78iKSVp0qgjx9ehWeDkxXAxrMxfU1vYjGKUQ4b16tvSjMO4nv4XNJIlYB76kSeEQ4+Gw7eCCsykSwsgfeehA3Zglp8A5vXcZJGqgT8kZPbA4/CiXy1/OwkJuGB5JsxB07k94fwHdymAaSMdAn4Y6t27518PmbB/e2EFXt9Bo/BV/NbnIbJp40wCViZE9l8z6MU41AHT0wbzsm8Z5/4nPe8po0wCThIP64hggqUwS1wJbx2IA9uk/c8zM7D1UsZYRNwEAfzrbDzfSuKYA+4PTarveE2mYAN2QwTM/mkMZYEPAGr8CpsvCmwavfbV80lt3LfmGJ4zxPQbUoaYRPIYoTl+BCVsLvHw8Yz6uFWuE2DWApfTatvRB8SRpgEbLiF8JR7EW5FK9wOE3Ar/kILTKITNqNvhvfcBp/3f8qoSJdAJr+wki14BVZ0EUdQg0KUYjpcheuwH7rgSvmfcyrOwO+GMCzSJWAlG7EGJuPhcgq7cBL+M6qCSebiV/haOpnXFbAh7Y1zGLUVqRKwqg+wDjaUy+j7/TUacAcu/QRYrUm4PU5kQ5rcRLgV9kwtTGRYJEsgn6es+l24pDaXe7wTrkBwyvlv1y1xYA+iJTDxswj6wt8vg8l4bpj4g0iUQA53V+M93EcHfkA1rNwqg3BPrdatuQ23w4Z1O+x+G9UJ34AJ9uMCHiQxMgGX0we3YgHacBA1cBIHSBR9fOlZUIr5mIXLuAR/4/ZUoBBBYgP8PSxMxuwPwAwdcA8cMBPpwtfVsyLoj2P8vRieIc/hONyqn2GisQhWIMKnYmzFSzA7l8pX6yhc5nQxyAOeej1wFa26AM24AYvy+xI4n81qf8Q++HA1HMC9tIrtKIeVhQ0HLsIOdMNJbeCO+NXmtTiTegt5rsA0vI21yEY7mvAlzNJGHEu4Wm1wO2ciPy6Hq03rSvlaz0CTCdyDzeL+eL63YjdOwwrGGk7ShRPwbxvUVbgCVyIavzp29v/0qmv/9is4ZAAAAABJRU5ErkJggg=="); + return m_TwitterIcon; + } + } + + private static Color defaultColor; + + private delegate void OnGUIDelegate(); + private class Section + { + public GUIContent content; + public OnGUIDelegate drawFunction; + + public Section(string name, OnGUIDelegate drawFunction) + { + this.content = new GUIContent(name); + this.drawFunction = drawFunction; + } + } + + private List
sections; + private int _selectedSectionIndex; + private int selectedSectionIndex + { + get => _selectedSectionIndex; + set + { + _selectedSectionIndex = value; + if (_selectedSectionIndex >= sections.Count) + _selectedSectionIndex = 0; + else if (_selectedSectionIndex < 0) + _selectedSectionIndex = sections.Count - 1; + } + } + private Section selectedSection => sections[_selectedSectionIndex]; + + private Vector2 menuScrollPos; + private static Vector2 sectionScrollPos = Vector2.zero; + + private void OnGUI() + { + EditorGUIUtility.labelWidth = width / 4f; + defaultColor = GUI.contentColor; + + if (constants == null) constants = new Constants(); + if (changelog == null) changelog = new Changelog(); + + if (EditorApplication.isCompiling) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField(new GUIContent(" Compiling scripts...", EditorGUIUtility.FindTexture("cs Script Icon")), UI.Styles.H1); + EditorGUILayout.Space(); + return; + } + + Rect rect = EditorGUILayout.GetControlRect(); + rect.x -= 3f; + rect.y -= 3f; + rect.height = 85f; + rect.width = width; + GUI.DrawTexture(rect, HeaderImg); + float backgroundTint = EditorGUIUtility.isProSkin ? 0f : 1f; + EditorGUI.DrawRect(rect, new Color(backgroundTint, backgroundTint, backgroundTint, 0.66f)); + + GUILayout.Space(-7f); + EditorGUILayout.LabelField("" + AssetInfo.ASSET_NAME + "", UI.Styles.H1); + GUILayout.Space(-5f); + EditorGUILayout.LabelField("by Staggart Creations", UI.Styles.H1); + GUILayout.Space(16f); + + GUILayout.Space(4f); + + if(sections == null) OnEnable(); + + #if !URP + UI.DrawNotification("The Universal Render Pipeline package isn't installed", MessageType.Error); + #endif + + GUILayout.BeginHorizontal(); + { + menuScrollPos = GUILayout.BeginScrollView(menuScrollPos, constants.sectionScrollView, GUILayout.Width(120f)); + { + //GUILayout.Space(40f); + for (int i = 0; i < sections.Count; i++) + { + var section = sections[i]; + + Rect elementRect = GUILayoutUtility.GetRect(section.content, constants.sectionElement, GUILayout.ExpandWidth(true)); + + if (section == selectedSection && Event.current.type == EventType.Repaint) + { + constants.selected.Draw(elementRect, false, false, section == selectedSection, false); + } + + if (GUI.Toggle(elementRect, selectedSectionIndex == i, section.content, constants.sectionElement)) + { + selectedSectionIndex = i; + } + } + } + GUILayout.EndScrollView(); + + GUILayout.Space(5f); + + GUILayout.BeginVertical(); + { + //GUILayout.Label(selectedSection.content, constants.sectionHeader); + GUILayout.Space(5f); + + sectionScrollPos = EditorGUILayout.BeginScrollView(sectionScrollPos); + selectedSection.drawFunction(); + EditorGUILayout.EndScrollView(); + } + GUILayout.EndVertical(); + } + GUILayout.EndHorizontal(); + } + + void DrawHome() + { + UI.DrawNotification(Installer.HasError, "One or more errors were detected in your project", "View", () => { selectedSectionIndex = 1; }, MessageType.Error); + + using (new EditorGUILayout.VerticalScope()) + { + UI.DrawH2("Thank you for licensing Stylized Water 3!"); + + EditorGUILayout.LabelField("This window houses common functionality and installation information.", EditorStyles.label); + + EditorGUILayout.Space(); + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + if (GUILayout.Button(new GUIContent(" Write a review\n Support further development", ReviewIcon), UI.Styles.Button, GUILayout.Height(45f), GUILayout.Width(240f))) + { + AssetInfo.OpenReviewsPage(); + } + GUILayout.FlexibleSpace(); + } + EditorGUILayout.Space(); + + } + + EditorGUILayout.Space(); + + using (new EditorGUILayout.VerticalScope()) + { + UI.DrawH2("Extension assets"); + + DrawExtensions(); + + EditorGUILayout.Space(); + } + + EditorGUILayout.Space(); + + using (new EditorGUILayout.VerticalScope()) + { + #if URP + UI.DrawH2("Quick set up"); + + GUILayout.Space(5f); + EditorGUILayout.LabelField("Options can be found under GameObject->3D Object->Water", UI.Styles.WordWrapLabel); + #endif + + EditorGUILayout.Space(); + } + } + + void DrawInstallation() + { + using (new EditorGUILayout.VerticalScope(EditorStyles.textArea)) + { + foreach (Installer.SetupItem context in Installer.SetupItems) + { + if (UI.DrawSetupItem(context)) + { + return; + } + } + } + } + + void DrawChangelog() + { + using (new EditorGUILayout.VerticalScope()) + { + EditorGUILayout.Separator(); + + changelog.Draw(); + } + } + + void DrawIntegrations() + { + UI.DrawH2("Fog integrations"); + + foreach (FogIntegration.Integration integration in FogIntegration.Integrations) + { + if(integration.asset == FogIntegration.Assets.None || integration.asset == FogIntegration.Assets.UnityFog) continue; + + UI.DrawIntegration(integration); + EditorGUILayout.Space(); + + if (underwaterExtensionInstalled && (integration.underwaterCompatible == false)) + { + UI.DrawNotification("Editing of shader files for this asset is required to incorporate support for the Underwater Rendering extension. (See documentation section called \"Transparent Materials\")", MessageType.Warning); + } + } + + EditorGUILayout.Space(); + + } + + void DrawExtensions() + { + using (new EditorGUILayout.VerticalScope()) + { + EditorGUILayout.LabelField("Installed", EditorStyles.boldLabel); + for (int i = 0; i < Extension.installed.Length; i++) + { + Extension extension = Extension.installed[i]; + + //EditorGUILayout.LabelField(extension.name); + UI.DrawExtension(extension.name, extension.description, dynamicEffectsInstalled, extension.assetStoreID, extension.icon); + } + + if (Extension.available.Length > 0) + { + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Available for purchase", EditorStyles.boldLabel); + + for (int i = 0; i < Extension.available.Length; i++) + { + Extension extension = Extension.available[i]; + + //EditorGUILayout.LabelField(extension.name); + UI.DrawExtension(extension.name, extension.description, false, extension.assetStoreID, extension.icon); + + EditorGUILayout.Separator(); + } + } + } + } + + void DrawSupport() + { + UI.DrawNotification(AssetInfo.VersionChecking.unityVersionType != AssetInfo.VersionChecking.UnityVersionType.Release, $"You are using a {AssetInfo.VersionChecking.unityVersionType} version of Unity. You may run into issues at own risk.", MessageType.Warning); + + using (new EditorGUILayout.VerticalScope()) + { + EditorGUILayout.BeginHorizontal(); + + if (GUILayout.Button(new GUIContent(" Documentation\n Usage instructions", DocIcon), UI.Styles.Button)) + { + Application.OpenURL(AssetInfo.DOC_URL); + } + if (GUILayout.Button(new GUIContent(" FAQ/Troubleshooting\n Common issues and solutions", FaqIcon), UI.Styles.Button)) + { + Application.OpenURL(AssetInfo.DOC_URL + "?section=troubleshooting-faq-3"); + } + EditorGUILayout.EndHorizontal(); + } + + EditorGUILayout.Space(); + + using (new EditorGUILayout.VerticalScope()) + { + UI.DrawNotification("Be sure to consult the documentation, it already covers many common topics", MessageType.Info); + + EditorGUILayout.Space(); + + //Buttons box + EditorGUILayout.BeginHorizontal(); + + if (GUILayout.Button(new GUIContent(" Discord\n Access support", DiscordIcon), UI.Styles.Button)) + { + Application.OpenURL(AssetInfo.DISCORD_INVITE_URL); + } + if (GUILayout.Button(new GUIContent(" Forum\n Join the discussion", ForumIcon), UI.Styles.Button)) + { + Application.OpenURL(AssetInfo.FORUM_URL); + } + if (GUILayout.Button(new GUIContent(" X\n Follow developments", TwitterIcon), UI.Styles.Button)) + { + Application.OpenURL("https://twitter.com/search?q=staggart%20creations&f=user"); + } + + EditorGUILayout.EndHorizontal(); //Buttons box + + } + + EditorGUILayout.Space(); + + if (projectDetails == null) projectDetails = GetProjectDetails(); + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField("Project details", EditorStyles.boldLabel); + if (GUILayout.Button("Refresh", EditorStyles.miniButton)) + { + projectDetails = GetProjectDetails(); + } + } + projectDetailsScrollPos = EditorGUILayout.BeginScrollView(projectDetailsScrollPos, EditorStyles.helpBox, GUILayout.Height(280f)); + EditorGUILayout.LabelField(projectDetails, UI.Styles.WordWrapLabel); + EditorGUILayout.EndScrollView(); + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField("Supplying this information is always useful!", EditorStyles.miniLabel); + + if (GUILayout.Button(new GUIContent(" Copy to clipboard", EditorGUIUtility.IconContent("Clipboard").image))) + { + EditorGUIUtility.systemCopyBuffer = projectDetails; + EditorApplication.Beep(); + } + } + } + + private static string GetProjectDetails() + { + StringBuilder stringBuilder = new StringBuilder(); + + stringBuilder.AppendLine($"Version: v{AssetInfo.INSTALLED_VERSION}"); + stringBuilder.AppendLine($"Install location: {AssetInfo.GetRootFolder()}"); + stringBuilder.AppendLine($"Unity version: {AssetInfo.VersionChecking.GetUnityVersion()}"); + + UnityEditor.PackageManager.PackageInfo urpPackage = AssetInfo.GetURPPackage(); + if (urpPackage != null) + { + stringBuilder.AppendLine($"URP version: {urpPackage.version}"); + } + else + { + stringBuilder.AppendLine($"URP version: NONE"); + } + + stringBuilder.AppendLine($""); + + BuildTargetGroup buildTargetGroup = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget); + + stringBuilder.AppendLine($"OS: {SystemInfo.operatingSystem}"); + stringBuilder.AppendLine($"Platform: {EditorUserBuildSettings.activeBuildTarget}"); + + NamedBuildTarget buildTargetName = NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup); + string scriptingBackend = PlayerSettings.GetDefaultScriptingBackend(buildTargetName).ToString(); + stringBuilder.AppendLine($"Scripting backend: {scriptingBackend}"); + + stringBuilder.AppendLine($"Color space: {PlayerSettings.colorSpace}"); + stringBuilder.AppendLine($"Graphics API(s): (Auto:{PlayerSettings.GetUseDefaultGraphicsAPIs(EditorUserBuildSettings.activeBuildTarget)}) {String.Join(" -> ", PlayerSettings.GetGraphicsAPIs(EditorUserBuildSettings.activeBuildTarget))}"); + stringBuilder.AppendLine($"Tessellation support: {SystemInfo.supportsTessellationShaders}"); + stringBuilder.AppendLine($"Compute shader support: {SystemInfo.supportsComputeShaders}"); + stringBuilder.AppendLine($"Async GPU readback support: {SystemInfo.supportsAsyncGPUReadback}"); + stringBuilder.AppendLine($"Async compute support: {SystemInfo.supportsAsyncCompute}"); + + #if UNITY_6000_0_OR_NEWER && URP + stringBuilder.AppendLine($"GPU Resident Drawer: {UniversalRenderPipeline.asset.gpuResidentDrawerMode != GPUResidentDrawerMode.Disabled}"); + #endif + + string VRProvider = ""; + #if XR && UNITY_2020_3_OR_NEWER + EditorBuildSettings.TryGetConfigObject(UnityEngine.XR.Management.XRGeneralSettings.k_SettingsKey, out UnityEditor.XR.Management.XRGeneralSettingsPerBuildTarget buildTargetSettings); + + if (buildTargetSettings && buildTargetSettings.SettingsForBuildTarget(buildTargetGroup)) + { + if (buildTargetSettings.SettingsForBuildTarget(buildTargetGroup).AssignedSettings.activeLoaders.Count > 0) + { + for (int i = 0; i < buildTargetSettings.SettingsForBuildTarget(buildTargetGroup).AssignedSettings.activeLoaders.Count; i++) + { + VRProvider += $"{buildTargetSettings.SettingsForBuildTarget(buildTargetGroup).AssignedSettings.activeLoaders[i].name} + "; + } + } + } + #endif + stringBuilder.AppendLine($"Active VR plugin(s): {VRProvider}"); + + stringBuilder.AppendLine($""); + + stringBuilder.AppendLine($"First available fog integration: {FogIntegration.GetFirstInstalled().name}"); + stringBuilder.AppendLine($"Underwater Rendering installed: {StylizedWaterEditor.UnderwaterRenderingInstalled()}"); + stringBuilder.AppendLine($"Dynamic Effects installed: {StylizedWaterEditor.DynamicEffectsInstalled()}"); + #if URP + stringBuilder.AppendLine($"Render feature present: {(StylizedWaterRenderFeature.GetDefault() ? "True" : "False")}"); + #endif + + #if URP + stringBuilder.AppendLine($""); + + stringBuilder.AppendLine($"Depth texture option disabled (anywhere): {PipelineUtilities.IsDepthTextureOptionDisabledAnywhere(out var _)}"); + stringBuilder.AppendLine($"Opaque texture option disabled (anywhere): {PipelineUtilities.IsOpaqueTextureOptionDisabledAnywhere(out var _)}"); + #endif + + stringBuilder.AppendLine($""); + + stringBuilder.AppendLine($"Async shader compilation: {EditorSettings.asyncShaderCompilation}"); + stringBuilder.AppendLine($"Caching Shader Preprocessor: {EditorSettings.cachingShaderPreprocessor}"); + stringBuilder.AppendLine($"Strict shader variant matching: {PlayerSettings.strictShaderVariantMatching}"); + + stringBuilder.AppendLine($""); + + Shader defaultShader = ShaderConfigurator.GetDefaultShader(); + + if(defaultShader == null) + { + stringBuilder.AppendLine($"[Failed to find default shader!]"); + } + else + { + ShaderMessage[] shaderMessages = ShaderConfigurator.GetErrorMessages(defaultShader); + + stringBuilder.AppendLine($"Shader compile errors ({shaderMessages?.Length ?? 0}):"); + if (shaderMessages != null) + { + foreach (var t in shaderMessages) + { + stringBuilder.AppendLine($"• {t.message} {t.file}:{t.line} ({t.platform})"); + } + } + } + + ConsoleWindowUtility.GetConsoleLogCounts(out var errors, out var _, out var _); + stringBuilder.AppendLine($"Scripting compile errors ({errors}):"); + + return stringBuilder.ToString(); + } + + private class Changelog + { + private GUIStyle changelogStyle; + private string changelogContent; + private Vector2 scrollPos; + + public float maxHeight = 500f; + + public Changelog() + { + string changelogPath = AssetDatabase.GUIDToAssetPath("793931a466dcf8743a80dc24cd9f9a56"); + TextAsset textAsset = ((TextAsset)AssetDatabase.LoadAssetAtPath(changelogPath, typeof(TextAsset))); + + if (textAsset == null) return; + + changelogContent = textAsset.text; + + //Format version header + changelogContent = Regex.Replace(changelogContent, @"^[0-9].*", "Version $0", RegexOptions.Multiline); + //Format headers + changelogContent = Regex.Replace(changelogContent, @"(\w*What's New?|Added:|Changed:|Fixed:|Removed:\w*)", "$0", RegexOptions.Multiline); + //Indent items with dashes + changelogContent = Regex.Replace(changelogContent, @"^-.*", " $0", RegexOptions.Multiline); + + changelogStyle = new GUIStyle(GUI.skin.label); + changelogStyle.fontSize = 12; + changelogStyle.alignment = TextAnchor.UpperLeft; + changelogStyle.richText = true; + changelogStyle.wordWrap = true; + } + + public void Draw() + { + if (changelogContent == null) + { + UI.DrawNotification("Changelog text file could not be found. It probably wasn't imported from the asset store...", MessageType.Error); + return; + } + + scrollPos = GUILayout.BeginScrollView(scrollPos, EditorStyles.textArea, GUILayout.MaxHeight(maxHeight)); + GUILayout.TextArea(changelogContent, changelogStyle); + GUILayout.EndScrollView(); + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs.meta b/Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs.meta new file mode 100644 index 00000000..f96715cf --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: e6d03cdf323bbdf43a0cfb24ab918b8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs b/Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs new file mode 100644 index 00000000..03b0e787 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs @@ -0,0 +1,162 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; + +namespace StylizedWater3 +{ + public class RenderTargetDebuggerWindow : EditorWindow + { + private const int m_width = 550; + private const int m_height = 300; + + [MenuItem("Window/Analysis/Stylized Water 3/Render targets", false, 0)] + private static void OpenDebugger() + { + RenderTargetDebuggerWindow.Open(); + } + + #if SWS_DEV + [MenuItem("SWS/Debug/Render Targets")] + #endif + public static void Open() + { + RenderTargetDebuggerWindow window = GetWindow(false); + window.titleContent = new GUIContent("Water Render Buffer Inspector"); + + window.autoRepaintOnSceneChange = true; + window.minSize = new Vector2(m_width, m_height); + //window.maxSize = new Vector2(m_width, m_height); + window.Show(); + } + + private float width = 300f; + private Vector2 scrollPos; + + private ColorWriteMask colorMask = ColorWriteMask.All; + private int colorChannel = 1; + private int renderTargetIndex; + private float exposure = 1f; + private int mipmap = 0; + + private void OnEnable() + { + RenderTargetDebugger.Initialize(); + } + + private void OnDisable() + { + RenderTargetDebugger.Cleanup(); + } + + private void OnGUI() + { + Repaint(); + + if (RenderTargetDebugger.renderTargetNames.Length < 5) + { + renderTargetIndex = GUILayout.Toolbar(renderTargetIndex, RenderTargetDebugger.renderTargetNames); + } + else + { + renderTargetIndex = EditorGUILayout.Popup($"Render target ({RenderTargetDebugger.renderTargets.Count})", renderTargetIndex, RenderTargetDebugger.renderTargetNames); + } + + EditorGUILayout.LabelField($"Active camera: {RenderTargetDebugger.CurrentCameraName}", EditorStyles.miniLabel); + width = (Mathf.Min(this.position.height, this.position.width) * 1f) - 15f; + scrollPos = EditorGUILayout.BeginScrollView(scrollPos); + + //EditorGUILayout.LabelField($"RenderTargetInspector.InspectedProperty: {RenderTargetInspector.InspectedProperty}"); + //EditorGUILayout.LabelField($"RenderTargetInspector.CurrentRT: {RenderTargetInspector.CurrentRT}"); + + int currentTarget = 0; + foreach (var renderTarget in RenderTargetDebugger.renderTargets) + { + if(renderTargetIndex == currentTarget) + { + //mark as current! + RenderTargetDebugger.InspectedProperty = renderTarget.propertyID; + + using (new EditorGUILayout.HorizontalScope()) + { + using (new EditorGUILayout.VerticalScope()) + { + DrawTexture(renderTarget); + } + } + } + + currentTarget++; + + } + + EditorGUILayout.EndScrollView(); + } + + private void DrawTexture(RenderTargetDebugger.RenderTarget renderTarget) + { + if (RenderTargetDebugger.CurrentRT == null || renderTarget == null) + { + EditorGUILayout.HelpBox($"Render target \"{renderTarget.textureName}\" couldn't be found, or it is not bound." + + $"\n\nThe related render pass may be disabled, or not render for the current view (scene/game view not open)", MessageType.Info); + return; + } + + //Null at the very first frame + if (RenderTargetDebugger.CurrentRT.rt == null) return; + + EditorGUILayout.LabelField($"\"{renderTarget.textureName}\" {RenderTargetDebugger.CurrentRT.rt.descriptor.graphicsFormat} {RenderTargetDebugger.CurrentRT.rt.width}x{RenderTargetDebugger.CurrentRT.rt.height}px @ {(UnityEngine.Profiling.Profiler.GetRuntimeMemorySizeLong(RenderTargetDebugger.CurrentRT) / 1024f / 1024f).ToString("F2")}mb", EditorStyles.boldLabel); + if (renderTarget.description != string.Empty) EditorGUILayout.HelpBox(renderTarget.description, MessageType.Info); + + Rect rect = EditorGUILayout.GetControlRect(); + + Rect position = EditorGUI.PrefixLabel(rect, GUIUtility.GetControlID(FocusType.Passive), GUIContent.none); + position.width = width; + + //colorChannel = EditorGUI.Popup(position, "Channel mask", colorChannel, new string[] { "RGB", "R", "G", "B", "A" }); + colorChannel = (int)GUI.Toolbar(position, colorChannel, new GUIContent[] { new GUIContent("RGBA"), new GUIContent("RGB"), new GUIContent("R"), new GUIContent("G"), new GUIContent("B"), new GUIContent("A") }); + + switch (colorChannel) + { + case 1: colorMask = ColorWriteMask.All; + break; + case 2: colorMask = ColorWriteMask.Red; + break; + case 3: colorMask = ColorWriteMask.Green; + break; + case 4: colorMask = ColorWriteMask.Blue; + break; + case 5: colorMask = ColorWriteMask.Alpha; + break; + } + + rect.y += 21f; + rect.width = width; + float aspect = (RenderTargetDebugger.CurrentRT.rt.height / RenderTargetDebugger.CurrentRT.rt.width); + rect.height = rect.width; + + if (colorChannel == 0) //RGBA + { + EditorGUI.DrawTextureTransparent(rect, RenderTargetDebugger.CurrentRT, ScaleMode.ScaleToFit, aspect); + } + else if (colorMask == ColorWriteMask.Alpha) + { + EditorGUI.DrawTextureAlpha(rect, RenderTargetDebugger.CurrentRT, ScaleMode.ScaleToFit, aspect, mipmap); + } + else + { + EditorGUI.DrawPreviewTexture(rect, RenderTargetDebugger.CurrentRT, null, ScaleMode.ScaleToFit, aspect, mipmap, colorMask, exposure); + } + GUILayout.Space(rect.height + 10f); + + mipmap = EditorGUILayout.IntSlider("Mipmap", mipmap, 0, 8); + exposure = EditorGUILayout.Slider("Exposure", exposure, 1f, 16f); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs.meta b/Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs.meta new file mode 100644 index 00000000..7872ad92 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c6271584fb7f40cab8c6fcf351bd5372 +timeCreated: 1717592416 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef b/Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef new file mode 100644 index 00000000..c65f8d4d --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef @@ -0,0 +1,47 @@ +{ + "name": "sc.stylizedwater3.editor", + "rootNamespace": "", + "references": [ + "GUID:4fd586483f5d4a24491f09604d74752b", + "GUID:15fc0a57446b3144c949da3e2b9737a9", + "GUID:4fd6538c1c56b409fb53fdf0183170ec", + "GUID:df380645f10b7bc4b97d4f5eb6303d95", + "GUID:3eae0364be2026648bf74846acb8a731", + "GUID:e40ba710768534012815d3193fa296cb", + "GUID:f9fe0089ec81f4079af78eb2287a6163", + "GUID:75ecb28acc33857438e533566abcb3be", + "GUID:d8b63aba1907145bea998dd612889d6b" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.xr.management", + "expression": "3.2.10", + "define": "XR" + }, + { + "name": "com.unity.render-pipelines.universal", + "expression": "17.0.3", + "define": "URP" + }, + { + "name": "com.unity.visualeffectgraph", + "expression": "17.0.3", + "define": "VFX_GRAPH" + }, + { + "name": "com.unity.splines", + "expression": "2.4.0", + "define": "SPLINES" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef.meta b/Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef.meta new file mode 100644 index 00000000..405284d8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ac93d6f2df7cddd4eac8f96ebd47ee37 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials.meta b/Assets/External/Stylized Water 3/Materials.meta new file mode 100644 index 00000000..4df4d447 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: deb122f1b69a0c14ea648bcb2897e785 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Materials/Effects.meta b/Assets/External/Stylized Water 3/Materials/Effects.meta new file mode 100644 index 00000000..72187c06 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d086144747bdc1f4eb7d97e0368d84f6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals.meta new file mode 100644 index 00000000..234c1abe --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1625660177ce6704e8e36a0bad90bedc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures.meta new file mode 100644 index 00000000..f3885b59 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 21788edd4e6eeb248bb013c13e4d6c96 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png new file mode 100644 index 00000000..1cf4640f --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f7eb8c6afb60c02cc2d8cd6acca8f8126b5de4138c9f72fb1a7e301b6b28b2f +size 3768430 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png.meta new file mode 100644 index 00000000..1325e136 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 8e38e48ea1eb3ec419a26404fafba4a5 +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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png new file mode 100644 index 00000000..5269c7e9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd3f963e803d3874249f72ccec2e6e26fd2d69d48257a47249656f6b02346455 +size 1291521 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png.meta new file mode 100644 index 00000000..9f3ef919 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 4c9ea1582510bd64390da0954df9ba78 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png new file mode 100644 index 00000000..18763568 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6148290b63719e0d63e1aa9ddc36c168a6c41ba1745a2d7ec1fb8b785a7dcaaa +size 158622 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png.meta new file mode 100644 index 00000000..da26ad06 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png.meta @@ -0,0 +1,150 @@ +fileFormatVersion: 2 +guid: 160b537c0a446194a8eafd77ad66f213 +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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + buildTarget: Win64 + 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: 4 + 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: 4 + buildTarget: WebGL + 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: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png new file mode 100644 index 00000000..f7e086f2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0df52b421ada99f9037b329f72710d36a7bcd4eb6e57d005c948cd94a137af6 +size 1463091 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png.meta new file mode 100644 index 00000000..90769ffa --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: bde8e2bee22b8da4a9f17b2aa71bb078 +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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png new file mode 100644 index 00000000..d434c7c3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8db12debe2ca59f2f534c7e7533e8e2b490279df4d98c4a64384942cef4dff34 +size 1554497 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png.meta new file mode 100644 index 00000000..089df124 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 0d6741e2bcf2ad3488b320b99873d262 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png new file mode 100644 index 00000000..161b9b7c --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16a6b0445a2c061621f9b149020882024a34479f4497f92bf2f8692b5ef7760b +size 840917 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png.meta new file mode 100644 index 00000000..8be6c9a3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: d659c0971294eff4bb817b27629a8ffb +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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png new file mode 100644 index 00000000..de16e1f1 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd5c92a4fcfc966993edc45f0ec8f7f9a2449f24e13bd979a8d54ac1e0697dc0 +size 49959 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png.meta new file mode 100644 index 00000000..2c8cf42c --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 8ab22c07dc4ce1946ad2c01b0e067a8f +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png new file mode 100644 index 00000000..ba3eb3da --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7137c8881ccd649fec9eba394e859ce71197ee98558dee1820b98d794d06312 +size 276678 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png.meta new file mode 100644 index 00000000..cd3794a3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 071d6ffaa8978624380c121b564b4767 +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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png new file mode 100644 index 00000000..251d5e20 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:391873470be182c5ed79ec4331b96afd45bfb0433d8f96fb4ad3fc12c6605f31 +size 28089 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png.meta new file mode 100644 index 00000000..09a61317 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png.meta @@ -0,0 +1,137 @@ +fileFormatVersion: 2 +guid: 701a0762a3e06c64683ec5df2e26d6ae +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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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: 4 + buildTarget: WebGL + 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: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Duckweed.mat b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Duckweed.mat new file mode 100644 index 00000000..6bc30d52 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Duckweed.mat @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2558126863425172776 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Water Decal Duckweed + m_Shader: {fileID: -6465566751694194690, guid: c5da8e34fcbc64721b185986ff6d6d02, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALIGN_TO_WATER + - _ALPHATEST_ON + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 2 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3001 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 8e38e48ea1eb3ec419a26404fafba4a5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 4c9ea1582510bd64390da0954df9ba78, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + 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: + - _ALIGN_TO_WATER: 1 + - _AlphaClip: 1 + - _AlphaToMask: 0 + - _Alpha_Clip_Threshold: 0.5 + - _Blend: 0 + - _BlendModePreserveSpecular: 0 + - _CastShadows: 0 + - _Cull: 2 + - _DstBlend: 10 + - _Metalicness: 0 + - _Offset: 0.05 + - _QueueControl: 0 + - _QueueOffset: 1 + - _ReceiveShadows: 1 + - _Smoothness: 0.258 + - _SrcBlend: 5 + - _Surface: 1 + - _Use_Vertex_Color_Alpha: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 0 + - _ZWriteControl: 2 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Specular_Color: {r: 0.20754719, g: 0.20754719, b: 0.20754719, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Duckweed.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Duckweed.mat.meta new file mode 100644 index 00000000..142b98c4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Duckweed.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 40af100a238bec94e9287e88c28360c3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal + Duckweed.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Foam.mat b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Foam.mat new file mode 100644 index 00000000..827386fa --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Foam.mat @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2558126863425172776 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Water Decal Foam + m_Shader: {fileID: -6465566751694194690, guid: c5da8e34fcbc64721b185986ff6d6d02, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALIGN_TO_WATER + - _SPECULAR_SETUP + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 2 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3003 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 160b537c0a446194a8eafd77ad66f213, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + 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: + - _ALIGN_TO_WATER: 1 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Alpha_Clip_Threshold: 0.5 + - _Blend: 0 + - _BlendModePreserveSpecular: 0 + - _CastShadows: 0 + - _Cull: 2 + - _DstBlend: 10 + - _Metalicness: 0 + - _Offset: 0.57 + - _QueueControl: 0 + - _QueueOffset: 3 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SrcBlend: 5 + - _Surface: 1 + - _Use_Vertex_Color_Alpha: 0 + - _WorkflowMode: 0 + - _ZTest: 4 + - _ZWrite: 0 + - _ZWriteControl: 2 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Specular_Color: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Foam.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Foam.mat.meta new file mode 100644 index 00000000..561b99cc --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Foam.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 9a539774adc6357439cb795e206e517b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal + Foam.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Lillypads.mat b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Lillypads.mat new file mode 100644 index 00000000..63046919 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Lillypads.mat @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2558126863425172776 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Water Decal Lillypads + m_Shader: {fileID: -6465566751694194690, guid: c5da8e34fcbc64721b185986ff6d6d02, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALIGN_TO_WATER + - _ALPHATEST_ON + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 2 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3001 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: bde8e2bee22b8da4a9f17b2aa71bb078, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 0d6741e2bcf2ad3488b320b99873d262, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + 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: + - _ALIGN_TO_WATER: 1 + - _AlphaClip: 1 + - _AlphaToMask: 0 + - _Alpha_Clip_Threshold: 0.5 + - _Blend: 0 + - _BlendModePreserveSpecular: 0 + - _CastShadows: 0 + - _Cull: 2 + - _DstBlend: 10 + - _Metalicness: 0 + - _Offset: 0.01 + - _QueueControl: 0 + - _QueueOffset: 1 + - _ReceiveShadows: 1 + - _Smoothness: 0.225 + - _SrcBlend: 5 + - _Surface: 1 + - _Use_Vertex_Color_Alpha: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 0 + - _ZWriteControl: 2 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Specular_Color: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Lillypads.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Lillypads.mat.meta new file mode 100644 index 00000000..bf0002cc --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Lillypads.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: eaece4f6e40049e42a8e8572185e9dda +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal + Lillypads.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Slick.mat b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Slick.mat new file mode 100644 index 00000000..77cd5822 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Slick.mat @@ -0,0 +1,98 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2558126863425172776 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Water Decal Oil Slick + m_Shader: {fileID: -6465566751694194690, guid: c5da8e34fcbc64721b185986ff6d6d02, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALIGN_TO_WATER + - _SPECULAR_SETUP + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 2 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3001 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + - SHADOWCASTER + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: d659c0971294eff4bb817b27629a8ffb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 8ab22c07dc4ce1946ad2c01b0e067a8f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + 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: + - _ALIGN_TO_WATER: 1 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Alpha_Clip_Threshold: 0.5 + - _Blend: 0 + - _BlendModePreserveSpecular: 0 + - _CastShadows: 0 + - _Cull: 2 + - _DstBlend: 10 + - _Metalicness: 1 + - _Offset: 0.45 + - _QueueControl: 0 + - _QueueOffset: 1 + - _ReceiveShadows: 1 + - _Smoothness: 0.906 + - _SrcBlend: 5 + - _Surface: 1 + - _Use_Vertex_Color_Alpha: 0 + - _WorkflowMode: 0 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 0.59607846} + - _Specular_Color: {r: 0.20754719, g: 0.20754719, b: 0.20754719, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Slick.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Slick.mat.meta new file mode 100644 index 00000000..b4bcab48 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Slick.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: e3f310d4285af984b832bd0fff985fb8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal + Oil Slick.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Spill.mat b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Spill.mat new file mode 100644 index 00000000..57ee2e24 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Spill.mat @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2558126863425172776 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Water Decal Oil Spill + m_Shader: {fileID: -6465566751694194690, guid: c5da8e34fcbc64721b185986ff6d6d02, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALIGN_TO_WATER + - _SPECULAR_SETUP + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 2 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3001 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 071d6ffaa8978624380c121b564b4767, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + 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: + - _ALIGN_TO_WATER: 1 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Alpha_Clip_Threshold: 0.5 + - _Blend: 0 + - _BlendModePreserveSpecular: 0 + - _CastShadows: 0 + - _Cull: 2 + - _DstBlend: 10 + - _Metalicness: 1 + - _Offset: 0.5 + - _QueueControl: 0 + - _QueueOffset: 1 + - _ReceiveShadows: 1 + - _Smoothness: 0.285 + - _SrcBlend: 5 + - _Surface: 1 + - _Use_Vertex_Color_Alpha: 0 + - _WorkflowMode: 0 + - _ZTest: 4 + - _ZWrite: 0 + - _ZWriteControl: 2 + m_Colors: + - _BaseColor: {r: 0.122641504, g: 0.054977227, b: 0, a: 1} + - _Specular_Color: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Spill.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Spill.mat.meta new file mode 100644 index 00000000..b41d61f2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Spill.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: be608986acd5ad84da0ba695afb3d3cd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal + Oil Spill.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Reticle.mat b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Reticle.mat new file mode 100644 index 00000000..3a6ba5e5 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Reticle.mat @@ -0,0 +1,99 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2558126863425172776 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Water Decal Reticle + m_Shader: {fileID: -6465566751694194690, guid: c5da8e34fcbc64721b185986ff6d6d02, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALIGN_TO_WATER + - _SPECULAR_SETUP + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 2 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3003 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - MOTIONVECTORS + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 701a0762a3e06c64683ec5df2e26d6ae, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + 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: + - _ALIGN_TO_WATER: 1 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Alpha_Clip_Threshold: 0.5 + - _Blend: 0 + - _BlendModePreserveSpecular: 0 + - _CastShadows: 0 + - _Cull: 2 + - _DstBlend: 10 + - _Metalicness: 0 + - _Offset: 0.57 + - _QueueControl: 0 + - _QueueOffset: 3 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SrcBlend: 5 + - _Surface: 1 + - _Use_Vertex_Color_Alpha: 0 + - _WorkflowMode: 0 + - _ZTest: 4 + - _ZWrite: 0 + - _ZWriteControl: 2 + m_Colors: + - _BaseColor: {r: 0.37241387, g: 1, b: 0, a: 1} + - _Specular_Color: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Reticle.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Reticle.mat.meta new file mode 100644 index 00000000..9085319c --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Reticle.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 3d7a655314e85644289ffdace60455b9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal + Reticle.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle.mat b/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle.mat new file mode 100644 index 00000000..b76c610f --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle.mat @@ -0,0 +1,125 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3807344491832048406 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SplashParticle + m_Shader: {fileID: 4800000, guid: 8516d7a69675844a7a0b7095af7c46af, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHATEST_ON + - _NORMALMAP + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _FLIPBOOKBLENDING_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 75c2ef55a46cf3540991070e74d22f2d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 9b6a1a83a8fd87f448172ad469c3feb7, type: 3} + 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: 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} + - _OcclusionMap: + 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} + m_Ints: [] + m_Floats: + - _AlphaClip: 1 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DistortionBlend: 0 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0.1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _FlipbookBlending: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 5 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle.mat.meta new file mode 100644 index 00000000..ea7e13ed --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 437c6aff8dfd8bb44bdd7660cd8c8235 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/SplashParticle.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle_Up.mat b/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle_Up.mat new file mode 100644 index 00000000..d28f0161 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle_Up.mat @@ -0,0 +1,129 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3807344491832048406 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SplashParticle_Up + m_Shader: {fileID: 4800000, guid: 8516d7a69675844a7a0b7095af7c46af, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHATEST_ON + - _NORMALMAP + - _RECEIVE_SHADOWS_OFF + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _FLIPBOOKBLENDING_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 6621cd282f55c3948a01b00861223fcf, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: dde9e68c866c74c4ab8f32ca1e197c85, type: 3} + 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: 6621cd282f55c3948a01b00861223fcf, type: 3} + 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} + - _OcclusionMap: + 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} + m_Ints: [] + m_Floats: + - _AlphaClip: 1 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DistortionBlend: 0.92 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0.1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _FlipbookBlending: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 0 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 5 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle_Up.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle_Up.mat.meta new file mode 100644 index 00000000..c86aa6c0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/SplashParticle_Up.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 77c1bbd0b1b7b5e41b44616eb7114a04 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/SplashParticle_Up.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures.meta new file mode 100644 index 00000000..58547004 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b8c38fb8bb7ed1242a10b9b8e3d1d27f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_AlbedoAlpha.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_AlbedoAlpha.png new file mode 100644 index 00000000..6c17d89f --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_AlbedoAlpha.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68beb0fbcc6b4547d74136c1695dffe8c6be191e86df1a6428afa75d946bf8e9 +size 160958 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_AlbedoAlpha.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_AlbedoAlpha.png.meta new file mode 100644 index 00000000..abadb5c8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_AlbedoAlpha.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: ca01494f6d43a7a41a75a9ba1422cf8e +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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_AlbedoAlpha.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_Normals.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_Normals.png new file mode 100644 index 00000000..777b2811 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_Normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:936dcb931aced79ccefda02026127b10fc4a4c220d9ba5907f819c7a34207316 +size 619041 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_Normals.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_Normals.png.meta new file mode 100644 index 00000000..88c3ee99 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_Normals.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 9ab58a459a1ea7f4f84d61d1797493cc +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/Splash_Normals.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5.png new file mode 100644 index 00000000..5c8a4047 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c773e3ffb892c906549cd0101c499c380c65ddf5cda08b63ceb5fde1ec75a75 +size 468222 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5.png.meta new file mode 100644 index 00000000..840a2fb6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: d7ab2b225c9df274392adaef7c051b84 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: -1 + mipBias: -100 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5_normals.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5_normals.png new file mode 100644 index 00000000..70f62409 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5_normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad7f5f45440d5e7ab1efc8404b799e33341f6ed685fa2ef3a04d763fd4ebf08c +size 168124 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5_normals.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5_normals.png.meta new file mode 100644 index 00000000..bed715b5 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5_normals.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 7fbd0830d2e5d1d468b024f58a10de07 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterMist_5x5_normals.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple.png new file mode 100644 index 00000000..7bcc21dd --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4378f364d4633c9fa8aeef2d13340d2a62dbb3d53ab864830ccaf991f1cc0be +size 44114 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple.png.meta new file mode 100644 index 00000000..4930b329 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple.png.meta @@ -0,0 +1,123 @@ +fileFormatVersion: 2 +guid: aee0f0ffcb5804748ad04e8d86670677 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: -1 + mipBias: -100 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple_normal.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple_normal.png new file mode 100644 index 00000000..990d23e7 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d89353c64ba5ee99f1817a78f6d29cdb3288218abfccc26cb3e0b63fcf831eb +size 106165 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple_normal.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple_normal.png.meta new file mode 100644 index 00000000..dc028584 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple_normal.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: c9edeebde41ef564a945e19c7f0ed257 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterRipple_normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5.png new file mode 100644 index 00000000..e9cda859 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28955961ec11fb2cb5b81129552b0a3911f5146d25c4a84ec08a46f1c264eb1f +size 670249 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5.png.meta new file mode 100644 index 00000000..d728a34c --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: ef85c92c9c9dd6b4f87abd930629f871 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: -1 + mipBias: -100 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5_normals.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5_normals.png new file mode 100644 index 00000000..b23ea0cd --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5_normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4252ceeb30343c3a986d53fe5a36b5613b33e482c772372657bc71b6855012c +size 240554 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5_normals.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5_normals.png.meta new file mode 100644 index 00000000..2181ea4c --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5_normals.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: b6dcf43596218334c951d9aed0f9e568 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashCircle_5x5_normals.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6.png new file mode 100644 index 00000000..388cafaf --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1d8aa15d9e1bb99c7fe607df19855486c3c22e7b06c752d9f7fdba7dfc83f40 +size 401156 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6.png.meta new file mode 100644 index 00000000..d42ef714 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 6621cd282f55c3948a01b00861223fcf +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: -1 + mipBias: -100 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6_normals.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6_normals.png new file mode 100644 index 00000000..e6f428c7 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6_normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fc8ef846bfa742a4bb43db32f88b3797f48c1d82ac0283117894019fdc27f86 +size 229161 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6_normals.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6_normals.png.meta new file mode 100644 index 00000000..7944d96b --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6_normals.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: dde9e68c866c74c4ab8f32ca1e197c85 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplashUp_6x6_normals.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6.png new file mode 100644 index 00000000..98c6b869 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b15b68be03778209269bf60b4c4076380c53af828ae10ea7fd78f1aeb0503f7f +size 667453 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6.png.meta new file mode 100644 index 00000000..a4e6acc3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 75c2ef55a46cf3540991070e74d22f2d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: -1 + mipBias: -100 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6_normals.png b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6_normals.png new file mode 100644 index 00000000..08ddb94a --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6_normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a95e40d348230eb6275a8e53c60392d59867e94ad6491aef82abb3f42aa75fd0 +size 232155 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6_normals.png.meta b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6_normals.png.meta new file mode 100644 index 00000000..ae31dea3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6_normals.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 9b6a1a83a8fd87f448172ad469c3feb7 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/Textures/WaterSplash_6x6_normals.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/WaterCircle.mat b/Assets/External/Stylized Water 3/Materials/Effects/WaterCircle.mat new file mode 100644 index 00000000..5674cbd9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/WaterCircle.mat @@ -0,0 +1,129 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3807344491832048406 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: WaterCircle + m_Shader: {fileID: 4800000, guid: 8516d7a69675844a7a0b7095af7c46af, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHATEST_ON + - _NORMALMAP + - _RECEIVE_SHADOWS_OFF + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _FLIPBOOKBLENDING_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ef85c92c9c9dd6b4f87abd930629f871, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: b6dcf43596218334c951d9aed0f9e568, type: 3} + 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: ef85c92c9c9dd6b4f87abd930629f871, type: 3} + 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} + - _OcclusionMap: + 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} + m_Ints: [] + m_Floats: + - _AlphaClip: 1 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0.1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _FlipbookBlending: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 0 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 5 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/WaterCircle.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/WaterCircle.mat.meta new file mode 100644 index 00000000..a60ff865 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/WaterCircle.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: f886629c600e1d04d8ccdcfde60d25a9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/WaterCircle.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/WaterMistParticle.mat b/Assets/External/Stylized Water 3/Materials/Effects/WaterMistParticle.mat new file mode 100644 index 00000000..ef1ad9a9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/WaterMistParticle.mat @@ -0,0 +1,129 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3807344491832048406 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: WaterMistParticle + m_Shader: {fileID: 4800000, guid: 8516d7a69675844a7a0b7095af7c46af, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _FADING_ON + - _NORMALMAP + - _SOFTPARTICLES_ON + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _FLIPBOOKBLENDING_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: d7ab2b225c9df274392adaef7c051b84, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 7fbd0830d2e5d1d468b024f58a10de07, type: 3} + 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: ef85c92c9c9dd6b4f87abd930629f871, type: 3} + 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} + - _OcclusionMap: + 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} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 0 + - _Cull: 2 + - _Cutoff: 0.476 + - _DistortionBlend: 1 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0.1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _FlipbookBlending: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 1 + - _SoftParticlesFarFadeDistance: 0.8 + - _SoftParticlesNearFadeDistance: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 5 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SoftParticleFadeParams: {r: 0, g: 1.25, b: 0, a: 0} + - _SpecColor: {r: 0.199999, g: 0.199999, b: 0.199999, a: 0.737} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/WaterMistParticle.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/WaterMistParticle.mat.meta new file mode 100644 index 00000000..df34150a --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/WaterMistParticle.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 4089560b2567cc74a98c2e4612629903 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/WaterMistParticle.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/WaterRipple.mat b/Assets/External/Stylized Water 3/Materials/Effects/WaterRipple.mat new file mode 100644 index 00000000..6d0f52a3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/WaterRipple.mat @@ -0,0 +1,130 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3807344491832048406 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: WaterRipple + m_Shader: {fileID: 4800000, guid: 8516d7a69675844a7a0b7095af7c46af, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHATEST_ON + - _COLORADDSUBDIFF_ON + - _NORMALMAP + - _RECEIVE_SHADOWS_OFF + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _FLIPBOOKBLENDING_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: aee0f0ffcb5804748ad04e8d86670677, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c9edeebde41ef564a945e19c7f0ed257, type: 3} + 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: 96ee4b9247c627147a2a3efb7a7e2d81, type: 3} + 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} + - _OcclusionMap: + 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} + m_Ints: [] + m_Floats: + - _AlphaClip: 1 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0.1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _FlipbookBlending: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 0 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 5 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/WaterRipple.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/WaterRipple.mat.meta new file mode 100644 index 00000000..aa423531 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/WaterRipple.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: a132448b43cc17748b0e12f807057aad +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/WaterRipple.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/WaterfallSplashParticle.mat b/Assets/External/Stylized Water 3/Materials/Effects/WaterfallSplashParticle.mat new file mode 100644 index 00000000..69e092c8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/WaterfallSplashParticle.mat @@ -0,0 +1,129 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3807344491832048406 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: WaterfallSplashParticle + m_Shader: {fileID: 4800000, guid: 8516d7a69675844a7a0b7095af7c46af, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _FADING_ON + - _NORMALMAP + - _SOFTPARTICLES_ON + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _FLIPBOOKBLENDING_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - SHADOWCASTER + - DepthOnly + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ca01494f6d43a7a41a75a9ba1422cf8e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 9ab58a459a1ea7f4f84d61d1797493cc, type: 3} + 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: ef85c92c9c9dd6b4f87abd930629f871, type: 3} + 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} + - _OcclusionMap: + 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} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 0 + - _Cull: 2 + - _Cutoff: 0.413 + - _DistortionBlend: 1 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0.1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _FlipbookBlending: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Shininess: 0 + - _Smoothness: 0 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 1 + - _SoftParticlesFarFadeDistance: 0.8 + - _SoftParticlesNearFadeDistance: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 5 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SoftParticleFadeParams: {r: 0, g: 1.25, b: 0, a: 0} + - _SpecColor: {r: 0.199999, g: 0.199999, b: 0.199999, a: 0.737} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/WaterfallSplashParticle.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/WaterfallSplashParticle.mat.meta new file mode 100644 index 00000000..8ffcadb9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/WaterfallSplashParticle.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 1a75c10cf3aa33b4ba640c24b243f520 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/WaterfallSplashParticle.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/WaveCrestSplash.mat b/Assets/External/Stylized Water 3/Materials/Effects/WaveCrestSplash.mat new file mode 100644 index 00000000..c6c355a6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/WaveCrestSplash.mat @@ -0,0 +1,125 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3807344491832048406 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: WaveCrestSplash + m_Shader: {fileID: 4800000, guid: 8516d7a69675844a7a0b7095af7c46af, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _NORMALMAP + - _RECEIVE_SHADOWS_OFF + - _SURFACE_TYPE_TRANSPARENT + m_InvalidKeywords: + - _FLIPBOOKBLENDING_OFF + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + disabledShaderPasses: + - DepthOnly + - SHADOWCASTER + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ca01494f6d43a7a41a75a9ba1422cf8e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 9ab58a459a1ea7f4f84d61d1797493cc, type: 3} + 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: 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} + - _OcclusionMap: + 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} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 0 + - _Cull: 2 + - _Cutoff: 0.496 + - _DistortionBlend: 0 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0.1 + - _DstBlend: 10 + - _DstBlendAlpha: 10 + - _EnvironmentReflections: 1 + - _FlipbookBlending: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 5 + - _SrcBlendAlpha: 1 + - _Surface: 1 + - _WorkflowMode: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0} + - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/Effects/WaveCrestSplash.mat.meta b/Assets/External/Stylized Water 3/Materials/Effects/WaveCrestSplash.mat.meta new file mode 100644 index 00000000..fdb51f23 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Effects/WaveCrestSplash.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 34498b594386edf4fa72ade481f00b63 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Effects/WaveCrestSplash.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_ArcadeOcean.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_ArcadeOcean.mat new file mode 100644 index 00000000..469800c6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_ArcadeOcean.mat @@ -0,0 +1,361 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_ArcadeOcean + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _DISTANCE_NORMALS + - _NORMALMAP + - _REFRACTION + - _SURFACE_FOAM_SINGLE + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _ENABLEDIRECTIONALCAUSTICS_ON + - _FOAM + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SCREENSPACEREFLECTIONSENABLED_ON + - _SIMPLE_LIGHTING + - _SURFACE_FOAM + - _WORLDSPACEUV_ON + - _ZCLIP_ON + - _ZWRITE_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: e7c16e3bea1797d47872d220cc899f32, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: e7c16e3bea1797d47872d220cc899f32, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: a43bae8641b0ea945b082b20b9315df3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 5393152077581806659, guid: 07fa768fab398d34ea0cb010bc30e496, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 0.754 + - _CausticsDistortion: 0.246 + - _CausticsOn: 1 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.15000004 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _Depth: 2.42 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 4 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.005 + - _DstBlend: 0 + - _EdgeFade: 32 + - _EnableDirectionalCaustics: 1 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 0.149 + - _FoamClipping: 0 + - _FoamClippingDynamic: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0 + - _FoamOn: 1 + - _FoamOpacity: 1 + - _FoamSize: 0.314 + - _FoamSpeed: -0.1 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 2 + - _FoamSubSpeed: 0 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 2 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.19999993 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0.86 + - _FoamWaveMask: 0.638 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 7.7 + - _IntersectionClipping: 0.583 + - _IntersectionDistortion: 0.47 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 0 + - _IntersectionLength: 1.53 + - _IntersectionRippleDist: 64 + - _IntersectionRippleSpeed: 1 + - _IntersectionRippleStrength: 1 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: -0.1 + - _IntersectionStyle: 0 + - _IntersectionTiling: 1 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 2 + - _NormalStrength: 0.128 + - _NormalSubSpeed: -0.6 + - _NormalSubTiling: 0.5 + - _NormalTiling: 0.16000009 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSharp: 0 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.626 + - _ReflectionFresnel: 5.52 + - _ReflectionLighting: 0 + - _ReflectionStrength: 0.67 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 0.042 + - _RefractionOn: 1 + - _RefractionStrength: 0.389 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 1 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 3.1 + - _ShoreLineWaveDistance: 6 + - _ShoreLineWaveStr: 0 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.155 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.593 + - _SunReflectionPerturbance: 1 + - _SunReflectionSharp: 0 + - _SunReflectionSize: 0.907 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _TessMax: 200 + - _TessMin: 0 + - _TessValue: 4 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0.768 + - _TranslucencyExp: 7.3 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 0.63 + - _TranslucencyStrengthDirect: 0 + - _UnderwaterReflectionStrength: 0.5 + - _UnderwaterRefractionOffset: 0.027 + - _UnderwaterSurfaceSmoothness: 0.783 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.97 + - _WaveDistortion: 0.5 + - _WaveFrequency: 1 + - _WaveHeight: 0.621 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 1.1 + - _WaveSpeed: 1 + - _WaveSteepness: 5 + - _WaveTint: 0.0084 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0.23651557, b: 0.47303113, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 10.526316, g: 92.10526, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 0.8181819, g: 1.6653265, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.50953066, g: 5.8970256, b: 6.3541465, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.040000014, g: 0.040000014, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 0.943, b: 0.9245099, a: 0} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 0, g: 296.29626, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_ArcadeOcean.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_ArcadeOcean.mat.meta new file mode 100644 index 00000000..c02d5737 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_ArcadeOcean.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 9a3a73f5564a39544a7958f1d9a318e8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_ArcadeOcean.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Clear.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Clear.mat new file mode 100644 index 00000000..e5d7dbde --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Clear.mat @@ -0,0 +1,347 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Clear + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _INTERSECTION_FOAM + - _NORMALMAP + - _REFRACTION + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SCREENSPACEREFLECTIONSENABLED_ON + - _SIMPLE_LIGHTING + - _VERTEXCOLORWAVEFLATTENING_ON + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: b6d3e8158e6f65a4594526663ad7a894, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 0 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 0 + - _CausticsBrightness: 1 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.109 + - _CausticsOn: 1 + - _CausticsSpeed: 0.05 + - _CausticsTiling: 0.14 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 0.84 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 0.01 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 0 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 16.4 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0.424 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 1 + - _FoamClipping: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0.08 + - _FoamOn: 0 + - _FoamOpacity: 0.081 + - _FoamSize: 0.46 + - _FoamSpeed: 0.1 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.25 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.2 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 8 + - _IntersectionClipping: 0.833 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 0.408 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 1.96 + - _IntersectionRippleDist: 32 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.151 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.1 + - _IntersectionStyle: 0 + - _IntersectionTiling: 0.21000001 + - _IntersectionWaveDist: 19.94 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 0.6999999 + - _NormalStrength: 0.223 + - _NormalSubSpeed: -0.8 + - _NormalSubTiling: 0.5 + - _NormalTiling: 0.39999992 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0.054 + - _ReflectionDistortion: 0.133 + - _ReflectionFresnel: 4 + - _ReflectionFresnelMode: 0 + - _ReflectionLighting: 0 + - _ReflectionStrength: 1 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 0.162 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _ScreenSpaceReflectionsEnabled: 1 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 2.4 + - _ShoreLineWaveDistance: 30 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretch: 0.5 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.236 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.9 + - _SunReflectionPerturbance: 0.707 + - _SunReflectionSize: 0.914 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 1 + - _Texture_IntersectionOn: 0 + - _Tiling: 0.5 + - _Translucency: 0 + - _TranslucencyCurvatureMask: 0 + - _TranslucencyExp: 4 + - _TranslucencyOn: 0 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 1 + - _WaveDistance: 0.879 + - _WaveDistortion: 0.5 + - _WaveFrequency: 1 + - _WaveHeight: 0 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0.032 + - _WaveSpeed: 3 + - _WaveSteepness: 0 + - _WaveTint: 0 + - _WavesOn: 0 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0, g: 0.16451614, b: 0.34, a: 0.9843137} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 0, g: 300, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0.15} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.5, g: 0.5, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 1, b: 0.98136926, a: 0} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 150, g: 300, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Clear.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Clear.mat.meta new file mode 100644 index 00000000..7f2aafcb --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Clear.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 6cf5fe6b7ede58746b80d2a4c985e09c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Clear.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Default.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Default.mat new file mode 100644 index 00000000..c5bec0bf --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Default.mat @@ -0,0 +1,354 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Default + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _DISTANCE_NORMALS + - _INTERSECTION_FOAM + - _NORMALMAP + - _REFRACTION + - _SURFACE_FOAM_SINGLE + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SHARP_INERSECTION + - _SIMPLE_LIGHTING + - _SURFACE_FOAM + - _VERTEXCOLORWAVEFLATTENING_ON + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: efd0d88edbb048d489c41da8174e6a35, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: b6d3e8158e6f65a4594526663ad7a894, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 5393152077581806659, guid: 1ca4610f5bf9e2f4bb39535503a79eeb, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.047 + - _CausticsOn: 1 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.1 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _Depth: 0.94 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 9.25 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.05 + - _DstBlend: 0 + - _EdgeFade: 8 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0.297 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 0 + - _FoamClipping: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0 + - _FoamOn: 1 + - _FoamOpacity: 0 + - _FoamSize: 0.606 + - _FoamSpeed: 0.06000001 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.25 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.09999993 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 8 + - _IntersectionClipping: 0.706 + - _IntersectionDistortion: 0 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 3 + - _IntersectionRippleDist: 32 + - _IntersectionRippleSpeed: 3 + - _IntersectionRippleStrength: 0.5 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.1 + - _IntersectionStyle: 1 + - _IntersectionTiling: 0.059999757 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 1 + - _NormalStrength: 0.202 + - _NormalSubSpeed: -0.8 + - _NormalSubTiling: 0.49 + - _NormalTiling: -0.48000008 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.146 + - _ReflectionFresnel: 6 + - _ReflectionLighting: 1 + - _ReflectionStrength: 1 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 0.105 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 0 + - _ShoreLineWaveDistance: 23 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.302 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.762 + - _SunReflectionPerturbance: 0.386 + - _SunReflectionSize: 0.932 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0 + - _TranslucencyExp: 6 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 1 + - _WaveDistance: 0.775 + - _WaveDistortion: 0.5 + - _WaveFrequency: 0.8 + - _WaveHeight: 0.1 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0.1 + - _WaveSpeed: 2.3999996 + - _WaveSteepness: 0 + - _WaveTint: 0 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0, g: 0.16451614, b: 0.34, a: 0.9647059} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 69.23079, g: 276.9231, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 0.92941177} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0.15} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.5, g: 0.5, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 1, b: 0.98136926, a: 0.3764706} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: -1, g: -1, b: -1, a: -1} + - _WaveFadeDistance: {r: 26.666674, g: 143.33331, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Default.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Default.mat.meta new file mode 100644 index 00000000..7220dd55 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Default.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: e8333e151973f1c4188ff534979c823b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Default.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Frozen.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Frozen.mat new file mode 100644 index 00000000..bba66c28 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Frozen.mat @@ -0,0 +1,342 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Frozen + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _DISTANCE_NORMALS + - _NORMALMAP + - _SURFACE_FOAM + - _TRANSLUCENCY + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SIMPLE_LIGHTING + - _VERTEXCOLORWAVEFLATTENING_ON + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: efd0d88edbb048d489c41da8174e6a35, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: efd0d88edbb048d489c41da8174e6a35, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: b6d3e8158e6f65a4594526663ad7a894, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.047 + - _CausticsOn: 0 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.1 + - _ColorAbsorption: 0.06 + - _CrossPan_IntersectionOn: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _Depth: 0.94 + - _DepthExp: 1 + - _DepthHorizontal: 8 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 16 + - _DisableDepthTexture: 0 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.15 + - _DstBlend: 0 + - _EdgeFade: 1 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0.747 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 1 + - _FoamClipping: 0.373 + - _FoamDistortion: 3 + - _FoamOn: 1 + - _FoamOpacity: 0 + - _FoamSize: 0.606 + - _FoamSpeed: 0 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: 0 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.1 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.09999993 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 8 + - _IntersectionClipping: 0.395 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 0 + - _IntersectionLength: 2.27 + - _IntersectionRippleDist: 16 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.125 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.06999999 + - _IntersectionStyle: 0 + - _IntersectionTiling: 0.13999975 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 0 + - _NormalStrength: 0.163 + - _NormalSubSpeed: 0 + - _NormalSubTiling: 0.1 + - _NormalTiling: 0.4800001 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.868 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0.962 + - _PointSpotLightReflectionStrength: 1 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0.139 + - _ReflectionDistortion: 0.374 + - _ReflectionFresnel: 6 + - _ReflectionLighting: 0 + - _ReflectionStrength: 0.831 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 0 + - _RefractionStrength: 0.269 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 0 + - _ShadowStrength: 0.819 + - _ShoreLineLength: 0 + - _ShoreLineWaveDistance: 23 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.302 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.35 + - _SunReflectionPerturbance: 0.386 + - _SunReflectionSize: 1 + - _SunReflectionStrength: 1 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0 + - _TranslucencyExp: 8 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 1 + - _WaveDistance: 0.775 + - _WaveFrequency: 1 + - _WaveHeight: 0.1 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0.1 + - _WaveSpeed: 2.3999996 + - _WaveSteepness: 0 + - _WaveTint: 0 + - _WavesOn: 0 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0.09450587, g: 0.29184228, b: 0.34117648, a: 0.9372549} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 0, g: 49.387802, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 0.12156863} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0.1764706} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0.07227186, g: 0.2831488, b: 0.34191445, a: 0} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: -1, g: -1, b: -1, a: -1} + - _WaveFadeDistance: {r: 26.666674, g: 143.33331, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Frozen.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Frozen.mat.meta new file mode 100644 index 00000000..e5ca9e9d --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Frozen.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 5d35554b48c05c3488160c6eb5354ac5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Frozen.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lava.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lava.mat new file mode 100644 index 00000000..249a9bd4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lava.mat @@ -0,0 +1,351 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Lava + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _ENVIRONMENTREFLECTIONS_OFF + - _INTERSECTION_FOAM + - _NORMALMAP + - _RECEIVE_SHADOWS_OFF + - _SPECULARHIGHLIGHTS_OFF + - _SURFACE_FOAM_SINGLE + - _UNLIT + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SIMPLE_LIGHTING + - _SMOOTH_INTERSECTION + - _SURFACE_FOAM + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: 9534f81a954a3d14c95686d6a41fb760, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.047 + - _CausticsOn: 0 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.5 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 1 + - _DepthExp: 1 + - _DepthHorizontal: 8 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 16 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 0 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 18.7 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 0 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 1 + - _FoamBubblesSpread: 0 + - _FoamBubblesStrength: 0 + - _FoamClipping: 0.242 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0.03 + - _FoamOn: 1 + - _FoamOpacity: 0.326 + - _FoamSize: 0.01 + - _FoamSpeed: 0.02 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.9 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.09999993 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 8 + - _IntersectionClipping: 0.132 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 0.222 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 1.65 + - _IntersectionRippleDist: 32 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.030000022 + - _IntersectionStyle: 2 + - _IntersectionTiling: 0.100000136 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 0 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 0.25 + - _NormalStrength: 0.048 + - _NormalSubSpeed: -1 + - _NormalSubTiling: 0.5 + - _NormalTiling: -0.48000008 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 0 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.0467 + - _ReflectionFresnel: 5 + - _ReflectionLighting: 1 + - _ReflectionStrength: 0.268 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 0 + - _RefractionStrength: 1 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 0 + - _ShoreLineWaveDistance: 23 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.302 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 0 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.228 + - _SunReflectionPerturbance: 0.386 + - _SunReflectionSize: 1 + - _SunReflectionStrength: 0.68 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0 + - _TranslucencyExp: 4 + - _TranslucencyOn: 0 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.006 + - _WaveFrequency: 1 + - _WaveHeight: 0.015 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0 + - _WaveSpeed: 2.3999996 + - _WaveSteepness: 5 + - _WaveTint: 0 + - _WavesOn: 0 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 2.9960785, g: 0.45490196, b: 0, a: 0.9647059} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 300, g: 0.25, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0, g: 0, b: 0, a: 1} + - _IntersectionColor: {r: 0, g: 0, b: 0, a: 0.8} + - _NormalTiling: {r: 0.080000006, g: 0.080000006, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: -1, g: -1, b: -1, a: -1} + - _WaveFadeDistance: {r: 150, g: 300, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lava.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lava.mat.meta new file mode 100644 index 00000000..d2d7aa4e --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lava.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: c619752e7569e794fbd3df586f3d8249 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Lava.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_LavaFlow.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_LavaFlow.mat new file mode 100644 index 00000000..e2cebe74 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_LavaFlow.mat @@ -0,0 +1,299 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_LavaFlow + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _ENVIRONMENTREFLECTIONS_OFF + - _INTERSECTION_FOAM + - _NORMALMAP + - _RIVER + - _SPECULARHIGHLIGHTS_OFF + - _SURFACE_FOAM_SINGLE + - _TRANSLUCENCY + - _UNLIT + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTH_TEX + - _FOAM + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SMOOTH_INTERSECTION + - _SURFACE_FOAM + - _VERTEXCOLORWAVEFLATTENING_ON + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3001 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 2800000, guid: e7124ab7f8f2b28478921aa8a615ebc0, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: a43bae8641b0ea945b082b20b9315df3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + 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} + - _WaveProfile: + 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: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _CausticsBrightness: 5 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.418 + - _CausticsOn: 0 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.1 + - _ColorAbsorption: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 2.07 + - _DepthExp: 0 + - _DepthHorizontal: 8 + - _DepthVertical: 16 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 0 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 0 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 0 + - _FlatShadingOn: 0 + - _FoamBaseAmount: 1 + - _FoamBubblesSpread: 0 + - _FoamBubblesStrength: 0 + - _FoamClipping: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0.36 + - _FoamOn: 1 + - _FoamSize: 0.045 + - _FoamSpeed: 0.2 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: 0.1 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.040000014 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 14.9 + - _IntersectionClipping: 0.486 + - _IntersectionDistortion: 1 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 2.06 + - _IntersectionRippleDist: 64 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0 + - _IntersectionSharp: 1 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.01 + - _IntersectionStyle: 2 + - _IntersectionTiling: 0.4 + - _LightingOn: 0 + - _Metallic: 0 + - _NormalMapOn: 1 + - _NormalSpeed: 0.1 + - _NormalStrength: 1 + - _NormalSubSpeed: 0 + - _NormalSubTiling: 0.70000005 + - _NormalTiling: 0.030000044 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _RAMMode: 1 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0.013 + - _ReflectionDistortion: 0.075 + - _ReflectionFresnel: 6 + - _ReflectionLighting: 0 + - _ReflectionStrength: 1 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 0 + - _RefractionStrength: 0.346 + - _RiverModeOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 0.418 + - _SlopeAngleFalloff: 49.2 + - _SlopeAngleThreshold: 27 + - _SlopeFoam: 0.58 + - _SlopeSpeed: 2 + - _SlopeStretch: 0.491 + - _SlopeStretching: 0.436 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.487 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 0 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.974 + - _SunReflectionSize: 0.937 + - _SunReflectionStrength: 5 + - _Surface: 0 + - _TranslucencyCurvatureMask: 0.446 + - _TranslucencyExp: 1.85 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 1 + - _WaveDistance: 0.679 + - _WaveFrequency: 1 + - _WaveHeight: 0.56 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 6 + - _WaveSpeed: 1 + - _WaveSteepness: 0 + - _WaveTint: 0.1 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 4.237095, g: 0.59896106, b: 0, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Direction: {r: 0, g: -1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 300, g: 0.25, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0, g: 0, b: 0, a: 1} + - _IntersectionColor: {r: 0, g: 0, b: 0, a: 1} + - _NormalTiling: {r: 0.3, g: 0.3, b: 0, a: 0} + - _ShallowColor: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _WaveDirection: {r: 2, g: 1, b: 2, a: 1} + - _WaveFadeDistance: {r: 150, g: 300, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &4759453835961029274 +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: 2 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_LavaFlow.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_LavaFlow.mat.meta new file mode 100644 index 00000000..f6d55901 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_LavaFlow.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 7d308e88c4061974d972bbdc6812bdaf +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_LavaFlow.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lowpoly.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lowpoly.mat new file mode 100644 index 00000000..84a0057b --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lowpoly.mat @@ -0,0 +1,306 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Lowpoly + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _FLAT_SHADING + - _INTERSECTION_FOAM + - _RECEIVE_SHADOWS_OFF + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - _CROSSPAN_INTERSECTION + - _DEPTHEXP_ON + - _DEPTH_TEX + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SHARP_INERSECTION + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 1a9f5604a68a49c489e90410796483a1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: b6d3e8158e6f65a4594526663ad7a894, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + 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} + - _WaveProfile: + m_Texture: {fileID: 5393152077581806659, guid: 1ca4610f5bf9e2f4bb39535503a79eeb, type: 2} + 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: + - _AlphaClip: 0 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 1 + - _CausticsDistortion: 1 + - _CausticsOn: 0 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.5 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 2.45 + - _DepthExp: 1 + - _DepthHorizontal: 2.44 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 4.2 + - _DisableDepthTexture: 0 + - _DistanceNormalsOn: 0 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 1.01 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 1 + - _FoamBaseAmount: 1 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 1 + - _FoamClipping: 0 + - _FoamDistortion: 0.1 + - _FoamOn: 0 + - _FoamOpacity: 1 + - _FoamSize: 0.695 + - _FoamSpeed: 0.1 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.25 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.39999992 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 1 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 8 + - _IntersectionClipping: 0.5 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 1.98 + - _IntersectionRippleDist: 1 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0 + - _IntersectionSharp: 1 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.1 + - _IntersectionStyle: 1 + - _IntersectionTiling: 0.09999993 + - _LightingOn: 1 + - _Metallic: 0 + - _NormalMapOn: 0 + - _NormalSpeed: 0.2 + - _NormalStrength: 0 + - _NormalSubSpeed: -0.5 + - _NormalSubTiling: 0.5 + - _NormalTiling: 1 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 0 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0 + - _ReflectionFresnel: 8 + - _ReflectionLighting: 0 + - _ReflectionStrength: 1 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 0 + - _RefractionStrength: 0.118 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 2 + - _ShoreLineWaveDistance: 64 + - _ShoreLineWaveStr: 0.008 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.1 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 1.647 + - _SunReflectionPerturbance: 1 + - _SunReflectionSize: 0.975 + - _SunReflectionStrength: 1 + - _Surface: 0 + - _TessMax: 15 + - _TessMin: 0 + - _TessValue: 16 + - _Texture_IntersectionOn: 0 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 1 + - _TranslucencyExp: 1 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.574 + - _WaveFrequency: 1 + - _WaveHeight: 1 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0 + - _WaveSpeed: 1 + - _WaveSteepness: 5 + - _WaveTint: 0 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0, g: 0.17100494, b: 0.4811321, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _DepthMapBounds: {r: 0, g: 0, b: 0, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 300, g: 0.25, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.41037738, g: 0.71931076, b: 1, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.040000014, g: 0.040000014, b: 0, a: 0} + - _ShallowColor: {r: 0, g: 2, b: 1.9607843, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 150, g: 300, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &1092640962685890020 +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: 2 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lowpoly.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lowpoly.mat.meta new file mode 100644 index 00000000..6c1646bd --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Lowpoly.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 9eaadba20d5899341a463ca95a74ce58 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Lowpoly.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Mobile.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Mobile.mat new file mode 100644 index 00000000..ecde533f --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Mobile.mat @@ -0,0 +1,346 @@ +%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: StylizedWater3_Mobile + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ENVIRONMENTREFLECTIONS_OFF + - _INTERSECTION_FOAM + - _NORMALMAP + - _RECEIVE_SHADOWS_OFF + - _SURFACE_FOAM + - _UNLIT + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _CROSSPAN_INTERSECTION + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SHARP_INERSECTION + - _SIMPLE_LIGHTING + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: a201b1cea6ea07c41a8190e44033bfb0, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: a201b1cea6ea07c41a8190e44033bfb0, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: b6d3e8158e6f65a4594526663ad7a894, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 4.83 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.15 + - _CausticsOn: 0 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.5 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 5.01 + - _DepthExp: 1 + - _DepthHorizontal: 1 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 4 + - _DisableDepthTexture: 0 + - _DistanceNormalsOn: 0 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 7.37 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 0 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 1 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 0 + - _FoamClipping: 0 + - _FoamDistortion: 0.47 + - _FoamOn: 1 + - _FoamOpacity: 0.253 + - _FoamSize: 0.01 + - _FoamSpeed: 0.030000014 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.25 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.049999908 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 10.4 + - _IntersectionClipping: 0.428 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 1.79 + - _IntersectionRippleDist: 64 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.355 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.06000001 + - _IntersectionStyle: 1 + - _IntersectionTiling: 0.16999984 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 0 + - _LightingOn: 0 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 0.5 + - _NormalStrength: 1 + - _NormalSubSpeed: -0.5 + - _NormalSubTiling: 0.5 + - _NormalTiling: 0.29999992 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 0 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.086 + - _ReflectionFresnel: 5 + - _ReflectionFresnelMode: 0 + - _ReflectionLighting: 0 + - _ReflectionStrength: 0.248 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 0 + - _RefractionStrength: 0.267 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 0 + - _ShadowStrength: 1 + - _ShoreLineLength: 0 + - _ShoreLineWaveDistance: 23 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 4 + - _SparkleSize: 0.7 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.71 + - _SunReflectionPerturbance: 0.548 + - _SunReflectionSize: 0.948 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 0 + - _TranslucencyCurvatureMask: 0 + - _TranslucencyExp: 4 + - _TranslucencyOn: 0 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.763 + - _WaveFrequency: 1 + - _WaveHeight: 0 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0.291 + - _WaveSpeed: 1 + - _WaveSteepness: 0 + - _WaveTint: 0.029 + - _WavesOn: 0 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0, g: 0.16451614, b: 0.34, a: 0.9647059} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 300, g: 0.25, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 0.48235294} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.2352941, g: 0.9051294, b: 1, a: 1} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.3, g: 0.3, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 0.8446603, b: 1, a: 0.39607844} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 150, g: 300, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Mobile.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Mobile.mat.meta new file mode 100644 index 00000000..ebc752f3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Mobile.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: ac035e850020fe84dae1e5dd49abb816 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Mobile.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Murky.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Murky.mat new file mode 100644 index 00000000..b8e7e1d2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Murky.mat @@ -0,0 +1,357 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Murky + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _DISTANCE_NORMALS + - _INTERSECTION_FOAM + - _NORMALMAP + - _REFRACTION + - _SURFACE_FOAM_SINGLE + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SIMPLE_LIGHTING + - _SMOOTH_INTERSECTION + - _SURFACE_FOAM + - _WORLDSPACEUV_ON + - _ZCLIP_ON + - _ZWRITE_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: d63a31f28f34eae4ebc27e00a9799433, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: efd0d88edbb048d489c41da8174e6a35, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: a43bae8641b0ea945b082b20b9315df3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 1 + - _CausticsChromance: 0 + - _CausticsDistortion: 0.128 + - _CausticsOn: 1 + - _CausticsSpeed: 0.05 + - _CausticsTiling: 0.15 + - _ColorAbsorption: 0.11 + - _CrossPan_IntersectionOn: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _Depth: 0.94 + - _DepthExp: 1 + - _DepthHorizontal: 1.11 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 6 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.12 + - _DstBlend: 0 + - _EdgeFade: 15 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0.158 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 0.2 + - _FoamClipping: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0.1 + - _FoamOn: 1 + - _FoamOpacity: 0.104 + - _FoamSize: 0.01 + - _FoamSpeed: 0.050000012 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.25 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.09999993 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 2 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 8 + - _IntersectionClipping: 0.605 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 0.456 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 1.41 + - _IntersectionRippleDist: 32 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.547 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.02 + - _IntersectionStyle: 2 + - _IntersectionTiling: 0.03999974 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 1 + - _NormalStrength: 0.169 + - _NormalSubSpeed: -0.8 + - _NormalSubTiling: 0.5 + - _NormalTiling: 0.5800001 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0.99 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.206 + - _ReflectionFresnel: 8 + - _ReflectionFresnelMode: 0 + - _ReflectionLighting: 0 + - _ReflectionStrength: 1 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 0.284 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 0 + - _ShoreLineWaveDistance: 23 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.527 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.76 + - _SunReflectionPerturbance: 0.386 + - _SunReflectionSize: 0.895 + - _SunReflectionStrength: 5 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _TessMax: 23.86 + - _TessMin: 0 + - _TessValue: 41.8 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0.584 + - _TranslucencyExp: 4 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 1 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.036 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.9 + - _WaveFrequency: 1 + - _WaveHeight: 0.2 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 3 + - _WaveSpeed: 1 + - _WaveSteepness: 2.53 + - _WaveTint: 0 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.03773582, g: 0.022764662, b: 0.011213946, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 0, g: 150, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.5, g: 0.5, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0.7169812, g: 0.21014106, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: -1, g: -1, b: -1, a: -1} + - _WaveFadeDistance: {r: 0, g: 82.9268, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Murky.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Murky.mat.meta new file mode 100644 index 00000000..d06190a9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Murky.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: f62e0413f72de5c479f62fc6b9beea07 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Murky.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_NintendoStyle.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_NintendoStyle.mat new file mode 100644 index 00000000..493a19b6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_NintendoStyle.mat @@ -0,0 +1,362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_NintendoStyle + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _DISTANCE_NORMALS + - _NORMALMAP + - _REFRACTION + - _SURFACE_FOAM_SINGLE + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _ENABLEDIRECTIONALCAUSTICS_ON + - _FOAM + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SCREENSPACEREFLECTIONSENABLED_ON + - _SIMPLE_LIGHTING + - _SURFACE_FOAM + - _WORLDSPACEUV_ON + - _ZCLIP_ON + - _ZWRITE_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 3e077aa5fc0874b47891360fed563111, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: 3e077aa5fc0874b47891360fed563111, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: a43bae8641b0ea945b082b20b9315df3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 5393152077581806659, guid: 94970c101f8c965459ef7e2f90f768f1, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 0.754 + - _CausticsDistortion: 0.246 + - _CausticsOn: 1 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.15000004 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _Depth: 2.42 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 4 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.010000007 + - _DstBlend: 0 + - _EdgeFade: 32 + - _EnableDirectionalCaustics: 1 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0 + - _FoamBubblesSpread: 0 + - _FoamBubblesStrength: 0 + - _FoamClipping: 0 + - _FoamClippingDynamic: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0.62 + - _FoamOn: 1 + - _FoamOpacity: 1 + - _FoamSize: 0.314 + - _FoamSpeed: -0.1 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1.95 + - _FoamSubSpeed: 0 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 2 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.19999993 + - _FoamTilingDynamic: -0.019999988 + - _FoamWaveAmount: 0.86 + - _FoamWaveMask: 0.638 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 20.7 + - _IntersectionClipping: 0.583 + - _IntersectionDistortion: 0.47 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 0 + - _IntersectionLength: 1.53 + - _IntersectionRippleDist: 64 + - _IntersectionRippleSpeed: 1 + - _IntersectionRippleStrength: 1 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: -0.1 + - _IntersectionStyle: 0 + - _IntersectionTiling: 1 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 1 + - _NormalStrength: 0.017 + - _NormalSubSpeed: -0.6 + - _NormalSubTiling: 2 + - _NormalTiling: 0.16000009 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 1 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSharp: 0 + - _PointSpotLightReflectionSize: 1 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.07 + - _ReflectionFresnel: 8 + - _ReflectionLighting: 0 + - _ReflectionStrength: 0.765 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 0.042 + - _RefractionOn: 1 + - _RefractionStrength: 0.389 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 1 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 3.1 + - _ShoreLineWaveDistance: 6 + - _ShoreLineWaveStr: 0 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.155 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.355 + - _SunReflectionPerturbance: 1 + - _SunReflectionSharp: 0 + - _SunReflectionSharpness: 0.555 + - _SunReflectionSize: 0.955 + - _SunReflectionStrength: 5.49 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _TessMax: 200 + - _TessMin: 0 + - _TessValue: 4 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0.754 + - _TranslucencyExp: 3.3 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.04 + - _UnderwaterReflectionStrength: 0.5 + - _UnderwaterRefractionOffset: 0.027 + - _UnderwaterSurfaceSmoothness: 0.783 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.97 + - _WaveDistortion: 0.5 + - _WaveFrequency: 1 + - _WaveHeight: 1 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 6.5 + - _WaveSpeed: 1 + - _WaveSteepness: 1 + - _WaveTint: 0.0356 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.030373132, g: 0.107686564, b: 0.185, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 10, g: 300, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 0.56760806, g: 0.8265599, b: 0, a: 0} + - _FoamTiling: {r: 0.02, g: 0.02, b: 0, a: 0} + - _HorizonColor: {r: 0.27558264, g: 0.825463, b: 1.4980389, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.06999999, g: 0.06999999, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 0.6935407, b: 0.9411765, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 38.656963, g: 266.128, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_NintendoStyle.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_NintendoStyle.mat.meta new file mode 100644 index 00000000..f4eeb9fb --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_NintendoStyle.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: e641fc50a6991f94488a292b9be307c9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_NintendoStyle.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Ocean.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Ocean.mat new file mode 100644 index 00000000..bc345874 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Ocean.mat @@ -0,0 +1,359 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Ocean + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _DISTANCE_NORMALS + - _INTERSECTION_FOAM + - _NORMALMAP + - _REFRACTION + - _SURFACE_FOAM_SINGLE + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SHARP_INERSECTION + - _SIMPLE_LIGHTING + - _SURFACE_FOAM + - _WORLDSPACEUV_ON + - _ZCLIP_ON + - _ZWRITE_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: e7c16e3bea1797d47872d220cc899f32, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: e7c16e3bea1797d47872d220cc899f32, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 3e077aa5fc0874b47891360fed563111, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: 32fb2a74f62ae034da5e460b17d43393, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: a201b1cea6ea07c41a8190e44033bfb0, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 5393152077581806659, guid: 343e9ebae18bc0f48811edac300d64d0, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.23 + - _CausticsOn: 0 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.17000014 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _Depth: 2.42 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 8 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.005 + - _DstBlend: 0 + - _EdgeFade: 7 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 0.232 + - _FoamClipping: 0 + - _FoamClippingDynamic: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0 + - _FoamOn: 1 + - _FoamOpacity: 1 + - _FoamSize: 0.314 + - _FoamSpeed: -0.5 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1.34 + - _FoamSubSpeed: 0 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 2 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.19999993 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0.86 + - _FoamWaveMask: 0.638 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 32 + - _IntersectionClipping: 0.583 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 1 + - _IntersectionRippleDist: 20 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.53 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.1 + - _IntersectionStyle: 1 + - _IntersectionTiling: 1 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 1 + - _NormalStrength: 0.189 + - _NormalSubSpeed: -1 + - _NormalSubTiling: 2 + - _NormalTiling: 0.16000009 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSharp: 0 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 1 + - _ReflectionFresnel: 8 + - _ReflectionLighting: 0 + - _ReflectionStrength: 0.794 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 0.251 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 3.1 + - _ShoreLineWaveDistance: 6 + - _ShoreLineWaveStr: 0 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.155 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 1.12 + - _SunReflectionPerturbance: 1 + - _SunReflectionSharp: 0 + - _SunReflectionSize: 0.706 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _TessMax: 50 + - _TessMin: 0 + - _TessValue: 8 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0.65 + - _TranslucencyExp: 1 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.019 + - _UnderwaterReflectionStrength: 0.5 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.97 + - _WaveDistortion: 0.5 + - _WaveFrequency: 1 + - _WaveHeight: 1 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0.6 + - _WaveSpeed: 1 + - _WaveSteepness: 1.56 + - _WaveTint: 0 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.018111428, g: 0.18358402, b: 0.3490566, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 10, g: 128.07892, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 0.5837838, g: 0.8046726, b: 0, a: 0} + - _FoamTiling: {r: 0.089999974, g: 0.089999974, b: 0, a: 0} + - _HorizonColor: {r: 0.50953066, g: 5.8970256, b: 6.3541465, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.020000014, g: 0.020000014, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 1, b: 0.8273995, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 0, g: 250, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Ocean.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Ocean.mat.meta new file mode 100644 index 00000000..c30858ee --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Ocean.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: d9bee4d86b9f55b46a4288109fb2b181 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Ocean.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Puddle.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Puddle.mat new file mode 100644 index 00000000..df671d25 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Puddle.mat @@ -0,0 +1,343 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Puddle + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _REFRACTION + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SCREENSPACEREFLECTIONSENABLED_ON + - _SIMPLE_LIGHTING + - _VERTEXCOLORTRANSPARENCY_ON + - _VERTEXCOLORWAVEFLATTENING_ON + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: b6d3e8158e6f65a4594526663ad7a894, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 0 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 0 + - _CausticsBrightness: 1 + - _CausticsChromance: 0 + - _CausticsDistortion: 0.042 + - _CausticsOn: 0 + - _CausticsSpeed: 0.05 + - _CausticsTiling: 0.14 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 0.84 + - _DepthExp: 1 + - _DepthHorizontal: 8 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 16 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 0 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 1 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0.424 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 1 + - _FoamClipping: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0.08 + - _FoamOn: 0 + - _FoamOpacity: 0.081 + - _FoamSize: 0.46 + - _FoamSpeed: 0.1 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.25 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.2 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 8 + - _IntersectionClipping: 0.833 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 0.408 + - _IntersectionFoamOn: 0 + - _IntersectionLength: 1.96 + - _IntersectionRippleDist: 32 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.151 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.1 + - _IntersectionStyle: 0 + - _IntersectionTiling: 0.21000001 + - _IntersectionWaveDist: 19.94 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 0 + - _NormalSpeed: 0 + - _NormalStrength: 0.253 + - _NormalSubSpeed: 0 + - _NormalSubTiling: 0.5 + - _NormalTiling: 0.39999992 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 0 + - _ReceiveDynamicEffectsHeight: 0 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.119 + - _ReflectionFresnel: 1 + - _ReflectionFresnelMode: 0 + - _ReflectionLighting: 0 + - _ReflectionStrength: 1 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 0.089 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _ScreenSpaceReflectionsEnabled: 1 + - _ShadingMode: 0 + - _ShadowStrength: 1 + - _ShoreLineLength: 2.4 + - _ShoreLineWaveDistance: 30 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretch: 0.5 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.236 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.35 + - _SunReflectionPerturbance: 0.707 + - _SunReflectionSize: 0.738 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 1 + - _Texture_IntersectionOn: 0 + - _Tiling: 0.5 + - _Translucency: 0 + - _TranslucencyCurvatureMask: 0 + - _TranslucencyExp: 4 + - _TranslucencyOn: 0 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterReflectionStrength: 0.5 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 1 + - _VertexColorWaveFlattening: 1 + - _WaveDistance: 0.879 + - _WaveDistortion: 0.5 + - _WaveFrequency: 1 + - _WaveHeight: 0 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0.032 + - _WaveSpeed: 3 + - _WaveSteepness: 0 + - _WaveTint: 0 + - _WavesOn: 0 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0.021226421, g: 0.02486522, b: 0.028301895, a: 0.2} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 0, g: 300, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.4, g: 0.4, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 150, g: 300, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Puddle.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Puddle.mat.meta new file mode 100644 index 00000000..c6a9fcd9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Puddle.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 906e741d897f0604693cee6a7f4d87cb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Puddle.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Realistic.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Realistic.mat new file mode 100644 index 00000000..70b16e06 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Realistic.mat @@ -0,0 +1,356 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Realistic + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _DISTANCE_NORMALS + - _NORMALMAP + - _REFRACTION + - _SURFACE_FOAM_SINGLE + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _FOAMON_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SCREENSPACEREFLECTIONSENABLED_ON + - _SIMPLE_LIGHTING + - _SMOOTH_INTERSECTION + - _SURFACE_FOAM + - _WORLDSPACEUV_ON + - _ZCLIP_ON + - _ZWRITE_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: d63a31f28f34eae4ebc27e00a9799433, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: e7c16e3bea1797d47872d220cc899f32, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 5393152077581806659, guid: 733b5ffd19f2aa140862193b21026d41, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 0.442 + - _CausticsDistortion: 0.128 + - _CausticsOn: 1 + - _CausticsSpeed: 0.05 + - _CausticsTiling: 0.15 + - _ColorAbsorption: 0.11 + - _CrossPan_IntersectionOn: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _Depth: 0.94 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 6 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.009999996 + - _DstBlend: 0 + - _EdgeFade: 18.7 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0.158 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 0.1 + - _FoamClipping: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0.1 + - _FoamOn: 1 + - _FoamOpacity: 0.104 + - _FoamSize: 0.01 + - _FoamSpeed: 0.050000012 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.25 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.09999993 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 2 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 8 + - _IntersectionClipping: 0.924 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 0.137 + - _IntersectionFoamOn: 0 + - _IntersectionLength: 1.42 + - _IntersectionRippleDist: 32 + - _IntersectionRippleSpeed: -2 + - _IntersectionRippleStrength: 0.547 + - _IntersectionSharp: 0 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: -0.02 + - _IntersectionStyle: 2 + - _IntersectionTiling: 0.03999974 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 1 + - _NormalStrength: 0.169 + - _NormalSubSpeed: -0.5 + - _NormalSubTiling: 0.5 + - _NormalTiling: 0.5800001 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0.99 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.206 + - _ReflectionFresnel: 8 + - _ReflectionFresnelMode: 0 + - _ReflectionLighting: 0 + - _ReflectionStrength: 0.8 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 0.284 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 1 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 0 + - _ShoreLineWaveDistance: 23 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.527 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.76 + - _SunReflectionPerturbance: 0.386 + - _SunReflectionSize: 0.895 + - _SunReflectionStrength: 5 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _TessMax: 23.86 + - _TessMin: 0 + - _TessValue: 41.8 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0.584 + - _TranslucencyExp: 2 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 1 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.9 + - _WaveFrequency: 1 + - _WaveHeight: 0.2 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 3 + - _WaveSpeed: 1 + - _WaveSteepness: 2.53 + - _WaveTint: 0 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.033239212, g: 0.06696109, b: 0.101960786, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 0, g: 150, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.5, g: 0.5, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 1, b: 0.38835502, a: 0} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: -1, g: -1, b: -1, a: -1} + - _WaveFadeDistance: {r: 0, g: 82.9268, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Realistic.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Realistic.mat.meta new file mode 100644 index 00000000..ef0fcb42 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Realistic.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: bd2dea484b1242b459507e84366c6b09 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Realistic.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_River Demo.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_River Demo.mat new file mode 100644 index 00000000..e1dc7f75 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_River Demo.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_River Demo + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 2100000, guid: 37de31e0cff7a6143936661d85112042, type: 2} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _DISTANCE_NORMALS + - _NORMALMAP + - _REFRACTION + - _RIVER + - _SURFACE_FOAM + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SMOOTH_INTERSECTION + - _VERTEXCOLORDEPTH_ON + - _VERTEXCOLORFOAM_ON + - _VERTEXCOLORTRANSPARENCY_ON + - _VERTEXCOLORWAVEFLATTENING_ON + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: _VertexColorDepth + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Ints: [] + m_Floats: + - _CausticsBrightness: 2 + - _ColorAbsorption: 0 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthVertical: 10.58 + - _EdgeFade: 4 + - _IntersectionFoamOn: 0 + - _VertexColorFoam: 1 + - _VertexColorTransparency: 1 + - _WaveHeight: 0.25 + - _WaveNormalStr: 32 + m_Colors: + - _Direction: {r: 0, g: -1, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &4759453835961029274 +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: 2 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_River Demo.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_River Demo.mat.meta new file mode 100644 index 00000000..8783bee4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_River Demo.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 68d4090a2bd9e154ea2b68c7a7321309 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_River Demo.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_River.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_River.mat new file mode 100644 index 00000000..5357fb7c --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_River.mat @@ -0,0 +1,296 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_River + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _DISTANCE_NORMALS + - _INTERSECTION_FOAM + - _NORMALMAP + - _REFRACTION + - _RIVER + - _SURFACE_FOAM + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SMOOTH_INTERSECTION + - _VERTEXCOLORWAVEFLATTENING_ON + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3002 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: d63a31f28f34eae4ebc27e00a9799433, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: efd0d88edbb048d489c41da8174e6a35, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 2800000, guid: e7124ab7f8f2b28478921aa8a615ebc0, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 7705156529211f14995762ef939f6cfa, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + 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} + - _WaveProfile: + m_Texture: {fileID: 5393152077581806659, guid: ab6af485aea7c3a4db9cb4a316d17e57, type: 2} + 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: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.418 + - _CausticsOn: 1 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.1 + - _ColorAbsorption: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 2.07 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthVertical: 8.93 + - _DisableDepthTexture: 0 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 21.89 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FoamBaseAmount: 0 + - _FoamBubblesSpread: 2 + - _FoamBubblesStrength: 0 + - _FoamClipping: 0 + - _FoamDistortion: 2.03 + - _FoamOn: 1 + - _FoamSize: 0.045 + - _FoamSpeed: 4 + - _FoamSpeedDynamic: 0 + - _FoamStrength: 1 + - _FoamSubSpeed: 1 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 1 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.20000002 + - _FoamTilingDynamic: 0.4 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 7.7 + - _IntersectionClipping: 0.166 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 0.355 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 1.48 + - _IntersectionRippleDist: 64 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0 + - _IntersectionSharp: 1 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.01 + - _IntersectionStyle: 2 + - _IntersectionTiling: 0.4 + - _LightingOn: 1 + - _Metallic: 0 + - _NormalMapOn: 1 + - _NormalSpeed: 8 + - _NormalStrength: 0.332 + - _NormalSubSpeed: 1 + - _NormalSubTiling: 4 + - _NormalTiling: 0.5 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _RAMMode: 1 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.268 + - _ReflectionFresnel: 8 + - _ReflectionLighting: 0 + - _ReflectionStrength: 1 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 0.346 + - _RiverModeOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 3 + - _SlopeSpeed: 1.25 + - _SlopeStretch: 0.491 + - _SlopeStretching: 0.436 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.487 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.974 + - _SunReflectionSize: 0.937 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TranslucencyCurvatureMask: 0.825 + - _TranslucencyExp: 1 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.026 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 1 + - _WaveDistance: 0.679 + - _WaveDistortion: 0.5 + - _WaveFrequency: 1 + - _WaveHeight: 0.274 + - _WaveMaxLayers: 16 + - _WaveNormalStr: 0.9 + - _WaveSpeed: 3 + - _WaveSteepness: 0 + - _WaveTint: 0.1 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0, g: 0.16451614, b: 0.34, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Direction: {r: 0, g: -1, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 0, g: 114.86487, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 2.0000002, g: 3, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 0.46666667} + - _NormalTiling: {r: 0.1, g: 0.05, b: 0, a: 0} + - _ShallowColor: {r: 0, g: 1, b: 0.98136926, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _WaveDirection: {r: 2, g: 1, b: 2, a: 1} + - _WaveFadeDistance: {r: 0, g: 50, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &4759453835961029274 +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: 2 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_River.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_River.mat.meta new file mode 100644 index 00000000..256252c5 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_River.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 37de31e0cff7a6143936661d85112042 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_River.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Smooth.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Smooth.mat new file mode 100644 index 00000000..367c31f0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Smooth.mat @@ -0,0 +1,346 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Smooth + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _DISTANCE_NORMALS + - _INTERSECTION_FOAM + - _NORMALMAP + - _REFRACTION + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SIMPLE_LIGHTING + - _SMOOTH_INTERSECTION + - _VERTEXCOLORWAVEFLATTENING_ON + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.118 + - _CausticsOn: 1 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.12000031 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 0.55 + - _DepthExp: 1 + - _DepthHorizontal: 1 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 6.79 + - _DisableDepthTexture: 0 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.10000002 + - _DstBlend: 0 + - _EdgeFade: 10 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0.824 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 1 + - _FoamClipping: 0 + - _FoamDistortion: 0.1 + - _FoamOn: 0 + - _FoamOpacity: 0.686 + - _FoamSize: 0.058 + - _FoamSpeed: -0.059999995 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.25 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.07930001 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0.663 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 32 + - _IntersectionClipping: 0.175 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 0.5 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 2 + - _IntersectionRippleDist: 64 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.544 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.06999999 + - _IntersectionStyle: 2 + - _IntersectionTiling: 0.3499996 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 1 + - _NormalStrength: 0.225 + - _NormalSubSpeed: -0.8 + - _NormalSubTiling: 0.5 + - _NormalTiling: 0.29999995 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0 + - _ReflectionFresnel: 5 + - _ReflectionFresnelMode: 0 + - _ReflectionLighting: 0 + - _ReflectionStrength: 1 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 0.161 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 0.554 + - _ShoreLineLength: 0 + - _ShoreLineWaveDistance: 23 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 5 + - _SparkleSize: 0.759 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0 + - _SunReflectionPerturbance: 0.386 + - _SunReflectionSize: 0.631 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0 + - _TranslucencyExp: 4 + - _TranslucencyOn: 0 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 1 + - _WaveDistance: 0.944 + - _WaveFrequency: 1 + - _WaveHeight: 0 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0 + - _WaveSpeed: 1 + - _WaveSteepness: 1 + - _WaveTint: 0.033 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0, g: 0.2523394, b: 0.6603774, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: -1, g: -1, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 0, g: 67.37639, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 0.6862745} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0.12156863} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.2, g: 0.2, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 1, b: 0.9905014, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 150, g: 300, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Smooth.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Smooth.mat.meta new file mode 100644 index 00000000..fa678f37 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Smooth.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 99c221ab76521b54ca7e1fb8c0fd7be3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Smooth.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Swamp.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Swamp.mat new file mode 100644 index 00000000..445fcaa0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Swamp.mat @@ -0,0 +1,346 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Swamp + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _DISTANCE_NORMALS + - _INTERSECTION_FOAM + - _NORMALMAP + - _REFRACTION + - _SURFACE_FOAM_SINGLE + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - _DEPTHEXP_ON + - _FOAM + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SURFACE_FOAM + - _VERTEXCOLORWAVEFLATTENING_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: efd0d88edbb048d489c41da8174e6a35, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: b6d3e8158e6f65a4594526663ad7a894, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 1 + - _CausticsChromance: 1 + - _CausticsDistortion: 0 + - _CausticsOn: 0 + - _CausticsSpeed: 0.07000001 + - _CausticsTiling: 0.3 + - _ColorAbsorption: 0.008 + - _CrossPan_IntersectionOn: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _Depth: 0.94 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 16 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 18.7 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0.697 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 0.1 + - _FoamClipping: 0.004 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0.04 + - _FoamOn: 1 + - _FoamOpacity: 0 + - _FoamSize: 0.606 + - _FoamSpeed: 0.001 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.5 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.06999986 + - _FoamTilingDynamic: 0.5 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 8 + - _IntersectionClipping: 0.395 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 1.38 + - _IntersectionRippleDist: 16 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.125 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.06999999 + - _IntersectionStyle: 0 + - _IntersectionTiling: 0.13999975 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 0.14999998 + - _NormalStrength: 0.202 + - _NormalSubSpeed: -0.39999992 + - _NormalSubTiling: 0.5 + - _NormalTiling: -0.78000015 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.907 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0.921 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 0 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.146 + - _ReflectionFresnel: 8 + - _ReflectionLighting: 0 + - _ReflectionStrength: 1 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 0.096 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 0 + - _ShoreLineWaveDistance: 23 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.302 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.879 + - _SunReflectionPerturbance: 0.386 + - _SunReflectionSize: 0.951 + - _SunReflectionStrength: 3 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0.402 + - _TranslucencyExp: 4 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 1 + - _WaveDistance: 0.775 + - _WaveFrequency: 1 + - _WaveHeight: 0.1 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0.1 + - _WaveSpeed: 1 + - _WaveSteepness: 0 + - _WaveTint: 0 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0.035, g: 0.011136363, b: 0, a: 0.9647059} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 0, g: 80, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 0.38823524, g: 0.3811984, b: 0, a: 1} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.5, g: 0.5, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0.29799998, g: 0.094818175, b: 0, a: 0} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: -1, g: -1, b: -1, a: -1} + - _WaveFadeDistance: {r: 26.666674, g: 143.33331, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Swamp.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Swamp.mat.meta new file mode 100644 index 00000000..9935f549 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Swamp.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 973c9b04a35c7254680c406d9c302ce1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Swamp.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Toon.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Toon.mat new file mode 100644 index 00000000..0517f2c3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Toon.mat @@ -0,0 +1,351 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Toon + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _ENVIRONMENTREFLECTIONS_OFF + - _INTERSECTION_FOAM + - _NORMALMAP + - _RECEIVE_SHADOWS_OFF + - _SPECULARHIGHLIGHTS_OFF + - _SURFACE_FOAM_DUAL + - _SURFACE_FOAM_SINGLE + - _UNLIT + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _FOAMDISTANCEON_ON + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SHARP_INERSECTION + - _SURFACE_FOAM + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: a201b1cea6ea07c41a8190e44033bfb0, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: a201b1cea6ea07c41a8190e44033bfb0, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: b6d3e8158e6f65a4594526663ad7a894, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 0 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 0 + - _CausticsBrightness: 1 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.048 + - _CausticsOn: 0 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.26000023 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 0.48 + - _DepthExp: 1 + - _DepthHorizontal: 1 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 0.01 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.5 + - _DistanceNormalsOn: 0 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 16.4 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 0 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 1 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 0.217 + - _FoamClipping: 0.5 + - _FoamDistanceOn: 1 + - _FoamDistortion: 0.34 + - _FoamOn: 1 + - _FoamOpacity: 0.151 + - _FoamSize: 0.771 + - _FoamSpeed: 0.5 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.25 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.1 + - _FoamTilingDynamic: 0.2 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 8 + - _IntersectionClipping: 1 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 0.637 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 2.72 + - _IntersectionRippleDist: 32 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.251 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: -0.05 + - _IntersectionStyle: 1 + - _IntersectionTiling: 0.11000057 + - _IntersectionWaveDist: 41.4 + - _LightingOn: 0 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 0.2 + - _NormalStrength: 0.353 + - _NormalSubSpeed: -0.5 + - _NormalSubTiling: 0.5 + - _NormalTiling: 0.3300001 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 0 + - _ReflectionBlur: 0.013 + - _ReflectionDistortion: 0.075 + - _ReflectionFresnel: 5 + - _ReflectionFresnelMode: 0 + - _ReflectionLighting: 0 + - _ReflectionStrength: 0.817 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 0 + - _RefractionStrength: 0.037 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 1.3 + - _ShoreLineWaveDistance: 12 + - _ShoreLineWaveStr: 0.386 + - _SimpleLighting: 0 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 5 + - _SparkleSize: 0.78 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 0 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.49 + - _SunReflectionPerturbance: 1 + - _SunReflectionSize: 0.122 + - _SunReflectionStrength: 0 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 1 + - _Texture_IntersectionOn: 0 + - _Tiling: 0.5 + - _Translucency: 0.06 + - _TranslucencyCurvatureMask: 0 + - _TranslucencyExp: 4 + - _TranslucencyOn: 0 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.679 + - _WaveFrequency: 1 + - _WaveHeight: 0.47 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0 + - _WaveSpeed: 2 + - _WaveSteepness: 5 + - _WaveTint: 0.1 + - _WavesOn: 0 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0, g: 0.16451614, b: 0.34, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 10, g: 118.15793, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 300, g: 0.25, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0.15} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.2, g: 0.2, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 1, b: 0.98136926, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 150, g: 300, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Toon.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Toon.mat.meta new file mode 100644 index 00000000..17d47582 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Toon.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: fcf1aac0ecc2b9c4caec5df34421a231 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Toon.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_ToxicGoop.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_ToxicGoop.mat new file mode 100644 index 00000000..b9a26afa --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_ToxicGoop.mat @@ -0,0 +1,348 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_ToxicGoop + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ENVIRONMENTREFLECTIONS_OFF + - _INTERSECTION_FOAM + - _NORMALMAP + - _RECEIVE_SHADOWS_OFF + - _SURFACE_FOAM_SINGLE + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SIMPLE_LIGHTING + - _SURFACE_FOAM + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: b6d3e8158e6f65a4594526663ad7a894, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: b6d3e8158e6f65a4594526663ad7a894, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.047 + - _CausticsOn: 0 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.5 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 0.94 + - _DepthExp: 1 + - _DepthHorizontal: 1 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 4 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 0 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 18.7 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 0 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0.819 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 0.1 + - _FoamClipping: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0.1 + - _FoamOn: 1 + - _FoamOpacity: 0.104 + - _FoamSize: 0.01 + - _FoamSpeed: 0.050000012 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.02 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.09999993 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 7.1 + - _IntersectionClipping: 0.605 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 0.816 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 0.75 + - _IntersectionRippleDist: 32 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.244 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.06999999 + - _IntersectionStyle: 0 + - _IntersectionTiling: 0.43999973 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 0.2 + - _NormalStrength: 0.048 + - _NormalSubSpeed: -0.8 + - _NormalSubTiling: 0.5 + - _NormalTiling: -0.48000008 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 0 + - _ReflectionBlur: 0.04 + - _ReflectionDistortion: 0.0467 + - _ReflectionFresnel: 5 + - _ReflectionLighting: 0 + - _ReflectionStrength: 0.138 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 0 + - _RefractionStrength: 1 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 0 + - _ShadowStrength: 1 + - _ShoreLineLength: 0 + - _ShoreLineWaveDistance: 23 + - _ShoreLineWaveStr: 1 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 2 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.302 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 1.18 + - _SunReflectionPerturbance: 0.386 + - _SunReflectionSize: 1 + - _SunReflectionStrength: 1 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0 + - _TranslucencyExp: 4 + - _TranslucencyOn: 0 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.46 + - _WaveFrequency: 1 + - _WaveHeight: 0.04 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 0.11 + - _WaveSpeed: 2.3999996 + - _WaveSteepness: 0 + - _WaveTint: 0.015 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0.02764976, g: 0.5, b: 0, a: 0.9647059} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 300, g: 0.25, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 0.96274704, g: 1, b: 0.22169805, a: 0.078431375} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0, g: 0, b: 0, a: 0.5529412} + - _IntersectionColor: {r: 0.16041833, g: 3.031433, b: 0, a: 0.9647059} + - _NormalTiling: {r: 0.3, g: 0.3, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0.20392157, g: 0.7490196, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: -1, g: -1, b: -1, a: -1} + - _WaveFadeDistance: {r: 150, g: 300, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_ToxicGoop.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_ToxicGoop.mat.meta new file mode 100644 index 00000000..a4398653 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_ToxicGoop.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: e49bb378b39a3e8488666e25804d6c32 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_ToxicGoop.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Waterfall.mat b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Waterfall.mat new file mode 100644 index 00000000..14ef44f4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Waterfall.mat @@ -0,0 +1,296 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Waterfall + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _DISTANCE_NORMALS + - _NORMALMAP + - _REFRACTION + - _RIVER + - _SURFACE_FOAM + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _SMOOTH_INTERSECTION + - _VERTEXCOLORDEPTH_ON + - _VERTEXCOLORFOAM_ON + - _VERTEXCOLORTRANSPARENCY_ON + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: d63a31f28f34eae4ebc27e00a9799433, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: efd0d88edbb048d489c41da8174e6a35, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 2800000, guid: e7124ab7f8f2b28478921aa8a615ebc0, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 7705156529211f14995762ef939f6cfa, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + 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} + - _WaveProfile: + m_Texture: {fileID: 5393152077581806659, guid: b01535463a9772945b0085c0ee54e1bf, type: 2} + 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: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _CausticsBrightness: 5 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.418 + - _CausticsOn: 0 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.1 + - _ColorAbsorption: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _Depth: 2.07 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthVertical: 2.31 + - _DisableDepthTexture: 0 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 3 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FoamBaseAmount: 0.006 + - _FoamBubblesSpread: 2 + - _FoamBubblesStrength: 0 + - _FoamClipping: 0 + - _FoamDistortion: 0 + - _FoamOn: 1 + - _FoamSize: 0.045 + - _FoamSpeed: 1 + - _FoamSpeedDynamic: 0 + - _FoamStrength: 1 + - _FoamSubSpeed: 0.1 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 1 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.20000002 + - _FoamTilingDynamic: 0.4 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 0 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 7.7 + - _IntersectionClipping: 0.166 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 0.355 + - _IntersectionFoamOn: 0 + - _IntersectionLength: 1.48 + - _IntersectionRippleDist: 64 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0 + - _IntersectionSharp: 1 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.01 + - _IntersectionStyle: 2 + - _IntersectionTiling: 0.4 + - _LightingOn: 1 + - _Metallic: 0 + - _NormalMapOn: 1 + - _NormalSpeed: 1 + - _NormalStrength: 0.169 + - _NormalSubSpeed: 0.58000004 + - _NormalSubTiling: 0.8 + - _NormalTiling: 0.5 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _RAMMode: 1 + - _ReceiveDynamicEffects: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0 + - _ReflectionFresnel: 6 + - _ReflectionLighting: 0 + - _ReflectionStrength: 1 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 1 + - _RiverModeOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 35 + - _SlopeFoam: 0.73 + - _SlopeSpeed: 6 + - _SlopeStretch: 0.491 + - _SlopeStretching: 0.436 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.487 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 2 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.49 + - _SunReflectionSize: 0.927 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TranslucencyCurvatureMask: 0.723 + - _TranslucencyExp: 4 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.026 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 1 + - _VertexColorTransparency: 1 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.679 + - _WaveDistortion: 0.5 + - _WaveFrequency: 1 + - _WaveHeight: 0.298 + - _WaveMaxLayers: 16 + - _WaveNormalStr: 6 + - _WaveSpeed: 1 + - _WaveSteepness: 0 + - _WaveTint: 0 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 0 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0, g: 0.25504225, b: 0.5283019, a: 0.84313726} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Direction: {r: 0, g: -1, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 0, g: 114.86487, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 2.0000002, g: 3, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.05, b: 0, a: 0} + - _HorizonColor: {r: 0.68, g: 1, b: 0.99, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 0.46666667} + - _NormalTiling: {r: 0.2, g: 0.2, b: 0, a: 0} + - _ShallowColor: {r: 0, g: 1, b: 0.98136926, a: 0} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _WaveDirection: {r: 2, g: 1, b: 2, a: 1} + - _WaveFadeDistance: {r: 0, g: 50, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &4759453835961029274 +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: 2 diff --git a/Assets/External/Stylized Water 3/Materials/StylizedWater3_Waterfall.mat.meta b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Waterfall.mat.meta new file mode 100644 index 00000000..6d965d99 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/StylizedWater3_Waterfall.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 9092099d429920d49818f373c515b36d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/StylizedWater3_Waterfall.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures.meta b/Assets/External/Stylized Water 3/Materials/Textures.meta new file mode 100644 index 00000000..9e21e989 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cb27415c7e6bcd648b560df1b422bdab +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Caustics.meta b/Assets/External/Stylized Water 3/Materials/Textures/Caustics.meta new file mode 100644 index 00000000..64189ab5 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Caustics.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f8f6eee0fd47c1469bc1af27c957ba6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_1.png b/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_1.png new file mode 100644 index 00000000..3867d469 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ee89d55472ae3e52f6bd7814dd97dfd7eb1c11eaf114f82f345c331777fc05c +size 892209 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_1.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_1.png.meta new file mode 100644 index 00000000..275740e2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_1.png.meta @@ -0,0 +1,163 @@ +fileFormatVersion: 2 +guid: 6a6111d7c04a2aa41a70e3595cc26c9c +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: 4 + 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: 4 + 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: 4 + 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 + - serializedVersion: 4 + buildTarget: Android + 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: 4 + buildTarget: WebGL + 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: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_1.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_2.png b/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_2.png new file mode 100644 index 00000000..6083afe3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:158eae6d2386de36e413ff430d1630ab6b0b8be43d942072e4f251ceca241070 +size 1169839 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_2.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_2.png.meta new file mode 100644 index 00000000..143444ee --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_2.png.meta @@ -0,0 +1,163 @@ +fileFormatVersion: 2 +guid: 4a228663f34027f4689410ae3c8974cc +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: 1 + 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: 4 + 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: 4 + 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: 4 + 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 + - serializedVersion: 4 + buildTarget: Android + 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: 4 + buildTarget: WebGL + 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: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Caustics/Caustics_2.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam.meta b/Assets/External/Stylized Water 3/Materials/Textures/Foam.meta new file mode 100644 index 00000000..61e09cbc --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98cf759f3fddad6409eeb64493098da2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/DirectionalFoam.png b/Assets/External/Stylized Water 3/Materials/Textures/Foam/DirectionalFoam.png new file mode 100644 index 00000000..955a85db --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/DirectionalFoam.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed771414581c380963d2b9c2739783ce4a0e46812b7cf2de187147abe98ced7b +size 1349130 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/DirectionalFoam.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Foam/DirectionalFoam.png.meta new file mode 100644 index 00000000..1966873e --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/DirectionalFoam.png.meta @@ -0,0 +1,141 @@ +fileFormatVersion: 2 +guid: 7705156529211f14995762ef939f6cfa +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 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 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Foam/DirectionalFoam.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam1.png b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam1.png new file mode 100644 index 00000000..61e9738d --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f75f9ac860bff2c2ad0e480bea5f7bedee842ca06535a02f64f89dfae598692d +size 558337 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam1.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam1.png.meta new file mode 100644 index 00000000..0410bc05 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam1.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: 743c4d2b8fe20124f9260175ab718f33 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam1.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam2.png b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam2.png new file mode 100644 index 00000000..51c27e17 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e66f627f1f92ab6bc3cb3f062fe2674314ec7559e7840f9266e06c3e5673cf9e +size 235073 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam2.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam2.png.meta new file mode 100644 index 00000000..f63c7e36 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam2.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 9534f81a954a3d14c95686d6a41fb760 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Foam/Foam2.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/FoamSea.png b/Assets/External/Stylized Water 3/Materials/Textures/Foam/FoamSea.png new file mode 100644 index 00000000..1d38b8bd --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/FoamSea.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64a135a2fcbe37b1990e7a5b8324944a2d5ba71fcd0bfa07772d4ed2d2b7f4e5 +size 616241 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/FoamSea.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Foam/FoamSea.png.meta new file mode 100644 index 00000000..ee352f12 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/FoamSea.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: f8c7522379eccbf46bb5473bd771e5cd +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 1 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 0 + mipMapFadeDistanceEnd: 10 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Foam/FoamSea.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/Intersection_Foam.png b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Intersection_Foam.png new file mode 100644 index 00000000..de67849c --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Intersection_Foam.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65f0c80fc83051ea9ab8b2b948cd0fa7603519383b2e62285216601261dd5df0 +size 744442 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/Intersection_Foam.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Intersection_Foam.png.meta new file mode 100644 index 00000000..f5f1a291 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/Intersection_Foam.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: a43bae8641b0ea945b082b20b9315df3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Foam/Intersection_Foam.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/OceanFoam.png b/Assets/External/Stylized Water 3/Materials/Textures/Foam/OceanFoam.png new file mode 100644 index 00000000..35a216a3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/OceanFoam.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e0696ca47bc28b12e6a5a1f05e5bada01be7f2df13df5e10d7d1d583939a7d7 +size 1132920 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/OceanFoam.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Foam/OceanFoam.png.meta new file mode 100644 index 00000000..f4a59318 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/OceanFoam.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 3e077aa5fc0874b47891360fed563111 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Foam/OceanFoam.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/ShoreFoam.png b/Assets/External/Stylized Water 3/Materials/Textures/Foam/ShoreFoam.png new file mode 100644 index 00000000..55a7fedb --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/ShoreFoam.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e453be43c328c4e703a5b5d65299a95811ee149122f641fd634054aaad328bdb +size 1949111 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/ShoreFoam.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Foam/ShoreFoam.png.meta new file mode 100644 index 00000000..d339cf55 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/ShoreFoam.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 32fb2a74f62ae034da5e460b17d43393 +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: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 4096 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Foam/ShoreFoam.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/WindwakerFoam.png b/Assets/External/Stylized Water 3/Materials/Textures/Foam/WindwakerFoam.png new file mode 100644 index 00000000..67c5e407 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/WindwakerFoam.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80f4a4fa395e8dc9c21dbdfd10359a8aed810274e83d114bcc58a234c90e236d +size 490035 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Foam/WindwakerFoam.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Foam/WindwakerFoam.png.meta new file mode 100644 index 00000000..ef4f6bc8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Foam/WindwakerFoam.png.meta @@ -0,0 +1,163 @@ +fileFormatVersion: 2 +guid: a201b1cea6ea07c41a8190e44033bfb0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.8 + 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: 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: 0 + swizzle: 50462976 + cookieLightType: 1 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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: 4 + buildTarget: Nintendo Switch + 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: 4 + buildTarget: Android + 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: 4 + buildTarget: WebGL + 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: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Foam/WindwakerFoam.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/IntersectionNoise.png b/Assets/External/Stylized Water 3/Materials/Textures/IntersectionNoise.png new file mode 100644 index 00000000..309dfe70 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/IntersectionNoise.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:451267b89684405511cdcac2eda4d82a99117ad318c642099dd7a2f33d845ca3 +size 61550 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/IntersectionNoise.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/IntersectionNoise.png.meta new file mode 100644 index 00000000..9219ccb6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/IntersectionNoise.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: b6d3e8158e6f65a4594526663ad7a894 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/IntersectionNoise.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals.meta b/Assets/External/Stylized Water 3/Materials/Textures/Normals.meta new file mode 100644 index 00000000..5f467052 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ba0317b5a42476849a94afe194b8169f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/LowpolyWaves.png b/Assets/External/Stylized Water 3/Materials/Textures/Normals/LowpolyWaves.png new file mode 100644 index 00000000..6e736b88 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/LowpolyWaves.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48d70af05484c8f8a151b157c75cd73ef86516159fab402e3e143cdfc87ddedc +size 195091 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/LowpolyWaves.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Normals/LowpolyWaves.png.meta new file mode 100644 index 00000000..1b98005a --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/LowpolyWaves.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 1a9f5604a68a49c489e90410796483a1 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Normals/LowpolyWaves.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/OceanWaves.png b/Assets/External/Stylized Water 3/Materials/Textures/Normals/OceanWaves.png new file mode 100644 index 00000000..a52844bc --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/OceanWaves.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25abe3801e28200a718a08032f7c774f2e7464d846f5155ed89611d7d94f8cf3 +size 1160217 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/OceanWaves.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Normals/OceanWaves.png.meta new file mode 100644 index 00000000..6930e4d8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/OceanWaves.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: e7c16e3bea1797d47872d220cc899f32 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Normals/OceanWaves.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/RoughWaves.png b/Assets/External/Stylized Water 3/Materials/Textures/Normals/RoughWaves.png new file mode 100644 index 00000000..5b9efc4b --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/RoughWaves.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1e631c1ee31bd4a5d86b998dc5c05ba3a4fe2107a8eac5d77af140faa28cb08 +size 1167803 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/RoughWaves.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Normals/RoughWaves.png.meta new file mode 100644 index 00000000..269e0797 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/RoughWaves.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: efd0d88edbb048d489c41da8174e6a35 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 4 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Normals/RoughWaves.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/SharpWaves.png b/Assets/External/Stylized Water 3/Materials/Textures/Normals/SharpWaves.png new file mode 100644 index 00000000..5516125e --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/SharpWaves.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e2367cf45e9c9e318dce5b554b0f28eebea14090034ab20176d76647aab8e27 +size 747417 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/SharpWaves.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Normals/SharpWaves.png.meta new file mode 100644 index 00000000..47fa5c8a --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/SharpWaves.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: d63a31f28f34eae4ebc27e00a9799433 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 4 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Normals/SharpWaves.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/SmoothWaves.png b/Assets/External/Stylized Water 3/Materials/Textures/Normals/SmoothWaves.png new file mode 100644 index 00000000..4d9580cb --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/SmoothWaves.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fe63002b7f87c275045d03cd241752ec81b3f14b71777c4d59b43fa1cd273d1 +size 622344 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/SmoothWaves.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Normals/SmoothWaves.png.meta new file mode 100644 index 00000000..e89aaeb3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/SmoothWaves.png.meta @@ -0,0 +1,139 @@ +fileFormatVersion: 2 +guid: c94169d55087aee43a4ebd71c975f082 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 1 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 0 + mipMapFadeDistanceEnd: 7 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 4 + mipBias: -100 + 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 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Normals/SmoothWaves.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/StreamWaves.png b/Assets/External/Stylized Water 3/Materials/Textures/Normals/StreamWaves.png new file mode 100644 index 00000000..cef7bd98 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/StreamWaves.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:041b5e3d8281299b6c2dddebd52211dde2f20fa91043ef25658c8f88a5efadde +size 779557 diff --git a/Assets/External/Stylized Water 3/Materials/Textures/Normals/StreamWaves.png.meta b/Assets/External/Stylized Water 3/Materials/Textures/Normals/StreamWaves.png.meta new file mode 100644 index 00000000..016ceabd --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/Textures/Normals/StreamWaves.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: e7124ab7f8f2b28478921aa8a615ebc0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 4 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/Textures/Normals/StreamWaves.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Materials/WaterCutoutMask.mat b/Assets/External/Stylized Water 3/Materials/WaterCutoutMask.mat new file mode 100644 index 00000000..5f7042e6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/WaterCutoutMask.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: WaterCutoutMask + m_Shader: {fileID: 4800000, guid: 762e7e7f839e8f64b94faf1669178a2a, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Ints: [] + m_Floats: [] + m_Colors: [] + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/Materials/WaterCutoutMask.mat.meta b/Assets/External/Stylized Water 3/Materials/WaterCutoutMask.mat.meta new file mode 100644 index 00000000..d220c19c --- /dev/null +++ b/Assets/External/Stylized Water 3/Materials/WaterCutoutMask.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 1353455c90a2e5e4381c88fb02d05deb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Materials/WaterCutoutMask.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Models.meta b/Assets/External/Stylized Water 3/Models.meta new file mode 100644 index 00000000..78c599ab --- /dev/null +++ b/Assets/External/Stylized Water 3/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e1adca58f342db8468aff1cdb811fa79 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Models/HighPoly_Circle.watermesh b/Assets/External/Stylized Water 3/Models/HighPoly_Circle.watermesh new file mode 100644 index 00000000..e69de29b diff --git a/Assets/External/Stylized Water 3/Models/HighPoly_Circle.watermesh.meta b/Assets/External/Stylized Water 3/Models/HighPoly_Circle.watermesh.meta new file mode 100644 index 00000000..1e5d40a2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/HighPoly_Circle.watermesh.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: c9ad0c55db9f7c74db54b72a6094c53e +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: b045ca0db52e8094dbdc7923faa70590, type: 3} + waterMesh: + shape: 1 + scale: 100 + vertexDistance: 1 + UVTiling: 1 + noise: 0 + boundsPadding: 4 + mesh: {fileID: -8670151273213183110, guid: c9ad0c55db9f7c74db54b72a6094c53e, type: 3} +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Models/HighPoly_Circle.watermesh + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Models/HighPoly_Plane.watermesh b/Assets/External/Stylized Water 3/Models/HighPoly_Plane.watermesh new file mode 100644 index 00000000..e69de29b diff --git a/Assets/External/Stylized Water 3/Models/HighPoly_Plane.watermesh.meta b/Assets/External/Stylized Water 3/Models/HighPoly_Plane.watermesh.meta new file mode 100644 index 00000000..3856a50b --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/HighPoly_Plane.watermesh.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: d0abf58b1088fc044aaa6d97c5d51d65 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: b045ca0db52e8094dbdc7923faa70590, type: 3} + waterMesh: + shape: 0 + scale: 100 + vertexDistance: 1 + UVTiling: 1 + noise: 0 + boundsPadding: 4 + mesh: {instanceID: 0} +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Models/HighPoly_Plane.watermesh + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Models/HighPoly_Plane_wNoise.watermesh b/Assets/External/Stylized Water 3/Models/HighPoly_Plane_wNoise.watermesh new file mode 100644 index 00000000..e69de29b diff --git a/Assets/External/Stylized Water 3/Models/HighPoly_Plane_wNoise.watermesh.meta b/Assets/External/Stylized Water 3/Models/HighPoly_Plane_wNoise.watermesh.meta new file mode 100644 index 00000000..8452981f --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/HighPoly_Plane_wNoise.watermesh.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: 9979978e3b4173741899050455273ae1 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: b045ca0db52e8094dbdc7923faa70590, type: 3} + waterMesh: + shape: 0 + scale: 100 + vertexDistance: 1 + UVTiling: 1 + noise: 0.5 + boundsPadding: 4 + mesh: {fileID: -8670151273213183110, guid: 9979978e3b4173741899050455273ae1, type: 3} +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Models/HighPoly_Plane_wNoise.watermesh + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Models/LowPoly_Plane.watermesh b/Assets/External/Stylized Water 3/Models/LowPoly_Plane.watermesh new file mode 100644 index 00000000..e69de29b diff --git a/Assets/External/Stylized Water 3/Models/LowPoly_Plane.watermesh.meta b/Assets/External/Stylized Water 3/Models/LowPoly_Plane.watermesh.meta new file mode 100644 index 00000000..ec53cca4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/LowPoly_Plane.watermesh.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: 8d49667ce8580d64184c2df696d1a2e0 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: b045ca0db52e8094dbdc7923faa70590, type: 3} + waterMesh: + shape: 0 + scale: 100 + vertexDistance: 8 + UVTiling: 1 + noise: 0 + boundsPadding: 4 + mesh: {fileID: -8670151273213183110, guid: 8d49667ce8580d64184c2df696d1a2e0, type: 3} +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Models/LowPoly_Plane.watermesh + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Models/Ocean.fbx b/Assets/External/Stylized Water 3/Models/Ocean.fbx new file mode 100644 index 00000000..c64ad0da --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/Ocean.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82ed394fb4af8ffb030254ae493773c93c9e4f33286f6195fbed3b336af68f19 +size 2221728 diff --git a/Assets/External/Stylized Water 3/Models/Ocean.fbx.meta b/Assets/External/Stylized Water 3/Models/Ocean.fbx.meta new file mode 100644 index 00000000..1e252ddf --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/Ocean.fbx.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 3e891ca55892efb42a6b5239bc6eb740 +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + 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: + - 0.25 + - 0.125 + - 0.0625 + - 0.03125 + - 0.015625 + - 0.0078125 + - 0.00390625 + - 0.01 + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 0 + importPhysicalCameras: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + 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: 0 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 2 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 0 + 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: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 0 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Models/Ocean.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Models/Puddles.fbx b/Assets/External/Stylized Water 3/Models/Puddles.fbx new file mode 100644 index 00000000..8f5bd398 --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/Puddles.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bda52c1882bc9a117faf42682f4aca3547a51de41a1d219fcb4d0b50bbebd08b +size 34848 diff --git a/Assets/External/Stylized Water 3/Models/Puddles.fbx.meta b/Assets/External/Stylized Water 3/Models/Puddles.fbx.meta new file mode 100644 index 00000000..cd23575f --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/Puddles.fbx.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: 6697d61bcb1534c4d9d1e6475570cdb5 +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + 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: 0 + importPhysicalCameras: 1 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + 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: 0 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 0 + 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: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 0 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Models/Puddles.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Models/SW3_ParticleMeshes.fbx b/Assets/External/Stylized Water 3/Models/SW3_ParticleMeshes.fbx new file mode 100644 index 00000000..0086103b --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/SW3_ParticleMeshes.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81c584d484d2a32de958bff97130fce65440bdd79757a3e47c2c8f2abe10f640 +size 31056 diff --git a/Assets/External/Stylized Water 3/Models/SW3_ParticleMeshes.fbx.meta b/Assets/External/Stylized Water 3/Models/SW3_ParticleMeshes.fbx.meta new file mode 100644 index 00000000..08a4c810 --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/SW3_ParticleMeshes.fbx.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 6fbce338415d37248b29a243058d0852 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 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 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 0 + 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 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Models/SW3_ParticleMeshes.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Models/Waterfalls.fbx b/Assets/External/Stylized Water 3/Models/Waterfalls.fbx new file mode 100644 index 00000000..12c21ce8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/Waterfalls.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e25456a0a682e3864760f0a7274347523ded26e756623c3faf82f2b53aa48b14 +size 554381 diff --git a/Assets/External/Stylized Water 3/Models/Waterfalls.fbx.meta b/Assets/External/Stylized Water 3/Models/Waterfalls.fbx.meta new file mode 100644 index 00000000..048ea653 --- /dev/null +++ b/Assets/External/Stylized Water 3/Models/Waterfalls.fbx.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: 354b29cfcab479a44873cad6c4ec43af +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + 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: 1 + 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: 0 + 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: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Models/Waterfalls.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs.meta b/Assets/External/Stylized Water 3/Prefabs.meta new file mode 100644 index 00000000..580694e1 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0282e4efc99634549adb765496556463 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals.meta b/Assets/External/Stylized Water 3/Prefabs/Decals.meta new file mode 100644 index 00000000..0f33ed23 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9084070dfa3cdfb4dafedffb74360d87 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals/Water Decal Foam.prefab b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Decal Foam.prefab new file mode 100644 index 00000000..bfac24a8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Decal Foam.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03e580c98e70aad7dbf07e4b78afa387448ec3d1ef0587732af2fa7addc836a5 +size 2686 diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals/Water Decal Foam.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Decal Foam.prefab.meta new file mode 100644 index 00000000..12856a18 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Decal Foam.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: bf49f41d904ac484593a36902f1b3dbd +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Decals/Water Decal Foam.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals/Water Lillypads.prefab b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Lillypads.prefab new file mode 100644 index 00000000..aea433ce --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Lillypads.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aea70ad27a7fc19f0a0907f9a004af33086a5b9437a9520f08a7049813f0a4f5 +size 2678 diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals/Water Lillypads.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Lillypads.prefab.meta new file mode 100644 index 00000000..525ca6c1 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Lillypads.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 6a0715bd1d6c8d94dad07e127e85a18e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Decals/Water Lillypads.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Slick.prefab b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Slick.prefab new file mode 100644 index 00000000..9ef783ca --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Slick.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:990eb76e2de6c7517d6d7debb0fb621b7ecb264e81748ca816c063e7f4021770 +size 2637 diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Slick.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Slick.prefab.meta new file mode 100644 index 00000000..dae4e5e8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Slick.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 6d8e1332d84ef3546bcc245f8f126e34 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Slick.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Spill.prefab b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Spill.prefab new file mode 100644 index 00000000..0b527207 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Spill.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cc58bfc6969f5451bc445f59e837b026bc45f4b4e2fa027916115fb70d1ce2e +size 2662 diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Spill.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Spill.prefab.meta new file mode 100644 index 00000000..ed9093dc --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Spill.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 8414e281f3997354c85310945087566c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Decals/Water Oil Spill.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals/Water Reticle.prefab b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Reticle.prefab new file mode 100644 index 00000000..237f7399 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Reticle.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01fe60a6b51a7ed914ccbf6d89d50b44e9688601817b6e163425fcba20127f43 +size 2660 diff --git a/Assets/External/Stylized Water 3/Prefabs/Decals/Water Reticle.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Reticle.prefab.meta new file mode 100644 index 00000000..83f45a05 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Decals/Water Reticle.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 48ca8a96779e36641904c6bccc998484 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Decals/Water Reticle.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles.meta b/Assets/External/Stylized Water 3/Prefabs/Particles.meta new file mode 100644 index 00000000..144eb42d --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 485d93d1a8c4d60478388e80e7105883 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/BigSplash.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/BigSplash.prefab new file mode 100644 index 00000000..8f291b56 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/BigSplash.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6f52561db6d363603fa40b26fdd032e5b8278c7cce8d30fe3b1b5cccac260a9 +size 141146 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/BigSplash.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/BigSplash.prefab.meta new file mode 100644 index 00000000..5376a5f3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/BigSplash.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ade152f810abc93439076107c5a46d15 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/BigSplash.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/RiverMouth.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/RiverMouth.prefab new file mode 100644 index 00000000..dccdf63e --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/RiverMouth.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6e8c1facca0fcb25cde4e19487b6b518f990655056ac7fd1ad287d0a4006401 +size 122090 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/RiverMouth.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/RiverMouth.prefab.meta new file mode 100644 index 00000000..decbc7cb --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/RiverMouth.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: bcd6e808985540c4886879a7706a0264 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/RiverMouth.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Stationairy.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Stationairy.prefab new file mode 100644 index 00000000..a200d86c --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Stationairy.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6b9a9b22e5220da313d31845608bc71c82ba27f6620f2b6ba4c0e8bc45cf8ac +size 121485 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Stationairy.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Stationairy.prefab.meta new file mode 100644 index 00000000..d24d736e --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Stationairy.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 16f7c67d6d5776347aeb12eef6994e97 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Stationairy.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Trail.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Trail.prefab new file mode 100644 index 00000000..f55e4d42 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Trail.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44f93e9f53f310667c71fd15fa83ea66bcbdecf582382b4db66e546550eb33fd +size 119817 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Trail.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Trail.prefab.meta new file mode 100644 index 00000000..2a9f6518 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Trail.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 3805eb8127540b741ad3d8bc6eb5bac4 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/WaterRipples_Trail.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Collision.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Collision.prefab new file mode 100644 index 00000000..e6d6c801 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Collision.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:052eacbb5342b5b4689137ad76a36d1423ec492c1e776c937e1eeae92b7e50d5 +size 122969 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Collision.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Collision.prefab.meta new file mode 100644 index 00000000..a8dfe4d9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Collision.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 7076e8bc57af4294aa0434b988182b41 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Collision.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Ring.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Ring.prefab new file mode 100644 index 00000000..c2938801 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Ring.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3175c3e0e2ed5a0773ad46eb85add9e997978bf091446fb7da1898d3aa3b148d +size 123041 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Ring.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Ring.prefab.meta new file mode 100644 index 00000000..37981f9c --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Ring.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: f0a8d7609e0344f4ea8a18845131726a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Ring.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_SeaCliffCollision.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_SeaCliffCollision.prefab new file mode 100644 index 00000000..b956c242 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_SeaCliffCollision.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b112ff252af2449b9e53c71891983c14d283c1bf6254a4290e24dd0dd47d261 +size 123610 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_SeaCliffCollision.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_SeaCliffCollision.prefab.meta new file mode 100644 index 00000000..6d853fc5 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_SeaCliffCollision.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: f7eacdaeb1a3a1042ae6df3deab80745 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_SeaCliffCollision.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Trail.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Trail.prefab new file mode 100644 index 00000000..05aac813 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Trail.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a1668e77c64cf3f626a69bd45ecb10a01047a4fcaa475972e49b8b7d095de8d +size 122615 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Trail.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Trail.prefab.meta new file mode 100644 index 00000000..df953415 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Trail.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 0b6c31bf05d4beb49aadcd00b304889c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Trail.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Up.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Up.prefab new file mode 100644 index 00000000..69656fb2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Up.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2bb2ce64fb94bd85102a3833dbf9a534ed193c379c0101a26e837e5d2d6d616 +size 122948 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Up.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Up.prefab.meta new file mode 100644 index 00000000..e12ba768 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Up.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 7a73ff93c1382424e8cc2351625e84ce +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/WaterSplash_Up.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Edge.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Edge.prefab new file mode 100644 index 00000000..8576de5f --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Edge.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:472274242d97b4f349c8df91e65f669bc8e446247b717adf9d7798e580500eb7 +size 122110 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Edge.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Edge.prefab.meta new file mode 100644 index 00000000..7b919b5d --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Edge.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ff7c56331a536ce4880bd8915c4ea87e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Edge.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Impact Splashes.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Impact Splashes.prefab new file mode 100644 index 00000000..0eb9d130 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Impact Splashes.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e83b8b6e7e97aac2502227af9ef99a2babc60557c4a8db6e9df5179a671e3489 +size 122397 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Impact Splashes.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Impact Splashes.prefab.meta new file mode 100644 index 00000000..e68a18a6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Impact Splashes.prefab.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: acd0d4efdd88b284981860591316f7c7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/Waterfall Impact + Splashes.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterfallMist.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterfallMist.prefab new file mode 100644 index 00000000..8bd1d5db --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterfallMist.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25e9d61addcc35097bef64a3ce70530463e3e3fe41fd123ad87dc8214f2d638c +size 122129 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/WaterfallMist.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterfallMist.prefab.meta new file mode 100644 index 00000000..e5b47427 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/WaterfallMist.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 808afbe750942614e8ab0efbd8656b3d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/WaterfallMist.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/Wave Crest Splash.prefab b/Assets/External/Stylized Water 3/Prefabs/Particles/Wave Crest Splash.prefab new file mode 100644 index 00000000..764a174c --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/Wave Crest Splash.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aee60c735135a518aea6fd5992699c0192027c797671eb1bf097d6bfbbc072ef +size 123269 diff --git a/Assets/External/Stylized Water 3/Prefabs/Particles/Wave Crest Splash.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Particles/Wave Crest Splash.prefab.meta new file mode 100644 index 00000000..09894157 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Particles/Wave Crest Splash.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 30e0dd992113fda4dbbd5f5080f2237c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Particles/Wave Crest Splash.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Puddles.meta b/Assets/External/Stylized Water 3/Prefabs/Puddles.meta new file mode 100644 index 00000000..4d631c19 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Puddles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 52311a557d01b8d4b8f6887a776a4ad1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Cluster.prefab b/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Cluster.prefab new file mode 100644 index 00000000..ed3de5d2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Cluster.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45e5ca854801d19d954566712423f864dcda881d79298abfef9db9868aea1985 +size 4630 diff --git a/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Cluster.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Cluster.prefab.meta new file mode 100644 index 00000000..c2d06dd2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Cluster.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: c9a1ecfc7d51ea648baf1745315d2acb +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Cluster.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Large.prefab b/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Large.prefab new file mode 100644 index 00000000..47c692cc --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Large.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e1b00b00980d524f89e1d7f970e572dfd49103030b813c1979097d306c3954a +size 3310 diff --git a/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Large.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Large.prefab.meta new file mode 100644 index 00000000..db920573 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Large.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 7f78ee568b35f9e44baafa1c00f40a0c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Puddles/Puddle_Large.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/StylizedWater3_Ocean.prefab b/Assets/External/Stylized Water 3/Prefabs/StylizedWater3_Ocean.prefab new file mode 100644 index 00000000..17207735 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/StylizedWater3_Ocean.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2eb7cad7afcbe40396fd08717e7f6234256343dbd0068553bdf6c18975ec9f6d +size 102353 diff --git a/Assets/External/Stylized Water 3/Prefabs/StylizedWater3_Ocean.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/StylizedWater3_Ocean.prefab.meta new file mode 100644 index 00000000..9ca224fc --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/StylizedWater3_Ocean.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 3b290065ab77e714d91b7f9e02c830d7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/StylizedWater3_Ocean.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Desktop.prefab b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Desktop.prefab new file mode 100644 index 00000000..ad3b3838 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Desktop.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f4bfd7523456caf6e8aed4bdf2ab67a261fa88394d619d1a8232aa22ad060e3 +size 2958 diff --git a/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Desktop.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Desktop.prefab.meta new file mode 100644 index 00000000..62997a95 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Desktop.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 4ce092e6a855a4341a9996f2660925ee +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/StylizedWater_Desktop.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Lowpoly.prefab b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Lowpoly.prefab new file mode 100644 index 00000000..637852a9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Lowpoly.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a477e752c827d64a2881e9bf541b0c9ad3afb09b13325c1e23f8923ad21d3fd +size 2958 diff --git a/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Lowpoly.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Lowpoly.prefab.meta new file mode 100644 index 00000000..16f8fa58 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Lowpoly.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 8cff76e430d68eb42bab59f8f938e15b +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/StylizedWater_Lowpoly.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Mobile.prefab b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Mobile.prefab new file mode 100644 index 00000000..ef3b43d4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Mobile.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:674d35bd60a206798ad919463a33d83a760d9f81f2d932a7cf056790b5e7f35e +size 2957 diff --git a/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Mobile.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Mobile.prefab.meta new file mode 100644 index 00000000..2e4c369e --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Mobile.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: c7d897a0d19c2dd4f97bd1765746ea62 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/StylizedWater_Mobile.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Toon.prefab b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Toon.prefab new file mode 100644 index 00000000..b55b272d --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Toon.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6404876eb0a9ac16852b6ece8b8af802c471f2bad5b78ecb1dd3982ff84bde7c +size 2955 diff --git a/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Toon.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Toon.prefab.meta new file mode 100644 index 00000000..ac5b8ce1 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/StylizedWater_Toon.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 0c18333fb257e1449b879180f529986f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/StylizedWater_Toon.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Waterfalls.meta b/Assets/External/Stylized Water 3/Prefabs/Waterfalls.meta new file mode 100644 index 00000000..0202cf73 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Waterfalls.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ee9201d2489b0ee419b267530b0d64e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_10x20.prefab b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_10x20.prefab new file mode 100644 index 00000000..42e5d955 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_10x20.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4cc10b0e65bb82f74bf25855034e45cb27e4ca68fcb1faffed3927631be6fdc +size 20232 diff --git a/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_10x20.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_10x20.prefab.meta new file mode 100644 index 00000000..b6b67ad4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_10x20.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: cb1c3aa99018e1b4ba79ab9865901b1a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_10x20.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_20x30.prefab b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_20x30.prefab new file mode 100644 index 00000000..a992b13d --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_20x30.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27a5d7a9907dec2b31243409b19a01b984b95bf03e467c4ab77ce68fdc44de3e +size 20654 diff --git a/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_20x30.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_20x30.prefab.meta new file mode 100644 index 00000000..c8536ca3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_20x30.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: bfd196ce834062943847c4d039f3d29e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_20x30.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_5x20.prefab b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_5x20.prefab new file mode 100644 index 00000000..55f5aa30 --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_5x20.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b60cb70d88c8c788fd84ab7b9173958439fc5bc49acb1da5e8eb6d89edbd45a +size 15505 diff --git a/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_5x20.prefab.meta b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_5x20.prefab.meta new file mode 100644 index 00000000..adc7574c --- /dev/null +++ b/Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_5x20.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: b90afd4f9ad94dc4498e489d571082df +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Prefabs/Waterfalls/Waterfall_5x20.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Profiles.meta b/Assets/External/Stylized Water 3/Profiles.meta new file mode 100644 index 00000000..1952b50a --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9936dadad9ebc124eba5b453bd2aa86c +timeCreated: 1715774081 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Profiles/Default Wave Profile.asset b/Assets/External/Stylized Water 3/Profiles/Default Wave Profile.asset new file mode 100644 index 00000000..e0219c9f --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Default Wave Profile.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da8e2c6a926eb916fecd701af42c7b7a9c670aa21ebd7ea0c26e42bf654b824e +size 3937 diff --git a/Assets/External/Stylized Water 3/Profiles/Default Wave Profile.asset.meta b/Assets/External/Stylized Water 3/Profiles/Default Wave Profile.asset.meta new file mode 100644 index 00000000..2e73544a --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Default Wave Profile.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 1ca4610f5bf9e2f4bb39535503a79eeb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Profiles/Default Wave Profile.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Profiles/Directional Wave Profile.asset b/Assets/External/Stylized Water 3/Profiles/Directional Wave Profile.asset new file mode 100644 index 00000000..2cb008ce --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Directional Wave Profile.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36d450263135a5159f4549767fba79695f2fe168d1908aaaee839131f5f14723 +size 3124 diff --git a/Assets/External/Stylized Water 3/Profiles/Directional Wave Profile.asset.meta b/Assets/External/Stylized Water 3/Profiles/Directional Wave Profile.asset.meta new file mode 100644 index 00000000..c23aca7a --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Directional Wave Profile.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 06bee7c132b223240b706c9afe8c2a71 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Profiles/Directional Wave Profile.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Profiles/Lake Wave Profile.asset b/Assets/External/Stylized Water 3/Profiles/Lake Wave Profile.asset new file mode 100644 index 00000000..77be6d66 --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Lake Wave Profile.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63e423485246454ce30d44bace7dd063a1e9fa996f463b97d30ee3bab733d9ed +size 3679 diff --git a/Assets/External/Stylized Water 3/Profiles/Lake Wave Profile.asset.meta b/Assets/External/Stylized Water 3/Profiles/Lake Wave Profile.asset.meta new file mode 100644 index 00000000..692a2367 --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Lake Wave Profile.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 733b5ffd19f2aa140862193b21026d41 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Profiles/Lake Wave Profile.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Profiles/Large Smooth Swells.asset b/Assets/External/Stylized Water 3/Profiles/Large Smooth Swells.asset new file mode 100644 index 00000000..f677e477 --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Large Smooth Swells.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a7e1b2e2682fe1b65a73fd3ab27f6ea1dd0136b011870b4381fcfa6a635eaae +size 3922 diff --git a/Assets/External/Stylized Water 3/Profiles/Large Smooth Swells.asset.meta b/Assets/External/Stylized Water 3/Profiles/Large Smooth Swells.asset.meta new file mode 100644 index 00000000..ada9be7f --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Large Smooth Swells.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 94970c101f8c965459ef7e2f90f768f1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Profiles/Large Smooth Swells.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Profiles/Ocean Wave Profile.asset b/Assets/External/Stylized Water 3/Profiles/Ocean Wave Profile.asset new file mode 100644 index 00000000..e238d894 --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Ocean Wave Profile.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbe460186736c2a230d02c295499dac4415afebcd14322bf0a65baba1845f1a4 +size 4697 diff --git a/Assets/External/Stylized Water 3/Profiles/Ocean Wave Profile.asset.meta b/Assets/External/Stylized Water 3/Profiles/Ocean Wave Profile.asset.meta new file mode 100644 index 00000000..d33e634f --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Ocean Wave Profile.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 343e9ebae18bc0f48811edac300d64d0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Profiles/Ocean Wave Profile.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Profiles/River Wave Profile.asset b/Assets/External/Stylized Water 3/Profiles/River Wave Profile.asset new file mode 100644 index 00000000..de42ad0c --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/River Wave Profile.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e63be27392e7744666722ba425739c557fd33e39f0edd9c25866d52f189ce2b2 +size 3615 diff --git a/Assets/External/Stylized Water 3/Profiles/River Wave Profile.asset.meta b/Assets/External/Stylized Water 3/Profiles/River Wave Profile.asset.meta new file mode 100644 index 00000000..248d75a2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/River Wave Profile.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: ab6af485aea7c3a4db9cb4a316d17e57 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Profiles/River Wave Profile.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Profiles/Rolling Ocean Swells.asset b/Assets/External/Stylized Water 3/Profiles/Rolling Ocean Swells.asset new file mode 100644 index 00000000..8124505a --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Rolling Ocean Swells.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a5918aefd067c8a2d3211f68ee41cd44881b2caaa54e4eadaa31623ac67d148 +size 3926 diff --git a/Assets/External/Stylized Water 3/Profiles/Rolling Ocean Swells.asset.meta b/Assets/External/Stylized Water 3/Profiles/Rolling Ocean Swells.asset.meta new file mode 100644 index 00000000..a1111ec9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Rolling Ocean Swells.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 07fa768fab398d34ea0cb010bc30e496 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Profiles/Rolling Ocean Swells.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Profiles/Shoreline Wave.asset b/Assets/External/Stylized Water 3/Profiles/Shoreline Wave.asset new file mode 100644 index 00000000..7638bd18 --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Shoreline Wave.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:256fed97dc9b184bdaaa1a35b4f3be2cc3514beeb2ed6a8bcf862449a55d2160 +size 3111 diff --git a/Assets/External/Stylized Water 3/Profiles/Shoreline Wave.asset.meta b/Assets/External/Stylized Water 3/Profiles/Shoreline Wave.asset.meta new file mode 100644 index 00000000..c2a3a9eb --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Shoreline Wave.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: e27c7b10075e3874e9b1dec74f0df7d4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Profiles/Shoreline Wave.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Profiles/Waterfall Wave Profile.asset b/Assets/External/Stylized Water 3/Profiles/Waterfall Wave Profile.asset new file mode 100644 index 00000000..6f8f6c75 --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Waterfall Wave Profile.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7987f7c184a7c3225a669b6d0e93f9e507d907c2c9bc2119779f3c917d0f3c60 +size 3700 diff --git a/Assets/External/Stylized Water 3/Profiles/Waterfall Wave Profile.asset.meta b/Assets/External/Stylized Water 3/Profiles/Waterfall Wave Profile.asset.meta new file mode 100644 index 00000000..c224fee2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Profiles/Waterfall Wave Profile.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: b01535463a9772945b0085c0ee54e1bf +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Profiles/Waterfall Wave Profile.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Quickstart.pdf b/Assets/External/Stylized Water 3/Quickstart.pdf new file mode 100644 index 00000000..30cf3157 --- /dev/null +++ b/Assets/External/Stylized Water 3/Quickstart.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a13d07f93608c6a5b2b83d2b2e03ef02fd865005781821356755db6148c69e4 +size 367222 diff --git a/Assets/External/Stylized Water 3/Quickstart.pdf.meta b/Assets/External/Stylized Water 3/Quickstart.pdf.meta new file mode 100644 index 00000000..8ed171bc --- /dev/null +++ b/Assets/External/Stylized Water 3/Quickstart.pdf.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 9c0a5ac8bd456ad45bca609fc807608d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Quickstart.pdf + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime.meta b/Assets/External/Stylized Water 3/Runtime.meta new file mode 100644 index 00000000..ab2e9926 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de582a70ecb8aaa4eafa9b1a502120ba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Runtime/Components.meta b/Assets/External/Stylized Water 3/Runtime/Components.meta new file mode 100644 index 00000000..16354bda --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e8749e501856428a81e8994b0d49aa82 +timeCreated: 1728748280 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Components/AlignToWater.cs b/Assets/External/Stylized Water 3/Runtime/Components/AlignToWater.cs new file mode 100644 index 00000000..0a120398 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/AlignToWater.cs @@ -0,0 +1,393 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using Unity.Mathematics; +using UnityEngine; + +namespace StylizedWater3 +{ + /// + /// Samples the water height at 4 points around the Transform, and snaps the Y-position to the average. + /// From these 4 points a normal direction can also be derived, which is used to orient the transform's rotation + /// - This script is a prime example of how the Height Query System may be used. + /// + [ExecuteInEditMode] + [AddComponentMenu("Stylized Water 3/Align Transform To Water")] + public class AlignToWater : MonoBehaviour + { + //Because there two completely different methods of sampling the water's height, this Interface class provides a way to specify which is to be used. + //In the case of the CPU-method, it contains everything else needed for such a query (eg. water level and material) + public HeightQuerySystem.Interface heightInterface = new HeightQuerySystem.Interface(); + + public Vector2 surfaceSize = new Vector2(0.5f, 0.5f); + + [Tooltip("Assign an optional transform to follow on the XZ axis.\n\nThis may be used if you want to use this component to read the water height at another transform's position.")] + public Transform followTarget; + public float heightOffset; + [Range(0f, 8f)] + [Tooltip("Controls how strongly the transform should rotate to align with the wave curvature")] + public float rollAmount = 0.1f; + [Tooltip("Add a Y-axis rotation to the transform. Note that this technically results in an incorrect alignment.")] + [Range(0f, 360f)] + public float rotation = 0f; + + [Tooltip("Smoothly blend towards the newly calculated position and rotation. May be used to combat jittering")] + [Min(0f)] + public float smoothing = 0.1f; + + private Vector3 normal; + private float height; + public enum HeightValue + { + Average, + Maximum + } + public HeightValue heightValue; + + //A sampler defines: + // • An array of world-space input positions to sample the height at. + // • A float array (of equal size) that stores the output height values. + // Samplers must always be initialized by specifying how many sample points are needed. + private HeightQuerySystem.Sampler heightSampler; + //A request ask the Height Query System to return the water height at every one of the sampler's positions from the GPU + //It contains a callback event that needs to be subscribed to, to let you know when the request is completed + private HeightQuerySystem.AsyncRequest heightRequest; + +#pragma warning disable 108,114 //New keyword + public Rigidbody rigidbody; +#pragma warning restore 108,114 + + private Vector3 m_targetNormal; + private float m_targetHeight; + +#if UNITY_EDITOR + public static bool EnableInEditor + { + get { return UnityEditor.EditorPrefs.GetBool("SW3_BUOYANCY_EDITOR_ENABLED", true); } + set { UnityEditor.EditorPrefs.SetBool("SW3_BUOYANCY_EDITOR_ENABLED", value); } + } +#endif + + private void Start() + { + rigidbody = GetComponent(); + + if (rigidbody && rigidbody.useGravity) + { + Debug.LogWarning($"[Align Transform To Water] Disabled gravity on RigidBody \"{rigidbody.name}\". Otherwise its position can't be set without it struggling back"); + rigidbody.useGravity = false; + } + } + + private void OnEnable() + { +#if UNITY_EDITOR + if(Application.isPlaying == false) UnityEditor.SceneView.duringSceneGui += DuringSceneViewUpdate; +#endif + + //Sampler uses 4 sampling points, one for each corner of the rectangle/plane + //In the context of a physics-based buoyancy system a sampler will use more than 4 sampling points + heightSampler = new HeightQuerySystem.Sampler(); + heightSampler.SetSampleCount(4); + + //Only when using the GPU-readback method does the HeightQuerySystem come into play + if (heightInterface.method == HeightQuerySystem.Interface.Method.GPU) + { + //Create a new request with the sampler created above. + //Do this just once! It'll keep going until you call "Dispose()" on it. + //Using the object's hashcode ensures the request gets a unique ID + heightRequest = new HeightQuerySystem.AsyncRequest(this.GetHashCode(), heightSampler, this.name); + + //Issue the request so the system starts populating the "heightSampler" with data + heightRequest.Issue(); + + //True by default. This checks if the returned water height values are valid. If not, the value remains the same as last frame + //This avoids objects that are not above any water surface, or fall outside the camera frustum, from falling down to -1000 heights + heightRequest.invalidateMisses = true; + + //You may also call .Withdraw() if you wish to only temporarily remove the request from the system. Then call .Issue() again when needed. + //This is also necessary when looking to call heightSampler.SetSampleCount() again. + //Doing so avoids reallocating its resources but only temporarily takes it out of the running. + + //Subscribe to the event that indicates that data was retrieved from the GPU + //Important to note that this may be a few (rendering) frames later than when the request was issued (at least 1) + heightRequest.onCompleted += OnHeightRequestComplete; + } + else + { + prevHeight = this.transform.position.y; + height = prevHeight; + } + } + + #if UNITY_EDITOR + void DuringSceneViewUpdate(UnityEditor.SceneView sceneView) + { + FixedUpdate(); + } + #endif + + private void OnHeightRequestComplete() + { + //Debug.Log("Height request returned"); + + //Use the data. It pre-presents the water geometry's height value at each of the requested sample positions + float xNeg = heightSampler.heightValues[0]; + float xPos = heightSampler.heightValues[1]; + float zNeg = heightSampler.heightValues[2]; + float zPos = heightSampler.heightValues[3]; + + float newHeight = 0f; + + if (heightValue == HeightValue.Average) + { + newHeight = xNeg + xPos + zNeg + zPos; + newHeight /= 4f; + } + if (heightValue == HeightValue.Maximum) + { + newHeight = Mathf.Max(Mathf.Max(xNeg, xPos), Mathf.Max(zNeg, zPos)); + } + + newHeight += heightOffset; + + if (float.IsNaN(newHeight)) + { + #if SWS_DEV + Debug.LogError("Height is NaN"); + #endif + + //May occur during the first run + newHeight = 0f; + } + + if (heightInterface.method == HeightQuerySystem.Interface.Method.GPU) + { + //If all the samples were taking at a point where no water was visible, the height values would be -1000f. + //Avoid setting an invalid height to prevent objects from sinking way down, instead keep them at the last valid height + if (HeightQuerySystem.EqualsVoid(newHeight)) + { + UpdateSamplePositions(); + return; + } + } + + height = newHeight; + + //Using 4 samples in a plus-shape pattern, a normal can be derived from the height differences + normal = HeightQuerySystem.DeriveNormal( + xNeg, xPos, + zNeg, zPos, + rollAmount); + + //Note: In a physics-based buoyancy system, calculating the normal will not be necessary. The varying upward forces will naturally align an object to the water. + //Reading back the water surface normals directly will not be possible, since no such information is available (requires a deferred rendering water system) + + //Only updating the sampling positions here, for the next query. There would be no point in doing so for frames where the height request may not be returned + UpdateSamplePositions(); + } + + private void Reset() + { + //Auto-assign water object if there is only one + if (heightInterface.waterObject == null && WaterObject.Instances.Count > 0) + { + heightInterface.waterObject = WaterObject.Instances[0]; +#if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(this); +#endif + } + + AutoCalculateSurfaceSizeFromMeshes(); + } + + private void OnDisable() + { +#if UNITY_EDITOR + if(Application.isPlaying == false) UnityEditor.SceneView.duringSceneGui -= DuringSceneViewUpdate; +#endif + + if (heightRequest != null) + { + //Unsubscribe + heightRequest.onCompleted -= OnHeightRequestComplete; + + //Important! Remove the request from the system so that it de-allocates the memory it uses. + heightRequest.Dispose(); + heightRequest = null; + } + + //Also dispose the height sampler. This stores two arrays that need to be de-allocated + //Note: When using the GPU method, disposing 'heightRequest' will already do this! + heightSampler.Dispose(); + heightSampler = null; + } + + public void FixedUpdate() + { + if (!this.enabled) return; + +#if UNITY_EDITOR + if (!EnableInEditor && Application.isPlaying == false) return; +#endif + + //When using the CPU (wave pattern replication) method + if (heightInterface.method == HeightQuerySystem.Interface.Method.CPU) + { + //The water object contains the material, and may be used to define a water level + heightInterface.GetWaterObject(this.transform.position); + + //A reference to a Water Object is required, which in turn contains a material + if (heightInterface.HasMissingReferences()) return; + + //This function reproduces the water shader's wave vertex animation. + Gerstner.ComputeHeight(heightSampler, heightInterface); + + //At this point the 'heightSampler' has new height values, so can go right ahead and use them + OnHeightRequestComplete(); + + ApplyTransform(); + } + else + { + ApplyTransform(); + } + + } + + //Translates the corners of the bounds to the 4 sampling points (plus-shaped pattern) + //From local-space to world-space. + private void UpdateSamplePositions() + { + //Note: Should the number of sample positions change in realtime, that creates an issue where resources have to be destroyed and recreated. Avoid doing so! + //Should it be needed, do so by: + //• heightRequest.Withdraw(); //Remove the active request for data + //• heightSampler.SetSampleCount(count). //This will automatically reallocate the arrays if the count was changed. + //• heightRequest.Issue(); //Re-issue the request with the new number of samples + + // ┤ + heightSampler.SetSamplePosition(0, ConvertToWorldSpace(new Vector3(-surfaceSize.x * 0.5f, 0, 0))); + // ├ + heightSampler.SetSamplePosition(1, ConvertToWorldSpace(new Vector3(surfaceSize.x * 0.5f, 0, 0))); + // ┬ + heightSampler.SetSamplePosition(2, ConvertToWorldSpace(new Vector3(0, 0, -surfaceSize.y * 0.5f))); + // ┴ + heightSampler.SetSamplePosition(3, ConvertToWorldSpace(new Vector3(0, 0, surfaceSize.y * 0.5f))); + } + + private Vector3 prevNormal = new Vector3(0, 1, 0); + private float prevHeight; + + private void ApplyTransform() + { + //Smooth transition to new normal of this frame, particularly reduces jittering on rigid bodies + if (smoothing > 0) + { + m_targetHeight = Mathf.Lerp(prevHeight, height, Time.deltaTime / smoothing); + prevHeight = m_targetHeight; + + m_targetNormal = Vector3.Lerp(prevNormal, normal, Time.smoothDeltaTime / smoothing); + prevNormal = m_targetNormal; + } + else + { + prevHeight = height; + prevNormal = normal; + + m_targetHeight = height; + m_targetNormal = normal; + } + + var position = this.transform.position; + if (followTarget) + { + position.x = followTarget.position.x; + position.z = followTarget.position.z; + } + + position.y = m_targetHeight; + + //Setting the normal of a transform directly overrides any and all external rotations + //If the component is attached an object with a mesh, move the mesh into a child object and rotate that instead + var newRotation = Quaternion.FromToRotation(Vector3.up, m_targetNormal); + + newRotation *= quaternion.RotateY(rotation * Mathf.Deg2Rad); + if (Application.isPlaying && rigidbody) + { + if (rollAmount > 0) + { + rigidbody.Move(position, newRotation); + } + else + { + rigidbody.MovePosition(position); + } + } + else + { + if (rollAmount > 0) + { + this.transform.SetPositionAndRotation(position, newRotation); + } + else + { + this.transform.position = position; + } + } + } + + private Vector3 ConvertToWorldSpace(Vector3 position) + { + return this.transform.TransformPoint(position); + } + + /// + /// Automatically grab a starting point for the area size, based on the attached mesh(es) + /// + public void AutoCalculateSurfaceSizeFromMeshes() + { + MeshFilter[] meshFilters = GetComponentsInChildren(); + + int meshCount = meshFilters.Length; + + if (meshCount > 0) + { + surfaceSize.x = 0f; + surfaceSize.y = 0f; + + Bounds bounds = new Bounds(); + Vector3 minSum = Vector3.one * Mathf.Infinity; + Vector3 maxSum = Vector3.one * Mathf.NegativeInfinity; + + for (int i = 0; i < meshCount; i++) + { + minSum = Vector3.Min(minSum, meshFilters[i].sharedMesh.bounds.min); + maxSum = Vector3.Max(maxSum, meshFilters[i].sharedMesh.bounds.max); + } + bounds.SetMinMax(minSum, maxSum); + + surfaceSize.x = bounds.size.x; + surfaceSize.y = bounds.size.z; + } + } + + private void OnDrawGizmosSelected() + { + if (heightSampler != null && heightSampler.IsCreated()) + { + foreach (Vector3 p in heightSampler.positions) + { + Gizmos.DrawWireCube(p - (Vector3.up * heightOffset), Vector3.one * 0.2f); + } + } + + Gizmos.DrawLine(this.transform.position, this.transform.position + (m_targetNormal * 2f)); + + Gizmos.matrix = this.transform.localToWorldMatrix; + Gizmos.DrawWireCube(Vector3.zero - (Vector3.up * heightOffset), new Vector3(surfaceSize.x, 0f, surfaceSize.y)); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Components/AlignToWater.cs.meta b/Assets/External/Stylized Water 3/Runtime/Components/AlignToWater.cs.meta new file mode 100644 index 00000000..fc32c46d --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/AlignToWater.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 95144392e6eede14cafa2d339e5c1ee9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 148978298399363526, guid: 0000000000000000d000000000000000, type: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Components/AlignToWater.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Components/OceanFollowBehaviour.cs b/Assets/External/Stylized Water 3/Runtime/Components/OceanFollowBehaviour.cs new file mode 100644 index 00000000..01a092e6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/OceanFollowBehaviour.cs @@ -0,0 +1,259 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; + +namespace StylizedWater3 +{ + [ExecuteAlways] + [AddComponentMenu("")] //Hide, only to be used with the prefab + public class OceanFollowBehaviour : MonoBehaviour + { + public static OceanFollowBehaviour Instance; + + const int LODCount = 7; + private static readonly float[] gridSizes = new[] + { + 0.5f, //LOD0 + 01f, //LOD1 + 02f, //LOD2 + 04f, //LOD3 + 08f, //LOD4 + 16f, //LOD5 + 32f, //LOD6 + 32f //LOD7 + }; + + private const float EXPECTED_MAX_WAVE_HEIGHT = 15f; + + public Material material; + + [Space] + + [Tooltip("Enable to executing the camera following behaviour when outside of Play mode")] + public bool enableInEditMode = true; + [Tooltip("Assign a specific transform to follow on the XZ axis." + + "\n\nIf left empty, the camera currently rendering will be targeted.")] + public Transform followTarget; + + [Space] + + public static bool ShowWireFrame = true; + + [Serializable] + public class LOD + { + public List gameObjects = new List(); + public float gridSize = 1f; + } + [SerializeField] + //[HideInInspector] + private LOD[] lods; + + //To ensure that each LOD renders behind the one before it, move each one down a tiny bit + private const float heightOffset = 0.01f; + + private void Reset() + { + //BuildLODs(); + } + + #if SWS_DEV + [ContextMenu("Build LODs")] + #endif + //Populates the LOD list and sets the gridsize for each + void BuildLODs() + { + lods = new LOD[LODCount+1]; + for (int i = 0; i < lods.Length; i++) + { + lods[i] = new LOD(); + lods[i].gridSize = gridSizes[i]; + } + + MeshRenderer[] childs = this.gameObject.GetComponentsInChildren(true); + for (int i = 0; i < childs.Length; i++) + { + childs[i].gameObject.layer = WaterObject.WaterLayer; + + string objName = childs[i].name; + int lodIndex = 0; + + if(objName.EndsWith("0")) lodIndex = 0; + if(objName.EndsWith("1")) lodIndex = 1; + if(objName.EndsWith("2")) lodIndex = 2; + if(objName.EndsWith("3")) lodIndex = 3; + if(objName.EndsWith("4")) lodIndex = 4; + if(objName.EndsWith("5")) lodIndex = 5; + if(objName.EndsWith("6")) lodIndex = 6; + if(objName.EndsWith("7")) lodIndex = 7; + + #if UNITY_EDITOR + childs[i].scaleInLightmap = Mathf.Lerp(1, 0.01f, (float)lodIndex / LODCount); + #endif + + lods[lodIndex].gameObjects.Add(childs[i].gameObject); + } + } + + private Vector3 targetPosition; + private void SetPosition(Transform target) + { + float height = this.transform.position.y; + + for (int i = 0; i < lods.Length; i++) + { + for (int j = 0; j < lods[i].gameObjects.Count; j++) + { + targetPosition = WaterGrid.SnapToGrid(target.position, this.transform.lossyScale.x * lods[i].gridSize); + //targetPosition = target.position; //No snapping + + //Progressively lower the height of each LOD a small amount, this helps ensure transparency sorting will be correct. + targetPosition.y = height - (heightOffset * i); + + #if UNITY_EDITOR || DEVELOPMENT_BUILD + if (lods[i].gameObjects[j] == false) throw new Exception("[Ocean] A child GameObject was deleted, these should not be touched!"); + #endif + + lods[i].gameObjects[j].transform.position = targetPosition; + } + } + } + + public void ApplyMaterial() + { + for (int i = 0; i < lods.Length; i++) + { + foreach (var lod in lods[i].gameObjects) + { + MeshRenderer r = lod.GetComponent(); + + if (r) + { + r.sharedMaterial = material; + PadBounds(r); + } + } + } + } + + //Pad the bounds so that meshes don't get unintentionally culled when using high waves + private void PadBounds() + { + for (int i = 0; i < lods.Length; i++) + { + foreach (var lod in lods[i].gameObjects) + { + MeshRenderer r = lod.GetComponent(); + + if (r) + { + r.sharedMaterial = material; + + PadBounds(r); + } + } + } + } + + private void PadBounds(MeshRenderer m_renderer) + { + Bounds bounds = m_renderer.localBounds; + bounds.Expand(Vector3.up * (EXPECTED_MAX_WAVE_HEIGHT * 0.5f)); + + m_renderer.localBounds = bounds; + } + + private void OnEnable() + { + Instance = this; + + PadBounds(); + + #if URP + RenderPipelineManager.beginCameraRendering += OnCameraRender; + #endif + } + + private void LateUpdate() + { + if (followTarget) + { + SetPosition(followTarget); + } + } + + #if URP + private void OnCameraRender(ScriptableRenderContext context, Camera targetCamera) + { + if (targetCamera.cameraType == CameraType.Preview) return; + + //Component set up to follow a specific target + if (followTarget != null) return; + + #if UNITY_EDITOR + //Skip if disabled in scene-view + if (targetCamera.cameraType == CameraType.SceneView && (enableInEditMode == false || Application.isPlaying)) return; + #endif + + SetPosition(targetCamera.transform); + } + #endif + + private void OnDisable() + { + Instance = null; + + #if URP + RenderPipelineManager.beginCameraRendering -= OnCameraRender; + #endif + } + + private void OnDrawGizmosSelected() + { + if (!ShowWireFrame) return; + + MeshFilter[] meshes = GetComponentsInChildren(); + + Gizmos.color = new Color(0,0,0,0.25f); + for (int i = 0; i < meshes.Length; i++) + { + Gizmos.matrix = meshes[i].transform.localToWorldMatrix; + Gizmos.DrawWireMesh(meshes[i].sharedMesh); + } + + /* + Gizmos.color = new Color(1,1,0,0.25f); + Gizmos.matrix = Matrix4x4.identity; + for (int i = 0; i < lods.Length; i++) + { + foreach (var lod in lods[i].gameObjects) + { + MeshRenderer r = lod.GetComponent(); + Gizmos.DrawWireCube(r.bounds.center, r.bounds.size); + } + } + */ + } + + public bool InvalidSetup() + { + if(lods == null) return true; + if(lods.Length == 0) return true; + + for (int i = 0; i < lods.Length; i++) + { + foreach (var lod in lods[i].gameObjects) + { + if(!lod.gameObject) return true; + } + } + return false; + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Components/OceanFollowBehaviour.cs.meta b/Assets/External/Stylized Water 3/Runtime/Components/OceanFollowBehaviour.cs.meta new file mode 100644 index 00000000..e7f3854d --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/OceanFollowBehaviour.cs.meta @@ -0,0 +1,20 @@ +fileFormatVersion: 2 +guid: 59d166d8583159b44ae4a88bf823b554 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - material: {fileID: 2100000, guid: d9bee4d86b9f55b46a4288109fb2b181, type: 2} + - followTarget: {instanceID: 0} + executionOrder: 0 + icon: {fileID: -7633815037825259808, guid: 0000000000000000d000000000000000, type: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Components/OceanFollowBehaviour.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Components/ParticleTrailEmitter.cs b/Assets/External/Stylized Water 3/Runtime/Components/ParticleTrailEmitter.cs new file mode 100644 index 00000000..b76a44ee --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/ParticleTrailEmitter.cs @@ -0,0 +1,118 @@ +using System; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace StylizedWater3 +{ + /// + /// Emulates the particle system "Rate over Distance" emission behaviour, but with accurate support for RigidBody's + /// + [ExecuteInEditMode] + [AddComponentMenu("Effects/Particle Trail Emitter")] + public class ParticleTrailEmitter : MonoBehaviour + { +#pragma warning disable 108,114 //New keyword + [Tooltip("The Emission module on this particle system should have its Rate Over Distance value set 0.")] + public ParticleSystem particleSystem; + private ParticleSystem.EmissionModule emissionModule; +#pragma warning restore 108,114 + + [Tooltip("If this particle system is parented under a RigidBody, then assign it here for correct positional tracking")] + public Rigidbody rigidBody; + + [Space] + + public float spawnRatePerUnit = 1f; + + private float distanceAccumulation = 0f; + private Vector3 previousPosition; + + void Reset() + { + particleSystem = GetComponent(); + + if (particleSystem) + { + emissionModule = particleSystem.emission; + + if (emissionModule.rateOverDistance.constant > 0f) + { + ParticleSystem.MinMaxCurve rateOverDistance = emissionModule.rateOverDistance; + rateOverDistance.constant = 0f; + emissionModule.rateOverDistance = rateOverDistance; + + Debug.LogWarning($"The Rate Over Distance has been set to 0 on the particle system \"{particleSystem.name}\". This is because the Particle Trail Emitter component will be responsible for emission"); + } + } + rigidBody = GetComponentInParent(); + } + + private void Start() + { + previousPosition = this.transform.position; + + if (particleSystem) + { + ParticleSystem.MainModule main = particleSystem.main; + main.playOnAwake = false; + } + } + + private float GetDistance() + { + float distanceThisFrame = 0; + + if(rigidBody) + { + //Distance = speed * deltaTime + float movementSpeed = Mathf.Max(rigidBody.linearVelocity.magnitude, rigidBody.angularVelocity.magnitude); + distanceThisFrame = movementSpeed * Time.deltaTime; + } + else + { + distanceThisFrame = Vector3.Distance(transform.position, previousPosition); + previousPosition = this.transform.position; + } + + return distanceThisFrame; + } + + public void FixedUpdate() + { + if (!particleSystem) return; + + emissionModule = particleSystem.emission; + if (emissionModule.enabled == false) return; + + distanceAccumulation += GetDistance(); + + var particlesToEmit = Mathf.CeilToInt(distanceAccumulation * spawnRatePerUnit); + + if (particlesToEmit > 0) + { + particleSystem.Emit(particlesToEmit); + distanceAccumulation -= particlesToEmit / spawnRatePerUnit; + } + } + } + + #if UNITY_EDITOR + [CustomEditor(typeof(ParticleTrailEmitter))] + class ParticleTrailEmitterInspector : Editor + { + private ParticleTrailEmitter component; + + private void OnEnable() + { + component = (ParticleTrailEmitter)target; + } + + private void OnSceneGUI() + { + component.FixedUpdate(); + } + } + #endif +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Components/ParticleTrailEmitter.cs.meta b/Assets/External/Stylized Water 3/Runtime/Components/ParticleTrailEmitter.cs.meta new file mode 100644 index 00000000..1b54ceb0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/ParticleTrailEmitter.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6febe12fcf8d2e149842da43eb923880 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Components/ParticleTrailEmitter.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Components/SetCustomWaterTime.cs b/Assets/External/Stylized Water 3/Runtime/Components/SetCustomWaterTime.cs new file mode 100644 index 00000000..a2de3b8d --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/SetCustomWaterTime.cs @@ -0,0 +1,165 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace StylizedWater3 +{ + [ExecuteAlways] + [AddComponentMenu("Stylized Water 3/Water Custom Time")] + public class SetCustomWaterTime : MonoBehaviour + { + public enum Mode + { + None, + Interval, + Time, + EditorTime, + Speed, + [InspectorName("System Time (UTC)")] + SystemTime, + Custom + } + + public Mode mode = Mode.Custom; + + //Parameters for different modes + [Min(0.02f)] + public float interval = 0.2f; + public float speed = 0f; + [Min(0f)] + public float customTime = 0f; + + private float elapsedTime; + private DateTime _startTime; + + private void OnEnable() + { + RenderPipelineManager.beginContextRendering += OnBeginFrame; + + _startTime = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 0, 0, 0); + } + + private void OnBeginFrame(ScriptableRenderContext context, List cams) + { + SetTime(); + } + + private void SetTime() + { + #if UNITY_EDITOR + if (mode == Mode.EditorTime) + { + WaterObject.CustomTime = (float)UnityEditor.EditorApplication.timeSinceStartup; + return; + } + #endif + + if (mode == Mode.None) + { + ResetTime(); + return; + } + + if (mode == Mode.Interval) + { + elapsedTime += Time.deltaTime; + + if (elapsedTime >= interval) + { + elapsedTime = 0; + + WaterObject.CustomTime = Time.time; + } + } + else if (mode == Mode.Time) + { + WaterObject.CustomTime = Time.time; + } + else if (mode == Mode.Speed) + { + elapsedTime += Time.deltaTime * speed; + WaterObject.CustomTime = elapsedTime; + } + else if (mode == Mode.SystemTime) + { + WaterObject.CustomTime = (float)(DateTime.UtcNow - _startTime).TotalMilliseconds * 0.001f; + } + else if (mode == Mode.Custom) + { + WaterObject.CustomTime = customTime; + } + } + + private void ResetTime() + { + elapsedTime = 0f; + //Revert to using normal time + WaterObject.CustomTime = -1; + } + + private void OnDisable() + { + RenderPipelineManager.beginContextRendering -= OnBeginFrame; + + ResetTime(); + } + } + + #if UNITY_EDITOR + [CustomEditor(typeof(SetCustomWaterTime))] + public class SetCustomWaterTimeEditor : Editor + { + private SerializedProperty mode; + + private SerializedProperty interval; + private SerializedProperty speed; + private SerializedProperty customTime; + + private void OnEnable() + { + mode = serializedObject.FindProperty("mode"); + interval = serializedObject.FindProperty("interval"); + speed = serializedObject.FindProperty("speed"); + customTime = serializedObject.FindProperty("customTime"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(mode); + + if (mode.intValue == (int)SetCustomWaterTime.Mode.Interval) + { + EditorGUILayout.PropertyField(interval); + } + else if (mode.intValue == (int)SetCustomWaterTime.Mode.Speed) + { + EditorGUILayout.PropertyField(speed); + } + else if (mode.intValue == (int)SetCustomWaterTime.Mode.Custom) + { + EditorGUILayout.PropertyField(customTime); + } + + if(WaterObject.CustomTime > 0 && mode.intValue != (int)SetCustomWaterTime.Mode.Custom) EditorGUILayout.HelpBox($"Time: {WaterObject.CustomTime}", MessageType.None); + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + } + } + } + #endif +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Components/SetCustomWaterTime.cs.meta b/Assets/External/Stylized Water 3/Runtime/Components/SetCustomWaterTime.cs.meta new file mode 100644 index 00000000..c70cda8d --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/SetCustomWaterTime.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 33cfa047dbc543ea9a51492ad11fce6e +timeCreated: 1719917866 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Components/SetCustomWaterTime.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Components/SetGlobalWaveOriginOffset.cs b/Assets/External/Stylized Water 3/Runtime/Components/SetGlobalWaveOriginOffset.cs new file mode 100644 index 00000000..e87c6cef --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/SetGlobalWaveOriginOffset.cs @@ -0,0 +1,22 @@ +using System; +using UnityEngine; + +namespace StylizedWater3 +{ + [ExecuteAlways] + [AddComponentMenu("Stylized Water 3/Global Wave Origin Offset")] + public class SetGlobalWaveOriginOffset : MonoBehaviour + { + private readonly int _GlobalWaveOriginOffset = Shader.PropertyToID("_GlobalWaveOriginOffset"); + + private void Update() + { + Shader.SetGlobalVector(_GlobalWaveOriginOffset, this.transform.position); + } + + private void OnDisable() + { + Shader.SetGlobalVector(_GlobalWaveOriginOffset, Vector3.zero); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Components/SetGlobalWaveOriginOffset.cs.meta b/Assets/External/Stylized Water 3/Runtime/Components/SetGlobalWaveOriginOffset.cs.meta new file mode 100644 index 00000000..b1509c16 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/SetGlobalWaveOriginOffset.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3290db5725a149f09da1024eb11ed2e1 +timeCreated: 1747397807 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Components/SetGlobalWaveOriginOffset.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Components/SetWaterPositionOffset.cs b/Assets/External/Stylized Water 3/Runtime/Components/SetWaterPositionOffset.cs new file mode 100644 index 00000000..b587026a --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/SetWaterPositionOffset.cs @@ -0,0 +1,28 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using UnityEngine; + +namespace StylizedWater3 +{ + [ExecuteAlways] + [AddComponentMenu("Stylized Water 3/Water Position Offset")] + public class SetWaterPositionOffset : MonoBehaviour + { + public bool negate; + + private void Update() + { + //Note: in a floating origin system, apply the value after offsetting all the transforms! + //Otherwise the water geometry gets shifted in one frame, and this offset is applied the next. This induces a jitter. + StylizedWater3.WaterObject.PositionOffset = negate ? -this.transform.position : this.transform.position; + } + + private void OnDisable() + { + StylizedWater3.WaterObject.PositionOffset = Vector3.zero; + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Components/SetWaterPositionOffset.cs.meta b/Assets/External/Stylized Water 3/Runtime/Components/SetWaterPositionOffset.cs.meta new file mode 100644 index 00000000..69f572ba --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/SetWaterPositionOffset.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ff38353f302f4942bdccd7cb32b19d37 +timeCreated: 1728977343 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Components/SetWaterPositionOffset.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Components/WaterGrid.cs b/Assets/External/Stylized Water 3/Runtime/Components/WaterGrid.cs new file mode 100644 index 00000000..0272012f --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/WaterGrid.cs @@ -0,0 +1,238 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace StylizedWater3 +{ + [ExecuteInEditMode] + [AddComponentMenu("Stylized Water 3/Water Grid")] + public class WaterGrid : MonoBehaviour + { + [Tooltip("Material used on the tile meshes")] + public Material material; + + [Tooltip("When not in play-mode, the water will follow the scene-view camera position.")] + public bool followSceneCamera = false; + [Tooltip("If enabled, the object with the \"MainCamera\" tag will be assigned as the follow target when entering play mode")] + public bool autoAssignCamera; + [Tooltip("The grid will follow this Transform's position on the XZ axis. Ideally set to the camera's transform.")] + public Transform followTarget; + + [Tooltip("Scale of the entire grid in the length and width")] + public float scale = 500f; + [Range(0.15f, 10f)] + [Tooltip("Distance between vertices, rather higher than lower")] + public float vertexDistance = 2f; + [Min(0)] + public int rowsColumns = 4; + + [HideInInspector] + public int m_rowsColumns = 4; + [SerializeField] + [HideInInspector] + private Mesh mesh; + [SerializeField] + [HideInInspector] + private List objects = new List(); + + [NonSerialized] + private float tileSize; + [NonSerialized] + private WaterObject m_waterObject = null; + [NonSerialized] + private Transform actualFollowTarget; + [NonSerialized] + private Vector3 targetPosition; + + #if UNITY_EDITOR + public static bool DisplayGrid = true; + public static bool DisplayWireframe; + #endif + + private void Reset() + { + Recreate(); + } + + private void Start() + { + if (autoAssignCamera) followTarget = Camera.main ? Camera.main.transform : followTarget; + } + + private void OnEnable() + { +#if UNITY_EDITOR + UnityEditor.SceneView.duringSceneGui += OnSceneGUI; +#endif + m_rowsColumns = rowsColumns; + + //Mesh is serialized with the scene, if component is used as a prefab, regenerate it + if (mesh == null) + { + RecreateMesh(); + ReassignMesh(); + } + } + +#if UNITY_EDITOR + private void OnDisable() + { + UnityEditor.SceneView.duringSceneGui -= OnSceneGUI; + } +#endif + + void Update() + { + if (Application.isPlaying) actualFollowTarget = followTarget; + + if (actualFollowTarget) + { + targetPosition = actualFollowTarget.transform.position; + + targetPosition = SnapToGrid(targetPosition, vertexDistance); + targetPosition.y = this.transform.position.y; + this.transform.position = targetPosition; + } + } + + public void Recreate() + { + RecreateMesh(); + + bool requireRecreate = (m_rowsColumns != rowsColumns) || objects.Count < (rowsColumns * rowsColumns); + if (requireRecreate) m_rowsColumns = rowsColumns; + + //Only destroy/recreate objects if grid subdivision has changed + if (requireRecreate && objects.Count > 0) + { + foreach (WaterObject obj in objects) + { + if (obj) DestroyImmediate(obj.gameObject); + } + objects.Clear(); + } + + int index = 0; + for (int x = 0; x < rowsColumns; x++) + { + for (int z = 0; z < rowsColumns; z++) + { + if (requireRecreate) + { + m_waterObject = WaterObject.New(material, mesh); + objects.Add(m_waterObject); + + m_waterObject.transform.parent = this.transform; + m_waterObject.name = "WaterTile_x" + x + "z" + z; + } + else + { + m_waterObject = objects[index]; + m_waterObject.AssignMesh(mesh); + m_waterObject.AssignMaterial(material); + } + + m_waterObject.transform.localPosition = GridLocalCenterPosition(x, z); + m_waterObject.transform.localScale = Vector3.one; + + index++; + } + } + } + + private void CalculateTileSize() + { + rowsColumns = Mathf.Max(rowsColumns, 0); + float m_scale = scale * this.transform.lossyScale.x; + tileSize = Mathf.Max(1f, m_scale / rowsColumns); + } + + private void RecreateMesh() + { + CalculateTileSize(); + + float m_vertexDistance = vertexDistance * this.transform.lossyScale.x; + + //Value should never be larger than an individual tile + m_vertexDistance = Mathf.Min(m_vertexDistance, tileSize); + + mesh = WaterMesh.Create(WaterMesh.Shape.Rectangle, tileSize, m_vertexDistance, tileSize); + } + + private void ReassignMesh() + { + foreach (WaterObject obj in objects) + { + obj.AssignMesh(mesh); + } + } + + private Vector3 GridLocalCenterPosition(int x, int z) + { + return new Vector3(x * tileSize - ((tileSize * (rowsColumns)) * 0.5f) + (tileSize * 0.5f), 0f, + z * tileSize - ((tileSize * (rowsColumns)) * 0.5f) + (tileSize * 0.5f)); + } + + public static Vector3 SnapToGrid(Vector3 position, float cellSize) + { + return new Vector3(SnapToGrid(position.x, cellSize), SnapToGrid(position.y, cellSize), SnapToGrid(position.z, cellSize)); + } + + private static float SnapToGrid(float position, float cellSize) + { + return Mathf.FloorToInt(position / cellSize) * (cellSize) + (cellSize * 0.5f); + } + +#if UNITY_EDITOR + private void OnDrawGizmosSelected() + { + if (DisplayWireframe) + { + Gizmos.matrix = this.transform.localToWorldMatrix; + Gizmos.color = new Color(0, 0, 0, 0.5f); + + foreach (WaterObject waterObject in objects) + { + if(waterObject.meshFilter.sharedMesh) Gizmos.DrawWireMesh(waterObject.meshFilter.sharedMesh, waterObject.transform.localPosition); + } + } + + if (DisplayGrid) + { + if (tileSize <= 0) CalculateTileSize(); + + Gizmos.color = new Color(1f, 0.25f, 0.25f, 0.5f); + Gizmos.matrix = this.transform.localToWorldMatrix; + + for (int x = 0; x < rowsColumns; x++) + { + for (int z = 0; z < rowsColumns; z++) + { + Vector3 pos = GridLocalCenterPosition(x, z); + + Gizmos.DrawWireCube(pos, new Vector3(tileSize, 0f, tileSize)); + } + } + } + } + + private void OnSceneGUI(UnityEditor.SceneView sceneView) + { + if (followSceneCamera) + { + actualFollowTarget = sceneView.camera.transform; + Update(); + } + else + { + actualFollowTarget = null; + } + } +#endif + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Components/WaterGrid.cs.meta b/Assets/External/Stylized Water 3/Runtime/Components/WaterGrid.cs.meta new file mode 100644 index 00000000..de1b10a7 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/WaterGrid.cs.meta @@ -0,0 +1,20 @@ +fileFormatVersion: 2 +guid: bfcfc08716cec9c4ea8d75126995f02e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - material: {fileID: 2100000, guid: e8333e151973f1c4188ff534979c823b, type: 2} + - followTarget: {instanceID: 0} + executionOrder: 0 + icon: {fileID: 5243786984396574768, guid: 0000000000000000d000000000000000, type: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Components/WaterGrid.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Components/WaterObject.cs b/Assets/External/Stylized Water 3/Runtime/Components/WaterObject.cs new file mode 100644 index 00000000..aa1e3680 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/WaterObject.cs @@ -0,0 +1,205 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; + +namespace StylizedWater3 +{ + /// + /// Attached to every mesh using the Stylized Water 3 shader + /// Provides a generic way of identifying water objects and accessing their properties + /// + [ExecuteInEditMode] + [AddComponentMenu("Stylized Water 3/Water Object")] + [DisallowMultipleComponent] + public class WaterObject : MonoBehaviour + { + /// + /// The default Water layer index in Unity + /// + public const int WaterLayer = 4; + + /// + /// Collection of all available WaterObject instances. Instances (un)register themselves in the OnEnable/OnDisable functions. + /// + public static readonly List Instances = new List(); + + public Material material; + public MeshFilter meshFilter; + public MeshRenderer meshRenderer; + + private static Vector3 s_PositionOffset; + private static readonly int _WaterPositionOffset = Shader.PropertyToID("_WaterPositionOffset"); + + /// + /// For use with floating-point origin systems. In the shader, the world-position (used for UV coordinates) will be offset by this value. + /// Buoyancy calculations will also be offset to stay in sync. + /// + public static Vector3 PositionOffset + { + set + { + s_PositionOffset = value; + Shader.SetGlobalVector(_WaterPositionOffset, s_PositionOffset); + } + internal get => s_PositionOffset; + } + + private static float m_customTimeValue = -1f; + private static readonly int CustomTimeID = Shader.PropertyToID("_CustomTime"); + + /// + /// Pass in any time value, any kind of animations will use this as a time index, including wave animations (and thus height sampling as well). + /// This is typically used for network synchronized waves or cutscenes. + /// To revert to using normal , pass in a value lower than 0. + /// + /// + public static float CustomTime + { + set + { + m_customTimeValue = value; + Shader.SetGlobalFloat(CustomTimeID, m_customTimeValue); + } + get => m_customTimeValue; + } + + private MaterialPropertyBlock _props; + public MaterialPropertyBlock props + { + get + { + //Fetch when required, execution order makes it unreliable otherwise + if (_props == null) + { + CreatePropertyBlock(meshRenderer); + } + return _props; + } + private set => _props = value; + } + + private void CreatePropertyBlock(Renderer sourceRenderer) + { + _props = new MaterialPropertyBlock(); + sourceRenderer.GetPropertyBlock(_props); + } + + private void Reset() + { + meshRenderer = GetComponent(); + CreatePropertyBlock(meshRenderer); + meshFilter = GetComponent(); + } + + private void OnEnable() + { + Instances.Add(this); + } + + private void OnDisable() + { + Instances.Remove(this); + } + + private void OnValidate() + { + if (!meshRenderer) meshRenderer = GetComponent(); + if (!meshFilter) meshFilter = GetComponent(); + FetchWaterMaterial(); + } + + /// + /// Grabs the material from the attached Mesh Renderer + /// + public Material FetchWaterMaterial() + { + if (meshRenderer) + { + material = meshRenderer.sharedMaterial; + return material; + } + + return null; + } + + /// + /// Applies to changes made to the Material Property Blocks ('props' property) + /// + public void ApplyInstancedProperties() + { + if(props != null) meshRenderer.SetPropertyBlock(props); + } + + public void AssignMesh(Mesh mesh) + { + if (meshFilter) meshFilter.sharedMesh = mesh; + } + + public void AssignMaterial(Material newMaterial) + { + if (meshRenderer) meshRenderer.sharedMaterial = newMaterial; + material = newMaterial; + } + + /// + /// Creates a new GameObject with a MeshFilter, MeshRenderer and WaterObject component + /// + /// If assigned, this material is automatically added to the MeshRenderer + /// + public static WaterObject New(Material waterMaterial = null, Mesh mesh = null) + { + GameObject go = new GameObject("Water Object", typeof(MeshFilter), typeof(MeshRenderer), typeof(WaterObject)); + go.layer = LayerMask.NameToLayer("Water"); + + #if UNITY_EDITOR + UnityEditor.Undo.RegisterCreatedObjectUndo(go, "Created Water Object"); + #endif + + WaterObject waterObject = go.GetComponent(); + + waterObject.meshRenderer = waterObject.gameObject.GetComponent(); + waterObject.meshFilter = waterObject.gameObject.GetComponent(); + + waterObject.meshFilter.sharedMesh = mesh; + waterObject.meshRenderer.sharedMaterial = waterMaterial; + waterObject.meshRenderer.shadowCastingMode = ShadowCastingMode.Off; + waterObject.material = waterMaterial; + + return waterObject; + } + + /// + /// Attempt to find the WaterObject above or below the position. Checks against the bounds of ALL Water Object meshes by raycasting on the XZ plane + /// + /// Position in world-space (height is not relevant) + /// Unless this is true, water rotated on the Y-axis will yield incorrect results (but is faster) + /// + public static WaterObject Find(Vector3 position, bool rotationSupport) + { + Ray ray = new Ray(position + (Vector3.up * 1000f), Vector3.down); + + foreach (WaterObject obj in Instances) + { + if (rotationSupport) + { + //Local space + ray.origin = obj.transform.InverseTransformPoint(ray.origin); + if (obj.meshFilter.sharedMesh.bounds.IntersectRay(ray)) return obj; + } + else + { + //Axis-aligned bounds + if (obj.meshRenderer.bounds.IntersectRay(ray)) return obj; + } + } + + return null; + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Components/WaterObject.cs.meta b/Assets/External/Stylized Water 3/Runtime/Components/WaterObject.cs.meta new file mode 100644 index 00000000..55bd1354 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Components/WaterObject.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 079d48f7ea5dc054a8b2cd9151030ee5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 22661e393f063dd4085f7fe57377fbc7, type: 3} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Components/WaterObject.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Extension.cs b/Assets/External/Stylized Water 3/Runtime/Extension.cs new file mode 100644 index 00000000..b1a9a77c --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Extension.cs @@ -0,0 +1,126 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using UnityEditor; +using UnityEngine; + +namespace StylizedWater3 +{ + public class Extension + { + private static Extension[] catalogue = new Extension[] + { + new Extension(ID.DynamicEffects, "Dynamic Effects", "Enables advanced effects to be projected onto the water surface. Such as boat wakes, ripples and shoreline waves.", 299321), + new Extension(ID.UnderwaterRendering, "Underwater Rendering", "Extends the shader with underwater rendering, by seamlessly blending the water with post processing effects.", 322081), + //new Extension(ID.Flowmaps, "Flowmaps", "Adds directional flow to water surfaces", 0), + //new Extension(ID.Physics, "Physics", "Buoyancy physics to make Rigidbodies float in a natural way", 0), + }; + + protected Extension(){} + + protected Extension(ID id, string name, string description, int assetStoreID) + { + this.id = id; + this.name = name; + this.description = description; + this.assetStoreID = assetStoreID; + } + + public enum ID + { + Unknown, + DynamicEffects, + UnderwaterRendering, + Flowmaps, + Physics, + Simulations, + OceanWaves + } + + public ID id = ID.Unknown; + public string name; + public string description; + public int assetStoreID; + public Texture2D icon; + + public string version; + public string minBaseVersion; + + public static Extension[] installed; + public static Extension[] available; + + public void CreateIcon(string data) + { + byte[] bytes = System.Convert.FromBase64String(data); + + icon = new Texture2D(32, 32, TextureFormat.RGBA32, false, false); + icon.LoadImage(bytes, true); + } + + #if UNITY_EDITOR + //[UnityEditor.Callbacks.DidReloadScripts] + [InitializeOnLoadMethod] + private static void GetInstalled() + { + var allTypes = new List(); + var assemblies = System.AppDomain.CurrentDomain.GetAssemblies(); + + foreach (var assembly in assemblies) + { + Type[] types = assembly.GetTypes(); + foreach (Type type in types) + { + if (type.IsAbstract) continue; + + if (type.IsSubclassOf(typeof(Extension))) + allTypes.Add(type); + } + } + + installed = new Extension[allTypes.Count]; + for (int i = 0; i < allTypes.Count; i++) + { + installed[i] = Activator.CreateInstance(allTypes[i]) as Extension; + //installed[i] = Convert.ChangeType(typeof(Extension), allTypes[i]) as Extension; + + //Debug.Log($"Found installed extension: {allTypes[i]}"); + } + + for (int i = 0; i < installed.Length; i++) + { + installed[i].Load(); + } + + List notInstalledList = new List(); + + for (int i = 0; i < catalogue.Length; i++) + { + //Get installed + Extension extension = Get(catalogue[i].id); + + //Not installed + if (extension == null) + { + notInstalledList.Add(catalogue[i]); + } + } + + available = notInstalledList.ToArray(); + //Debug.Log($"{available.Length} extensions available"); + } + #endif + + public virtual void Load(){} + + protected static Extension Get(ID id) + { + return installed.FirstOrDefault(e => e.id == id); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Extension.cs.meta b/Assets/External/Stylized Water 3/Runtime/Extension.cs.meta new file mode 100644 index 00000000..d2a8a26a --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Extension.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1dc546b3144144d2a881f1fb82d02801 +timeCreated: 1721041274 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Extension.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Gerstner.cs b/Assets/External/Stylized Water 3/Runtime/Gerstner.cs new file mode 100644 index 00000000..c9d2ab73 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Gerstner.cs @@ -0,0 +1,192 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using Unity.Mathematics; +using UnityEngine; + +namespace StylizedWater3 +{ + public static class Gerstner + { + private const float TWO_PI = Mathf.PI * 2f; + private const float GRAVITY = 9.8f; + private const float MAX_AMPLITUDE = 5.0f; + + private static readonly int TimeParametersID = Shader.PropertyToID("_TimeParameters"); + + //Returns the same value as _TimeParameters.x + private static float _TimeParameters + { + get + { + if (WaterObject.CustomTime > 0) return WaterObject.CustomTime; + +#if UNITY_EDITOR + float time = Application.isPlaying ? Time.time : Time.realtimeSinceStartup; +#else + float time = Time.time; +#endif + + return time; + } + } + + public static void ComputeHeight(HeightQuerySystem.Sampler sampler, HeightQuerySystem.Interface heightInterface) + { + ComputeHeight(sampler, heightInterface.waveProfile, heightInterface.GetWaterLevel(), heightInterface.waterObject.material); + } + + public static void ComputeHeight(HeightQuerySystem.Sampler sampler, WaveProfile profile, float waterLevel, Material waterMaterial) + { + if (waterMaterial.IsKeywordEnabled(ShaderParams.Keywords.Waves) == false) + { + return; + } + + //Get the material's wave-related parameters as these greatly influence the wave pattern + Vector4 m_dir = waterMaterial.GetVector(ShaderParams.Properties._Direction); + float2 direction = new float2(m_dir.x, m_dir.y); + + float speed = waterMaterial.GetFloat(ShaderParams.Properties._Speed) * waterMaterial.GetFloat(ShaderParams.Properties._WaveSpeed); + float frequency = waterMaterial.GetFloat(ShaderParams.Properties._WaveFrequency); + int layerCount = waterMaterial.GetInt(ShaderParams.Properties._WaveMaxLayers); + float waveHeight = waterMaterial.GetFloat(ShaderParams.Properties._WaveHeight); + float3 scale = new float3(1f, waveHeight, 1f); + + ComputeHeight(profile, sampler, waterLevel, speed, frequency, direction, scale, layerCount); + } + + public static void ComputeHeight(WaveProfile profile, HeightQuerySystem.Sampler sampler, float waterLevel, in float speed, in float frequency, in float2 baseDirection, float3 scale, in int count) + { + int layerCount = profile.layers.Length - 1; + int m_count = min(count, layerCount); + + for (int i = 0; i < sampler.positions.Length; i++) + { + //Account for world position offset + float2 worldPosition = new float2(sampler.positions[i].x + WaterObject.PositionOffset.x, sampler.positions[i].z + WaterObject.PositionOffset.z); + + sampler.heightValues[i] = ComputeHeight(profile, waterLevel, worldPosition, frequency, speed * _TimeParameters, baseDirection, scale, m_count); + } + } + + //Keep in sync with the HLSL function in the 'Gerstner' shader library + public static float ComputeHeight(WaveProfile profile, float waterLevel, float2 position, in float frequency, in float time, in float2 baseDirection, in float3 scale, int count) + { + float3 offset = 0f; + //float3 tangent = new float3(1,0,0); + //float3 bitangent = new float3(0,0,1); + + //float normalStrength = 1f; + + uint waveCount = 0; + for (uint i = 0; i <= count; i++) + { + WaveProfile.WaveParameters parameters = profile.CreateWaveParameters(profile.layers[i], (float)i / (float)count, 1f / profile.averageSteepness); + + if (parameters.enabled > 0) + { + waveCount += 1; + + float w = TWO_PI / (parameters.waveLength * frequency); + float freq = sqrt(GRAVITY * w); + //As amplitude scales down, so should the steepness + float ampRCP = (parameters.amplitude/MAX_AMPLITUDE); + //Both divide and scale by amplitude + float steepness = (parameters.steepness / parameters.amplitude) * ampRCP; + + //Rotation already pre-converted into radians + float2 direction = new float2(sin(parameters.direction), cos(parameters.direction)) * baseDirection; + + //Radial mode + if (parameters.mode == 1) + { + position -= parameters.origin; + + direction += (position - parameters.origin); + direction = normalize(direction); + } + + float dir = dot(direction, position - (parameters.origin * parameters.mode)); + + float t = dir * w + (freq * -time); + + float proximalSine = sin(t); //Y + float lateralSine = cos(t); //XZ + + //Relative XYZ offsets + offset.x += direction.x * parameters.amplitude * lateralSine * steepness; + offset.y += proximalSine * parameters.amplitude; + offset.z += direction.y * parameters.amplitude * lateralSine * steepness; + + /* + tangent += new float3( + -direction.x * direction.x * (steepness * proximalSine), + offset.x, + -direction.x * direction.y * (steepness * proximalSine) + ); + + bitangent += new float3( + -direction.x * direction.y * (steepness * proximalSine), + offset.z, + -direction.y * -direction.y * (steepness * proximalSine) + ); + */ + } + } + waveCount = max(waveCount, 1); + + //tangent = lerp(new float3(1,0,0), tangent, normalStrength / waveCount); + //bitangent = lerp(new float3(0,0,1), bitangent, normalStrength / waveCount); + + offset *= scale; + + return waterLevel + offset.y; + } + + #region Maths + //Mirroring the syntax of HLSL + private static float sqrt(float value) + { + return math.sqrt(value); + } + + private static float sin(float value) + { + return math.sin(value); + } + + private static float cos(float value) + { + return math.cos(value); + } + + private static float2 normalize(float2 value) + { + return math.normalize(value); + } + + private static float dot(float2 a, float2 b) + { + return math.dot(a, b); + } + + private static uint max(uint a, uint b) + { + return math.max(a, b); + } + + private static int min(int a, int b) + { + return math.min(a, b); + } + + private static float3 lerp(float3 a, float3 b, float t) + { + return math.lerp(a, b, t); + } + #endregion + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Gerstner.cs.meta b/Assets/External/Stylized Water 3/Runtime/Gerstner.cs.meta new file mode 100644 index 00000000..f1af084e --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Gerstner.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d403f579c84d487bae99b05854b6f2cf +timeCreated: 1719908608 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Gerstner.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries.meta b/Assets/External/Stylized Water 3/Runtime/HeightQueries.meta new file mode 100644 index 00000000..664708b8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: cd635c635f0b43fb8a6a4adedc8ba9d7 +timeCreated: 1718013480 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Query.cs b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Query.cs new file mode 100644 index 00000000..e8b65e4f --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Query.cs @@ -0,0 +1,267 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using UnityEngine; +using UnityEngine.Profiling; +using UnityEngine.Rendering; +using Unity.Mathematics; + +namespace StylizedWater3 +{ + public static partial class HeightQuerySystem + { + public class Query + { + /// + /// Maximum allowed number of sample positions allowed within a single height query + /// A value too high may result in decreased performance, as the data payload needed to be retrieved from the GPU becomes too large. + /// + public const int MAX_SIZE = 128; + + //Input + private NativeArray samplePositions; + public readonly GraphicsBuffer inputPositionBuffer; + + //Output + public NativeArray outputOffsets; + public readonly GraphicsBuffer outputOffsetsBuffer; + + private int currentBufferIndex = 0; + //Need to keep a buffer alive so it can be used the next frame + private readonly NativeArray[] readbackBuffers = new NativeArray[2]; + + //Every request is issued with an ID + public readonly Dictionary requests = new Dictionary(); + + //Index of the last request. + public int sampleCount; + private bool hasPendingRequest; + + public List availableIndices; + + public Query() + { + RecreateIndexPool(); + + //CPU input + samplePositions = new NativeArray(MAX_SIZE, Allocator.Persistent, NativeArrayOptions.UninitializedMemory); + + //GPU input + inputPositionBuffer = new GraphicsBuffer(GraphicsBuffer.Target.Structured, MAX_SIZE, 3 * sizeof(float)); + inputPositionBuffer.name = "Water Height Query: Sample Positions"; + + //GPU output + outputOffsetsBuffer = new GraphicsBuffer(GraphicsBuffer.Target.Structured, MAX_SIZE, sizeof(float)); + inputPositionBuffer.name = "Water Height Query: Sampled Heights"; + } + + public int GetNextAvailableIndex() + { + var index = availableIndices[0]; + + //Remove as it is now no longer available + availableIndices.Remove(index); + + return index; + } + + public void ReleaseIndex(int index) + { + availableIndices.Add(index); + + //Sorting optimizes the array occupancy + availableIndices.Sort(); + } + + private void RecreateIndexPool() + { + //Populate pool of available indices + availableIndices = new List(); + for (int i = 0; i < MAX_SIZE; i++) + { + availableIndices.Add(i); + } + } + + //Combine all the positions from the requests into one list + private void PopulateSampleList() + { + //Copy all the sample positions in the queue to the summed array + foreach (KeyValuePair request in requests) + { + for (int i = 0; i < request.Value.indices.Count; i++) + { + int index = request.Value.indices[i]; + + //NOTE: Setting items of a NativeArray is slow + samplePositions[index] = request.Value.sampler.positions[i]; + } + } + + //Note: unused indices are not initialized. + //Compute shader is configured not to sample them. Doing so otherwise causes VRAM corruption on Metal. + } + + //Dispatch the compute shader. The "offsets" array will be populated based on the current GPU buffer contents. + public void Dispatch(ComputeCommandBuffer cmd, ComputeShader cs, int kernel) + { + Profiler.BeginSample($"{PROFILER_PREFIX} Setup and dispatch"); + + PopulateSampleList(); + + cmd.SetBufferData(inputPositionBuffer, samplePositions); + cmd.SetComputeIntParam(cs, "sampleCount", sampleCount); + + cmd.SetComputeBufferParam(cs, kernel, "positions", inputPositionBuffer); + + //Output + cmd.SetComputeBufferParam(cs, kernel, "offsets", outputOffsetsBuffer); + + cmd.DispatchCompute(cs, kernel, RenderPass.THREAD_GROUPS, 1, 1); + + Profiler.EndSample(); + } + + void ValidateNativeBuffer(ref NativeArray buffer) + { + if (!buffer.IsCreated || buffer.Length != MAX_SIZE) + { + if (buffer.IsCreated) buffer.Dispose(); + + buffer = new NativeArray(MAX_SIZE, Allocator.Persistent, NativeArrayOptions.UninitializedMemory); + } + } + + public void Readback(UnsafeCommandBuffer cmd) + { + //Array was disposed of after readback request. Forced to recreate it + //https://forum.unity.com/threads/asyncgpureadback-requestintonativearray-causes-invalidoperationexception-on-nativearray.1011955 + //AllocateReadbackBuffer(); + + //Query may have been disposed, but an async readback was still pending... + if (hasPendingRequest) + { + return; + } + hasPendingRequest = true; + + //After the readback request is complete Unity will dispose of this array automatically. Possibly when 'GetData' is called. + //Hence a swap-buffer method is employed + ValidateNativeBuffer(ref readbackBuffers[0]); + ValidateNativeBuffer(ref readbackBuffers[1]); + + NativeArray nextBuffer = readbackBuffers[NextBufferIndex()]; + +#if UNITY_EDITOR + //Unity dev: Remove when bug is fixed + AtomicSafetyHandle ash = NativeArrayUnsafeUtility.GetAtomicSafetyHandle(nextBuffer); + AtomicSafetyHandle.CheckReadAndThrow(ash); + AtomicSafetyHandle.CheckDeallocateAndThrow(ash); +#endif + + cmd.RequestAsyncReadbackIntoNativeArray(ref nextBuffer, outputOffsetsBuffer, MAX_SIZE * outputOffsetsBuffer.stride, 0, OnCompleteReadback); + } + + private void SwapCurrentBuffer() + { + currentBufferIndex = (currentBufferIndex + 1) % 2; + } + + int NextBufferIndex() + { + //return 0; + return (currentBufferIndex + 1) % 2; + } + + private void OnCompleteReadback(AsyncGPUReadbackRequest asyncGPUReadbackRequest) + { + if (asyncGPUReadbackRequest.hasError) + { + throw new Exception("Error reading GPU water height with AsyncGPUReadbackRequest."); + } + + Profiler.BeginSample($"{PROFILER_PREFIX} Readback data"); + + outputOffsets = asyncGPUReadbackRequest.GetData(); + + foreach (KeyValuePair m_request in requests) + { + AsyncRequest request = m_request.Value; + + int queryLength = request.indices.Count; + + for (int i = 0; i < queryLength; i++) + { + //List of indices this request occupies in the query + int index = request.indices[i]; + + var waterHeight = outputOffsets[index]; + + //Height value equals a void do not assign it + if (request.invalidateMisses && EqualsVoid(waterHeight)) + { + //Debug.Log($"Height request for {request.label} at index {index} was invalidated (value={waterHeight})."); + continue; + } + + request.sampler.heightValues[i] = waterHeight; + } + + //Issue a callback event for the external scripts that issued the request + request.InvokeCallback(); + } + outputOffsets.Dispose(); + + SwapCurrentBuffer(); + + hasPendingRequest = false; + + Profiler.EndSample(); + } + + public void Clear() + { + foreach (KeyValuePair request in requests) + { + request.Value.sampler.Dispose(); + } + requests.Clear(); + + RecreateIndexPool(); + } + + public void Dispose() + { + Clear(); + + //Remove itself from the list of queries + queries.Remove(this); + QueryCount--; + + //Wait before we freeing the resources + if (hasPendingRequest) AsyncGPUReadback.WaitAllRequests(); + + samplePositions.Dispose(); + inputPositionBuffer.Dispose(); + + //Dispose any allocated arrays + outputOffsetsBuffer.Dispose(); + + if (readbackBuffers[0].IsCreated) + readbackBuffers[0].Dispose(); + + if (readbackBuffers[1].IsCreated) + readbackBuffers[1].Dispose(); + + //If the query is being disposed, whilst no readback request was pending then this array would not be allocated + if(outputOffsets.IsCreated) outputOffsets.Dispose(); + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Query.cs.meta b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Query.cs.meta new file mode 100644 index 00000000..e2fa12c6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Query.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c49a6fa4f6da4e81b30d4703ef16ca15 +timeCreated: 1718013507 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Query.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Rendering.cs b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Rendering.cs new file mode 100644 index 00000000..ddac09fd --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Rendering.cs @@ -0,0 +1,140 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.RenderGraphModule; +using UnityEngine.Rendering.Universal; + +namespace StylizedWater3 +{ + public static partial class HeightQuerySystem + { + public class RenderPass : ScriptableRenderPass + { + public const int THREAD_GROUPS = 64; //Value must be mirrored in compute shader + + private const string PROFILER_PREFIX = "[GPU] Water Height Query:"; + + private static readonly ProfilingSampler computeProfilerSampler = new ProfilingSampler( $"{PROFILER_PREFIX} Dispatch"); + private static readonly ProfilingSampler readbackAsyncProfilerSampler = new ProfilingSampler( $"{PROFILER_PREFIX} Readback Async"); + + private ComputeShader cs; + private int kernel = -1; + + public void Setup(StylizedWaterRenderFeature renderFeature, ComputeShader heightReadbackCs) + { + if (!heightReadbackCs) + { + Debug.LogError("[Stylized Water 3] Height query render pass initialized with an empty compute shader reference. Was it deleted from the project? Or not referenced on the render feature?" + + " This may happen when deleting the Library folder, creating a race condition where the Compute shader isn't yet imported. You should not add render features in play mode!.", renderFeature); + return; + } + + this.cs = heightReadbackCs; + this.kernel = cs.FindKernel("SampleOffsets"); + } + + private class PassData + { + // Compute shader. + public ComputeShader cs; + public int kernel; + + // Buffer handles for the compute buffers. + public GraphicsBuffer[] input; + public GraphicsBuffer[] output; + } + + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameContext) + { + if (kernel < 0) return; + + HeightPrePass.FrameData heightPrePassData = frameContext.Get(); + + bool cull = HeightQuerySystem.QueryCount == 0; + + using(var builder = renderGraph.AddComputePass($"Water Height Query Sampling", out PassData passData)) + { + passData.cs = this.cs; + passData.kernel = this.kernel; + + passData.input = new GraphicsBuffer[HeightQuerySystem.QueryCount]; + passData.output = new GraphicsBuffer[HeightQuerySystem.QueryCount]; + + for (int i = 0; i < HeightQuerySystem.QueryCount; i++) + { + passData.input[i] = HeightQuerySystem.queries[i].inputPositionBuffer; + BufferHandle inputBufferHandle = renderGraph.ImportBuffer(passData.input[i]); + builder.UseBuffer(inputBufferHandle); + + passData.output[i] = HeightQuerySystem.queries[i].outputOffsetsBuffer; + BufferHandle outputBufferHandle = renderGraph.ImportBuffer(passData.output[i]); + builder.UseBuffer(outputBufferHandle); + } + + //Input + builder.UseTexture(heightPrePassData._WaterHeightBuffer); + + builder.AllowPassCulling(cull); + builder.SetRenderFunc((PassData data, ComputeGraphContext cgContext) => ExecuteSampling(data, cgContext)); + } + + using(var builder = renderGraph.AddUnsafePass("Water Height Query: Async Readback", out PassData passData)) + { + //WebGPU and Nintendo Switch would not support this + builder.EnableAsyncCompute(SystemInfo.supportsAsyncCompute); + + builder.AllowPassCulling(cull); + builder.SetRenderFunc((PassData data, UnsafeGraphContext cgContext) => ExecuteReadback(data, cgContext)); + } + } + + private void ExecuteSampling(PassData data, ComputeGraphContext context) + { + #if UNITY_EDITOR + if (HeightQuerySystem.DISABLE_IN_EDIT_MODE && Application.isPlaying == false) return; + #endif + + var cmd = context.cmd; + using (new ProfilingScope(cmd, computeProfilerSampler)) + { + foreach (var q in HeightQuerySystem.queries) + { + q.Dispatch(cmd, data.cs, data.kernel); + } + } + } + + //Pass using "cmd.RequestAsyncReadbackIntoNativeArray" + private void ExecuteReadback(PassData data, UnsafeGraphContext context) + { + #if UNITY_EDITOR + if (HeightQuerySystem.DISABLE_IN_EDIT_MODE && Application.isPlaying == false) return; + #endif + + var cmd = context.cmd; + + using (new ProfilingScope(cmd, readbackAsyncProfilerSampler)) + { + foreach (var q in HeightQuerySystem.queries) + { + q.Readback(cmd); + } + } + } + + #pragma warning disable CS0672 + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { } + #pragma warning restore CS0672 + + public void Dispose() + { + + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Rendering.cs.meta b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Rendering.cs.meta new file mode 100644 index 00000000..aee37a98 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Rendering.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e53401f9bd904222bee47b59d0342925 +timeCreated: 1718013618 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Rendering.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Request.cs b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Request.cs new file mode 100644 index 00000000..cc750a2f --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Request.cs @@ -0,0 +1,80 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; + +namespace StylizedWater3 +{ + public partial class HeightQuerySystem + { + /// + /// Issues the data from a to an asynchronous GPU readback request. + /// + public class AsyncRequest + { + public delegate void OnRequestCompleted(); + /// + /// Callback fired whenever a height query was successfully returned from the GPU. + /// + public event OnRequestCompleted onCompleted; + + //GUID + public readonly int hashCode; + //Identifier, mainly for debugging + public string label; + + public Sampler sampler; + + /// + /// If the sampling position falls outside the camera frustum, or is not above a water surface, it will hit a void. A default value of -1000 is then used. + /// Use this option to specify if the (invalid) value should be kept or not. If not, the value will represent that of the last successful hit. + /// + public bool invalidateMisses = true; + + //The indices this request occupies in the array + + //TODO: Allow a request to span over multiple queries. This will work around the limit of 128 sample points. + //A request would then reference multiple sets of indices, one per query + public readonly List indices = new List(); + + public int SampleCount => indices.Count; + + public AsyncRequest(int hashCode, Sampler sampler, string label = "") + { + this.hashCode = hashCode; + this.sampler = sampler; + this.label = label; + } + + public void Issue() + { + if (IsSupported() == false) + { + throw new System.ComponentModel.WarningException(HeightQuerySystem.UNSUPPORTED_MESSAGE); + } + + AddRequest(this); + } + + public void Withdraw() + { + WithdrawRequest(this); + } + + public void Dispose() + { + Withdraw(); + + sampler.Dispose(); + } + + internal void InvokeCallback() + { + onCompleted?.Invoke(); + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Request.cs.meta b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Request.cs.meta new file mode 100644 index 00000000..88ebe693 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Request.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0fef246c1fe84870b35f921448c136e3 +timeCreated: 1718111030 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Request.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Sampler.cs b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Sampler.cs new file mode 100644 index 00000000..6b47bea9 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Sampler.cs @@ -0,0 +1,104 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using Unity.Collections; +using Unity.Mathematics; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace StylizedWater3 +{ + public static partial class HeightQuerySystem + { + /// + /// Holds a list of sampling positions, and the returned water height values relative to them + /// + public class Sampler + { + /// + /// Input sample positions in world-space + /// + public NativeArray positions; + /// + /// Output height values at each sampling + /// + public NativeArray heightValues; + + private int currentSampleCount = 0; + + /// + /// Checks if the sampler has been initialized + /// + /// + public bool IsCreated() + { + return currentSampleCount > 0; + } + + public int SampleCount => currentSampleCount; + + /// + /// Initialize the sampler with a number of sampling points. This allocates the memory required. + /// + /// Number of positions to sample at. For best performance, this number should be conservative! + /// Specify if this sampler is used with the CPU-height query method. If so, no limit is imposed on the sample count + /// + public void SetSampleCount(int sampleCount, bool cpu = false) + { + if (cpu == false && sampleCount > Query.MAX_SIZE) + { + Dispose(); + + throw new Exception($"The number of sample positions ({sampleCount}) exceeds the maximum capacity ({Query.MAX_SIZE}) of a single sampler." + + $" Decrease the number of input positions, or issue multiple smaller requests"); + } + + //Changed + if (currentSampleCount != sampleCount) + { + #if SWS_DEV + if(currentSampleCount > 0) Debug.Log($"Sampler count changed from {currentSampleCount} to {sampleCount}"); + #endif + + if (positions.IsCreated) positions.Dispose(); + + //Input data + positions = new NativeArray(sampleCount, Allocator.Persistent, NativeArrayOptions.UninitializedMemory); + + if (heightValues.IsCreated) heightValues.Dispose(); + + //Output data + heightValues = new NativeArray(sampleCount, Allocator.Persistent); + } + currentSampleCount = sampleCount; + } + + [Obsolete("Use SetSampleCount() instead. Method was renamed for clarity")] + public void Initialize(int sampleCount, bool cpu = false) + { + SetSampleCount(sampleCount, cpu); + } + + public void SetSamplePosition(int index, float3 value) + { + if (index > currentSampleCount) + { + throw new Exception($"Index out of range. This sampler was initialized with {currentSampleCount} number of samples. Dispose() and SetSampleCount() the sampler to increase the number of samples!"); + } + + positions[index] = value; + } + + public void Dispose() + { + if (positions.IsCreated) positions.Dispose(); + if (heightValues.IsCreated) heightValues.Dispose(); + + currentSampleCount = 0; + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Sampler.cs.meta b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Sampler.cs.meta new file mode 100644 index 00000000..783cd306 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Sampler.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d5b78379f8de42328f0f5b50b094f050 +timeCreated: 1728760960 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.Sampler.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.cs b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.cs new file mode 100644 index 00000000..3b7967f3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.cs @@ -0,0 +1,275 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using Unity.Collections; +using UnityEngine; +using UnityEngine.Profiling; +using Unity.Mathematics; + +namespace StylizedWater3 +{ + public static partial class HeightQuerySystem + { + private const string PROFILER_PREFIX = "[GPU] Water Height Query:"; + + public static bool DISABLE_IN_EDIT_MODE + { + #if UNITY_EDITOR + get { return UnityEditor.EditorPrefs.GetBool("SW3_HeightQuerySystem_EditMode", false); } + set { UnityEditor.EditorPrefs.SetBool("SW3_HeightQuerySystem_EditMode", value); } + #else + get { return false; } + #endif + } + + /// + /// Reports if the current device/platform supports Compute Shaders + /// + /// + public static bool IsSupported() + { + #if UNITY_WEBGL + return false; + #else + return SystemInfo.supportsComputeShaders; + #endif + } + internal const string UNSUPPORTED_MESSAGE = "[Stylized Water 3] Compute shaders are reportedly not supported on this platform. The GPU Height readback technique relies on this, so is not supported either. " + + "If you are using any \"Align To Water\" components, or custom buoyancy physics using the API, switch all of them to the \"CPU\" method."; + + /// + /// Verifies if the returned height value is valid. If not, the sampling position fell outside the camera frustum or was not above any water surface + /// If false, do not incorporate this value in any processing! + /// + /// + /// + public static bool EqualsVoid(float value) + { + return value <= HeightPrePass.VOID_THRESHOLD; + } + + /// + /// Given 4 height values (each representing the points of a +sign) a normal vector can be derived + /// + /// + /// + /// + /// + /// + /// + public static Vector3 DeriveNormal(float left, float right, float down, float up, float strength = 1f) + { + float xDelta = (left - right) * strength; + float zDelta = (down - up) * strength; + + return Vector3.Normalize(new Vector3(xDelta, 1.0f, zDelta)); + } + + /// + /// A generic front-end to determine the method used to sampling the water height + /// + [Serializable] + public class Interface + { + public enum Method + { + [InspectorName("GPU (Async height readback)")] + GPU, + [InspectorName("CPU (Wave pattern replication)")] + CPU + } + [Tooltip("Two completely different methods can be used to reproduce the wave height." + + "\n\n" + + "[GPU] Requires the \"Height Pre-pass\" feature to be enabled on the render feature. This queues up height samples and processes them in a compute shader, the result will be read back from the GPU asynchronously. " + + "\n\n" + + "Height values will represent the water surface height as it literally appears in the world, including any and all displacement effects. Slowest method, but ultimately more flexible." + + "\n\n" + + "[CPU] Given a water level, and water material, the same wave pattern can be 1:1 replicated through script. Does not include displacement effects and supports flat water geometry only. Fastest method")] + public Method method = Method.GPU; + + [Tooltip("This reference is required to grab the wave distance and height values")] + public WaterObject waterObject; + [Tooltip("Try to find the Water Object below or above the Transform's position. This is slower than assigning a specific Water Object directly!")] + public bool autoFind = true; + public WaveProfile waveProfile; + + public enum WaterLevelSource + { + FixedValue, + [InspectorName("Water Object Y-position")] + WaterObject, + Transform, + Ocean + } + [Tooltip("Configure what should be used to set the base water level. Relative wave height is added to this value")] + public WaterLevelSource waterLevelSource = WaterLevelSource.WaterObject; + [Tooltip("This transform's Y-position is used as the base water level, this value is important and required for correct rendering. As such, underwater rendering does not work with rivers or other non-flat water")] + public Transform waterLevelTransform; + public float waterLevel; + + /// + /// Based on the current configuration, retrieve the water level height value + /// + /// + public float GetWaterLevel() + { + if (waterLevelSource == WaterLevelSource.WaterObject && waterObject) return waterObject.transform.position.y; + if (waterLevelSource == WaterLevelSource.Transform && waterLevelTransform) return waterLevelTransform.position.y; + if (waterLevelSource == WaterLevelSource.Ocean && OceanFollowBehaviour.Instance) + { + //Store it, so that it is always valid even when the singleton hasn't loaded yet + waterLevel = OceanFollowBehaviour.Instance.transform.position.y; + return waterLevel; + } + + return waterLevel; + } + + public bool IsRiverMaterial() + { + return waterObject.material.IsKeywordEnabled(ShaderParams.Keywords.River); + } + + public WaterObject GetWaterObject(Vector3 worldPosition) + { + if (autoFind) waterObject = WaterObject.Find(worldPosition, false); + + return waterObject; + } + + public bool HasMissingReferences() + { + return (waterObject && waterObject.material && waveProfile) == false; + } + } + + /// + /// List of queries being submitted the next frame + /// + public static readonly List queries = new List(); + + public static int QueryCount { get; private set; } + + /// + /// If there are any height queries present, the displacement pre-pass must execute to ensure data is being returned + /// + public static bool RequiresHeightPrepass => QueryCount > 0; + + private static void AddRequest(AsyncRequest request) + { + //Find the next available query with enough space for the positions + //-If not, create a new query + + Profiler.BeginSample($"{PROFILER_PREFIX} Add Request"); + + foreach (Query q in queries) + { + if (q.requests.ContainsKey(request.hashCode)) + { + throw new Exception($"A request with the ID {request.hashCode} has already been issued. Use the \"onReadbackCompleted\" callback to receive the data." + + $"Use the DisposeRequest function only when you are sure you no longer need the data."); + } + } + + int queryIndex = queries.Count; + int sampleCount = request.sampler.SampleCount; + + if (sampleCount == 0) + { + return; + } + + void CreateNewQuery() + { + queries.Add(new Query()); + QueryCount++; + queryIndex++; + } + + //Initial query needs to be created + if (queryIndex == 0) + { + CreateNewQuery(); + } + + int occupiedIndices = HeightQuerySystem.Query.MAX_SIZE - queries[queryIndex - 1].availableIndices.Count; + //Not enough space in the latest query for this many samples + if (occupiedIndices + sampleCount >= HeightQuerySystem.Query.MAX_SIZE) + { + CreateNewQuery(); + + //Debug.Log($"Query #{queryIndex-1} contains {occupiedIndices}, requires {occupiedIndices + sampleCount}. Created a new query (#{queryIndex})."); + } + + var query = queries[queryIndex-1]; + + //Assign the indices available in the query to the request + for (int i = 0; i < sampleCount; i++) + { + request.indices.Add(query.GetNextAvailableIndex()); + } + + query.sampleCount += sampleCount; + query.requests.Add(request.hashCode, request); + + Profiler.EndSample(); + } + + private static void WithdrawRequest(AsyncRequest request) + { + Profiler.BeginSample($"{PROFILER_PREFIX} Withdraw Request"); + + for (int i = 0; i < queries.Count; i++) + { + var query = queries[i]; + + if (query.requests.TryGetValue(request.hashCode, out _)) + { + //Remove request from query + query.requests.Remove(request.hashCode); + + int indexCount = request.indices.Count; + + //Return the occupied indices to the pool + for (int j = 0; j < indexCount; j++) + { + query.ReleaseIndex(request.indices[j]); + } + + //Update the current sample count + query.sampleCount -= indexCount; + + //Clear the list of occupied indices, these will be repopulate should the request be issued again + request.indices.Clear(); + + //If the query is now completely empty, yeet it + if (query.requests.Count == 0) + { + //Debug.Log($"Query #{i} is now empty and was disposed"); + + query.Dispose(); + } + } + } + + Profiler.EndSample(); + } + + /// + /// Clears all queries from the system + /// + //Need to force a clean start when entering/exiting play mode. Otherwise certain arrays will get de-allocated. + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)] + public static void Clear() + { + for (int i = 0; i < queries.Count; i++) + { + queries[i].Dispose(); + } + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.cs.meta b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.cs.meta new file mode 100644 index 00000000..c47c58c5 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4a62da4d17a748dc840316692da46106 +timeCreated: 1717752156 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/HeightQueries/HeightQuerySystem.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/PipelineUtilities.cs b/Assets/External/Stylized Water 3/Runtime/PipelineUtilities.cs new file mode 100644 index 00000000..abf628a7 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/PipelineUtilities.cs @@ -0,0 +1,859 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using UnityEngine; +using UnityEngine.Rendering; +using Debug = UnityEngine.Debug; +#if URP +using UnityEngine.Rendering.Universal; + +#if !UNITY_2021_2_OR_NEWER +using UniversalRendererData = UnityEngine.Rendering.Universal.ForwardRendererData; +#endif + +using ScriptableRendererFeature = UnityEngine.Rendering.Universal.ScriptableRendererFeature; +#endif + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace StylizedWater3 +{ + //Stay awesome Unity, locking everything behind internal UI code just makes things convoluted. + public static class PipelineUtilities + { + private const string renderDataListFieldName = "m_RendererDataList"; + private const string renderFeaturesListFieldName = "m_RendererFeatures"; + private const string defaultRendererIndexFieldName = "m_DefaultRendererIndex"; + +#if URP + public static ScriptableRendererData[] GetRenderDataList(UniversalRenderPipelineAsset asset) + { + FieldInfo renderDataListField = typeof(UniversalRenderPipelineAsset).GetField(renderDataListFieldName, BindingFlags.NonPublic | BindingFlags.Instance); + + if (renderDataListField != null) + { + return (ScriptableRendererData[])renderDataListField.GetValue(asset); + } + + throw new Exception($"Reflection failed on field \"{renderDataListFieldName}\" from class \"UniversalRenderPipelineAsset\". URP API likely changed"); + } + + public static void RefreshRendererList() + { + if (UniversalRenderPipeline.asset == null) + { + Debug.LogError("No pipeline is active, do not display UI that uses this function if it isn't!"); + } + + ScriptableRendererData[] m_rendererDataList = GetRenderDataList(UniversalRenderPipeline.asset); + + //Display names + _rendererDisplayList = new GUIContent[m_rendererDataList.Length+1]; + + int defaultIndex = GetDefaultRendererIndex(UniversalRenderPipeline.asset); + _rendererDisplayList[0] = new GUIContent($"Default ({(m_rendererDataList[defaultIndex].name)})"); + + for (int i = 1; i < _rendererDisplayList.Length; i++) + { + if (m_rendererDataList[i - 1] != null) + { + _rendererDisplayList[i] = new GUIContent($"{(i - 1).ToString()}: {(m_rendererDataList[i - 1]).name}"); + } + else + { + _rendererDisplayList[i] = new GUIContent("(Missing)"); + } + } + + //Indices + _rendererIndexList = new int[m_rendererDataList.Length+1]; + for (int i = 0; i < _rendererIndexList.Length; i++) + { + _rendererIndexList[i] = i-1; + } + } + + private static GUIContent[] _rendererDisplayList; + public static GUIContent[] rendererDisplayList + { + get + { + if (_rendererDisplayList == null) RefreshRendererList(); + return _rendererDisplayList; + } + } + + private static int[] _rendererIndexList; + public static int[] rendererIndexList + { + get + { + if (_rendererIndexList == null) RefreshRendererList(); + return _rendererIndexList; + } + } + + /// + /// Given a renderer index, validates if there is actually a renderer at the index. Otherwise returns the index of the default renderer. + /// + /// + /// + public static int ValidateRenderer(int index) + { + if (UniversalRenderPipeline.asset) + { + int defaultRendererIndex = GetDefaultRendererIndex(UniversalRenderPipeline.asset); + ScriptableRendererData[] m_rendererDataList = GetRenderDataList(UniversalRenderPipeline.asset); + + //-1 is used to indicate the default renderer + if (index == -1) index = defaultRendererIndex; + + //Check if any renderer exists at the current index + if (!(index < m_rendererDataList.Length && m_rendererDataList[index] != null)) + { + Debug.LogWarning($"Renderer at index {index.ToString()} is missing, falling back to Default Renderer. {m_rendererDataList[defaultRendererIndex].name}", UniversalRenderPipeline.asset); + return defaultRendererIndex; + } + else + { + //Valid + return index; + } + } + else + { + Debug.LogError("No Universal Render Pipeline is currently active."); + return 0; + } + } + + /// + /// Checks if a ForwardRenderer has been assigned to the pipeline asset + /// + /// + public static bool IsRendererAdded(ScriptableRendererData renderer) + { + if (UniversalRenderPipeline.asset) + { + ScriptableRendererData[] m_rendererDataList = GetRenderDataList(UniversalRenderPipeline.asset); + bool isPresent = false; + + for (int i = 0; i < m_rendererDataList.Length; i++) + { + if (m_rendererDataList[i] == renderer) isPresent = true; + } + + return isPresent; + } + else + { + Debug.LogError("No Universal Render Pipeline is currently active."); + return false; + } + } + + /// + /// Adds a ForwardRenderer to the pipeline asset in use + /// + /// + private static int AddRendererToPipeline(ScriptableRendererData renderer) + { + if (renderer == null) return -1; + + if (UniversalRenderPipeline.asset) + { + ScriptableRendererData[] m_rendererDataList = GetRenderDataList(UniversalRenderPipeline.asset); + List rendererDataList = new List(); + + for (int i = 0; i < m_rendererDataList.Length; i++) + { + rendererDataList.Add(m_rendererDataList[i]); + } + + rendererDataList.Add(renderer); + int index = rendererDataList.Count-1; + + typeof(UniversalRenderPipelineAsset).GetField(renderDataListFieldName, BindingFlags.NonPublic | BindingFlags.Instance).SetValue(UniversalRenderPipeline.asset, rendererDataList.ToArray()); + +#if UNITY_EDITOR + EditorUtility.SetDirty(UniversalRenderPipeline.asset); +#endif + + RefreshRendererList(); + + return index; + } + else + { + Debug.LogError("No Universal Render Pipeline is currently active."); + } + + return -1; + } + + private static int GetDefaultRendererIndex(UniversalRenderPipelineAsset asset) + { + FieldInfo fieldInfo = typeof(UniversalRenderPipelineAsset).GetField(defaultRendererIndexFieldName, BindingFlags.NonPublic | BindingFlags.Instance); + + if (fieldInfo == null) {throw new Exception($"Reflection failed on the field named \"{defaultRendererIndexFieldName}\". It may have changed in the current Unity version");} + + return (int)fieldInfo.GetValue(asset); + } + + /// + /// Gets the renderer from the current pipeline asset that's marked as default + /// + /// + public static ScriptableRendererData GetDefaultRenderer(UniversalRenderPipelineAsset asset = null) + { + if (asset == null) asset = UniversalRenderPipeline.asset; + + if (asset) + { + ScriptableRendererData[] rendererDataList = GetRenderDataList(asset); + int defaultRendererIndex = GetDefaultRendererIndex(asset); + + return rendererDataList[defaultRendererIndex]; + } + + throw new Exception("No Universal Render Pipeline is currently active."); + } + + /// + /// Editor only! Checks if the given render feature is missing on any renderers. Displays a pop up if that is the case, with the option to add it + /// + /// Descriptive name for the render feature + /// Render feature type + [Conditional("UNITY_EDITOR")] + public static void ValidateRenderFeatureSetup(string name) + { + if (Application.isPlaying == false) + { + if (RenderFeatureMissing(out ScriptableRendererData[] renderers)) + { + #if UNITY_EDITOR + string[] rendererNames = new string[renderers.Length]; + for (int i = 0; i < rendererNames.Length; i++) + { + rendererNames[i] = "• " + renderers[i].name; + } + + if (EditorUtility.DisplayDialog($"Stylized Water 3", + $"The {name} render feature hasn't been added to the following renderers:\n\n" + + System.String.Join(System.Environment.NewLine, rendererNames) + + $"\n\nThis is required for rendering to take effect", "Setup", "Ignore")) + { + SetupRenderFeature(name:$"Stylized Water 3: {name}"); + } + #endif + } + } + } + + /// + /// Retrieves the given render feature from the given renderer + /// + /// + /// + public static ScriptableRendererFeature GetRenderFeature(ScriptableRendererData renderer) + { + if(renderer == null) renderer = GetDefaultRenderer(); + + foreach (ScriptableRendererFeature feature in renderer.rendererFeatures) + { + if (feature && feature.GetType() == typeof(T)) return feature; + } + + return null; + } + + /// + /// Retrieves the given render feature from the first renderer that contains it + /// + /// + /// + public static ScriptableRendererFeature GetRenderFeature() + { + if (!UniversalRenderPipeline.asset) return null; + + ScriptableRendererData[] rendererDataList = GetRenderDataList(UniversalRenderPipeline.asset); + + for (int i = 0; i < rendererDataList.Length; i++) + { + foreach (ScriptableRendererFeature feature in rendererDataList[i].rendererFeatures) + { + if (feature && feature.GetType() == typeof(T)) return feature; + } + } + + return null; + } + + /// + /// Checks if a ScriptableRendererFeature is added to the default renderer + /// + /// + /// + /// + public static bool RenderFeatureAdded(ScriptableRendererData renderer = null) + { + if(renderer == null) renderer = GetDefaultRenderer(); + + foreach (ScriptableRendererFeature feature in renderer.rendererFeatures) + { + if(feature == null) continue; + + if (feature.GetType() == typeof(T)) + { + return true; + } + } + + return false; + } + + /// + /// Checks if the given render feature is missing on any configured renderers + /// + /// + /// + /// + public static bool RenderFeatureMissing(out ScriptableRendererData[] renderers) + { + List unconfigured = new List(); + + foreach (var asset in GraphicsSettings.allConfiguredRenderPipelines) + { + ScriptableRendererData renderer = GetDefaultRenderer((UniversalRenderPipelineAsset)asset); + + if(RenderFeatureAdded(renderer) == false) + { + unconfigured.Add(renderer); + } + } + + renderers = unconfigured.Distinct().ToArray(); + + return renderers.Length > 0; + } + + /// + /// Adds a render feature of a given type to all default renderers + /// + /// + /// + public static List SetupRenderFeature(string name = "") + { + List renderers = new List(); + + foreach (var asset in GraphicsSettings.allConfiguredRenderPipelines) + { + ScriptableRendererData renderer = GetDefaultRenderer((UniversalRenderPipelineAsset)asset); + + if (RenderFeatureAdded(renderer) == false) + { + AddRenderFeature(renderer, name); + renderers.Add(renderer); + } + } + + return renderers; + } + + /// + /// Adds a ScriptableRendererFeature to the renderer (default is none is supplied) + /// + /// + /// + public static ScriptableRendererFeature AddRenderFeature(ScriptableRendererData renderer = null, string name = "") + { + if (renderer == null) renderer = GetDefaultRenderer(); + + ScriptableRendererFeature feature = (ScriptableRendererFeature)ScriptableRendererFeature.CreateInstance(typeof(T).ToString()); + feature.name = name == string.Empty ? typeof(T).ToString() : name; + + //Call the Reset method, otherwise done when added through the GUI + if (Application.isPlaying) + { + MethodInfo resetMethod = (feature.GetType()).GetMethod("Reset", BindingFlags.NonPublic | BindingFlags.Instance); + if (resetMethod != null) resetMethod.Invoke(feature, null); + } + + //Add component https://github.com/Unity-Technologies/Graphics/blob/d0473769091ff202422ad13b7b764c7b6a7ef0be/com.unity.render-pipelines.universal/Editor/ScriptableRendererDataEditor.cs#L180 +#if UNITY_EDITOR + AssetDatabase.AddObjectToAsset(feature, renderer); + AssetDatabase.TryGetGUIDAndLocalFileIdentifier(feature, out var guid, out long localId); +#endif + + //Get feature list + FieldInfo renderFeaturesInfo = typeof(ScriptableRendererData).GetField(renderFeaturesListFieldName, BindingFlags.Instance | BindingFlags.NonPublic); + List m_RendererFeatures = (List)renderFeaturesInfo.GetValue(renderer); + + //Modify and set list + m_RendererFeatures.Add(feature); + renderFeaturesInfo.SetValue(renderer, m_RendererFeatures); + + //Onvalidate will call ValidateRendererFeatures and update m_RendererPassMap + MethodInfo validateInfo = typeof(ScriptableRendererData).GetMethod("OnValidate", BindingFlags.Instance | BindingFlags.NonPublic); + validateInfo.Invoke(renderer, null); + +#if UNITY_EDITOR + EditorUtility.SetDirty(renderer); + AssetDatabase.SaveAssets(); +#endif + + Debug.Log("" + feature.name + " was added to the " + renderer.name + " renderer"); + + return feature; + } + + public static bool IsRenderFeatureEnabled(ScriptableRendererData forwardRenderer = null, bool autoEnable = false) + { + if (!UniversalRenderPipeline.asset) return true; + + if (forwardRenderer == null) forwardRenderer = GetDefaultRenderer(); + + FieldInfo renderFeaturesInfo = typeof(ScriptableRendererData).GetField(renderFeaturesListFieldName, BindingFlags.Instance | BindingFlags.NonPublic); + List m_RendererFeatures = (List)renderFeaturesInfo.GetValue(forwardRenderer); + + foreach (ScriptableRendererFeature feature in m_RendererFeatures) + { + if (feature && feature.GetType() == typeof(T)) + { + if (feature.isActive == false && autoEnable) + { + feature.SetActive(true); + + #if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(forwardRenderer); + #endif + } + + return feature.isActive; + } + } + + //Fallback, if it is not even in the list + return true; + } + + public static void ToggleRenderFeature(bool state) + { + ScriptableRendererData forwardRenderer = GetDefaultRenderer(); + + foreach (ScriptableRendererFeature feature in forwardRenderer.rendererFeatures) + { + if (feature && feature.GetType() == typeof(T)) feature.SetActive(state); + } + + #if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(forwardRenderer); + #endif + } + + public static void CreateAndAssignNewRenderer(out int index, out string path) + { + ScriptableRendererData defaultRenderer = GetDefaultRenderer(); + + path = string.Empty; + + #if UNITY_EDITOR + //Save next to default renderer + path = AssetDatabase.GetAssetPath(defaultRenderer); + path = path.Replace(defaultRenderer.name + ".asset", string.Empty); + #endif + + ScriptableRendererData r = CreateEmptyRenderer("Planar Reflections Renderer", path); + #if UNITY_EDITOR + path = AssetDatabase.GetAssetPath(r); + #endif + + index = AddRendererToPipeline(r); + + //Debug.Log("Created new renderer with index " + index); + } + + /// + /// Create an empty renderer, without any render features, but otherwise suitable for camera rendering + /// + /// + /// + public static UniversalRendererData CreateEmptyRenderer(string name = "", string folder = "") + { + ScriptableRendererData defaultRenderer = GetDefaultRenderer(); + + UniversalRendererData rendererData = ScriptableObject.CreateInstance(); + + #if UNITY_EDITOR + //Save asset to disk, and load + if (folder != string.Empty) + { + string path = $"{folder}{name}.asset"; + AssetDatabase.CreateAsset(rendererData, path); + + AssetDatabase.ImportAsset(path); + + rendererData = AssetDatabase.LoadAssetAtPath(path); + } + #endif + + UniversalRendererData r = (UniversalRendererData)defaultRenderer; + + #if UNITY_EDITOR + //Copy all fields. This should include the shader references, and post processing + XR data. Failing to do so results in nullrefs on these resources when using the renderer. + EditorUtility.CopySerialized(r, rendererData); + #endif + + //After copying, apply these unique changes + rendererData.name = name; //Name must match file name + rendererData.rendererFeatures.Clear(); + + /* CopySerialized function accounts for any public fields + rendererData.shaders = r.shaders; + rendererData.postProcessData = r.postProcessData; + + #if UNITY_2021_2_OR_NEWER + rendererData.debugShaders = r.debugShaders; + rendererData.xrSystemData = r.xrSystemData; + #endif + */ + + return rendererData; + } + + public static void RemoveRendererFromPipeline(ScriptableRendererData renderer) + { + if (renderer == null) return; + + if (UniversalRenderPipeline.asset) + { + BindingFlags bindings = BindingFlags.NonPublic | BindingFlags.Instance; + + ScriptableRendererData[] m_rendererDataList = GetRenderDataList(UniversalRenderPipeline.asset); + List rendererDataList = new List(m_rendererDataList); + + if (rendererDataList.Contains(renderer)) + { + rendererDataList.Remove(renderer); + + typeof(UniversalRenderPipelineAsset).GetField(renderDataListFieldName, bindings).SetValue(UniversalRenderPipeline.asset, rendererDataList.ToArray()); + +#if UNITY_EDITOR + EditorUtility.SetDirty(UniversalRenderPipeline.asset); + AssetDatabase.SaveAssets(); +#endif + } + } + else + { + Debug.LogError("No Universal Render Pipeline is currently active."); + } + } + + /// + /// Checks if a ForwardRenderer has been assigned to the pipeline asset, if not it is added + /// + /// + public static void ValidatePipelineRenderers(ScriptableRendererData pass) + { + if (pass == null) + { + Debug.LogError("Pass is null"); + return; + } + + BindingFlags bindings = System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance; + + ScriptableRendererData[] m_rendererDataList = (ScriptableRendererData[])typeof(UniversalRenderPipelineAsset).GetField(renderDataListFieldName, bindings).GetValue(UniversalRenderPipeline.asset); + bool isPresent = false; + + for (int i = 0; i < m_rendererDataList.Length; i++) + { + if (m_rendererDataList[i] == pass) isPresent = true; + } + + if (!isPresent) + { + AddRendererToPipeline(pass); + } + else + { + #if SWS_DEV + Debug.Log($"The {pass.name} ScriptableRendererFeature is already assigned to the pipeline asset"); + #endif + } + } + + /// + /// Sets the renderer index of the related forward renderer + /// + /// + /// + public static void AssignRendererToCamera(UniversalAdditionalCameraData camData, ScriptableRendererData renderer) + { + if (UniversalRenderPipeline.asset) + { + if (renderer) + { + ScriptableRendererData[] rendererDataList = GetRenderDataList(UniversalRenderPipeline.asset); + + for (int i = 0; i < rendererDataList.Length; i++) + { + if (rendererDataList[i] == renderer) camData.SetRenderer(i); + } + } + } + else + { + Debug.LogError("No Universal Render Pipeline is currently active."); + } + } + + public static bool IsDepthTextureOptionDisabledAnywhere(out List renderers) + { + bool state = false; + renderers = new List(); + + for (int i = 0; i < GraphicsSettings.allConfiguredRenderPipelines.Length; i++) + { + if(GraphicsSettings.allConfiguredRenderPipelines[i].GetType() != typeof(UniversalRenderPipelineAsset)) continue; + + UniversalRenderPipelineAsset pipeline = (UniversalRenderPipelineAsset)GraphicsSettings.allConfiguredRenderPipelines[i]; + + state |= (pipeline.supportsCameraDepthTexture == false); + + if (pipeline.supportsCameraDepthTexture == false) + { + renderers.Add(pipeline); + } + } + + return state; + } + + public static void SetDepthTextureOnAllAssets(bool state) + { + for (int i = 0; i < GraphicsSettings.allConfiguredRenderPipelines.Length; i++) + { + if(GraphicsSettings.allConfiguredRenderPipelines[i].GetType() != typeof(UniversalRenderPipelineAsset)) continue; + + UniversalRenderPipelineAsset pipeline = (UniversalRenderPipelineAsset)GraphicsSettings.allConfiguredRenderPipelines[i]; + + #if UNITY_EDITOR + if(pipeline.supportsCameraDepthTexture != state) EditorUtility.SetDirty(pipeline); + #endif + + pipeline.supportsCameraDepthTexture = state; + } + } + + public static bool IsOpaqueTextureOptionDisabledAnywhere(out List renderers) + { + bool state = false; + renderers = new List(); + + for (int i = 0; i < GraphicsSettings.allConfiguredRenderPipelines.Length; i++) + { + if(GraphicsSettings.allConfiguredRenderPipelines[i].GetType() != typeof(UniversalRenderPipelineAsset)) continue; + + UniversalRenderPipelineAsset pipeline = (UniversalRenderPipelineAsset)GraphicsSettings.allConfiguredRenderPipelines[i]; + + state |= (pipeline.supportsCameraOpaqueTexture == false); + + if (pipeline.supportsCameraOpaqueTexture == false) + { + renderers.Add(pipeline); + } + } + + return state; + } + + public static bool IsOpaqueDownSampled() + { + return UniversalRenderPipeline.asset.opaqueDownsampling != Downsampling.None; + } + + public static bool IsOpaqueDownSampled(out List renderers) + { + bool state = false; + renderers = new List(); + + for (int i = 0; i < GraphicsSettings.allConfiguredRenderPipelines.Length; i++) + { + if(GraphicsSettings.allConfiguredRenderPipelines[i].GetType() != typeof(UniversalRenderPipelineAsset)) continue; + + UniversalRenderPipelineAsset pipeline = (UniversalRenderPipelineAsset)GraphicsSettings.allConfiguredRenderPipelines[i]; + + state |= (pipeline.opaqueDownsampling != Downsampling.None); + + if (pipeline.opaqueDownsampling != Downsampling.None) + { + renderers.Add(pipeline); + } + } + + return state; + } + + public static void SetOpaqueTextureOnAllAssets(bool state) + { + for (int i = 0; i < GraphicsSettings.allConfiguredRenderPipelines.Length; i++) + { + if(GraphicsSettings.allConfiguredRenderPipelines[i].GetType() != typeof(UniversalRenderPipelineAsset)) continue; + + UniversalRenderPipelineAsset pipeline = (UniversalRenderPipelineAsset)GraphicsSettings.allConfiguredRenderPipelines[i]; + + #if UNITY_EDITOR + if(pipeline.supportsCameraOpaqueTexture != state) EditorUtility.SetDirty(pipeline); + #endif + + pipeline.supportsCameraOpaqueTexture = state; + } + } + + public static void DisableOpaqueDownsampling(List renderers = null) + { + if (renderers == null) IsOpaqueDownSampled(out renderers); + + for (int i = 0; i < renderers.Count; i++) + { + if(renderers[i].GetType() != typeof(UniversalRenderPipelineAsset)) continue; + + UniversalRenderPipelineAsset pipeline = renderers[i]; + + #if UNITY_EDITOR + if(pipeline.opaqueDownsampling != Downsampling.None) EditorUtility.SetDirty(pipeline); + #endif + + FieldInfo field = typeof(UniversalRenderPipelineAsset).GetField("m_OpaqueDownsampling", BindingFlags.NonPublic | BindingFlags.Instance); + if (field != null) + { + field.SetValue(pipeline, Downsampling.None); + } + else + { + Debug.LogWarning("Could not find field 'm_OpaqueDownsampling' via reflection."); + } + } + } + + public static bool IsDecalRenderFeatureSetup() + { + + ScriptableRendererData defaultRenderer = GetDefaultRenderer(); + + FieldInfo renderFeaturesInfo = typeof(ScriptableRendererData).GetField(renderFeaturesListFieldName, BindingFlags.Instance | BindingFlags.NonPublic); + List m_RendererFeatures = (List)renderFeaturesInfo.GetValue(defaultRenderer); + + foreach (ScriptableRendererFeature feature in m_RendererFeatures) + { + if (feature && feature.GetType().ToString() == "UnityEngine.Rendering.Universal.DecalRendererFeature") + { + return feature.isActive; + } + } + + //Fallback, if it is not even in the list + return false; + } + + public static LightCookieFormat GetDefaultLightCookieFormat() + { + if (!UniversalRenderPipeline.asset) return LightCookieFormat.GrayscaleLow; + + FieldInfo m_AdditionalLightsCookieFormat = typeof(UniversalRenderPipelineAsset).GetField("m_AdditionalLightsCookieFormat", BindingFlags.Instance | BindingFlags.NonPublic); + LightCookieFormat lightsCookieFormat = (LightCookieFormat)m_AdditionalLightsCookieFormat.GetValue(UniversalRenderPipeline.asset); + + return lightsCookieFormat; + } + + public static bool TransparentShadowsEnabled() + { + if (!UniversalRenderPipeline.asset) return false; + + UniversalRendererData main = (UniversalRendererData)GetDefaultRenderer(); + + return main ? main.shadowTransparentReceive : false; + } + + public static bool IsDepthAfterTransparents(out List renderers) + { + bool state = false; + renderers = new List(); + + for (int i = 0; i < GraphicsSettings.allConfiguredRenderPipelines.Length; i++) + { + if (GraphicsSettings.allConfiguredRenderPipelines[i].GetType() != typeof(UniversalRenderPipelineAsset)) continue; + + UniversalRenderPipelineAsset pipeline = (UniversalRenderPipelineAsset)GraphicsSettings.allConfiguredRenderPipelines[i]; + ScriptableRendererData[] rendererDataList = GetRenderDataList(pipeline); + + for (int j = 0; j < rendererDataList.Length; j++) + { + UniversalRendererData renderer = (UniversalRendererData)rendererDataList[j]; + + //Exception, this never renders the water itself + if(renderer.name == "Planar Reflections Renderer") continue; + + //Does not render transparents or no water? + if (renderer.transparentLayerMask == 0 || + renderer.transparentLayerMask != (renderer.transparentLayerMask | (1 << 4)) + ) + { + Debug.Log($"Skipped {renderer.name}"); + continue; + } + + if (renderer.copyDepthMode == CopyDepthMode.AfterTransparents) + { + renderers.Add(renderer); + state = true; + } + } + + } + + //Renderers may be present of multiple pipeline assets, so remove the duplicates + renderers = renderers.Distinct().ToList(); + + return state; + } + + public static bool IsDepthAfterTransparents() + { + bool state = false; + + UniversalRendererData renderer = (UniversalRendererData)GetDefaultRenderer(UniversalRenderPipeline.asset); + + if (renderer.copyDepthMode == CopyDepthMode.AfterTransparents) + { + state = true; + } + + return state; + } + + public static bool VREnabled() + { + return XRSRPSettings.enabled; + } + + public static bool RenderGraphEnabled() + { + RenderGraphSettings settings = UnityEngine.Rendering.GraphicsSettings.GetRenderPipelineSettings(); + return settings != null ? settings.enableRenderCompatibilityMode == false : false; + } +#endif + } +} diff --git a/Assets/External/Stylized Water 3/Runtime/PipelineUtilities.cs.meta b/Assets/External/Stylized Water 3/Runtime/PipelineUtilities.cs.meta new file mode 100644 index 00000000..39627176 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/PipelineUtilities.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 3b99364911c19644f8afb7f5ed757403 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/PipelineUtilities.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/RenderTargetDebugger.cs b/Assets/External/Stylized Water 3/Runtime/RenderTargetDebugger.cs new file mode 100644 index 00000000..26dc48f6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/RenderTargetDebugger.cs @@ -0,0 +1,74 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.Rendering; + +namespace StylizedWater3 +{ + public static class RenderTargetDebugger + { + public class RenderTarget + { + public string name; + public int order = 1000; + + public string description = string.Empty; + + public string textureName; + public int propertyID; + } + + public static List renderTargets = new List(); + //For dropdown menus + public static string[] renderTargetNames; + + public static int InspectedProperty = -1; + public static RTHandle CurrentRT; + public static string CurrentCameraName; + + public static void Initialize() + { + renderTargets.Clear(); + + var assemblies = System.AppDomain.CurrentDomain.GetAssemblies(); + foreach (var assembly in assemblies) + { + Type[] types = assembly.GetTypes(); + foreach (Type type in types) + { + if (type.IsAbstract || type.IsInterface) continue; + + if (type.IsSubclassOf(typeof(RenderTarget))) + { + //Debug.Log($"Found {type}"); + + RenderTarget rt = Activator.CreateInstance(type) as RenderTarget; + + renderTargets.Add(rt); + } + } + } + + renderTargets = renderTargets.OrderBy(o => o.order).ToList(); + + renderTargetNames = new string[renderTargets.Count]; + for (int i = 0; i < renderTargetNames.Length; i++) + { + renderTargetNames[i] = renderTargets[i].name; + } + } + + public static void Cleanup() + { + InspectedProperty = -1; + CurrentRT?.Release(); + CurrentCameraName = string.Empty; + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/RenderTargetDebugger.cs.meta b/Assets/External/Stylized Water 3/Runtime/RenderTargetDebugger.cs.meta new file mode 100644 index 00000000..d130ef09 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/RenderTargetDebugger.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: eedd31f6ba91478bac642c9d755e8768 +timeCreated: 1721025395 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/RenderTargetDebugger.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering.meta b/Assets/External/Stylized Water 3/Runtime/Rendering.meta new file mode 100644 index 00000000..1046a3d4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 24dc3dfc15f65a94c8312a1f9e4fad7e +timeCreated: 1701077187 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering/HeightPrePass.cs b/Assets/External/Stylized Water 3/Runtime/Rendering/HeightPrePass.cs new file mode 100644 index 00000000..7d8cceda --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering/HeightPrePass.cs @@ -0,0 +1,231 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Experimental.Rendering; +using UnityEngine.Rendering; + +#if URP +using UnityEngine.Rendering.RenderGraphModule; +using UnityEngine.Rendering.Universal; + +namespace StylizedWater3 +{ + public class HeightPrePass : ScriptableRenderPass + { + private const string profilerTag = "Water Height Prepass"; + private static readonly ProfilingSampler profilerSampler = new ProfilingSampler(profilerTag); + + /// + /// Using this as a value comparison in shader code to determine if not water is being hit + /// + public const float VOID_THRESHOLD = -1000f; + private static readonly Color targetClearColor = new Color(VOID_THRESHOLD, 0, 0, 0); + + [Serializable] + public class Settings + { + public bool enable = true; + + public float range = 500f; + + [Range(1f, 8f)] + public int cellsPerUnit = 4; + + public int maxResolution = 4096; + + [Tooltip("[When in Play mode] Skips processing the height prepass for the scene-view camera. This helps keep the rendering centered around the main camera when in Play mode.")] + public bool disableInSceneView = true; + + /// + /// Returns the enabled state, either from the settings or if forced because it is required by other functionality + /// + public bool isEnabled => enable || StylizedWaterRenderFeature.RequireHeightPrePass || HeightQuerySystem.RequiresHeightPrepass; + } + + //Render pass + FilteringSettings m_FilteringSettings; + RenderStateBlock m_RenderStateBlock; + private readonly List m_ShaderTagIdList = new List() + { + new (ShaderParams.LightModes.WaterHeight) + }; + + public HeightPrePass() + { + m_FilteringSettings = new FilteringSettings(RenderQueueRange.all, LayerMask.GetMask("Water")); + m_RenderStateBlock = new RenderStateBlock(RenderStateMask.Nothing); + } + + public const string BufferName = "_WaterHeightBuffer"; + public static readonly int _WaterHeightBuffer = Shader.PropertyToID(BufferName); + private const string CoordsName = "_WaterHeightCoords"; + private static readonly int _WaterHeightCoords = Shader.PropertyToID(CoordsName); + public static readonly int _WaterHeightPrePassAvailable = Shader.PropertyToID("_WaterHeightPrePassAvailable"); + + private int resolution; + private int m_resolution; + + private Settings settings; + + private RendererListParams rendererListParams; + private RendererList rendererList; + + public sealed class RenderTargetDebugContext : RenderTargetDebugger.RenderTarget + { + public RenderTargetDebugContext() + { + this.name = "Height Buffer"; + this.description = "Water geometry height (red channel). Height displacement from effects (green channel)." + + "\n\nUsed by: Water decals, GPU-based buoyancy"; + this.textureName = BufferName; + this.propertyID = _WaterHeightBuffer; + this.order = 0; + } + } + + public void Setup(Settings settings) + { + this.settings = settings; + + resolution = PlanarProjection.CalculateResolution(settings.range, settings.cellsPerUnit, 16, settings.maxResolution); + + } + + public class FrameData : ContextItem + { + public TextureHandle _WaterHeightBuffer; + + public override void Reset() + { + _WaterHeightBuffer = TextureHandle.nullHandle; + } + } + + private class PassData + { + public RendererListHandle rendererListHandle; + public TextureHandle renderTarget; + + public PlanarProjection planarProjection; + public Vector4 rendererCoords; + } + + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameContext) + { + var renderingData = frameContext.Get(); + var cameraData = frameContext.Get(); + var lightData = frameContext.Get(); + + DrawingSettings drawingSettings = CreateDrawingSettings(m_ShaderTagIdList, renderingData, cameraData, lightData, SortingCriteria.RenderQueue | SortingCriteria.SortingLayer | SortingCriteria.CommonTransparent); + drawingSettings.perObjectData = PerObjectData.None; + + rendererListParams.cullingResults = renderingData.cullResults; + rendererListParams.drawSettings = drawingSettings; + rendererListParams.filteringSettings = m_FilteringSettings; + + using(var builder = renderGraph.AddRasterRenderPass("Water Height Pre-pass", out var passData)) + { + //Render target + RenderTextureDescriptor renderTargetDescriptor = new RenderTextureDescriptor(resolution, resolution, GraphicsFormat.R16G16_SFloat, 0); + passData.renderTarget = UniversalRenderer.CreateRenderGraphTexture(renderGraph, renderTargetDescriptor, BufferName, true, FilterMode.Bilinear, TextureWrapMode.Clamp); + //Store render target in RG, so it can be retrieved in other passes + FrameData frameData = frameContext.GetOrCreate(); + frameData._WaterHeightBuffer = passData.renderTarget; + //Mark the texture as readable + //builder.UseTexture(passData.renderTarget, AccessFlags.ReadWrite); + + #if UNITY_EDITOR || DEVELOPMENT_BUILD + if (RenderTargetDebugger.InspectedProperty == _WaterHeightBuffer) + { + StylizedWaterRenderFeature.DebugData debugData = frameContext.Get(); + debugData.currentHandle = passData.renderTarget; + } + #endif + + passData.rendererListHandle = renderGraph.CreateRendererList(rendererListParams); + + passData.planarProjection = new PlanarProjection + { + center = cameraData.camera.transform.position, + scale = settings.range, + offset = cameraData.camera.transform.forward * ((settings.range * 0.5f) - 5), + resolution = resolution + }; + passData.planarProjection.Recalculate(); + + passData.planarProjection.SetUV(ref passData.rendererCoords); + + //Set render target and bind to global property + builder.SetRenderAttachment(passData.renderTarget, 0, AccessFlags.Write); + //builder.CreateTransientTexture(passData.renderTarget); + builder.SetGlobalTextureAfterPass(passData.renderTarget, _WaterHeightBuffer); + + builder.UseRendererList(passData.rendererListHandle); + builder.AllowGlobalStateModification(true); + builder.AllowPassCulling(false); + + builder.SetRenderFunc((PassData data, RasterGraphContext context) => + { + Execute(context, data); + }); + } + } + + private readonly int _WorldSpaceCameraPos = Shader.PropertyToID("_WorldSpaceCameraPos"); + + private void Execute(RasterGraphContext context, PassData data) + { + var cmd = context.cmd; + using (new ProfilingScope(cmd, profilerSampler)) + { + cmd.ClearRenderTarget(true, true, targetClearColor); + + cmd.SetGlobalInt(_WaterHeightPrePassAvailable, 1); + cmd.EnableShaderKeyword(ShaderParams.Keywords.WaterHeightPass); + + cmd.SetViewProjectionMatrices(data.planarProjection.view, data.planarProjection.projection); + //RenderingUtils.SetViewAndProjectionMatrices(cmd, data.planarProjection.view, data.planarProjection.projection, true); + + cmd.SetViewport(data.planarProjection.viewportRect); + //Is this still needed? + //cmd.SetGlobalMatrix("UNITY_MATRIX_V", data.view); + + cmd.SetGlobalVector(_WaterHeightCoords, data.rendererCoords); + + //Bug? During this pass the camera position sent to shaderland is that of the scene-view camera (if the tab is open) + //Possibly the value from the previous frame/camera. This breaks distance-based effects such as waves. + //Force an updated value + cmd.SetGlobalVector(_WorldSpaceCameraPos, data.planarProjection.center); + + cmd.DrawRendererList(data.rendererListHandle); + + //Reset (breaks VR!) + //cmd.SetViewProjectionMatrices(data.ViewMatrix, data.GPUProjectionMatrix); + } + } + + public override void OnCameraCleanup(CommandBuffer cmd) + { + cmd.SetGlobalVector(_WaterHeightCoords, Vector4.zero); + cmd.SetGlobalInt(_WaterHeightPrePassAvailable, 0); + cmd.DisableShaderKeyword(ShaderParams.Keywords.WaterHeightPass); + } + + public void Dispose() + { + + } + +#pragma warning disable CS0672 +#pragma warning disable CS0618 + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { } +#pragma warning restore CS0672 +#pragma warning restore CS0618 + } +} +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering/HeightPrePass.cs.meta b/Assets/External/Stylized Water 3/Runtime/Rendering/HeightPrePass.cs.meta new file mode 100644 index 00000000..54afef71 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering/HeightPrePass.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 994d894f45c86bd4791e3353806d7175 +timeCreated: 1701077223 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Rendering/HeightPrePass.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering/PlanarReflectionRenderer.cs b/Assets/External/Stylized Water 3/Runtime/Rendering/PlanarReflectionRenderer.cs new file mode 100644 index 00000000..fa45f9e3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering/PlanarReflectionRenderer.cs @@ -0,0 +1,600 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; + +#if URP +using UnityEngine.Rendering.Universal; +#endif + +namespace StylizedWater3 +{ + [ExecuteInEditMode] + [AddComponentMenu("Stylized Water 3/Planar Reflection Renderer")] + [HelpURL("https://staggart.xyz/unity/stylized-water-3/sw3-docs/?section=reflection-rendering")] + public class PlanarReflectionRenderer : MonoBehaviour + { +#if URP + public static List Instances = new List(); + public Dictionary reflectionCameras = new Dictionary(); + + //Rendering + [Tooltip("If enabled, the reflection plane will be based on this transform's up vector (green arrow).\n\nOtherwise the world's upwards direction is assumed")] + public bool rotatable = false; + [Tooltip("Set the layers that should be rendered into the reflection. The \"Water\" layer is always excluded")] + public LayerMask cullingMask = -1; + [Tooltip("The renderer used by the reflection camera. It's recommend to create a separate renderer, so any custom render features aren't executed for the reflection")] + public int rendererIndex = -1; + + [Min(0f)] + public float offset = 0.05f; + [Tooltip("When disabled, the skybox reflection comes from a Reflection Probe. This has the benefit of being omni-directional rather than flat/planar. Enabled this to render the skybox into the planar reflection anyway." + + "\n\nNote that enabling this will override Screen Space Reflections completely!")] + public bool includeSkybox; + [Tooltip("Render Unity's default scene fog in the reflection. Note that this doesn't strictly work correctly on large triangles, as it is incompatible with oblique camera projections." + + "\n\n" + + "This does not include to post-processing fog effects!")] + public bool enableFog; + [Tooltip("Also render for the scene-view camera. This may be prone to some issues, such a console errors.")] + public bool enableInSceneView = true; + + //Quality + public bool renderShadows; + [Range(0.25f, 1f)] + [Tooltip("A multiplier for the rendering resolution, based on the current screen resolution. The render scale, as configured in the pipeline settings is multiplied over this.")] + public float renderScale = 0.75f; + + [Range(0, 4)] + [Tooltip("Do not render LOD objects lower than this value. Example: With a value of 1, LOD0 for LOD Groups will not be used")] + public int maximumLODLevel = 0; + + [SerializeField] + public List waterObjects = new List(); + [Tooltip("If enabled, the center of the rendering bounds (that wraps around the water objects) moves with the Transform position" + + "\n\nYou must however ensure you are only moving on the XZ axis")] + public bool moveWithTransform; + [HideInInspector] + public Bounds bounds = new Bounds(); + + private float m_renderScale = 1f; + + /// + /// Reflections will only render if this is true. Value can be set through the static SetQuality function + /// + public static bool AllowReflections { get; private set; } = true; + + private static readonly int _PlanarReflectionsEnabledID = Shader.PropertyToID("_PlanarReflectionsEnabled"); + private static readonly int _PlanarReflectionID = Shader.PropertyToID("_PlanarReflection"); + + private UniversalRenderPipeline.SingleCameraRequest requestData; + + [NonSerialized] + public bool isRendering; + + private Camera m_reflectionCamera; + private static UniversalAdditionalCameraData m_cameraData; + + private bool isUnderwater; + + private void Reset() + { + this.gameObject.name = "Planar Reflection Renderer"; + } + + private void OnEnable() + { + InitializeValues(); + + Instances.Add(this); + EnableReflections(); + } + + private void OnDisable() + { + Instances.Remove(this); + DisableReflections(); + } + + public void InitializeValues() + { + m_renderScale = renderScale; + } + + /// + /// Assigns all Water Objects in the WaterObject.Instances list and enables reflection for them + /// + public void ApplyToAllWaterInstances() + { + waterObjects = new List(WaterObject.Instances); + RecalculateBounds(); + EnableMaterialReflectionSampling(); + } + + [Obsolete("renderRange parameter has been deprecated. Use the SetQuality overload with this argument instead.")] + public static void SetQuality(bool enableReflections, float renderScale = -1f, float renderRange = -1f, int maxLodLevel = -1) { } + + /// + /// Toggle reflections or set the render scale for all reflection renderers. This can be tied into performance scaling or graphics settings in menus + /// + /// Toggles rendering of reflections, and toggles it on all the assigned water objects + /// A multiplier for the current screen resolution. Note that the render scale configured in URP is also taken into account + public static void SetQuality(bool enableReflections, float renderScale = -1f, int maxLodLevel = -1) + { + AllowReflections = enableReflections; + + foreach (PlanarReflectionRenderer renderer in Instances) + { + if (renderScale > 0) renderer.renderScale = renderScale; + if (maxLodLevel >= 0) renderer.maximumLODLevel = maxLodLevel; + renderer.InitializeValues(); + + if (enableReflections) renderer.EnableReflections(); + if (!enableReflections) renderer.DisableReflections(); + } + } + + public void EnableReflections() + { + if (!AllowReflections || PipelineUtilities.VREnabled()) return; + + RenderPipelineManager.beginCameraRendering += OnWillRenderCamera; + ToggleMaterialReflectionSampling(true); + } + + public void DisableReflections() + { + RenderPipelineManager.beginCameraRendering -= OnWillRenderCamera; + ToggleMaterialReflectionSampling(false); + + //Clear cameras + foreach (var kvp in reflectionCameras) + { + if (kvp.Value == null) continue; + + if (kvp.Value) + { + RenderTexture.ReleaseTemporary(kvp.Value.targetTexture); + + DestroyImmediate(kvp.Value.gameObject); + } + } + + reflectionCameras.Clear(); + } + + private void OnDrawGizmosSelected() + { + Gizmos.color = bounds.size.y > 0.01f ? Color.yellow : Color.white; + Gizmos.DrawWireCube(bounds.center, bounds.size); + } + + public Bounds CalculateBounds() + { + Bounds m_bounds = new Bounds(Vector3.zero, Vector3.zero); + + if (waterObjects == null) return m_bounds; + if (waterObjects.Count == 0) return m_bounds; + + Vector3 minSum = Vector3.one * Mathf.Infinity; + Vector3 maxSum = Vector3.one * Mathf.NegativeInfinity; + + for (int i = 0; i < waterObjects.Count; i++) + { + if (!waterObjects[i]) continue; + + minSum = Vector3.Min(waterObjects[i].meshRenderer.bounds.min, minSum); + maxSum = Vector3.Max(waterObjects[i].meshRenderer.bounds.max, maxSum); + } + + m_bounds.SetMinMax(minSum, maxSum); + + //Flatten to center + m_bounds.size = new Vector3(m_bounds.size.x, 0f, m_bounds.size.z); + + return m_bounds; + } + + public void RecalculateBounds() + { + bounds = CalculateBounds(); + } + + public bool InvalidContext(Camera targetCamera) + { + //Definitely reject any reflection cameras! + if (targetCamera.hideFlags == HideFlags.DontSave) return true; + + CameraType cameraType = targetCamera.cameraType; + + #if UNITY_EDITOR + if (enableInSceneView == false && cameraType == CameraType.SceneView) return true; + + //During the compilation of shaders reflection rendering is prone to causing issue, and can break the render pipeline + if(UnityEditor.ShaderUtil.anythingCompiling) return true; + + //Avoid the "Screen position outside of frustrum" error + if (targetCamera.orthographic && Vector3.Dot(Vector3.up, targetCamera.transform.up) > 0.9999f) return true; + + //Causes an internal error in URP's rendering code in the CopyColorPass + if (targetCamera.cameraType == CameraType.SceneView && UnityEditor.SceneView.lastActiveSceneView && UnityEditor.SceneView.lastActiveSceneView.isUsingSceneFiltering) return true; + #endif + + //Skip for any special use camera's (except scene view camera) + //Note: Scene camera still rendering even if window not focused! + return (cameraType != CameraType.SceneView && (cameraType == CameraType.Reflection || cameraType == CameraType.Preview || hideFlags != HideFlags.None)); + } + + private void OnWillRenderCamera(ScriptableRenderContext context, Camera camera) + { + if (InvalidContext(camera)) + { + isRendering = false; + return; + } + + isRendering = WaterObjectsVisible(camera); + + if (isRendering == false) return; + + if (moveWithTransform) bounds.center = this.transform.position; + + m_cameraData = camera.GetComponent(); + if (m_cameraData && m_cameraData.renderType == CameraRenderType.Overlay) return; + + reflectionCameras.TryGetValue(camera, out m_reflectionCamera); + if (m_reflectionCamera == null) CreateReflectionCamera(camera); + + //It's possible it is destroyed at this point when disabling reflections + if (!m_reflectionCamera) return; + + UnityEngine.Profiling.Profiler.BeginSample("Planar Water Reflections", camera); + + //Render scale changed + if (Math.Abs(renderScale - m_renderScale) > 0.001f) + { + RenderTexture.ReleaseTemporary(m_reflectionCamera.targetTexture); + CreateRenderTexture(m_reflectionCamera, camera); + + m_renderScale = renderScale; + } + + UpdateWaterProperties(m_reflectionCamera); + + UpdateCameraProperties(camera, m_reflectionCamera); + UpdatePerspective(camera, m_reflectionCamera); + + bool fogEnabled = RenderSettings.fog && !enableFog; + //Fog is based on clip-space z-distance and doesn't work with oblique projections + if (fogEnabled) SetFogState(false); + int maxLODLevel = QualitySettings.maximumLODLevel; + QualitySettings.maximumLODLevel = maximumLODLevel; + GL.invertCulling = true; + + RenderReflection(context, m_reflectionCamera); + + if (fogEnabled) SetFogState(true); + QualitySettings.maximumLODLevel = maxLODLevel; + GL.invertCulling = false; + + UnityEngine.Profiling.Profiler.EndSample(); + } + + private void RenderReflection(ScriptableRenderContext context, Camera target) + { + /* Uncomment to render NR's vegetation in the reflection + // Register the reflection camera for Nature Renderer + var cameraId = VisualDesignCafe.Rendering.Instancing.RendererPool.RegisterCamera(target); + + // Render the instanced objects (details and trees) + VisualDesignCafe.Rendering.Instancing.RendererPool.GetCamera(cameraId).Render(); + */ + + requestData = new UniversalRenderPipeline.SingleCameraRequest + { + destination = target.targetTexture, + slice = -1 + }; + + if (RenderPipeline.SupportsRenderRequest(target, requestData)) + { + RenderPipeline.SubmitRenderRequest(target, requestData); + } + } + + private void SetFogState(bool value) + { + #if UNITY_EDITOR + UnityEditor.Unsupported.SetRenderSettingsUseFogNoDirty(value); + #else + RenderSettings.fog = value; + #endif + } + + private float GetRenderScale() + { + return Mathf.Clamp(renderScale * UniversalRenderPipeline.asset.renderScale, 0.25f, 1f); + } + + /// + /// Should the renderer index be changed at runtime, this function must be called to update any reflection cameras + /// + /// + public void SetRendererIndex(int index) + { + index = PipelineUtilities.ValidateRenderer(index); + + foreach (var kvp in reflectionCameras) + { + if (kvp.Value == null) continue; + + m_cameraData = kvp.Value.GetComponent(); + m_cameraData.SetRenderer(index); + } + } + + public void ToggleShadows(bool state) + { + foreach (var kvp in reflectionCameras) + { + if (kvp.Value == null) continue; + + m_cameraData = kvp.Value.GetComponent(); + m_cameraData.renderShadows = state; + } + } + + /// + /// Add the WaterObject, and recalculates the rendering bounds. + /// + /// + public void AddWaterObject(WaterObject waterObject) + { + ToggleMaterialReflectionSampling(waterObject, true); + waterObjects.Add(waterObject); + + RecalculateBounds(); + } + + /// + /// Remove the WaterObject, and recalculates the rendering bounds. + /// + /// + public void RemoveWaterObject(WaterObject waterObject) + { + ToggleMaterialReflectionSampling(waterObject, false); + waterObjects.Remove(waterObject); + + RecalculateBounds(); + } + + /// + /// Enables planar reflections on the MeshRenderers of the assigned water objects + /// + public void EnableMaterialReflectionSampling() + { + ToggleMaterialReflectionSampling(AllowReflections); + } + + /// + /// Toggles the sampling of the planar reflections texture in the water shader. + /// + /// + public void ToggleMaterialReflectionSampling(bool state) + { + if (waterObjects == null) return; + + for (int i = 0; i < waterObjects.Count; i++) + { + if (waterObjects[i] == null) continue; + + ToggleMaterialReflectionSampling(waterObjects[i], state); + } + } + + private void ToggleMaterialReflectionSampling(WaterObject waterObject, bool state) + { + waterObject.props.SetFloat(_PlanarReflectionsEnabledID, state ? 1f : 0f); + waterObject.ApplyInstancedProperties(); + } + + private void CreateReflectionCamera(Camera source) + { + //Object creation + GameObject go = new GameObject($"{source.name} Planar Reflection"); + go.hideFlags = HideFlags.DontSave | HideFlags.HideInHierarchy; + + Camera newCamera = go.AddComponent(); + newCamera.hideFlags = HideFlags.DontSave; + //For the scene-view camera this also copies unwanted properties. Such as the camera type and background color! + newCamera.CopyFrom(source); + + //Always exclude water layer + newCamera.cullingMask = ~(1 << 4) & cullingMask; + //Must always be set to Game, otherwise shadows render anyway + newCamera.cameraType = CameraType.Game; + newCamera.depth = source.depth-1f; + newCamera.rect = new Rect(0,0,1,1); + newCamera.enabled = false; + newCamera.clearFlags = includeSkybox ? CameraClearFlags.Skybox : CameraClearFlags.Depth; + //Required to maintain the alpha channel for the scene view + newCamera.backgroundColor = Color.clear; + + //Occlusion culling has to be disabled, otherwise objects culled by the main camera will be culled for the reflection camera + //Setting the culling matrix for the camera doesn't appear to have any effect + newCamera.useOcclusionCulling = false; + + //Component required for the UniversalRenderPipeline.RenderSingleCamera call + if (newCamera.gameObject.TryGetComponent(out var data) == false) + { + data = newCamera.gameObject.AddComponent(); + } + + data.requiresDepthTexture = false; + data.requiresColorTexture = false; + data.renderShadows = renderShadows; + rendererIndex = PipelineUtilities.ValidateRenderer(rendererIndex); + data.SetRenderer(rendererIndex); + + CreateRenderTexture(newCamera, source); + + reflectionCameras[source] = newCamera; + } + + private void CreateRenderTexture(Camera targetCamera, Camera source) + { + //Note: Do not use RenderTextureFormat.Default or HDR, as these may be without an alpha channel on some platforms + RenderTextureFormat colorFormat = UniversalRenderPipeline.asset.supportsHDR && SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.ARGBHalf) ? RenderTextureFormat.ARGBHalf : RenderTextureFormat.ARGB32; + + float scale = GetRenderScale(); + + RenderTextureDescriptor rtDsc = new RenderTextureDescriptor( + (int)((float)source.scaledPixelWidth * scale), + (int)((float)source.scaledPixelHeight * scale), + colorFormat); + + rtDsc.depthBufferBits = 16; + //rtDsc.msaaSamples = UniversalRenderPipeline.asset.msaaSampleCount; //Waste of resources, water distortion makes it virtually unnoticeable. + + targetCamera.targetTexture = RenderTexture.GetTemporary(rtDsc); + targetCamera.targetTexture.filterMode = scale < 1f ? FilterMode.Bilinear : FilterMode.Point; + targetCamera.targetTexture.name = $"{source.name}_Reflection {rtDsc.width}x{rtDsc.height}"; + } + + private static readonly Plane[] frustrumPlanes = new Plane[6]; + + public bool WaterObjectsVisible(Camera targetCamera) + { + GeometryUtility.CalculateFrustumPlanes(targetCamera.projectionMatrix * targetCamera.worldToCameraMatrix, frustrumPlanes); + + return GeometryUtility.TestPlanesAABB(frustrumPlanes, bounds); + } + + //Assigns the render target of the current reflection camera + private void UpdateWaterProperties(Camera cam) + { + for (int i = 0; i < waterObjects.Count; i++) + { + if (waterObjects[i] == null) continue; + + waterObjects[i].props.SetFloat(_PlanarReflectionsEnabledID, 1); + waterObjects[i].props.SetTexture(_PlanarReflectionID, cam.targetTexture); + waterObjects[i].ApplyInstancedProperties(); + } + } + + private static Vector4 reflectionPlane; + private static Matrix4x4 reflectionBase; + private static Vector3 oldCamPos; + + private static Matrix4x4 worldToCamera; + private static Matrix4x4 viewMatrix; + private static Matrix4x4 projectionMatrix; + private static Vector4 clipPlane; + private static readonly float[] layerCullDistances = new float[32]; + + private void UpdateCameraProperties(Camera source, Camera reflectionCam) + { + reflectionCam.fieldOfView = source.fieldOfView; + reflectionCam.orthographic = source.orthographic; + reflectionCam.orthographicSize = source.orthographicSize; + } + + private void UpdatePerspective(Camera source, Camera reflectionCam) + { + if (!source || !reflectionCam) return; + + Vector3 normal = rotatable ? this.transform.up : Vector3.up; + + isUnderwater = (source.transform.position.y < bounds.center.y); + + if (isUnderwater) normal = -Vector3.up; + + Vector3 position = bounds.center + (normal * offset); + + var d = -Vector3.Dot(normal, position); + reflectionPlane = new Vector4(normal.x, normal.y, normal.z, d); + + reflectionBase = Matrix4x4.identity; + reflectionBase *= Matrix4x4.Scale(new Vector3(1, -1, 1)); + + // View + CalculateReflectionMatrix(ref reflectionBase, reflectionPlane); + oldCamPos = source.transform.position - new Vector3(0, position.y * 2, 0); + reflectionCam.transform.forward = Vector3.Scale(source.transform.forward, new Vector3(1, -1, 1)); + + worldToCamera = source.worldToCameraMatrix; + viewMatrix = worldToCamera * reflectionBase; + + //Reflect position + oldCamPos.y = -oldCamPos.y; + reflectionCam.transform.position = oldCamPos; + + clipPlane = CameraSpacePlane(reflectionCam.worldToCameraMatrix, position - normal * 0.1f, normal, 1.0f); + projectionMatrix = source.CalculateObliqueMatrix(clipPlane); + + //Settings + reflectionCam.cullingMask = ~(1 << 4) & cullingMask;; + m_reflectionCamera.clearFlags = includeSkybox ? CameraClearFlags.Skybox : CameraClearFlags.Depth; + + reflectionCam.projectionMatrix = projectionMatrix; + reflectionCam.worldToCameraMatrix = viewMatrix; + + //Unfortunately has to effect, camera appears ti use the culling matrix from the source camera anyway + reflectionCam.cullingMatrix = projectionMatrix * viewMatrix; + } + + // Calculates reflection matrix around the given plane + private void CalculateReflectionMatrix(ref Matrix4x4 reflectionMat, Vector4 plane) + { + reflectionMat.m00 = (1F - 2F * plane[0] * plane[0]); + reflectionMat.m01 = (-2F * plane[0] * plane[1]); + reflectionMat.m02 = (-2F * plane[0] * plane[2]); + reflectionMat.m03 = (-2F * plane[3] * plane[0]); + + reflectionMat.m10 = (-2F * plane[1] * plane[0]); + reflectionMat.m11 = (1F - 2F * plane[1] * plane[1]); + reflectionMat.m12 = (-2F * plane[1] * plane[2]); + reflectionMat.m13 = (-2F * plane[3] * plane[1]); + + reflectionMat.m20 = (-2F * plane[2] * plane[0]); + reflectionMat.m21 = (-2F * plane[2] * plane[1]); + reflectionMat.m22 = (1F - 2F * plane[2] * plane[2]); + reflectionMat.m23 = (-2F * plane[3] * plane[2]); + + reflectionMat.m30 = 0F; + reflectionMat.m31 = 0F; + reflectionMat.m32 = 0F; + reflectionMat.m33 = 1F; + } + + // Given position/normal of the plane, calculates plane in camera space. + private Vector4 CameraSpacePlane(Matrix4x4 worldToCameraMatrix, Vector3 pos, Vector3 normal, float sideSign) + { + var offsetPos = pos + normal * offset; + var cameraPosition = worldToCameraMatrix.MultiplyPoint(offsetPos); + var cameraNormal = worldToCameraMatrix.MultiplyVector(normal).normalized * sideSign; + return new Vector4(cameraNormal.x, cameraNormal.y, cameraNormal.z, + -Vector3.Dot(cameraPosition, cameraNormal)); + } + + public RenderTexture TryGetReflectionTexture(Camera targetCamera) + { + if (targetCamera) + { + reflectionCameras.TryGetValue(targetCamera, out m_reflectionCamera); + if (m_reflectionCamera) + { + return m_reflectionCamera.targetTexture; + } + } + + return null; + } +#endif + } +} diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering/PlanarReflectionRenderer.cs.meta b/Assets/External/Stylized Water 3/Runtime/Rendering/PlanarReflectionRenderer.cs.meta new file mode 100644 index 00000000..33a65a22 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering/PlanarReflectionRenderer.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: c1b629e2b9e73f34a859a756e1560ad1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: -1426863774865177168, guid: 0000000000000000d000000000000000, type: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Rendering/PlanarReflectionRenderer.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering/ProjectionUtils.cs b/Assets/External/Stylized Water 3/Runtime/Rendering/ProjectionUtils.cs new file mode 100644 index 00000000..1a5e53c3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering/ProjectionUtils.cs @@ -0,0 +1,139 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using UnityEngine; +using UnityEngine.Rendering; + +namespace StylizedWater3 +{ + /// + /// Utility for creating an orthographic top-down projection + /// + public class PlanarProjection + { + private static readonly Quaternion viewRotation = Quaternion.Euler(new Vector3(90f, 0f, 0f)); + private static readonly Vector3 viewScale = new Vector3(1, 1, -1); + private static readonly Plane[] frustrumPlanes = new Plane[6]; + + //Input + public Vector3 center; + public Vector3 offset; + + public float scale; + public int resolution; + public bool expandHeight = true; + + //Output + public Matrix4x4 projection; + public Matrix4x4 view; + public Rect viewportRect; + public Vector3 boundsMin; + public Vector3 boundsMax; + + //Important to snap the projection to the nearest texel. Otherwise pixel swimming is introduced when moving, due to bilinear filtering + private static Vector3 Stabilize(Vector3 pos, float texelSize) + { + float Snap(float coord, float cellSize) => Mathf.FloorToInt(coord / cellSize) * (cellSize) + (cellSize * 0.5f); + + return new Vector3(Snap(pos.x, texelSize), Snap(pos.y, texelSize), Snap(pos.z, texelSize)); + } + + public void Recalculate() + { + float extent = scale * 0.5f; + + Vector3 centerPosition = center + offset; + + //var frustumHeight = 2.0f * scale * Mathf.Tan(camera.fieldOfView * 0.5f * Mathf.Deg2Rad); //Still clips, plus doesn't support orthographc + var frustumHeight = expandHeight ? 10000f : scale; + centerPosition += (Vector3.up * frustumHeight * 0.5f); + + centerPosition = Stabilize(centerPosition, scale / resolution); + + projection = Matrix4x4.Ortho(-extent, extent, -extent, extent, 0.02f, frustumHeight); + + view = Matrix4x4.TRS(centerPosition, viewRotation, viewScale).inverse; + + viewportRect = new Rect(0, 0, resolution, resolution); + + boundsMin.x = centerPosition.x - extent; + boundsMin.y = centerPosition.y - extent; + boundsMin.z = centerPosition.z - extent; + + boundsMax.x = centerPosition.z + extent; + boundsMax.y = centerPosition.z + extent; + boundsMax.z = centerPosition.z + extent; + } + + /// + /// Sets a Vector4 uniform up to be passed onto shader land, where a world-space position can be used to calculate a sampling UV + /// + /// + public void SetUV(ref Vector4 coords) + { + coords.x = boundsMin.x; + coords.y = boundsMin.z; + coords.z = scale; + coords.w = 1; //Enable sampling shaders + } + + public void SetProjection(RasterCommandBuffer cmd) + { + cmd.SetViewProjectionMatrices(view, projection); + + //Unity 6000.0.30f1+ only + //RenderingUtils.SetViewAndProjectionMatrices(cmd, view, projection, true); + } + + public static int CalculateResolution(float scale, int texelsPerUnit, int min, int max) + { + int res = Mathf.RoundToInt(scale * texelsPerUnit); + //if(NON_POWER_OF_TWO == false) res = Mathf.NextPowerOfTwo(res); + + return Mathf.Clamp(res, min, max); + } + + public static float FadePercentageToLength(float renderRange, float fadePercentage) + { + fadePercentage = Mathf.Max(0.01f, fadePercentage); + + return (renderRange * 0.5f) * (fadePercentage / 100f); + } + + public void CalculateFrustumPlanes() + { + GeometryUtility.CalculateFrustumPlanes(projection * view, frustrumPlanes); + } + + public bool TestPlanesAABB(Bounds bounds) + { + return GeometryUtility.TestPlanesAABB(frustrumPlanes, bounds); + } + + //Using data only from the matrices, to ensure what you're seeing closely represents them + public void DrawOrthographicViewGizmo() + { + Gizmos.matrix = Matrix4x4.identity; + + CalculateFrustumPlanes(); + + float near = frustrumPlanes[4].distance; + float far = frustrumPlanes[5].distance; + float height = near + far; + + Vector3 position = new Vector3(view.inverse.m03, view.inverse.m13, view.inverse.m23); + Vector3 orthoSize = new Vector3((frustrumPlanes[0].distance + frustrumPlanes[1].distance), height, frustrumPlanes[2].distance + frustrumPlanes[3].distance); + + //orthoSize = Vector3.one * 50f; + Gizmos.DrawSphere(position, 1f); + + position -= Vector3.up * height * 0.5f; + Gizmos.DrawWireCube(position, orthoSize); + Gizmos.color = Color.white * 0.25f; + Gizmos.DrawCube(position, orthoSize); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering/ProjectionUtils.cs.meta b/Assets/External/Stylized Water 3/Runtime/Rendering/ProjectionUtils.cs.meta new file mode 100644 index 00000000..82322bb2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering/ProjectionUtils.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 5e9fd4f2cdd74b138fb2b5f8ba29094c +timeCreated: 1717679203 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Rendering/ProjectionUtils.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering/SetupConstants.cs b/Assets/External/Stylized Water 3/Runtime/Rendering/SetupConstants.cs new file mode 100644 index 00000000..e8774271 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering/SetupConstants.cs @@ -0,0 +1,147 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using UnityEngine; +using UnityEngine.Rendering; +#if URP +using UnityEngine.Rendering.Universal; +using UnityEngine.Rendering.Universal.Internal; +using UnityEngine.Rendering.RenderGraphModule; + +namespace StylizedWater3 +{ + public class SetupConstants : ScriptableRenderPass + { + private ProfilingSampler m_ProfilingSampler; + + private static readonly int _CausticsProjectionAvailable = Shader.PropertyToID("_CausticsProjectionAvailable"); + private static readonly int CausticsProjection = Shader.PropertyToID("CausticsProjection"); + private static readonly int _WaterSSRParams = Shader.PropertyToID("_WaterSSRParams"); + private static readonly int _WaterSSRSettings = Shader.PropertyToID("_WaterSSRSettings"); + + private static VisibleLight mainLight; + private Matrix4x4 causticsProjection; + + public SetupConstants() + { + //Force a unit scale, otherwise affects the projection tiling of the caustics + causticsProjection = Matrix4x4.Scale(Vector3.one); + } + + private StylizedWaterRenderFeature settings; + + public void Setup(StylizedWaterRenderFeature renderFeature) + { + this.settings = renderFeature; + + /* + //Whilst required for these features, do not impose onto the render pipeline + //User must manage the enabled state of depth texture + if (settings.screenSpaceReflectionSettings.allow || settings.allowDirectionalCaustics) + { + ConfigureInput(ScriptableRenderPassInput.Depth); + } + */ + } + + private class PassData + { + public UniversalCameraData cameraData; + + public bool directionalCaustics; + public Matrix4x4 causticsProjection; + + public bool ssr; + public bool ssrSkybox; + } + + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) + { + UniversalLightData lightData = frameData.Get(); + UniversalCameraData cameraData = frameData.Get(); + + #if UNITY_EDITOR || DEVELOPMENT_BUILD + frameData.GetOrCreate(); + #endif + + using (var builder = renderGraph.AddRasterRenderPass("Water Constants", out var passData, m_ProfilingSampler)) + { + passData.ssr = settings.screenSpaceReflectionSettings.allow; + passData.ssrSkybox = settings.screenSpaceReflectionSettings.reflectEverything; + passData.directionalCaustics = settings.allowDirectionalCaustics; + + if (passData.directionalCaustics) + { + //When no lights are visible, main light will be set to -1. + if (lightData.mainLightIndex > -1) + { + mainLight = lightData.visibleLights[lightData.mainLightIndex]; + + if (mainLight.lightType == LightType.Directional) + { + causticsProjection = Matrix4x4.Rotate(mainLight.light.transform.rotation); + + passData.causticsProjection = causticsProjection.inverse; + passData.cameraData = cameraData; + } + else + { + passData.directionalCaustics = false; + } + } + else + { + passData.directionalCaustics = false; + } + } + + //Pass should always execute + builder.AllowPassCulling(false); + + builder.AllowGlobalStateModification(true); + builder.SetRenderFunc((PassData data, RasterGraphContext rgContext) => + { + Execute(rgContext.cmd, data); + }); + } + } + + static void Execute(RasterCommandBuffer cmd, PassData data) + { + cmd.SetGlobalVector(_WaterSSRParams, new Vector4(data.ssr ? 1 : 0, data.ssrSkybox ? 1 : 0, 0)); + + //Exposed settings not ready yet, would like to refactor the raymarching to use a step-distance, rather than a fixed number of steps. + cmd.SetGlobalVector(_WaterSSRSettings, new Vector4(12, 0.75f, 100f, 1.0f)); + + cmd.SetGlobalInt(_CausticsProjectionAvailable, data.directionalCaustics ? 1 : 0); + if (data.directionalCaustics) + { + cmd.SetGlobalMatrix(CausticsProjection, data.causticsProjection); + + //Sets up the required View- -> Clip-space matrices + NormalReconstruction.SetupProperties(cmd, data.cameraData); + } + } + + public override void OnCameraCleanup(CommandBuffer cmd) + { + //Important to disable these features, as the next camera rendering may be using a different renderer altogether + cmd.SetGlobalInt(_CausticsProjectionAvailable, 0); + cmd.SetGlobalVector(_WaterSSRParams, Vector4.zero); + } + + public void Dispose() + { + + } + +#pragma warning disable CS0672 +#pragma warning disable CS0618 + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { } +#pragma warning restore CS0672 +#pragma warning restore CS0618 + } +} +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering/SetupConstants.cs.meta b/Assets/External/Stylized Water 3/Runtime/Rendering/SetupConstants.cs.meta new file mode 100644 index 00000000..79774851 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering/SetupConstants.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 68f653ef6f17f454595b16a58a2cdbfd +timeCreated: 1701078225 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Rendering/SetupConstants.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering/StylizedWaterRenderFeature.cs b/Assets/External/Stylized Water 3/Runtime/Rendering/StylizedWaterRenderFeature.cs new file mode 100644 index 00000000..0b6d73f3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering/StylizedWaterRenderFeature.cs @@ -0,0 +1,354 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#if UNITY_EDITOR || DEVELOPMENT_BUILD +#define DEBUG_AVAILABLE +#endif + +#if URP +using System; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.RenderGraphModule; +using UnityEngine.Rendering.RenderGraphModule.Util; +using UnityEngine.Rendering.Universal; +using UnityEngine.Serialization; + +namespace StylizedWater3 +{ + [DisallowMultipleRendererFeature("Stylized Water 3")] + public partial class StylizedWaterRenderFeature : ScriptableRendererFeature + { + [Tooltip("Render all transparent materials NOT on the \"Water\" layer into a screen-space texture, and use that for refraction rendering in the water." + + "\n\n" + + "If enabled, transparent materials can be submerged and refracted correctly")] + public bool transparencyRefraction; + + public static StylizedWaterRenderFeature GetDefault() + { + return (StylizedWaterRenderFeature)PipelineUtilities.GetRenderFeature(); + } + + [Serializable] + public class ScreenSpaceReflectionSettings + { + [FormerlySerializedAs("enable")] + [Tooltip("Allow SSR to be rendered in water materials that have it enabled." + + "\n\nDisable as a global performance scaling measure")] + public bool allow = true; + + [FormerlySerializedAs("reflectSkybox")] + [Tooltip("Only enable when Reflection Probes cannot be used in a realtime lighting setup. If enabled, SSR will also reflects the skybox color and geometry in front of the water." + + "\n\nIdeally disabled, so that Reflection Probes can be relied on for a 1:1 accurate skybox reflection.")] + public bool reflectEverything = false; + } + public ScreenSpaceReflectionSettings screenSpaceReflectionSettings = new ScreenSpaceReflectionSettings(); + + [FormerlySerializedAs("directionalCaustics")] + [Tooltip("Pass on the main directional light's projection onto the water shader. Allows caustics to project along its direction (rather than top-down)." + + "\n\nThis shading operation is relative expensive, as it involves analyzing the depth texture at 4 different points")] + public bool allowDirectionalCaustics; + + public HeightPrePass.Settings heightPrePassSettings = new HeightPrePass.Settings(); + #if SWS_DEV + public TerrainHeightPrePass.Settings terrainHeightPrePassSettings = new TerrainHeightPrePass.Settings(); + #endif + + private SetupConstants constantsSetup; + private HeightPrePass heightPrePass; + private HeightQuerySystem.RenderPass heightQueryPass; + #if SWS_DEV + private TerrainHeightPrePass terrainHeightPrePass; + private DistanceFieldPass distanceFieldPass; + private RenderTransparentTexture transparentTexturePass; + #endif + + #if DEBUG_AVAILABLE + private DebugInspectorPass debugInspectorPass; + #endif + + [SerializeField] + public ComputeShader heightReadbackCS; + [SerializeField] + public Shader heightProcessingShader; + + /// + /// Set this to true from a render pass if it requires the displacement pre-pass, despite it being disabled in the render feature settings. + /// + public static bool RequireHeightPrePass; + + protected bool WillExecuteHeightPrePass => RequireHeightPrePass || heightPrePassSettings.enable || HeightQuerySystem.RequiresHeightPrepass; + + private void OnValidate() + { + VerifyReferences(); + } + + private void Reset() + { + VerifyReferences(); + } + + public void VerifyReferences() + { + if (!heightReadbackCS) + { + #if UNITY_EDITOR + //HeightSampler.cs + string assetPath = UnityEditor.AssetDatabase.GUIDToAssetPath("768e0c28dfdbc6b429fd59518fa03f2d"); + + ComputeShader cs = UnityEditor.AssetDatabase.LoadAssetAtPath(assetPath); + + if (cs) + { + heightReadbackCS = cs; + } + #endif + } + if(!heightProcessingShader) heightProcessingShader = Shader.Find(ShaderParams.ShaderNames.HeightProcessor); + + #if SWS_DEV + if(!terrainHeightPrePassSettings.terrainHeightVisualizationShader) terrainHeightPrePassSettings.terrainHeightVisualizationShader = Shader.Find(ShaderParams.ShaderNames.TerrainHeight); + #endif + + VerifyUnderwaterRendering(); + } + + public class DebugData : ContextItem + { + public TextureHandle currentHandle; + + public override void Reset() + { + currentHandle = TextureHandle.nullHandle; + } + } + + public override void Create() + { + GraphicsDeviceType currentGraphicsAPI = SystemInfo.graphicsDeviceType; + //https://issuetracker.unity3d.com/issues/crash-on-gfxdeviced3d12base-drawbufferscommon-when-adding-specific-custom-render-pass-feature-to-renderer + if (currentGraphicsAPI == GraphicsDeviceType.Direct3D12 || currentGraphicsAPI == GraphicsDeviceType.XboxOneD3D12) + { + //Using the "BeforeRendering" point causes a fatal crash when using DX12 when allocating a RT + defaultInjectionPoint = RenderPassEvent.BeforeRenderingShadows; + } + + constantsSetup = new SetupConstants + { + renderPassEvent = defaultInjectionPoint + }; + + heightPrePass = new HeightPrePass + { + renderPassEvent = defaultInjectionPoint + }; + + heightQueryPass = new HeightQuerySystem.RenderPass() + { + renderPassEvent = defaultInjectionPoint + }; + + #if SWS_DEV + terrainHeightPrePass = new TerrainHeightPrePass() + { + renderPassEvent = defaultInjectionPoint + }; + + if (transparencyRefraction) + { + transparentTexturePass = new RenderTransparentTexture(); + transparentTexturePass.renderPassEvent = RenderPassEvent.BeforeRenderingTransparents; + } + #endif + + CreateFlowMapPass(); + CreateDynamicEffectsPasses(); + CreateUnderwaterRenderingPasses(); + + #if DEBUG_AVAILABLE + debugInspectorPass = new DebugInspectorPass(); + debugInspectorPass.renderPassEvent = RenderPassEvent.AfterRendering; + #endif + } + + //Note: Actually prefer to render before transparents, but this creates a recursive RenderSingleCamera call + //Restoring the view/projection to that of the camera also breaks VR. Required functions are internal URP code + + //In some cases, if no pre-passes render (depth, shadows, etc) then the projection does not get reset when rendering the opaque objects pass. Hence, things must render as early as possible. + private static RenderPassEvent defaultInjectionPoint = RenderPassEvent.BeforeRendering; + + //Dynamic Effects + partial void CreateDynamicEffectsPasses(); + partial void AddDynamicEffectsPasses(ScriptableRenderer renderer, ref RenderingData renderingData); + partial void DisposeDynamicEffectsPasses(); + + partial void VerifyUnderwaterRendering(); + partial void CreateUnderwaterRenderingPasses(); + partial void AddUnderwaterRenderingPasses(ScriptableRenderer renderer, ref RenderingData renderingData); + partial void DisposeUnderwaterRenderingPasses(); + + partial void CreateFlowMapPass(); + partial void AddFlowMapPass(ScriptableRenderer renderer, ref RenderingData renderingData); + partial void DisposeFlowMapPass(); + + private bool IsInvalidContext(CameraType cameraType, CameraRenderType cameraRenderType) + { + //Skip for any special use camera's (except scene view camera) + if (cameraType != CameraType.SceneView && (cameraType == CameraType.Preview || hideFlags != HideFlags.None)) + { + return true; + } + + //Skip overlay cameras + if (cameraRenderType == CameraRenderType.Overlay) + { + return true; + } + + return false; + } + + private bool isMainCamera(Camera camera) + { + //Skip for any special use camera's (except scene view camera) + return (camera.cameraType == CameraType.SceneView || camera.CompareTag("MainCamera")); + } + + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + var currentCam = renderingData.cameraData.camera; + + if(IsInvalidContext(currentCam.cameraType, renderingData.cameraData.renderType)) return; + + constantsSetup.Setup(this); + renderer.EnqueuePass(constantsSetup); + + #if SWS_DEV + if (terrainHeightPrePassSettings.enable) + { + terrainHeightPrePass.Setup(terrainHeightPrePassSettings); + renderer.EnqueuePass(terrainHeightPrePass); + } + + if (transparencyRefraction) + { + renderer.EnqueuePass(transparentTexturePass); + } + #endif + + //Do not execute for reflection probe captures + if (currentCam.cameraType != CameraType.Reflection) + { + AddFlowMapPass(renderer, ref renderingData); + AddDynamicEffectsPasses(renderer, ref renderingData); + + //Do not execute for the scene-view camera in play-mode. Even if the tab is not active, it would render around it instead of the main camera + var skipHeightPrePass = Application.isPlaying && heightPrePassSettings.disableInSceneView && currentCam.cameraType == CameraType.SceneView; + + if (WillExecuteHeightPrePass && skipHeightPrePass == false) + { + heightPrePass.Setup(heightPrePassSettings); + renderer.EnqueuePass(heightPrePass); + + if (HeightQuerySystem.QueryCount > 0) + { + heightQueryPass.Setup(this, heightReadbackCS); + renderer.EnqueuePass(heightQueryPass); + } + } + else + { + Shader.SetGlobalInt(HeightPrePass._WaterHeightPrePassAvailable, 0); + } + } + + AddUnderwaterRenderingPasses(renderer, ref renderingData); + + #if DEBUG_AVAILABLE + if (RenderTargetDebugger.InspectedProperty > 0) + { + renderer.EnqueuePass(debugInspectorPass); + } + #endif + } + + protected override void Dispose(bool disposing) + { + constantsSetup.Dispose(); + heightPrePass.Dispose(); + heightQueryPass.Dispose(); + #if SWS_DEV + terrainHeightPrePass.Dispose(); + #endif + + DisposeFlowMapPass(); + DisposeDynamicEffectsPasses(); + DisposeUnderwaterRenderingPasses(); + } + + #if DEBUG_AVAILABLE + private class DebugInspectorPass : ScriptableRenderPass + { + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) + { + DebugData debugData = frameData.Get(); + + //Whichever pass's render target PropertyID matches the selected one in the inspector window get assigned as the 'currentHandle' + if (debugData.currentHandle.IsValid()) + { + var destinationDesc = renderGraph.GetTextureDesc(debugData.currentHandle); + destinationDesc.clearBuffer = false; + + RenderTextureDescriptor rtDsc = new RenderTextureDescriptor + { + width = destinationDesc.width, + height = destinationDesc.height, + //If you're seeing an error here you are not using a compatible Unity version! + graphicsFormat = destinationDesc.colorFormat, + #if UNITY_6000_1_OR_NEWER + colorFormat = RenderTextureFormat.Default, + #endif + volumeDepth = 1, + dimension = destinationDesc.dimension, + useMipMap = destinationDesc.useMipMap, + msaaSamples = 1 + }; + + TextureDesc textureDesc = debugData.currentHandle.GetDescriptor(renderGraph); + RenderingUtils.ReAllocateHandleIfNeeded(ref RenderTargetDebugger.CurrentRT, rtDsc, textureDesc.filterMode, textureDesc.wrapMode, textureDesc.anisoLevel, textureDesc.mipMapBias, textureDesc.name); + + TextureHandle destination = renderGraph.ImportTexture(RenderTargetDebugger.CurrentRT); + + if (destination.IsValid() == false) + { + throw new Exception("Failed to generate debugger texture"); + } + else + { + var cameraData = frameData.Get(); + RenderTargetDebugger.CurrentCameraName = cameraData.camera.name; + + //Copy TextureHandle into persistent RT + renderGraph.AddCopyPass(debugData.currentHandle, destination, passName: "Water Debug"); + } + } + else + { + RenderTargetDebugger.CurrentRT = null; + RenderTargetDebugger.CurrentCameraName = string.Empty; + } + } + +#pragma warning disable CS0672 +#pragma warning disable CS0618 + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { } +#pragma warning restore CS0672 +#pragma warning restore CS0618 + } + #endif //DEBUG_AVAILABLE + } +} +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/Rendering/StylizedWaterRenderFeature.cs.meta b/Assets/External/Stylized Water 3/Runtime/Rendering/StylizedWaterRenderFeature.cs.meta new file mode 100644 index 00000000..9932fedc --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/Rendering/StylizedWaterRenderFeature.cs.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 1c6e585d9d2317e438a403bbb1965d5e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - heightReadbackCS: {fileID: 7200000, guid: 768e0c28dfdbc6b429fd59518fa03f2d, type: 3} + - heightProcessingShader: {fileID: 4800000, guid: a1cfcf2c2c8140c084fb10845093540e, + type: 3} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/Rendering/StylizedWaterRenderFeature.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/ShaderParams.cs b/Assets/External/Stylized Water 3/Runtime/ShaderParams.cs new file mode 100644 index 00000000..a1b498e1 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/ShaderParams.cs @@ -0,0 +1,55 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using UnityEngine; + +namespace StylizedWater3 +{ + public static class ShaderParams + { + public static class Properties + { + public static readonly int _Direction = Shader.PropertyToID("_Direction"); + public static readonly int _Speed = Shader.PropertyToID("_Speed"); + + public static readonly int _WaveSpeed = Shader.PropertyToID("_WaveSpeed"); + public static readonly int _WaveFrequency = Shader.PropertyToID("_WaveFrequency"); + public static readonly int _WaveMaxLayers = Shader.PropertyToID("_WaveMaxLayers"); + public static readonly int _WaveHeight = Shader.PropertyToID("_WaveHeight"); + public static readonly int _WaveProfile = Shader.PropertyToID("_WaveProfile"); + } + + public static class Keywords + { + public const string Waves = "_WAVES"; + public const string Translucency = "_TRANSLUCENCY"; + public const string Caustics = "_CAUSTICS"; + public const string Refraction = "_REFRACTION"; + public const string River = "_RIVER"; + + public const string UnderwaterRendering = "UNDERWATER_ENABLED"; + public const string DynamicEffects = "DYNAMIC_EFFECTS_ENABLED"; + public const string WaterHeightPass = "WATER_HEIGHT_PASS"; + } + + public static class LightModes + { + public const string WaterHeight = "WaterHeight"; + } + + public static class ShaderNames + { + public const string TESSELLATION_NAME_SUFFIX = " (Tessellation)"; + + public const string HeightProcessor = "Hidden/StylizedWater3/HeightProcessor"; + public const string TerrainHeight = "Hidden/StylizedWater3/TerrainHeight"; + } + public static class Passes + { + //Keep in sync with shader! + public const string HeightPrePass = "Height"; + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/ShaderParams.cs.meta b/Assets/External/Stylized Water 3/Runtime/ShaderParams.cs.meta new file mode 100644 index 00000000..d87af46d --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/ShaderParams.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 2faf9739cf434720a27019e2ae81ce17 +timeCreated: 1719930222 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/ShaderParams.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/WaterMesh.cs b/Assets/External/Stylized Water 3/Runtime/WaterMesh.cs new file mode 100644 index 00000000..5cdc1fc7 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/WaterMesh.cs @@ -0,0 +1,258 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Serialization; +using Random = System.Random; + +namespace StylizedWater3 +{ + [Serializable] + public class WaterMesh + { + public enum Shape + { + Rectangle, + Disk + } + public Shape shape; + + [FormerlySerializedAs("size")] + [Range(10, 1000)] + public float scale = 100f; + [Tooltip("Distance between vertices")] + [Range(0.15f, 10f)] + public float vertexDistance = 1f; + + public float UVTiling = 1f; + [Tooltip("Shifts the vertices in a random direction. Definitely use this when using flat shading")] + [Range(0f, 1f)] + public float noise; + [Min(0)] + [Tooltip("The surface is normally flat, yet vertex displacement on the GPU such as waves can give the surface artificial height." + + "\n\nThis can cause a Mesh Renderer to be prematurely culled, despite still actually being visible." + + "\n\nThis value adds an artificial amount of height to the generate mesh's bounds, to avoid this from happening.")] + public float boundsPadding = 4f; + + /// + /// Generated output mesh. Empty by default, use the Rebuild() function to generate one from the current settings. + /// + public Mesh mesh; + + private static Vector4 defaultTangent = new Vector4(-1f, 0f, 0f, -1f); + + public Mesh Rebuild() + { + switch (shape) + { + case Shape.Rectangle: mesh = CreatePlane(); + break; + case Shape.Disk: mesh = CreateCircle(); + break; + } + + return mesh; + } + + public static Mesh Create(Shape shape, float size, float vertexDistance, float uvTiling = 1f, float noise = 0f) + { + WaterMesh waterMesh = new WaterMesh(); + waterMesh.shape = shape; + waterMesh.scale = size; + waterMesh.vertexDistance = vertexDistance; + waterMesh.UVTiling = uvTiling; + waterMesh.noise = noise; + + return waterMesh.Rebuild(); + } + + // Get the index of point number 'x' in circle number 'c' + private int GetPointIndex(int c, int x) + { + if (c < 0) return 0; + + x = x % ((c + 1) * 6); + + return (3 * c * (c + 1) + x + 1); + } + + private Mesh CreateCircle() + { + Mesh m = new Mesh(); + m.name = "WaterDisk"; + + int subdivisions = Mathf.FloorToInt(scale / vertexDistance); + + float distance = 1f / subdivisions; + + var vertices = new List(); + var uvs = new List(); + var uvs2 = new List(); + vertices.Add(Vector3.zero); //Center + var tris = new List(); + List normals = new List(); + List tangents = new List(); + + // First pass => build vertices + for (int loop = 0; loop < subdivisions; loop++) + { + float angleStep = (Mathf.PI * 2f) / ((loop + 1) * 6); + for (int point = 0; point < (loop + 1) * 6; ++point) + { + Vector3 vPos = new Vector3( + Mathf.Sin(angleStep * point) , + 0f, + Mathf.Cos(angleStep * point)); + + UnityEngine.Random.InitState(loop + point); + vPos.x += UnityEngine.Random.Range(-noise * 0.01f, noise * 0.01f); + vPos.z -= UnityEngine.Random.Range(noise * 0.01f, -noise * 0.01f); + + vertices.Add(vPos * (scale * 0.5f) * distance * (loop + 1)); + } + } + + //Planar mapping + for (int i = 0; i < vertices.Count; i++) + { + uvs.Add(new Vector2(0.5f + (vertices[i].x) * UVTiling,0.5f + (vertices[i].z) * UVTiling)); + //Lightmap UV's + uvs2.Add(new Vector2(0.5f + (vertices[i].x / scale),0.5f + (vertices[i].z / scale))); + + normals.Add(Vector3.up); + tangents.Add(defaultTangent); + } + + // Second pass => connect vertices into triangles + for (int circ = 0; circ < subdivisions; ++circ) + { + for (int point = 0, other = 0; point < (circ + 1) * 6; ++point) + { + if (point % (circ + 1) != 0) + { + // Create 2 triangles + tris.Add(GetPointIndex(circ - 1, other + 1)); + tris.Add(GetPointIndex(circ - 1, other)); + tris.Add(GetPointIndex(circ, point)); + + tris.Add(GetPointIndex(circ, point)); + tris.Add(GetPointIndex(circ, point + 1)); + tris.Add(GetPointIndex(circ - 1, other + 1)); + ++other; + } + else + { + // Create 1 inverse triangle + tris.Add(GetPointIndex(circ, point)); + tris.Add(GetPointIndex(circ, point + 1)); + tris.Add(GetPointIndex(circ - 1, other)); + // Do not move to the next point in the smaller circle + } + } + } + + // Create the mesh + + int vertexCount = vertices.Count; + if (vertexCount >= 65536) m.indexFormat = IndexFormat.UInt32; + m.SetVertices(vertices, 0, vertexCount, MeshUpdateFlags.DontRecalculateBounds | MeshUpdateFlags.DontValidateIndices); + m.SetTriangles(tris, 0, false); + + m.SetUVs(0, uvs); + m.SetUVs(1, uvs2); + m.colors = new Color[vertexCount]; + + m.SetNormals(normals, 0, vertexCount, MeshUpdateFlags.DontRecalculateBounds | MeshUpdateFlags.DontValidateIndices); + m.SetTangents(tangents, 0, vertexCount, MeshUpdateFlags.DontRecalculateBounds | MeshUpdateFlags.DontValidateIndices); + + m.bounds = new Bounds(Vector3.zero, new Vector3(scale, boundsPadding, scale)); + + return m; + } + + private Mesh CreatePlane() + { + Mesh m = new Mesh(); + m.name = "WaterPlane"; + + scale = Mathf.Max(1f, scale); + int subdivisions = Mathf.FloorToInt(scale / vertexDistance); + + int xCount = subdivisions + 1; + int zCount = subdivisions + 1; + int numTriangles = subdivisions * subdivisions * 6; + int vertexCount = xCount * zCount; + + Vector3[] vertices = new Vector3[vertexCount]; + Vector2[] uvs = new Vector2[vertexCount]; + Vector2[] uvs2 = new Vector2[vertexCount]; + int[] triangles = new int[numTriangles]; + Vector4[] tangents = new Vector4[vertexCount]; + Vector3[] normals = new Vector3[vertexCount]; + + int index = 0; + float scaleX = scale / subdivisions; + float scaleY = scale / subdivisions; + + float noiseScale = vertexDistance * 0.5f; + + for (int z = 0; z < zCount; z++) + { + for (int x = 0; x < xCount; x++) + { + vertices[index] = new Vector3(x * scaleX - (scale * 0.5f), 0f, z * scaleY - (scale * 0.5f)); + + UnityEngine.Random.InitState(index); + vertices[index].x += UnityEngine.Random.Range(-noise * noiseScale, noise * noiseScale); + vertices[index].z -= UnityEngine.Random.Range(noise * noiseScale, -noise * noiseScale); + + uvs[index] = new Vector2(0.5f + (vertices[index].x) * UVTiling, 0.5f + (vertices[index].z) * UVTiling); + //Lightmap UV's + uvs2[index] = new Vector2(0.5f + vertices[index].x / scale, 0.5f + vertices[index].z / scale); + + tangents[index] = defaultTangent; + normals[index] = Vector3.up; + + index++; + } + } + + index = 0; + for (int z = 0; z < subdivisions; z++) + { + for (int x = 0; x < subdivisions; x++) + { + triangles[index] = (z * xCount) + x; + triangles[index + 1] = ((z + 1) * xCount) + x; + triangles[index + 2] = (z * xCount) + x + 1; + + triangles[index + 3] = ((z + 1) * xCount) + x; + triangles[index + 4] = ((z + 1) * xCount) + x + 1; + triangles[index + 5] = (z * xCount) + x + 1; + index += 6; + } + } + + if (vertexCount >= 65536) m.indexFormat = IndexFormat.UInt32; + m.SetVertices(vertices, 0, vertexCount, MeshUpdateFlags.DontRecalculateBounds | MeshUpdateFlags.DontValidateIndices);; + m.SetTriangles(triangles, 0, false); + + m.SetUVs(0, uvs); + m.SetUVs(1, uvs2); + + m.SetNormals(normals, 0, vertexCount); + m.SetTangents(tangents, 0, vertexCount); + + m.colors = new Color[vertexCount]; + m.bounds = new Bounds(Vector3.zero, new Vector3(scale, boundsPadding, scale)); + + return m; + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/WaterMesh.cs.meta b/Assets/External/Stylized Water 3/Runtime/WaterMesh.cs.meta new file mode 100644 index 00000000..049fd1a7 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/WaterMesh.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: c61589328b4a7874a822ec745877bc7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/WaterMesh.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/WaveProfile.cs b/Assets/External/Stylized Water 3/Runtime/WaveProfile.cs new file mode 100644 index 00000000..86798e57 --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/WaveProfile.cs @@ -0,0 +1,352 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using Unity.Mathematics; +using UnityEngine; +using UnityEngine.Rendering; +using Object = UnityEngine.Object; +using Random = UnityEngine.Random; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace StylizedWater3 +{ + [Serializable] + [HelpURL("https://staggart.xyz/unity/stylized-water-3/sw3-docs/?section=waves-2")] + public class WaveProfile : ScriptableObject + { + const float MAX_AMPLITUDE = 5f; + public const int MAX_LAYERS = 64; + + [Min(0.01f)] + [InspectorName("Wave length")] + public float waveLengthMultiplier = 1f; + [Min(0.01f)] + public float amplitudeMultiplier = 1f; + [Min(0.01f)] + public float steepnessMultiplier = 1f; + + [Range(0f, 1f)] + [Tooltip("A steepness value too high can result in wave crest \"looping\" the geometry.\n\n" + + "To avoid this from happening, the steepness value for each Layer can be clamped to an average.")] + public float steepnessClamping = 1f; + + [Space] + + [Header(("Curves (value over layer index)"))] + [Tooltip("Scales the wave length over each layer." + + "\n\n" + + "Left=first layer, Right=last layer")] + public AnimationCurve waveLengthCurve = AnimationCurve.Linear(0f, 1f, 1f, 1f); + public AnimationCurve amplitudeCurve = AnimationCurve.Linear(0f, 1f, 1f, 1f); + public AnimationCurve steepnessCurve = AnimationCurve.Linear(0f, 1f, 1f, 1f); + + [Serializable] + public class ProceduralSettings + { + public int seed = 0; + [Range(1, MAX_LAYERS)] + [Tooltip("Number of individual wave layers. Aim for the lowest amount as possible")] + public int numLayers = 4; + + [Space] + + [Tooltip("The wave length represents the distance between two wave peaks. Use a high maximum value to create stormy ocean swells.")] + public Vector2 minMaxWaveLength = new Vector2(8f, 50f); + [Tooltip("Height of the wave, from its base to its peak")] + public Vector2 minMaxAmplitude = new Vector2(0.1f, 1f); + [Range(0f,1f)] + [Tooltip("Scale the amplitude by the wavelength. If at 1, short waves becomes very short as well")] + public float amplitudeByLength; + [Tooltip("Steepness is the amount of horizontal movement a wave creates")] + public Vector2 minMaxSteepness = new Vector2(0.1f, 1f); + [Range(0f,1f)] + [Tooltip("Scale up the steepness value by the wave length, making large waves displace the water more horizontally")] + public float steepnessByLength; + + [Space] + + [Range(0f,360f)] + public float directionBase = 0f; + [Range(0f, 360)] + [Tooltip("If at 0, all waves move in a single direction, If at 360, all of them go in a random direction")] + public float directionAngleVariation = 180f; + + public void Apply(WaveProfile waveProfile) + { + Array.Resize(ref waveProfile.layers, numLayers); + + float ScaleByLength(float value, float min, float max, float length, float amount) + { + value *= Mathf.Lerp(1f, value / length, amount); + value = Mathf.Max(value, min); + + return value; + } + + int layerCount = waveProfile.layers.Length; + for (int i = 0; i < layerCount; i++) + { + if (waveProfile.layers[i] == null) waveProfile.layers[i] = new Wave(); + + Wave layer = waveProfile.layers[i]; + + Random.InitState(seed + i); + + float t = (float)i / (float)layerCount; + + layer.direction = Mathf.Repeat(directionBase + Random.Range(-directionAngleVariation, directionAngleVariation), 360f); + + layer.waveLength = Random.Range(minMaxWaveLength.x, minMaxWaveLength.y); + + layer.amplitude = Random.Range(minMaxAmplitude.x, minMaxAmplitude.y); + layer.amplitude = ScaleByLength(layer.amplitude, minMaxAmplitude.x, minMaxAmplitude.y, layer.waveLength, amplitudeByLength); + + layer.steepness = Random.Range(minMaxSteepness.x, minMaxSteepness.y); + layer.steepness = ScaleByLength(layer.steepness, minMaxSteepness.x, minMaxSteepness.y, layer.waveLength, steepnessByLength); + } + + waveProfile.UpdateShaderParameters(); + } + } + + /// + /// House various parameter values used for randomize wave profile creation. Call the Apply function to use the settings to generated randomized wave layers. + /// + public ProceduralSettings proceduralSettings = new ProceduralSettings(); + + /// + /// Class to describe a single Gerstner Wave + /// + [Serializable] + public class Wave + { + [Tooltip("Directional: Waves move in a specific direction (angle)" + + "\n\nRadial: Wave originates from the position defined below")] + public enum Mode + { + Directional, + Radial + } + public bool enabled = true; + + [Space] + + [Tooltip("Distance between each crest")] + [Range(0.1f, 64f)] + public float waveLength = 10f; + + [Tooltip("Height of the wave in units(m)")] + [Range(0.001f, MAX_AMPLITUDE)] + public float amplitude = 1f; + + [Tooltip("Amount of horizontal movement. Values too high can cause the crest of a wave to \"loop\"")] + [Range(0.001f, 1f)] + public float steepness = 0.5f; + + public Mode mode; + + [Tooltip("Direction the wave travels forward in degrees (on the Y-axis)")] + [Range(0f, 360f)] + public float direction; + + [Tooltip("Position in world-space")] + public Vector2 origin; + } + + [Space] + + public Wave[] layers = new Wave[8]; + + public Texture2D shaderParametersLUT; + + public float averageSteepness + { + get; + private set; + } + public float averageAmplitude + { + get; + private set; + } + + private void Reset() + { + for (int i = 0; i < layers.Length; i++) + { + layers[i] = new Wave(); + + float t = (float)i / (float)layers.Length; + + if (i == 0) + { + layers[i].enabled = true; + } + else + { + layers[i].enabled = false; + + layers[i].direction = t * 360f + Random.Range(-15f, 15f); + layers[i].waveLength = layers.Length - (t * Random.value); + } + } + + UpdateShaderParameters(); + } + + public void UpdateShaderParameters() + { + if (layers.Length == 0) return; + + shaderParametersLUT = CreateLookUpTable(); + shaderParametersLUT.hideFlags = HideFlags.NotEditable; + shaderParametersLUT.name = this.name + " Shader Parameters"; + + #if UNITY_EDITOR + string path = AssetDatabase.GetAssetPath(this); + + if (path == string.Empty) return; + + Texture2D file = (Texture2D)AssetDatabase.LoadAssetAtPath(path, typeof(Texture2D)); + + if (file == null) + { + Object mainAsset = (WaveProfile)AssetDatabase.LoadAssetAtPath(path, typeof(WaveProfile)); + + AssetDatabase.AddObjectToAsset(shaderParametersLUT, mainAsset); + AssetDatabase.SaveAssets(); + + //Import + path = AssetDatabase.GetAssetPath(shaderParametersLUT); + + //Reference serialized texture asset + shaderParametersLUT = (Texture2D)AssetDatabase.LoadAssetAtPath(path, typeof(Texture2D)); + } + else + { + EditorUtility.CopySerialized(shaderParametersLUT, file); + file.name = shaderParametersLUT.name; + } + + //Reference serialized texture asset on disk + shaderParametersLUT = file; + #endif + } + + //Having a total of 8 float4 components, 2 rows are required to store them. + private const int LUT_ROWS = 2; + + //Settings for a wave layer, converted for GPU use + public struct WaveParameters + { + public float waveLength; + public float amplitude; + public float direction; + public float steepness; + public float2 origin; + public uint mode; + public uint enabled; + }; + + private Texture2D CreateLookUpTable() + { + int layerCount = layers.Length; + + if (layers.Length == 0) + { + throw new Exception("Cannot create a wave profile LUT from 0 wave layers!"); + } + + //16-bit precision since values can exceed 1 + Texture2D texture = new Texture2D(layerCount, LUT_ROWS, TextureFormat.RGBAHalf, false, true) + { + filterMode = FilterMode.Point, + wrapMode = TextureWrapMode.Clamp, + }; + + //The summed steepness must never exceed a value of 1 in the final calculations + //This would otherwise incur visible loops in the wave crests + //To avoid this, divide the steepness parameter value by the average + RecalculateAverages(); + + float steepnessRCP = 1f / averageSteepness; + float amplitudeRCP = 1f / averageSteepness; + + for (int x = 0; x < layerCount; x++) + { + //Normalized value of the layer (0-1) + float t = (float)x / (float)layerCount; + + WaveParameters parameters = CreateWaveParameters(layers[x], t, steepnessRCP); + + Color row0 = new Color(parameters.amplitude, parameters.waveLength, parameters.direction, parameters.enabled); + texture.SetPixel(x, 0, row0); + + Color row1 = new Color(parameters.origin.x, parameters.origin.y, parameters.mode, parameters.steepness); + texture.SetPixel(x, 1, row1); + } + + texture.Apply(); + + return texture; + } + + public WaveParameters CreateWaveParameters(Wave wave, float t, float steepnessRCP) + { + WaveParameters parameters = new WaveParameters + { + enabled = (uint)(wave.enabled ? 1 : 0), + waveLength = Mathf.Max(0.01f, wave.waveLength * waveLengthMultiplier * waveLengthCurve.Evaluate(t)), + amplitude = (wave.amplitude * amplitudeMultiplier * amplitudeCurve.Evaluate(t)), + direction = wave.direction * Mathf.Deg2Rad, + }; + + parameters.origin.x = wave.origin.x; + parameters.origin.y = wave.origin.y; + parameters.mode = (uint)wave.mode; + parameters.steepness = wave.steepness * steepnessMultiplier * steepnessCurve.Evaluate(t) * Mathf.Lerp(1f, steepnessRCP, steepnessClamping); + + return parameters; + } + + public void RecalculateAverages() + { + averageSteepness = 0f; + averageAmplitude = 0f; + int activeLayers = 0; + + for (int x = 0; x < layers.Length; x++) + { + //Normalized value of the layer (0-1) + float t = (float)x / (float)layers.Length; + + if (layers[x].enabled) + { + activeLayers++; + averageSteepness += layers[x].steepness * steepnessMultiplier * steepnessCurve.Evaluate(t); + averageAmplitude += layers[x].amplitude * amplitudeMultiplier * amplitudeCurve.Evaluate(t); + } + } + + if (activeLayers > 0) + { + averageSteepness = activeLayers; + averageAmplitude /= activeLayers; + } + } + + /// + /// Assign this wave profile to a material using the Stylized Water 3 shader + /// + /// + public void ApplyToMaterial(Material material) + { + material.SetTexture(ShaderParams.Properties._WaveProfile, shaderParametersLUT); + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/WaveProfile.cs.meta b/Assets/External/Stylized Water 3/Runtime/WaveProfile.cs.meta new file mode 100644 index 00000000..6a108b3b --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/WaveProfile.cs.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: ca52dc65c92791641abb4a20efacdf21 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 0c0ecf1cb80894043a5dd86626f73513, type: 3} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/WaveProfile.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Runtime/sc.stylizedwater3.runtime.asmdef b/Assets/External/Stylized Water 3/Runtime/sc.stylizedwater3.runtime.asmdef new file mode 100644 index 00000000..8fdc026b --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/sc.stylizedwater3.runtime.asmdef @@ -0,0 +1,54 @@ +{ + "name": "sc.stylizedwater3.runtime", + "rootNamespace": "", + "references": [ + "GUID:15fc0a57446b3144c949da3e2b9737a9", + "GUID:df380645f10b7bc4b97d4f5eb6303d95", + "GUID:d8b63aba1907145bea998dd612889d6b", + "GUID:75ecb28acc33857438e533566abcb3be", + "GUID:f06555f75b070af458a003d92f9efb00", + "GUID:9cb5eaf8df574e829047543e7b48b611", + "GUID:21d1eb854b91ade49bc69a263d12bee2", + "GUID:75469ad4d38634e559750d17036d5f7c" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.render-pipelines.universal", + "expression": "17.0.3", + "define": "URP" + }, + { + "name": "com.unity.visualeffectgraph", + "expression": "17.0.3", + "define": "VFX_GRAPH" + }, + { + "name": "com.unity.splines", + "expression": "2.4.0", + "define": "SPLINES" + }, + { + "name": "com.unity.modules.xr", + "expression": "1.0.0", + "define": "ENABLE_XR_MODULE" + }, + { + "name": "com.unity.mathematics", + "expression": "1.3.0", + "define": "MATHEMATICS" + }, + { + "name": "com.unity.inputsystem", + "expression": "1.11.0", + "define": "INPUT_SYSTEM_INSTALLED" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Runtime/sc.stylizedwater3.runtime.asmdef.meta b/Assets/External/Stylized Water 3/Runtime/sc.stylizedwater3.runtime.asmdef.meta new file mode 100644 index 00000000..3d94a81f --- /dev/null +++ b/Assets/External/Stylized Water 3/Runtime/sc.stylizedwater3.runtime.asmdef.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 4fd586483f5d4a24491f09604d74752b +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Runtime/sc.stylizedwater3.runtime.asmdef + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders.meta b/Assets/External/Stylized Water 3/Shaders.meta new file mode 100644 index 00000000..6efc7fe6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99600cfa699b876419013353bea3cf33 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Shaders/Compute.meta b/Assets/External/Stylized Water 3/Shaders/Compute.meta new file mode 100644 index 00000000..8bd6863b --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Compute.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9db55a1b83504125914c796208e3c3e9 +timeCreated: 1718465470 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Compute/HeightSampler.compute b/Assets/External/Stylized Water 3/Shaders/Compute/HeightSampler.compute new file mode 100644 index 00000000..83bb1d16 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Compute/HeightSampler.compute @@ -0,0 +1,38 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#define THREAD_GROUPS 64 +#pragma kernel SampleOffsets + +#include "..\Libraries\Height.hlsl" + +//Input +StructuredBuffer positions; +uint sampleCount; //Length of 'positions' array + +//Output +RWStructuredBuffer offsets; + +[numthreads(THREAD_GROUPS,1,1)] +void SampleOffsets(uint id : SV_DispatchThreadID) +{ + //Early out when no more positions are left to process + //Important for the Metal API, as it avoids accessing unbound array elements! + if(id > sampleCount) return; + + const uint index = (uint)(id); + + //Input positions to sample at + const float3 positionWS = positions[index]; + + //Position, relative to rendering bounds (normalized 0-1) + const float2 uv = WorldToHeightUV(positionWS); + + //Texel value at coordinates + float2 heights = SampleHeightBuffer(uv).rg; + + //Output + offsets[index] = heights.r + heights.g; +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Compute/HeightSampler.compute.meta b/Assets/External/Stylized Water 3/Shaders/Compute/HeightSampler.compute.meta new file mode 100644 index 00000000..bc1a1976 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Compute/HeightSampler.compute.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 768e0c28dfdbc6b429fd59518fa03f2d +ComputeShaderImporter: + externalObjects: {} + currentAPIMask: 4 + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Compute/HeightSampler.compute + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Compute/SDF.compute b/Assets/External/Stylized Water 3/Shaders/Compute/SDF.compute new file mode 100644 index 00000000..8f91700a --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Compute/SDF.compute @@ -0,0 +1,51 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#pragma kernel CSMain + +Texture2D _InputTexture; +RWTexture2D _OutputTexture; + +float _MaxDistance; + +uint2 _TextureSize; + +[numthreads(8, 8, 1)] +void CSMain (uint3 id : SV_DispatchThreadID) +{ + if (id.x >= _TextureSize.x || id.y >= _TextureSize.y) return; + + float pixel = _InputTexture[id.xy].r; + bool isBackground = pixel.r > 0.5; //Assume white is the background + + float minDistance = _MaxDistance; + + //Reduced search window based on _MaxDistance + int searchRadius = int(_MaxDistance); + int2 start = max(int2(0, 0), int2(id.xy) - searchRadius); + int2 end = min(_TextureSize, int2(id.xy) + searchRadius + 1); + + for (int y = start.y; y < end.y; y++) + { + for (int x = start.x; x < end.x; x++) + { + float sample = _InputTexture[int2(x, y)].r; + bool sampleIsBackground = sample.r > 0.5; + + if(sampleIsBackground == isBackground || sample < pixel) continue; + //if (sampleIsBackground != isBackground && sample > pixel) + { + float2 diff = float2(x, y) - id.xy; + float distance = length(diff); + if (distance < minDistance) + { + minDistance = distance; + } + } + } + } + + _OutputTexture[id.xy] = 1-(minDistance / _MaxDistance); // Normalize +} diff --git a/Assets/External/Stylized Water 3/Shaders/Compute/SDF.compute.meta b/Assets/External/Stylized Water 3/Shaders/Compute/SDF.compute.meta new file mode 100644 index 00000000..15a035ce --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Compute/SDF.compute.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 0ed6fcf8ffe9497086e18655ba389d39 +timeCreated: 1718465479 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Compute/SDF.compute + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Flowmap.meta b/Assets/External/Stylized Water 3/Shaders/Flowmap.meta new file mode 100644 index 00000000..29f4e1de --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Flowmap.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: aee884f7c483c2b4ba96923af3bd1ab8 +timeCreated: 1710314769 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Flowmap/DefaultFlowVector.shader b/Assets/External/Stylized Water 3/Shaders/Flowmap/DefaultFlowVector.shader new file mode 100644 index 00000000..4f8e211f --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Flowmap/DefaultFlowVector.shader @@ -0,0 +1,111 @@ +Shader "Stylized Water 3/Flowmap/Default" +{ + Properties + { + _BaseMap ("Texture", 2D) = "black" {} + _Strength ("Strength", Range(0,1)) = 1 + } + + SubShader + { + Tags + { + "LightMode" = "WaterFlowVectors" + //"LightMode" = "UniversalForward" //Uncomment to enable regular rendering + "RenderType" = "Transparent" + "RenderQueue" = "Transparent" + } + + Blend SrcAlpha OneMinusSrcAlpha + //BlendOp Max + ZWrite Off + + Pass + { + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" + + struct Attributes + { + float4 positionOS : POSITION; + float2 uv : TEXCOORD0; + float4 color : COLOR; + float4 tangentOS : TANGENT; + + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct Varyings + { + float2 uv : TEXCOORD0; + float4 positionCS : SV_POSITION; + float4 color : TEXCOORD1; + half3 tangentWS : TEXCOORD2; + + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + TEXTURE2D(_BaseMap); + half _Strength; + + Varyings vert (Attributes input) + { + Varyings output; + + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + output.positionCS = TransformObjectToHClip(input.positionOS.xyz); + output.uv = input.uv; + output.color = input.color; + + half3 wTangent = TransformObjectToWorldDir(float3(0,0,1)); + output.tangentWS = wTangent; + //output.tangentWS = cross(float3(0,1,0), wTangent); + + return output; + } + + float2 Encode(float2 direction) + { + return direction * 0.5 + 0.5; + } + + float4 frag (Varyings i) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(input); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + float2 flowMap = SAMPLE_TEXTURE2D(_BaseMap, sampler_LinearClamp, i.uv).xy; + flowMap = LinearToSRGB(flowMap); + + i.tangentWS.xy = i.tangentWS.xz * 0.5 + 0.5; + + //return float4(i.tangentWS.x, i.tangentWS.y, 0, 1); + + float2 flowVector = flowMap * 2.0 - 1.0; + float2 worldNormal = mul(float2x2(flowVector.x, flowVector.y, i.tangentWS.x, i.tangentWS.y), flowVector).xy; + + //worldNormal.x = dot(i.tangentWS.y, flowMap.x); + //worldNormal.y = dot(i.tangentWS.x, flowMap.y); + + float2 dir = worldNormal.xy * 0.5 + 0.5; + + //No rotation + dir = flowVector * _Strength; + + float velocity = length(dir) * 4.0; + + //dir = dir * 0.5 + 0.5; + return float4(Encode(dir), 0, velocity); + } + ENDHLSL + } + } +} diff --git a/Assets/External/Stylized Water 3/Shaders/Flowmap/DefaultFlowVector.shader.meta b/Assets/External/Stylized Water 3/Shaders/Flowmap/DefaultFlowVector.shader.meta new file mode 100644 index 00000000..172b45df --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Flowmap/DefaultFlowVector.shader.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: c589e9dcb59ed0f4c9c4f6b855f3f4aa +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Flowmap/DefaultFlowVector.shader + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Flowmap/Flowmap.hlsl b/Assets/External/Stylized Water 3/Shaders/Flowmap/Flowmap.hlsl new file mode 100644 index 00000000..a7860ada --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Flowmap/Flowmap.hlsl @@ -0,0 +1,74 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +TEXTURE2D(_WaterFlowVectors); +float4 _WaterFlowVectorsCoords; + +#ifndef UNITY_CORE_SAMPLERS_INCLUDED +SamplerState sampler_LinearClamp; +#endif + +struct FlowAnimation +{ + float2 uv1; + float2 uv2; + float2 flowVector; + float cycle1; + float cycle2; + float t; +}; + +FlowAnimation CreateAnimation(float2 uv, float2 flowVector, float time, float phaseOffset, float duration) +{ + FlowAnimation anim; + + float t = time + phaseOffset; + float progress = frac(time + phaseOffset); + + anim.flowVector = flowVector; + anim.cycle1 = frac(t / duration) * 2.0 - 1.0; + anim.cycle2 = frac(t / duration + (duration * 0.5)) * 2.0 - 1.0; + + anim.uv1 = uv + flowVector * anim.cycle1; + anim.uv1 += (time - progress) * 0.5; + anim.uv2 = uv + flowVector * anim.cycle2; + //anim.uv2 += (time - progress) * 0.2568; + + anim.t = abs(1.0 - 2.0 * frac(t / duration)); + + return anim; +} + +//Position, relative to rendering bounds (normalized 0-1) +float2 WorldToFlowVectorUV(float3 positionWS) +{ + return (positionWS.xz - _WaterFlowVectorsCoords.xy) / _WaterFlowVectorsCoords.z; +} + +float2 SampleFlowMapTexture(float2 uv, float strength) +{ + float4 flowMap = _WaterFlowVectors.SampleLevel(sampler_LinearClamp, uv, 0); + + return (flowMap.xy * 2.0 - 1.0) * strength; +} + +float2 SampleFlowMap(float3 positionWS) +{ + return SampleFlowMapTexture(WorldToFlowVectorUV(positionWS), 1.0); +} + +void SampleFlowMap_float(float3 positionWS, out float2 flowVector) +{ + flowVector = SampleFlowMap(positionWS); +} + +float4 SampleTextureFlow(TEXTURE2D_PARAM(tex, samplerName), FlowAnimation anim) +{ + float4 tex1 = SAMPLE_TEXTURE2D(tex, samplerName, anim.uv1); + float4 tex2 = SAMPLE_TEXTURE2D(tex, samplerName, anim.uv2); + + //return (tex1 * anim.cycle1) + (tex2 * anim.cycle2); + return lerp(tex1, tex2, anim.t); +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Flowmap/Flowmap.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Flowmap/Flowmap.hlsl.meta new file mode 100644 index 00000000..6a56e5ba --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Flowmap/Flowmap.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4b5a5513ba7907643ad9b7670a1c0aba +timeCreated: 1710257408 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Flowmap/Flowmap.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries.meta b/Assets/External/Stylized Water 3/Shaders/Libraries.meta new file mode 100644 index 00000000..ad06ee44 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c38e8ec34f13e94c86c2b8272d1d0a5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Caustics.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Caustics.hlsl new file mode 100644 index 00000000..b1a7cc55 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Caustics.hlsl @@ -0,0 +1,76 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" //SRGBToLinear +#include "Common.hlsl" + +//Set through SetupConstants pass +bool _CausticsProjectionAvailable; +float4x4 CausticsProjection; + +TEXTURE2D(_CausticsTex); +SAMPLER(sampler_CausticsTex); + +float2 CalculateTriPlanarProjection(in float3 positionWS, in float3 normalWS) +{ + float3 faceNormal = round(abs(normalWS)); + + float2 compA = lerp(positionWS.yz, positionWS.xz, faceNormal.y); + float2 compB = lerp(compA, positionWS.xy, faceNormal.z); + + return compB; +} + +void CalculateTriPlanarProjection_float(in float3 positionWS, in float3 normalWS, out float2 uv) +{ + uv = CalculateTriPlanarProjection(positionWS, normalWS); +} + +//Normal is expected to be that of the geometry not the water surface +float2 GetCausticsProjection(in float4 positionCS, in float3 lightDir, float3 positionWS, float3 sceneWorldNormal, bool directional, inout half attenuation) +{ + //return CalculateTriPlanarProjection(positionWS, sceneWorldNormal); + + #if !_DISABLE_DEPTH_TEX + if(directional && _CausticsProjectionAvailable) + { + const half NdotL = saturate(dot(sceneWorldNormal, lightDir)); + attenuation *= NdotL; + + //CausticsProjection matrix set up through scripting + return mul(CausticsProjection, float4(positionWS, 1.0)).xy; + } + #endif + + + return positionWS.xz; +} + +float3 SampleCaustics(float2 uv, float2 time, float tiling, float chromance) +{ + float3 caustics = 0; + + float2 coords = uv * tiling; + float2 uv1 = coords + (time.xy); + + #if defined(CAUSTICS_SINGLE_LAYER) + caustics = SAMPLE_TEXTURE2D(_CausticsTex, sampler_CausticsTex, uv1).rgb; + #else + + float2 uv2 = coords * 0.6 - time.xy; + + float3 caustics1 = SAMPLE_TEXTURE2D_LOD(_CausticsTex, sampler_CausticsTex, uv1, 0).rgb; + float3 caustics2 = SAMPLE_TEXTURE2D_LOD(_CausticsTex, sampler_CausticsTex, uv2, 0).rgb; + + #if UNITY_COLORSPACE_GAMMA + caustics1 = SRGBToLinear(caustics1); + caustics2 = SRGBToLinear(caustics2); + #endif + + caustics = min(caustics1, caustics2) * 2.0; + #endif + + return lerp(caustics.rrr, caustics.rgb, chromance); +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Caustics.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Caustics.hlsl.meta new file mode 100644 index 00000000..e9f5f22f --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Caustics.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b0aed6463372ad04c98d23600c33f16f +timeCreated: 1623320383 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Caustics.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Common.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Common.hlsl new file mode 100644 index 00000000..aa41eee3 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Common.hlsl @@ -0,0 +1,248 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#ifndef WATER_COMMON_INCLUDED +#define WATER_COMMON_INCLUDED + +#define SW_VERSION 320 + +//As per the "Shader" section of the documentation, this is primarily used for synchronizing animations in networked applications. +float _CustomTime; +#define TIME_FRAG_INPUT _CustomTime > 0 ? _CustomTime : input.uv.z +#define TIME_VERTEX_OUTPUT _CustomTime > 0 ? _CustomTime : output.uv.z + +#define TIME ((TIME_FRAG_INPUT * _Speed)) +#define TIME_VERTEX ((TIME_VERTEX_OUTPUT * _Speed)) + +#define HORIZONTAL_DISPLACEMENT_SCALAR 0.01 +#define UP_VECTOR float3(0,1,0) +#define RAD2DEGREE 57.29578 + +struct WaterSurface +{ + uint vFace; + float3 positionWS; + float3 viewDelta; //Un-normalized view direction, + float3 viewDir; + + //Normal from the base geometry, in world-space + float3 vertexNormal; + //Normal of geometry + waves + float3 waveNormal; + half3x3 tangentToWorldMatrix; + //Tangent-space normal + float3 tangentNormal; + //World-space normal, include geometry+waves+normal map + float3 tangentWorldNormal; + //The normal used for diffuse lighting. + float3 diffuseNormal; + //Per-pixel offset vector + float4 refractionOffset; + + float3 albedo; + float3 reflections; + float3 caustics; + float3 specular; + half reflectionMask; + half reflectionLighting; + + float3 offset; + float slope; + float waveCrest; + + float fog; + float intersection; + float foam; + + float alpha; + float edgeFade; + float shadowMask; +}; + +//Set through the public static C# parameter: StylizedWater3.WaterObject.PositionOffset +float3 _WaterPositionOffset; + +float2 GetSourceUV(float2 uv, float2 wPos, float state) +{ + #ifdef _RIVER + //World-space tiling is useless in this case + return uv; + #endif + + float2 output = lerp(uv, wPos - _WaterPositionOffset.xz, state); + + //Pixelize + #ifdef PIXELIZE_UV + output.x = (int)((output.x / 0.5) + 0.5) * 0.5; + output.y = (int)((output.y / 0.5) + 0.5) * 0.5; + #endif + + return output; +} + +float4 GetVertexColor(float4 inputColor, float4 mask) +{ + return inputColor * mask; +} + +float DepthDistance(float3 wPos, float3 viewPos, float3 normal) +{ + return length((wPos - viewPos) * normal); +} + +float2 TileOffsetUV(float2 uv, float2 tiling, float2 time, float2 speed) +{ + return (uv.xy * tiling.xy) + (time.xy * speed.xy); +} + +float4 PackedUV(float2 sourceUV, float2 tiling, float2 time, float speed, float subTiling, float subSpeed) +{ + float2 uv1 = TileOffsetUV(sourceUV, tiling, time, speed.xx * tiling); + + float2 tiling_uv2 = tiling * subTiling; + float2 uv2 = TileOffsetUV(sourceUV, tiling_uv2, time, (speed.xx * subSpeed * tiling_uv2)); + + return float4(uv1.xy, uv2.xy); +} + +float DistanceFadeMask(float3 positionWS, float start, float end, float vFace = 1.0) +{ + float3 delta = GetCameraPositionWS().xyz - positionWS.xyz; + + #if UNDERWATER_ENABLED + //Use vertical distance only for backfaces (underwater). This ensures tiling is reduced when moving deeper into the water, vertically + delta.y = lerp(0, delta.y, vFace); + #endif + + float pixelDist = length(delta); + + float fadeFactor = saturate((end - pixelDist) / (end - start)); + + return fadeFactor; +} + +//Edge feathering, used by SSR currently +float ScreenEdgeMask(float2 screenPos, float length) +{ + float lengthRcp = 1.0f/length; + float2 t = Remap10(abs(screenPos.xy * 2.0 - 1.0), lengthRcp, lengthRcp); + return Smoothstep01(t.x) * Smoothstep01(t.y); +} + +struct SurfaceNormalData +{ + float3 geometryNormalWS; + float3 pixelNormalWS; + float lightingStrength; + float mask; +}; + +float CalculateSlopeMask(float3 normalWS, float threshold, float falloff) +{ + const float surfaceAngle = acos(dot(normalWS, UP_VECTOR) * 2.0 - 1.0) * RAD2DEGREE; + + const float start = surfaceAngle - threshold; + const float end = threshold - falloff; + + return saturate((end - start) / (end - threshold)); +} + +struct SceneDepth +{ + float raw; + float linear01; + float eye; +}; + +#define FAR_CLIP _ProjectionParams.z +#define NEAR_CLIP _ProjectionParams.y +//Scale linear values to the clipping planes for orthographic projection (unity_OrthoParams.w = 1 = orthographic) +#define DEPTH_SCALAR lerp(1.0, FAR_CLIP - NEAR_CLIP, unity_OrthoParams.w) + +//Linear depth difference between scene and current (transparent) geometry pixel +float SurfaceDepth(SceneDepth depth, float4 positionCS) +{ + const float sceneDepth = (unity_OrthoParams.w == 0) ? depth.eye : LinearDepthToEyeDepth(depth.raw); + const float clipSpaceDepth = (unity_OrthoParams.w == 0) ? LinearEyeDepth(positionCS.z, _ZBufferParams) : LinearDepthToEyeDepth(positionCS.z / positionCS.w); + + return sceneDepth - clipSpaceDepth; +} + +//Return depth based on the used technique (buffer, vertex color, baked texture) +SceneDepth SampleDepth(float4 screenPos) +{ + SceneDepth depth = (SceneDepth)0; + +#if !defined(_DISABLE_DEPTH_TEX) && defined(UNITY_DECLARE_DEPTH_TEXTURE_INCLUDED) + screenPos.xyz /= screenPos.w; + + depth.raw = SampleSceneDepth(screenPos.xy); + depth.eye = LinearEyeDepth(depth.raw, _ZBufferParams); + depth.linear01 = Linear01Depth(depth.raw, _ZBufferParams) * DEPTH_SCALAR; +#else + depth.raw = 1.0; + depth.eye = 1.0; + depth.linear01 = 1.0; +#endif + + return depth; +} + +#define ORTHOGRAPHIC_SUPPORT + +#if defined(USING_STEREO_MATRICES) +//Will never be used in VR, saves a per-fragment matrix multiplication +#undef ORTHOGRAPHIC_SUPPORT +#endif + +//Reconstruct world-space position from depth. +float3 ReconstructWorldPosition(float4 screenPos, float3 viewDir, SceneDepth sceneDepth) +{ + #if UNITY_REVERSED_Z + real rawDepth = sceneDepth.raw; + #else + // Adjust z to match NDC for OpenGL + real rawDepth = lerp(UNITY_NEAR_CLIP_VALUE, 1, sceneDepth.raw); + #endif + + //return ComputeWorldSpacePosition(screenPos.xy / screenPos.w, rawDepth, UNITY_MATRIX_I_VP); + + #if defined(ORTHOGRAPHIC_SUPPORT) + //View to world position + float4 viewPos = float4((screenPos.xy/screenPos.w) * 2.0 - 1.0, rawDepth, 1.0); + float4x4 viewToWorld = UNITY_MATRIX_I_VP; + #if UNITY_REVERSED_Z //Wrecked since 7.3.1 "fix" and causes warping, invert second row https://issuetracker.unity3d.com/issues/shadergraph-inverse-view-projection-transformation-matrix-is-not-the-inverse-of-view-projection-transformation-matrix + //Commit https://github.com/Unity-Technologies/Graphics/pull/374/files + viewToWorld._12_22_32_42 = -viewToWorld._12_22_32_42; + #endif + float4 viewWorld = mul(viewToWorld, viewPos); + float3 viewWorldPos = viewWorld.xyz / viewWorld.w; + #endif + + //Projection to world position + float3 camPos = GetCameraPositionWS().xyz; + float3 worldPos = sceneDepth.eye * (viewDir/screenPos.w) - camPos; + float3 perspWorldPos = -worldPos; + + #if defined(ORTHOGRAPHIC_SUPPORT) + return lerp(perspWorldPos, viewWorldPos, unity_OrthoParams.w); + #else + return perspWorldPos; + #endif + +} + +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/NormalReconstruction.hlsl" + +half3 ReconstructWorldNormal(float2 screenPos) +{ + //NormalReconstruction library scales the screen position by the screen size, so counter this first + screenPos.xy *= _ScreenSize.xy; + + half3 normalVS = ReconstructNormalTap3(screenPos.xy); + + return normalVS; +} +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Common.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Common.hlsl.meta new file mode 100644 index 00000000..69ec136c --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Common.hlsl.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: bc7a6b3bb8994234db1fb3d0fc03345c +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Common.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Foam.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Foam.hlsl new file mode 100644 index 00000000..cb72c39c --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Foam.hlsl @@ -0,0 +1,140 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#ifndef WATER_FOAM_INCLUDED +#define WATER_FOAM_INCLUDED + +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" //SRGBToLinear +#include "Common.hlsl" //PackedUV + +TEXTURE2D(_FoamTex); +SAMPLER(sampler_FoamTex); + +#define FOAM_CHANNEL 0 +#define BUBBLES_CHANNEL 1 + +//WIP +//#define DISTANCE_FOAM 1 + +float CalculateFoamWeight(float gradient, float input) +{ + gradient = saturate(1.0 - gradient); + return smoothstep(gradient, gradient + 1.0, input); +} + +float CalculateCrestFoam(float minHeight, float maxHeight, float waveHeight) +{ + return smoothstep(minHeight, maxHeight, waveHeight); +} + +float2 SampleFoamLayer(TEXTURE2D_PARAM(tex, samplerName), float2 uv, float2 tiling, float2 time, float speed, float subTiling, float subSpeed) +{ + float4 uvs = PackedUV(uv, tiling, time, speed, subTiling, subSpeed); + + float2 f1 = SAMPLE_TEXTURE2D(tex, samplerName, uvs.xy).rg; + float2 f2 = SAMPLE_TEXTURE2D(tex, samplerName, uvs.zw).rg; + + #if UNITY_COLORSPACE_GAMMA + f1 = SRGBToLinear(f1); + f2 = SRGBToLinear(f2); + #endif + + float2 foam = saturate(f1 + f2); + + return foam; +} + +float2 SampleFoamTexture(TEXTURE2D_PARAM(tex, samplerName), float3 positionWS, float2 uv, float2 tiling, float subTiling, float2 time, float speed, float subSpeed, float slopeMask, float slopeSpeed, float slopeStretch, + bool slopeFoamOn, bool distanceFoamOn, float distanceStart, float distanceEnd, float distanceTiling) +{ + float2 foam = SampleFoamLayer(TEXTURE2D_ARGS(tex, samplerName), uv, tiling, time, speed, subTiling, subSpeed); + + #if _SURFACE_FOAM_DUAL + if(distanceFoamOn) + { + float fadeFactor = DistanceFadeMask(positionWS, distanceStart, distanceEnd); + float distanceSpeed = speed * 0.1; + + float4 distanceUV = PackedUV(uv, tiling * distanceTiling, time, speed * distanceSpeed, subTiling * distanceTiling, subSpeed * distanceSpeed); + + #if _ADVANCED_SHADING + float2 distanceFoam = SampleFoamLayer(TEXTURE2D_ARGS(tex, samplerName), uv, tiling * distanceTiling, time, speed * distanceSpeed, subTiling * distanceTiling, subSpeed * distanceSpeed); + #else + float2 distanceFoam = SAMPLE_TEXTURE2D(tex, samplerName, distanceUV.xy).rg; + //distanceFoam *= 2.0; + #endif + + + foam = lerp(distanceFoam, foam, fadeFactor); + //foam = distanceFoam; + } + #endif + + if(slopeFoamOn) + { + float2 slopeUV = uv; + //Stretch UV vertically on slope + slopeUV.y *= 1-slopeStretch; + + const half2 slopeFoam = SampleFoamLayer(TEXTURE2D_ARGS(_FoamTex, sampler_FoamTex), slopeUV, tiling, time, speed * slopeSpeed, subTiling, subSpeed * slopeSpeed); + + foam = lerp(foam, slopeFoam, slopeMask); + } + + return foam; +} + +//Backwards compatibility for Dynamic Effects v3.0.2 +float2 SampleFoamTexture(TEXTURE2D_PARAM(tex, samplerName), float3 positionWS, float2 uv, float2 tiling, float subTiling, float2 time, float speed, float subSpeed, float slopeMask, float slopeSpeed, float slopeStretch, + bool slopeFoamOn, bool distanceFoamOn) +{ + return SampleFoamTexture(TEXTURE2D_ARGS(_FoamTex, sampler_FoamTex), positionWS, uv, tiling, subTiling, time, speed, subSpeed, slopeMask, slopeSpeed, slopeStretch, slopeFoamOn, distanceFoamOn, 100, 350, 0.1); +} + +float2 SampleFoamTexture(float3 positionWS, float2 uv, float2 tiling, float subTiling, float2 time, float speed, float subSpeed, float slopeMask, float slopeSpeed, half slopeStretch, bool slopeFoamOn, bool distanceFoamOn, float distanceStart, float distanceEnd, float distanceTiling) +{ + return SampleFoamTexture(TEXTURE2D_ARGS(_FoamTex, sampler_FoamTex), positionWS, uv, tiling, subTiling, time, speed, subSpeed, slopeMask, slopeSpeed, slopeStretch, slopeFoamOn, distanceFoamOn, distanceStart, distanceEnd, distanceTiling); +} + +TEXTURE2D(_IntersectionNoise); +SAMPLER(sampler_IntersectionNoise); + +float SampleIntersection(float2 uv, float2 time, float tiling, float gradient, float falloff, float speed, half rippleDistance, float rippleStrength, float rippleSpeed, float clipping, bool sharp) +{ + float intersection = 0; + float dist = saturate(gradient / falloff); + + float2 nUV = uv * tiling; + half noise1 = SAMPLE_TEXTURE2D(_IntersectionNoise, sampler_IntersectionNoise, nUV + (time.xy * speed)).r; + + half noise2 = 0; + #if _ADVANCED_SHADING + noise2 = SAMPLE_TEXTURE2D(_IntersectionNoise, sampler_IntersectionNoise, (nUV * 0.8) - (time.xy * speed)).r; + #endif + + #if UNITY_COLORSPACE_GAMMA + noise1 = SRGBToLinear(noise1); + noise2 = SRGBToLinear(noise2); + #endif + + float sine = sin((time.y * rippleSpeed) - (gradient * rippleDistance)) * rippleStrength; + + half noise = saturate((max(noise1, noise2) + sine) * dist); + + UNITY_BRANCH + if(sharp) + { + noise += dist; + intersection = step(clipping, noise); + } + else + { + intersection = saturate(noise + dist) * dist; + } + + return intersection; +} +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Foam.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Foam.hlsl.meta new file mode 100644 index 00000000..fe426a76 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Foam.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8fa352f658cc26c41a5020a8fd148bee +timeCreated: 1686819225 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Foam.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Fog.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Fog.hlsl new file mode 100644 index 00000000..9c4f410c --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Fog.hlsl @@ -0,0 +1,96 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +float _WaterFogDisabled; + +//Authors of third-party fog solutions can reach out to have their method integrated here + +#ifdef SCPostEffects +//Macros normally used for cross-RP compatibility +#define LINEAR_DEPTH(depth) Linear01Depth(depth, _ZBufferParams) + +//Legacy (pre v2.2.1) +#define DECLARE_TEX(textureName) TEXTURE2D(textureName); +#define DECLARE_RT(textureName) TEXTURE2D_X(textureName); +#define SAMPLE_TEX(textureName, samplerName, uv) SAMPLE_TEXTURE2D_LOD(textureName, samplerName, uv, 0) +#define SAMPLE_RT_LOD(textureName, samplerName, uv, mip) SAMPLE_TEXTURE2D_X_LOD(textureName, samplerName, uv, mip) +#endif + +#ifdef AtmosphericHeightFog +//For versions older than 3.2.0, uncomment this +//bool AHF_Enabled; +#endif + +//Fragment stage. Note: Screen position passed here is not normalized (divided by w-component) +void ApplyFog(inout float3 color, float fogFactor, float4 screenPos, float3 positionWS, float vFace) +{ + float3 foggedColor = color; + + float2 normalizedUV = screenPos.xy / screenPos.w; +#ifdef UnityFog + foggedColor = MixFog(color.rgb, fogFactor); +#endif + +#ifdef Colorful + if(_DensityParams.x > 0) foggedColor.rgb = ApplyFog(color.rgb, fogFactor, positionWS, normalizedUV); +#endif + +#ifdef Enviro + //Distance/height fog enabled? + if (_EnviroParams.y > 0 || _EnviroParams.z > 0) + { + foggedColor.rgb = TransparentFog(float4(color.rgb, 1.0), positionWS, normalizedUV, fogFactor).rgb; + } +#endif + +#ifdef Enviro3 + if(_EnviroFogParameters.z > 0) //Fog density 1 + { + foggedColor.rgb = ApplyFogAndVolumetricLights(color.rgb, normalizedUV, positionWS, 0); + foggedColor.rgb = ApplyClouds(foggedColor.rgb, normalizedUV, positionWS); + } +#endif + +#ifdef Azure + foggedColor.rgb = ApplyAzureFog(float4(color.rgb, 1.0), positionWS).rgb; +#endif + +#ifdef AtmosphericHeightFog + if (AHF_Enabled) + { + float4 fogParams = GetAtmosphericHeightFog(positionWS.xyz); + foggedColor.rgb = lerp(color.rgb, fogParams.rgb, fogParams.a); + } +#endif + +#ifdef SCPostEffects + //Distance or height fog enabled + if(_DistanceParams.z == 1 || _DistanceParams.w == 1) + { + ApplyTransparencyFog(positionWS, normalizedUV, foggedColor.rgb); + } +#endif + +#ifdef COZY + foggedColor = BlendStylizedFog(positionWS, float4(color.rgb, 1.0)).rgb; +#endif + +#ifdef Buto + #if defined(BUTO_API_VERSION_2) //Buto 2022 + float3 positionVS = TransformWorldToView(positionWS); + foggedColor = ButoFogBlend(normalizedUV, -positionVS.z, color.rgb); + #else //Buto 2021 + foggedColor = ButoFogBlend(normalizedUV, color.rgb); + #endif +#endif + + #ifndef UnityFog + //Allow fog to be disabled for water globally by setting the value through script + foggedColor = lerp(foggedColor, color, _WaterFogDisabled); + #endif + + //Fog only applies to the front faces, otherwise affects underwater rendering + color.rgb = lerp(color.rgb, foggedColor.rgb, vFace); +} diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Fog.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Fog.hlsl.meta new file mode 100644 index 00000000..97603eb4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Fog.hlsl.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 6c7938bab5e4b6e46af2d3d65e75fe34 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Fog.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Gerstner.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Gerstner.hlsl new file mode 100644 index 00000000..09616f2a --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Gerstner.hlsl @@ -0,0 +1,117 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#ifndef WATER_GERSTNER_INCLUDED +#define WATER_GERSTNER_INCLUDED + +#define MAX_AMPLITUDE 5.0 +#define GRAVITY 9.8f + +float3 _GlobalWaveOriginOffset; + +#if !defined(UNITY_CORE_SAMPLERS_INCLUDED) +//Do not want linear interpolation between texels, forcing the usage of a point sampler +SamplerState sampler_PointClamp; +#endif + +struct WaveParameters +{ + uint enabled; + float amplitude; + float waveLength; + float steepness; + uint mode; + float direction; + float2 origin; +}; + +//Sample parameters from LUT, stored in two horizontal rows +void SampleWaveParameters(inout WaveParameters data, uint index, Texture2D tex, uint columns) +{ + //Each layer's data is stored in a texel, from left to right. The horizontal position corresponds to the array element, so that's the UV + const float2 lutUV = float2((float)index / (float)columns, 0); + + const float4 row0 = SAMPLE_TEXTURE2D_LOD(tex, sampler_PointClamp, lutUV, 0); + data.amplitude = row0.x; + data.waveLength = row0.y; + data.direction = row0.z; //Rotation angle in radians + data.enabled = row0.w; + + const float4 row1 = SAMPLE_TEXTURE2D_LOD(tex, sampler_PointClamp, lutUV + float2(0, 0.5), 0); + data.origin = row1.xy + _GlobalWaveOriginOffset.xz; + data.mode = row1.z; + data.steepness = row1.w; +} + +//LUT texture is passed in as a parameter, since it may differ on a per-material basis +void CalculateGerstnerWaves_float(in Texture2D lutTex, in uint layerCount, in float2 position, in float frequency, in float time, in float normalStrength, in float2 baseDirection, in uint count, out float3 offset, out float3 tangent, out float3 bitangent) +{ + //Defaults + offset = float3(0,0,0); + tangent = float3(1,0,0); + bitangent = float3(0,0,1); + + //Clamp to maximum number of layers + count = min(count - 1, layerCount); + + WaveParameters layer = (WaveParameters)0; + + uint waveCount = 0; + for(uint i = 0; i <= count; i++) + { + SampleWaveParameters(layer, i, lutTex, layerCount); + + if(layer.enabled > 0) + { + waveCount += 1; + + const float w = TWO_PI / (layer.waveLength * frequency); + const float freq = sqrt(GRAVITY * w); + //As amplitude scales down, so should the steepness + half ampRCP = (layer.amplitude/MAX_AMPLITUDE); + //Both divide and scale by amplitude + float steepness = (layer.steepness / layer.amplitude) * ampRCP; + + //Rotation already pre-converted into radians + float2 direction = float2(sin(layer.direction), cos(layer.direction)) * baseDirection; + + //Radial mode + if(layer.mode == 1) + { + direction = (position - layer.origin); + direction = normalize(direction); + } + + const float dir = dot(direction, position - (layer.origin * layer.mode)); + + const float t = dir * w + (freq * -time); + + float proximalSine = sin(t); //Y + float lateralSine = cos(t); //XZ + + //Relative XYZ offsets + offset.x += direction.x * layer.amplitude * lateralSine * steepness; + offset.y += proximalSine * layer.amplitude; + offset.z += direction.y * layer.amplitude * lateralSine * steepness; + + tangent += float3( + -direction.x * direction.x * (steepness * proximalSine), + offset.x, + -direction.x * direction.y * (steepness * proximalSine) + ); + + bitangent += float3( + -direction.x * direction.y * (steepness * proximalSine), + offset.z, + -direction.y * -direction.y * (steepness * proximalSine) + ); + } + } + waveCount = max(waveCount, 1); + + tangent = lerp(float3(1,0,0), tangent, normalStrength / waveCount); + bitangent = lerp(float3(0,0,1), bitangent, normalStrength / waveCount); +} +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Gerstner.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Gerstner.hlsl.meta new file mode 100644 index 00000000..82eb539f --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Gerstner.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3c34798f0964a3e42997b7f7ec3408da +timeCreated: 1715773949 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Gerstner.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Height.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Height.hlsl new file mode 100644 index 00000000..2f44bea0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Height.hlsl @@ -0,0 +1,109 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#include "Projection.hlsl" + +uniform bool _WaterHeightPrePassAvailable; +#define VOID_THRESHOLD -1000 //Same value as in HeightPrePass class + +uniform float3 _WaterHeightCoords; +//XY: Bounds min +//Z: Bounds size +uniform Texture2D _WaterHeightBuffer; +//RED: Geometry world height +//GREEN: Relative world height (displacement effects) + +#ifndef UNITY_CORE_SAMPLERS_INCLUDED +SamplerState sampler_LinearClamp; +#endif + +//Position, relative to rendering bounds (normalized 0-1) +float2 WorldToHeightUV(float3 positionWS) +{ + return WorldToProjectionUV(positionWS, _WaterHeightCoords.xy, _WaterHeightCoords.z); +} + +//May be used to validate if the sampled (summed) height is actually from a water surface +bool HasHitWaterSurface(float height) +{ + return height > VOID_THRESHOLD; +} + +float2 SampleHeightBuffer(float2 uv) +{ + //if(_WaterHeightPrePassAvailable == false) return VOID_THRESHOLD; + + float2 heightData = _WaterHeightBuffer.SampleLevel(sampler_LinearClamp, uv, 0).rg; + + return heightData; +} + +//Main function +float2 SampleWaterHeight(float3 positionWS) +{ + return SampleHeightBuffer(WorldToHeightUV(positionWS)); +} + +//Alternative version +void SampleWaterHeights(float3 positionWS, out float geometryHeight, out float displacement) +{ + float2 heights = SampleHeightBuffer(WorldToHeightUV(positionWS)); + + geometryHeight = heights.r; + displacement = heights.g; +} + +//Derive a world-space normal from the height data +float3 CalculateWaterNormal(float3 positionWS, float strength) +{ + if(_WaterHeightPrePassAvailable == false) return float3(0,1,0); + + //Note: not using the buffer's texel size so that the sampled result remains consistent across different resolutions. + const float radius = 1.0 / _WaterHeightCoords.z; + + float2 uv = WorldToHeightUV(positionWS); + + const float2 xMinSample = SampleHeightBuffer(float2(uv.x - radius, uv.y)).rg; + const float xLeft = xMinSample.r + xMinSample.g; + const float2 xMaxSample = SampleHeightBuffer(float2(uv.x + radius, uv.y)).rg; + const float xRight = xMaxSample.r + xMaxSample.g; + + const float2 yMaxSample = SampleHeightBuffer(float2(uv.x, uv.y + radius)).rg; + const float yUp = yMaxSample.r + yMaxSample.g; + const float2 yMinSample = SampleHeightBuffer(float2(uv.x, uv.y - radius)).rg; + const float yDown = yMinSample.r + yMinSample.g; + + float xDelta = (xLeft - xRight) * strength; + float zDelta = (yDown - yUp) * strength; + + float3 normal = float3(xDelta, 1.0, zDelta); + + //return float3(0,xLeft,0); + + return normalize(normal.xyz); +} + +//Shader Graph +void SampleWaterHeight_float(float3 positionWS, out float geometryHeight, out float displacement) +{ + #if defined(SHADERGRAPH_PREVIEW) + geometryHeight = positionWS.y; + displacement = 0.0; + #else + float2 heights = SampleWaterHeight(positionWS); + geometryHeight = heights.r; + displacement = heights.g; +#endif +} + +//Shader Graph +void CalculateWaterNormal_float(float3 positionWS, float strength, out float3 normal) +{ + #if defined(SHADERGRAPH_PREVIEW) + normal = float3(0,1,0); + #else + normal = CalculateWaterNormal(positionWS, strength); +#endif +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Height.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Height.hlsl.meta new file mode 100644 index 00000000..3b2ea9ba --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Height.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4453c99908d0997428446580ee1d8bd0 +timeCreated: 1701267893 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Height.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Input.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Input.hlsl new file mode 100644 index 00000000..8d061379 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Input.hlsl @@ -0,0 +1,149 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#ifndef WATER_INPUT_INCLUDED +#define WATER_INPUT_INCLUDED + +CBUFFER_START(UnityPerMaterial) + float4 _ShallowColor; + float4 _BaseColor; + half _ColorAbsorption; + + //float _Smoothness; + //float _Metallic; + + float4 _IntersectionColor; + uint _FogSource; + float _DepthVertical; + float _DepthHorizontal; + float _WorldSpaceUV; + float2 _NormalTiling; + float _NormalSubTiling; + float _NormalSpeed; + float _NormalSubSpeed; + half _NormalStrength; + + half2 _DistanceNormalsFadeDist; + half _DistanceNormalsTiling; + + half _TranslucencyStrength; + half _TranslucencyStrengthDirect; + half _TranslucencyExp; + half _TranslucencyCurvatureMask; + half _EdgeFade; + float4 _HorizonColor; + half _HorizonDistance; + float _SparkleIntensity; + half _SparkleSize; + half _SunReflectionDistortion; + half _SunReflectionSize; + float _SunReflectionStrength; + bool _SunReflectionSharp; + + float _PointSpotLightReflectionStrength; + half _PointSpotLightReflectionSize; + half _PointSpotLightReflectionDistortion; + bool _PointSpotLightReflectionSharp; + + + float _ReflectionDistortion; + float _ReflectionBlur; + float _ReflectionFresnel; + float _ReflectionStrength; + half _ReflectionLighting; + bool _PlanarReflectionsEnabled; + bool _ScreenSpaceReflectionsEnabled; + half _ShadowStrength; + float2 _Direction; + float _Speed; + + half _SlopeStretching; + half _SlopeSpeed; + half _SlopeAngleThreshold; + half _SlopeAngleFalloff; + half _SlopeFoam; + + //Foam + float4 _FoamColor; + float _FoamSpeed; + float _FoamSubSpeed; + float2 _FoamTiling; + float _FoamSubTiling; + half _FoamBaseAmount; + half _FoamStrength; + half _FoamClipping; + half2 _FoamCrestMinMaxHeight; + half _FoamBubblesSpread; + half _FoamBubblesStrength; + half _FoamDistortion; + half2 _DistanceFoamFadeDist; + float _DistanceFoamTiling; + + float _FoamTilingDynamic; + float _FoamSubTilingDynamic; + float _FoamSpeedDynamic; + float _FoamSubSpeedDynamic; + half _FoamClippingDynamic; + + //Intersection + half _IntersectionSource; + half _IntersectionLength; + half _IntersectionFalloff; + half _IntersectionTiling; + half _IntersectionDistortion; + half _IntersectionRippleDist; + half _IntersectionRippleStrength; + float _IntersectionRippleSpeed; + half _IntersectionClipping; + bool _IntersectionSharp; + float _IntersectionSpeed; + + //Waves + half _WaveHeight; + float _WaveFrequency; + half _WaveNormalStr; + float _WaveDistance; + half2 _WaveFadeDistance; + float _WaveSteepness; + uint _WaveMaxLayers; + half4 _WaveDirection; + float _WaveSpeed; + + half _ShoreLineWaveStr; + half _ShoreLineWaveDistance; + half _ShoreLineLength; + + //Underwater + half _CausticsBrightness; + half _CausticsChromance; + float _CausticsTiling; + half _CausticsSpeed; + half _RefractionStrength; + half _RefractionChromaticAberration; + half _CausticsDistortion; + bool _EnableDirectionalCaustics; + + half _UnderwaterSurfaceSmoothness; + half _UnderwaterRefractionOffset; + half _UnderwaterReflectionStrength; + + half _VertexColorTransparency; + half _VertexColorWaveFlattening; + half _VertexColorFoam; + + bool _ReceiveDynamicEffectsHeight; + half _ReceiveDynamicEffectsFoam; + bool _ReceiveDynamicEffectsNormal; + + half _WaveTint; + float4 _WaveProfile_TexelSize; +//#ifdef TESSELLATION_ON + float _TessValue; + float _TessMin; + float _TessMax; +//#endif +CBUFFER_END + +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Input.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Input.hlsl.meta new file mode 100644 index 00000000..69f625c6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Input.hlsl.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: d200c414efa119f4aa38b83f1f15d281 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Input.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Lighting.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Lighting.hlsl new file mode 100644 index 00000000..f756043d --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Lighting.hlsl @@ -0,0 +1,309 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#ifndef WATER_LIGHTING_INCLUDED +#define WATER_LIGHTING_INCLUDED + +#include "Common.hlsl" +#include "Reflections.hlsl" + +#if !_UNLIT +#define LIT +#endif + +#define SPECULAR_POWER_RCP 0.01562 // 1.0/32 +#define SPECULAR_STEP_THRESHOLD 0.2 + +//Reusable for every light +struct TranslucencyData +{ + bool directionalLight; + float3 subsurfaceColor; + float3 lightColor; + float3 lightDir; + float3 viewDir; + float3 normal; + float curvature; + float mask; //Actually the 'thickness' + float strength; + float strengthIncident; + float exponent; + +}; + +TranslucencyData PopulateTranslucencyData(float3 subsurfaceColor, float3 lightDir, float3 lightColor, float3 viewDir, float3 WorldNormal, float3 worldTangentNormal, float mask, float strength, float incidentStrength, float exponent, float offset, bool directionalLight) +{ + TranslucencyData d = (TranslucencyData)0; + d.directionalLight = directionalLight; + d.subsurfaceColor = subsurfaceColor; + d.lightColor = lightColor; + d.lightDir = lightDir; + + #if _ADVANCED_SHADING + //Slightly include high frequency details + d.normal = normalize(WorldNormal + (worldTangentNormal * 0.2)); + #else + d.normal = WorldNormal; + #endif + d.curvature = offset; + d.mask = mask; //Shadows, foam, intersection, etc + d.strength = strength; + d.strengthIncident = incidentStrength; + d.viewDir = viewDir; + d.exponent = exponent; + + return d; +} + +//Single channel overlay +float BlendOverlay(float a, float b) +{ + return (b < 0.5) ? 2.0 * a * b : 1.0 - 2.0 * (1.0 - a) * (1.0 - b); +} + +//RGB overlay +float3 BlendOverlay(float3 a, float3 b) +{ + return float3(BlendOverlay(a.r, b.r), BlendOverlay(a.g, b.g), BlendOverlay(a.b, b.b)); +} + +//In URP light intensity is pre-multiplied with the HDR color, extract via magnitude of color "vector" +float GetLightIntensity(float3 lightColor) +{ + //Luminance equals HDR output + return (lightColor.r * 0.3 + lightColor.g * 0.59 + lightColor.b * 0.11); +} + +float GetLightIntensity(Light light) { return GetLightIntensity(light.color); } + +void ApplyTranslucency(float3 subsurfaceColor, float3 lightDir, float3 lightColor, float3 viewDir, float3 normal, float occlusion, float strength, float incidentStrength, float exponent, float offset, bool directionalLight, inout float3 emission) +{ + //Coefficient describing how much the surface orientation is between the camera and the direction of/to the light + half transmittance = saturate(dot(-viewDir, lightDir)); + //Exponentiate to tighten the falloff + transmittance = saturate(pow(transmittance, exponent)) * strength; + + half incident = 0; + if(directionalLight) + { + incident = saturate(dot(lightDir, normal)) * incidentStrength; + } + + //Mask by normals facing away from the light (backfaces, in light-space) + const half curvature = saturate(lerp(1.0, dot(normal, -lightDir), offset)); + transmittance *= curvature; + + const float lightIntensity = saturate(GetLightIntensity(lightColor)); + + half attenuation = (transmittance + incident) * occlusion * lightIntensity; + +#if _ADVANCED_SHADING + if(directionalLight) + { + //Fade the effect out as the sun approaches the horizon (80 to 90 degrees) + half sunAngle = saturate(dot(float3(0, 1, 0), lightDir)); + half angleMask = saturate(sunAngle * 10); /* 1.0/0.10 = 10 */ + attenuation *= angleMask; + } + + //Modulate with light color to better match dynamic lighting conditions + subsurfaceColor = BlendOverlay(saturate(lightColor), subsurfaceColor); + + emission += subsurfaceColor * attenuation; +#else //Simple shading + emission += lerp(emission, subsurfaceColor, attenuation); +#endif +} + +void ApplyTranslucency(TranslucencyData translucencyData, inout float3 emission) +{ + ApplyTranslucency(translucencyData.subsurfaceColor, translucencyData.lightDir, translucencyData.lightColor, translucencyData.viewDir, translucencyData.normal, translucencyData.mask, translucencyData.strength, translucencyData.strengthIncident, translucencyData.exponent, translucencyData.curvature, translucencyData.directionalLight, emission); +} + +void AdjustShadowStrength(inout Light light, float strength, float vFace) +{ + light.shadowAttenuation = saturate(light.shadowAttenuation + (1.0 - (strength * vFace))); +} + +//Specular Blinn-phong reflection in world-space +float3 SpecularReflection(Light light, float3 viewDirectionWS, float3 geometryNormalWS, float3 normalWS, float perturbation, float exponent, float intensity, bool sharp) +{ + //Blend between geometry/wave normals and normals from normal map (aka distortion) + normalWS = lerp(geometryNormalWS, normalWS, perturbation); + + const float3 halfVec = normalize(light.direction + viewDirectionWS + (normalWS * perturbation)); + half NdotH = saturate(dot(geometryNormalWS, halfVec)); + + float specular = pow(NdotH, exponent); + + if(sharp) + { + specular = step(SPECULAR_STEP_THRESHOLD, specular); + intensity *= 0.5; + } + + //Attenuation includes shadows, if available + const float3 attenuatedLightColor = light.color * (light.distanceAttenuation * light.shadowAttenuation); + + //Mask reflection by surfaces "visible" by the light only + float viewFactor = saturate(dot(geometryNormalWS, light.direction)); + + #if _ADVANCED_SHADING + //Create a linear gradient a little before the cutoff point, in order to maintain HDR values properly + viewFactor = smoothstep(0.0, 0.15, viewFactor); + #endif + + float3 specColor = attenuatedLightColor * specular * intensity * viewFactor; + + #if UNITY_COLORSPACE_GAMMA + specColor = LinearToSRGB(specColor); + #endif + + return specColor; +} + +//Based on UniversalFragmentBlinnPhong (no BRDF) +float3 ApplyLighting(inout SurfaceData surfaceData, inout float3 sceneColor, Light mainLight, InputData inputData, WaterSurface water, TranslucencyData translucencyData, float shadowStrength, float vFace, bool isMatchingLightLayer) +{ + if(isMatchingLightLayer) ApplyTranslucency(translucencyData, surfaceData.emission.rgb); + + #if _CAUSTICS + float causticsAttentuation = 1.0; + #endif + +#ifdef LIT + #if _CAUSTICS && !defined(LIGHTMAP_ON) + if(isMatchingLightLayer) + { + causticsAttentuation = GetLightIntensity(mainLight) * (mainLight.distanceAttenuation * mainLight.shadowAttenuation); + } + #endif + + MixRealtimeAndBakedGI(mainLight, water.diffuseNormal, inputData.bakedGI, shadowStrength.xxxx); + + /* + //PBR shading + BRDFData brdfData; + InitializeBRDFData(surfaceData.albedo, surfaceData.metallic, surfaceData.specular, surfaceData.smoothness, surfaceData.alpha, brdfData); + + half3 diffuseColor = GlobalIllumination(brdfData, inputData.bakedGI, shadowStrength, inputData.water.diffuseNormal, inputData.viewDirectionWS); + diffuseColor += LightingPhysicallyBased(brdfData, mainLight, water.diffuseNormal, inputData.viewDirectionWS); + */ + + half3 directLight = 0; + if(isMatchingLightLayer) + { + //Allow shadow strength to be overridden. + AdjustShadowStrength(mainLight, shadowStrength, vFace); + + half3 attenuatedLightColor = mainLight.color * (mainLight.distanceAttenuation * mainLight.shadowAttenuation); + directLight = LightingLambert(attenuatedLightColor, mainLight.direction, water.diffuseNormal); + } + half3 diffuseColor = inputData.bakedGI + directLight; + +#if _ADDITIONAL_LIGHTS //Per pixel lights + #ifndef _SPECULARHIGHLIGHTS_OFF + half specularPower = (_PointSpotLightReflectionSize * SPECULAR_POWER_RCP); + specularPower = lerp(8.0, 1.0, _PointSpotLightReflectionSize) * _PointSpotLightReflectionStrength; + #endif + + uint pixelLightCount = GetAdditionalLightsCount(); + #if _LIGHT_LAYERS + uint meshRenderingLayers = GetMeshRenderingLayer(); + #endif + + #if _TRANSLUCENCY + float translucencyStrength = translucencyData.strength; + float translucencyExp = translucencyData.exponent; + #endif + + LIGHT_LOOP_BEGIN(pixelLightCount) + + Light light = GetAdditionalLight(lightIndex, inputData.positionWS, shadowStrength.xxxx); + + #if _LIGHT_LAYERS + if (IsMatchingLightLayer(light.layerMask, meshRenderingLayers)) + #endif + { + #if _ADVANCED_SHADING + #if _CAUSTICS && !_LIGHT_COOKIES && defined(_ADDITIONAL_LIGHT_CAUSTICS) //Actually want to skip this when using cookies. Since they can be used for caustics instead + //Light attenuation adds caustics, mask by shadows + causticsAttentuation += GetLightIntensity(light) * (light.distanceAttenuation * light.shadowAttenuation) * _PointSpotLightReflectionStrength * (1-water.fog); + #endif + + #if _TRANSLUCENCY && defined(_ADDITIONAL_LIGHT_TRANSLUCENCY) + //Keep settings from main light pass, but override these + translucencyData.directionalLight = false; + if(water.vFace > 0) + { + translucencyData.lightDir = light.direction; + translucencyData.lightColor = light.color * light.distanceAttenuation; + translucencyData.strength = translucencyStrength * light.shadowAttenuation * (water.fog); + translucencyData.exponent = translucencyExp * light.distanceAttenuation; + + ApplyTranslucency(translucencyData, surfaceData.emission.rgb); + } + #endif + #endif + + #if _ADDITIONAL_LIGHT_SHADOWS //URP 11+ + AdjustShadowStrength(light, shadowStrength, vFace); + #endif + + half3 attenuatedLightColor = light.color * (light.distanceAttenuation * light.shadowAttenuation); + diffuseColor += LightingLambert(attenuatedLightColor, light.direction, water.diffuseNormal); + + #ifndef _SPECULARHIGHLIGHTS_OFF + //Note: View direction fetched again using the function that takes orthographic projection into account + surfaceData.specular += SpecularReflection(light, normalize(GetWorldSpaceViewDir(inputData.positionWS)), water.waveNormal, water.tangentWorldNormal, _PointSpotLightReflectionDistortion, lerp(4096, 64, _PointSpotLightReflectionSize), specularPower, _PointSpotLightReflectionSharp); + #endif + } + LIGHT_LOOP_END +#endif + +#ifdef _ADDITIONAL_LIGHTS_VERTEX //Previous calculated in vertex stage + diffuseColor += inputData.vertexLighting; +#endif + +#else //Unlit + const half3 diffuseColor = 1; +#endif + + #if _CAUSTICS + surfaceData.emission.rgb += water.caustics * causticsAttentuation * vFace; + #endif + + float3 color = (surfaceData.albedo.rgb * diffuseColor) + surfaceData.emission.rgb + surfaceData.specular; + + #ifndef _ENVIRONMENTREFLECTIONS_OFF + //Reflections blend in on top of everything + color = lerp(color, water.reflections.rgb, water.reflectionMask * water.reflectionLighting * vFace); + #endif + + #if _REFRACTION + //Ensure the same effects are applied to the underwater scene color. Otherwise not visible on clear water + sceneColor += (surfaceData.emission.rgb + surfaceData.specular) * vFace; + #endif + + //Debug + //return float4(surfaceData.emission.rgb, 1.0); + + return color; +} + +//Color of light ray passing through the water, hitting the sea floor (extinction) +//This applies to the scene color +float LightExtinction(float verticalDepth, float viewDepth, float density) +{ + return exp(-density * (verticalDepth + viewDepth)); +} + +//Energy loss of ray, as it travels deeper and scatters (absorption) +//This applies to the color of the underwater fog +float LightAbsorption(float absorption, float viewDepth) +{ + return saturate(exp(-absorption * viewDepth)); +} +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Lighting.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Lighting.hlsl.meta new file mode 100644 index 00000000..7a3c24f0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Lighting.hlsl.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 38853322ca865a940b928d6b89c909d4 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Lighting.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Normals.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Normals.hlsl new file mode 100644 index 00000000..93aa1033 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Normals.hlsl @@ -0,0 +1,76 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +TEXTURE2D(_BumpMap); +SAMPLER(sampler_BumpMap); +TEXTURE2D(_BumpMapLarge); +TEXTURE2D(_BumpMapSlope); + +float3 BlendTangentNormals(float3 a, float3 b) +{ + #if _ADVANCED_SHADING + return BlendNormalRNM(a, b); + #else + return BlendNormal(a, b); + #endif +} + +float3 SampleNormals(float2 uv, float2 tiling, float subTiling, float3 wPos, float2 time, float speed, float subSpeed, float slope, int vFace) +{ + float4 uvs = PackedUV(uv, tiling, time, speed, subTiling, subSpeed); + float3 n1 = UnpackNormal(SAMPLE_TEXTURE2D(_BumpMap, sampler_BumpMap, uvs.xy)); + float3 n2 = UnpackNormal(SAMPLE_TEXTURE2D(_BumpMap, sampler_BumpMap, uvs.zw)); + + float3 blendedNormals = BlendTangentNormals(n1, n2); + + #ifdef QUAD_NORMAL_SAMPLES + uvs = PackedUV(uv, tiling, time.yx, speed, subTiling, subSpeed); + float3 n4 = UnpackNormal(SAMPLE_TEXTURE2D(_BumpMap, sampler_BumpMap, uvs.xy * 2.0)); + float3 n5 = UnpackNormal(SAMPLE_TEXTURE2D(_BumpMap, sampler_BumpMap, uvs.zw * 2.0)); + + blendedNormals = BlendTangentNormals(blendedNormals, BlendTangentNormals(n4, n5)); + #endif + +#if _DISTANCE_NORMALS + float fadeFactor = DistanceFadeMask(wPos, _DistanceNormalsFadeDist.x, _DistanceNormalsFadeDist.y, vFace); + + float3 largeBlendedNormals; + + half distanceSubSpeed = -0.9; + #if _RIVER + distanceSubSpeed = 0.9; + #endif + + uvs = PackedUV(uv, _DistanceNormalsTiling.xx, time, speed * 2.0, 2.0, distanceSubSpeed); + float3 n1b = UnpackNormal(SAMPLE_TEXTURE2D(_BumpMapLarge, sampler_BumpMap, uvs.xy)); + + #if _ADVANCED_SHADING //Use 2nd texture sample + float3 n2b = UnpackNormal(SAMPLE_TEXTURE2D(_BumpMapLarge, sampler_BumpMap, uvs.zw)); + largeBlendedNormals = BlendTangentNormals(n1b, n2b); + #else + largeBlendedNormals = n1b; + #endif + + blendedNormals = lerp(largeBlendedNormals, blendedNormals, fadeFactor); +#endif + +#if _RIVER + uvs = PackedUV(uv, tiling, time, speed * _SlopeSpeed, subTiling, subSpeed * _SlopeSpeed); + uvs.xy = uvs.xy * float2(1, 1-_SlopeStretching); + float3 n3 = UnpackNormal(SAMPLE_TEXTURE2D(_BumpMapSlope, sampler_BumpMap, uvs.xy)); + + #if _ADVANCED_SHADING + n3 = BlendTangentNormals(n3, UnpackNormal(SAMPLE_TEXTURE2D(_BumpMapSlope, sampler_BumpMap, uvs.zw))); + #endif + + blendedNormals = lerp(blendedNormals, n3, slope); +#endif + + #if WAVE_SIMULATION + BlendWaveSimulation(wPos, blendedNormals); + #endif + + return blendedNormals; +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Normals.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Normals.hlsl.meta new file mode 100644 index 00000000..95c4b221 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Normals.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 41756f23fe64419bba7b33df20a1769e +timeCreated: 1730297021 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Normals.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Projection.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Projection.hlsl new file mode 100644 index 00000000..26b75b58 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Projection.hlsl @@ -0,0 +1,30 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#ifndef PROJECTION_UTILS_INCLUDED +#define PROJECTION_UTILS_INCLUDED + +//Position, relative to rendering bounds (normalized 0-1) +float2 WorldToProjectionUV(float3 positionWS, float2 origin, float size) +{ + return (positionWS.xz - origin.xy) / size; +} + +float ProjectionEdgeMask(float3 positionWS, float2 origin, float size, float blendDistance) +{ + const float extents = (size * 0.499); + + //Shift to origin + positionWS = positionWS - extents; + + const float2 boundsMin = origin.xy - extents; + const float2 boundsMax = origin.xy + extents; + + float2 weightDir = min(positionWS.xz - boundsMin, boundsMax - positionWS.xz) / blendDistance; + + return saturate(min(weightDir.x, weightDir.y)); +} + +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Projection.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Projection.hlsl.meta new file mode 100644 index 00000000..36545c08 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Projection.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 05ebdef3885046e983ec45e7afff5ab9 +timeCreated: 1721054165 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Projection.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Reflections.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Reflections.hlsl new file mode 100644 index 00000000..5b53fc11 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Reflections.hlsl @@ -0,0 +1,163 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#ifndef WATER_REFLECTIONS_INCLUDED +#define WATER_REFLECTIONS_INCLUDED + +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTexture.hlsl" + +#define AIR_RI 1.000293 + +//Schlick's BRDF fresnel +float ReflectionFresnel(float3 worldNormal, float3 viewDir, float exponent) +{ + float cosTheta = saturate(dot(worldNormal, viewDir)); + return pow(max(0.0, AIR_RI - cosTheta), exponent); +} + +float AttenuateSSR(float2 uv) +{ + float offset = min(1.0 - max(uv.x, uv.y), min(uv.x, uv.y)); + + float result = offset / (0.1); + result = saturate(result); + + return pow(result, 0.5); +} + + +float4 _WaterSSRParams; +//X: Enabled bool +//Y: Accept skybox hits + +#define ALLOW_SSR _WaterSSRParams.x > 0.5 +#define SSR_REFLECT_SKY _WaterSSRParams.y > 0.5 + +float4 _WaterSSRSettings; +//X: Steps +//Y: Step size +//Z: Max distance +//W: Thickness + +#define SSR_SAMPLES _WaterSSRSettings.x +#define SSR_STEPSIZE _WaterSSRSettings.y +#define SSR_MAX_DISTANCE _WaterSSRSettings.z +#define SSR_THICKNESS _WaterSSRSettings.w + +void RaymarchSSR(float3 positionVS, float3 direction, uint samples, half stepSize, half thickness, out half2 sampleUV, out half valid, out half outOfBounds) +{ + sampleUV = 0; + valid = 0; + outOfBounds = 0; + + direction *= stepSize; + const half rcpStepCount = rcp(samples); + + UNITY_LOOP + for(uint i = 0; i < samples; i++) + { + positionVS += direction; + direction *= 1+stepSize; + + //View-space to screen-space UV + sampleUV = ComputeNormalizedDeviceCoordinates(positionVS, GetViewToHClipMatrix()); + + if (any(sampleUV < 0) || any(sampleUV > 1)) + { + outOfBounds = 1; + valid = 0; + break; + } + + outOfBounds = AttenuateSSR(sampleUV); + + //Sample Mip0, gradient sampling cannot work with loops + float deviceDepth = SAMPLE_TEXTURE2D_X_LOD(_CameraDepthTexture, sampler_CameraDepthTexture, sampleUV, 0).r; + + //Depth is near-infinity. May want to reflect the skybox, if no reflection probes are present + if(SSR_REFLECT_SKY && deviceDepth <= 0.00001) + { + valid = 1; + continue; + } + + //Calculate view-space position from UV and depth + //Not using the ComputeViewSpacePosition function, since this negates the Z-component + float3 samplePos = ComputeWorldSpacePosition(sampleUV, deviceDepth, UNITY_MATRIX_I_P); + + //Depth mismatch check. Geometry behind the water is invalid. If the difference in depth is large enough, consider it a miss. + if (abs(samplePos.z - positionVS.z) > length(direction) * thickness) continue; + + if(samplePos.z > positionVS.z) + { + valid = 1; + return; + } + } +} + +TEXTURE2D_X(_PlanarReflection); +SAMPLER(sampler_PlanarReflection); + +float3 SampleReflectionProbes(float3 reflectionVector, float3 positionWS, float smoothness, float2 screenPos) +{ + float3 probes = float3(0,0,0); + + probes = GlossyEnvironmentReflection(reflectionVector, positionWS, smoothness, 1.0, screenPos.xy).rgb; + + return probes; +} + +float3 SampleReflections(float3 reflectionVector, float smoothness, float4 screenPos, float3 positionWS, float3 normalWS, float3 viewDir, float2 pixelOffset, bool planarReflectionsEnabled, bool ssrEnabled, out float3 renderedReflections) +{ + screenPos.xy += pixelOffset.xy * lerp(1.0, 0.1, unity_OrthoParams.w); + screenPos /= screenPos.w; + + const float3 probes = SampleReflectionProbes(reflectionVector, positionWS, smoothness, screenPos.xy); + + float3 reflections = probes; + + //Output separately, for underwater rendering + renderedReflections = 0; + + #if !_DISABLE_DEPTH_TEX + if(ssrEnabled && ALLOW_SSR) + { + const float3 positionVS = TransformWorldToView(positionWS); + const float3 direction = TransformWorldToViewDir(reflectionVector); + + float2 ssrUV = 0; + half ssrRayMask, ssrEdgeMask = 0; + + RaymarchSSR(positionVS, direction, SSR_SAMPLES, SSR_STEPSIZE, SSR_THICKNESS, ssrUV, ssrRayMask, ssrEdgeMask); + + half ssrMask = ssrRayMask * ssrEdgeMask; + const float3 reflectionSS = SampleSceneColor(ssrUV); + + reflections = lerp(reflections, reflectionSS, ssrMask); + + renderedReflections += reflectionSS * ssrMask; + } + #endif + + #if !_RIVER //Planar reflections are pointless on curved surfaces, skip + if(planarReflectionsEnabled) + { + float4 planarReflections = SAMPLE_TEXTURE2D_X_LOD(_PlanarReflection, sampler_PlanarReflection, screenPos.xy, 0); + //Terrain add-pass can output negative alpha values. Clamp as a safeguard against this + planarReflections.a = saturate(planarReflections.a); + + reflections = lerp(reflections, planarReflections.rgb, planarReflections.a); + + renderedReflections = lerp(renderedReflections, planarReflections.rgb, planarReflections.a); + } + #endif + + return reflections; +} +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Reflections.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Reflections.hlsl.meta new file mode 100644 index 00000000..63d0c05c --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Reflections.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 88174d9ecc872bc4d9c1479869e92de0 +timeCreated: 1701010589 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Reflections.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Refraction.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Refraction.hlsl new file mode 100644 index 00000000..1fef6714 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Refraction.hlsl @@ -0,0 +1,75 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTexture.hlsl" + +#define CHROMASHIFT_SIZE 0.05 +#define REFRACTION_IOR_RCP 0.7501875 //=1f/1.333f + +float2 RefractionOffset(float2 screenPos, float3 viewDir, float3 normalWS, float strength) +{ + //Normalized to match the more accurate method + float2 offset = normalWS.xz * 0.5; + + #if PHYSICAL_REFRACTION + //Light direction as traveling towards the eye, through the water surface + float3 rayDir = refract(-viewDir, normalWS, REFRACTION_IOR_RCP); + //Convert to view-space, because the coordinates are used to sample a screen-space texture + float3 viewSpaceRefraction = TransformWorldToViewDir(rayDir); + + //Prevent streaking at the edges, by lerping to non-screenspace coordinates at the screen edges + half edgeMask = ScreenEdgeMask(screenPos, length(viewSpaceRefraction.xy)); + //edgeMask = 1.0; //Test, disable + + offset.xy = lerp(normalWS.xz * 0.5, viewSpaceRefraction.xy, edgeMask); + #endif + + return offset * strength; +} + +//#define TRANSPARENCY_REFRACTION + +#ifdef TRANSPARENCY_REFRACTION +TEXTURE2D_X(_CameraTransparentTexture); +#endif + +float3 SampleUnderwaterColor(float2 uv) +{ + #ifdef TRANSPARENCY_REFRACTION + float4 transparents = SAMPLE_TEXTURE2D_X(_CameraTransparentTexture, sampler_LinearClamp, uv.xy).rgba; + //return transparents.rgb; + #endif + + float3 opaque = SampleSceneColor(uv.xy).rgb; + + #ifdef TRANSPARENCY_REFRACTION + opaque = opaque + (transparents.rgb * transparents.a); + #endif + + return opaque; +} + +float3 SampleOpaqueTexture(float4 screenPos, float2 offset, float dispersion) +{ + //Normalize for perspective projection + screenPos.xy += offset; + screenPos.xy /= screenPos.w; + + float3 sceneColor = SampleUnderwaterColor(screenPos.xy).rgb; + + #if PHYSICAL_REFRACTION //Chromatic part + if(dispersion > 0) + { + float chromaShift = (length(offset) * dispersion) / screenPos.w; + //Note: screen buffer texelsize purposely not used, this way the effect is actually consistent across all resolutions + float texelOffset = chromaShift * CHROMASHIFT_SIZE; + + sceneColor.r = SampleUnderwaterColor(screenPos.xy + float2(texelOffset, 0)).r; + sceneColor.b = SampleUnderwaterColor(screenPos.xy - float2(texelOffset, 0)).b; + } + #endif + + return sceneColor; +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Refraction.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Refraction.hlsl.meta new file mode 100644 index 00000000..93ca8060 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Refraction.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 994c6995798c4c7aba55f4226c747b9b +timeCreated: 1730296927 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Refraction.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Terrain.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Terrain.hlsl new file mode 100644 index 00000000..a11b2aac --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Terrain.hlsl @@ -0,0 +1,91 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#if !defined(SHADERGRAPH_PREVIEW) +//#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Core.hlsl" +#else +SamplerState sampler_LinearClamp; +#endif + +#include "Projection.hlsl" + +uniform Texture2D _TerrainHeightBuffer; +float4 _TerrainHeightBuffer_TexelSize; +uniform float3 _TerrainHeightRenderCoords; +//XY: Bounds min +//Z: Bounds size +bool _TerrainHeightPrePassAvailable; + +uniform Texture2D _WaterTerrainDistanceField; + + +//Position, relative to rendering bounds (normalized 0-1) +float2 WorldToTerrainUV(float3 positionWS) +{ + return WorldToProjectionUV(positionWS, _TerrainHeightRenderCoords.xy, _TerrainHeightRenderCoords.z); +} + +float SampleTerrainHeightBuffer(float2 uv) +{ + if(_TerrainHeightPrePassAvailable == false) return 0; + return UnpackHeightmap(_TerrainHeightBuffer.SampleLevel(sampler_LinearClamp, uv, 0).r); +} + +//Main function +float SampleTerrainHeightBuffer(float3 positionWS) +{ + return SampleTerrainHeightBuffer(WorldToTerrainUV(positionWS)); +} + +float SampleTerrainHeight(float3 positionWS) +{ + return SampleTerrainHeightBuffer(positionWS); +} + +//Shader Graph +void SampleTerrainHeight_float(float3 positionWS, out float height) +{ + height = SampleTerrainHeightBuffer(positionWS); +} + +TEXTURE2D(_WaterTerrainIntersectionMask); +float SampleTerrainIntersection(float3 positionWS) +{ + return _WaterTerrainIntersectionMask.SampleLevel(sampler_LinearClamp, WorldToTerrainUV(positionWS), 0).r; +} + +float SampleTerrainDepth(float3 positionWS, float falloff) +{ + float terrainHeight = SampleTerrainHeightBuffer(positionWS); + + //Sampling position will correspond to the actual terrain position on the XZ plane + float3 terrainPosition = float3(positionWS.x, terrainHeight, positionWS.z); + + //if(terrainPosition.y >= positionWS.y) return 0; + + float dist = abs(distance(positionWS, terrainPosition)); + + float attenuation = 1-saturate(dist / falloff); + + //attenuation = saturate(exp(-(dist * falloff))); + + return attenuation; +} + + +//Shader Graph +void SampleTerrainDepth_float(float3 positionWS, float falloff, out float attenuation) +{ + attenuation = SampleTerrainDepth(positionWS, falloff); +} + +float SampleTerrainSDF(float3 positionWS) +{ + float sdfSample = _WaterTerrainDistanceField.SampleLevel(sampler_LinearClamp, WorldToTerrainUV(positionWS), 0).r; + + float edgeMask = ProjectionEdgeMask(positionWS, _TerrainHeightRenderCoords.xy, _TerrainHeightRenderCoords.z, 15); + + return sdfSample * edgeMask; +} diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Terrain.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Terrain.hlsl.meta new file mode 100644 index 00000000..943ae0b7 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Terrain.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 65f8cf5469d6447cb798e816e96bccb6 +timeCreated: 1718300795 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Terrain.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Tesselation.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Tesselation.hlsl new file mode 100644 index 00000000..9428ddb4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Tesselation.hlsl @@ -0,0 +1,154 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#if defined(SHADER_API_XBOXONE) || defined(SHADER_API_PSSL) +// AMD recommends this value for GCN http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/05/GCNPerformanceTweets.pdf +#define MAX_TESSELLATION_FACTORS 15.0 +#else +#define MAX_TESSELLATION_FACTORS 64.0 +#endif + +#if defined(SHADER_API_GLES2) +#warning Current graphics API does not support tessellation, falling back to non-tessellated shader automatically. +#else +#define UNITY_CAN_COMPILE_TESSELLATION +#endif + +struct TessellationFactors +{ + float edge[3] : SV_TessFactor; + float inside : SV_InsideTessFactor; +}; + +struct VertexControl +{ + float4 positionOS : INTERNALTESSPOS; + float4 normalOS : NORMAL; + float4 tangentOS : TANGENT; + float4 uv : TEXCOORD0; + float4 color : COLOR; + + #ifdef LIGHTMAP_ON + float2 staticLightmapUV : TEXCOORD1; + #endif + #ifdef DYNAMICLIGHTMAP_ON + float2 dynamicLightmapUV : TEXCOORD2; + #endif + + UNITY_VERTEX_INPUT_INSTANCE_ID +}; + +VertexControl VertexTessellation(Attributes input) +{ + VertexControl output; + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + + output.positionOS = input.positionOS; + output.normalOS = input.normalOS; + output.tangentOS = input.tangentOS; + output.uv.xy = input.uv.xy; + output.uv.z = _TimeParameters.x; + output.uv.w = 0; + output.color = input.color; + + #ifdef LIGHTMAP_ON + output.staticLightmapUV = input.staticLightmapUV.xy * unity_LightmapST.xy + unity_LightmapST.zw; + #endif + #ifdef DYNAMICLIGHTMAP_ON + output.dynamicLightmapUV = input.dynamicLightmapUV.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; + #endif + + return output; +} + +float CalcDistanceTessFactor(float4 positionOS, float minDist, float maxDist, float tess) +{ + float3 positionWS = TransformObjectToWorld(positionOS.xyz).xyz; + float dist = distance(positionWS, GetCurrentViewPosition()); + + float f = (1.0-saturate((dist - minDist) / (maxDist - minDist)) + 0.001) * tess; + + #if DYNAMIC_EFFECTS_ENABLED + //Doesn't seem to work somehow + //f += SampleDynamicEffectsDisplacement(positionWS.xyz) * tess; + #endif + + return f; +} + +float4 CalcTriEdgeTessFactors (float3 triVertexFactors) +{ + float4 tess; + tess.x = 0.5 * (triVertexFactors.y + triVertexFactors.z); + tess.y = 0.5 * (triVertexFactors.x + triVertexFactors.z); + tess.z = 0.5 * (triVertexFactors.x + triVertexFactors.y); + tess.w = (triVertexFactors.x + triVertexFactors.y + triVertexFactors.z) / 3.0f; + return tess; +} + +float4 DistanceBasedTess(float4 v0, float4 v1, float4 v2, float tess, float minDist, float maxDist) +{ + float3 f; + f.x = CalcDistanceTessFactor(v0, minDist, maxDist, tess); + f.y = CalcDistanceTessFactor(v1, minDist, maxDist, tess); + f.z = CalcDistanceTessFactor(v2, minDist, maxDist, tess); + + //Don't use the Core RP version, creates cracks on edges + return CalcTriEdgeTessFactors(f); +} + +TessellationFactors HullConstant(InputPatch patch) +{ + TessellationFactors output; + + float4 tf = DistanceBasedTess(patch[0].positionOS, patch[1].positionOS, patch[2].positionOS, _TessValue, _TessMin, _TessMax); + + UNITY_SETUP_INSTANCE_ID(patch[0]); + + output.edge[0] = tf.x; + output.edge[1] = tf.y; + output.edge[2] = tf.z; + output.inside = tf.w; + + return output; +} + +[maxtessfactor(MAX_TESSELLATION_FACTORS)] +[domain("tri")] +[partitioning("fractional_odd")] +[outputtopology("triangle_cw")] +[patchconstantfunc("HullConstant")] +[outputcontrolpoints(3)] +VertexControl Hull(InputPatch input, uint id : SV_OutputControlPointID) +{ + return input[id]; +} + +#define TESSELLATION_INTERPOLATE_BARY_URP(name, bary) output.name = input[0].name * bary.x + input[1].name * bary.y + input[2].name * bary.z + +[domain("tri")] +Varyings Domain(TessellationFactors factors, OutputPatch input, float3 baryCoords : SV_DomainLocation) +{ + Attributes output = (Attributes)0; + + TESSELLATION_INTERPOLATE_BARY_URP(positionOS, baryCoords); + TESSELLATION_INTERPOLATE_BARY_URP(uv, baryCoords); + TESSELLATION_INTERPOLATE_BARY_URP(normalOS, baryCoords); + TESSELLATION_INTERPOLATE_BARY_URP(tangentOS, baryCoords); + TESSELLATION_INTERPOLATE_BARY_URP(color, baryCoords); + + #if defined(LIGHTMAP_ON) + TESSELLATION_INTERPOLATE_BARY_URP(staticLightmapUV, baryCoords); + #endif + #if defined(DYNAMICLIGHTMAP_ON) + TESSELLATION_INTERPOLATE_BARY_URP(dynamicLightmapUV, baryCoords); + #endif + + //Tessellation does not work entirely correct with GPU instancing + UNITY_TRANSFER_INSTANCE_ID(input[0], output); + + return LitPassVertex(output); +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Tesselation.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Tesselation.hlsl.meta new file mode 100644 index 00000000..482270ca --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Tesselation.hlsl.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: ed4a75978e3fdcd4b90ca0ef549ad541 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Tesselation.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/URP.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/URP.hlsl new file mode 100644 index 00000000..cbd160a0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/URP.hlsl @@ -0,0 +1,31 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#ifndef PIPELINE_INCLUDED +#define PIPELINE_INCLUDED +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl" + +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl" + +#ifndef _DISABLE_DEPTH_TEX +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl" +#endif + +#if _REFRACTION +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTexture.hlsl" +#endif + +// Deprecated in URP 11+ https://github.com/Unity-Technologies/Graphics/pull/2529. Keep function for backwards compatibility +// Compute Normalized Device Coordinate here (this is normally done in GetVertexPositionInputs, but clip and world-space coords are done manually already) +#if UNITY_VERSION >= 202110 && !defined(UNITY_SHADER_VARIABLES_FUNCTIONS_DEPRECATED_INCLUDED) +float4 ComputeScreenPos(float4 positionCS) +{ + return ComputeNormalizedDeviceCoordinates(positionCS); +} +#endif +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/URP.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/URP.hlsl.meta new file mode 100644 index 00000000..932a2537 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/URP.hlsl.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 19aa2a2f5f8eea540b3c3574d7dfe2d0 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/URP.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Vertex.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Vertex.hlsl new file mode 100644 index 00000000..1eb15401 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Vertex.hlsl @@ -0,0 +1,185 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +struct Attributes +{ + float4 positionOS : POSITION; + float4 uv : TEXCOORD0; + float4 normalOS : NORMAL; + float4 tangentOS : TANGENT; + float4 color : COLOR0; + float2 staticLightmapUV : TEXCOORD1; + #ifdef DYNAMICLIGHTMAP_ON + float2 dynamicLightmapUV : TEXCOORD2; + #endif + + #if _FLOWMAP + float2 uv2 : TEXCOORD2; + #endif + UNITY_VERTEX_INPUT_INSTANCE_ID +}; + +struct Varyings +{ + float4 uv : TEXCOORD0; + + half4 fogFactorAndVertexLight : TEXCOORD1; // x: fogFactor, yzw: vertex light + + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) //No shadow cascades + float4 shadowCoord : TEXCOORD2; + #endif + + //wPos.x in w-component + float4 normalWS : NORMAL; + #if REQUIRES_TANGENT_TO_WORLD + //wPos.y in w-component + float4 tangent : TANGENT; + //wPos.z in w-component + float4 bitangent : TEXCOORD3; + #else + float3 positionWS : TEXCOORD3; + #endif + + float4 screenPos : TEXCOORD4; + + DECLARE_LIGHTMAP_OR_SH(staticLightmapUV, vertexSH, 5); + #ifdef DYNAMICLIGHTMAP_ON + float2 dynamicLightmapUV : TEXCOORD6; // Dynamic lightmap UVs + #endif + + #if _FLOWMAP + float2 uv2 : TEXCOORD7; + #endif + + #ifdef USE_APV_PROBE_OCCLUSION + float4 probeOcclusion : TEXCOORD10; + #endif + + float4 positionCS : SV_POSITION; + float4 color : COLOR0; + + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO +}; + +Varyings LitPassVertex(Attributes input) +{ + Varyings output = (Varyings)0; + + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + +#if defined(CURVEDWORLD_IS_INSTALLED) && !defined(CURVEDWORLD_DISABLED_ON) +#if defined(CURVEDWORLD_NORMAL_TRANSFORMATION_ON) + CURVEDWORLD_TRANSFORM_VERTEX_AND_NORMAL(input.positionOS, input.normalOS.xyz, input.tangentOS) +#else + CURVEDWORLD_TRANSFORM_VERTEX(input.positionOS) +#endif +#endif + + output.uv.xy = input.uv.xy; + output.uv.z = _TimeParameters.x; + output.uv.w = 0; + + float3 positionWS = TransformObjectToWorld(input.positionOS.xyz); + float3 offset = 0; + + VertexNormalInputs normalInput = GetVertexNormalInputs(input.normalOS.xyz, input.tangentOS); + + if(_WorldSpaceUV > 0) + { + //Tangents are to be in world-space as well. Otherwise the rotation of the water plane also rotates the tangents + normalInput.tangentWS = real3(1.0, 0.0, 0.0); + normalInput.bitangentWS = real3(0.0, 0.0, 1.0); + } + + float4 vertexColor = GetVertexColor(input.color.rgba, float4(_IntersectionSource > 0 ? 1 : 0, _FogSource > 1 ? 0 : 1, _VertexColorWaveFlattening, _VertexColorFoam)); + + #if !defined(SHADERPASS_HEIGHT) || (defined(SHADERPASS_HEIGHT) && defined(DISPLACEMENT_BUFFER_PER_VERTEX))//Displacement will be calculated per pixel +#if _WAVES + float2 uv = GetSourceUV(input.uv.xy, positionWS.xz, _WorldSpaceUV); + + float3 waveOffset = float3(0,0,0); + float3 waveNormal = float3(0,1,0); + + CalculateWaves(_WaveProfile, _WaveProfile_TexelSize.z, _WaveMaxLayers, uv.xy, _WaveFrequency, positionWS.xyz, _Direction.xy, normalInput.normalWS, (TIME_VERTEX * _Speed) * _WaveSpeed, vertexColor.b, float3(_WaveSteepness, _WaveHeight, _WaveSteepness), + _WaveNormalStr, _WaveFadeDistance.x, _WaveFadeDistance.y, + //Out + waveOffset, waveNormal); + + #if _RIVER + //Zero out any vertical offsets and mask the values with the upward normal + waveOffset.xyz = waveOffset.yyy; + waveOffset.xyz *= normalInput.normalWS; + #endif + + offset.xyz += waveOffset.xyz; + + //normalInput.tangentWS = waveNormal; +#endif + + //SampleWaveSimulationVertex(positionWS, positionWS.y); + + #if DYNAMIC_EFFECTS_ENABLED + if(_ReceiveDynamicEffectsHeight) + { + float4 effectsData = SampleDynamicEffectsData(positionWS.xyz + offset.xyz); + + half falloff = 1.0; + #if defined(TESSELLATION_ON) + //falloff = saturate(1.0 - (distance(positionWS.xyz, GetCameraPositionWS() - _TessMin)) / (_TessMax - _TessMin)); + #endif + + offset.y += effectsData[DE_HEIGHT_CHANNEL] * falloff; + } + #endif + #endif + + //Apply vertex displacements + positionWS += offset; + + output.positionCS = TransformWorldToHClip(positionWS); + half fogFactor = InitializeInputDataFog(float4(positionWS, 1.0), output.positionCS.z); + + output.screenPos = ComputeScreenPos(output.positionCS); + + output.normalWS = float4(normalInput.normalWS, positionWS.x); +#if REQUIRES_TANGENT_TO_WORLD + output.tangent = float4(normalInput.tangentWS, positionWS.y); + output.bitangent = float4(normalInput.bitangentWS, positionWS.z); +#else + output.positionWS = positionWS.xyz; +#endif + + //Lambert shading + half3 vertexLight = 0; +#ifdef _ADDITIONAL_LIGHTS_VERTEX + vertexLight = VertexLighting(positionWS, normalInput.normalWS); +#endif + + output.fogFactorAndVertexLight = half4(fogFactor, vertexLight); + output.color = vertexColor; + + OUTPUT_LIGHTMAP_UV(input.staticLightmapUV, unity_LightmapST, output.staticLightmapUV); + #ifdef DYNAMICLIGHTMAP_ON + output.dynamicLightmapUV = input.dynamicLightmapUV.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; + #endif + + OUTPUT_SH4(positionWS, output.normalWS.xyz, GetWorldSpaceNormalizeViewDir(positionWS), output.vertexSH, output.probeOcclusion); + + #if _FLOWMAP + output.uv2 = input.uv2; + #endif + +#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) + VertexPositionInputs vertexInput = (VertexPositionInputs)0; + vertexInput.positionWS = positionWS; + vertexInput.positionCS = output.positionCS; + output.shadowCoord = GetShadowCoord(vertexInput); +#endif + + return output; +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Vertex.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Vertex.hlsl.meta new file mode 100644 index 00000000..12750f86 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Vertex.hlsl.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 93ab439cdc704a34d97fc4d18c37a8aa +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Vertex.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Waves.hlsl b/Assets/External/Stylized Water 3/Shaders/Libraries/Waves.hlsl new file mode 100644 index 00000000..ba281ca8 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Waves.hlsl @@ -0,0 +1,58 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#ifndef WATER_WAVES_INCLUDED +#define WATER_WAVES_INCLUDED + +#include "Gerstner.hlsl" +TEXTURE2D(_WaveProfile); + +void CalculateWaves(in Texture2D lutTex, in uint layerCount, in uint maxCount, float2 uv, float frequency, float3 positionWS, float2 baseDir, float3 normalWS, float time, float mask, float3 scale, + in float normalStrength, float fadeStart, float fadeEnd, out float3 waveOffset, out float3 waveNormalWS) +{ + waveOffset = float3(0,0,0); + float3 waveTangent = float3(1,0,0); + float3 waveBiTangent = float3(0,0,1); + + float2 waveDir = baseDir; + + #if _RIVER + waveDir.x = 1; + waveDir.y = -1; + #endif + + CalculateGerstnerWaves_float(lutTex, layerCount, uv, frequency, time, normalStrength, waveDir, maxCount, + //Out + waveOffset, waveTangent, waveBiTangent); + + waveNormalWS = cross(waveBiTangent, waveTangent); + + //waveNormal = float3(0,0,1); + //Tangent- to world-space + //half3x3 waveTangentToWorldMatrix = half3x3(waveTangent, waveBiTangent, normal); + //waveNormalWS = TransformTangentToWorld(waveNormalWS, waveTangentToWorldMatrix); + + //Flatten by blue vertex color weight + float waveMask = lerp(1.0, 0.0, mask); + + //Distance based scalar + float fadeFactor = DistanceFadeMask(positionWS, fadeStart, fadeEnd, 1.0); + + waveMask *= fadeFactor; + waveMask = saturate(max(0.0001, waveMask)); + //return float4(waveMask.xxx, 1.0); + + //Scaling + waveOffset.y *= scale.y * waveMask; + waveOffset.xz *= scale.xz * waveMask; + + //Fading + waveNormalWS = lerp(normalWS, waveNormalWS, waveMask * scale.y); + waveNormalWS = normalize(waveNormalWS); + + //water.offset.xyz += waveOffset; + //water.waveNormal = waveNormalWS; +} +#endif \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Libraries/Waves.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Libraries/Waves.hlsl.meta new file mode 100644 index 00000000..685f7849 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Libraries/Waves.hlsl.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: af0851f7b3122dd4da9461dc75f659e9 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Libraries/Waves.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Passes.meta b/Assets/External/Stylized Water 3/Shaders/Passes.meta new file mode 100644 index 00000000..24e55e24 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Passes.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2e28a2c3dbab45808c1ed3f5b9309f6d +timeCreated: 1718705128 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Passes/ForwardPass.hlsl b/Assets/External/Stylized Water 3/Shaders/Passes/ForwardPass.hlsl new file mode 100644 index 00000000..05bcf1ba --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Passes/ForwardPass.hlsl @@ -0,0 +1,1013 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#define COLLAPSIBLE_GROUP 1 + +//Normalize the amount of normal-based distortion between reflection probes and screen-space reflections +#define SCREENSPACE_REFLECTION_DISTORTION_MULTIPLIER 0.15 + +struct SceneData +{ + float4 positionSS; //Unnormalized + float2 screenPos; //Normalized and no refraction + float3 positionWS; + float3 color; + half3 normalWS; + + #if defined(SCENE_SHADOWMASK) + half shadowMask; + #endif + + float viewDepth; + float verticalDepth; + + #if RESAMPLE_REFRACTION_DEPTH && _REFRACTION + float viewDepthRefracted; + float verticalDepthRefracted; + #endif + + half skyMask; + + //More easy debugging + half refractionMask; +}; + +void PopulateSceneData(inout SceneData scene, Varyings input, WaterSurface water) +{ + scene.positionSS = input.screenPos; + scene.screenPos = scene.positionSS.xy / scene.positionSS.w; + + //Default for disabled depth texture + scene.viewDepth = 1; + scene.verticalDepth = 1; + + scene.refractionMask = 1.0; + #if !_DISABLE_DEPTH_TEX + SceneDepth depth = SampleDepth(scene.positionSS); + scene.positionWS = ReconstructWorldPosition(scene.positionSS, water.viewDelta, depth); + + //Invert normal when viewing backfaces + float normalSign = ceil(dot(water.viewDir, water.waveNormal)); + normalSign = normalSign == 0 ? -1 : 1; + + //Z-distance to opaque surface + scene.viewDepth = SurfaceDepth(depth, input.positionCS); + //Distance to opaque geometry in normal direction + scene.verticalDepth = DepthDistance(water.positionWS, scene.positionWS, water.waveNormal * normalSign); + + //Compare position of water to opaque geometry, in order to filter out pixels in front of the water for refraction + #if _REFRACTION + SceneDepth depthRefracted = SampleDepth(scene.positionSS + water.refractionOffset); + float3 opaqueWorldPosRefracted = ReconstructWorldPosition(scene.positionSS + water.refractionOffset, water.viewDelta, depthRefracted); + + //Reject any offset pixels in front of the water surface + scene.refractionMask = saturate(SurfaceDepth(depthRefracted, input.positionCS)); + //Lerp to un-refracted screen-position + water.refractionOffset *= scene.refractionMask; + + #if RESAMPLE_REFRACTION_DEPTH + //With the current screen-space UV known, re-compose the water density + depthRefracted = SampleDepth(scene.positionSS + water.refractionOffset); + opaqueWorldPosRefracted = ReconstructWorldPosition(scene.positionSS + water.refractionOffset, water.viewDelta, depthRefracted); + + //Also use the world-position sample as the representation of the underwater geometry (more accurate) + scene.positionWS = lerp(scene.positionWS, opaqueWorldPosRefracted, scene.refractionMask); + + scene.viewDepthRefracted = SurfaceDepth(depthRefracted, input.positionCS); + scene.verticalDepthRefracted = DepthDistance(water.positionWS, opaqueWorldPosRefracted, water.waveNormal * normalSign); + #endif + #endif + + scene.normalWS = half3(0,1,0); + #if defined(RECONSTRUCT_WORLD_NORMAL) + if(_EnableDirectionalCaustics) + { + scene.normalWS = ReconstructWorldNormal(scene.screenPos.xy + water.refractionOffset.xy); + } + #endif + + #if defined(SCENE_SHADOWMASK) + float4 sceneShadowCoords = TransformWorldToShadowCoord(scene.positionWS); + + Light sceneLight = GetMainLight(sceneShadowCoords, scene.positionWS, 1.0); + + scene.shadowMask = sceneLight.shadowAttenuation; + #endif + + #if !_RIVER && _ADVANCED_SHADING + half VdotN = 1.0 - saturate(dot(water.viewDir, water.waveNormal)); + float grazingTerm = saturate(pow(VdotN, 64)); + + //Resort to z-depth at surface edges. Otherwise makes intersection/edge fade visible through the water surface + scene.verticalDepth = lerp(scene.verticalDepth, scene.viewDepth, grazingTerm); + + #if RESAMPLE_REFRACTION_DEPTH && _REFRACTION + scene.verticalDepthRefracted = lerp(scene.verticalDepthRefracted, scene.viewDepthRefracted, grazingTerm); + #endif + #endif + + #endif + + #if _REFRACTION + float dispersion = _RefractionChromaticAberration * lerp(1.0, 2.0, unity_OrthoParams.w); + + scene.color = SampleOpaqueTexture(scene.positionSS, water.refractionOffset.xy, dispersion); + #endif + + //Skybox mask is used for backface (underwater) reflections, to blend between refraction and reflection probes + scene.skyMask = 0; + #ifdef DEPTH_MASK + + #if !_DISABLE_DEPTH_TEX + float depthSource = depth.linear01; + + #if RESAMPLE_REFRACTION_DEPTH && _REFRACTION + //Use depth resampled with refracted screen UV + depthSource = depthRefracted.linear01; + #endif + + scene.skyMask = depthSource > 0.99 ? 1 : 0; + #endif + #endif +} + +float GetWaterDensity(SceneData scene, float mask, float heightScalar, float viewDepthScalar) +{ + //Best default value, otherwise water just turns invisible (infinitely shallow) + float density = 1.0; + + #if !_DISABLE_DEPTH_TEX + if(_FogSource == 0) + { + + float viewDepth = scene.viewDepth; + float verticalDepth = scene.verticalDepth; + + #if defined(RESAMPLE_REFRACTION_DEPTH) && _REFRACTION + viewDepth = scene.viewDepthRefracted; + verticalDepth = scene.verticalDepthRefracted; + #endif + + float depthAttenuation = 1.0 - exp(-viewDepth * viewDepthScalar * 0.1); + float heightAttenuation = 1.0 - exp(-verticalDepth * heightScalar); + + density = max(depthAttenuation, heightAttenuation); + + } + else + #endif + { + density = mask; + } + + density = saturate(density); + return density; +} + +float3 GetWaterColor(SceneData scene, float3 scatterColor, float density, float absorption) +{ + float depth = scene.verticalDepth; + float accumulation = scene.viewDepth; + + #if defined(RESAMPLE_REFRACTION_DEPTH) && _REFRACTION + depth = scene.verticalDepthRefracted; + accumulation = scene.viewDepthRefracted; + #endif + + float3 underwaterColor = saturate(scene.color * LightExtinction(depth, accumulation, density)); + //Energy loss of ray, as it travels deeper and scatters (absorption) + float scatterAmount = LightAbsorption(absorption, accumulation); + + //If the depth is near infinite (ie. hitting the skybox) consider the water completely shallow + //if(accumulation > _ProjectionParams.z-0.1) scatterAmount = 1; + + return lerp(underwaterColor, scatterColor, scatterAmount); +} + + +//Note: Throws an error about a BLENDEIGHTS vertex attribute on GLES when VR is enabled (fixed in URP 10+) +//Possibly related to: https://issuetracker.unity3d.com/issues/oculus-a-non-system-generated-input-signature-parameter-blendindices-cannot-appear-after-a-system-generated-value +#if SHADER_API_GLES3 && defined(STEREO_MULTIVIEW_ON) +#define FRONT_FACE_SEMANTIC_REAL SV_IsFrontFace +#define FRONT_FACE_TYPE_REAL bool +#else +#define FRONT_FACE_SEMANTIC_REAL FRONT_FACE_SEMANTIC +#define FRONT_FACE_TYPE_REAL FRONT_FACE_TYPE +#endif + +float4 ForwardPass(Varyings input, FRONT_FACE_TYPE_REAL vertexFace : FRONT_FACE_SEMANTIC_REAL) +{ + UNITY_SETUP_INSTANCE_ID(input); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + //Initialize with null values. Anything that isn't assigned, shouldn't be used either + WaterSurface water = (WaterSurface)0; + SceneData scene = (SceneData)0; + + water.alpha = 1.0; + water.vFace = IS_FRONT_VFACE(vertexFace, true, false); //0 = back face + //return float4(lerp(float3(1,0,0), float3(0,1,0), water.vFace), 1.0); + int faceSign = water.vFace > 0 ? 1 : -1; + + //return float4(ReconstructWorldNormal(input.positionCS), 1.0); + + /* ======== + // GEOMETRY DATA + =========== */ + #if COLLAPSIBLE_GROUP + + float4 vertexColor = input.color; //Mask already applied in vertex shader + //return float4(vertexColor.rgb, 1); + + float2 flowVector = float2(0,0); + + #if _FLOWMAP + flowVector = input.uv2.xy * 2.0 - 1.0; + #endif + + //Vertex normal in world-space + water.vertexNormal = normalize(input.normalWS.xyz); +#if REQUIRES_TANGENT_TO_WORLD + float3 WorldTangent = input.tangent.xyz; + float3 WorldBiTangent = input.bitangent.xyz; + //return float4(WorldBiTangent, 1.0); + + float3 positionWS = float3(input.normalWS.w, input.tangent.w, input.bitangent.w); + + //Matrix used to transform a tangent-space normal to world-space + water.tangentToWorldMatrix = half3x3(WorldTangent, WorldBiTangent, water.vertexNormal); +#else + float3 positionWS = input.positionWS; +#endif + + #if defined(TESSELLATION_ON) + //Debug tessellation factor + //return float4(saturate(CalcDistanceTessFactor(float4(TransformWorldToObject(positionWS.xyz), 1.0), _TessMin, _TessMax, _TessValue)).xxx, 1.0); + #endif + + water.positionWS = positionWS; + //Not normalized for depth-pos reconstruction. Normalization required for lighting (otherwise breaks on mobile) + water.viewDelta = GetCurrentViewPosition() - positionWS; + //water.viewDir = GetWorldSpaceViewDir(positionWS); //Uses the camera's forward vector for orthographic projection, the result isn't as useful + + //Note: SafeNormalize() tends to cause issues on mobile when dealing with large numbers + water.viewDir = normalize(water.viewDelta); + //return float4(water.viewDir, 1); + + half VdotN = 1.0 - saturate(dot(water.viewDir * faceSign, water.vertexNormal)); + + #if _FLAT_SHADING + float3 dpdx = ddx(positionWS.xyz); + float3 dpdy = ddy(positionWS.xyz); + water.vertexNormal = normalize(cross(dpdy, dpdx)); + #endif + + //return float4(water.vertexNormal, 1.0); + + //Returns mesh or world-space UV + float2 uv = GetSourceUV(input.uv.xy, positionWS.xz, _WorldSpaceUV); + //return float4(frac(uv), 0, 1); + #endif + + + /* ======== + // WAVES + =========== */ + #if COLLAPSIBLE_GROUP + + water.waveNormal = water.vertexNormal; + water.waveCrest = 0.0; +#if _WAVES + float3 waveOffset = float3(0,0,0); + + CalculateWaves(_WaveProfile, _WaveProfile_TexelSize.z, _WaveMaxLayers, uv, _WaveFrequency, water.positionWS, _Direction, water.vertexNormal, (TIME_FRAG_INPUT * _Speed) * _WaveSpeed, vertexColor.b, float3(_WaveSteepness, _WaveHeight, _WaveSteepness), + _WaveNormalStr, _WaveFadeDistance.x, _WaveFadeDistance.y, + //Out + waveOffset, water.waveNormal); + + water.offset.xyz += waveOffset; + water.waveCrest = waveOffset.y * 0.5 + 0.5; + //return float4(water.waveCrest.xxx, 1.0); + + #if _FLAT_SHADING + water.waveNormal = water.vertexNormal; + #endif + + //After wave displacement, recalculated world-space UVs + if(_WorldSpaceUV == 1) + { + //Clamp UV distortion created by lateral displacement + half waveDistortionScalar = min(0.5, length(waveOffset.xz)); + uv = GetSourceUV(input.uv.xy, positionWS.xz + (waveOffset.xz * waveDistortionScalar), _WorldSpaceUV); + } +#endif + + //return float4(water.waveNormal, 1.0); + + //return float4(frac(water.offset.xz).xy, 0, 1.0); + #endif + + + #if DYNAMIC_EFFECTS_ENABLED + float4 dynamicEffectsData = 0; + half dynamicEffectsTopMask = 0; + if(_ReceiveDynamicEffectsHeight || _ReceiveDynamicEffectsFoam > 0 || _ReceiveDynamicEffectsNormal) + { + dynamicEffectsData = SampleDynamicEffectsData(positionWS.xyz); + dynamicEffectsTopMask = saturate(dot(water.vertexNormal, UP_VECTOR)); + dynamicEffectsData[DE_HEIGHT_CHANNEL] *= dynamicEffectsTopMask; + dynamicEffectsData[DE_FOAM_CHANNEL] *= dynamicEffectsTopMask * _ReceiveDynamicEffectsFoam; + //return float4(dynamicEffectsData.bbb, 1.0); + //return float4(DynamicEffectsBoundsEdgeMask(positionWS).xxx, 1.0); + } + #endif + + /* ======== + // SHADOWS + =========== */ + #if COLLAPSIBLE_GROUP + + water.shadowMask = 1.0; + float4 shadowCoords = float4(0, 0, 0, 0); + #if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR) + shadowCoords = input.shadowCoord; + #elif defined(MAIN_LIGHT_CALCULATE_SHADOWS) + shadowCoords = TransformWorldToShadowCoord(water.positionWS); + #endif + + half4 shadowMask = SAMPLE_SHADOWMASK(input.staticLightmapUV); + Light mainLight = GetMainLight(shadowCoords, water.positionWS, shadowMask); + bool isMatchingLightLayer = true; + //return float4(shadowMask.xyz, 1.0); + + #if _LIGHT_LAYERS + uint meshRenderingLayers = GetMeshRenderingLayer(); + isMatchingLightLayer = IsMatchingLightLayer(mainLight.layerMask, meshRenderingLayers); + if (isMatchingLightLayer) + #endif + { + water.shadowMask = mainLight.shadowAttenuation; + } + + //return float4(water.shadowMask.xxx,1); + half backfaceShadows = 1; + + #if UNDERWATER_ENABLED + //Separate so shadows applied by Unity's lighting do not appear on backfaces + backfaceShadows = water.shadowMask; + water.shadowMask = lerp(1.0, water.shadowMask, water.vFace); + #endif + #endif + + #if _RIVER + water.slope = CalculateSlopeMask(water.vertexNormal, _SlopeAngleThreshold, _SlopeAngleFalloff); + //return float4(water.slope.xxx, 1); + #endif + + /* ======== + // NORMALS + =========== */ + #if COLLAPSIBLE_GROUP + water.tangentNormal = float3(0.5, 0.5, 1); + water.tangentWorldNormal = water.waveNormal; + + #if DYNAMIC_EFFECTS_ENABLED && !_FLAT_SHADING + if(_ReceiveDynamicEffectsNormal && NORMALS_AVAILABLE) + { + float4 dynamicNormals = SampleDynamicEffectsNormals(water.positionWS); + dynamicNormals.xyz = normalize(lerp(water.vertexNormal, dynamicNormals.xyz, dynamicNormals.a * dynamicEffectsTopMask)); + //return float4(dynamicNormals.xyz, 1.0); + + //Composite into wave normal. Not using the tangent normal, since this has variable influence on reflection, dynamic effects should denote geometry curvature + water.waveNormal = BlendNormalWorldspaceRNM(dynamicNormals.xyz, water.waveNormal, water.vertexNormal); + //return float4(water.waveNormal, 1.0); + } + #endif + +#if _NORMALMAP + //Tangent-space + water.tangentNormal = SampleNormals(uv, _NormalTiling, _NormalSubTiling, positionWS, TIME * -_Direction, _NormalSpeed, _NormalSubSpeed, water.slope, water.vFace); + //return float4(SRGBToLinear(float3(water.tangentNormal.x * 0.5 + 0.5, water.tangentNormal.y * 0.5 + 0.5, 1)), 1.0); + + //World-space + water.tangentWorldNormal = normalize(TransformTangentToWorld(water.tangentNormal, water.tangentToWorldMatrix)); + + #if DYNAMIC_EFFECTS_ENABLED + if(_ReceiveDynamicEffectsNormal) + { + //Let the normals from dynamic effects taken president. For example, smoothing the normals on shoreline waves as they crest + water.tangentWorldNormal = lerp(water.tangentWorldNormal, water.waveNormal, saturate(dynamicEffectsData[DE_NORMALS_CHANNEL])); + } + #endif + + //return float4(water.tangentWorldNormal, 1.0); +#endif + #endif + + #if _REFRACTION + float3 refractionViewDir = water.viewDir; + + #if !_RIVER + //Technically not correct (as opposed to view direction towards the surface world position), but works better for flat water. Value represents the camera's forward vector. + refractionViewDir = GetWorldToViewMatrix()[2].xyz; + #endif + + water.refractionOffset.xy = RefractionOffset(input.screenPos.xy / input.screenPos.w, refractionViewDir, water.tangentWorldNormal, _RefractionStrength * lerp(1, 0.1, unity_OrthoParams.w)); + //Float4 so it can simply be added to the un-normalized screen position + water.refractionOffset.zw = 0; + + //return float4(ScreenEdgeMask(input.screenPos.xy / input.screenPos.w, length(water.refractionOffset.xy)).xxx, 1.0); + #endif + + float2 offsetVector = saturate(water.offset.yy + water.tangentWorldNormal.xz); + + //Normals can perturb the screen coordinates, so needs to be calculated first + PopulateSceneData(scene, input, water); + + //float terrainDepth = SampleTerrainDepth(water.positionWS, _IntersectionLength); + //return float4(terrainDepth.xxx, 1.0); + //float sdf = SampleTerrainIntersection(water.positionWS); + //return float4(sdf.xxx, 1.0); + + //return float4(scene.normalWS * 0.5 + 0.5, 1.0); + //return float4(scene.shadowMask.xxx, 1.0); + //return float4(scene.verticalDepth.xxx, 1.0); + //return float4(scene.viewDepth.xxx, 1.0); + //return float4((input.screenPos.xy / input.screenPos.w).xy, 0, 1.0); + //return float4(frac(scene.positionWS.xyz), 1.0); + //return float4(frac(water.refractionOffset.xy), 0, 1.0); + //return float4(scene.refractionMask.xxx, 1.0); + + #if UNDERWATER_ENABLED + //const float underwaterMask = SampleUnderwaterMask(scene.positionSS.xy / scene.positionSS.w); + //return float4(underwaterMask.xxx, 1.0); + ClipSurface(scene.positionSS.xyzw, positionWS, input.positionCS.xyz, water.vFace); + #endif + + /* ========= + // COLOR + FOG + ============ */ + #if COLLAPSIBLE_GROUP + + water.fog = GetWaterDensity(scene, 1-vertexColor.g, _DepthHorizontal, _DepthVertical); + + #if UNDERWATER_ENABLED + //When looking through the water from the bottom the depth is practically infinite, seeing as its air + water.fog = lerp(1, water.fog, water.vFace); + #endif + //return float4(water.fog.xxx, 1.0); + + //Albedo + float4 baseColor = lerp(_ShallowColor, _BaseColor, water.fog); + //Avoid color bleeding for foam/intersection on clear water (assumes white foam) + //baseColor = lerp(1.0, baseColor, baseColor.a); + + #if COLOR_ABSORPTION && _REFRACTION && !_DISABLE_DEPTH_TEX + if (_ColorAbsorption > 0) + { + baseColor.rgb = GetWaterColor(scene, baseColor.rgb, water.fog, _ColorAbsorption * water.vFace); + } + #endif + + baseColor.rgb += saturate(_WaveTint * water.waveCrest); + + water.fog *= baseColor.a; + water.alpha = baseColor.a; + + + water.albedo.rgb = baseColor.rgb; + #endif + + /* ======== + // INTERSECTION FOAM + =========== */ + #if COLLAPSIBLE_GROUP + + water.intersection = 0; +#if _INTERSECTION_FOAM + + float interSecGradient = 0; + + #if !_DISABLE_DEPTH_TEX + float intersectionHeightDelta = scene.verticalDepth; + + #if defined(RESAMPLE_REFRACTION_DEPTH) && _REFRACTION && defined(INTERSECTION_REFRACTION) + intersectionHeightDelta = scene.verticalDepthRefracted; + #endif + + interSecGradient = 1-saturate(exp(intersectionHeightDelta) / _IntersectionLength); + + #endif + + if (_IntersectionSource == 1) interSecGradient = vertexColor.r; + if (_IntersectionSource == 2) interSecGradient = saturate(interSecGradient + vertexColor.r); + //interSecGradient = saturate(SampleTerrainSDF(water.positionWS) / _IntersectionLength); + + #if DYNAMIC_EFFECTS_ENABLED + //interSecGradient += dynamicEffectsData[DE_ALPHA_CHANNEL]; + #endif + //interSecGradient = terrainDepth; + + water.intersection = SampleIntersection(uv.xy + (offsetVector * _IntersectionDistortion), (TIME * -_Direction), + _IntersectionTiling, interSecGradient, _IntersectionFalloff, _IntersectionSpeed, _IntersectionRippleDist, _IntersectionRippleStrength, _IntersectionRippleSpeed, _IntersectionClipping, _IntersectionSharp) * _IntersectionColor.a; + + #if UNDERWATER_ENABLED + //Hide on backfaces + water.intersection *= water.vFace; + #endif + + #if _WAVES && !_DISABLE_DEPTH_TEX + //Prevent from peering through waves when camera is at the water level + if(positionWS.y < scene.positionWS.y) water.intersection = 0; + #endif + + //water.density += water.intersection; + + //Flatten normals on intersection foam + water.waveNormal = lerp(water.waveNormal, water.vertexNormal, water.intersection); + //return float4(water.intersection.xxx,1); +#endif + + #if _NORMALMAP + water.tangentWorldNormal = lerp(water.tangentWorldNormal, water.vertexNormal, water.intersection); + #endif + #endif + + /* ======== + // SURFACE FOAM + =========== */ + #if COLLAPSIBLE_GROUP + water.foam = 0; + +#if _SURFACE_FOAM + bool enableSlopeFoam = false; + bool enableDistanceFoam = false; + #if _RIVER + enableSlopeFoam = true; + #endif + #if _SURFACE_FOAM_DUAL + enableDistanceFoam = true; + #endif + + float crestFoam = 0.0; + #if _WAVES + //Composed mask for foam caps, based on wave height + crestFoam = CalculateCrestFoam(_FoamCrestMinMaxHeight.x, _FoamCrestMinMaxHeight.y, water.waveCrest); + #endif + + #if !_RIVER + float foamSlopeMask = 0; + #else + float foamSlopeMask = saturate((water.slope * _SlopeFoam) + vertexColor.a); + #endif + + float baseFoam = saturate(_FoamBaseAmount - water.slope + vertexColor.a); + float foamGradient = saturate(crestFoam + baseFoam + foamSlopeMask); + + //Parallaxing + half2 foamDistortion = -(_FoamDistortion * water.viewDir.xz * saturate(dot(water.waveNormal, water.viewDir))) ; + //half2 foamDistortion = offsetVector * _FoamDistortion.xx; + + #if _RIVER + //Only distort sideways, makes the effect appear more like foam is moving around obstacles or shallow rocks + foamDistortion.y = 0; + #endif + + float2 foamTex = SampleFoamTexture(water.positionWS, (uv + foamDistortion.xy), _FoamTiling, _FoamSubTiling, (TIME * -_Direction), _FoamSpeed, _FoamSubSpeed, foamSlopeMask, + _SlopeSpeed, _SlopeStretching, enableSlopeFoam, enableDistanceFoam, _DistanceFoamFadeDist.x, _DistanceFoamFadeDist.y, _DistanceFoamTiling); + if(_FoamClipping > 0) foamTex.r = smoothstep(_FoamClipping, 1.0, foamTex.r); + + //Dissolve the foam based on the input gradient + water.foam = CalculateFoamWeight(foamGradient, foamTex.r) * _FoamColor.a * _FoamStrength; + + float foamBubbles = foamGradient; + + //Dynamic foam (separately sampled) + #if DYNAMIC_EFFECTS_ENABLED + if(_ReceiveDynamicEffectsFoam > 0) + { + foamDistortion = _FoamDistortion * dynamicEffectsData[DE_HEIGHT_CHANNEL].xx; + + float2 dynamicFoamTex = SampleDynamicFoam((uv + foamDistortion.xy), _FoamTilingDynamic, _FoamSubTilingDynamic, (TIME * -_Direction), _FoamSpeedDynamic, _FoamSubSpeedDynamic); + #if _RIVER + //foamGradient -= water.slope; + #endif + + //return float4(dynamicFoamTex.rg, 0, 1); + + water.foam += CalculateFoamWeight(dynamicEffectsData[DE_FOAM_CHANNEL], dynamicFoamTex.r); + if(_FoamClippingDynamic > 0) water.foam = smoothstep(_FoamClippingDynamic, 1.0, water.foam); + + //Add foam weight, as this is used for bubbles + foamGradient += dynamicEffectsData[DE_FOAM_CHANNEL]; + + foamBubbles = saturate(foamBubbles + dynamicEffectsData[DE_FOAM_CHANNEL]); + } + #endif + + water.foam = saturate(water.foam); + + if(_FoamBubblesStrength > 0) + { + foamBubbles = CalculateFoamWeight(foamGradient * _FoamBubblesSpread, saturate(foamBubbles)) * _FoamBubblesStrength; + //return float4(foamBubbles.xxx, 1.0); + water.albedo = lerp(water.albedo, _ShallowColor.rgb, foamBubbles); + } + + #if _NORMALMAP + //Flatten normal map on foam + water.tangentWorldNormal = lerp(water.tangentWorldNormal, water.waveNormal, water.foam); + #endif + //return float4(water.foam.xxx, 1); +#endif + #endif + + /* ======== + // EMISSION (Caustics + Specular) + =========== */ + #if COLLAPSIBLE_GROUP + + #if _CAUSTICS + float3 causticsCoords = scene.positionWS; + #if _DISABLE_DEPTH_TEX + causticsCoords = uv.xyy; + #endif + + float causticsMask = saturate((1-water.fog) - water.intersection - water.foam - scene.skyMask) * water.vFace; + + bool directional = _EnableDirectionalCaustics && isMatchingLightLayer; + float2 causticsProjection = GetCausticsProjection(input.positionCS, mainLight.direction, causticsCoords, scene.normalWS, directional, causticsMask); + + //Refraction creates discrepancy + //causticsProjection = CalculateTriPlanarProjection(scene.positionWS, ReconstructWorldNormal(input.positionCS)); + #ifdef SCENE_SHADOWMASK + causticsMask *= scene.shadowMask; + #endif + + float3 causticsDistortion = lerp(water.waveNormal.xyz, water.tangentWorldNormal.xyz, _CausticsDistortion); + + #if _ADVANCED_SHADING + //causticsDistortion = TransformWorldToViewDir(causticsDistortion); + //causticsDistortion.xz = causticsDistortion.xy; + #endif + + water.caustics = SampleCaustics(causticsProjection + causticsDistortion.xz, (TIME * -_Direction) * _CausticsSpeed, _CausticsTiling, _CausticsChromance); + + //return float4(causticsMask.xxx, 1.0); + + //Note: not masked by surface shadows, this occurs in the lighting function so it also takes point/spot lights into account + water.caustics *= causticsMask * _CausticsBrightness; + //return float4(water.caustics.rgb, 1); + #endif + +#if _NORMALMAP + if(_SparkleIntensity > 0) + { + //Can piggyback on the tangent normal + half3 sparkles = mainLight.color * saturate(step(_SparkleSize, (water.tangentNormal.y))) * _SparkleIntensity; + + #if !_UNLIT + //Fade out the effect as the sun approaches the horizon + float sunAngle = saturate(dot(water.vertexNormal, mainLight.direction)); + float angleMask = saturate(sunAngle * 10); /* 1.0/0.10 = 10 */ + sparkles *= angleMask; + #endif + + water.specular += sparkles.rgb; + } +#endif + +#ifndef _SPECULARHIGHLIGHTS_OFF + float3 lightReflectionNormal = water.tangentWorldNormal; + + #if _FLAT_SHADING //Use face normals + lightReflectionNormal = water.waveNormal; + #endif + + half specularMask = 1-saturate(water.foam + water.intersection * (1-water.shadowMask)); + //return float4(specularMask.xxx, 1.0); + + float3 sunSpecular = 0; + + if(isMatchingLightLayer) + { + sunSpecular = SpecularReflection(mainLight, water.viewDir, water.waveNormal, lightReflectionNormal, _SunReflectionDistortion, lerp(8196, 64, _SunReflectionSize), _SunReflectionStrength * specularMask, _SunReflectionSharp); + water.specular += sunSpecular; + } + //return float4(water.specular, 1.0); +#endif + //return float4(specular, 1.0); + + //Reflection probe/planar + float3 renderedReflections = 0; +#ifndef _ENVIRONMENTREFLECTIONS_OFF + + //Blend between smooth surface normal and normal map to control the reflection perturbation (probes only!) + #if !_FLAT_SHADING + float3 refWorldNormal = lerp(water.waveNormal, normalize(water.waveNormal + water.tangentWorldNormal), _ReflectionDistortion); + #else //Skip, not a good fit + float3 refWorldNormal = water.waveNormal; + #endif + + half3 reflectionViewDir = water.viewDir; + + #if _REFLECTION_PROBE_BOX_PROJECTION + //Use the camera's forward vector when the camera is orthographic + if(unity_OrthoParams.w == 1) reflectionViewDir = GetWorldSpaceViewDir(positionWS); + #endif + + half3 reflectionVector = reflect(-reflectionViewDir, refWorldNormal); + + #if !_RIVER + //Ensure only the top hemisphere of the reflection probe is used + //reflectionVector.y = max(0, reflectionVector.y); + #endif + + //Pixel offset for planar reflection, sampled in screen-space + float3 reflectionOffsetVector = lerp(water.vertexNormal, water.tangentWorldNormal, _ReflectionDistortion); + + #if _ADVANCED_SHADING + //reflectionOffsetVector = TransformWorldToViewDir(reflectionOffsetVector); + //reflectionOffsetVector.xz = reflectionOffsetVector.xy; + #endif + + float2 reflectionPixelOffset = (reflectionOffsetVector.xz * scene.positionSS.w * SCREENSPACE_REFLECTION_DISTORTION_MULTIPLIER).xy; + + //SSR + Planar + + water.reflections = SampleReflections(reflectionVector, _ReflectionBlur, scene.positionSS.xyzw, positionWS, refWorldNormal, water.viewDir, reflectionPixelOffset, _PlanarReflectionsEnabled, _ScreenSpaceReflectionsEnabled, renderedReflections); + //return float4(water.reflections, 1.0); + + float reflectionFresnel = ReflectionFresnel(refWorldNormal, water.viewDir * faceSign, _ReflectionFresnel); + //return float4(reflectionFresnel.xxx, 1.0); + + water.reflectionMask = _ReflectionStrength * reflectionFresnel; + water.reflectionLighting = 1-_ReflectionLighting; + + #if _UNLIT + //Nullify, otherwise reflections turn black + water.reflectionLighting = 1.0; + #endif +#endif + #endif + + /* ======== + // COMPOSITION + =========== */ + #if COLLAPSIBLE_GROUP + + //Foam application on top of everything up to this point + #if _SURFACE_FOAM + //Mitigate color bleeding into the foam by scaling it + water.albedo.rgb = lerp(water.albedo.rgb, _FoamColor.rgb, water.foam); + #endif + + #if _INTERSECTION_FOAM + //Layer intersection on top of everything + water.albedo.rgb = lerp(water.albedo.rgb, _IntersectionColor.rgb, water.intersection); + #endif + + #if _SURFACE_FOAM || _INTERSECTION_FOAM + //Sum values to compose alpha + water.alpha = saturate(water.alpha + water.intersection + water.foam); + #endif + + #ifndef _ENVIRONMENTREFLECTIONS_OFF + //Foam complete, use it to mask out the reflection (considering that foam is rough) + water.reflectionMask = saturate(water.reflectionMask - water.foam - water.intersection) * _ReflectionStrength; + //return float4(reflectionFresnel.xxx, 1); + + #if !_UNLIT + //Blend reflection with albedo. Diffuse lighting will affect it + water.albedo.rgb = lerp(water.albedo, lerp(water.albedo.rgb, water.reflections, water.reflectionMask), _ReflectionLighting); + //return float4(water.albedo.rgb, 1); + #endif + #endif + //return float4(water.reflections.rgb, 1); + + #if !_UNLIT + //Blend between smooth geometry normal and normal map for diffuse lighting + water.diffuseNormal = lerp(water.waveNormal, water.tangentWorldNormal, _NormalStrength); + #endif + + #if _FLAT_SHADING + //Moving forward, consider the tangent world normal the same as the flat-shaded normals + water.tangentWorldNormal = water.waveNormal; + #endif + + //Horizon color (note: not using normals, since they are perturbed by waves) + float fresnel = saturate(pow(VdotN, _HorizonDistance)) * _HorizonColor.a; + #if UNDERWATER_ENABLED + fresnel *= water.vFace; + #endif + water.albedo.rgb = lerp(water.albedo.rgb, _HorizonColor.rgb, fresnel); + + #if UNITY_COLORSPACE_GAMMA + //Gamma-space is likely a choice, enabling this will have the water stand out from non gamma-corrected shaders + //water.albedo.rgb = LinearToSRGB(water.albedo.rgb); + #endif + + //Final alpha + water.edgeFade = saturate(scene.verticalDepth / (_EdgeFade * 0.01)); + + #if UNDERWATER_ENABLED + water.edgeFade = lerp(1.0, water.edgeFade, water.vFace); + #endif + + water.alpha *= water.edgeFade; + #endif + + /* ======== + // TRANSLUCENCY + =========== */ + TranslucencyData translucencyData = (TranslucencyData)0; + #if _TRANSLUCENCY + if(isMatchingLightLayer) + { + float scatteringMask = 1.0; + scatteringMask = saturate((water.fog + water.edgeFade) - (water.reflectionMask * water.vFace)) * water.shadowMask; + scatteringMask -= water.foam; + + scatteringMask = saturate(scatteringMask); + + //return float4(scatteringMask.xxx, 1); + + translucencyData = PopulateTranslucencyData(_ShallowColor.rgb, mainLight.direction, mainLight.color, water.viewDir, water.waveNormal, water.tangentWorldNormal, scatteringMask, _TranslucencyStrength, _TranslucencyStrengthDirect * water.vFace, _TranslucencyExp, _TranslucencyCurvatureMask * water.vFace, true); + + #if UNDERWATER_ENABLED + //Override the strength of the effect for the backfaces, to match the underwater shading post effect + translucencyData.strength *= lerp(_UnderwaterFogBrightness * _UnderwaterSubsurfaceStrength, 1, water.vFace); + translucencyData.exponent = lerp(_UnderwaterSubsurfaceExponent, _TranslucencyExp, water.vFace); + #endif + } + #endif + + /* ======== + // UNITY SURFACE & INPUT DATA + =========== */ + #if COLLAPSIBLE_GROUP + SurfaceData surfaceData = (SurfaceData)0; + + surfaceData.albedo = water.albedo.rgb; + surfaceData.specular = water.specular.rgb; + surfaceData.metallic = 0; + surfaceData.smoothness = 0; + surfaceData.normalTS = water.tangentNormal; + surfaceData.emission = 0; //To be populated with translucency+caustics + surfaceData.occlusion = 1.0; + surfaceData.alpha = water.alpha; + + //https://github.com/Unity-Technologies/Graphics/blob/31106afc882d7d1d7e3c0a51835df39c6f5e3073/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl#L34 + InputData inputData = (InputData)0; + inputData.positionWS = positionWS; + inputData.viewDirectionWS = water.viewDir; + inputData.shadowCoord = shadowCoords; + #if UNDERWATER_ENABLED + //Flatten normals for underwater lighting (distracting, peers through the fog) + inputData.normalWS = lerp(water.waveNormal, water.tangentWorldNormal, water.vFace); + #else + inputData.normalWS = water.tangentWorldNormal; + #endif + inputData.fogCoord = InitializeInputDataFog(float4(positionWS, 1.0), input.fogFactorAndVertexLight.x); + inputData.vertexLighting = input.fogFactorAndVertexLight.yzw; + inputData.shadowMask = water.shadowMask.xxxx; + inputData.normalizedScreenSpaceUV = scene.positionSS.xy / scene.positionSS.w; + inputData.bakedGI = 0; + + #if defined(DYNAMICLIGHTMAP_ON) + inputData.bakedGI = SAMPLE_GI(input.staticLightmapUV, input.dynamicLightmapUV.xy, input.vertexSH, inputData.normalWS); + #elif !defined(LIGHTMAP_ON) && (defined(PROBE_VOLUMES_L1) || defined(PROBE_VOLUMES_L2)) + inputData.bakedGI = SAMPLE_GI(input.vertexSH, + GetAbsolutePositionWS(inputData.positionWS), + inputData.normalWS, + inputData.viewDirectionWS, + input.positionCS.xy + //Unity 6000.0.9+ + //#if UNITY_VERSION > 600000 + ,input.probeOcclusion + ,inputData.shadowMask + //#endif + ); + #else + inputData.bakedGI = SAMPLE_GI(input.staticLightmapUV, input.vertexSH, inputData.normalWS); + #endif + + + //Lightmap(static+dynamic) or SH + //return float4(inputData.bakedGI, 1.0); + + #endif + + //return float4(surfaceData.emission, 1.0); + /* ======== + // RENDERING DEBUGGER (URP 12+) + =========== */ + #if COLLAPSIBLE_GROUP + + #if defined(DEBUG_DISPLAY) + inputData.positionCS = input.positionCS; + #if _NORMALMAP + inputData.tangentToWorld = water.tangentToWorldMatrix; + #else + inputData.tangentToWorld = 0; + #endif + inputData.shadowMask = water.shadowMask.xxxx; + #if defined(DYNAMICLIGHTMAP_ON) + inputData.dynamicLightmapUV = input.dynamicLightmapUV; + #endif + #if defined(LIGHTMAP_ON) + inputData.staticLightmapUV = input.staticLightmapUV; + #else + inputData.vertexSH = input.vertexSH; + #endif + + surfaceData.emission = water.caustics; + ApplyTranslucency(translucencyData, surfaceData.emission.rgb); + + inputData.brdfDiffuse = surfaceData.albedo; + inputData.brdfSpecular = surfaceData.specular; + inputData.uv = uv; + inputData.mipCount = 0; + inputData.texelSize = float4(1/uv.x, 1/uv.y, uv.x, uv.y); + inputData.mipInfo = 0; + half4 debugColor; + + if (_DebugLightingMode == DEBUGLIGHTINGMODE_REFLECTIONS || _DebugLightingMode == DEBUGLIGHTINGMODE_REFLECTIONS_WITH_SMOOTHNESS) + { + return float4(water.reflections * (_DebugLightingMode == DEBUGLIGHTINGMODE_REFLECTIONS_WITH_SMOOTHNESS ? water.reflectionMask : 1), 1.0); + } + + if (_DebugLightingMode == DEBUGMATERIALMODE_RENDERING_LAYER_MASKS) + { + //return float4(GetRenderingLayerMasksDebugColor(inputData.positionCS, inputData.normalWS).xyz, 1.0); + } + + if (CanDebugOverrideOutputColor(inputData, surfaceData, debugColor)) + { + return debugColor; + } + #endif + #endif + + #if UNDERWATER_ENABLED + //Snell's window + float reflectionCoefficient = UnderwaterReflectionFactor(inputData.normalWS, water.tangentWorldNormal, water.viewDir, _UnderwaterSurfaceSmoothness, _UnderwaterRefractionOffset); + #endif + + float4 finalColor = float4(ApplyLighting(surfaceData, scene.color, mainLight, inputData, water, translucencyData, _ShadowStrength, water.vFace, isMatchingLightLayer), water.alpha); + + #if _REFRACTION + finalColor.rgb = lerp(scene.color.rgb, finalColor.rgb, saturate(water.fog + water.intersection + water.foam)); + //The opaque color texture is now used. The "real" alpha value is solely the edge fade factor + water.alpha = water.edgeFade; + #endif + + half fogMask = 1.0; + #if UNDERWATER_ENABLED + //Limit to front faces as underwater fog already applies to the bottom + fogMask = water.vFace; + #endif + + ApplyFog(finalColor.rgb, inputData.fogCoord, scene.positionSS, positionWS, fogMask); + + #if UNDERWATER_ENABLED + float4 underwaterColor = ShadeUnderwaterSurface(surfaceData.albedo.rgb, surfaceData.emission.rgb, surfaceData.specular.rgb, renderedReflections * _UnderwaterReflectionStrength, scene.color.rgb, scene.skyMask, + backfaceShadows, inputData.positionWS, inputData.normalWS, water.tangentWorldNormal, water.viewDir, scene.positionSS.xy, + _ShallowColor, _BaseColor, water.vFace, _UnderwaterSurfaceSmoothness, _UnderwaterRefractionOffset); + + #if _REFRACTION + underwaterColor.a = 1.0; + #endif + + finalColor.rgb = lerp(underwaterColor.rgb, finalColor.rgb, water.vFace); + water.alpha = lerp(underwaterColor.a, water.alpha, water.vFace); + #endif + + //return float4(water.alpha.xxx, 1.0); + + finalColor.a = water.alpha; + + //Vertex color green channel controls real alpha in this case + if(_VertexColorTransparency > 0.5) finalColor.a = water.alpha * saturate(water.alpha - vertexColor.g); + + return finalColor; +} + + +void ForwardPassFragment( + Varyings input, FRONT_FACE_TYPE_REAL vertexFace : FRONT_FACE_SEMANTIC_REAL + , out half4 outColor : SV_Target0 +#ifdef _WRITE_RENDERING_LAYERS + , out float4 outRenderingLayers : SV_Target1 +#endif +) +{ + outColor = ForwardPass(input, vertexFace); + + #ifdef _WRITE_RENDERING_LAYERS + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); + #endif +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Passes/ForwardPass.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Passes/ForwardPass.hlsl.meta new file mode 100644 index 00000000..7d769b8b --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Passes/ForwardPass.hlsl.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 82e93b09a1224254f9bbb9e6bd497b58 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Passes/ForwardPass.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Passes/HeightPrePass.hlsl b/Assets/External/Stylized Water 3/Shaders/Passes/HeightPrePass.hlsl new file mode 100644 index 00000000..f0bc865e --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Passes/HeightPrePass.hlsl @@ -0,0 +1,98 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#include "../Libraries/Common.hlsl" +#include "../Libraries/Waves.hlsl" +#include "../Libraries/Projection.hlsl" +#include "../Libraries/Height.hlsl" + +struct HeightPassAttributes +{ + float4 positionOS : POSITION; + float4 uv : TEXCOORD0; + float4 color : COLOR0; + + UNITY_VERTEX_INPUT_INSTANCE_ID +}; + +struct HeightPassVaryings +{ + float4 positionWS : TEXCOORD0; + //XYZ: World Position + //W: Displacement offset + float4 positionCS : SV_POSITION; + float4 uv : TEXCOORD1; //Needs to be defined for Common.hlsl + + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO +}; + +HeightPassVaryings HeightPassVertex(HeightPassAttributes input) +{ + HeightPassVaryings output = (HeightPassVaryings)0; + + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + +#if defined(CURVEDWORLD_IS_INSTALLED) && !defined(CURVEDWORLD_DISABLED_ON) + CURVEDWORLD_TRANSFORM_VERTEX(input.positionOS) +#endif + + float3 positionWS = TransformObjectToWorld(input.positionOS.xyz); + float3 offset = 0; + + output.uv = float4(input.uv.xy, _TimeParameters.x, 0); + +#if _WAVES + float2 uv = GetSourceUV(input.uv.xy, positionWS.xz, _WorldSpaceUV); + + float3 waveOffset = float3(0,0,0); + float3 waveNormal = float3(0,1,0); + + CalculateWaves(_WaveProfile, _WaveProfile_TexelSize.z, _WaveMaxLayers, uv.xy, _WaveFrequency, positionWS.xyz, _Direction.xy, float3(0,1,0), (TIME_VERTEX * _Speed) * _WaveSpeed, input.color.b * _VertexColorWaveFlattening, float3(_WaveSteepness, _WaveHeight, _WaveSteepness), + _WaveNormalStr, _WaveFadeDistance.x, _WaveFadeDistance.y, + //Out + waveOffset, waveNormal); + + offset.xyz += waveOffset.xyz; +#endif + + #if DYNAMIC_EFFECTS_ENABLED + if(_ReceiveDynamicEffectsHeight) + { + float4 effectsData = SampleDynamicEffectsData(positionWS.xyz); + + half falloff = 1.0; + #if defined(TESSELLATION_ON) + //falloff = saturate(1.0 - (distance(positionWS.xyz, GetCurrentViewPosition() - _TessMin)) / (_TessMax - _TessMin)); + #endif + + offset.y += effectsData[DE_HEIGHT_CHANNEL] * falloff; + } + #endif + + output.positionCS = TransformWorldToHClip(positionWS); + output.positionWS.xyz = positionWS.xyz; + output.positionWS.w = offset.y; + + return output; +} + +float4 HeightFragment(HeightPassVaryings input) : SV_TARGET +{ + UNITY_SETUP_INSTANCE_ID(input); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + float3 positionWS = input.positionWS.xyz; + float height = input.positionWS.w; + + //float projectionEdgeMask = ProjectionEdgeMask(positionWS, _WaterHeightCoords.xy, _WaterHeightCoords.z, 15); + + //positionWS.y = lerp(VOID_THRESHOLD, positionWS.y, projectionEdgeMask); + + return float4(positionWS.y, height, 0.0, 1.0); +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Passes/HeightPrePass.hlsl.meta b/Assets/External/Stylized Water 3/Shaders/Passes/HeightPrePass.hlsl.meta new file mode 100644 index 00000000..72cf56ef --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Passes/HeightPrePass.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9417554152a5431cbb22f67dfea63312 +timeCreated: 1718705139 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Passes/HeightPrePass.hlsl + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Rendering.meta b/Assets/External/Stylized Water 3/Shaders/Rendering.meta new file mode 100644 index 00000000..7f1d4bc4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Rendering.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1a0c3077859e4304ad84eb1a25e8c36b +timeCreated: 1718458025 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Rendering/HeightProcessor.shader b/Assets/External/Stylized Water 3/Shaders/Rendering/HeightProcessor.shader new file mode 100644 index 00000000..4531b7c6 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Rendering/HeightProcessor.shader @@ -0,0 +1,128 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +Shader "Hidden/StylizedWater3/HeightProcessor" +{ + SubShader + { + Cull Off ZWrite Off ZTest Always + + HLSLINCLUDE + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" + ENDHLSL + + Pass + { + Name "Height To Normal" + HLSLPROGRAM + + #pragma vertex Vert + #pragma fragment frag + + float4 _HeightToNormalParams; + //X: Strength + //Y: Channel + //Z: Miplevel + + float4 frag (Varyings input) : SV_Target + { + float2 uv = input.texcoord; + float radius = _BlitTexture_TexelSize.x; //1f/width + + float strength = _HeightToNormalParams.x * 2.0; + int channel = _HeightToNormalParams.y; + uint mip = _HeightToNormalParams.z; + + if(uv.x >= (1-radius) || uv.y >= (1-radius) + || uv.x <= (radius) || uv.y <= (radius) + ) return float4(1,1,1,1); + + const float xLeft = (SAMPLE_TEXTURE2D_X_LOD(_BlitTexture, sampler_LinearClamp, float2(uv.xy - float2(radius, 0.0)), mip)[channel]) * strength; + const float xRight = (SAMPLE_TEXTURE2D_X_LOD(_BlitTexture, sampler_LinearClamp, float2(uv.xy + float2(radius, 0.0)), mip)[channel]) * strength; + + const float yUp = (SAMPLE_TEXTURE2D_X_LOD(_BlitTexture, sampler_LinearClamp, float2(uv.xy - float2(0.0, radius)), mip)[channel]) * strength; + const float yDown = (SAMPLE_TEXTURE2D_X_LOD(_BlitTexture, sampler_LinearClamp, float2(uv.xy + float2(0.0, radius)), mip)[channel]) * strength; + + float xDelta = ((xLeft - xRight) + 1.0) * 0.5f; + float yDelta = ((yUp - yDown) + 1.0) * 0.5f; + + float4 normals = float4(xDelta, yDelta, 0.0, 0); + + return normals; + } + ENDHLSL + } + + Pass + { + Name "Terrain Intersection Mask" + HLSLPROGRAM + + #pragma vertex Vert + #pragma fragment frag + + #include "../Libraries/Height.hlsl" + #include "../Libraries/Terrain.hlsl" + + float _TerrainIntersectionMaskOffset; + + float4 frag (Varyings input) : SV_Target + { + float2 uv = input.texcoord; + + //Snap texels to terrain height buffer grid to avoid texel swimming + float cellSize = 2; + + //uv = floor(uv / cellSize) * cellSize; + float3 positionWS = float3( + _TerrainHeightRenderCoords.x + (uv.x * _TerrainHeightRenderCoords.z), + 0, + _TerrainHeightRenderCoords.y + (uv.y * _TerrainHeightRenderCoords.z)); + + + float3 terrainHeightSamplePos = positionWS; + terrainHeightSamplePos.x = floor(positionWS.x / cellSize) * cellSize; + terrainHeightSamplePos.z = floor(positionWS.z / cellSize) * cellSize; + terrainHeightSamplePos = floor(positionWS / cellSize) * (cellSize) + (cellSize * 0.5f); + + /* + int resolution = 256.0f; + float3 origin = float3(_TerrainHeightRenderCoords.x, 0, _TerrainHeightRenderCoords.y); + origin = origin * resolution / 2.0f; + float3 roundedOrigin = round(origin); + float3 roundOffset = roundedOrigin - origin; + + //Need to fix the pixel swimming. SDF mask renders at a lower resolution than the terrain height prepass + roundOffset = roundOffset * 2.0f / resolution; + positionWS += roundOffset; + */ + + float2 waterHeights = SampleWaterHeight(positionWS); + float waterHeight = waterHeights.x; + + //Factor in displacement effects? + //waterHeight += waterHeights.g; + + if(HasHitWaterSurface(waterHeight) == false) return 0; + + //TODO: Implement padding to shift the SDF inwards a bit + waterHeight += _TerrainIntersectionMaskOffset; + + const float terrainHeight = SampleTerrainHeight(terrainHeightSamplePos); + + float delta = waterHeight - terrainHeight; + + //Soft + //float mask = 1-saturate(delta * 32); + //Boolean + float mask = waterHeight < terrainHeight ? 1 : 0; + + return float4(mask, 0.0, 0.0, 1.0); + } + ENDHLSL + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/Rendering/HeightProcessor.shader.meta b/Assets/External/Stylized Water 3/Shaders/Rendering/HeightProcessor.shader.meta new file mode 100644 index 00000000..c0d4be0f --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Rendering/HeightProcessor.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a1cfcf2c2c8140c084fb10845093540e +timeCreated: 1718458047 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Rendering/HeightProcessor.shader + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Rendering/TerrainHeight.shader b/Assets/External/Stylized Water 3/Shaders/Rendering/TerrainHeight.shader new file mode 100644 index 00000000..963c4976 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Rendering/TerrainHeight.shader @@ -0,0 +1,97 @@ +Shader "Hidden/StylizedWater3/TerrainHeight" +{ + Properties + { + [MainTexture] _BaseMap("Texture", 2D) = "black" {} + [MainColor] _BaseColor("Color", Color) = (1, 1, 1, 1) + } + + SubShader + { + Tags + { + "RenderType" = "Opaque" + "IgnoreProjector" = "True" + "UniversalMaterialType" = "Unlit" + "RenderPipeline" = "UniversalPipeline" + } + LOD 100 + + ZWrite Off + Cull Off + + Pass + { + Name "Output terrain height" + + HLSLPROGRAM + #pragma target 2.0 + + #pragma vertex UnlitPassVertex + #pragma fragment UnlitPassFragment + + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + + #include "Packages/com.unity.render-pipelines.universal/Shaders/UnlitInput.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" //UnpackHeightmap + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" //UnpackHeightmap + + struct Attributes + { + float4 positionOS : POSITION; + float2 uv : TEXCOORD0; + + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct Varyings + { + float2 uv : TEXCOORD0; + float4 positionCS : SV_POSITION; + + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + Varyings UnlitPassVertex(Attributes input) + { + Varyings output = (Varyings)0; + + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + output.positionCS = TransformObjectToHClip(input.positionOS.xyz); + output.uv = input.uv; + + return output; + } + + TEXTURE2D_FLOAT(_TerrainHeightmap); + float4 _TerrainHeightRange; + //X: Bottom y-position + //Y: Max height (heightmap scale) + + void UnlitPassFragment(Varyings input, out half4 outColor : SV_Target0) + { + UNITY_SETUP_INSTANCE_ID(input); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + half2 uv = input.uv; + + float scale = (_TerrainHeightRange.y); + float heightMap = UnpackHeightmap(SAMPLE_TEXTURE2D(_TerrainHeightmap, sampler_LinearRepeat, uv).r); + heightMap *= scale * 1; + + float worldHeight = (_TerrainHeightRange.x + heightMap); + + //worldHeight = PackHeightmap(worldHeight); + + outColor = float4(worldHeight.xxx, 1.0); + } + ENDHLSL + } + } + + FallBack "Hidden/Universal Render Pipeline/FallbackError" +} diff --git a/Assets/External/Stylized Water 3/Shaders/Rendering/TerrainHeight.shader.meta b/Assets/External/Stylized Water 3/Shaders/Rendering/TerrainHeight.shader.meta new file mode 100644 index 00000000..9a0d61a4 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Rendering/TerrainHeight.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 457f526f44254ef78348e3d0b1cc07ec +timeCreated: 1718291858 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Rendering/TerrainHeight.shader + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/StylizedWater3_Standard.watershader3 b/Assets/External/Stylized Water 3/Shaders/StylizedWater3_Standard.watershader3 new file mode 100644 index 00000000..da0f3fe7 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/StylizedWater3_Standard.watershader3 @@ -0,0 +1,517 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +%asset_version% +%unity_version% +%compiler_version% + +%shader_name% +{ + Properties + { + //Rendering + [Toggle] _ZWrite("Depth writing", Float) = 0 + [Toggle] _ZClip("Camera frustum clipping", Float) = 1 + [Enum(Both,0,Back,1,Front,2)] _Cull("Render faces", Float) = 2 + [MaterialEnum(Performance, 0,Appearance, 1)] _ShadingMode("Shading mode", Float) = 1 + + [MaterialEnum(Mesh UV,0,World XZ projected ,1)]_WorldSpaceUV("UV Coordinates", Float) = 1 + _Direction("Animation direction", Vector) = (0,-1,0,0) + _Speed("Animation Speed", Float) = 1 + + _SlopeAngleThreshold("Angle° threshold", Range(0 , 90)) = 15 + _SlopeAngleFalloff("Angle° falloff", Range(15 , 90)) = 25 + _SlopeStretching("Slope UV stretch", Range(0 , 1)) = 0.5 + _SlopeSpeed("Slope speed multiplier", Float) = 2 + _SlopeFoam("River slope foam", Range(0 , 3)) = 1 + + //Color + Transparency + [HDR]_BaseColor("Deep", Color) = (0, 0.44, 0.62, 1) + [HDR]_ShallowColor("Shallow", Color) = (0.1, 0.9, 0.89, 0.02) + [PowerSlider(3)] _ColorAbsorption("Color Absorption", Range(0 , 1)) = 0 + _WaveTint("Wave tint", Range( -0.1 , 0.1)) = 0 + [HDR]_HorizonColor("Horizon", Color) = (0.84, 1, 1, 0.15) + _HorizonDistance("Horizon Distance", Range(0.01 , 32)) = 8 + [Toggle] _VertexColorTransparency("Vertex color (G) transparency", Float) = 0 + [MaterialEnum(Depth Texture,0,Vertex Color (G),1)] _FogSource("Fog source", Float) = 0 + _DepthVertical("View Depth", Range(0.01 , 16)) = 4 + _DepthHorizontal("Vertical Height Depth", Range(0.01 , 8)) = 1 + _EdgeFade("Edge Fade", Float) = 0.1 + _ShadowStrength("Shadow Strength", Range(0 , 1)) = 1 + + //_Smoothness("Smoothness", Range(0.0, 1.0)) = 0.9 + //_Metallic("Metallic", Range(0.0, 1.0)) = 0.0 + + _TranslucencyStrength("Translucency Strength", Range(0 , 3)) = 1 + _TranslucencyStrengthDirect("Translucency Strength (Direct)", Range(0 , 0.5)) = 0.05 + _TranslucencyExp("Translucency Exponent", Range(1 , 32)) = 4 + _TranslucencyCurvatureMask("Translucency Curvature mask", Range(0, 1)) = 0.75 + _TranslucencyReflectionMask("Translucency Reflection mask", Range(0, 1)) = 1 + + //Underwater + _CausticsBrightness("Brightness", Float) = 2 + _CausticsChromance("Chromance", Range(0, 1)) = 1 + _CausticsTiling("Tiling", Float) = 0.5 + _CausticsSpeed("Speed multiplier", Float) = 0.1 + _CausticsDistortion("Distortion", Range(0, 1)) = 0.15 + [NoScaleOffset][SingleLineTexture]_CausticsTex("Texture", 2D) = "black" {} + [Toggle] _EnableDirectionalCaustics("Directional Caustics", Float) = 0 + + _UnderwaterSurfaceSmoothness("Underwater Surface Smoothness", Range(0, 1)) = 0.8 + _UnderwaterRefractionOffset("Underwater Refraction Offset", Range(-1, 1)) = 0.2 + _UnderwaterReflectionStrength("Underwater Reflection Strength", Range(0, 1)) = 0.5 + + _RefractionStrength("Refraction Strength", Range(0, 1)) = 0.1 + _RefractionChromaticAberration("Refraction Chromatic Aberration)", Range(0, 1)) = 1 + + //Intersection Foam + [MaterialEnum(Depth Texture,0,Vertex Color (R),1,Depth Texture and Vertex Color,2)] _IntersectionSource("Intersection source", Float) = 0 + + [NoScaleOffset][SingleLineTexture]_IntersectionNoise("Intersection noise", 2D) = "white" {} + _IntersectionColor("Color", Color) = (1,1,1,1) + _IntersectionLength("Distance", Range(0.01 , 10)) = 3 + _IntersectionFalloff("Falloff", Range(0.01 , 1)) = 0.5 + [Toggle] _IntersectionSharp("Sharp", float) = 1 + _IntersectionClipping("Cutoff", Range(0.01, 1)) = 0.5 + _IntersectionTiling("Noise Tiling", float) = 0.2 + _IntersectionSpeed("Speed multiplier", float) = 0.1 + _IntersectionRippleDist("Ripple frequency", float) = 32 + _IntersectionRippleStrength("Ripple Strength", Range(0 , 1)) = 0.5 + _IntersectionRippleSpeed("Ripple Speed", float) = 2 + _IntersectionDistortion("Distortion", Range(0 , 1)) = 0.2 + + //Surface Foam + [NoScaleOffset][SingleLineTexture]_FoamTex("Foam Mask", 2D) = "black" {} + _FoamColor("Color", Color) = (1,1,1,1) + _FoamSpeed("Speed multiplier", float) = 0.1 + _FoamSubSpeed("Speed multiplier (sub-layer)", float) = -0.25 + _FoamBaseAmount("Base amount", Range(0 , 1)) = 0 + _FoamClipping("Clipping", Range(0 , 0.999)) = 0 + _FoamStrength("Strength", float) = 1 + [MinMaxSlider(0, 3)] + _FoamCrestMinMaxHeight("Wave crest min/max height", Vector) = (1, 2, 0, 0) + [MinMaxSlider(10, 500)] + _DistanceFoamFadeDist("Distance foam blend (Start/End)", Vector) = (100, 350, 0, 0) + _DistanceFoamTiling("Distance foam: Tiling multiplier", Float) = 0.2 + + //[PowerSlider(0.1)] _FoamCrestExponent("Wave crest min/max height", Range(1, 8)) = 4 + _FoamBubblesSpread("Foam bubbles spread", Range(0, 2)) = 1 + _FoamBubblesStrength("Foam ubbles", Range(0, 1)) = 0.1 + + _FoamTiling("Tiling", Vector) = (0.1, 0.1, 0, 0) + _FoamSubTiling("Tiling (sub-layer)", float) = 0.5 + _FoamDistortion("Distortion", Range(0, 3)) = 0 + [Toggle] _VertexColorFoam("Vertex color (A) foam", Float) = 0 + + [NoScaleOffset][SingleLineTexture] _FoamTexDynamic("Foam (Dynamic)", 2D) = "white" {} + _FoamTilingDynamic("Tiling (Dynamic)", float) = 0.1 + _FoamSubTilingDynamic("Tiling (sub-layer)", float) = 2 + _FoamSpeedDynamic("Speed multiplier", float) = 0.1 + _FoamSubSpeedDynamic("Speed multiplier (sub-layer)", float) = -0.1 + _FoamClippingDynamic("SClipping", Range(0 , 0.999)) = 0 + + //Normals + [NoScaleOffset][Normal][SingleLineTexture]_BumpMap("Normals", 2D) = "bump" {} + [NoScaleOffset][Normal][SingleLineTexture]_BumpMapSlope("Normals (River slopes)", 2D) = "bump" {} + _NormalTiling("Tiling", Vector) = (0.5, 0.5, 0, 0) + _NormalSubTiling("Tiling (sub-layer)", Float) = 0.5 + _NormalStrength("Strength", Range(0 , 1)) = 0.135 + _NormalSpeed("Speed multiplier", Float) = 1 + _NormalSubSpeed("Speed multiplier (sub-layer)", Float) = -0.5 + + [NoScaleOffset][Normal][SingleLineTexture]_BumpMapLarge("Normals (Distance)", 2D) = "bump" {} + _DistanceNormalsFadeDist("Distance normals blend (Start/End)", Vector) = (100, 300, 0, 0) + _DistanceNormalsTiling("Distance normals: Tiling multiplier", Float) = 0.15 + + _SparkleIntensity("Sparkle Intensity", Range(0 , 10)) = 00 + _SparkleSize("Sparkle Size", Range( 0 , 1)) = 0.280 + + //Light Reflections + [PowerSlider(0.1)] _SunReflectionSize("Sun Size", Range(0 , 1)) = 0.5 + _SunReflectionStrength("Sun Strength", Float) = 10 + _SunReflectionDistortion("Sun Distortion", Range(0 ,2)) = 0.49 + [Toggle] _SunReflectionSharp("Sun Sharpness", Float) = 0 + + _PointSpotLightReflectionStrength("Point/spot light strength", Float) = 10 + [PowerSlider(0.1)] _PointSpotLightReflectionSize("Point/spot light size", Range(0 , 1)) = 0 + _PointSpotLightReflectionDistortion("Point/spot light distortion", Range(0, 1)) = 0.5 + [Toggle] _PointSpotLightReflectionSharp("Point/spot light Sharp", Float) = 0 + + //World Reflections + _ReflectionStrength("Strength", Range(0, 1)) = 1 + _ReflectionDistortion("Distortion", Range(0, 1)) = 0.05 + _ReflectionBlur("Probe Blur Factor", Range(0, 1)) = 0 + _ReflectionFresnel("Curvature mask", Range(0.01, 20)) = 5 + _ReflectionLighting("Lighting influence", Range(0, 1)) = 0 + _PlanarReflection("Planar Reflections", 2D) = "" {} //Instanced + [Toggle] _ScreenSpaceReflectionsEnabled("Screen-space Reflections", float) = 0 + _PlanarReflectionsEnabled("Planar Enabled", float) = 0 //Instanced + + //Waves + [WaveProfile] _WaveProfile("Wave Profile", 2D) = "black" {} + + _WaveSpeed("Speed", Float) = 2 + _WaveFrequency("Frequency", Float) = 1 + _WaveHeight("Height Scale", Range(0 , 2)) = 0.15 + [Toggle] _VertexColorWaveFlattening("Vertex color (B) wave flattening", Float) = 0 + + _WaveNormalStr("Normal Strength", Range(0 , 32)) = 0.1 + _WaveFadeDistance("Wave fade distance (Start/End)", Vector) = (150, 500, 0, 0) + + _WaveSteepness("Steepness", Range(0 , 5)) = 0.1 + _WaveMaxLayers("Maximum Layers", Range(1 , 64)) = 64 + _WaveDirection("Direction", vector) = (1,1,1,1) + + //Keyword states + [ToggleOff(_UNLIT)] _LightingOn("Enable lighting", Float) = 1 + [ToggleOff(_RECEIVE_SHADOWS_OFF)] _ReceiveShadows("Recieve Shadows", Float) = 1 + + [Toggle(_FLAT_SHADING)] _FlatShadingOn("Flat shading", Float) = 0 + [Toggle(_TRANSLUCENCY)] _TranslucencyOn("Enable translucency shading", Float) = 1 + [Toggle(_REFRACTION)] _RefractionOn("Refraction", Float) = 1 + [Toggle(_RIVER)] _RiverModeOn("River Mode", Float) = 0 + [Toggle(_CAUSTICS)] _CausticsOn("Caustics ON", Float) = 1 + [ToggleOff(_SPECULARHIGHLIGHTS_OFF)] _SpecularReflectionsOn("Specular Reflections", Float) = 1 + [ToggleOff(_ENVIRONMENTREFLECTIONS_OFF)] _EnvironmentReflectionsOn("Environment Reflections", Float) = 1 + [Toggle(_NORMALMAP)] _NormalMapOn("Normal maps", Float) = 1 + [Toggle(_INTERSECTION_FOAM)] _IntersectionFoamOn("Enable intersection foam", float) = 1 + [Toggle(_DISTANCE_NORMALS)] _DistanceNormalsOn("Distance normal map", Float) = 0 + [Toggle] _FoamOn("Surface Foam", Float) = 1 + [Toggle] _FoamDistanceOn("Surface Foam Distance", Float) = 0 + [Toggle(_DISABLE_DEPTH_TEX)] _DisableDepthTexture("Disable depth texture", Float) = 0 + [Toggle(_WAVES)] _WavesOn("Waves", Float) = 0 + [Toggle] _ReceiveDynamicEffectsHeight("Receive Dynamic Effects Height", Float) = 1 + _ReceiveDynamicEffectsFoam("Receive Dynamic Effects Foam", Float) = 1 + [Toggle] _ReceiveDynamicEffectsNormal("Receive Dynamic Effects Normals", Float) = 1 + + %tessellation_properties% + + //[CurvedWorldBendSettings] _CurvedWorldBendSettings("0,5|1|1", Vector) = (0, 0, 0, 0) + + //Purely here so the _BaseColor gets multiplied with a white color during lightmapping + [MainTexture] [HideInInspector] _BaseMap("Albedo", 2D) = "white" {} + + [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {} + [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {} + [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {} + } + + SubShader + { + Tags + { + "RenderType" = "Transparent" + "RenderPipeline" = "UniversalPipeline" + "UniversalMaterialType" = "Lit" + "IgnoreProjector" = "True" + "Queue" = "Transparent+%render_queue_offset%" + } + + HLSLINCLUDE + //Custom directives: + %custom_directives% + %global_defines% + + //Curved World 2020 directives: + //#pragma shader_feature_local CURVEDWORLD_BEND_TYPE_CLASSICRUNNER_X_POSITIVE CURVEDWORLD_BEND_TYPE_LITTLEPLANET_Y + //#define CURVEDWORLD_BEND_ID_1 + //#pragma shader_feature_local CURVEDWORLD_DISABLED_ON + //#pragma shader_feature_local CURVEDWORLD_NORMAL_TRANSFORMATION_ON + + ENDHLSL + + Pass + { + Name "ForwardLit" + Tags { "LightMode"="UniversalForwardOnly" } + + Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha + ZWrite [_ZWrite] + Cull [_Cull] + ZTest LEqual + ZClip [_ZClip] + + Stencil { Ref %stencilID% Comp Always Pass Replace } + + HLSLPROGRAM + %pragma_target% + %pragma_renderers% + + #pragma multi_compile_instancing + #pragma instancing_options renderinglayer + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + + #define _SURFACE_TYPE_TRANSPARENT 1 + #define SHADERPASS_FORWARD + //#define _FLOWMAP 1 + %defines% + + // Material Keywords + #pragma shader_feature_local _NORMALMAP + #pragma shader_feature_local _WAVES + #pragma shader_feature_local _RECEIVE_SHADOWS_OFF + #pragma shader_feature_local _RIVER + #pragma shader_feature_local _REFRACTION + #pragma shader_feature_local_fragment _DISABLE_DEPTH_TEX + #pragma shader_feature_local_fragment _ADVANCED_SHADING + #pragma shader_feature_local_fragment _UNLIT + #pragma shader_feature_local_fragment _CAUSTICS + #pragma shader_feature_local_fragment _DISTANCE_NORMALS + #pragma shader_feature_local_fragment _SURFACE_FOAM_SINGLE + #pragma shader_feature_local_fragment _SURFACE_FOAM_DUAL + #pragma shader_feature_local_fragment _TRANSLUCENCY + #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF + #pragma shader_feature_local_fragment _ENVIRONMENTREFLECTIONS_OFF + #pragma shader_feature_local_fragment _INTERSECTION_FOAM + #pragma shader_feature_local_fragment _FLAT_SHADING + + //Multi-compile variants for installed extensions + %multi_compile underwater rendering% + %multi_compile dynamic effects% + + #if UNDERWATER_ENABLED && _RIVER + #define UNDERWATER_ENABLED 0 + #endif + + #include_library "Libraries/URP.hlsl" + //#include "Assets/Amazing Assets/Curved World/Shaders/Core/CurvedWorldTransform.cginc" + + #if _SURFACE_FOAM_SINGLE || _SURFACE_FOAM_DUAL + #define _SURFACE_FOAM 1 + #endif + + //Tying specific features and operations to advanced shading + #if _ADVANCED_SHADING + #define RESAMPLE_REFRACTION_DEPTH 1 + #define PHYSICAL_REFRACTION 1 + #if _CAUSTICS + #define RECONSTRUCT_WORLD_NORMAL + #endif + //#define HQ_CAUSTICS 1 + + #if _REFRACTION //Requires opaque texture + #define COLOR_ABSORPTION 1 + #endif + + //Mask caustics by shadows cast on scene geometry. Doubles the shadow sampling cost + //Note: needs depth texture to reconstruct the world position from depth + #if _CAUSTICS && defined(MAIN_LIGHT_CALCULATE_SHADOWS) && !_DISABLE_DEPTH_TEX + #define SCENE_SHADOWMASK 1 + #endif + + #if !_DISABLE_DEPTH_TEX && _CAUSTICS || UNDERWATER_ENABLED + //Compose a mask for pixels against the skybox + #define DEPTH_MASK 1 + #endif + #endif + + #if _NORMALMAP || _WAVES + #define REQUIRES_TANGENT_TO_WORLD 1 + #endif + + //Universal Pipeline keywords + %multi_compile_light_cookies% + + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN + #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS + #pragma multi_compile_fragment _ _SHADOWS_SOFT + #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS //URP 11+ + + //URP 12+ only (2021.2+) + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING + #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION + #pragma multi_compile_fragment _ DEBUG_DISPLAY + #pragma multi_compile _ _LIGHT_LAYERS + + //Unity 6.0 + #if (UNITY_VERSION >= 60000023) && (UNITY_VERSION < 60010000) + #pragma multi_compile _ _CLUSTERED_RENDERING + #pragma multi_compile _ _FORWARD_PLUS + #endif + + //Unity 6.1+ + #if (UNITY_VERSION >= 60010000) + #pragma multi_compile _ _CLUSTER_LIGHT_LOOP + #pragma multi_compile_fragment _ _REFLECTION_PROBE_ATLAS + #endif + + //URP 15+ (2023.1+) + #pragma multi_compile _ EVALUATE_SH_MIXED EVALUATE_SH_VERTEX + + //Unity defined keywords + #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING + #pragma multi_compile _ SHADOWS_SHADOWMASK + #pragma multi_compile _ DIRLIGHTMAP_COMBINED + #pragma multi_compile _ LIGHTMAP_ON + #pragma multi_compile _ DYNAMICLIGHTMAP_ON + +#if (UNITY_VERSION >= 60010000) + #pragma multi_compile_fragment _ LIGHTMAP_BICUBIC_SAMPLING + #pragma multi_compile _ USE_LEGACY_LIGHTMAPS +#endif + + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" + + %tessellation_directives% + + #include_library "Libraries/Input.hlsl" + #include_library "Libraries/Common.hlsl" + + //Fog rendering (integration) + %define_fog_integration% + %include_fog_integration_library% + + #include_library "Libraries/Fog.hlsl" + #include_library "Libraries/Terrain.hlsl" + + #include_library "Libraries/Waves.hlsl" + //Not needed, but registers it as a dependency + #include_library "Libraries/Gerstner.hlsl" + #include_library "Libraries/Lighting.hlsl" + #include_library "Libraries/Reflections.hlsl" + #include_library "Libraries/Refraction.hlsl" + + #ifdef DYNAMIC_EFFECTS_ENABLED + #include_library "DynamicEffects/DynamicEffects.hlsl" + #endif + + #ifdef UNDERWATER_ENABLED + #include_library "Underwater/UnderwaterFog.hlsl" + #include_library "Underwater/UnderwaterShading.hlsl" + #include_library "Underwater/UnderwaterMask.hlsl" + #include_library "Underwater/UnderwaterLighting.hlsl" + #endif + + #include_library "Libraries/Normals.hlsl" + #include_library "Libraries/Foam.hlsl" + #include_library "Libraries/Caustics.hlsl" + + #include_library "Libraries/Vertex.hlsl" + + #if defined(TESSELLATION_ON) + #include_library "Libraries/Tesselation.hlsl" + #define VertexOutput VertexControl + #else + #define VertexOutput Varyings + #endif + + #pragma vertex Vertex + VertexOutput Vertex(Attributes v) + { + #if defined(TESSELLATION_ON) + return VertexTessellation(v); + #else + return LitPassVertex(v); + #endif + } + + #pragma fragment ForwardPassFragment + #include_library "Passes/ForwardPass.hlsl" + + //#include "UnityCG.cginc" //Test + #if defined(UNITY_SHADER_VARIABLES_INCLUDED) || defined(UNITY_CG_INCLUDED) + #error "Fatal error: a shader library from the Built-in Render Pipeline was compiled into the shader. This is most likely caused by the fog integration, make absolutely sure it is URP-compatible!" + #endif + + ENDHLSL + } + + //Currently not used, but may be used by custom transparency-depth passes + Pass + { + Name "Depth" + Tags { "LightMode" = "DepthOnly" } + + ZWrite On + //ColorMask R + Cull Off + + HLSLPROGRAM + %pragma_target% + %pragma_renderers% + + #pragma multi_compile_instancing + #pragma instancing_options renderinglayer + + #include_library "Libraries/URP.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + //#include "Assets/Amazing Assets/Curved World/Shaders/Core/CurvedWorldTransform.cginc" + + #pragma shader_feature_local _WAVES + + #define SHADERPASS_DEPTHONLY + + #include_library "Libraries/Input.hlsl" + #include_library "Libraries/Common.hlsl" + #include_library "Libraries/Waves.hlsl" + + %multi_compile dynamic effects% + #ifdef DYNAMIC_EFFECTS_ENABLED + #include_library "DynamicEffects/DynamicEffects.hlsl" + #endif + + #include_library "Passes/HeightPrePass.hlsl" + + #pragma vertex HeightPassVertex + + #pragma fragment DepthOnlyFragment + float4 DepthOnlyFragment(HeightPassVaryings input) : SV_TARGET + { + UNITY_SETUP_INSTANCE_ID(input); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + return float4(input.positionCS.z, 0, 0, 1); + } + ENDHLSL + } + + Pass + { + Name "Height" + Tags { "LightMode" = "WaterHeight" } + + ZWrite On + //ColorMask RG + Cull Off + + HLSLPROGRAM + %pragma_target% + %pragma_renderers% + + #pragma multi_compile_instancing + #pragma instancing_options renderinglayer + + #include_library "Libraries/URP.hlsl" + #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" + //#include "Assets/Amazing Assets/Curved World/Shaders/Core/CurvedWorldTransform.cginc" + + #pragma shader_feature_local _WAVES + %multi_compile dynamic effects% + #pragma multi_compile _ WATER_HEIGHT_PASS + + //If set, the displacement effects are not calculated in the vertex shader, which would be a waste. + #define SHADERPASS_HEIGHT + + #include_library "Libraries/Input.hlsl" + #include_library "Libraries/Common.hlsl" + #include_library "Libraries/Waves.hlsl" + #ifdef DYNAMIC_EFFECTS_ENABLED + #include_library "DynamicEffects/DynamicEffects.hlsl" + #endif + + #pragma vertex HeightPassVertex + #pragma fragment HeightFragment + + #include_library "Passes/HeightPrePass.hlsl" + ENDHLSL + } + + %passes% + } + + CustomEditor "StylizedWater3.MaterialUI" + Fallback "Hidden/Universal Render Pipeline/FallbackError" +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/StylizedWater3_Standard.watershader3.meta b/Assets/External/Stylized Water 3/Shaders/StylizedWater3_Standard.watershader3.meta new file mode 100644 index 00000000..1cdc459e --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/StylizedWater3_Standard.watershader3.meta @@ -0,0 +1,80 @@ +fileFormatVersion: 2 +guid: 823f6b206953b674a9a64f9e3ec57752 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: fb104378e2fbf2942ae8b66abb7a1d57, type: 3} + template: {instanceID: 0} + settings: + shaderName: Standard + hidden: 0 + type: 0 + autoIntegration: 1 + fogIntegration: 1 + lightCookies: 0 + additionalLightCaustics: 1 + additionalLightTranslucency: 1 + singleCausticsLayer: 0 + customIncludeDirectives: + - enabled: 1 + type: 0 + value: float _MyParameter; + - enabled: 0 + type: 4 + value: QUAD_NORMAL_SAMPLES + - enabled: 0 + type: 4 + value: PIXELIZE_UV + - enabled: 0 + type: 4 + value: INTERSECTION_REFRACTION + additionalPasses: [] + dependencies: + - Packages/com.staggartcreations.stylizedwater3/Shaders/Passes/Underwater/UnderwaterMaskPass.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/URP.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Input.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Common.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Fog.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Terrain.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Waves.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Gerstner.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Lighting.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Reflections.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Refraction.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/DynamicEffects/DynamicEffects.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Underwater/UnderwaterFog.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Underwater/UnderwaterShading.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Underwater/UnderwaterMask.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Underwater/UnderwaterLighting.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Normals.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Foam.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Caustics.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Vertex.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Libraries/Tesselation.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Passes/ForwardPass.hlsl + - Packages/com.staggartcreations.stylizedwater3/Shaders/Passes/HeightPrePass.hlsl + configurationState: + underwaterRendering: 1 + dynamicEffects: 1 + fogIntegration: + name: Default Unity + asset: 1 + libraryGUID: + url: + underwaterCompatible: 1 + thumbnailBytes: + thumbnail: {fileID: 7123690520299862052, guid: 0000000000000000d000000000000000, + type: 0} + installed: 1 + includeWithPragmas: 1 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/StylizedWater3_Standard.watershader3 + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/SubGraphs.meta b/Assets/External/Stylized Water 3/Shaders/SubGraphs.meta new file mode 100644 index 00000000..d4f169a1 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/SubGraphs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a97b5835e4f7ca742ad395297b5c3219 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/Shaders/SubGraphs/Align Transform To Water.shadersubgraph b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Align Transform To Water.shadersubgraph new file mode 100644 index 00000000..b260d1b2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Align Transform To Water.shadersubgraph @@ -0,0 +1,2104 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "0f7e37a8e28248bca9b5eed78253d7e8", + "m_Properties": [ + { + "m_Id": "1fb250b65b7b4d2ca9ae23c9f266bd1c" + }, + { + "m_Id": "3564812e64d747eebce1769f9cb17274" + }, + { + "m_Id": "9b548371dd3c44998f8ed95bac395fa1" + }, + { + "m_Id": "e31c650d511e41ffa3de12abe349ed72" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "52b8e1390c154e57bd6689349fe48e5b" + } + ], + "m_Nodes": [ + { + "m_Id": "3f55fba3eecf4a4ca6301eb6bd504cdf" + }, + { + "m_Id": "e923308a3f9f4a28addddbe37f5c2f49" + }, + { + "m_Id": "bd9f152cac1a4f99971ac09edb2406d5" + }, + { + "m_Id": "323bd0ded92947fc8c5aac5b4ab4d306" + }, + { + "m_Id": "ccff41379c35435191c2ed3f151c9955" + }, + { + "m_Id": "99af003270f54eefa6cea817d61685c4" + }, + { + "m_Id": "dff84637b1f94712a5b28b316fac3031" + }, + { + "m_Id": "3f86e1b1c79241a8bd7390fc71e5bedf" + }, + { + "m_Id": "a4a3203a33594db58414f0b67d710d22" + }, + { + "m_Id": "ad8d373064e840fab7b8a36d5248ac9c" + }, + { + "m_Id": "b8900fdef68741fb87cda1c35c56c1e5" + }, + { + "m_Id": "d32f90fb4911403b9c5db4c732a7b741" + }, + { + "m_Id": "0c4b92bf33a341caa66aed81d78fe9b9" + }, + { + "m_Id": "88c38ad31c5f402a98ac93acfb9b31fc" + }, + { + "m_Id": "deca51bb0c5a44979ebfe15e6f103119" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [ + { + "m_Id": "e6c965ef42d84379bc14c96a2eb5b743" + } + ], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0c4b92bf33a341caa66aed81d78fe9b9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a4a3203a33594db58414f0b67d710d22" + }, + "m_SlotId": 651644720 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "323bd0ded92947fc8c5aac5b4ab4d306" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e923308a3f9f4a28addddbe37f5c2f49" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3f86e1b1c79241a8bd7390fc71e5bedf" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3f55fba3eecf4a4ca6301eb6bd504cdf" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "88c38ad31c5f402a98ac93acfb9b31fc" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dff84637b1f94712a5b28b316fac3031" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "99af003270f54eefa6cea817d61685c4" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ccff41379c35435191c2ed3f151c9955" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a4a3203a33594db58414f0b67d710d22" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e923308a3f9f4a28addddbe37f5c2f49" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ad8d373064e840fab7b8a36d5248ac9c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a4a3203a33594db58414f0b67d710d22" + }, + "m_SlotId": 598110702 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ad8d373064e840fab7b8a36d5248ac9c" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b8900fdef68741fb87cda1c35c56c1e5" + }, + "m_SlotId": -729708967 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b8900fdef68741fb87cda1c35c56c1e5" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "99af003270f54eefa6cea817d61685c4" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bd9f152cac1a4f99971ac09edb2406d5" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "323bd0ded92947fc8c5aac5b4ab4d306" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bd9f152cac1a4f99971ac09edb2406d5" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ccff41379c35435191c2ed3f151c9955" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "bd9f152cac1a4f99971ac09edb2406d5" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "323bd0ded92947fc8c5aac5b4ab4d306" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ccff41379c35435191c2ed3f151c9955" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dff84637b1f94712a5b28b316fac3031" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "d32f90fb4911403b9c5db4c732a7b741" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "99af003270f54eefa6cea817d61685c4" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "deca51bb0c5a44979ebfe15e6f103119" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "bd9f152cac1a4f99971ac09edb2406d5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dff84637b1f94712a5b28b316fac3031" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "323bd0ded92947fc8c5aac5b4ab4d306" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e923308a3f9f4a28addddbe37f5c2f49" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3f86e1b1c79241a8bd7390fc71e5bedf" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Sub Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "3f55fba3eecf4a4ca6301eb6bd504cdf" + }, + "m_SubDatas": [], + "m_ActiveTargets": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0aaee7fec20e4e64818042fce915d790", + "m_Id": 1, + "m_DisplayName": "G", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "0c4b92bf33a341caa66aed81d78fe9b9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -189.0000457763672, + "y": -67.00000762939453, + "width": 167.0, + "height": 33.999996185302737 + } + }, + "m_Slots": [ + { + "m_Id": "5f0a286ae7bf42b697defab653dda512" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "3564812e64d747eebce1769f9cb17274" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "1164b8ae2dca4e188199e2a32a02ca9f", + "m_Id": 4, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "117bf5d665c04207b20841c66d482ca1", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "13e30b6887a54026a7356726c5d30635", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "154cd93ee71840cabf88690f165bf49f", + "m_Id": 598110702, + "m_DisplayName": "World Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_World_Position", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "1acd7782a76e4bc890e12487eac34ed6", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "1c71eac7528548de9e2f24fa395b0434", + "m_Id": 5, + "m_DisplayName": "RGB", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGB", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1c762bade2c4404c88c0e2b0e1025de1", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1cc5f7d25de74cbd8a15eb26d2f16079", + "m_Id": 3, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "1d7300280b7246639ae6eb10523ea71c", + "m_Id": 6, + "m_DisplayName": "RG", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RG", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1d85329fea8d4ee1901f762b91be3f93", + "m_Id": 3, + "m_DisplayName": "Summed", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Summed", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "1fb250b65b7b4d2ca9ae23c9f266bd1c", + "m_Guid": { + "m_GuidSerialized": "2efc620a-86d0-4774-a012-7dbc5142033d" + }, + "m_Name": "Positioning Strength", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Positioning Strength", + "m_DefaultReferenceName": "_Positioning_Strength", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "20ef1d8aac3a4daebf228841082c8ac8", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "22e81482796c4757b941971fe238a455", + "m_Id": 2, + "m_DisplayName": "Displacement", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Displacement", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "23f4fb9cdee94027bda68721ada934bb", + "m_Id": 1, + "m_DisplayName": "Object_Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Object_Position", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "24a26207958b426b992c861b88e80757", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2a31636bdac1448785bb899923df48f5", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2c3a961778b0422aa397aac751596c3b", + "m_Id": 651644720, + "m_DisplayName": "Strength", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_Strength", + "m_StageCapability": 3, + "m_Value": 1.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "2cc1c108ef0243eb934868d8bf9bafdd", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CombineNode", + "m_ObjectId": "323bd0ded92947fc8c5aac5b4ab4d306", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Combine", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -188.9999542236328, + "y": 76.00000762939453, + "width": 140.00003051757813, + "height": 166.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "a3acc2a0c33b434da4479effa1e48c3b" + }, + { + "m_Id": "0aaee7fec20e4e64818042fce915d790" + }, + { + "m_Id": "8dc7fb1e724748c5be854901d069ede7" + }, + { + "m_Id": "1cc5f7d25de74cbd8a15eb26d2f16079" + }, + { + "m_Id": "1164b8ae2dca4e188199e2a32a02ca9f" + }, + { + "m_Id": "1c71eac7528548de9e2f24fa395b0434" + }, + { + "m_Id": "1d7300280b7246639ae6eb10523ea71c" + } + ], + "synonyms": [ + "append" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "3348722ef941456b9e41ba985e78f9cb", + "m_Id": 2, + "m_DisplayName": "inputPosition", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "inputPosition", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "33838db2f7244e2f8ae1a8137c03c403", + "m_Id": 1, + "m_DisplayName": "Scale", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Scale", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "3564812e64d747eebce1769f9cb17274", + "m_Guid": { + "m_GuidSerialized": "73fc781b-e8b3-4173-b8dc-b9f9a589c920" + }, + "m_Name": "Rotation Strength", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Rotation Strength", + "m_DefaultReferenceName": "_Rotation_Strength", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.10000000149011612, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", + "m_ObjectId": "3f55fba3eecf4a4ca6301eb6bd504cdf", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Output", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 878.0001220703125, + "y": -24.999990463256837, + "width": 135.99993896484376, + "height": 76.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "23f4fb9cdee94027bda68721ada934bb" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "IsFirstSlotValid": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "3f825b90a9414d5c962fee72bfa001e3", + "m_Id": 3, + "m_DisplayName": "World Bounds Max", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "World Bounds Max", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.TransformNode", + "m_ObjectId": "3f86e1b1c79241a8bd7390fc71e5bedf", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Transform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 623.0, + "y": -26.00000762939453, + "width": 213.0001220703125, + "height": 157.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "6fc6425e542a4901913a1d71d493275a" + }, + { + "m_Id": "5a67b87d498e4f5fb88ea78c41912bd6" + } + ], + "synonyms": [ + "world", + "tangent", + "object", + "view", + "screen", + "convert" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Conversion": { + "from": 2, + "to": 0 + }, + "m_ConversionType": 0, + "m_Normalize": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "43c200b18224470183685f49b6badff9", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "45fa98c6314d48afa79065ce8ceee132", + "m_Id": 0, + "m_DisplayName": "World Position", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "52b8e1390c154e57bd6689349fe48e5b", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "e31c650d511e41ffa3de12abe349ed72" + }, + { + "m_Id": "1fb250b65b7b4d2ca9ae23c9f266bd1c" + }, + { + "m_Id": "3564812e64d747eebce1769f9cb17274" + }, + { + "m_Id": "9b548371dd3c44998f8ed95bac395fa1" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "5a67b87d498e4f5fb88ea78c41912bd6", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5f0a286ae7bf42b697defab653dda512", + "m_Id": 0, + "m_DisplayName": "Rotation Strength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "5f96b4b6e7b3420fae93d70051cddc2d", + "m_Id": 3, + "m_DisplayName": "outputPosition", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "outputPosition", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6ee9ce1eb7df403d865d61d534304dfc", + "m_Id": 1, + "m_DisplayName": "Geometry_Height", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Geometry_Height", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "6fc6425e542a4901913a1d71d493275a", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "73012777189943909a8882ae5397a82f", + "m_Id": -729708967, + "m_DisplayName": "World Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_World_Position", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "78a3ec787d7b4dcab751a61e01b161fd", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "88c38ad31c5f402a98ac93acfb9b31fc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -608.0001220703125, + "y": -17.00002670288086, + "width": 145.00003051757813, + "height": 34.000038146972659 + } + }, + "m_Slots": [ + { + "m_Id": "8fb6441fee774e84a122454c32960a97" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "9b548371dd3c44998f8ed95bac395fa1" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8dc7fb1e724748c5be854901d069ede7", + "m_Id": 2, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8fb6441fee774e84a122454c32960a97", + "m_Id": 0, + "m_DisplayName": "Height Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "9104c4fac73b446a8a5dbd32720dbd19", + "m_Id": 1, + "m_DisplayName": "World_Normal", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "World_Normal", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "96544f3e76cc4347af95a060ef785735", + "m_Id": 2, + "m_DisplayName": "World Bounds Min", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "World Bounds Min", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "99af003270f54eefa6cea817d61685c4", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -939.9998779296875, + "y": -58.99998474121094, + "width": 125.99993896484375, + "height": 117.99995422363281 + } + }, + "m_Slots": [ + { + "m_Id": "a916bbcbf90a40558b3e238ca8347bea" + }, + { + "m_Id": "1acd7782a76e4bc890e12487eac34ed6" + }, + { + "m_Id": "20ef1d8aac3a4daebf228841082c8ac8" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "9b548371dd3c44998f8ed95bac395fa1", + "m_Guid": { + "m_GuidSerialized": "3581aa48-5cd4-4257-ac48-40861ea942b8" + }, + "m_Name": "Height Offset", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Height Offset", + "m_DefaultReferenceName": "_Height_Offset", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a3acc2a0c33b434da4479effa1e48c3b", + "m_Id": 0, + "m_DisplayName": "R", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "a4a3203a33594db58414f0b67d710d22", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Water Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 25.99998664855957, + "y": -186.00003051757813, + "width": 251.0000457763672, + "height": 119.00000762939453 + } + }, + "m_Slots": [ + { + "m_Id": "154cd93ee71840cabf88690f165bf49f" + }, + { + "m_Id": "2c3a961778b0422aa397aac751596c3b" + }, + { + "m_Id": "9104c4fac73b446a8a5dbd32720dbd19" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"337b2beec8b3090478e4826787999253\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "5af9a8ae-055b-47f9-a79c-a71dbc400123", + "a2a6a878-916d-42ca-9ca4-cec3b9d27505" + ], + "m_PropertyIds": [ + 598110702, + 651644720 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a916bbcbf90a40558b3e238ca8347bea", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ObjectNode", + "m_ObjectId": "ad8d373064e840fab7b8a36d5248ac9c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Object", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1483.0, + "y": -173.0000457763672, + "width": 153.0, + "height": 173.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "43c200b18224470183685f49b6badff9" + }, + { + "m_Id": "33838db2f7244e2f8ae1a8137c03c403" + }, + { + "m_Id": "96544f3e76cc4347af95a060ef785735" + }, + { + "m_Id": "3f825b90a9414d5c962fee72bfa001e3" + }, + { + "m_Id": "e854702cb48541e1a82f72c2d0d06abc" + } + ], + "synonyms": [ + "position", + "scale" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "b8900fdef68741fb87cda1c35c56c1e5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Water Height", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1278.0001220703125, + "y": -84.0, + "width": 267.00006103515627, + "height": 142.99998474121095 + } + }, + "m_Slots": [ + { + "m_Id": "73012777189943909a8882ae5397a82f" + }, + { + "m_Id": "6ee9ce1eb7df403d865d61d534304dfc" + }, + { + "m_Id": "22e81482796c4757b941971fe238a455" + }, + { + "m_Id": "1d85329fea8d4ee1901f762b91be3f93" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"317aa34f54c227b40ac3b256efd70af2\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "9edc1bf0-53e0-4109-84bc-f54bcd72a140" + ], + "m_PropertyIds": [ + -729708967 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b9448884468d4267845f92692b0491e5", + "m_Id": 0, + "m_DisplayName": "Positioning Strength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "bd9f152cac1a4f99971ac09edb2406d5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1101.9998779296875, + "y": 92.99999237060547, + "width": 120.0, + "height": 149.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "2cc1c108ef0243eb934868d8bf9bafdd" + }, + { + "m_Id": "dc1dafeb6d264f77bdc8649b99cd67d2" + }, + { + "m_Id": "1c762bade2c4404c88c0e2b0e1025de1" + }, + { + "m_Id": "d99d002229fb4f8ca3f34e39c77b3b00" + }, + { + "m_Id": "117bf5d665c04207b20841c66d482ca1" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "ccff41379c35435191c2ed3f151c9955", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -744.9998779296875, + "y": -25.00002098083496, + "width": 126.0, + "height": 118.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "78a3ec787d7b4dcab751a61e01b161fd" + }, + { + "m_Id": "d196fba848fa49f5877be5d09a463420" + }, + { + "m_Id": "d08ec6cdab574380b6c4ea45ea8337d3" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d08ec6cdab574380b6c4ea45ea8337d3", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "d196fba848fa49f5877be5d09a463420", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "d32f90fb4911403b9c5db4c732a7b741", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1192.0, + "y": -158.00001525878907, + "width": 181.0, + "height": 33.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "b9448884468d4267845f92692b0491e5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "1fb250b65b7b4d2ca9ae23c9f266bd1c" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d99d002229fb4f8ca3f34e39c77b3b00", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "dc1dafeb6d264f77bdc8649b99cd67d2", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "deca51bb0c5a44979ebfe15e6f103119", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1483.0001220703125, + "y": 134.0000457763672, + "width": 152.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "45fa98c6314d48afa79065ce8ceee132" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "e31c650d511e41ffa3de12abe349ed72" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "dff84637b1f94712a5b28b316fac3031", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -433.9998779296875, + "y": -32.99999237060547, + "width": 125.99993896484375, + "height": 117.99995422363281 + } + }, + "m_Slots": [ + { + "m_Id": "24a26207958b426b992c861b88e80757" + }, + { + "m_Id": "13e30b6887a54026a7356726c5d30635" + }, + { + "m_Id": "2a31636bdac1448785bb899923df48f5" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector3ShaderProperty", + "m_ObjectId": "e31c650d511e41ffa3de12abe349ed72", + "m_Guid": { + "m_GuidSerialized": "e86771c7-cda1-4b3b-a36a-dab1bbd84687" + }, + "m_Name": "World Position", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "World Position", + "m_DefaultReferenceName": "_World_Position", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "e6c965ef42d84379bc14c96a2eb5b743", + "m_Title": "For this to work, the Stylized Water 3 render feature must be active on the current renderer. And the \"Height Prepass\" option must be enabled.", + "m_Content": "", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -698.0, + "y": -359.0, + "width": 525.0, + "height": 105.0 + }, + "m_Group": { + "m_Id": "" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "e854702cb48541e1a82f72c2d0d06abc", + "m_Id": 4, + "m_DisplayName": "Bounds Size", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Bounds Size", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "e923308a3f9f4a28addddbe37f5c2f49", + "m_Group": { + "m_Id": "" + }, + "m_Name": "RotateToNormal (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 321.9999084472656, + "y": -33.0000114440918, + "width": 247.00009155273438, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "fea6f4ab749e4eb6af488b18b3bd6bbf" + }, + { + "m_Id": "3348722ef941456b9e41ba985e78f9cb" + }, + { + "m_Id": "5f96b4b6e7b3420fae93d70051cddc2d" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 1, + "m_FunctionName": "RotateToNormal", + "m_FunctionSource": "", + "m_FunctionBody": "float3x3 transformMatrix = float3x3(float3(1,0,0), up, float3(0,0,1));\n\noutputPosition = mul(inputPosition.xyz, transformMatrix);" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "fea6f4ab749e4eb6af488b18b3bd6bbf", + "m_Id": 0, + "m_DisplayName": "up", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "up", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + diff --git a/Assets/External/Stylized Water 3/Shaders/SubGraphs/Align Transform To Water.shadersubgraph.meta b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Align Transform To Water.shadersubgraph.meta new file mode 100644 index 00000000..72a19ac0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Align Transform To Water.shadersubgraph.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: e59939267e932d743a974e7016b7a3fd +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 60072b568d64c40a485e0fc55012dc9f, type: 3} +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/SubGraphs/Align Transform To + Water.shadersubgraph + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/SubGraphs/Readme.txt b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Readme.txt new file mode 100644 index 00000000..90d176f0 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Readme.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b85cb18c4552634a1d0c5b622a4c4b487df16bc2860fc8f52ea03907ed774150 +size 342 diff --git a/Assets/External/Stylized Water 3/Shaders/SubGraphs/Readme.txt.meta b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Readme.txt.meta new file mode 100644 index 00000000..7f8b86ac --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Readme.txt.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 7eca78e4fea00134695bf1c79a52d086 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/SubGraphs/Readme.txt + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Height.shadersubgraph b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Height.shadersubgraph new file mode 100644 index 00000000..2d36e854 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Height.shadersubgraph @@ -0,0 +1,571 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "76d35e7e619d42e2aaafebc8ef6f3093", + "m_Properties": [ + { + "m_Id": "26abb75110b74b5788e84f3884bb5b9b" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "180fc64b34054e409bb3cb076f3c929a" + } + ], + "m_Nodes": [ + { + "m_Id": "480dd4e30e674d20adf554f043aec179" + }, + { + "m_Id": "e31739b3fc354a59b9d0f62f82928767" + }, + { + "m_Id": "5169eb9d62a84eaf9cb37762b34fdaba" + }, + { + "m_Id": "946f01d678804a5596f01f9296b62387" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [ + { + "m_Id": "22fe41e0edba44469681ff48f924d5b7" + } + ], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5169eb9d62a84eaf9cb37762b34fdaba" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e31739b3fc354a59b9d0f62f82928767" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "946f01d678804a5596f01f9296b62387" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "480dd4e30e674d20adf554f043aec179" + }, + "m_SlotId": 3 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e31739b3fc354a59b9d0f62f82928767" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "480dd4e30e674d20adf554f043aec179" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e31739b3fc354a59b9d0f62f82928767" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "946f01d678804a5596f01f9296b62387" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e31739b3fc354a59b9d0f62f82928767" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "480dd4e30e674d20adf554f043aec179" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e31739b3fc354a59b9d0f62f82928767" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "946f01d678804a5596f01f9296b62387" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Sub Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "480dd4e30e674d20adf554f043aec179" + }, + "m_SubDatas": [], + "m_ActiveTargets": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "180fc64b34054e409bb3cb076f3c929a", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "26abb75110b74b5788e84f3884bb5b9b" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1b94de1aea0c4ead8bd56879877ecce6", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "22fe41e0edba44469681ff48f924d5b7", + "m_Title": "Usage note", + "m_Content": "For this to return any data the Stylized Water 3 render feature must be active on the current renderer.\n\nAnd the \"Height Prepass\" option must be enabled.", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -586.0, + "y": -275.0, + "width": 259.0, + "height": 135.0 + }, + "m_Group": { + "m_Id": "" + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector3ShaderProperty", + "m_ObjectId": "26abb75110b74b5788e84f3884bb5b9b", + "m_Guid": { + "m_GuidSerialized": "9edc1bf0-53e0-4109-84bc-f54bcd72a140" + }, + "m_Name": "World Position", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "World Position", + "m_DefaultReferenceName": "_World_Position", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "458cb2d5e1f04648898ab1a5b122e5a1", + "m_Id": 2, + "m_DisplayName": "displacement", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "displacement", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", + "m_ObjectId": "480dd4e30e674d20adf554f043aec179", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Output", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 4.0, + "y": -133.0, + "width": 144.0, + "height": 125.0 + } + }, + "m_Slots": [ + { + "m_Id": "f33f512079204c0e89eba50545cd41c8" + }, + { + "m_Id": "8a0e06128f264a14abacd34b1936548a" + }, + { + "m_Id": "e291f092c863417da659d700154c2ddd" + } + ], + "synonyms": [], + "m_Precision": 1, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "IsFirstSlotValid": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "5169eb9d62a84eaf9cb37762b34fdaba", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -755.0, + "y": -90.0, + "width": 152.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "7031ac0f15d6433193753c90272138f5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "26abb75110b74b5788e84f3884bb5b9b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "52641796acf649749df15cc33341ec7b", + "m_Id": 1, + "m_DisplayName": "geometryHeight", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "geometryHeight", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "629abe611e774e0eb2976fd11a4867b2", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "635824bf074747859de54a01319623c7", + "m_Id": 0, + "m_DisplayName": "positionWS", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "positionWS", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "7031ac0f15d6433193753c90272138f5", + "m_Id": 0, + "m_DisplayName": "World Position", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8a0e06128f264a14abacd34b1936548a", + "m_Id": 2, + "m_DisplayName": "Displacement", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Displacement", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "946f01d678804a5596f01f9296b62387", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -246.0, + "y": -39.0, + "width": 126.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "adebfeeb94f042ddb7f9122331284c75" + }, + { + "m_Id": "629abe611e774e0eb2976fd11a4867b2" + }, + { + "m_Id": "1b94de1aea0c4ead8bd56879877ecce6" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "adebfeeb94f042ddb7f9122331284c75", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e291f092c863417da659d700154c2ddd", + "m_Id": 3, + "m_DisplayName": "Summed", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Summed", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "e31739b3fc354a59b9d0f62f82928767", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SampleWaterHeight (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -591.0, + "y": -133.0, + "width": 267.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "635824bf074747859de54a01319623c7" + }, + { + "m_Id": "52641796acf649749df15cc33341ec7b" + }, + { + "m_Id": "458cb2d5e1f04648898ab1a5b122e5a1" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 1, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 0, + "m_FunctionName": "SampleWaterHeight", + "m_FunctionSource": "4453c99908d0997428446580ee1d8bd0", + "m_FunctionBody": "Enter function body here..." +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f33f512079204c0e89eba50545cd41c8", + "m_Id": 1, + "m_DisplayName": "Geometry_Height", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Geometry_Height", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + diff --git a/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Height.shadersubgraph.meta b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Height.shadersubgraph.meta new file mode 100644 index 00000000..c27b1859 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Height.shadersubgraph.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: 317aa34f54c227b40ac3b256efd70af2 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 60072b568d64c40a485e0fc55012dc9f, type: 3} +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Height.shadersubgraph + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Normal.shadersubgraph b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Normal.shadersubgraph new file mode 100644 index 00000000..d28d88a2 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Normal.shadersubgraph @@ -0,0 +1,479 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "79baefe926db4bdc95dde0e7bf153a5b", + "m_Properties": [ + { + "m_Id": "b56c3cd5bf51474d9ebd66c89c3a60f8" + }, + { + "m_Id": "67545535255d46e8a37e112032509ece" + } + ], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "1a9dbd658f2c465b950b1b7b3c81539c" + } + ], + "m_Nodes": [ + { + "m_Id": "20a5f56d8cb646e98711c9e99cadc079" + }, + { + "m_Id": "18caaddd35ec4ba4bec4325869d0f7d1" + }, + { + "m_Id": "74cf7b5db3e3470bba20ca095571ccfc" + }, + { + "m_Id": "7070b49bd03047769d69ac806a7917ca" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [ + { + "m_Id": "1cd229b21f8e487eaf805ae82d43b9da" + } + ], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "18caaddd35ec4ba4bec4325869d0f7d1" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "20a5f56d8cb646e98711c9e99cadc079" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7070b49bd03047769d69ac806a7917ca" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "18caaddd35ec4ba4bec4325869d0f7d1" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "74cf7b5db3e3470bba20ca095571ccfc" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "18caaddd35ec4ba4bec4325869d0f7d1" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Sub Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "20a5f56d8cb646e98711c9e99cadc079" + }, + "m_SubDatas": [], + "m_ActiveTargets": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "18caaddd35ec4ba4bec4325869d0f7d1", + "m_Group": { + "m_Id": "" + }, + "m_Name": "CalculateWaterNormal (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -136.0, + "y": -59.0, + "width": 272.0, + "height": 117.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "c7c774db45164b74b848afee176ff60d" + }, + { + "m_Id": "3f72d043072d438b9e5de0c50914cfc3" + }, + { + "m_Id": "b432dbf838594471ad8d0c364016db67" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 1, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 0, + "m_FunctionName": "CalculateWaterNormal", + "m_FunctionSource": "4453c99908d0997428446580ee1d8bd0", + "m_FunctionBody": "Enter function body here..." +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "1a9dbd658f2c465b950b1b7b3c81539c", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "b56c3cd5bf51474d9ebd66c89c3a60f8" + }, + { + "m_Id": "67545535255d46e8a37e112032509ece" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "1cd229b21f8e487eaf805ae82d43b9da", + "m_Title": "Usage note", + "m_Content": "For this to return any data the Stylized Water 3 render feature must be active on the current renderer.\n\nAnd the \"Height Prepass\" option must be enabled.", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -133.0, + "y": -198.0, + "width": 259.0, + "height": 135.0 + }, + "m_Group": { + "m_Id": "" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphOutputNode", + "m_ObjectId": "20a5f56d8cb646e98711c9e99cadc079", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Output", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 167.99998474121095, + "y": -59.0000114440918, + "width": 128.00001525878907, + "height": 77.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "aa0b8a51e019409d8299c85f65a67d1e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "IsFirstSlotValid": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "29f8d9d264394d1cb6348563ec659269", + "m_Id": 0, + "m_DisplayName": "World Position", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3f72d043072d438b9e5de0c50914cfc3", + "m_Id": 2, + "m_DisplayName": "strength", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "strength", + "m_StageCapability": 3, + "m_Value": 0.10000000149011612, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "67545535255d46e8a37e112032509ece", + "m_Guid": { + "m_GuidSerialized": "a2a6a878-916d-42ca-9ca4-cec3b9d27505" + }, + "m_Name": "Strength", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Strength", + "m_DefaultReferenceName": "_Strength", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 1.0, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7070b49bd03047769d69ac806a7917ca", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -312.0, + "y": 8.99998664855957, + "width": 121.00001525878906, + "height": 34.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "bc14f0c334c3406d9e01aeb9fdfd81d5" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "67545535255d46e8a37e112032509ece" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "74cf7b5db3e3470bba20ca095571ccfc", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -343.9999694824219, + "y": -25.000011444091798, + "width": 152.99998474121095, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "29f8d9d264394d1cb6348563ec659269" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b56c3cd5bf51474d9ebd66c89c3a60f8" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "aa0b8a51e019409d8299c85f65a67d1e", + "m_Id": 1, + "m_DisplayName": "World_Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "World_Normal", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "b432dbf838594471ad8d0c364016db67", + "m_Id": 1, + "m_DisplayName": "normal", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "normal", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector3ShaderProperty", + "m_ObjectId": "b56c3cd5bf51474d9ebd66c89c3a60f8", + "m_Guid": { + "m_GuidSerialized": "5af9a8ae-055b-47f9-a79c-a71dbc400123" + }, + "m_Name": "World Position", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "World Position", + "m_DefaultReferenceName": "_World_Position", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bc14f0c334c3406d9e01aeb9fdfd81d5", + "m_Id": 0, + "m_DisplayName": "Strength", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "c7c774db45164b74b848afee176ff60d", + "m_Id": 0, + "m_DisplayName": "positionWS", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "positionWS", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + diff --git a/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Normal.shadersubgraph.meta b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Normal.shadersubgraph.meta new file mode 100644 index 00000000..028776ee --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Normal.shadersubgraph.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: 337b2beec8b3090478e4826787999253 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 60072b568d64c40a485e0fc55012dc9f, type: 3} +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/SubGraphs/Sample Water Normal.shadersubgraph + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/Water Decal.shadergraph b/Assets/External/Stylized Water 3/Shaders/Water Decal.shadergraph new file mode 100644 index 00000000..26c60d8c --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Water Decal.shadergraph @@ -0,0 +1,5277 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "5d461a66c8d040f784b036c23d1534c1", + "m_Properties": [ + { + "m_Id": "68b6ef3a7cea4ebfa45b7ccc6a7a0e32" + }, + { + "m_Id": "fd097e8f3ab54e17aa53cc5935cdae43" + }, + { + "m_Id": "bc474473229f4b8f92439cef777bbb00" + }, + { + "m_Id": "50da5240f99d43b6bc3ee2de541c0d4e" + }, + { + "m_Id": "bde669b70a0a4d6ea6a83e98d54aa394" + }, + { + "m_Id": "db8ff583bb7543ec858f5542653d4f3b" + }, + { + "m_Id": "96d8afe651c7412094ccd98e906abdcc" + }, + { + "m_Id": "b40d979ddbf0437ea18264ffad840ec5" + }, + { + "m_Id": "3c63e959f15f484a91d31864bd1c7554" + }, + { + "m_Id": "214b85ecac1c410cb93ea2c693e9047d" + } + ], + "m_Keywords": [ + { + "m_Id": "a119db966f40414e862647de40154ffe" + } + ], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "49984079f9be493090d8fe9b96274891" + }, + { + "m_Id": "bf04b287a7cc41bca8428d5393587d61" + }, + { + "m_Id": "bba785e16399488dbc64144b0ef36e9a" + }, + { + "m_Id": "6f6011713bcd43b58f0c3d20c8fa5d21" + } + ], + "m_Nodes": [ + { + "m_Id": "45193f503e6d4a8798ede4c90862a181" + }, + { + "m_Id": "fbda41d7a2d74fd185343537aac0f24e" + }, + { + "m_Id": "c8efdaaf43644418852018debd402943" + }, + { + "m_Id": "d4384cc186ce44739fe20d6565566d98" + }, + { + "m_Id": "cc60a1d2f7844a7c8a5f409e885a7388" + }, + { + "m_Id": "faa41238004f48e7ba284f2cb82df1e0" + }, + { + "m_Id": "5400346681f44961b4f7563e14ec2e85" + }, + { + "m_Id": "0c6fb9e28a6b44259f525b0b53873298" + }, + { + "m_Id": "a88e2fcb7c774310831425b495aebcb7" + }, + { + "m_Id": "e4ffb30af22a4599a1b9266725aefe35" + }, + { + "m_Id": "5f10e86f31f44c97b7a0bd6d8d7b5b0f" + }, + { + "m_Id": "7e154bbc89ae429eaa83f9a6a2e9f129" + }, + { + "m_Id": "ead9d3a47b2f4108a1c43d883237a707" + }, + { + "m_Id": "db0817f6e92f451887059a9716b8e61e" + }, + { + "m_Id": "e8ba33e2f841480cb4823835aaa405e5" + }, + { + "m_Id": "854c965cf99843fdaa1d6fec1f79e3c7" + }, + { + "m_Id": "3cabdd4b7362458b95854450447bcdb2" + }, + { + "m_Id": "7f2aedd618384d4d859eb3b5690cccb8" + }, + { + "m_Id": "74b1bfca5adb458d8eca44fb2cf88cc3" + }, + { + "m_Id": "fa9aa94336fa48e69d1bff132e6e1b00" + }, + { + "m_Id": "9819707df6d44d67bf87cb7cc58c208f" + }, + { + "m_Id": "b29c107751a9402d84585b2232df5b41" + }, + { + "m_Id": "a827dfabc3654028babf9030904273ab" + }, + { + "m_Id": "016c9d0aebb343f49ab329e421d6ea54" + }, + { + "m_Id": "84079beb66284466b2a957e681ea8979" + }, + { + "m_Id": "1c1dbb029e294a7d941ae6a288d550f5" + }, + { + "m_Id": "95643ed6f1d340efa5579ebb8b329048" + }, + { + "m_Id": "0fb87218ff424dbdbfe85a3f00e9ed28" + }, + { + "m_Id": "a5b79380f05847ba8f2ba6f3fe0e9ea7" + }, + { + "m_Id": "21b80c97b9784cb884db1318c8000a65" + }, + { + "m_Id": "f752a06e14da4f169374ec7d7d958eb7" + }, + { + "m_Id": "f2f1f638b4b141f3a41ae6d29ec2af66" + }, + { + "m_Id": "44d3b65015064131b8f1cd52313cf2e3" + }, + { + "m_Id": "21f9ee06bc624074ab2af30d02a173c9" + }, + { + "m_Id": "57bc4fc73f62434faa44648886cfbf16" + }, + { + "m_Id": "a4df65b270dc44a08c69e1a7f03e5622" + }, + { + "m_Id": "8e5d1b5f460f4d518b6b69f0ba5c5ded" + }, + { + "m_Id": "e6f49753394b4457bf720a05e565bb5c" + }, + { + "m_Id": "c1dc7452dbf1478e82533c855fe611b7" + }, + { + "m_Id": "da9a93e5f5404feb82846dde8aa21d09" + }, + { + "m_Id": "0322e744d6a2444889f39e18bc389978" + }, + { + "m_Id": "43cabae5998647c9a22fefced5393ca9" + }, + { + "m_Id": "ef41122c61a548fcb2af6b76ad77ae40" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [ + { + "m_Id": "c01e026b63074f4684b24b1658143e9e" + }, + { + "m_Id": "61b4ace4d50a40cf805f9bc2d313ec1c" + } + ], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "016c9d0aebb343f49ab329e421d6ea54" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a4df65b270dc44a08c69e1a7f03e5622" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0322e744d6a2444889f39e18bc389978" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "43cabae5998647c9a22fefced5393ca9" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "0fb87218ff424dbdbfe85a3f00e9ed28" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "7e154bbc89ae429eaa83f9a6a2e9f129" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "1c1dbb029e294a7d941ae6a288d550f5" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "95643ed6f1d340efa5579ebb8b329048" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "21b80c97b9784cb884db1318c8000a65" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f752a06e14da4f169374ec7d7d958eb7" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "21f9ee06bc624074ab2af30d02a173c9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "57bc4fc73f62434faa44648886cfbf16" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3cabdd4b7362458b95854450447bcdb2" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e6f49753394b4457bf720a05e565bb5c" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "43cabae5998647c9a22fefced5393ca9" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5f10e86f31f44c97b7a0bd6d8d7b5b0f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "44d3b65015064131b8f1cd52313cf2e3" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f2f1f638b4b141f3a41ae6d29ec2af66" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "57bc4fc73f62434faa44648886cfbf16" + }, + "m_SlotId": 4 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a4df65b270dc44a08c69e1a7f03e5622" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "74b1bfca5adb458d8eca44fb2cf88cc3" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f2f1f638b4b141f3a41ae6d29ec2af66" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "7f2aedd618384d4d859eb3b5690cccb8" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3cabdd4b7362458b95854450447bcdb2" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "84079beb66284466b2a957e681ea8979" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5400346681f44961b4f7563e14ec2e85" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "854c965cf99843fdaa1d6fec1f79e3c7" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "74b1bfca5adb458d8eca44fb2cf88cc3" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8e5d1b5f460f4d518b6b69f0ba5c5ded" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e6f49753394b4457bf720a05e565bb5c" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "95643ed6f1d340efa5579ebb8b329048" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "cc60a1d2f7844a7c8a5f409e885a7388" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9819707df6d44d67bf87cb7cc58c208f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a827dfabc3654028babf9030904273ab" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a4df65b270dc44a08c69e1a7f03e5622" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "43cabae5998647c9a22fefced5393ca9" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a4df65b270dc44a08c69e1a7f03e5622" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "da9a93e5f5404feb82846dde8aa21d09" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a5b79380f05847ba8f2ba6f3fe0e9ea7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "faa41238004f48e7ba284f2cb82df1e0" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a827dfabc3654028babf9030904273ab" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "016c9d0aebb343f49ab329e421d6ea54" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a827dfabc3654028babf9030904273ab" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "d4384cc186ce44739fe20d6565566d98" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a827dfabc3654028babf9030904273ab" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "f752a06e14da4f169374ec7d7d958eb7" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b29c107751a9402d84585b2232df5b41" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "a827dfabc3654028babf9030904273ab" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c1dc7452dbf1478e82533c855fe611b7" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ef41122c61a548fcb2af6b76ad77ae40" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "da9a93e5f5404feb82846dde8aa21d09" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "43cabae5998647c9a22fefced5393ca9" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "db0817f6e92f451887059a9716b8e61e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e8ba33e2f841480cb4823835aaa405e5" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "db0817f6e92f451887059a9716b8e61e" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ead9d3a47b2f4108a1c43d883237a707" + }, + "m_SlotId": -729708967 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e6f49753394b4457bf720a05e565bb5c" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "854c965cf99843fdaa1d6fec1f79e3c7" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8ba33e2f841480cb4823835aaa405e5" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "854c965cf99843fdaa1d6fec1f79e3c7" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8ba33e2f841480cb4823835aaa405e5" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e6f49753394b4457bf720a05e565bb5c" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "e8ba33e2f841480cb4823835aaa405e5" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "854c965cf99843fdaa1d6fec1f79e3c7" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ead9d3a47b2f4108a1c43d883237a707" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3cabdd4b7362458b95854450447bcdb2" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ead9d3a47b2f4108a1c43d883237a707" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "8e5d1b5f460f4d518b6b69f0ba5c5ded" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ef41122c61a548fcb2af6b76ad77ae40" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "da9a93e5f5404feb82846dde8aa21d09" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f2f1f638b4b141f3a41ae6d29ec2af66" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "45193f503e6d4a8798ede4c90862a181" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f752a06e14da4f169374ec7d7d958eb7" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "e4ffb30af22a4599a1b9266725aefe35" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "fa9aa94336fa48e69d1bff132e6e1b00" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9819707df6d44d67bf87cb7cc58c208f" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 1825.0, + "y": 100.0 + }, + "m_Blocks": [ + { + "m_Id": "45193f503e6d4a8798ede4c90862a181" + }, + { + "m_Id": "fbda41d7a2d74fd185343537aac0f24e" + }, + { + "m_Id": "c8efdaaf43644418852018debd402943" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 1825.0, + "y": 364.0 + }, + "m_Blocks": [ + { + "m_Id": "d4384cc186ce44739fe20d6565566d98" + }, + { + "m_Id": "cc60a1d2f7844a7c8a5f409e885a7388" + }, + { + "m_Id": "faa41238004f48e7ba284f2cb82df1e0" + }, + { + "m_Id": "5400346681f44961b4f7563e14ec2e85" + }, + { + "m_Id": "0c6fb9e28a6b44259f525b0b53873298" + }, + { + "m_Id": "a88e2fcb7c774310831425b495aebcb7" + }, + { + "m_Id": "e4ffb30af22a4599a1b9266725aefe35" + }, + { + "m_Id": "5f10e86f31f44c97b7a0bd6d8d7b5b0f" + }, + { + "m_Id": "7e154bbc89ae429eaa83f9a6a2e9f129" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Stylized Water 3", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "06deeff427a64992b253a66b8c533994" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "00e5ae7a74d2480d88b42a267a3ef215", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "016c9d0aebb343f49ab329e421d6ea54", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 705.0, + "y": 748.0, + "width": 118.0, + "height": 149.00006103515626 + } + }, + "m_Slots": [ + { + "m_Id": "af78fc8b84f94dd6a0a838b750695476" + }, + { + "m_Id": "41c9576c9aca41dd8e78b4498f84a79a" + }, + { + "m_Id": "c80bf49b41fb43eca77bdc5f340d140b" + }, + { + "m_Id": "2e40198f5dce4f72ae6010896621f91f" + }, + { + "m_Id": "b2ebd2ca4a5a4e9a97037fb6180e29c1" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "028f97aeafef44b1980cb9f6172a09d1", + "m_Id": 4, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "02f854dc4be748698e7e94fb5f424cc0", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "AlphaClipThreshold", + "m_StageCapability": 2, + "m_Value": 0.5, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "0322e744d6a2444889f39e18bc389978", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1369.0001220703125, + "y": 824.0000610351563, + "width": 198.0001220703125, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "5b077ac74c1d40b58025122eefea35c9" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "214b85ecac1c410cb93ea2c693e9047d" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "05a694986f7c43b9af41220d8af1f283", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "0680905e3d274678b7c13be2ab92bb63", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "06c2218f94f44315a32d4981fab5c96d", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "06deeff427a64992b253a66b8c533994", + "m_Datas": [], + "m_ActiveSubTarget": { + "m_Id": "a12268e8c8414c3c851b2a667d19aab4" + }, + "m_AllowMaterialOverride": true, + "m_SurfaceType": 1, + "m_ZTestMode": 4, + "m_ZWriteControl": 2, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": false, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "09b4faa56fef4100a09786b5ebc2bd4c", + "m_Id": 2, + "m_DisplayName": "Off", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Off", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "0a9a5b96b95e49e881e64ced6877cd55", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "0c6fb9e28a6b44259f525b0b53873298", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Emission", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "35014e65f7c540a795bf07e80e049851" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Emission" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "0fb87218ff424dbdbfe85a3f00e9ed28", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1865.9998779296875, + "y": 807.9999389648438, + "width": 183.0001220703125, + "height": 34.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "308744acd1bd40fabdac49fa98954747" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "db8ff583bb7543ec858f5542653d4f3b" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "10cee13fff3740aa8f5af2af1c814e5f", + "m_Id": 5, + "m_DisplayName": "RGB", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGB", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "11ce3a9fd09a4c10bde4c8403a46e288", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "15316ff6d1cd44a884c90fb9c63dd10e", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "17fc18b47d434df48d8492e841a3af5b", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "1a2e131d6a994173aed9df4905ac3cfd", + "m_Id": 1, + "m_DisplayName": "On", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "On", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "1b9bc395c4fd4682ab8abaa4f792cb4e", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "1c1dbb029e294a7d941ae6a288d550f5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 129.48207092285157, + "y": 883.4573974609375, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "92ed9245545a4079b8362f53ffbed19a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "bde669b70a0a4d6ea6a83e98d54aa394" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "1ee50018ac6a48838b4144c75a280fc5", + "m_Id": 0, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1f96e9eba4174dcfa712fb5d388fe878", + "m_Id": 3, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.BooleanShaderProperty", + "m_ObjectId": "214b85ecac1c410cb93ea2c693e9047d", + "m_Guid": { + "m_GuidSerialized": "ffb3f4e9-d7d8-4cee-8d49-660dfefb39bd" + }, + "m_Name": "Use Vertex Color Alpha", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Use Vertex Color Alpha", + "m_DefaultReferenceName": "_Use_Vertex_Color_Alpha", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "21b80c97b9784cb884db1318c8000a65", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 628.0, + "y": 434.0, + "width": 154.0, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "dd603602d54e490ba0be33d303464ee2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "b40d979ddbf0437ea18264ffad840ec5" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "21c25e1ef72b4e61b70d190d86d44983", + "m_Id": 0, + "m_DisplayName": "Metallic", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Metallic", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "21f9ee06bc624074ab2af30d02a173c9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 649.0, + "y": -149.0, + "width": 112.0, + "height": 34.00000762939453 + } + }, + "m_Slots": [ + { + "m_Id": "dc155e8df267419592e8ccc60c5d3597" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "3c63e959f15f484a91d31864bd1c7554" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "24adf67c9aeb4c4fa106ab9fa5e6e439", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "2868f09d761f483aae6cbb39849617a7", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2a3637027f2c424f833ec880e802ec17", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "2e40198f5dce4f72ae6010896621f91f", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "308744acd1bd40fabdac49fa98954747", + "m_Id": 0, + "m_DisplayName": "Alpha Clip Threshold", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "32289559435d4b5a8fb378f3196d4dc5", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "35014e65f7c540a795bf07e80e049851", + "m_Id": 0, + "m_DisplayName": "Emission", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Emission", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 1, + "m_DefaultColor": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "3530225a6dc8475094f5fa2082b5ccc2", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "39e963ffbf4d463aa38d30313d1b48fd", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "3a0675a907594f229f83f09ea15aad4c", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "3a542d08d1a14f158cb41e7b11a5e8c6", + "m_Id": 0, + "m_DisplayName": "state", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "state", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3a9bf8a7ff6d470881f4ac48fa584078", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "3c63e959f15f484a91d31864bd1c7554", + "m_Guid": { + "m_GuidSerialized": "c8d5b468-a489-44f0-afc8-bc28e133126a" + }, + "m_Name": "Mask", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Mask", + "m_DefaultReferenceName": "_Mask", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": true, + "useTexelSize": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "3cabdd4b7362458b95854450447bcdb2", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -405.0, + "y": -186.00001525878907, + "width": 125.99996948242188, + "height": 118.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "e4493f003e0c4cfbbf1fbd7f89451560" + }, + { + "m_Id": "4b755b7883714457851fdd4b85114025" + }, + { + "m_Id": "b7e75b1b2c6e4cf1acbcc102b38f009e" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "3eabab535cf84957a4aa7a0fc6a42be2", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "418a5c7bb2074670b3d2d48d58cd0fe0", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "41c9576c9aca41dd8e78b4498f84a79a", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "43cabae5998647c9a22fefced5393ca9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1591.9998779296875, + "y": 837.0, + "width": 170.0, + "height": 141.99993896484376 + } + }, + "m_Slots": [ + { + "m_Id": "b793aa77d9b04c1db3261d1f5e3da536" + }, + { + "m_Id": "fded6497c1514d9eb44bfd81e667a7c1" + }, + { + "m_Id": "06c2218f94f44315a32d4981fab5c96d" + }, + { + "m_Id": "cc4df283ba504438989679fff68657ed" + } + ], + "synonyms": [ + "switch", + "if", + "else" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.PositionNode", + "m_ObjectId": "44d3b65015064131b8f1cd52313cf2e3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 329.00006103515627, + "y": 166.00003051757813, + "width": 206.0, + "height": 131.0 + } + }, + "m_Slots": [ + { + "m_Id": "0680905e3d274678b7c13be2ab92bb63" + } + ], + "synonyms": [ + "location" + ], + "m_Precision": 1, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 0, + "m_PositionSource": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "45193f503e6d4a8798ede4c90862a181", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e738f3ac4f8546048e13649fa7026cd7" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "457a8f7d440e4fc1a192433f36daeb80", + "m_Id": 1, + "m_DisplayName": "height", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "height", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "48e865067d854be8838f8e1f9f98d723", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "49984079f9be493090d8fe9b96274891", + "m_Name": "", + "m_ChildObjectList": [ + { + "m_Id": "214b85ecac1c410cb93ea2c693e9047d" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "49f02fbd90f2458a9696b0aaf86fb5d8", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "4b755b7883714457851fdd4b85114025", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "4bbbc96326434486b82d2dd2a111bd7d", + "m_Id": 0, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4ddea03e240847838bb5a9e360a4d0b4", + "m_Id": 1, + "m_DisplayName": "G", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "50da5240f99d43b6bc3ee2de541c0d4e", + "m_Guid": { + "m_GuidSerialized": "d7bd83b0-704b-436e-b664-da6670039945" + }, + "m_Name": "Smoothness", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Smoothness", + "m_DefaultReferenceName": "_Smoothness", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5162a987346c4b138c8c1339effd5ad2", + "m_Id": 2, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "51d9d70173c8480084e64d33999b19b8", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "530fcafee2964d08b8dedbccec1811e3", + "m_Id": 0, + "m_DisplayName": "Normal (Tangent Space)", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "NormalTS", + "m_StageCapability": 2, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "5400346681f44961b4f7563e14ec2e85", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Smoothness", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "64087f39c829433c83a215c189ca3a7b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Smoothness" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "57bc4fc73f62434faa44648886cfbf16", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 903.9999389648438, + "y": -142.99998474121095, + "width": 182.99993896484376, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "15316ff6d1cd44a884c90fb9c63dd10e" + }, + { + "m_Id": "6aef4996e8a344b19bf7e6981b6aaf73" + }, + { + "m_Id": "c26ee1b3a2e2439788c02deaf1cbcdfd" + }, + { + "m_Id": "17fc18b47d434df48d8492e841a3af5b" + }, + { + "m_Id": "833bbd9ad672448dae8b86e4db681088" + }, + { + "m_Id": "f01a87abf99a435fa16b03a7e63c2a11" + }, + { + "m_Id": "32289559435d4b5a8fb378f3196d4dc5" + }, + { + "m_Id": "ffba1d5f3b334a92a527cf6f933ce435" + } + ], + "synonyms": [ + "tex2d" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true, + "m_MipSamplingMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "5813e628e5bf49558dc0b7259e8ec86b", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "58a9253c1a3d431ab9ca43fa47c0a115", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "58c7874258fd453eb1f9ba7ebaeea4f2", + "m_Id": 0, + "m_DisplayName": "Metalicness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "590ef228d80f477190e936f7bee89c82", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "5b077ac74c1d40b58025122eefea35c9", + "m_Id": 0, + "m_DisplayName": "Use Vertex Color Alpha", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "5f10e86f31f44c97b7a0bd6d8d7b5b0f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "fd6128559aba4be79d5be18be6c2b96a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "5fac365ccd0442b8bc78d69afe4d4387", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "619c8c1f44124e4c9de9cde5e4d1a749", + "m_Id": 0, + "m_DisplayName": "R", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "61b4ace4d50a40cf805f9bc2d313ec1c", + "m_Title": "Note", + "m_Content": "Checks if there is any water surface below the position\n", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -468.0, + "y": -418.0, + "width": 207.0, + "height": 100.0 + }, + "m_Group": { + "m_Id": "" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "64087f39c829433c83a215c189ca3a7b", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Smoothness", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.5, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "68b6ef3a7cea4ebfa45b7ccc6a7a0e32", + "m_Guid": { + "m_GuidSerialized": "5c64286e-a362-451a-8b54-37f9067d7831" + }, + "m_Name": "Albedo", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Albedo", + "m_DefaultReferenceName": "_Albedo", + "m_OverrideReferenceName": "_BaseMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "useTexelSize": true, + "m_Modifiable": true, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6aef4996e8a344b19bf7e6981b6aaf73", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "6dd7cf0faa8943cca3119e93659e133b", + "m_Id": -729708967, + "m_DisplayName": "World Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "_World_Position", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "6eaf454ac44145ae8e64f5cb4a747491", + "m_Id": 0, + "m_DisplayName": "Offset", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "6f6011713bcd43b58f0c3d20c8fa5d21", + "m_Name": "Shading", + "m_ChildObjectList": [ + { + "m_Id": "bc474473229f4b8f92439cef777bbb00" + }, + { + "m_Id": "b40d979ddbf0437ea18264ffad840ec5" + }, + { + "m_Id": "50da5240f99d43b6bc3ee2de541c0d4e" + }, + { + "m_Id": "96d8afe651c7412094ccd98e906abdcc" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "7166241b7af44673916277e6840f40f3", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "729a97936d10419ba1b89f6611e38547", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.ShaderGraph.TransformNode", + "m_ObjectId": "74b1bfca5adb458d8eca44fb2cf88cc3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Transform", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 323.0000305175781, + "y": -62.0000114440918, + "width": 212.00003051757813, + "height": 157.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "1b9bc395c4fd4682ab8abaa4f792cb4e" + }, + { + "m_Id": "49f02fbd90f2458a9696b0aaf86fb5d8" + } + ], + "synonyms": [ + "world", + "tangent", + "object", + "view", + "screen", + "convert" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Conversion": { + "from": 2, + "to": 0 + }, + "m_ConversionType": 0, + "m_Normalize": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "7500d98e1ecf4c189a3fdbbdda411902", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "7706d54cbf68432bbe54f152c9cf47dd", + "m_Id": 6, + "m_DisplayName": "RG", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RG", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "7adf01abe6e5404bbbb6bca088e704d0", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "", + "m_Guid": "" + }, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "7b712853b574444091d609a90796afe4", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "7e154bbc89ae429eaa83f9a6a2e9f129", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.AlphaClipThreshold", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "02f854dc4be748698e7e94fb5f424cc0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.AlphaClipThreshold" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "7f2aedd618384d4d859eb3b5690cccb8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -590.0001220703125, + "y": -127.00005340576172, + "width": 108.00003051757813, + "height": 34.000038146972659 + } + }, + "m_Slots": [ + { + "m_Id": "6eaf454ac44145ae8e64f5cb4a747491" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "fd097e8f3ab54e17aa53cc5935cdae43" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "833bbd9ad672448dae8b86e4db681088", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "84079beb66284466b2a957e681ea8979", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1622.0, + "y": 530.0, + "width": 139.9998779296875, + "height": 33.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "cf8b73d0d1fa414c9d1006e8fe17e1cd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "50da5240f99d43b6bc3ee2de541c0d4e" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "850c0fec45dd4d01810b259245b37081", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CombineNode", + "m_ObjectId": "854c965cf99843fdaa1d6fec1f79e3c7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Combine", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 112.00006103515625, + "y": -84.00001525878906, + "width": 140.0000457763672, + "height": 166.0 + } + }, + "m_Slots": [ + { + "m_Id": "619c8c1f44124e4c9de9cde5e4d1a749" + }, + { + "m_Id": "4ddea03e240847838bb5a9e360a4d0b4" + }, + { + "m_Id": "5162a987346c4b138c8c1339effd5ad2" + }, + { + "m_Id": "1f96e9eba4174dcfa712fb5d388fe878" + }, + { + "m_Id": "028f97aeafef44b1980cb9f6172a09d1" + }, + { + "m_Id": "10cee13fff3740aa8f5af2af1c814e5f" + }, + { + "m_Id": "7706d54cbf68432bbe54f152c9cf47dd" + } + ], + "synonyms": [ + "append" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8d9b791f0f9246fea05a1302aa09b97f", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8e2e6ec7560a4b1d9df04a8cdf20049e", + "m_Id": 2, + "m_DisplayName": "Displacement", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Displacement", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "8e5d1b5f460f4d518b6b69f0ba5c5ded", + "m_Group": { + "m_Id": "" + }, + "m_Name": "ValidateHeight (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -482.0000915527344, + "y": -315.0000305175781, + "width": 237.0000457763672, + "height": 94.0 + } + }, + "m_Slots": [ + { + "m_Id": "457a8f7d440e4fc1a192433f36daeb80" + }, + { + "m_Id": "3a542d08d1a14f158cb41e7b11a5e8c6" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 1, + "m_FunctionName": "ValidateHeight", + "m_FunctionSource": "", + "m_FunctionSourceUsePragmas": true, + "m_FunctionBody": "state = HasHitWaterSurface(height);\n" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "8ffddbb1071140b6992dc816ec7ec56c", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.UVMaterialSlot", + "m_ObjectId": "90dd4544e3e44ed1a8c9f2dd331d43fd", + "m_Id": 2, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_Channel": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "92ed9245545a4079b8362f53ffbed19a", + "m_Id": 0, + "m_DisplayName": "Normals", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "95643ed6f1d340efa5579ebb8b329048", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 323.0, + "y": 833.0, + "width": 183.0, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "1ee50018ac6a48838b4144c75a280fc5" + }, + { + "m_Id": "cebe4c8a62bc4a26978725de26387acd" + }, + { + "m_Id": "d94fd202a5ab46daaf48253b24aab5ed" + }, + { + "m_Id": "00e5ae7a74d2480d88b42a267a3ef215" + }, + { + "m_Id": "dec3fe29d2454a6e94916c89efd1e2c4" + }, + { + "m_Id": "7adf01abe6e5404bbbb6bca088e704d0" + }, + { + "m_Id": "90dd4544e3e44ed1a8c9f2dd331d43fd" + }, + { + "m_Id": "7500d98e1ecf4c189a3fdbbdda411902" + } + ], + "synonyms": [ + "tex2d" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 1, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true, + "m_MipSamplingMode": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "96d8afe651c7412094ccd98e906abdcc", + "m_Guid": { + "m_GuidSerialized": "1cf91753-47e1-4665-8009-d396c5f99cb5" + }, + "m_Name": "Metalicness", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Metalicness", + "m_DefaultReferenceName": "_Metalicness", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.0, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "97b45149f5f0478ba9b27fe650ef3529", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleTexture2DNode", + "m_ObjectId": "9819707df6d44d67bf87cb7cc58c208f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Texture 2D", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 308.0000305175781, + "y": 552.0, + "width": 183.00006103515626, + "height": 251.0 + } + }, + "m_Slots": [ + { + "m_Id": "11ce3a9fd09a4c10bde4c8403a46e288" + }, + { + "m_Id": "a744c53cdd754144863676c645aa222f" + }, + { + "m_Id": "3a9bf8a7ff6d470881f4ac48fa584078" + }, + { + "m_Id": "fc4b5810d7ba441db223f5c47495f6b4" + }, + { + "m_Id": "a6b6af5fea0244cca0ca667fc40be417" + }, + { + "m_Id": "51d9d70173c8480084e64d33999b19b8" + }, + { + "m_Id": "3eabab535cf84957a4aa7a0fc6a42be2" + }, + { + "m_Id": "fc352e824bdd496999f8e83e1f0d532b" + } + ], + "synonyms": [ + "tex2d" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_TextureType": 0, + "m_NormalMapSpace": 0, + "m_EnableGlobalMipBias": true, + "m_MipSamplingMode": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ShaderKeyword", + "m_ObjectId": "a119db966f40414e862647de40154ffe", + "m_Guid": { + "m_GuidSerialized": "2ee4b2fc-1948-45cc-a0ea-baee464137c8" + }, + "m_Name": "Align To Water", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Align To Water", + "m_DefaultReferenceName": "_ALIGN_TO_WATER", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_KeywordType": 0, + "m_KeywordDefinition": 0, + "m_KeywordScope": 0, + "m_KeywordStages": 1, + "m_Entries": [], + "m_Value": 1, + "m_IsEditable": true +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalLitSubTarget", + "m_ObjectId": "a12268e8c8414c3c851b2a667d19aab4", + "m_WorkflowMode": 0, + "m_NormalDropOffSpace": 0, + "m_ClearCoat": false, + "m_BlendModePreserveSpecular": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "a302f152e6464c5ebc68c2171cb5e182", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "a4df65b270dc44a08c69e1a7f03e5622", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1205.0, + "y": 799.0, + "width": 125.9998779296875, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "fc78169dcd764c4f8b7d795666ae328d" + }, + { + "m_Id": "850c0fec45dd4d01810b259245b37081" + }, + { + "m_Id": "48e865067d854be8838f8e1f9f98d723" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a5a30ac5a72b441b937db07e4df4cbc0", + "m_Id": 0, + "m_DisplayName": "Ambient Occlusion", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Occlusion", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "a5b79380f05847ba8f2ba6f3fe0e9ea7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1622.0, + "y": 484.9999694824219, + "width": 137.9998779296875, + "height": 34.000030517578128 + } + }, + "m_Slots": [ + { + "m_Id": "58c7874258fd453eb1f9ba7ebaeea4f2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "96d8afe651c7412094ccd98e906abdcc" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a6b6af5fea0244cca0ca667fc40be417", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "a744c53cdd754144863676c645aa222f", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "a827dfabc3654028babf9030904273ab", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 575.2213134765625, + "y": 520.2200317382813, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7b712853b574444091d609a90796afe4" + }, + { + "m_Id": "e0ba1a43a9934f53b5543dbe29a6796b" + }, + { + "m_Id": "58a9253c1a3d431ab9ca43fa47c0a115" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "a88e2fcb7c774310831425b495aebcb7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Occlusion", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "a5a30ac5a72b441b937db07e4df4cbc0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Occlusion" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ae8752840eb54efbb40da7070fed8645", + "m_Id": 1, + "m_DisplayName": "Geometry_Height", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Geometry_Height", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "af78fc8b84f94dd6a0a838b750695476", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "b29c107751a9402d84585b2232df5b41", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 345.00006103515627, + "y": 445.0000305175781, + "width": 105.00006103515625, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "4bbbc96326434486b82d2dd2a111bd7d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "bc474473229f4b8f92439cef777bbb00" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "b2ebd2ca4a5a4e9a97037fb6180e29c1", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "b40d979ddbf0437ea18264ffad840ec5", + "m_Guid": { + "m_GuidSerialized": "d9af0628-b385-44ce-bd8f-03882524d500" + }, + "m_Name": "Specular Color", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Specular Color", + "m_DefaultReferenceName": "_Specular_Color", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "b7810de6facc4954aa3eb3d1c362eaef", + "m_Id": 0, + "m_DisplayName": "Specular Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Specular", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "b793aa77d9b04c1db3261d1f5e3da536", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "b7e75b1b2c6e4cf1acbcc102b38f009e", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "bba785e16399488dbc64144b0ef36e9a", + "m_Name": "Main maps", + "m_ChildObjectList": [ + { + "m_Id": "68b6ef3a7cea4ebfa45b7ccc6a7a0e32" + }, + { + "m_Id": "bde669b70a0a4d6ea6a83e98d54aa394" + }, + { + "m_Id": "3c63e959f15f484a91d31864bd1c7554" + }, + { + "m_Id": "db8ff583bb7543ec858f5542653d4f3b" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bbc7c7624d25423ca1ad4d24e71cef57", + "m_Id": 3, + "m_DisplayName": "Summed", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Summed", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.Internal.ColorShaderProperty", + "m_ObjectId": "bc474473229f4b8f92439cef777bbb00", + "m_Guid": { + "m_GuidSerialized": "edae2fa8-ec4a-4ea9-a698-c570177e4d45" + }, + "m_Name": "Color", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Color", + "m_DefaultReferenceName": "_Color", + "m_OverrideReferenceName": "_BaseColor", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "isMainColor": false, + "m_ColorMode": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Internal.Texture2DShaderProperty", + "m_ObjectId": "bde669b70a0a4d6ea6a83e98d54aa394", + "m_Guid": { + "m_GuidSerialized": "db0cd3a5-ae7b-487d-b350-57436ff4bdc3" + }, + "m_Name": "Normals", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Normals", + "m_DefaultReferenceName": "_Normals", + "m_OverrideReferenceName": "_BumpMap", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": { + "m_SerializedTexture": "", + "m_Guid": "" + }, + "isMainTexture": false, + "useTilingAndOffset": false, + "useTexelSize": true, + "m_Modifiable": true, + "m_DefaultType": 3 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "bf04b287a7cc41bca8428d5393587d61", + "m_Name": "Requires the Height Prepass to be enabled on the render feature!", + "m_ChildObjectList": [ + { + "m_Id": "a119db966f40414e862647de40154ffe" + }, + { + "m_Id": "fd097e8f3ab54e17aa53cc5935cdae43" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.StickyNoteData", + "m_ObjectId": "c01e026b63074f4684b24b1658143e9e", + "m_Title": "Note", + "m_Content": "Sets the y-position of the vertex to the height of the water surface", + "m_TextSize": 0, + "m_Theme": 0, + "m_Position": { + "serializedVersion": "2", + "x": -149.0, + "y": -257.0, + "width": 440.0, + "height": 100.0 + }, + "m_Group": { + "m_Id": "" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.VertexColorNode", + "m_ObjectId": "c1dc7452dbf1478e82533c855fe611b7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Vertex Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1046.0, + "y": 978.9999389648438, + "width": 117.0, + "height": 94.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "c2ee4405186e4d8bb2a99f4ec1081c12" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c26ee1b3a2e2439788c02deaf1cbcdfd", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "c2ee4405186e4d8bb2a99f4ec1081c12", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c80bf49b41fb43eca77bdc5f340d140b", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "c8efdaaf43644418852018debd402943", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "39e963ffbf4d463aa38d30313d1b48fd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "cc4df283ba504438989679fff68657ed", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "cc60a1d2f7844a7c8a5f409e885a7388", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.NormalTS", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "530fcafee2964d08b8dedbccec1811e3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.NormalTS" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cebe4c8a62bc4a26978725de26387acd", + "m_Id": 4, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "cf8b73d0d1fa414c9d1006e8fe17e1cd", + "m_Id": 0, + "m_DisplayName": "Smoothness", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "d4384cc186ce44739fe20d6565566d98", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7166241b7af44673916277e6840f40f3" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d94fd202a5ab46daaf48253b24aab5ed", + "m_Id": 5, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "da9a93e5f5404feb82846dde8aa21d09", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1368.9998779296875, + "y": 954.9999389648438, + "width": 126.0, + "height": 118.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "5fac365ccd0442b8bc78d69afe4d4387" + }, + { + "m_Id": "418a5c7bb2074670b3d2d48d58cd0fe0" + }, + { + "m_Id": "24adf67c9aeb4c4fa106ab9fa5e6e439" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.PositionNode", + "m_ObjectId": "db0817f6e92f451887059a9716b8e61e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1303.0, + "y": -127.00004577636719, + "width": 206.0, + "height": 131.00001525878907 + } + }, + "m_Slots": [ + { + "m_Id": "2868f09d761f483aae6cbb39849617a7" + } + ], + "synonyms": [ + "location" + ], + "m_Precision": 1, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Space": 2, + "m_PositionSource": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "db8ff583bb7543ec858f5542653d4f3b", + "m_Guid": { + "m_GuidSerialized": "20e3c411-b569-4b17-a0eb-8b3b8a2509a9" + }, + "m_Name": "Alpha Clip Threshold", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Alpha Clip Threshold", + "m_DefaultReferenceName": "_Alpha_Clip_Threshold", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.5, + "m_FloatType": 1, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "dc155e8df267419592e8ccc60c5d3597", + "m_Id": 0, + "m_DisplayName": "Mask", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "dd603602d54e490ba0be33d303464ee2", + "m_Id": 0, + "m_DisplayName": "Specular Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "dec3fe29d2454a6e94916c89efd1e2c4", + "m_Id": 7, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "df681093ca4347cf88edd6227b2eef56", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "e0ba1a43a9934f53b5543dbe29a6796b", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "e15e28199e384a76bf20588d1800ac4f", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DMaterialSlot", + "m_ObjectId": "e27d1b2478414fe68758a56035578ba0", + "m_Id": 0, + "m_DisplayName": "Albedo", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e4493f003e0c4cfbbf1fbd7f89451560", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "e4ffb30af22a4599a1b9266725aefe35", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Specular", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "b7810de6facc4954aa3eb3d1c362eaef" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Specular" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "e6f49753394b4457bf720a05e565bb5c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -117.00004577636719, + "y": -115.00003814697266, + "width": 170.00001525878907, + "height": 142.0 + } + }, + "m_Slots": [ + { + "m_Id": "729a97936d10419ba1b89f6611e38547" + }, + { + "m_Id": "590ef228d80f477190e936f7bee89c82" + }, + { + "m_Id": "3a0675a907594f229f83f09ea15aad4c" + }, + { + "m_Id": "8ffddbb1071140b6992dc816ec7ec56c" + } + ], + "synonyms": [ + "switch", + "if", + "else" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "e738f3ac4f8546048e13649fa7026cd7", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "e8ba33e2f841480cb4823835aaa405e5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -750.0000610351563, + "y": -97.00003814697266, + "width": 120.0, + "height": 149.0 + } + }, + "m_Slots": [ + { + "m_Id": "df681093ca4347cf88edd6227b2eef56" + }, + { + "m_Id": "fd55d420c9aa490cad19846bedfdbf03" + }, + { + "m_Id": "5813e628e5bf49558dc0b7259e8ec86b" + }, + { + "m_Id": "8d9b791f0f9246fea05a1302aa09b97f" + }, + { + "m_Id": "eaca9c2b43ba4c00acd57e4bff0fc63d" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "eaca9c2b43ba4c00acd57e4bff0fc63d", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SubGraphNode", + "m_ObjectId": "ead9d3a47b2f4108a1c43d883237a707", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Water Height", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -918.0000610351563, + "y": -286.00006103515627, + "width": 267.0, + "height": 143.00001525878907 + } + }, + "m_Slots": [ + { + "m_Id": "6dd7cf0faa8943cca3119e93659e133b" + }, + { + "m_Id": "ae8752840eb54efbb40da7070fed8645" + }, + { + "m_Id": "8e2e6ec7560a4b1d9df04a8cdf20049e" + }, + { + "m_Id": "bbc7c7624d25423ca1ad4d24e71cef57" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedSubGraph": "{\n \"subGraph\": {\n \"fileID\": -5475051401550479605,\n \"guid\": \"317aa34f54c227b40ac3b256efd70af2\",\n \"type\": 3\n }\n}", + "m_PropertyGuids": [ + "9edc1bf0-53e0-4109-84bc-f54bcd72a140" + ], + "m_PropertyIds": [ + -729708967 + ], + "m_Dropdowns": [], + "m_DropdownSelectedEntries": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.SwizzleNode", + "m_ObjectId": "ef41122c61a548fcb2af6b76ad77ae40", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Swizzle", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 1173.0, + "y": 978.9999389648438, + "width": 130.0, + "height": 122.00006103515625 + } + }, + "m_Slots": [ + { + "m_Id": "97b45149f5f0478ba9b27fe650ef3529" + }, + { + "m_Id": "2a3637027f2c424f833ec880e802ec17" + } + ], + "synonyms": [ + "swap", + "reorder", + "component mask" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "_maskInput": "a", + "convertedMask": "w" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Texture2DInputMaterialSlot", + "m_ObjectId": "f01a87abf99a435fa16b03a7e63c2a11", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_BareResource": false, + "m_Texture": { + "m_SerializedTexture": "", + "m_Guid": "" + }, + "m_DefaultType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.KeywordNode", + "m_ObjectId": "f2f1f638b4b141f3a41ae6d29ec2af66", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Align To Water", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 607.0000610351563, + "y": 70.0000228881836, + "width": 139.0, + "height": 117.9999771118164 + } + }, + "m_Slots": [ + { + "m_Id": "05a694986f7c43b9af41220d8af1f283" + }, + { + "m_Id": "1a2e131d6a994173aed9df4905ac3cfd" + }, + { + "m_Id": "09b4faa56fef4100a09786b5ebc2bd4c" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Keyword": { + "m_Id": "a119db966f40414e862647de40154ffe" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "f752a06e14da4f169374ec7d7d958eb7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 825.0, + "y": 434.0, + "width": 130.0, + "height": 118.0 + } + }, + "m_Slots": [ + { + "m_Id": "a302f152e6464c5ebc68c2171cb5e182" + }, + { + "m_Id": "0a9a5b96b95e49e881e64ced6877cd55" + }, + { + "m_Id": "3530225a6dc8475094f5fa2082b5ccc2" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PropertyNode", + "m_ObjectId": "fa9aa94336fa48e69d1bff132e6e1b00", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Property", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 154.49998474121095, + "y": 496.0, + "width": 120.50001525878906, + "height": 34.0 + } + }, + "m_Slots": [ + { + "m_Id": "e27d1b2478414fe68758a56035578ba0" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Property": { + "m_Id": "68b6ef3a7cea4ebfa45b7ccc6a7a0e32" + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "faa41238004f48e7ba284f2cb82df1e0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Metallic", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "21c25e1ef72b4e61b70d190d86d44983" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Metallic" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "fbda41d7a2d74fd185343537aac0f24e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e15e28199e384a76bf20588d1800ac4f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "fc352e824bdd496999f8e83e1f0d532b", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fc4b5810d7ba441db223f5c47495f6b4", + "m_Id": 6, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 2, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "fc78169dcd764c4f8b7d795666ae328d", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.Internal.Vector1ShaderProperty", + "m_ObjectId": "fd097e8f3ab54e17aa53cc5935cdae43", + "m_Guid": { + "m_GuidSerialized": "dc905be0-2da6-465e-8d88-5c162a851349" + }, + "m_Name": "Offset", + "m_DefaultRefNameVersion": 1, + "m_RefNameGeneratedByDisplayName": "Offset", + "m_DefaultReferenceName": "_Offset", + "m_OverrideReferenceName": "", + "m_GeneratePropertyBlock": true, + "m_UseCustomSlotLabel": false, + "m_CustomSlotLabel": "", + "m_DismissedVersion": 0, + "m_Precision": 0, + "overrideHLSLDeclaration": false, + "hlslDeclarationOverride": 0, + "m_Hidden": false, + "m_Value": 0.05000000074505806, + "m_FloatType": 0, + "m_RangeValues": { + "x": 0.0, + "y": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fd55d420c9aa490cad19846bedfdbf03", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "fd6128559aba4be79d5be18be6c2b96a", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "fded6497c1514d9eb44bfd81e667a7c1", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SamplerStateMaterialSlot", + "m_ObjectId": "ffba1d5f3b334a92a527cf6f933ce435", + "m_Id": 3, + "m_DisplayName": "Sampler", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Sampler", + "m_StageCapability": 3, + "m_BareResource": false +} + diff --git a/Assets/External/Stylized Water 3/Shaders/Water Decal.shadergraph.meta b/Assets/External/Stylized Water 3/Shaders/Water Decal.shadergraph.meta new file mode 100644 index 00000000..8dc3c4dc --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/Water Decal.shadergraph.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: c5da8e34fcbc64721b185986ff6d6d02 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/Water Decal.shadergraph + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/Shaders/WaterCutoutMask.shader b/Assets/External/Stylized Water 3/Shaders/WaterCutoutMask.shader new file mode 100644 index 00000000..1bc8f67e --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/WaterCutoutMask.shader @@ -0,0 +1,70 @@ +Shader "Stylized Water 3/Cutout" +{ + Properties + { + //[CurvedWorldBendSettings] _CurvedWorldBendSettings("0|1|1", Vector) = (0, 0, 0, 0) + } + SubShader + { + PackageRequirements + { + "com.unity.render-pipelines.core": "10.3.2" + "com.unity.render-pipelines.universal": "10.3.2" + } + Tags { "RenderPipeline" = "UniversalPipeline" "Queue" = "Transparent-1" } + ColorMask 0 + ZWrite On + + Pass + { + Name "Depth mask" + + HLSLPROGRAM + #pragma multi_compile_instancing + + #include "Libraries/URP.hlsl" + //#define CURVEDWORLD_BEND_TYPE_CLASSICRUNNER_X_POSITIVE + //#define CURVEDWORLD_BEND_ID_1 + //#pragma shader_feature_local CURVEDWORLD_DISABLED_ON + //#include "Assets/Amazing Assets/Curved World/Shaders/Core/CurvedWorldTransform.cginc" + + struct Attributes + { + float4 positionOS : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + #pragma vertex vert + #pragma fragment frag + + Varyings vert(Attributes input) + { + Varyings output = (Varyings)0; + + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + #if defined(CURVEDWORLD_IS_INSTALLED) && !defined(CURVEDWORLD_DISABLED_ON) + CURVEDWORLD_TRANSFORM_VERTEX(input.positionOS) + #endif + + output.positionCS = TransformObjectToHClip(input.positionOS.xyz); + + return output; + } + + half4 frag() : SV_Target { return 0; } + + ENDHLSL + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/Shaders/WaterCutoutMask.shader.meta b/Assets/External/Stylized Water 3/Shaders/WaterCutoutMask.shader.meta new file mode 100644 index 00000000..68049a96 --- /dev/null +++ b/Assets/External/Stylized Water 3/Shaders/WaterCutoutMask.shader.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 762e7e7f839e8f64b94faf1669178a2a +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/Shaders/WaterCutoutMask.shader + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo.meta b/Assets/External/Stylized Water 3/_Demo.meta new file mode 100644 index 00000000..f97c6260 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9e38df1097da5b546a08647177c0656d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets.meta new file mode 100644 index 00000000..580ed9f1 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b995ea59613e4b743b1534f792fcc742 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials.meta new file mode 100644 index 00000000..f910ba6c --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2dea94189f9fffc439463672ac25a24b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Fog Ring.shadergraph b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Fog Ring.shadergraph new file mode 100644 index 00000000..7279d2a0 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Fog Ring.shadergraph @@ -0,0 +1,714 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "cede5ab5fe0e41d7ae9abab591145776", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "9117108ccbb34aeaa51d90c6cc4d8cd9" + } + ], + "m_Nodes": [ + { + "m_Id": "5b8ba0a84d9f4565bdfa6254e5eb1c36" + }, + { + "m_Id": "72b03a00056045f588b0cbb14c73e427" + }, + { + "m_Id": "4cac6d3442e348688aef25561fc4325a" + }, + { + "m_Id": "4a633e91f9344386ba4ddf595e43d8f9" + }, + { + "m_Id": "ef2f86d6d73b4beeabd887b48abc7436" + }, + { + "m_Id": "58238e43714344f898fb2224ae84a97f" + }, + { + "m_Id": "1da5c271e15b4e32993e0c6905fff549" + }, + { + "m_Id": "663aea530dda4bc581be5cf4ed7837c3" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "4a633e91f9344386ba4ddf595e43d8f9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "ef2f86d6d73b4beeabd887b48abc7436" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "72b03a00056045f588b0cbb14c73e427" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "5b8ba0a84d9f4565bdfa6254e5eb1c36" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "ef2f86d6d73b4beeabd887b48abc7436" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "4cac6d3442e348688aef25561fc4325a" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 10.000005722045899, + "y": -0.000010251998901367188 + }, + "m_Blocks": [ + { + "m_Id": "58238e43714344f898fb2224ae84a97f" + }, + { + "m_Id": "1da5c271e15b4e32993e0c6905fff549" + }, + { + "m_Id": "663aea530dda4bc581be5cf4ed7837c3" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 10.000005722045899, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "5b8ba0a84d9f4565bdfa6254e5eb1c36" + }, + { + "m_Id": "4cac6d3442e348688aef25561fc4325a" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "86618a916cd2465d805de7d0f9074c4f" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "0cf65b1efed840ec9f39b78adebaffd5", + "m_Id": 3, + "m_DisplayName": "B", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "1394c414f5774d089c0dcc53076ee3aa", + "m_Id": 4, + "m_DisplayName": "A", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "1802ed0ddc4345999b6045bbc3983f88", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "1da5c271e15b4e32993e0c6905fff549", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "7422bf11089342b39f2d12cf9f64d227" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.VertexColorNode", + "m_ObjectId": "4a633e91f9344386ba4ddf595e43d8f9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Vertex Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -403.0, + "y": 305.0000305175781, + "width": 117.00003051757813, + "height": 93.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "1802ed0ddc4345999b6045bbc3983f88" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 2, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "4aaef97297b34137aa999250a829945f", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "4cac6d3442e348688aef25561fc4325a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "f52c2135469f431ebf3d8508551a767a" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "5101a6520e4e4fd88d7a9339b4592c9d", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "58238e43714344f898fb2224ae84a97f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "d5ab5b471d1349bba2b63747b3ca5e46" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "5afcb7871c894cda82fe48a213430274", + "m_Id": 0, + "m_DisplayName": "fogColor", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "fogColor", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "5b8ba0a84d9f4565bdfa6254e5eb1c36", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "4aaef97297b34137aa999250a829945f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "5e936e847862448f80d0549abfc17159", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "663aea530dda4bc581be5cf4ed7837c3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "5e936e847862448f80d0549abfc17159" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.CustomFunctionNode", + "m_ObjectId": "72b03a00056045f588b0cbb14c73e427", + "m_Group": { + "m_Id": "" + }, + "m_Name": "GetFogColor (Custom Function)", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -362.0, + "y": 170.99998474121095, + "width": 226.0000457763672, + "height": 94.00001525878906 + } + }, + "m_Slots": [ + { + "m_Id": "5afcb7871c894cda82fe48a213430274" + } + ], + "synonyms": [ + "code", + "HLSL" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SourceType": 1, + "m_FunctionName": "GetFogColor", + "m_FunctionSource": "", + "m_FunctionBody": "#if !defined(SHADERGRAPH_PREVIEW)\r\nfogColor = unity_FogColor.rgb;\r\n#else\r\nfogColor = 1;\r\n#endif" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "7422bf11089342b39f2d12cf9f64d227", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "86618a916cd2465d805de7d0f9074c4f", + "m_Datas": [], + "m_ActiveSubTarget": { + "m_Id": "d44aea1afdd74f0b85f84047eec1b3d1" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 1, + "m_ZTestMode": 4, + "m_ZWriteControl": 1, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": false, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "9117108ccbb34aeaa51d90c6cc4d8cd9", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "bdc4bd389ce24ccaa0831322fa4e8bff", + "m_Id": 1, + "m_DisplayName": "R", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "d36d17d248634ce99113b4d1c014bdeb", + "m_Id": 2, + "m_DisplayName": "G", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 2, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUnlitSubTarget", + "m_ObjectId": "d44aea1afdd74f0b85f84047eec1b3d1" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "d5ab5b471d1349bba2b63747b3ca5e46", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SplitNode", + "m_ObjectId": "ef2f86d6d73b4beeabd887b48abc7436", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Split", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -255.99996948242188, + "y": 289.0, + "width": 120.00001525878906, + "height": 149.0 + } + }, + "m_Slots": [ + { + "m_Id": "5101a6520e4e4fd88d7a9339b4592c9d" + }, + { + "m_Id": "bdc4bd389ce24ccaa0831322fa4e8bff" + }, + { + "m_Id": "d36d17d248634ce99113b4d1c014bdeb" + }, + { + "m_Id": "0cf65b1efed840ec9f39b78adebaffd5" + }, + { + "m_Id": "1394c414f5774d089c0dcc53076ee3aa" + } + ], + "synonyms": [ + "separate" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f52c2135469f431ebf3d8508551a767a", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [] +} + diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Fog Ring.shadergraph.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Fog Ring.shadergraph.meta new file mode 100644 index 00000000..20eb294d --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Fog Ring.shadergraph.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: df9df1d1608cece41ae63ea88928eed9 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Fog Ring.shadergraph + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks.meta new file mode 100644 index 00000000..80b3fbc1 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d889fe4bc42f5b4bbcd5d2b7df9c513 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Boulder_A.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Boulder_A.mat new file mode 100644 index 00000000..45a53775 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Boulder_A.mat @@ -0,0 +1,140 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Boulder_A + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _DETAIL_MULX2 + - _NORMALMAP + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2000 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: d4dc42706420dcb43a0667d401698533, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: b2eb8b815b9ec0c4fa5b5500d601fca7, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 2, y: 2} + 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: 2800000, guid: 8c029c3edafe1dc47ac1c2efc9dd29b5, type: 3} + 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: d4dc42706420dcb43a0667d401698533, type: 3} + 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} + - _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} + - _SpecGlossMap: + 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 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1.14 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.109 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Coverage_Color: {r: 0.5079209, g: 0.75471693, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &4614358790423625017 +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: 10 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Boulder_A.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Boulder_A.mat.meta new file mode 100644 index 00000000..c0987c45 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Boulder_A.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 7c122ef6d4734464ab5aca93ff271fd3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Boulder_A.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/RockCluster_A.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/RockCluster_A.mat new file mode 100644 index 00000000..80062507 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/RockCluster_A.mat @@ -0,0 +1,140 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RockCluster_A + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _DETAIL_MULX2 + - _NORMALMAP + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 2f51570d6c896394e8d712605263b32a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 12945d4971b3917448a9e4ebcb24f932, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 2, y: 2} + m_Offset: {x: 0, y: 1} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 2800000, guid: 8c029c3edafe1dc47ac1c2efc9dd29b5, type: 3} + 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: 2f51570d6c896394e8d712605263b32a, type: 3} + 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} + - _OcclusionMap: + m_Texture: {fileID: 2800000, guid: 329a2ae182502e646ba1930024da4921, 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} + - 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 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 0.5 + - _Parallax: 0.0209 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.109 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Coverage_Color: {r: 0.5079209, g: 0.75471693, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &4614358790423625017 +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: 10 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/RockCluster_A.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/RockCluster_A.mat.meta new file mode 100644 index 00000000..4d3405cf --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/RockCluster_A.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 9b4b644091a79694ca3ffa45821da41d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/RockCluster_A.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures.meta new file mode 100644 index 00000000..974f138b --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0e9736616779034418bf759fef385492 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_albedo.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_albedo.png new file mode 100644 index 00000000..ee4ed66b --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b9e541d5217c2b9544139b18a6a725f1583417595797d327a28deacb0a92ec3 +size 202861 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_albedo.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_albedo.png.meta new file mode 100644 index 00000000..2b55ba04 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_albedo.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: d4dc42706420dcb43a0667d401698533 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_normal.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_normal.png new file mode 100644 index 00000000..1af214eb --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4be5e2a47c1e2ebadc2991b239267867745240f021e872841f5313f9d4fd47ee +size 144815 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_normal.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_normal.png.meta new file mode 100644 index 00000000..658d76d0 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_normal.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: b2eb8b815b9ec0c4fa5b5500d601fca7 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/Boulder_A_normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_albedo.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_albedo.png new file mode 100644 index 00000000..f14a8174 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb053731d492394dc47a6a0927b4a64b16fa86c4a44819f5a9ac0c0d300bd26a +size 83440 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_albedo.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_albedo.png.meta new file mode 100644 index 00000000..372f4bae --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_albedo.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 2f51570d6c896394e8d712605263b32a +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_normal.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_normal.png new file mode 100644 index 00000000..4ac142d0 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51967ba4e49275738743a0a320378bc9bd41ffee4aa087186781cd4b88bf22dc +size 68056 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_normal.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_normal.png.meta new file mode 100644 index 00000000..0ce3fe70 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_normal.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 12945d4971b3917448a9e4ebcb24f932 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Rocks/Textures/RockCluster_A_normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain.mat new file mode 100644 index 00000000..46f979c7 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain.mat @@ -0,0 +1,131 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2810722442014075792 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SW3_BackdropTerrain + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 6ec82408db97a094c897cff00eebbb46, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + 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} + - _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: 6ec82408db97a094c897cff00eebbb46, type: 3} + 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} + - _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} + - _SpecGlossMap: + 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: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain.mat.meta new file mode 100644 index 00000000..f478a422 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: e17914ce9a42f014a850c54179df2d6e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain_FagaceaeBillboard.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain_FagaceaeBillboard.mat new file mode 100644 index 00000000..3c23190e --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain_FagaceaeBillboard.mat @@ -0,0 +1,174 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3330046589093264278 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SW3_BackdropTerrain_FagaceaeBillboard + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHATEST_ON + - _SPECULARHIGHLIGHTS_OFF + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 2450 + stringTagMap: + RenderType: TransparentCutout + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 62a72bbfa9409304aaf086dab4cf08a7, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 6c9f1725c23e40f4187f5eaa3860e66b, 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} + - _ExtraTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 62a72bbfa9409304aaf086dab4cf08a7, type: 3} + 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: 0} + 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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceTex: + 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: + - BACKFACE_NORMAL_MODE: 1 + - Backface_Normal_Mode: 0 + - EFFECT_BILLBOARD: 0 + - EFFECT_EXTRA_TEX: 1 + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 1 + - _AlphaClipThreshold: 0.503 + - _AlphaToMask: 1 + - _BillboardKwToggle: 0 + - _BillboardShadowFade: 0.5 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 0 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HueVariationKwToggle: 1 + - _Metallic: 0 + - _NormalMapKwToggle: 1 + - _OcclusionStrength: 1 + - _OldHueVarBehavior: 0 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _SubsurfaceIndirect: 0.09 + - _SubsurfaceKwToggle: 1 + - _Surface: 0 + - _TwoSided: 0 + - _WINDQUALITY: 4 + - _WIND_BRANCH1: 0 + - _WIND_BRANCH2: 0 + - _WIND_RIPPLE: 0 + - _WIND_SHARED: 0 + - _WIND_SHIMMER: 0 + - _WindQuality: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _HueVariation: {r: 1, g: 0.5, b: 0, a: 0.1} + - _HueVariationColor: {r: 1, g: 0.5, b: 0, a: 0.1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _SubsurfaceColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain_FagaceaeBillboard.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain_FagaceaeBillboard.mat.meta new file mode 100644 index 00000000..67af3dab --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain_FagaceaeBillboard.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 4f872c64f5699614fa4b45ad3b1cd4c8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SW3_BackdropTerrain_FagaceaeBillboard.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Shader Graphs_Fog Ring.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Shader Graphs_Fog Ring.mat new file mode 100644 index 00000000..4d026839 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Shader Graphs_Fog Ring.mat @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Shader Graphs_Fog Ring + m_Shader: {fileID: -6465566751694194690, guid: df9df1d1608cece41ae63ea88928eed9, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2999 + stringTagMap: {} + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - 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: + - _QueueControl: 0 + - _QueueOffset: -1 + m_Colors: [] + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &7190007045617391251 +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: 10 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Shader Graphs_Fog Ring.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Shader Graphs_Fog Ring.mat.meta new file mode 100644 index 00000000..04746d94 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Shader Graphs_Fog Ring.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 4160762b4501d644aa1936216e4f160c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Shader Graphs_Fog + Ring.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNight.exr b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNight.exr new file mode 100644 index 00000000..bbd85e0e --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNight.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:907e378e4ae8b3e4771aeb0f3a88c9553c5ea8ddb5b546d702e20a1071541c54 +size 4629992 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNight.exr.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNight.exr.meta new file mode 100644 index 00000000..6a1431ff --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNight.exr.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: b779f1a6465d7ee43b34d576615161e3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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: 2 + 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: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNight.exr + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNoon.exr b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNoon.exr new file mode 100644 index 00000000..ca6ddbf1 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNoon.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b2b94d74e44e96c3024fd4686a9e787a0dc6330a34207aa068b474877ba11cb +size 3629448 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNoon.exr.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNoon.exr.meta new file mode 100644 index 00000000..e582347e --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNoon.exr.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: c99377239265e3147b7b1c38f6a490f6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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: 2 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxNoon.exr + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxSunset.exr b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxSunset.exr new file mode 100644 index 00000000..b1447d7d --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxSunset.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:377523d8a36905f4f9de072ea9d74ddb57d39ddb62a139c81ed9492f8e81fa04 +size 3745678 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxSunset.exr.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxSunset.exr.meta new file mode 100644 index 00000000..8e4e3e8a --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxSunset.exr.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 2a00864299ef7004b832ad49c5145fb3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/SkyboxSunset.exr + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Stylized Water 3 Demo.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Stylized Water 3 Demo.mat new file mode 100644 index 00000000..dd99f715 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Stylized Water 3 Demo.mat @@ -0,0 +1,360 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Stylized Water 3 Demo + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _DISTANCE_NORMALS + - _NORMALMAP + - _REFRACTION + - _SURFACE_FOAM_SINGLE + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _ENABLEDIRECTIONALCAUSTICS_ON + - _FOAM + - _FOAMON_ON + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SCREENSPACEREFLECTIONSENABLED_ON + - _SIMPLE_LIGHTING + - _SURFACE_FOAM + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: c94169d55087aee43a4ebd71c975f082, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 2800000, guid: efd0d88edbb048d489c41da8174e6a35, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 2800000, guid: 6a6111d7c04a2aa41a70e3595cc26c9c, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: 743c4d2b8fe20124f9260175ab718f33, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: a43bae8641b0ea945b082b20b9315df3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 5393152077581806659, guid: 1ca4610f5bf9e2f4bb39535503a79eeb, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 0.754 + - _CausticsDistortion: 0.246 + - _CausticsOn: 1 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.15000004 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _Depth: 2.42 + - _DepthExp: 1 + - _DepthHorizontal: 0.01 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 4 + - _DisableDepthTexture: 0 + - _DistanceFoamTiling: 0.2 + - _DistanceNormalsOn: 1 + - _DistanceNormalsTiling: 0.020000007 + - _DstBlend: 0 + - _EdgeFade: 32 + - _EnableDirectionalCaustics: 1 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 0.149 + - _FoamClipping: 0 + - _FoamClippingDynamic: 0 + - _FoamDistanceOn: 0 + - _FoamDistortion: 0 + - _FoamOn: 1 + - _FoamOpacity: 1 + - _FoamSize: 0.314 + - _FoamSpeed: -0.1 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: 0 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 2 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.19999993 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0.86 + - _FoamWaveMask: 0.638 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 7.7 + - _IntersectionClipping: 0.583 + - _IntersectionDistortion: 0.47 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 0 + - _IntersectionLength: 1.53 + - _IntersectionRippleDist: 64 + - _IntersectionRippleSpeed: 1 + - _IntersectionRippleStrength: 1 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: -0.1 + - _IntersectionStyle: 0 + - _IntersectionTiling: 1 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 1 + - _NormalStrength: 0.154 + - _NormalSubSpeed: -0.6 + - _NormalSubTiling: 2 + - _NormalTiling: 0.16000009 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSharp: 0 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 0.094 + - _ReflectionFresnel: 8 + - _ReflectionLighting: 0 + - _ReflectionStrength: 1 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 0.042 + - _RefractionOn: 1 + - _RefractionStrength: 0.389 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 1 + - _ShadingMode: 1 + - _ShadowStrength: 1 + - _ShoreLineLength: 3.1 + - _ShoreLineWaveDistance: 6 + - _ShoreLineWaveStr: 0 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.155 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.593 + - _SunReflectionPerturbance: 1 + - _SunReflectionSharp: 0 + - _SunReflectionSize: 0.907 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _TessMax: 200 + - _TessMin: 0 + - _TessValue: 4 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0.833 + - _TranslucencyExp: 4 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.04 + - _UnderwaterReflectionStrength: 0.5 + - _UnderwaterRefractionOffset: 0.027 + - _UnderwaterSurfaceSmoothness: 0.783 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.97 + - _WaveDistortion: 0.5 + - _WaveFrequency: 2 + - _WaveHeight: 1 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 3.9 + - _WaveSpeed: 0.7 + - _WaveSteepness: 1 + - _WaveTint: 0.0356 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0, g: 0.08962265, b: 0.1792453, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceFoamFadeDist: {r: 100, g: 350, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 10.526316, g: 92.10526, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 0.46856695, g: 1.0702847, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.50953066, g: 5.8970256, b: 6.3541465, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.12, g: 0.12, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 0.943, b: 0.9245099, a: 0} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 76.392815, g: 303.86386, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Stylized Water 3 Demo.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Stylized Water 3 Demo.mat.meta new file mode 100644 index 00000000..4a80e28e --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Stylized Water 3 Demo.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 47cc359f104ded240a68839a44ec470d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Stylized + Water 3 Demo.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Night.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Night.mat new file mode 100644 index 00000000..90807c32 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Night.mat @@ -0,0 +1,103 @@ +%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: StylizedWater3_DemoSkybox Night + m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + 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: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + 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: 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} + - _OcclusionMap: + 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} + - _Tex: + m_Texture: {fileID: 8900000, guid: b779f1a6465d7ee43b34d576615161e3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _Exposure: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Rotation: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _Tint: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6532994509159213823 +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: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Night.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Night.mat.meta new file mode 100644 index 00000000..91c0078f --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Night.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 974a27fad884ceb43921e72a11144915 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox + Night.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Noon.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Noon.mat new file mode 100644 index 00000000..68796c83 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Noon.mat @@ -0,0 +1,103 @@ +%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: StylizedWater3_DemoSkybox Noon + m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + 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: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + 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: 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} + - _OcclusionMap: + 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} + - _Tex: + m_Texture: {fileID: 8900000, guid: c99377239265e3147b7b1c38f6a490f6, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _Exposure: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Rotation: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _Tint: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6532994509159213823 +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: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Noon.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Noon.mat.meta new file mode 100644 index 00000000..a34c90f8 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Noon.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 790f7bc084475ff4c89a6bc37873a4ae +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox + Noon.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Sunset.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Sunset.mat new file mode 100644 index 00000000..e398c614 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Sunset.mat @@ -0,0 +1,103 @@ +%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: StylizedWater3_DemoSkybox Sunset + m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + 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: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + 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: 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} + - _OcclusionMap: + 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} + - _Tex: + m_Texture: {fileID: 8900000, guid: 2a00864299ef7004b832ad49c5145fb3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BumpScale: 1 + - _Cull: 2 + - _Cutoff: 0.5 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _Exposure: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Rotation: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _Tint: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6532994509159213823 +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: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Sunset.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Sunset.mat.meta new file mode 100644 index 00000000..7fbda7fa --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox Sunset.mat.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 02ccf59fe57285d4eaff663ffa7f2069 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_DemoSkybox + Sunset.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaSide.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaSide.mat new file mode 100644 index 00000000..5ccd608b --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaSide.mat @@ -0,0 +1,102 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Demo_DioramaSide + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 2100000, guid: 447e25405741586418458a5871539243, type: 2} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _ENVIRONMENTREFLECTIONS_OFF + - _SPECULARHIGHLIGHTS_OFF + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTH_TEX + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SIMPLE_LIGHTING + - _VERTEXCOLORWAVEFLATTENING_ON + - _WORLDSPACEUV_ON + - _ZCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _FoamTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _CausticsDistortion: 0.792 + - _Depth: 2.47 + - _DepthHorizontal: 0.01 + - _DepthVertical: 4.17 + - _EdgeFade: 0 + - _EnvironmentReflectionsOn: 0 + - _FoamDistortion: 0 + - _FoamOn: 0 + - _FoamSize: 0.01 + - _HorizonDistance: 5.1 + - _IntersectionFoamOn: 0 + - _IntersectionStyle: 0 + - _NormalMapOn: 0 + - _NormalStrength: 0.322 + - _NormalTiling: 0.060000084 + - _ReflectionBlur: 1 + - _ReflectionFresnel: 5 + - _ReflectionLighting: 1 + - _ReflectionStrength: 1 + - _RefractionOn: 0 + - _ShadowStrength: 0.934 + - _SpecularReflectionsOn: 0 + - _SunReflectionDistortion: 0.697 + - _SunReflectionSize: 0.916 + - _SunReflectionStrength: 1 + - _TranslucencyExp: 6.07 + - _TranslucencyOn: 0 + - _VertexColorWaveFlattening: 1 + - _WaveDistance: 0.8 + - _WaveHeight: 0.275 + - _WaveNormalStr: 0.1 + - _WaveSpeed: 2 + - _WaveSteepness: 0.1 + - _WaveTint: 0 + - _ZWrite: 0 + m_Colors: + - _BaseColor: {r: 0, g: 0.44, b: 0.62, a: 1} + - _Direction: {r: 0, g: -1, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 100, g: 300, b: 0, a: 0} + - _HorizonColor: {r: 0.84, g: 1, b: 1, a: 0.15} + - _NormalTiling: {r: 0.5, g: 0.5, b: 0, a: 0} + - _ShallowColor: {r: 0.1, g: 0.9, b: 0.89, a: 0.02} + - _WaveFadeDistance: {r: 150, g: 500, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaSide.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaSide.mat.meta new file mode 100644 index 00000000..4b827da3 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaSide.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 605889a66e8082d418e637604fae8e20 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaSide.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaTop.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaTop.mat new file mode 100644 index 00000000..3b112acc --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaTop.mat @@ -0,0 +1,349 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: StylizedWater3_Demo_DioramaTop + m_Shader: {fileID: -6465566751694194690, guid: 823f6b206953b674a9a64f9e3ec57752, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ADVANCED_SHADING + - _CAUSTICS + - _INTERSECTION_FOAM + - _NORMALMAP + - _REFRACTION + - _SURFACE_FOAM + - _TRANSLUCENCY + - _WAVES + m_InvalidKeywords: + - ADVANCED_LIGHTING + - _DEPTHEXP_ON + - _DEPTH_TEX + - _FOAM + - _INTERSECTIONSHARP_ON + - _RECEIVEDYNAMICEFFECTSFOAM_ON + - _RECEIVEDYNAMICEFFECTSHEIGHT_ON + - _RECEIVEDYNAMICEFFECTSNORMAL_ON + - _RECEIVEDYNAMICEFFECTS_ON + - _SIMPLE_LIGHTING + - _SMOOTH_INTERSECTION + - _WORLDSPACEUV_ON + - _ZCLIP_ON + - _ZWRITE_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: _BaseColor _ColorAbsorption _Direction _LightingOn _ShallowColor + _Speed _WaveFadeDistance _WaveHeight _WaveMaxLayers _WaveSpeed _WavesOn _WorldSpaceUV + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: efd0d88edbb048d489c41da8174e6a35, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapLarge: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMapSlope: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CausticsTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DepthTex: + 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} + - _FoamTex: + m_Texture: {fileID: 2800000, guid: f8c7522379eccbf46bb5473bd771e5cd, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FoamTexDynamic: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IntersectionNoise: + m_Texture: {fileID: 2800000, guid: a201b1cea6ea07c41a8190e44033bfb0, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + 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} + - _Normals: + m_Texture: {fileID: 0} + 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} + - _PlanarReflection: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _PlanarReflectionLeft: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Shadermap: + 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} + - _WaveProfile: + m_Texture: {fileID: 5393152077581806659, guid: 1ca4610f5bf9e2f4bb39535503a79eeb, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + 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: + - Vector1_1942CF3A: 1 + - Vector1_BE75C478: 32 + - Vector1_E23F9E57: 0.5 + - Vector1_E796673B: 10 + - _ADVANCED_LIGHTING: 1 + - _AdvancedLighting: 1 + - _Advanced_Lighting: 1 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AnimationSpeed: 1 + - _Blend: 0 + - _BumpScale: 1 + - _CROSSPAN_INTERSECTIONOn: 1 + - _CausticsBrightness: 2 + - _CausticsChromance: 1 + - _CausticsDistortion: 0.23 + - _CausticsOn: 1 + - _CausticsSpeed: 0.1 + - _CausticsTiling: 0.2 + - _ColorAbsorption: 0 + - _CrossPan_IntersectionOn: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _Depth: 2.78 + - _DepthExp: 1 + - _DepthHorizontal: 0.29 + - _DepthMode: 0 + - _DepthTexture: 1 + - _DepthVertical: 4 + - _DisableDepthTexture: 0 + - _DistanceNormalsOn: 0 + - _DistanceNormalsTiling: 0.25 + - _DstBlend: 0 + - _EdgeFade: 7 + - _EnableDirectionalCaustics: 0 + - _EnvironmentReflections: 1 + - _EnvironmentReflectionsOn: 1 + - _FlatShadingOn: 0 + - _FlowSpeed: 1 + - _FoamBaseAmount: 0 + - _FoamBubblesSpread: 1 + - _FoamBubblesStrength: 1 + - _FoamClipping: 0 + - _FoamDistortion: 0.1 + - _FoamOn: 1 + - _FoamOpacity: 1 + - _FoamSize: 0.359 + - _FoamSpeed: 0.1 + - _FoamSpeedDynamic: 0.1 + - _FoamStrength: 1 + - _FoamSubSpeed: -0.25 + - _FoamSubSpeedDynamic: -0.1 + - _FoamSubTiling: 0.5 + - _FoamSubTilingDynamic: 2 + - _FoamTiling: 0.19999993 + - _FoamTilingDynamic: 0.1 + - _FoamWaveAmount: 0 + - _FoamWaveMask: 1 + - _FoamWaveMaskExp: 1 + - _FogSource: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _HorizonDistance: 6.4 + - _IntersectionClipping: 0.583 + - _IntersectionDistortion: 0.2 + - _IntersectionFalloff: 1 + - _IntersectionFoamOn: 1 + - _IntersectionLength: 2.81 + - _IntersectionRippleDist: 20 + - _IntersectionRippleSpeed: 2 + - _IntersectionRippleStrength: 0.53 + - _IntersectionSharp: 1 + - _IntersectionSize: 0.944 + - _IntersectionSource: 0 + - _IntersectionSpeed: 0.1 + - _IntersectionStyle: 2 + - _IntersectionTiling: -0.030000046 + - _IntersectionWaveDist: 33.28 + - _LightingMode: 2 + - _LightingOn: 1 + - _Metallic: 0 + - _Metallicness: 0.1 + - _NORMALMAPOn: 1 + - _NormalMap: 1 + - _NormalMapOn: 1 + - _NormalSpeed: 0.13000005 + - _NormalStrength: 0.091 + - _NormalSubSpeed: -0.5 + - _NormalSubTiling: 0.5 + - _NormalTiling: 0.11000009 + - _OcclusionStrength: 1 + - _PlanarReflectionsEnabled: 0 + - _PlanarReflectionsParams: 0 + - _PointSpotLightReflectionDistortion: 0.5 + - _PointSpotLightReflectionExp: 64 + - _PointSpotLightReflectionSize: 0 + - _PointSpotLightReflectionStrength: 10 + - _QueueOffset: 0 + - _ReceiveDynamicEffectsFoam: 1 + - _ReceiveDynamicEffectsHeight: 1 + - _ReceiveDynamicEffectsNormal: 1 + - _ReceiveShadows: 1 + - _ReflectionBlur: 0 + - _ReflectionDistortion: 1 + - _ReflectionFresnel: 7.5 + - _ReflectionLighting: 0 + - _ReflectionStrength: 0.066 + - _Reflectivity: 1 + - _RefractionAmount: 0.05 + - _RefractionChromaticAberration: 1 + - _RefractionOn: 1 + - _RefractionStrength: 0 + - _RimRize: 1 + - _RimTiling: 0.025 + - _RiverModeOn: 0 + - _SHARP_INERSECTIONOn: 1 + - _ScreenSpaceReflectionsEnabled: 0 + - _ShadingMode: 1 + - _ShadowStrength: 0.6 + - _ShoreLineLength: 3.1 + - _ShoreLineWaveDistance: 6 + - _ShoreLineWaveStr: 0 + - _SimpleLighting: 1 + - _SlopeAngleFalloff: 25 + - _SlopeAngleThreshold: 15 + - _SlopeFoam: 1 + - _SlopeSpeed: 4 + - _SlopeStretching: 0.5 + - _SlopeThreshold: 0.25 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SparkleIntensity: 0 + - _SparkleSize: 0.155 + - _SpecularHighlights: 1 + - _SpecularReflectionsOn: 1 + - _Speed: 1 + - _SrcBlend: 1 + - _SunReflectionDistortion: 0.727 + - _SunReflectionPerturbance: 1 + - _SunReflectionSize: 0.769 + - _SunReflectionStrength: 10 + - _Surface: 0 + - _TEXTURE_INTERSECTIONOn: 0 + - _Texture_IntersectionOn: 1 + - _Tiling: 0.5 + - _Translucency: 1 + - _TranslucencyCurvatureMask: 0 + - _TranslucencyExp: 9.42 + - _TranslucencyOn: 1 + - _TranslucencyReflectionMask: 0 + - _TranslucencyStrength: 1 + - _TranslucencyStrengthDirect: 0.05 + - _UnderwaterRefractionOffset: 0.2 + - _UnderwaterSurfaceSmoothness: 0.8 + - _VertexColorFoam: 0 + - _VertexColorTransparency: 0 + - _VertexColorWaveFlattening: 0 + - _WaveDistance: 0.96 + - _WaveDistortion: 0.5 + - _WaveFrequency: 1 + - _WaveHeight: 1 + - _WaveMaxLayers: 64 + - _WaveNormalStr: 8 + - _WaveSpeed: 1 + - _WaveSteepness: 0 + - _WaveTint: 0.0408 + - _WavesOn: 1 + - _WorkflowMode: 1 + - _WorldSpaceUV: 1 + - _ZClip: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0.09564084, b: 0.1981132, a: 1} + - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _DepthMapBounds: {r: -402.3, g: -459.43, b: 0.0012693577, a: 0} + - _Direction: {r: 1, g: 1, b: 0, a: 0} + - _DistanceNormalsFadeDist: {r: 300, g: 0.25, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FoamColor: {r: 1, g: 1, b: 1, a: 1} + - _FoamCrestMinMaxHeight: {r: 1, g: 2, b: 0, a: 0} + - _FoamTiling: {r: 0.1, g: 0.1, b: 0, a: 0} + - _HorizonColor: {r: 0.32393697, g: 3.997602, b: 4.7593803, a: 0} + - _IntersectionColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalTiling: {r: 0.25, g: 0.25, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} + - _ShallowColor: {r: 0, g: 0.9411765, b: 0.41853154, a: 1} + - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + - _WaterColor: {r: 0.21176466, g: 0.6745098, b: 1, a: 1} + - _WaterShallowColor: {r: 0, g: 0.9394503, b: 1, a: 1} + - _WaveDirection: {r: 1, g: 1, b: 1, a: 1} + - _WaveFadeDistance: {r: 191.13924, g: 341.13934, b: 0, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6498140463000427223 +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: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaTop.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaTop.mat.meta new file mode 100644 index 00000000..2c8858d1 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaTop.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 447e25405741586418458a5871539243 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/StylizedWater3_Demo_DioramaTop.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Textures.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Textures.meta new file mode 100644 index 00000000..97f328f5 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca79111c41266224faccbb3b4b4fb4bf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Textures/SW3_BackdropTerrain Albedo.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Textures/SW3_BackdropTerrain Albedo.png new file mode 100644 index 00000000..04cef158 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Textures/SW3_BackdropTerrain Albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e7f826d1cc5f13fa3d0a7127c98fbbaf36a320d1bfe03bbd4153edc7ad26aee +size 95703 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Textures/SW3_BackdropTerrain Albedo.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Textures/SW3_BackdropTerrain Albedo.png.meta new file mode 100644 index 00000000..d0f5dec8 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Textures/SW3_BackdropTerrain Albedo.png.meta @@ -0,0 +1,106 @@ +fileFormatVersion: 2 +guid: 6ec82408db97a094c897cff00eebbb46 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + 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 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 4096 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Textures/SW3_BackdropTerrain + Albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation.meta new file mode 100644 index 00000000..9acc786b --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 16f970310692d524c8de666c30f39fe0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/GrassBillboard.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/GrassBillboard.mat new file mode 100644 index 00000000..e10c4734 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/GrassBillboard.mat @@ -0,0 +1,92 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7898364402180281279 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: GrassBillboard + m_Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - BACKFACE_NORMAL_MODE_NONE + - _WINDQUALITY_NONE + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 2 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 2800000, guid: b3c041c2d17dcb649ad680c8431a984b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ExtraTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 365a7c7b6c751804a911d7c0f8019152, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceTex: + m_Texture: {fileID: 2800000, guid: 365a7c7b6c751804a911d7c0f8019152, type: 3} + 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: + - BACKFACE_NORMAL_MODE: 2 + - EFFECT_BILLBOARD: 0 + - EFFECT_EXTRA_TEX: 0 + - _AlphaClipThreshold: 0.5 + - _Glossiness: 0.066 + - _HueVariationKwToggle: 1 + - _Metallic: 0 + - _NormalMapKwToggle: 1 + - _OldHueVarBehavior: 0 + - _QueueControl: 0 + - _QueueOffset: 0 + - _SubsurfaceIndirect: 0 + - _SubsurfaceKwToggle: 1 + - _WINDQUALITY: 0 + - _WindQuality: 0 + m_Colors: + - _Color: {r: 0.8018868, g: 0.8018868, b: 0.8018868, a: 1} + - _HueVariationColor: {r: 1, g: 0.6055647, b: 0, a: 0.23529412} + - _SubsurfaceColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/GrassBillboard.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/GrassBillboard.mat.meta new file mode 100644 index 00000000..64085ed3 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/GrassBillboard.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 90ee7acf1b70afc4a8e7287239cbfebb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/GrassBillboard.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmFrond.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmFrond.mat new file mode 100644 index 00000000..3ed2acb3 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmFrond.mat @@ -0,0 +1,158 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-4462212710894562407 +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: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PalmFrond + m_Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - BACKFACE_NORMAL_MODE_FLIP + - _WINDQUALITY_NONE + m_InvalidKeywords: [] + m_LightmapFlags: 6 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 4b02531de7d90a14f89beb90f135c1f0, 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} + - _ExtraTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 38f66ba05f559b843967734b5a638c92, type: 3} + 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} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceTex: + m_Texture: {fileID: 2800000, guid: 1e0a6a3420eb024489e79a9c3794f49a, type: 3} + 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: + - BACKFACE_NORMAL_MODE: 0 + - EFFECT_BILLBOARD: 0 + - EFFECT_EXTRA_TEX: 1 + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaClipThreshold: 0.5 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0.241 + - _GlossyReflections: 0 + - _HueVariationKwToggle: 1 + - _Metallic: 0 + - _NormalMapKwToggle: 1 + - _OcclusionStrength: 1 + - _OldHueVarBehavior: 0 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _SubsurfaceIndirect: 0.251 + - _SubsurfaceKwToggle: 1 + - _Surface: 0 + - _WINDQUALITY: 0 + - _WindQuality: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _HueVariationColor: {r: 1, g: 0.8377491, b: 0, a: 0.54509807} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _SubsurfaceColor: {r: 1, g: 0.89650905, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmFrond.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmFrond.mat.meta new file mode 100644 index 00000000..f8f57b1c --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmFrond.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 180af2eb6fc01ad419e2e96869b29037 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmFrond.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmTrunk.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmTrunk.mat new file mode 100644 index 00000000..43778c6e --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmTrunk.mat @@ -0,0 +1,162 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PalmTrunk + m_Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - BACKFACE_NORMAL_MODE_NONE + - _WINDQUALITY_NONE + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 2 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 56053eeeb27a71a4bad03940e4711350, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: ca284a2b434fdb64ca5af3a4169dea40, 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} + - _ExtraTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 56053eeeb27a71a4bad03940e4711350, type: 3} + 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} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceTex: + 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: + - BACKFACE_NORMAL_MODE: 2 + - EFFECT_BILLBOARD: 0 + - EFFECT_EXTRA_TEX: 0 + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaClipThreshold: 0.33 + - _AlphaToMask: 0 + - _BillboardKwToggle: 0 + - _BillboardShadowFade: 0.5 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0.133 + - _GlossyReflections: 0 + - _HueVariationKwToggle: 0 + - _Metallic: 0 + - _NormalMapKwToggle: 1 + - _OcclusionStrength: 1 + - _OldHueVarBehavior: 0 + - _Parallax: 0.005 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _SubsurfaceIndirect: 0.25 + - _SubsurfaceKwToggle: 0 + - _Surface: 0 + - _TwoSided: 0 + - _WINDQUALITY: 0 + - _WindQuality: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _HueVariationColor: {r: 1, g: 0.8183497, b: 0, a: 0.1764706} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _SubsurfaceColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &2066332472694274871 +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: 10 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmTrunk.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmTrunk.mat.meta new file mode 100644 index 00000000..d515f62d --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmTrunk.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: e5a5948ebdaeaae4fa0f296d7d0ce94c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/PalmTrunk.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/SWS_Shrub.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/SWS_Shrub.mat new file mode 100644 index 00000000..b5f81fc5 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/SWS_Shrub.mat @@ -0,0 +1,160 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SWS_Shrub + m_Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - BACKFACE_NORMAL_MODE_NONE + - _WINDQUALITY_BEST + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 4409ba6255cc9ec49a73df0413762698, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + 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} + - _ExtraTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: d595f13e096d9424f9ec7c5cdf45d0f9, type: 3} + 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} + - _OcclusionMap: + 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} + - _SubsurfaceTex: + m_Texture: {fileID: 2800000, guid: d595f13e096d9424f9ec7c5cdf45d0f9, type: 3} + 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: + - BACKFACE_NORMAL_MODE: 2 + - Boolean_72F1B985: 0 + - EFFECT_BILLBOARD: 0 + - EFFECT_EXTRA_TEX: 0 + - Vector1_172E56F4: 0.01 + - Vector1_92435A98: 0 + - Vector1_D45C2AEB: 6 + - _AlphaClip: 1 + - _AlphaClipThreshold: 0.5 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _CameraFadingEnabled: 0 + - _CameraFarFadeDistance: 2 + - _CameraNearFadeDistance: 1 + - _ColorMode: 0 + - _Cull: 0 + - _Cutoff: 0.5 + - _DistortionBlend: 0.5 + - _DistortionEnabled: 0 + - _DistortionStrength: 1 + - _DistortionStrengthScaled: 0.1 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _FlipbookBlending: 0 + - _FlipbookMode: 0 + - _GlossMapScale: 0 + - _Glossiness: 0.003 + - _GlossinessSource: 0 + - _GlossyReflections: 0 + - _HueVariationKwToggle: 1 + - _Metallic: 0 + - _Mode: 0 + - _NormalMapKwToggle: 0 + - _Occlusion: 1.38 + - _OcclusionStrength: 1 + - _OldHueVarBehavior: 0 + - _QueueControl: 0 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Shininess: 0 + - _Smoothness: 0.5 + - _SmoothnessSource: 0 + - _SmoothnessTextureChannel: 0 + - _SoftParticlesEnabled: 0 + - _SoftParticlesFarFadeDistance: 1 + - _SoftParticlesNearFadeDistance: 0 + - _SpecSource: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SubsurfaceIndirect: 0.25 + - _SubsurfaceKwToggle: 1 + - _Surface: 0 + - _WINDQUALITY: 4 + - _WindFrequency: 100 + - _WindQuality: 1 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} + - _CameraFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _HueVariationColor: {r: 1, g: 0.5, b: 0, a: 0.2} + - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} + - _SpecColor: {r: 0.19999993, g: 0.19999993, b: 0.19999993, a: 0.5} + - _SubsurfaceColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &4644663770071794243 +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: 10 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/SWS_Shrub.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/SWS_Shrub.mat.meta new file mode 100644 index 00000000..1df873c7 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/SWS_Shrub.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: abe2ddb842ff3a8469c209b1246e0c66 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/SWS_Shrub.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/ShoalGrass.mat b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/ShoalGrass.mat new file mode 100644 index 00000000..e46ba111 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/ShoalGrass.mat @@ -0,0 +1,92 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 32 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ShoalGrass + m_Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - BACKFACE_NORMAL_MODE_NONE + - _WINDQUALITY_NONE + m_InvalidKeywords: + - _EMISSION + m_LightmapFlags: 2 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ExtraTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: d52c07352fff5b04fa3181a339e7a934, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceTex: + m_Texture: {fileID: 2800000, guid: d52c07352fff5b04fa3181a339e7a934, type: 3} + 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: + - BACKFACE_NORMAL_MODE: 2 + - EFFECT_BILLBOARD: 0 + - EFFECT_EXTRA_TEX: 0 + - _AlphaClipThreshold: 0.5 + - _Glossiness: 0 + - _HueVariationKwToggle: 0 + - _Metallic: 0 + - _NormalMapKwToggle: 0 + - _OldHueVarBehavior: 0 + - _QueueControl: 0 + - _QueueOffset: 0 + - _SubsurfaceIndirect: 0.141 + - _SubsurfaceKwToggle: 1 + - _WINDQUALITY: 0 + - _WindQuality: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _HueVariationColor: {r: 0.99381757, g: 1, b: 0, a: 1} + - _SubsurfaceColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6133979471252074512 +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: 10 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/ShoalGrass.mat.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/ShoalGrass.mat.meta new file mode 100644 index 00000000..0f844175 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/ShoalGrass.mat.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 17da088805b6e94459cf1fa6c52ac39f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/ShoalGrass.mat + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures.meta new file mode 100644 index 00000000..178fd365 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91bbb93f190cd1e498f24c728ae73f32 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/FagaceaeImpostor_Albedo.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/FagaceaeImpostor_Albedo.png new file mode 100644 index 00000000..78668d83 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/FagaceaeImpostor_Albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7681a807d22293560124c6865d83f8db1a4160d699b6e71323dfb1e178ff7523 +size 55560 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/FagaceaeImpostor_Albedo.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/FagaceaeImpostor_Albedo.png.meta new file mode 100644 index 00000000..7f988d99 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/FagaceaeImpostor_Albedo.png.meta @@ -0,0 +1,150 @@ +fileFormatVersion: 2 +guid: 62a72bbfa9409304aaf086dab4cf08a7 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 1 + 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: 0 + swizzle: 50462976 + cookieLightType: 1 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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: 4 + 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 + - serializedVersion: 4 + buildTarget: Android + 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: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/FagaceaeImpostor_Albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_albedo.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_albedo.png new file mode 100644 index 00000000..3030e159 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df9191c61302c6f13e95a54a5585022a4580e9ff9e147e1c0951a231d58b7ec1 +size 26418 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_albedo.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_albedo.png.meta new file mode 100644 index 00000000..92fb3572 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_albedo.png.meta @@ -0,0 +1,137 @@ +fileFormatVersion: 2 +guid: 365a7c7b6c751804a911d7c0f8019152 +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: 1 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 0 + 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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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: 4 + buildTarget: WebGL + 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: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_normals.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_normals.png new file mode 100644 index 00000000..8a362bfe --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c2b2c8ababc3205b88fa8a3167d9f38b04a8dc7eb52ef42d41e94e953c8e812 +size 74245 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_normals.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_normals.png.meta new file mode 100644 index 00000000..fc83580a --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_normals.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: b3c041c2d17dcb649ad680c8431a984b +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Grass_normals.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_albedo.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_albedo.png new file mode 100644 index 00000000..e3a75210 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b848b5d5d35f79f4a0a673f456cc47eb1c8111e47abd1a28b53690169d6d477c +size 627808 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_albedo.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_albedo.png.meta new file mode 100644 index 00000000..6f7b4ae4 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_albedo.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 56053eeeb27a71a4bad03940e4711350 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_normals.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_normals.png new file mode 100644 index 00000000..40284220 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97ccf7a9afb33842b0eed924442df3b9ebcf1ed5a2211babe35276bff5ac633c +size 320812 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_normals.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_normals.png.meta new file mode 100644 index 00000000..7349db48 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_normals.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: ca284a2b434fdb64ca5af3a4169dea40 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmBark_normals.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_albedo.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_albedo.png new file mode 100644 index 00000000..6727365f --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ca911e642e4a9e4633dd9e8e92564e4f835c85c6835e29f4e03501e8b99ffb9 +size 168107 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_albedo.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_albedo.png.meta new file mode 100644 index 00000000..9b76a4bf --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_albedo.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 38f66ba05f559b843967734b5a638c92 +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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_normal.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_normal.png new file mode 100644 index 00000000..89f5443a --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3087d986d0eeee0b4ff4665a6a4a9cba67f46f821e16cf1b657226c78f33f33 +size 269631 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_normal.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_normal.png.meta new file mode 100644 index 00000000..6e5dcaaf --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_normal.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 4b02531de7d90a14f89beb90f135c1f0 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_subsurface.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_subsurface.png new file mode 100644 index 00000000..9602957f --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_subsurface.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:796ad83511be3a3da61cb473e685845f57e9a004b3f830b836e553d39b8a81b7 +size 131656 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_subsurface.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_subsurface.png.meta new file mode 100644 index 00000000..d9b4daef --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_subsurface.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 1e0a6a3420eb024489e79a9c3794f49a +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/PalmFrond_subsurface.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/ShoalGrass_albedo.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/ShoalGrass_albedo.png new file mode 100644 index 00000000..0be80e5b --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/ShoalGrass_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fee124082aa857c3c53fa17025d7ca6667c29ad4d04d6ddf70b190ebcc318f96 +size 14400 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/ShoalGrass_albedo.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/ShoalGrass_albedo.png.meta new file mode 100644 index 00000000..410ceb98 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/ShoalGrass_albedo.png.meta @@ -0,0 +1,137 @@ +fileFormatVersion: 2 +guid: d52c07352fff5b04fa3181a339e7a934 +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: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + 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: 4 + 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: 4 + buildTarget: WebGL + 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: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/ShoalGrass_albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Shrub_BranchCluster.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Shrub_BranchCluster.png new file mode 100644 index 00000000..478ff2a3 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Shrub_BranchCluster.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39d976a78e31fcadf1def2564fdfc31a12a9082d237c7d424ba34d336bbebd1b +size 1722 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Shrub_BranchCluster.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Shrub_BranchCluster.png.meta new file mode 100644 index 00000000..93690f2c --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Shrub_BranchCluster.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: d595f13e096d9424f9ec7c5cdf45d0f9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Materials/Vegetation/Textures/Shrub_BranchCluster.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models.meta new file mode 100644 index 00000000..78ebfdf6 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1248ddc4d33a6f34b80077cd25cde046 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Boulder.fbx b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Boulder.fbx new file mode 100644 index 00000000..dd01496f --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Boulder.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16cb8b945f8746250a703867a30f97774e480ac84e79fc45cb8c5f543d844cd6 +size 54976 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Boulder.fbx.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Boulder.fbx.meta new file mode 100644 index 00000000..8daeb509 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Boulder.fbx.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: f032190dfbd56d641b2fcb4278c72390 +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + 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: + - 0.25 + - 0.01 + 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: 0 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 180 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 0 + 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: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 0 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Boulder.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/DioramaWater.fbx b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/DioramaWater.fbx new file mode 100644 index 00000000..43641064 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/DioramaWater.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c41a77ef83a3fc89555f25ff42a676e49b792f8e16de16a595412895f705c22c +size 88176 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/DioramaWater.fbx.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/DioramaWater.fbx.meta new file mode 100644 index 00000000..a2db35c5 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/DioramaWater.fbx.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: c87ccf0af11fa4c418a4c628bfada9c7 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 1 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 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 + importVisibility: 0 + importBlendShapes: 0 + importCameras: 0 + importLights: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 2 + 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 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/DioramaWater.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/RockCluster_A.fbx b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/RockCluster_A.fbx new file mode 100644 index 00000000..8481347e --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/RockCluster_A.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cc76c09be55e97b44971cad7a27d717caf1f80fe63f76734de6e25c6d7c7f9c +size 79504 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/RockCluster_A.fbx.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/RockCluster_A.fbx.meta new file mode 100644 index 00000000..e62e906d --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/RockCluster_A.fbx.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: bfd274f1dac22db4c98c4349113eea1d +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + 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: + - 0.25 + - 0.01 + 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: 0 + 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: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/RockCluster_A.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_BackgroundTerrain.fbx b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_BackgroundTerrain.fbx new file mode 100644 index 00000000..f9931d3d --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_BackgroundTerrain.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2c20e92197f13e1a7079c2af6f3aada49b9fe9172990b831d757b86babe5721 +size 1276160 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_BackgroundTerrain.fbx.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_BackgroundTerrain.fbx.meta new file mode 100644 index 00000000..c7becb27 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_BackgroundTerrain.fbx.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: 33a40645146a3d4498a86dbf0bfd0a79 +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 1 + motionNodeName: + 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: 0 + 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: 0 + remapMaterialsIfMaterialImportModeIsNone: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_BackgroundTerrain.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_DemoMeshes.fbx b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_DemoMeshes.fbx new file mode 100644 index 00000000..c4b3bf8e --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_DemoMeshes.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c881faabbc050d9a26885ccd7c88a0218c01429e7b431b28a920f810f2c6285d +size 70736 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_DemoMeshes.fbx.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_DemoMeshes.fbx.meta new file mode 100644 index 00000000..722e62f6 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_DemoMeshes.fbx.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: c7d841b4db5db07489c73267fb6263d8 +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + 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: 0 + 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: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/SW3_DemoMeshes.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation.meta new file mode 100644 index 00000000..cd933be8 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e019f60eec5f4107aaa8da22b6d222db +timeCreated: 1729685821 \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Grass.fbx b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Grass.fbx new file mode 100644 index 00000000..3f34e851 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Grass.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46587716bfeb4d2de6b8f80a7965f052a4695cf672de8ea010b899a21a4fb59c +size 105756 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Grass.fbx.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Grass.fbx.meta new file mode 100644 index 00000000..e633c841 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Grass.fbx.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: cc5e6f7ea56218340a04587683835130 +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: + 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: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Grass.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree.fbx b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree.fbx new file mode 100644 index 00000000..841a068a --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c728ed898d6944ac350ce5566c63ac90927760377d733831c75f7725a32e6ba +size 2705609 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree.fbx.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree.fbx.meta new file mode 100644 index 00000000..06276576 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree.fbx.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: e85fe1f964def304f831804bf5a03687 +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: + 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: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree_Tall.fbx b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree_Tall.fbx new file mode 100644 index 00000000..1d522864 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree_Tall.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:375e60732f6d29562ada3e675e39ebc365c53946c8518631c310c84cc1dfde5b +size 1704641 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree_Tall.fbx.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree_Tall.fbx.meta new file mode 100644 index 00000000..f5180553 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree_Tall.fbx.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: fcf430c4390c89f40896b87c2980db36 +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: + 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: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_PalmTree_Tall.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_ShoalGrass.fbx b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_ShoalGrass.fbx new file mode 100644 index 00000000..3375f19c --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_ShoalGrass.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:531b9f0001557b1000181182e1495a69e3656fe56b735c908159a5326eab1607 +size 192924 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_ShoalGrass.fbx.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_ShoalGrass.fbx.meta new file mode 100644 index 00000000..61201dc8 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_ShoalGrass.fbx.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: d1e7635a1d95e9b4a8b350524797b8b1 +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: + 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: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_ShoalGrass.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Shrub.fbx b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Shrub.fbx new file mode 100644 index 00000000..7c4b2f66 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Shrub.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0a1180aa41adf9cfe858aa84a0d681cf304afd0a2edce87bb07b2141ab4ab48 +size 117168 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Shrub.fbx.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Shrub.fbx.meta new file mode 100644 index 00000000..f6173710 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Shrub.fbx.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: fd593d3546d165d4c8a85f9e914c0a39 +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 0 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 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 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 0 + 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 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Models/Vegetation/SW3_Shrub.fbx + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs.meta new file mode 100644 index 00000000..327cd86b --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa5b5d7a8f19a1b40b371ce8bacd5c1e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks.meta new file mode 100644 index 00000000..daef83d9 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3eec4f24ff00494e851387c0f824ad8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/Boulder.prefab b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/Boulder.prefab new file mode 100644 index 00000000..4896ae19 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/Boulder.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc1285924a1c8f3ad175b638bbb566fb8a7a10ff2631cb0025a3f63858c06908 +size 7633 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/Boulder.prefab.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/Boulder.prefab.meta new file mode 100644 index 00000000..649df7c1 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/Boulder.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: bdd2a5c95ae34574f9e6a41cc59cbf91 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/Boulder.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/RockCluster_A.prefab b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/RockCluster_A.prefab new file mode 100644 index 00000000..c869c845 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/RockCluster_A.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3dca3a916cf55fd0d608d1ca9f4b4bb76e4e63e0411ef61b3bc45b72fa8bb88e +size 8178 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/RockCluster_A.prefab.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/RockCluster_A.prefab.meta new file mode 100644 index 00000000..97071dfc --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/RockCluster_A.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 30def6b99b2f31d4a8af41a74a4fe260 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Rocks/RockCluster_A.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation.meta new file mode 100644 index 00000000..3300d829 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 35b98c8ffb8042e478dd32e246787807 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Grass.prefab b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Grass.prefab new file mode 100644 index 00000000..05d68ee8 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Grass.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10080dc0997c5c721fafaf5733df7b1ea66f35aa79c1c89c340d9438fcb5b07e +size 4166 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Grass.prefab.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Grass.prefab.meta new file mode 100644 index 00000000..fc67b344 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Grass.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 8799948fe4f3925469e2b387826bc1b6 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Grass.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree.prefab b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree.prefab new file mode 100644 index 00000000..fc14a635 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1535bbcc1f01627f5c3e9d30a69fb3551d9eddc1265472d126ea8a9b202bd8df +size 4927 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree.prefab.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree.prefab.meta new file mode 100644 index 00000000..81be09ff --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 087d70cb3890af747b53f636742a587c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree_Tall.prefab b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree_Tall.prefab new file mode 100644 index 00000000..33e02b0d --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree_Tall.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e729a413ef1231cb417bf35c6a50106ea8b5151b32a992ac96c1936356408853 +size 4945 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree_Tall.prefab.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree_Tall.prefab.meta new file mode 100644 index 00000000..21e2e866 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree_Tall.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: f60f8315d08c62041ade2b64800948f0 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_PalmTree_Tall.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_ShoalGrass.prefab b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_ShoalGrass.prefab new file mode 100644 index 00000000..499da7fe --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_ShoalGrass.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4871d82749312c4d8a5ac4358e9c619799df96d5be3a0528b8c06d660178942 +size 4211 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_ShoalGrass.prefab.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_ShoalGrass.prefab.meta new file mode 100644 index 00000000..3bb064e2 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_ShoalGrass.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: b59d2aed96a80834a92871dfe32aaaeb +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_ShoalGrass.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Shrub.prefab b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Shrub.prefab new file mode 100644 index 00000000..4297a1ff --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Shrub.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82f2422747fb1aee64e49a89d2466e9e3d7d6146acf65451baeecaa39f5e033a +size 2654 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Shrub.prefab.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Shrub.prefab.meta new file mode 100644 index 00000000..b3b2740b --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Shrub.prefab.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 306b9e2cbfbfece43ae44b447aea4925 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Prefabs/Vegetation/SW3_Shrub.prefab + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_LUT_v2.psd b/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_LUT_v2.psd new file mode 100644 index 00000000..67aa2e92 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_LUT_v2.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08c487d50e49bb97b582070e08d45300a0dc2c8a1b5287115f1f5be170d145be +size 254306 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_LUT_v2.psd.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_LUT_v2.psd.meta new file mode 100644 index 00000000..7e68144c --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_LUT_v2.psd.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: a9335de41feba504db234966410a86e2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 1 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 3 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 0 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: 3 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 1 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_LUT_v2.psd + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_PostProcessingProfile.asset b/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_PostProcessingProfile.asset new file mode 100644 index 00000000..69fb4d1f --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_PostProcessingProfile.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3070f2eab4f6caa57ea2afa2a3bae8daf7a180950fb35198aca987c5bde200ef +size 4399 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_PostProcessingProfile.asset.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_PostProcessingProfile.asset.meta new file mode 100644 index 00000000..a68db1bc --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_PostProcessingProfile.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: e57c1aba1cf6e0c41be87c3407d99c2e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/SWS_PostProcessingProfile.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain.meta new file mode 100644 index 00000000..ef9835c6 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c12fec05a694f22498d8358fecc70016 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers.meta new file mode 100644 index 00000000..9d465409 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c6b383234f36baf49b79dfc8e64276a0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRiverBed.terrainlayer b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRiverBed.terrainlayer new file mode 100644 index 00000000..2c36cf9f --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRiverBed.terrainlayer @@ -0,0 +1,23 @@ +%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: SWS_DemoRiverBed + m_DiffuseTexture: {fileID: 2800000, guid: 0d690cd688c025e44ba035b72265ddeb, type: 3} + m_NormalMapTexture: {fileID: 2800000, guid: 86d26c5dc5378bf4d86ee26920da7a89, type: 3} + m_MaskMapTexture: {fileID: 2800000, guid: b8e647062b8987d44bbed01d84a6e763, type: 3} + m_TileSize: {x: 8, y: 8} + 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} + m_SmoothnessSource: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRiverBed.terrainlayer.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRiverBed.terrainlayer.meta new file mode 100644 index 00000000..6a2d4de7 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRiverBed.terrainlayer.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 5d54a9292cfd92841903931d49ca72cf +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRiverBed.terrainlayer + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRock.terrainlayer b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRock.terrainlayer new file mode 100644 index 00000000..686575d3 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRock.terrainlayer @@ -0,0 +1,23 @@ +%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: SWS_DemoRock + m_DiffuseTexture: {fileID: 2800000, guid: 97d28e31856a5144c99f43242ea0f52b, type: 3} + m_NormalMapTexture: {fileID: 2800000, guid: 9d8b8be323e48b94f931dbe724e677f0, type: 3} + m_MaskMapTexture: {fileID: 2800000, guid: 873a6da8f0e95944fb4495f6975f02ea, type: 3} + m_TileSize: {x: 25, y: 25} + 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} + m_SmoothnessSource: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRock.terrainlayer.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRock.terrainlayer.meta new file mode 100644 index 00000000..ad99fcb9 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRock.terrainlayer.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: fc4e4e60772b3c1458b37da5042be453 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_DemoRock.terrainlayer + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Grass.terrainlayer b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Grass.terrainlayer new file mode 100644 index 00000000..0ed47fae --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_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: SWS_Grass + m_DiffuseTexture: {fileID: 2800000, guid: 1155a8ce19e03d340a24955f13e352cc, type: 3} + m_NormalMapTexture: {fileID: 0} + 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/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Grass.terrainlayer.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Grass.terrainlayer.meta new file mode 100644 index 00000000..b89eaa36 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Grass.terrainlayer.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: bdc5546cfcf40da4c90bd2e7b806e485 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8574412962073106934 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Grass.terrainlayer + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloor.terrainlayer b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloor.terrainlayer new file mode 100644 index 00000000..295c1864 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloor.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: SWS_OceanFloor + m_DiffuseTexture: {fileID: 2800000, guid: 0bb1fd6f8f0ef3547afdc17cb48a9b78, type: 3} + m_NormalMapTexture: {fileID: 2800000, guid: a8e0e7453d7a439489bb9b996aa4d4df, type: 3} + m_MaskMapTexture: {fileID: 2800000, guid: f2be3c8efa35f624db4a3a3db2669731, type: 3} + m_TileSize: {x: 3, y: 3} + 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/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloor.terrainlayer.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloor.terrainlayer.meta new file mode 100644 index 00000000..cbab228b --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloor.terrainlayer.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 0de57a73ad1dfdc44baac845368c8dc9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloor.terrainlayer + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloorSmooth.terrainlayer b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloorSmooth.terrainlayer new file mode 100644 index 00000000..86f58a75 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloorSmooth.terrainlayer @@ -0,0 +1,23 @@ +%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: SWS_OceanFloorSmooth + m_DiffuseTexture: {fileID: 2800000, guid: cf9f395276d05044e91aecc24a1fe2dc, type: 3} + m_NormalMapTexture: {fileID: 2800000, guid: 64f835a0ac91a3a479f01b96c15979d3, type: 3} + m_MaskMapTexture: {fileID: 0} + m_TileSize: {x: 3, y: 3} + 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} + m_SmoothnessSource: 1 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloorSmooth.terrainlayer.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloorSmooth.terrainlayer.meta new file mode 100644 index 00000000..5cbeebac --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloorSmooth.terrainlayer.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 448979c6ba725c5429ee2eda043db507 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_OceanFloorSmooth.terrainlayer + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandRough.terrainlayer b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandRough.terrainlayer new file mode 100644 index 00000000..21e58ee3 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandRough.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: SWS_SandRough + m_DiffuseTexture: {fileID: 2800000, guid: 25eea6d0103639940922d27f31fb3ff6, type: 3} + m_NormalMapTexture: {fileID: 2800000, guid: 247b6d6d7c5554d41908c887db9477ed, type: 3} + m_MaskMapTexture: {fileID: 0} + m_TileSize: {x: 3, y: 3} + 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/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandRough.terrainlayer.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandRough.terrainlayer.meta new file mode 100644 index 00000000..8959219b --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandRough.terrainlayer.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: baea8ec50d9b3654696bea76e276b824 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8574412962073106934 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandRough.terrainlayer + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandWet.terrainlayer b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandWet.terrainlayer new file mode 100644 index 00000000..930f9b5c --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandWet.terrainlayer @@ -0,0 +1,23 @@ +%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: SWS_SandWet + m_DiffuseTexture: {fileID: 2800000, guid: 25eea6d0103639940922d27f31fb3ff6, type: 3} + m_NormalMapTexture: {fileID: 2800000, guid: 247b6d6d7c5554d41908c887db9477ed, type: 3} + m_MaskMapTexture: {fileID: 0} + m_TileSize: {x: 6, y: 6} + m_TileOffset: {x: 0, y: 0} + m_Specular: {r: 1, g: 1, b: 1, a: 1} + m_Metallic: 0.836 + m_Smoothness: 0.93 + m_NormalScale: 0.1 + m_DiffuseRemapMin: {x: 0, y: 0, z: 0, w: 0} + m_DiffuseRemapMax: {x: 0.990566, y: 0.990566, z: 0.990566, w: 1} + m_MaskMapRemapMin: {x: 0, y: 0, z: 0, w: 0} + m_MaskMapRemapMax: {x: 0, y: 1, z: 0, w: 0.97} + m_SmoothnessSource: 0 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandWet.terrainlayer.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandWet.terrainlayer.meta new file mode 100644 index 00000000..9ddb8e4a --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandWet.terrainlayer.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 0d204ece97503f449bcfe38f071dca1f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8574412962073106934 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_SandWet.terrainlayer + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Seaweed.terrainlayer b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Seaweed.terrainlayer new file mode 100644 index 00000000..4e288e33 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Seaweed.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: SWS_Seaweed + m_DiffuseTexture: {fileID: 2800000, guid: a530fc8955669834fa812124ab2bedb8, type: 3} + m_NormalMapTexture: {fileID: 2800000, guid: c97fe2c58b4f6d345b7f710fa15b7d0a, type: 3} + m_MaskMapTexture: {fileID: 2800000, guid: 2d5d4500adc9a96499d1b219aceff12a, 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/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Seaweed.terrainlayer.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Seaweed.terrainlayer.meta new file mode 100644 index 00000000..6675502e --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Seaweed.terrainlayer.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: d2cefbc51c585504dbc95d216c3c4d45 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 8574412962073106934 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Layers/SWS_Seaweed.terrainlayer + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SW3 Demo Island.asset b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SW3 Demo Island.asset new file mode 100644 index 00000000..e49da70a --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SW3 Demo Island.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22fa2d644a79838455e3189449f1b3e34bd8e4e719bbf7d959cd824310bf6520 +size 5591180 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SW3 Demo Island.asset.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SW3 Demo Island.asset.meta new file mode 100644 index 00000000..b6e67593 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SW3 Demo Island.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: a073565ee13b08344a87a4fd77d72f73 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 15600000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SW3 Demo Island.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoGrass.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoGrass.png new file mode 100644 index 00000000..528c5169 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoGrass.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:699dbbf5cffda0eada678856db265b48df31570fc8fd98a4113d376bff826fdf +size 86375 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoGrass.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoGrass.png.meta new file mode 100644 index 00000000..e0ed7af8 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoGrass.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 1155a8ce19e03d340a24955f13e352cc +timeCreated: 1476281873 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 256 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoGrass.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed.png new file mode 100644 index 00000000..58875122 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3d869d3c0156f45f9dabaab0c1b76acdad656e670f53c27a1d91d693b01c427 +size 179085 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed.png.meta new file mode 100644 index 00000000..d0a5d7dd --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: aa0cc7b69b979b04490afb30a6c813dd +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed_Normals.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed_Normals.png new file mode 100644 index 00000000..6a1737b1 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed_Normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1220c56a2a7fddaaea58f1fec5aec90f51b6272d9512ec9fc2fd674a64cfd1c6 +size 1284054 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed_Normals.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed_Normals.png.meta new file mode 100644 index 00000000..86c97d30 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed_Normals.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 1f4c38b3db308e442bbfee517982f86c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoRiverBed_Normals.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand.png new file mode 100644 index 00000000..99a6cdac --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9b9e85381b27585367c0672184c1fc7776afeac052cdcaf352efca03f0417ad +size 114568 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand.png.meta new file mode 100644 index 00000000..b39997c1 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand.png.meta @@ -0,0 +1,66 @@ +fileFormatVersion: 2 +guid: 25eea6d0103639940922d27f31fb3ff6 +timeCreated: 1520185990 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 256 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand_Normals.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand_Normals.png new file mode 100644 index 00000000..8225fe26 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand_Normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5404a6213385488f48723dfd8d32e1305e85428124a3b18f3fa1c2be70e67689 +size 92353 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand_Normals.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand_Normals.png.meta new file mode 100644 index 00000000..ed9aae04 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand_Normals.png.meta @@ -0,0 +1,122 @@ +fileFormatVersion: 2 +guid: 247b6d6d7c5554d41908c887db9477ed +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSand_Normals.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed.png new file mode 100644 index 00000000..77ef7b9d --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c2f03231d8d3fa807fae1d93ea5cfbeab5f1d7a4077911f027436b348d5c9ae +size 317293 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed.png.meta new file mode 100644 index 00000000..ba53eb9a --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed.png.meta @@ -0,0 +1,98 @@ +fileFormatVersion: 2 +guid: a530fc8955669834fa812124ab2bedb8 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_MaskMap.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_MaskMap.png new file mode 100644 index 00000000..e88dbca8 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_MaskMap.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2b68258ff304ef929bac7babcb54c6277ec57f51fe10a8994bb7dcadb0d7576 +size 145755 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_MaskMap.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_MaskMap.png.meta new file mode 100644 index 00000000..dff6ab25 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_MaskMap.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 2d5d4500adc9a96499d1b219aceff12a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_MaskMap.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_Normals.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_Normals.png new file mode 100644 index 00000000..cbabec0e --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_Normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3fe9996457ffd08528ebe2fa3e6aab9cdddb2f74c9f0bbb28890a624a5f551e +size 452993 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_Normals.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_Normals.png.meta new file mode 100644 index 00000000..5956d08c --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_Normals.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: c97fe2c58b4f6d345b7f710fa15b7d0a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DemoSeaweed_Normals.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DioramaTerrain.asset b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DioramaTerrain.asset new file mode 100644 index 00000000..fab3e3bc --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DioramaTerrain.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11e8c83a740f0a15dcaa978eacecf53ffafcda3e277ef863d3222eb8a0ab8921 +size 1958892 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DioramaTerrain.asset.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DioramaTerrain.asset.meta new file mode 100644 index 00000000..62df4cd8 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DioramaTerrain.asset.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 2ee1615cbcbe33640b12d90955736f47 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 15600000 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_DioramaTerrain.asset + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Diffuse.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Diffuse.png new file mode 100644 index 00000000..43b9a77d --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Diffuse.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:130cd76511b6a35eb658298f2935273820b858d58b5cdb7731a25c7f4e478139 +size 1037367 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Diffuse.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Diffuse.png.meta new file mode 100644 index 00000000..5e0126a3 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Diffuse.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: 0bb1fd6f8f0ef3547afdc17cb48a9b78 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Diffuse.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_MaskMap.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_MaskMap.png new file mode 100644 index 00000000..cd78c79d --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_MaskMap.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6efe0ecba0e6dc4eb4628d7ff6606107fdd67e9aad3ab9b49d5becb04935f86 +size 49330 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_MaskMap.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_MaskMap.png.meta new file mode 100644 index 00000000..49eb8cfc --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_MaskMap.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: f2be3c8efa35f624db4a3a3db2669731 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_MaskMap.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Normal.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Normal.png new file mode 100644 index 00000000..27c61167 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2f1dd5762465a31bd68c2981c93d02d07ccbe6ec10af646e3cdd118720843c6 +size 282701 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Normal.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Normal.png.meta new file mode 100644 index 00000000..7bd10918 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Normal.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: a8e0e7453d7a439489bb9b996aa4d4df +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Diffuse.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Diffuse.png new file mode 100644 index 00000000..d2945a38 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Diffuse.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3c0f2c8c752ed1aba898798c3eeec26bea5d7424b4ead96c58259b0040c853d +size 892556 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Diffuse.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Diffuse.png.meta new file mode 100644 index 00000000..8a099d59 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Diffuse.png.meta @@ -0,0 +1,99 @@ +fileFormatVersion: 2 +guid: cf9f395276d05044e91aecc24a1fe2dc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Diffuse.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Normal.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Normal.png new file mode 100644 index 00000000..59c6033a --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d12643d2a0fdcf29c5923d890f660f4f56b712f5e33a682378576bdfe18ebcbf +size 300836 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Normal.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Normal.png.meta new file mode 100644 index 00000000..0ea7a724 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Normal.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 64f835a0ac91a3a479f01b96c15979d3 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/SWS_OceanFloor_Smooth_Normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_albedo.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_albedo.png new file mode 100644 index 00000000..03bc3841 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7298edd1595d52bf6b0e0faa6e256d907e6326f9c1d4f13832604d8db10b4768 +size 896549 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_albedo.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_albedo.png.meta new file mode 100644 index 00000000..9941d84e --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_albedo.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 97d28e31856a5144c99f43242ea0f52b +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_maskmap.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_maskmap.png new file mode 100644 index 00000000..c5d1195f --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_maskmap.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b67c267aae2ffed4a6e3eaa3dc6be05f46e7c002586343948229b0ca63c61aff +size 696774 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_maskmap.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_maskmap.png.meta new file mode 100644 index 00000000..e79bb6e1 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_maskmap.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 873a6da8f0e95944fb4495f6975f02ea +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_maskmap.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_normal.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_normal.png new file mode 100644 index 00000000..fd8a11ae --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ed009d3bfa7d564602d9efeb339577a402e4b834b26079ed2d453915e537ac3 +size 1707519 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_normal.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_normal.png.meta new file mode 100644 index 00000000..ed14cc58 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_normal.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 9d8b8be323e48b94f931dbe724e677f0 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_Cliff_normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_albedo.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_albedo.png new file mode 100644 index 00000000..bc75f820 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:934f6c42a6bcdb595f7a5e23f42f18d99a19d685e32a2630d676973d7551e5c2 +size 557535 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_albedo.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_albedo.png.meta new file mode 100644 index 00000000..7513a303 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_albedo.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 0d690cd688c025e44ba035b72265ddeb +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_albedo.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_maskmap.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_maskmap.png new file mode 100644 index 00000000..df8e2670 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_maskmap.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:223826614152670a6a3a0084981b847a7f889eb3fe776e6b7911eee564d52518 +size 579871 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_maskmap.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_maskmap.png.meta new file mode 100644 index 00000000..3aef4221 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_maskmap.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: b8e647062b8987d44bbed01d84a6e763 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_maskmap.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_normal.png b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_normal.png new file mode 100644 index 00000000..ec48e15a --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25313ff22cdb34c5fc030f608818eb31aa415fb9ba185d1c656da7ee165ad9a2 +size 1080396 diff --git a/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_normal.png.meta b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_normal.png.meta new file mode 100644 index 00000000..a8d04940 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_normal.png.meta @@ -0,0 +1,124 @@ +fileFormatVersion: 2 +guid: 86d26c5dc5378bf4d86ee26920da7a89 +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: 4 + 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: 4 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/DemoAssets/Terrain/Terrain_RiverBed_normal.png + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/Diorama.unity b/Assets/External/Stylized Water 3/_Demo/Diorama.unity new file mode 100644 index 00000000..cd327d27 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Diorama.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:947c4627ee1c4b213071235c37f1a171f474034393db195c4bd0e26291cd9e08 +size 22174 diff --git a/Assets/External/Stylized Water 3/_Demo/Diorama.unity.meta b/Assets/External/Stylized Water 3/_Demo/Diorama.unity.meta new file mode 100644 index 00000000..8a25fb6b --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Diorama.unity.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: d91f6f3e7c53c6640a2bb87b6609c150 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/Diorama.unity + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/Scripts.meta b/Assets/External/Stylized Water 3/_Demo/Scripts.meta new file mode 100644 index 00000000..d9be1ee9 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c9adddde0deb17243a5b8a29490b6e6c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/Scripts/DemoController.cs b/Assets/External/Stylized Water 3/_Demo/Scripts/DemoController.cs new file mode 100644 index 00000000..5c9b8ea8 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Scripts/DemoController.cs @@ -0,0 +1,235 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. + +using System; +using System.Collections; +using UnityEngine; +#if URP +using UnityEngine.Rendering.Universal; +#endif +using UnityEngine.SceneManagement; +using Debug = UnityEngine.Debug; + +#if UNITY_EDITOR +using UnityEditor; +using UnityEditor.SceneManagement; +#endif + +namespace StylizedWater3.Demo +{ + [ExecuteAlways] + public class DemoController : MonoBehaviour + { + public bool isMainScene; + + [Flags] + public enum Requirements + { + None = 0, + DepthTexture = 1, + OpaqueTexture = 2, + LightCookies = 4, + Decals = 8, + RenderFeature = 16, + HeightPrePass = 32, + Splines = 64 + } + + public Requirements requirements; + + #if UNITY_EDITOR + [Space] + public SceneAsset[] sceneAssets = Array.Empty(); + #endif + + [SerializeField] + private string[] sceneGUIDS = Array.Empty(); + private string[] scenePaths = Array.Empty(); + + #if UNITY_EDITOR + private void OnValidate() + { + sceneGUIDS = new string[sceneAssets.Length]; + scenePaths = new string[sceneAssets.Length]; + for (int i = 0; i < sceneAssets.Length; i++) + { + scenePaths[i] = AssetDatabase.GetAssetPath(sceneAssets[i]); + sceneGUIDS[i] = AssetDatabase.AssetPathToGUID(scenePaths[i]); + } + } + #endif + + private void OnEnable() + { + #if UNITY_EDITOR + Scene scene = this.gameObject.scene; + string sceneName = scene.name; + + string setupMessage = $"Not all functionality in the scene \"{sceneName}\" will work as intended, due to incorrect or missing project settings:\n\n"; + bool requiresSetup = false; + + #if URP + if (UniversalRenderPipeline.asset) + { + if (requirements.HasFlag(Requirements.DepthTexture)) + { + if (UniversalRenderPipeline.asset.supportsCameraDepthTexture == false) + { + requiresSetup = true; + setupMessage += "• Depth texture isn't enabled. Water depth will not look correct.\n"; + } + } + + if (requirements.HasFlag(Requirements.OpaqueTexture)) + { + if (UniversalRenderPipeline.asset.supportsCameraOpaqueTexture == false) + { + requiresSetup = true; + setupMessage += "• Opaque texture isn't enabled. Refraction effect cannot work\n"; + } + } + + if (requirements.HasFlag(Requirements.LightCookies)) + { + if (UniversalRenderPipeline.asset.supportsLightCookies == false) + { + requiresSetup = true; + setupMessage += "• Light cookies aren't enabled\n"; + } + + LightCookieFormat lightCookieFormat = PipelineUtilities.GetDefaultLightCookieFormat(); + if (lightCookieFormat < LightCookieFormat.ColorHigh) + { + requiresSetup = true; + setupMessage += "• Light cookie format isn't set to \"Color High\" or \"Color HDR\"\n"; + } + } + + if (requirements.HasFlag(Requirements.Decals)) + { + if (PipelineUtilities.IsDecalRenderFeatureSetup() == false) + { + requiresSetup = true; + setupMessage += "• Decal render feature isn't set up\n"; + } + } + + if (requirements.HasFlag(Requirements.RenderFeature)) + { + if (PipelineUtilities.RenderFeatureAdded() == false) + { + requiresSetup = true; + setupMessage += "• Stylized Water render feature isn't set up\n"; + } + } + + if (requirements.HasFlag(Requirements.HeightPrePass)) + { + StylizedWaterRenderFeature renderFeature = (StylizedWaterRenderFeature)PipelineUtilities.GetRenderFeature(); + + if (renderFeature == null || renderFeature.heightPrePassSettings.enable == false) + { + requiresSetup = true; + setupMessage += "• Height pre-pass is disabled on the Stylized Water render feature\n"; + } + } + + } + #endif + + if (requirements.HasFlag(Requirements.Splines)) + { + #if !SPLINES + requiresSetup = true; + setupMessage += "• Splines package isn't installed\n"; + #endif + + } + + setupMessage += "\nIf you're unsure what this means, please consult the \"Getting Started\" documentation section for instructions."; + + if (Application.isPlaying == false && UnityEditor.BuildPipeline.isBuildingPlayer == false && Application.isBatchMode == false) + { + if (requiresSetup) + { + UnityEditor.EditorUtility.DisplayDialog("Stylized Water 3", setupMessage, "OK"); + } + } + #endif + + SceneManager.sceneLoaded += OnSceneLoaded; + + if (Application.isPlaying == false) + { + OpenScenes(); + } + else + { + StartCoroutine(OpenScenesRoutine()); + } + } + + private void OnSceneLoaded(Scene scene, LoadSceneMode loadSceneMode) + { + if (isMainScene) + { + SceneManager.SetActiveScene(this.gameObject.scene); + } + } + + private IEnumerator OpenScenesRoutine() + { + yield return new WaitForEndOfFrame(); + OpenScenes(); + } + + void OpenScenes() + { + for (int i = 0; i < scenePaths.Length; i++) + { + string path = scenePaths[i]; + + //Scene not found, possibly an extension not currently installed or a dev-only scene + if (path == string.Empty) continue; + + Scene scene = SceneManager.GetSceneByPath(path); + + if (scene.isLoaded == false) + { + //Debug.Log($"scene {path} being loaded"); + + if (Application.isPlaying) + { + //SceneManager.LoadScene(path, LoadSceneMode.Additive); + StartCoroutine(LoadScene(path)); + } + else + { + #if UNITY_EDITOR + EditorSceneManager.OpenScene(path, OpenSceneMode.Additive); + #endif + } + + //Debug.Log($"{path} loaded"); + } + } + } + + IEnumerator LoadScene(string path) + { + AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(path, LoadSceneMode.Additive); + + while (!asyncLoad.isDone) + { + yield return null; + } + } + + private void OnDisable() + { + SceneManager.sceneLoaded -= OnSceneLoaded; + } + } +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/_Demo/Scripts/DemoController.cs.meta b/Assets/External/Stylized Water 3/_Demo/Scripts/DemoController.cs.meta new file mode 100644 index 00000000..8c76abca --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Scripts/DemoController.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9ce943a824c74c80851ddb105b5964c9 +timeCreated: 1717490223 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/Scripts/DemoController.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/Scripts/DemoLightingController.cs b/Assets/External/Stylized Water 3/_Demo/Scripts/DemoLightingController.cs new file mode 100644 index 00000000..4c25a0c1 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Scripts/DemoLightingController.cs @@ -0,0 +1,317 @@ +// Stylized Water 3 by Staggart Creations (http://staggart.xyz) +// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms) +// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited! +// • Uploading this file to a public repository will subject it to an automated DMCA takedown request. +#if (ENABLE_INPUT_SYSTEM && INPUT_SYSTEM_INSTALLED) +#define USE_INPUT_SYSTEM +#endif + + +using System; +using UnityEngine; +using UnityEngine.Rendering; +#if UNITY_EDITOR +using UnityEditor; +#endif +#if USE_INPUT_SYSTEM +using UnityEngine.InputSystem; +#endif + +namespace StylizedWater3.Demo +{ + [ExecuteAlways] + public class DemoLightingController : MonoBehaviour + { + [Serializable] + public class Preset + { + public string name; + public Material skybox; + + [Header("Direct light")] + + [Range(0f, 90f)] + public float sunAngle = 45; + [Range(0f, 360f)] + public float sunRotation = 0f; + + public float intensity = 1f; + public Color tint = Color.white; + + [Header("Indirect light")] + public Color ambientColor = Color.gray; + + [Header("Fog")] + public Color fogColor = Color.white; + [Range(0.0001f, 0.01f)] + public float fogDensity = 0.002f; + } + + public static bool ShowGUI = true; + + [Min(0)] + public int activeIndex = 0; + public Preset[] presets = Array.Empty(); + + public ReflectionProbe reflectionProbe; + + [NonSerialized] + private Material m_skybox; + private Light sun; + + [SerializeField] + private bool realtimeReflectionProbesDisabled; + + #if USE_INPUT_SYSTEM + private InputAction[] numberKeyActions; + #endif + + private void OnEnable() + { + realtimeReflectionProbesDisabled = QualitySettings.realtimeReflectionProbes; + + if (!realtimeReflectionProbesDisabled) + { + //Debug.LogWarning("Realtime Reflection Probes are disabled in your Quality Settings, this is by default in new Unity projects. To ensure the water looks correct, it has been enabled temporarily."); + //QualitySettings.realtimeReflectionProbes = true; + } + + ApplyPreset(activeIndex); + + #if UNITY_EDITOR + UnityEditor.SceneView.duringSceneGui += OnSceneGUI; + #endif + + SetupInput(); + } + + private void SetupInput() + { + #if USE_INPUT_SYSTEM + numberKeyActions = new InputAction[9]; + + for (int i = 0; i < 9; i++) + { + int presetIndex = i; + numberKeyActions[i] = new InputAction($"Preset{presetIndex + 1}", binding: $"/{presetIndex + 1}"); + numberKeyActions[i].performed += ctx => OnNumberKeyPressed(presetIndex); + numberKeyActions[i].Enable(); + } + #endif + } + + private void OnDisable() + { + RenderSettings.defaultReflectionMode = DefaultReflectionMode.Skybox; + + #if UNITY_EDITOR + UnityEditor.SceneView.duringSceneGui -= OnSceneGUI; + #endif + + //Do not meddle with project settings, restore changes + if (realtimeReflectionProbesDisabled == false && QualitySettings.realtimeReflectionProbes == true) QualitySettings.realtimeReflectionProbes = false; + + #if USE_INPUT_SYSTEM + if (numberKeyActions != null) + { + foreach (var action in numberKeyActions) + { + action.Disable(); + action.Dispose(); + } + } + #endif + } + + private readonly int SkyboxTexID = Shader.PropertyToID("_Tex"); + + public void ApplyPreset(int index = -1) + { + if (index < 0) index = activeIndex; + + if (this.gameObject.activeInHierarchy == false) return; + if (index > presets.Length) return; + + activeIndex = index; + + Preset preset = presets[index]; + + Light[] lights = FindObjectsByType(FindObjectsInactive.Exclude, FindObjectsSortMode.None); + for (int i = 0; i < lights.Length; i++) + { + if (lights[i].type == LightType.Directional) sun = lights[i]; + } + + if (m_skybox == null || preset.skybox.GetTexture(SkyboxTexID) != RenderSettings.skybox.GetTexture(SkyboxTexID)) + { + CreateSkyboxMat(preset.skybox); + } + + sun.intensity = preset.intensity; + sun.color = preset.tint; + + m_skybox.CopyPropertiesFromMaterial(preset.skybox); + m_skybox.SetTexture(SkyboxTexID, preset.skybox.GetTexture(SkyboxTexID)); + + sun.transform.eulerAngles = new Vector3(preset.sunAngle, preset.sunRotation, 0f); + m_skybox.SetFloat("_Rotation", -sun.transform.eulerAngles.y); + + RenderSettings.skybox = m_skybox; + RenderSettings.fogColor = preset.fogColor; + RenderSettings.fogDensity = preset.fogDensity; + + RenderSettings.ambientLight = preset.ambientColor; + + if (reflectionProbe) + { + reflectionProbe.RenderProbe(); + //RenderSettings.defaultReflectionMode = DefaultReflectionMode.Custom; + //RenderSettings.customReflectionTexture = reflectionProbe.texture; + } + else + { + //RenderSettings.defaultReflectionMode = DefaultReflectionMode.Skybox; + } + } + + private void CreateSkyboxMat(Material source) + { + m_skybox = new Material(source); + m_skybox.name = "Temp skybox"; + } + + private void OnNumberKeyPressed(int index) + { + if (index < presets.Length) + { + ApplyPreset(index); + } + } + + #if UNITY_EDITOR + private void OnSceneGUI(SceneView sceneView) + { + Handles.BeginGUI(); + OnGUI(); + Handles.EndGUI(); + } + #endif + + private void OnGUI() + { + if (!ShowGUI) return; + + using (new GUILayout.HorizontalScope(GUILayout.Width(300f))) + { + GUILayout.Label(" Lighting Presets:", GUI.skin.label); + + for (int i = 0; i < presets.Length; i++) + { + GUI.enabled = (activeIndex != i); + if (GUILayout.Button(presets[i].name)) + { + ApplyPreset(i); + + #if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(this); + #endif + } + } + + GUI.enabled = true; + } + } + } + + #if UNITY_EDITOR + [CustomEditor(typeof(DemoLightingController))] + public class DemoLightingControllerEditor : Editor + { + private DemoLightingController component; + private SerializedProperty presets; + + private SerializedProperty reflectionProbe; + + private string proSkinPrefix => EditorGUIUtility.isProSkin ? "d_" : ""; + + private void OnEnable() + { + component = (DemoLightingController)target; + presets = serializedObject.FindProperty("presets"); + reflectionProbe = serializedObject.FindProperty("reflectionProbe"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + EditorGUI.BeginChangeCheck(); + + EditorGUILayout.PropertyField(reflectionProbe); + DemoLightingController.ShowGUI = EditorGUILayout.Toggle("Show GUI", DemoLightingController.ShowGUI); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Presets", EditorStyles.boldLabel); + + for (int i = 0; i < presets.arraySize; i++) + { + if (GUILayout.Button("Set Active")) + { + component.activeIndex = i; + component.ApplyPreset(i); + + EditorUtility.SetDirty(component); + } + + using (new EditorGUI.DisabledGroupScope(component.activeIndex != i)) + { + EditorGUI.BeginChangeCheck(); + + using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox)) + { + using (new EditorGUILayout.VerticalScope()) + { + GUILayout.Space(5f); + + SerializedProperty param = presets.GetArrayElementAtIndex(i); + + EditorGUILayout.PropertyField(param); + + GUILayout.Space(5f); + } + + if (GUILayout.Button(new GUIContent("", EditorGUIUtility.IconContent(proSkinPrefix + "TreeEditor.Trash").image, "Remove parameter"), EditorStyles.miniButton, GUILayout.Width(30f))) presets.DeleteArrayElementAtIndex(i); + + } + + if (EditorGUI.EndChangeCheck()) + { + if (component.activeIndex == i) + { + component.ApplyPreset(i); + } + } + } + + GUILayout.Space(3f); + } + + using (new EditorGUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + + if (GUILayout.Button(new GUIContent(" Add", EditorGUIUtility.IconContent(proSkinPrefix + "Toolbar Plus").image, "Insert new parameter"), EditorStyles.miniButton, GUILayout.Width(60f))) + { + presets.InsertArrayElementAtIndex(presets.arraySize); + } + } + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + } + } + } + #endif + +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/_Demo/Scripts/DemoLightingController.cs.meta b/Assets/External/Stylized Water 3/_Demo/Scripts/DemoLightingController.cs.meta new file mode 100644 index 00000000..f0d041cf --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Scripts/DemoLightingController.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: cba965c6fe284869ba24e6006356c9a9 +timeCreated: 1727092186 +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/Scripts/DemoLightingController.cs + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/Scripts/sc.stylizedwater3.demo.runtime.asmref b/Assets/External/Stylized Water 3/_Demo/Scripts/sc.stylizedwater3.demo.runtime.asmref new file mode 100644 index 00000000..26065a71 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Scripts/sc.stylizedwater3.demo.runtime.asmref @@ -0,0 +1,3 @@ +{ + "reference": "GUID:4fd586483f5d4a24491f09604d74752b" +} \ No newline at end of file diff --git a/Assets/External/Stylized Water 3/_Demo/Scripts/sc.stylizedwater3.demo.runtime.asmref.meta b/Assets/External/Stylized Water 3/_Demo/Scripts/sc.stylizedwater3.demo.runtime.asmref.meta new file mode 100644 index 00000000..c711d92a --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Scripts/sc.stylizedwater3.demo.runtime.asmref.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ca51cc01654c7e348bcc3eae6ff63108 +AssemblyDefinitionReferenceImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/Scripts/sc.stylizedwater3.demo.runtime.asmref + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo.meta b/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo.meta new file mode 100644 index 00000000..7e6de314 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2aea16892c098b0418cbbc80897cb590 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo.unity b/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo.unity new file mode 100644 index 00000000..51160623 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e25c5831a6a14fb3afba5835e336c9ba139e5dbd8dd6526e983ee29ea8b22d30 +size 4099812 diff --git a/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo.unity.meta b/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo.unity.meta new file mode 100644 index 00000000..c8a82e59 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo.unity.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 2477c7e727bfe2f4bba7e621f08fd50b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo.unity + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo/SW3 Demo Lighting Settings.lighting b/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo/SW3 Demo Lighting Settings.lighting new file mode 100644 index 00000000..2426d6f3 --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo/SW3 Demo Lighting Settings.lighting @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SW3 Demo Lighting Settings + serializedVersion: 9 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_LightmapSizeFixed: 0 + m_UseMipmapLimits: 1 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_EnableWorkerProcessBaking: 1 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 1 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo/SW3 Demo Lighting Settings.lighting.meta b/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo/SW3 Demo Lighting Settings.lighting.meta new file mode 100644 index 00000000..655dc51f --- /dev/null +++ b/Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo/SW3 Demo Lighting Settings.lighting.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 19b16e64ac475924a871008af0ac99f3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/_Demo/Stylized Water 3 Demo/SW3 Demo + Lighting Settings.lighting + uploadId: 770287 diff --git a/Assets/External/Stylized Water 3/package.json b/Assets/External/Stylized Water 3/package.json new file mode 100644 index 00000000..865a20c3 --- /dev/null +++ b/Assets/External/Stylized Water 3/package.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca1c9f24075aad0907e65d15cee77e7a0b7c378ef23c235bd2c1f0468f581b76 +size 606 diff --git a/Assets/External/Stylized Water 3/package.json.meta b/Assets/External/Stylized Water 3/package.json.meta new file mode 100644 index 00000000..8780abc0 --- /dev/null +++ b/Assets/External/Stylized Water 3/package.json.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 57a60847d1f91e14c9e65430ffc7c71c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 287769 + packageName: Stylized Water 3 + packageVersion: 3.2.1 + assetPath: Assets/External/Stylized Water 3/package.json + uploadId: 770287 diff --git a/Assets/Resources/Settings/Streamingle Render Pipeline Asset.asset b/Assets/Resources/Settings/Streamingle Render Pipeline Asset.asset index ec3c2b6c..a61368ec 100644 --- a/Assets/Resources/Settings/Streamingle Render Pipeline Asset.asset +++ b/Assets/Resources/Settings/Streamingle Render Pipeline Asset.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:733237925d16ca9b91531d94adb187a98a4d1d83a26958a74a7ba3fd66039502 -size 4431 +oid sha256:6387b206982a696eb39abcd29ed154075793f81ba50c5e3eb6262fa649c6d22f +size 4536 diff --git a/Assets/Resources/Settings/Streamingle Render Pipeline Asset_Renderer.asset b/Assets/Resources/Settings/Streamingle Render Pipeline Asset_Renderer.asset index 9a3af26c..c5b8fde2 100644 --- a/Assets/Resources/Settings/Streamingle Render Pipeline Asset_Renderer.asset +++ b/Assets/Resources/Settings/Streamingle Render Pipeline Asset_Renderer.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73857e3c8045deaee8b0a8cc4abf050c157278fd0b736daee1e2b4b7d7c60a44 -size 14659 +oid sha256:aa2fc5d2364f88b34db86a555b15d2d7a8441c8147e2f321c2a1f56f2c4405a0 +size 15608