From 12a41221345744156c49320ed4067397788850b5 Mon Sep 17 00:00:00 2001 From: max Date: Wed, 31 Mar 2021 01:20:21 +0200 Subject: [PATCH] Pressets. --- Editor/Presets/Base.asset | 28 +++++++++ Editor/Presets/Base.asset.meta | 8 +++ Editor/Presets/GridUnlit.asset | 21 ++++--- Editor/Presets/Overdraw.asset | 6 +- .../ReplacementShaderSetupScriptableObject.cs | 3 +- Editor/SceneDebugViewerWindow.cs | 59 +++++++++++++------ Runtime/Shaders/Surface.shader | 34 +++++++++++ Runtime/Shaders/Surface.shader.meta | 10 ++++ Runtime/Shaders/TriPlanarTextureUnlit.shader | 4 +- 9 files changed, 141 insertions(+), 32 deletions(-) create mode 100644 Editor/Presets/Base.asset create mode 100644 Editor/Presets/Base.asset.meta create mode 100644 Runtime/Shaders/Surface.shader create mode 100644 Runtime/Shaders/Surface.shader.meta diff --git a/Editor/Presets/Base.asset b/Editor/Presets/Base.asset new file mode 100644 index 0000000..ff20d56 --- /dev/null +++ b/Editor/Presets/Base.asset @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa272ccd1306c545b68254a527f8025, type: 3} + m_Name: Overdraw + m_EditorClassIdentifier: + content: + m_Text: + m_Image: {fileID: 2800000, guid: 0723191ce0fb9d44ebece6c36fe4776f, type: 3} + m_Tooltip: Overdraw - Preview the scene overdraw. + shader: {fileID: 4800000, guid: 9f96928510529524c9190ccf618ceaf8, type: 3} + replacementTag: + parameters: + - m_name: _RS_Color + m_parameterType: 2 + m_texture: {fileID: 0} + m_vector: {x: 0, y: 0, z: 0, w: 0} + m_color: {r: 1, g: 0, b: 0, a: 0.101960786} + m_float: 0 + m_int: 0 diff --git a/Editor/Presets/Base.asset.meta b/Editor/Presets/Base.asset.meta new file mode 100644 index 0000000..c71e19e --- /dev/null +++ b/Editor/Presets/Base.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b98c958d2eea9db40b45a1697314e455 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Presets/GridUnlit.asset b/Editor/Presets/GridUnlit.asset index 0cde4de..025e345 100644 --- a/Editor/Presets/GridUnlit.asset +++ b/Editor/Presets/GridUnlit.asset @@ -10,19 +10,26 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 1aa272ccd1306c545b68254a527f8025, type: 3} - m_Name: Overdraw + m_Name: GridUnlit m_EditorClassIdentifier: content: m_Text: - m_Image: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0} - m_Tooltip: - shader: {fileID: 4800000, guid: 9f96928510529524c9190ccf618ceaf8, type: 3} + m_Image: {fileID: 2800000, guid: 258ec05c639dc22449b3ca11da10d2ae, type: 3} + m_Tooltip: Grid Unlit - View the scene with an unlit grid texture. + shader: {fileID: 4800000, guid: 938a5e8d620c4b943bb6b2b15202678c, type: 3} replacementTag: parameters: - - m_name: _RS_Color - m_parameterType: 2 - m_texture: {fileID: 0} + - m_name: _RS_Texture + m_parameterType: 0 + m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} m_color: {r: 1, g: 0, b: 0, a: 0.14901961} m_float: 0 m_int: 0 + - m_name: _RS_Sharpness + m_parameterType: 3 + m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} + m_vector: {x: 0, y: 0, z: 0, w: 0} + m_color: {r: 1, g: 0, b: 0, a: 0.14901961} + m_float: 10 + m_int: 0 diff --git a/Editor/Presets/Overdraw.asset b/Editor/Presets/Overdraw.asset index 0cde4de..ff20d56 100644 --- a/Editor/Presets/Overdraw.asset +++ b/Editor/Presets/Overdraw.asset @@ -14,8 +14,8 @@ MonoBehaviour: m_EditorClassIdentifier: content: m_Text: - m_Image: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0} - m_Tooltip: + m_Image: {fileID: 2800000, guid: 0723191ce0fb9d44ebece6c36fe4776f, type: 3} + m_Tooltip: Overdraw - Preview the scene overdraw. shader: {fileID: 4800000, guid: 9f96928510529524c9190ccf618ceaf8, type: 3} replacementTag: parameters: @@ -23,6 +23,6 @@ MonoBehaviour: m_parameterType: 2 m_texture: {fileID: 0} m_vector: {x: 0, y: 0, z: 0, w: 0} - m_color: {r: 1, g: 0, b: 0, a: 0.14901961} + m_color: {r: 1, g: 0, b: 0, a: 0.101960786} m_float: 0 m_int: 0 diff --git a/Editor/ReplacementShaderSetupScriptableObject.cs b/Editor/ReplacementShaderSetupScriptableObject.cs index 6083818..3c89295 100644 --- a/Editor/ReplacementShaderSetupScriptableObject.cs +++ b/Editor/ReplacementShaderSetupScriptableObject.cs @@ -1,4 +1,3 @@ -using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; @@ -8,6 +7,7 @@ namespace TAO.SceneDebugViewer.Editor [CreateAssetMenu(menuName = "SceneDebugViewer/ReplacementShaderSetup")] public class ReplacementShaderSetupScriptableObject : ScriptableObject { +#if UNITY_EDITOR [Header("GUI")] public GUIContent content = new GUIContent(); [Header("Shader")] @@ -80,5 +80,6 @@ namespace TAO.SceneDebugViewer.Editor Float, Int } +#endif } } \ No newline at end of file diff --git a/Editor/SceneDebugViewerWindow.cs b/Editor/SceneDebugViewerWindow.cs index 0e69722..ecea998 100644 --- a/Editor/SceneDebugViewerWindow.cs +++ b/Editor/SceneDebugViewerWindow.cs @@ -1,45 +1,66 @@ +using System.Collections.Generic; using UnityEngine; using UnityEditor; -using System.Collections.Generic; namespace TAO.SceneDebugViewer.Editor { public class SceneDebugViewerWindow : EditorWindow { - static List options = new List(); + private static SceneDebugViewerWindow window = null; + private static List options = new List(); [MenuItem("Window/SceneDebugViewer")] static void Init() { - options.Clear(); + Load(); - string[] guids = AssetDatabase.FindAssets("t:ReplacementShaderSetupScriptableObject", null); - foreach (string guid in guids) - { - options.Add((ReplacementShaderSetupScriptableObject)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guid), typeof(ReplacementShaderSetupScriptableObject))); - } - - SceneDebugViewerWindow window = (SceneDebugViewerWindow)EditorWindow.GetWindow(typeof(SceneDebugViewerWindow)); + window = (SceneDebugViewerWindow)GetWindow(typeof(SceneDebugViewerWindow)); + window.titleContent = new GUIContent("SDV"); window.Show(); } private void OnGUI() { - if (GUILayout.Button("Reset")) + using (new GUILayout.VerticalScope()) { - foreach (SceneView s in SceneView.sceneViews) + if (GUILayout.Button("Reload")) { - s.SetSceneViewShaderReplace(null, null); - s.Repaint(); + Load(); + } + + GUILayout.Space(6); + + if (GUILayout.Button("Default", GUILayout.Height(44))) + { + foreach (SceneView s in SceneView.sceneViews) + { + s.SetSceneViewShaderReplace(null, null); + s.Repaint(); + } + } + + GUILayout.Space(6); + + // TODO: Horizontal and vertical grid/table selection drawer. + foreach (var o in options) + { + if (GUILayout.Button(o.content, GUILayout.Height(44))) + { + o.Replace(); + } } } + } - foreach (var o in options) + private static void Load() + { + options.Clear(); + + string[] guids = AssetDatabase.FindAssets("t:ReplacementShaderSetupScriptableObject", null); + + foreach (string guid in guids) { - if (GUILayout.Button(o.content)) - { - o.Replace(); - } + options.Add((ReplacementShaderSetupScriptableObject)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guid), typeof(ReplacementShaderSetupScriptableObject))); } } } diff --git a/Runtime/Shaders/Surface.shader b/Runtime/Shaders/Surface.shader new file mode 100644 index 0000000..d0dc129 --- /dev/null +++ b/Runtime/Shaders/Surface.shader @@ -0,0 +1,34 @@ +Shader "Hidden/Surface" +{ + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 200 + + CGPROGRAM + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _RS_Texture; + fixed4 _RS_Color; + half _RS_Metallic; + half _RS_Glossiness; + + struct Input + { + float2 uv_RS_Texture; + }; + + void surf (Input IN, inout SurfaceOutputStandard o) + { + o.Albedo = tex2D(_RS_Texture, IN.uv_RS_Texture) * _RS_Color; + o.Metallic = _RS_Metallic; + o.Smoothness = _RS_Glossiness; + } + ENDCG + } + FallBack "Diffuse" +} diff --git a/Runtime/Shaders/Surface.shader.meta b/Runtime/Shaders/Surface.shader.meta new file mode 100644 index 0000000..579c024 --- /dev/null +++ b/Runtime/Shaders/Surface.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 442bea547b43fe643959790eb5b87ede +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Shaders/TriPlanarTextureUnlit.shader b/Runtime/Shaders/TriPlanarTextureUnlit.shader index 2a333d3..2e904f1 100644 --- a/Runtime/Shaders/TriPlanarTextureUnlit.shader +++ b/Runtime/Shaders/TriPlanarTextureUnlit.shader @@ -29,7 +29,7 @@ Shader "Hidden/TriPlanarTexture" sampler2D _RS_Texture; float4 _RS_Texture_ST; - float _RS_Float; + float _RS_Sharpness; v2f vert (appdata v) { @@ -57,7 +57,7 @@ Shader "Hidden/TriPlanarTexture" //show texture on both sides of the object (positive and negative) weights = abs(weights); //make the transition sharper - weights = pow(weights, _RS_Float); + weights = pow(weights, _RS_Sharpness); //make it so the sum of all components is 1 weights = weights / (weights.x + weights.y + weights.z);