ADD: Stylized Water 3 에셋 추가
This commit is contained in:
parent
82a1df91a7
commit
18dfd36017
8
Assets/External/Stylized Water 3.meta
vendored
Normal file
8
Assets/External/Stylized Water 3.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e6f78aeba0793a949852face9715ac7b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/Stylized Water 3/CHANGELOG.md
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/CHANGELOG.md
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
14
Assets/External/Stylized Water 3/CHANGELOG.md.meta
vendored
Normal file
14
Assets/External/Stylized Water 3/CHANGELOG.md.meta
vendored
Normal file
@ -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
|
||||
6
Assets/External/Stylized Water 3/Documentation.url
vendored
Normal file
6
Assets/External/Stylized Water 3/Documentation.url
vendored
Normal file
@ -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
|
||||
14
Assets/External/Stylized Water 3/Documentation.url.meta
vendored
Normal file
14
Assets/External/Stylized Water 3/Documentation.url.meta
vendored
Normal file
@ -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
|
||||
8
Assets/External/Stylized Water 3/Editor.meta
vendored
Normal file
8
Assets/External/Stylized Water 3/Editor.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7e7bfc054e36c424b97776205fef2d54
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
419
Assets/External/Stylized Water 3/Editor/AssetInfo.cs
vendored
Normal file
419
Assets/External/Stylized Water 3/Editor/AssetInfo.cs
vendored
Normal file
@ -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<string, int> REQUIRED_PATCH_VERSIONS = new Dictionary<string, int>()
|
||||
{
|
||||
{ "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 <b>v" + lastestURPVersion + "</b> 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 <i>" + urpPackage.dependencies[i].name + "</i> 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("<b>Package root</b> " + 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("<b>Asset store API</b> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Assets/External/Stylized Water 3/Editor/AssetInfo.cs.meta
vendored
Normal file
18
Assets/External/Stylized Water 3/Editor/AssetInfo.cs.meta
vendored
Normal file
@ -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
|
||||
3
Assets/External/Stylized Water 3/Editor/Inspectors.meta
vendored
Normal file
3
Assets/External/Stylized Water 3/Editor/Inspectors.meta
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6ed5097af7d138040808f978ab8fbaa8
|
||||
timeCreated: 1701083972
|
||||
137
Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs
vendored
Normal file
137
Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs
vendored
Normal file
@ -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);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs.meta
vendored
Normal file
18
Assets/External/Stylized Water 3/Editor/Inspectors/AlignToWaterInspector.cs.meta
vendored
Normal file
@ -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
|
||||
92
Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs
vendored
Normal file
92
Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs
vendored
Normal file
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Inspectors/OceanFollowBehaviourInspector.cs.meta
vendored
Normal file
@ -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
|
||||
361
Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs
vendored
Normal file
361
Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs
vendored
Normal file
@ -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>(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 <i>" + path + "</i>");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
18
Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs.meta
vendored
Normal file
18
Assets/External/Stylized Water 3/Editor/Inspectors/PlanarReflectionRendererInspector.cs.meta
vendored
Normal file
@ -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
|
||||
158
Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs
vendored
Normal file
158
Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs
vendored
Normal file
@ -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<UnityEngine.Rendering.Universal.RenderGraphSettings>();
|
||||
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
|
||||
10
Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Inspectors/RenderFeatureEditor.cs.meta
vendored
Normal file
@ -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
|
||||
114
Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs
vendored
Normal file
114
Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs
vendored
Normal file
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Inspectors/WaterGridInspector.cs.meta
vendored
Normal file
@ -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
|
||||
169
Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs
vendored
Normal file
169
Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs
vendored
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Inspectors/WaterMeshImporterInspector.cs.meta
vendored
Normal file
@ -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
|
||||
149
Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs
vendored
Normal file
149
Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs
vendored
Normal file
@ -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<Texture>("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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Inspectors/WaterObjectInspector.cs.meta
vendored
Normal file
@ -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
|
||||
381
Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs
vendored
Normal file
381
Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs
vendored
Normal file
@ -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<Shader>(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<TextAsset>(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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Inspectors/WaterShaderImporterEditor.cs.meta
vendored
Normal file
@ -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
|
||||
732
Assets/External/Stylized Water 3/Editor/Installer.cs
vendored
Normal file
732
Assets/External/Stylized Water 3/Editor/Installer.cs
vendored
Normal file
@ -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<SetupItem> SetupItems = new List<SetupItem>();
|
||||
|
||||
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 <b>{AssetInfo.VersionChecking.MinRequiredUnityVersion}</b>. 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<Material> brokenWaterMaterials = new List<Material>();
|
||||
|
||||
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<StylizedWaterRenderFeature>(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<StylizedWaterRenderFeature>(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<RenderGraphSettings>();
|
||||
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<UniversalRendererData> 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<WaterObject> invalidObjects = new List<WaterObject>();
|
||||
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);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/Installer.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Installer.cs.meta
vendored
Normal file
@ -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
|
||||
3
Assets/External/Stylized Water 3/Editor/PropertyDrawers.meta
vendored
Normal file
3
Assets/External/Stylized Water 3/Editor/PropertyDrawers.meta
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 80efacfdc732f144aa910ee5c422e086
|
||||
timeCreated: 1716196788
|
||||
200
Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs
vendored
Normal file
200
Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs
vendored
Normal file
@ -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);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/PropertyDrawers/HeightInterfaceDrawer.cs.meta
vendored
Normal file
@ -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
|
||||
66
Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs
vendored
Normal file
66
Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs
vendored
Normal file
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/PropertyDrawers/MinMaxSlider.cs.meta
vendored
Normal file
@ -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
|
||||
53
Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs
vendored
Normal file
53
Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs
vendored
Normal file
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/PropertyDrawers/WaveProfileDrawer.cs.meta
vendored
Normal file
@ -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
|
||||
8
Assets/External/Stylized Water 3/Editor/Resources.meta
vendored
Normal file
8
Assets/External/Stylized Water 3/Editor/Resources.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c930fe87ed5a85d4fbeabe2b7c876659
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
154
Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png.meta
vendored
Normal file
154
Assets/External/Stylized Water 3/Editor/Resources/water-object-icon.png.meta
vendored
Normal file
@ -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
|
||||
BIN
Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
154
Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png.meta
vendored
Normal file
154
Assets/External/Stylized Water 3/Editor/Resources/water-shader-icon.png.meta
vendored
Normal file
@ -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
|
||||
BIN
Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
124
Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png.meta
vendored
Normal file
124
Assets/External/Stylized Water 3/Editor/Resources/wave-profile-icon.png.meta
vendored
Normal file
@ -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
|
||||
3
Assets/External/Stylized Water 3/Editor/Shader.meta
vendored
Normal file
3
Assets/External/Stylized Water 3/Editor/Shader.meta
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 224b51d419be4102913e055f9be99871
|
||||
timeCreated: 1729855785
|
||||
142
Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs
vendored
Normal file
142
Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs
vendored
Normal file
File diff suppressed because one or more lines are too long
10
Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Shader/FogIntegration.cs.meta
vendored
Normal file
@ -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
|
||||
1736
Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs
vendored
Normal file
1736
Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs
vendored
Normal file
File diff suppressed because it is too large
Load Diff
18
Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs.meta
vendored
Normal file
18
Assets/External/Stylized Water 3/Editor/Shader/MaterialUI.cs.meta
vendored
Normal file
@ -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
|
||||
316
Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs
vendored
Normal file
316
Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs
vendored
Normal file
@ -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<Shader>(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<ShaderKeyword> StrippedKeywords = new List<ShaderKeyword>();
|
||||
|
||||
//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<StylizedWaterRenderFeature>(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<ShaderCompilerData> 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<ShaderCompilerData> 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<ShaderCompilerData> 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
|
||||
}
|
||||
}
|
||||
18
Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs.meta
vendored
Normal file
18
Assets/External/Stylized Water 3/Editor/Shader/ShaderConfigurator.cs.meta
vendored
Normal file
@ -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
|
||||
484
Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs
vendored
Normal file
484
Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs
vendored
Normal file
@ -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<Object> passes = new List<Object>(importer.settings.additionalPasses);
|
||||
|
||||
if (StylizedWaterEditor.UnderwaterRenderingInstalled())
|
||||
{
|
||||
string maskPassGUID = "46c22cecd601401a875ca4554695986f";
|
||||
string maskPassPath = AssetDatabase.GUIDToAssetPath(maskPassGUID);;
|
||||
|
||||
Object underwaterMaskPass = AssetDatabase.LoadAssetAtPath<Object>(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);
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Shader/TemplateParser.cs.meta
vendored
Normal file
@ -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
|
||||
361
Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs
vendored
Normal file
361
Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs
vendored
Normal file
@ -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<Object> template;
|
||||
|
||||
[Space]
|
||||
|
||||
public WaterShaderSettings settings = new WaterShaderSettings();
|
||||
|
||||
/// <summary>
|
||||
/// 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
|
||||
/// </summary>
|
||||
//[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<string> dependencies = new List<string>();
|
||||
|
||||
[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<Shader>(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<Texture2D>(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<Shader>(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<Directive> customIncludeDirectives = new List<Directive>();
|
||||
[FormerlySerializedAs("passes")]
|
||||
[Tooltip("Pass blocks that are to be added to the shader template")]
|
||||
public Object[] additionalPasses = new Object[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Shader/WaterShaderImporter.cs.meta
vendored
Normal file
@ -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
|
||||
342
Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs
vendored
Normal file
342
Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs
vendored
Normal file
@ -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<Material>(AssetDatabase.GUIDToAssetPath("e8333e151973f1c4188ff534979c823b"));
|
||||
Mesh mesh = AssetDatabase.LoadAssetAtPath<Mesh>(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<WaterGrid>();
|
||||
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<ScriptableRendererData> renderers = PipelineUtilities.SetupRenderFeature<StylizedWaterRenderFeature>("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<PlanarReflectionRenderer>();
|
||||
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<ReflectionProbe>();
|
||||
|
||||
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<AlignToWater>())
|
||||
{
|
||||
Undo.AddComponent<AlignToWater>(t.gameObject);
|
||||
|
||||
EditorUtility.SetDirty(t);
|
||||
}
|
||||
}
|
||||
|
||||
public class PopUpMaterialEditor : EditorWindow
|
||||
{
|
||||
private Object target;
|
||||
private MaterialEditor editor;
|
||||
|
||||
public static void Create(Object asset)
|
||||
{
|
||||
var window = CreateWindow<PopUpMaterialEditor>($"{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<PopUpAssetEditor>($"{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<StylizedWaterRenderFeature>();
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configures the assigned water material to render as double-sided, which is required for underwater rendering
|
||||
/// </summary>
|
||||
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
|
||||
}
|
||||
}
|
||||
18
Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs.meta
vendored
Normal file
18
Assets/External/Stylized Water 3/Editor/StylizedWaterEditor.cs.meta
vendored
Normal file
@ -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
|
||||
1089
Assets/External/Stylized Water 3/Editor/UI.cs
vendored
Normal file
1089
Assets/External/Stylized Water 3/Editor/UI.cs
vendored
Normal file
File diff suppressed because one or more lines are too long
18
Assets/External/Stylized Water 3/Editor/UI.cs.meta
vendored
Normal file
18
Assets/External/Stylized Water 3/Editor/UI.cs.meta
vendored
Normal file
@ -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
|
||||
51
Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs
vendored
Normal file
51
Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs
vendored
Normal file
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
18
Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs.meta
vendored
Normal file
18
Assets/External/Stylized Water 3/Editor/WaterMeshImporter.cs.meta
vendored
Normal file
@ -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
|
||||
396
Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs
vendored
Normal file
396
Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs
vendored
Normal file
@ -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<WizardWindow>("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<WaveProfile>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/WaveProfileEditor.cs.meta
vendored
Normal file
@ -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
|
||||
3
Assets/External/Stylized Water 3/Editor/Windows.meta
vendored
Normal file
3
Assets/External/Stylized Water 3/Editor/Windows.meta
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2008754729f6447f9e7941b58df654fc
|
||||
timeCreated: 1717592404
|
||||
224
Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs
vendored
Normal file
224
Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs
vendored
Normal file
@ -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<HeightQueryInspector>(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<int, HeightQuerySystem.AsyncRequest> 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<int, HeightQuerySystem.AsyncRequest> 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($"<b>Label:</b> {request.Value.label}", selected ? labelStyleSelected : labelStyle, GUILayout.Width(200f));
|
||||
EditorGUILayout.LabelField($"<b>ID:</b> {request.Value.hashCode}", selected ? labelStyleSelected : labelStyle, GUILayout.Width(75f));
|
||||
EditorGUILayout.LabelField($"<b>Samples:</b> {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($"<b>Indices:</b> {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($"<b>Heights:</b> {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++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Windows/HeightQuerySystemEditor.cs.meta
vendored
Normal file
@ -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
|
||||
652
Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs
vendored
Normal file
652
Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs
vendored
Normal file
File diff suppressed because one or more lines are too long
18
Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs.meta
vendored
Normal file
18
Assets/External/Stylized Water 3/Editor/Windows/HelpWindow.cs.meta
vendored
Normal file
@ -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
|
||||
162
Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs
vendored
Normal file
162
Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs
vendored
Normal file
@ -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<RenderTargetDebuggerWindow>(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);
|
||||
}
|
||||
}
|
||||
}
|
||||
10
Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs.meta
vendored
Normal file
10
Assets/External/Stylized Water 3/Editor/Windows/RenderTargetDebuggerWindow.cs.meta
vendored
Normal file
@ -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
|
||||
47
Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef
vendored
Normal file
47
Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef
vendored
Normal file
@ -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
|
||||
}
|
||||
14
Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef.meta
vendored
Normal file
14
Assets/External/Stylized Water 3/Editor/sc.stylizedwater3.editor.asmdef.meta
vendored
Normal file
@ -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
|
||||
8
Assets/External/Stylized Water 3/Materials.meta
vendored
Normal file
8
Assets/External/Stylized Water 3/Materials.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: deb122f1b69a0c14ea648bcb2897e785
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/External/Stylized Water 3/Materials/Effects.meta
vendored
Normal file
8
Assets/External/Stylized Water 3/Materials/Effects.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d086144747bdc1f4eb7d97e0368d84f6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/External/Stylized Water 3/Materials/Effects/Decals.meta
vendored
Normal file
8
Assets/External/Stylized Water 3/Materials/Effects/Decals.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1625660177ce6704e8e36a0bad90bedc
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures.meta
vendored
Normal file
8
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 21788edd4e6eeb248bb013c13e4d6c96
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png.meta
vendored
Normal file
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Albedo.png.meta
vendored
Normal file
@ -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
|
||||
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png.meta
vendored
Normal file
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Duckweed_Normal.png.meta
vendored
Normal file
@ -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
|
||||
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
150
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png.meta
vendored
Normal file
150
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Foam.png.meta
vendored
Normal file
@ -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
|
||||
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png.meta
vendored
Normal file
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_albedo.png.meta
vendored
Normal file
@ -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
|
||||
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png.meta
vendored
Normal file
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Lillypads_normal.png.meta
vendored
Normal file
@ -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
|
||||
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png.meta
vendored
Normal file
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick.png.meta
vendored
Normal file
@ -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
|
||||
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png.meta
vendored
Normal file
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSlick_normal.png.meta
vendored
Normal file
@ -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
|
||||
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png.meta
vendored
Normal file
122
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_OilSpill.png.meta
vendored
Normal file
@ -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
|
||||
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png
(Stored with Git LFS)
vendored
Normal file
BIN
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
137
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png.meta
vendored
Normal file
137
Assets/External/Stylized Water 3/Materials/Effects/Decals/Textures/Decal_Reticle.png.meta
vendored
Normal file
@ -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
|
||||
99
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Duckweed.mat
vendored
Normal file
99
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Duckweed.mat
vendored
Normal file
@ -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
|
||||
16
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Duckweed.mat.meta
vendored
Normal file
16
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Duckweed.mat.meta
vendored
Normal file
@ -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
|
||||
99
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Foam.mat
vendored
Normal file
99
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Foam.mat
vendored
Normal file
@ -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
|
||||
16
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Foam.mat.meta
vendored
Normal file
16
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Foam.mat.meta
vendored
Normal file
@ -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
|
||||
99
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Lillypads.mat
vendored
Normal file
99
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Lillypads.mat
vendored
Normal file
@ -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
|
||||
16
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Lillypads.mat.meta
vendored
Normal file
16
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Lillypads.mat.meta
vendored
Normal file
@ -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
|
||||
98
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Slick.mat
vendored
Normal file
98
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Slick.mat
vendored
Normal file
@ -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
|
||||
16
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Slick.mat.meta
vendored
Normal file
16
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Slick.mat.meta
vendored
Normal file
@ -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
|
||||
99
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Spill.mat
vendored
Normal file
99
Assets/External/Stylized Water 3/Materials/Effects/Decals/Water Decal Oil Spill.mat
vendored
Normal file
@ -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
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user