From 42100c5332c865d2c1b7eb2949d7603572c40760 Mon Sep 17 00:00:00 2001 From: max Date: Tue, 20 Apr 2021 03:54:55 +0200 Subject: [PATCH] Update SceneDebugViewerWindow and GlobalShaderProperty. Compact and normal mode. More types in global shader property. Updated global shader property drawer. SortingOrder for setups. --- Editor/GlobalShaderPropertyDrawer.cs | 64 ++------ Editor/Presets/Base.asset | 139 ++++++++++++++++-- Editor/Presets/Default.asset | 29 ++++ Editor/Presets/Default.asset.meta | 8 + Editor/Presets/GridLit.asset | 87 ++++++++++- Editor/Presets/GridUnlit.asset | 139 ++++++++++++++++-- Editor/Presets/ObjectSpaceNormals.asset | 14 +- Editor/Presets/Overdraw.asset | 37 ++++- Editor/Presets/UVChecker.asset | 139 ++++++++++++++++-- Editor/Presets/VertexColors.asset | 14 +- Editor/Presets/WorldSpaceNormals.asset | 14 +- .../ReplacementShaderSetupScriptableObject.cs | 100 +++++++++++-- Editor/SceneDebugViewerWindow.cs | 81 +++++++--- Editor/SceneDebugViewerWindow.cs.meta | 4 +- 14 files changed, 717 insertions(+), 152 deletions(-) create mode 100644 Editor/Presets/Default.asset create mode 100644 Editor/Presets/Default.asset.meta diff --git a/Editor/GlobalShaderPropertyDrawer.cs b/Editor/GlobalShaderPropertyDrawer.cs index 4b2edfa..c2e4bdc 100644 --- a/Editor/GlobalShaderPropertyDrawer.cs +++ b/Editor/GlobalShaderPropertyDrawer.cs @@ -1,6 +1,5 @@ using UnityEngine; using UnityEditor; -using System; namespace TAO.SceneDebugViewer.Editor { @@ -31,38 +30,10 @@ namespace TAO.SceneDebugViewer.Editor position.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; ReplacementShaderSetupScriptableObject.ParameterType parameterType = (ReplacementShaderSetupScriptableObject.ParameterType)type.enumValueIndex; - SerializedProperty p = null; - bool includeChildren = false; + SerializedProperty p = property.FindPropertyRelative(parameterType.ToString()); - switch (parameterType) - { - case ReplacementShaderSetupScriptableObject.ParameterType.Texture: - p = property.FindPropertyRelative("m_texture"); - break; - case ReplacementShaderSetupScriptableObject.ParameterType.Vector: - p = property.FindPropertyRelative("m_vector"); - - if (p.isExpanded) - { - position.height = (EditorGUIUtility.singleLineHeight * 4) + (EditorGUIUtility.standardVerticalSpacing * 3); - includeChildren = true; - } - - break; - case ReplacementShaderSetupScriptableObject.ParameterType.Color: - p = property.FindPropertyRelative("m_color"); - break; - case ReplacementShaderSetupScriptableObject.ParameterType.Float: - p = property.FindPropertyRelative("m_float"); - break; - case ReplacementShaderSetupScriptableObject.ParameterType.Int: - p = property.FindPropertyRelative("m_int"); - break; - default: - break; - } - - EditorGUI.PropertyField(position, p, includeChildren); + position.height = EditorGUI.GetPropertyHeight(p, includeChildren: true); + EditorGUI.PropertyField(position, p, includeChildren: true); } EditorGUI.EndProperty(); @@ -70,37 +41,20 @@ namespace TAO.SceneDebugViewer.Editor public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { - int totalLines = 1; + var spacing = EditorGUIUtility.standardVerticalSpacing; + var height = EditorGUIUtility.singleLineHeight + spacing; if (property.isExpanded) { - totalLines += 3; + height += (EditorGUIUtility.singleLineHeight + spacing) * 2; SerializedProperty type = property.FindPropertyRelative("m_parameterType"); ReplacementShaderSetupScriptableObject.ParameterType parameterType = (ReplacementShaderSetupScriptableObject.ParameterType)type.enumValueIndex; - switch (parameterType) - { - case ReplacementShaderSetupScriptableObject.ParameterType.Texture: - break; - case ReplacementShaderSetupScriptableObject.ParameterType.Vector: - if (property.FindPropertyRelative("m_vector").isExpanded) - { - totalLines += 4; - } - break; - case ReplacementShaderSetupScriptableObject.ParameterType.Color: - break; - case ReplacementShaderSetupScriptableObject.ParameterType.Float: - break; - case ReplacementShaderSetupScriptableObject.ParameterType.Int: - break; - default: - break; - } + height += EditorGUI.GetPropertyHeight(property.FindPropertyRelative(parameterType.ToString()), true); } - return EditorGUIUtility.singleLineHeight * totalLines + EditorGUIUtility.standardVerticalSpacing * (totalLines - 1); + return height; } } -} +} \ No newline at end of file diff --git a/Editor/Presets/Base.asset b/Editor/Presets/Base.asset index cd2695f..16eaaaf 100644 --- a/Editor/Presets/Base.asset +++ b/Editor/Presets/Base.asset @@ -13,9 +13,17 @@ MonoBehaviour: m_Name: Base m_EditorClassIdentifier: content: - m_Text: - m_Image: {fileID: 2800000, guid: 1553c43734bfa6345a845ed8637f8fc7, type: 3} - m_Tooltip: Base Lit + icon: {fileID: 2800000, guid: 1553c43734bfa6345a845ed8637f8fc7, type: 3} + tooltip: + sortingOrder: -99 + compact: + m_Text: + m_Image: {fileID: 2800000, guid: 1553c43734bfa6345a845ed8637f8fc7, type: 3} + m_Tooltip: + normal: + m_Text: ' Base' + m_Image: {fileID: 2800000, guid: 1553c43734bfa6345a845ed8637f8fc7, type: 3} + m_Tooltip: shader: {fileID: 4800000, guid: fa8b3bbeb520d1c47b2ee619fe14e343, type: 3} replacementTag: parameters: @@ -23,34 +31,139 @@ MonoBehaviour: m_parameterType: 0 m_texture: {fileID: 2800000, guid: f8b8cfeccdb9c194bac037761af51a41, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 0.504, g: 0.504, b: 0.504, a: 1} + m_colorArray: [] m_float: 0 + m_floatArray: [] m_int: 0 - - m_name: _RS_Sharpness + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] + - m_name: _RS_Color m_parameterType: 3 + m_texture: {fileID: 0} + m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] + m_color: {r: 1, g: 1, b: 1, a: 1} + m_colorArray: [] + m_float: 0 + m_floatArray: [] + m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] + - m_name: _RS_Sharpness + m_parameterType: 5 m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 0, b: 0, a: 0.14901961} + m_colorArray: [] m_float: 10 + m_floatArray: [] m_int: 0 - - 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: 1, b: 1, a: 1} - m_float: 0 - m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] - m_name: _RS_Metallic - m_parameterType: 3 + m_parameterType: 5 m_texture: {fileID: 0} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 0.504, g: 0.504, b: 0.504, a: 1} + m_colorArray: [] m_float: 0 + m_floatArray: [] m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] - m_name: _RS_Glossiness - m_parameterType: 3 + m_parameterType: 5 m_texture: {fileID: 0} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 0.504, g: 0.504, b: 0.504, a: 1} + m_colorArray: [] m_float: 0 + m_floatArray: [] m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] diff --git a/Editor/Presets/Default.asset b/Editor/Presets/Default.asset new file mode 100644 index 0000000..c34b4e6 --- /dev/null +++ b/Editor/Presets/Default.asset @@ -0,0 +1,29 @@ +%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: Default + m_EditorClassIdentifier: + content: + icon: {fileID: 2800000, guid: 1553c43734bfa6345a845ed8637f8fc7, type: 3} + tooltip: + sortingOrder: -999 + compact: + m_Text: + m_Image: {fileID: 2800000, guid: 1553c43734bfa6345a845ed8637f8fc7, type: 3} + m_Tooltip: + normal: + m_Text: ' Default' + m_Image: {fileID: 2800000, guid: 1553c43734bfa6345a845ed8637f8fc7, type: 3} + m_Tooltip: + shader: {fileID: 0} + replacementTag: + parameters: [] diff --git a/Editor/Presets/Default.asset.meta b/Editor/Presets/Default.asset.meta new file mode 100644 index 0000000..ec2db32 --- /dev/null +++ b/Editor/Presets/Default.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d76aa8d74b22cea4e9c6355e116cd618 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Presets/GridLit.asset b/Editor/Presets/GridLit.asset index 25c4a69..ffc1389 100644 --- a/Editor/Presets/GridLit.asset +++ b/Editor/Presets/GridLit.asset @@ -13,9 +13,17 @@ MonoBehaviour: m_Name: GridLit m_EditorClassIdentifier: content: - m_Text: - m_Image: {fileID: 2800000, guid: 1b5be4630aad66c4dbeb577efa26113f, type: 3} - m_Tooltip: Grid Lit + icon: {fileID: 2800000, guid: 1b5be4630aad66c4dbeb577efa26113f, type: 3} + tooltip: + sortingOrder: 10 + compact: + m_Text: + m_Image: {fileID: 2800000, guid: 1b5be4630aad66c4dbeb577efa26113f, type: 3} + m_Tooltip: + normal: + m_Text: ' GridLit' + m_Image: {fileID: 2800000, guid: 1b5be4630aad66c4dbeb577efa26113f, type: 3} + m_Tooltip: shader: {fileID: 4800000, guid: 442bea547b43fe643959790eb5b87ede, type: 3} replacementTag: parameters: @@ -23,20 +31,83 @@ MonoBehaviour: m_parameterType: 0 m_texture: {fileID: 2800000, guid: cb526cf389f85f541aa681de312dd588, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 0, b: 0, a: 0.14901961} + m_colorArray: [] m_float: 0 + m_floatArray: [] m_int: 0 - - m_name: _RS_Sharpness + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] + - m_name: _RS_Color 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_vectorArray: [] + m_color: {r: 1, g: 1, b: 1, a: 1} + m_colorArray: [] m_float: 10 + m_floatArray: [] m_int: 0 - - m_name: _RS_Color - m_parameterType: 2 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] + - m_name: _RS_Sharpness + m_parameterType: 5 m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} - m_color: {r: 1, g: 1, b: 1, a: 1} + m_vectorArray: [] + m_color: {r: 1, g: 0, b: 0, a: 0.14901961} + m_colorArray: [] m_float: 10 + m_floatArray: [] m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] diff --git a/Editor/Presets/GridUnlit.asset b/Editor/Presets/GridUnlit.asset index ef66e78..dc218d4 100644 --- a/Editor/Presets/GridUnlit.asset +++ b/Editor/Presets/GridUnlit.asset @@ -13,9 +13,17 @@ MonoBehaviour: m_Name: GridUnlit m_EditorClassIdentifier: content: - m_Text: - m_Image: {fileID: 2800000, guid: 258ec05c639dc22449b3ca11da10d2ae, type: 3} - m_Tooltip: Grid Unlit + icon: {fileID: 2800000, guid: 258ec05c639dc22449b3ca11da10d2ae, type: 3} + tooltip: + sortingOrder: 11 + compact: + m_Text: + m_Image: {fileID: 2800000, guid: 258ec05c639dc22449b3ca11da10d2ae, type: 3} + m_Tooltip: + normal: + m_Text: ' GridUnlit' + m_Image: {fileID: 2800000, guid: 258ec05c639dc22449b3ca11da10d2ae, type: 3} + m_Tooltip: shader: {fileID: 4800000, guid: 938a5e8d620c4b943bb6b2b15202678c, type: 3} replacementTag: parameters: @@ -23,34 +31,139 @@ MonoBehaviour: m_parameterType: 0 m_texture: {fileID: 2800000, guid: cb526cf389f85f541aa681de312dd588, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 0, b: 0, a: 0.14901961} + m_colorArray: [] m_float: 0 + m_floatArray: [] 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 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] - m_name: _RS_Color - m_parameterType: 2 + m_parameterType: 3 m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 1, b: 1, a: 1} + m_colorArray: [] m_float: 10 + m_floatArray: [] m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] + - m_name: _RS_Sharpness + m_parameterType: 5 + m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} + m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] + m_color: {r: 1, g: 0, b: 0, a: 0.14901961} + m_colorArray: [] + m_float: 10 + m_floatArray: [] + m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] - m_name: _RS_Metallic - m_parameterType: 3 + m_parameterType: 5 m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 1, b: 1, a: 1} + m_colorArray: [] m_float: 0 + m_floatArray: [] m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] - m_name: _RS_Glossiness - m_parameterType: 3 + m_parameterType: 5 m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 1, b: 1, a: 1} + m_colorArray: [] m_float: 0 + m_floatArray: [] m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] diff --git a/Editor/Presets/ObjectSpaceNormals.asset b/Editor/Presets/ObjectSpaceNormals.asset index 34cf5af..2ecd778 100644 --- a/Editor/Presets/ObjectSpaceNormals.asset +++ b/Editor/Presets/ObjectSpaceNormals.asset @@ -13,9 +13,17 @@ MonoBehaviour: m_Name: ObjectSpaceNormals m_EditorClassIdentifier: content: - m_Text: - m_Image: {fileID: 2800000, guid: b2efa4ed23d9cd14da026e9eaf25db42, type: 3} - m_Tooltip: Object Space Normals + icon: {fileID: 2800000, guid: b2efa4ed23d9cd14da026e9eaf25db42, type: 3} + tooltip: + sortingOrder: 20 + compact: + m_Text: + m_Image: {fileID: 2800000, guid: b2efa4ed23d9cd14da026e9eaf25db42, type: 3} + m_Tooltip: + normal: + m_Text: ' ObjectSpaceNormals' + m_Image: {fileID: 2800000, guid: b2efa4ed23d9cd14da026e9eaf25db42, type: 3} + m_Tooltip: shader: {fileID: 4800000, guid: 7f376fdcb4cabb94fa00a24677019988, type: 3} replacementTag: parameters: [] diff --git a/Editor/Presets/Overdraw.asset b/Editor/Presets/Overdraw.asset index a82aa3b..36fc869 100644 --- a/Editor/Presets/Overdraw.asset +++ b/Editor/Presets/Overdraw.asset @@ -13,16 +13,45 @@ MonoBehaviour: m_Name: Overdraw m_EditorClassIdentifier: content: - m_Text: - m_Image: {fileID: 2800000, guid: 0723191ce0fb9d44ebece6c36fe4776f, type: 3} - m_Tooltip: Overdraw + icon: {fileID: 2800000, guid: 0723191ce0fb9d44ebece6c36fe4776f, type: 3} + tooltip: + sortingOrder: 0 + compact: + m_Text: + m_Image: {fileID: 2800000, guid: 0723191ce0fb9d44ebece6c36fe4776f, type: 3} + m_Tooltip: + normal: + m_Text: ' Overdraw' + m_Image: {fileID: 2800000, guid: 0723191ce0fb9d44ebece6c36fe4776f, type: 3} + m_Tooltip: shader: {fileID: 4800000, guid: 9f96928510529524c9190ccf618ceaf8, type: 3} replacementTag: parameters: - m_name: _RS_Color - m_parameterType: 2 + m_parameterType: 3 m_texture: {fileID: 0} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 0, b: 0, a: 0.101960786} + m_colorArray: [] m_float: 0 + m_floatArray: [] m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] diff --git a/Editor/Presets/UVChecker.asset b/Editor/Presets/UVChecker.asset index 7af1e10..5b5e4a3 100644 --- a/Editor/Presets/UVChecker.asset +++ b/Editor/Presets/UVChecker.asset @@ -13,9 +13,17 @@ MonoBehaviour: m_Name: UVChecker m_EditorClassIdentifier: content: - m_Text: - m_Image: {fileID: 2800000, guid: d41389bd7fb002d48a1bb9b0fd1b4cf1, type: 3} - m_Tooltip: UV Checker + icon: {fileID: 2800000, guid: d41389bd7fb002d48a1bb9b0fd1b4cf1, type: 3} + tooltip: + sortingOrder: 35 + compact: + m_Text: + m_Image: {fileID: 2800000, guid: d41389bd7fb002d48a1bb9b0fd1b4cf1, type: 3} + m_Tooltip: + normal: + m_Text: ' UVChecker' + m_Image: {fileID: 2800000, guid: d41389bd7fb002d48a1bb9b0fd1b4cf1, type: 3} + m_Tooltip: shader: {fileID: 4800000, guid: b7f90ee778e287d4f9bde3252fe9bdd9, type: 3} replacementTag: parameters: @@ -23,34 +31,139 @@ MonoBehaviour: m_parameterType: 0 m_texture: {fileID: 2800000, guid: f2e2a666b464cc84982b530d4dcd36d7, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 0, b: 0, a: 0.14901961} + m_colorArray: [] m_float: 0 + m_floatArray: [] 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 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] - m_name: _RS_Color - m_parameterType: 2 + m_parameterType: 3 m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 1, b: 1, a: 1} + m_colorArray: [] m_float: 10 + m_floatArray: [] m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] + - m_name: _RS_Sharpness + m_parameterType: 5 + m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} + m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] + m_color: {r: 1, g: 0, b: 0, a: 0.14901961} + m_colorArray: [] + m_float: 10 + m_floatArray: [] + m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] - m_name: _RS_Metallic - m_parameterType: 3 + m_parameterType: 5 m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 1, b: 1, a: 1} + m_colorArray: [] m_float: 0 + m_floatArray: [] m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] - m_name: _RS_Glossiness - m_parameterType: 3 + m_parameterType: 5 m_texture: {fileID: 2800000, guid: 60a6c65bf59247d41bcc18553d97d2c5, type: 3} m_vector: {x: 0, y: 0, z: 0, w: 0} + m_vectorArray: [] m_color: {r: 1, g: 1, b: 1, a: 1} + m_colorArray: [] m_float: 0 + m_floatArray: [] m_int: 0 + m_matrix: + e00: 0 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 0 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 0 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 0 + m_matrixArray: [] diff --git a/Editor/Presets/VertexColors.asset b/Editor/Presets/VertexColors.asset index 32a9d76..97076f6 100644 --- a/Editor/Presets/VertexColors.asset +++ b/Editor/Presets/VertexColors.asset @@ -13,9 +13,17 @@ MonoBehaviour: m_Name: VertexColors m_EditorClassIdentifier: content: - m_Text: - m_Image: {fileID: 2800000, guid: c7374f0b36a3eb4409b17770bf46b076, type: 3} - m_Tooltip: Vertex Colors + icon: {fileID: 2800000, guid: c7374f0b36a3eb4409b17770bf46b076, type: 3} + tooltip: + sortingOrder: 0 + compact: + m_Text: + m_Image: {fileID: 2800000, guid: c7374f0b36a3eb4409b17770bf46b076, type: 3} + m_Tooltip: + normal: + m_Text: ' VertexColors' + m_Image: {fileID: 2800000, guid: c7374f0b36a3eb4409b17770bf46b076, type: 3} + m_Tooltip: shader: {fileID: 4800000, guid: 0a3c678aaad08094ebfd936fda70bb21, type: 3} replacementTag: parameters: [] diff --git a/Editor/Presets/WorldSpaceNormals.asset b/Editor/Presets/WorldSpaceNormals.asset index 548283c..d6063fd 100644 --- a/Editor/Presets/WorldSpaceNormals.asset +++ b/Editor/Presets/WorldSpaceNormals.asset @@ -13,9 +13,17 @@ MonoBehaviour: m_Name: WorldSpaceNormals m_EditorClassIdentifier: content: - m_Text: - m_Image: {fileID: 2800000, guid: d9b83aa61ceb006419b0c2460bbbe3cc, type: 3} - m_Tooltip: World Space Normals + icon: {fileID: 2800000, guid: d9b83aa61ceb006419b0c2460bbbe3cc, type: 3} + tooltip: + sortingOrder: 21 + compact: + m_Text: + m_Image: {fileID: 2800000, guid: d9b83aa61ceb006419b0c2460bbbe3cc, type: 3} + m_Tooltip: + normal: + m_Text: ' WorldSpaceNormals' + m_Image: {fileID: 2800000, guid: d9b83aa61ceb006419b0c2460bbbe3cc, type: 3} + m_Tooltip: shader: {fileID: 4800000, guid: f2163d0d9cb9f8a4fbb6c07dcf8ac7d3, type: 3} replacementTag: parameters: [] diff --git a/Editor/ReplacementShaderSetupScriptableObject.cs b/Editor/ReplacementShaderSetupScriptableObject.cs index 88d7fc7..73b9547 100644 --- a/Editor/ReplacementShaderSetupScriptableObject.cs +++ b/Editor/ReplacementShaderSetupScriptableObject.cs @@ -9,13 +9,16 @@ namespace TAO.SceneDebugViewer.Editor public class ReplacementShaderSetupScriptableObject : ScriptableObject { [Header("GUI")] - public GUIContent content = new GUIContent(); + [SerializeField] + private GContent content = new GContent(); + public GContent Content => content; + [Header("Shader")] public Shader shader = null; public string replacementTag = ""; public List parameters = new List(); - public void Replace() + public virtual void Replace() { SetupShaderParameters(); @@ -34,6 +37,16 @@ namespace TAO.SceneDebugViewer.Editor } } + private void OnValidate() + { + content.compact.text = null; + content.compact.image = content.icon; + content.compact.tooltip = content.tooltip; + content.normal.text = string.Format(" {0}", name); + content.normal.image = content.icon; + content.normal.tooltip = content.tooltip; + } + [System.Serializable] public struct GlobalShaderParameter { @@ -43,29 +56,49 @@ namespace TAO.SceneDebugViewer.Editor public Texture2D m_texture; public Vector4 m_vector; + public Vector4[] m_vectorArray; public Color m_color; + public Color[] m_colorArray; public float m_float; + public float[] m_floatArray; public int m_int; + public Matrix4x4 m_matrix; + public Matrix4x4[] m_matrixArray; public void Set() { switch (m_parameterType) { - case ParameterType.Texture: + case ParameterType.m_texture: Shader.SetGlobalTexture(m_name, m_texture); break; - case ParameterType.Vector: + case ParameterType.m_vector: Shader.SetGlobalVector(m_name, m_vector); break; - case ParameterType.Color: + case ParameterType.m_vectorArray: + Shader.SetGlobalVectorArray(m_name, m_vectorArray); + break; + case ParameterType.m_color: Shader.SetGlobalColor(m_name, m_color); break; - case ParameterType.Float: + case ParameterType.m_colorArray: + Shader.SetGlobalVectorArray(m_name, ColorArrayToVector4Array(m_colorArray)); + break; + case ParameterType.m_float: Shader.SetGlobalFloat(m_name, m_float); break; - case ParameterType.Int: + case ParameterType.m_floatArray: + Shader.SetGlobalFloatArray(m_name, m_floatArray); + break; + case ParameterType.m_int: Shader.SetGlobalInt(m_name, m_int); break; + case ParameterType.m_matrix: + Shader.SetGlobalMatrix(m_name, m_matrix); + break; + case ParameterType.m_matrixArray: + Shader.SetGlobalMatrixArray(m_name, m_matrixArray); + break; default: break; } @@ -74,11 +107,54 @@ namespace TAO.SceneDebugViewer.Editor public enum ParameterType { - Texture, - Vector, - Color, - Float, - Int + m_texture, + m_vector, + m_vectorArray, + m_color, + m_colorArray, + m_float, + m_floatArray, + m_int, + m_matrix, + m_matrixArray + } + + private static Vector4[] ColorArrayToVector4Array(Color[] c) + { + Vector4[] v = new Vector4[c.Length]; + + for (int i = 0; i < v.Length; i++) + { + v[i] = c[i]; + } + + return v; + } + + [System.Serializable] + public struct GContent + { + public Texture2D icon; + public string tooltip; + public int sortingOrder; + + [HideInInspector] + public GUIContent compact; + [HideInInspector] + public GUIContent normal; + } + } + + public class RSSOComparer : IComparer + { + public int Compare(ReplacementShaderSetupScriptableObject x, ReplacementShaderSetupScriptableObject y) + { + if (x == null || y == null) + { + return 0; + } + + return x.Content.sortingOrder.CompareTo(y.Content.sortingOrder); } } #endif diff --git a/Editor/SceneDebugViewerWindow.cs b/Editor/SceneDebugViewerWindow.cs index 495965a..6bc828b 100644 --- a/Editor/SceneDebugViewerWindow.cs +++ b/Editor/SceneDebugViewerWindow.cs @@ -6,8 +6,10 @@ namespace TAO.SceneDebugViewer.Editor { public class SceneDebugViewerWindow : EditorWindow { - private static SceneDebugViewerWindow window = null; - private static List options = new List(); + public static SceneDebugViewerWindow window = null; + public static List options = new List(); + + private GUIStyle optionsButtonStyle = null; [MenuItem("Window/Analysis/SceneDebugViewer")] static void Init() @@ -16,13 +18,18 @@ namespace TAO.SceneDebugViewer.Editor window = (SceneDebugViewerWindow)GetWindow(typeof(SceneDebugViewerWindow)); window.titleContent = new GUIContent("SDV"); - window.maxSize = new Vector2(101, window.maxSize.y); + //window.maxSize = new Vector2(101, window.maxSize.y); window.minSize = new Vector2(101, window.minSize.y); window.Show(); } private void OnGUI() { + if (window == null) + { + window = (SceneDebugViewerWindow)GetWindow(typeof(SceneDebugViewerWindow)); + } + using (new GUILayout.VerticalScope()) { if (GUILayout.Button("Reload")) @@ -30,37 +37,51 @@ namespace TAO.SceneDebugViewer.Editor Load(); } - GUILayout.Space(6); - - if (GUILayout.Button("Default", GUILayout.Height(44))) + if (window.position.width <= 101) { - foreach (SceneView s in SceneView.sceneViews) + // Compact grid. + optionsButtonStyle = new GUIStyle(GUI.skin.button) { - s.SetSceneViewShaderReplace(null, null); - s.Repaint(); + alignment = TextAnchor.MiddleCenter, + fixedHeight = 44 + }; + + for (int i = 0; i < options.Count; i += 2) + { + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(options[i].Content.compact, optionsButtonStyle)) + { + options[i].Replace(); + } + + if (i + 1 < options.Count) + { + if (GUILayout.Button(options[i + 1].Content.compact, optionsButtonStyle)) + { + options[i + 1].Replace(); + } + } + + GUILayout.EndHorizontal(); } } - - GUILayout.Space(6); - - for (int i = 0; i < options.Count; i += 2) + else { - GUILayout.BeginHorizontal(); - - if (GUILayout.Button(options[i].content, GUILayout.Height(44))) + // Normal list. + optionsButtonStyle = new GUIStyle(GUI.skin.button) { - options[i].Replace(); - } + alignment = TextAnchor.MiddleLeft, + fixedHeight = 44 + }; - if (i + 1 < options.Count) + for (int i = 0; i < options.Count; i ++) { - if (GUILayout.Button(options[i + 1].content, GUILayout.Height(44))) + if (GUILayout.Button(options[i].Content.normal, optionsButtonStyle)) { - options[i + 1].Replace(); + options[i].Replace(); } } - - GUILayout.EndHorizontal(); } } } @@ -69,12 +90,24 @@ namespace TAO.SceneDebugViewer.Editor { options.Clear(); - string[] guids = AssetDatabase.FindAssets("t:ReplacementShaderSetupScriptableObject", null); + string[] guids = AssetDatabase.FindAssets(string.Format("t:{0}", typeof(ReplacementShaderSetupScriptableObject).ToString()), null); foreach (string guid in guids) { options.Add((ReplacementShaderSetupScriptableObject)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guid), typeof(ReplacementShaderSetupScriptableObject))); } + + SortOptions(); + } + + private static void SortOptions() + { + if (options != null) + { + RSSOComparer comparer = new RSSOComparer(); + + options.Sort(comparer); + } } } } \ No newline at end of file diff --git a/Editor/SceneDebugViewerWindow.cs.meta b/Editor/SceneDebugViewerWindow.cs.meta index 4e0f91a..2187e30 100644 --- a/Editor/SceneDebugViewerWindow.cs.meta +++ b/Editor/SceneDebugViewerWindow.cs.meta @@ -3,7 +3,9 @@ guid: af04cbc3f49c9e84dbab665498c4f129 MonoImporter: externalObjects: {} serializedVersion: 2 - defaultReferences: [] + defaultReferences: + - m_ViewDataDictionary: {instanceID: 0} + - skin: {fileID: 11400000, guid: 704ab495088bed748a18e35633bf42a0, type: 2} executionOrder: 0 icon: {instanceID: 0} userData: