From 7763bb77c9b3e0b5c0b365ae3ff97367ec130916 Mon Sep 17 00:00:00 2001 From: Arttu Peltonen Date: Fri, 27 Aug 2021 13:41:56 +0300 Subject: [PATCH 1/9] Add warning on Vulkan and GLES that wireframe may not be supported. --- .../Debug/DebugDisplaySettingsCommon.cs | 1 + .../Debug/DebugDisplaySettingsRendering.cs | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs index ec93542bfec..7c686468340 100644 --- a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs +++ b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs @@ -66,6 +66,7 @@ public SettingsPanel() DebugDisplaySettingsRendering.WidgetFactory.CreateMSAA(renderingSettingsData), DebugDisplaySettingsRendering.WidgetFactory.CreatePostProcessing(renderingSettingsData), DebugDisplaySettingsRendering.WidgetFactory.CreateAdditionalWireframeShaderViews(renderingSettingsData), + DebugDisplaySettingsRendering.WidgetFactory.CreateWireframeNotSupportedWarning(renderingSettingsData), DebugDisplaySettingsRendering.WidgetFactory.CreateOverdraw(renderingSettingsData) }, contextMenuItems = new List() diff --git a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs index 46cb4e2ee02..75e1d14311f 100644 --- a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs +++ b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs @@ -82,6 +82,7 @@ static class Strings public static readonly NameAndTooltip MapOverlays = new() { name = "Map Overlays", tooltip = "Overlays render pipeline textures to validate the scene." }; public static readonly NameAndTooltip MapSize = new() { name = "Map Size", tooltip = "Set the size of the render pipeline texture in the scene." }; public static readonly NameAndTooltip AdditionalWireframeModes = new() { name = "Additional Wireframe Modes", tooltip = "Debug the scene with additional wireframe shader views that are different from those in the scene view." }; + public static readonly NameAndTooltip WireframeNotSupportedWarning = new() { name = "Warning: Wireframe may not be supported on this platform", tooltip = "Some platforms, for example OpenGL ES and Vulkan on mobile, may not support wireframe rendering." }; public static readonly NameAndTooltip Overdraw = new() { name = "Overdraw", tooltip = "Debug anywhere pixels are overdrawn on top of each other." }; public static readonly NameAndTooltip PostProcessing = new() { name = "Post-processing", tooltip = "Override the controls for Post Processing in the scene." }; public static readonly NameAndTooltip MSAA = new() { name = "MSAA", tooltip = "Use the checkbox to disable MSAA in the scene." }; @@ -129,7 +130,25 @@ internal static class WidgetFactory getter = () => (int)data.wireframeMode, setter = (value) => { }, getIndex = () => (int)data.wireframeMode, - setIndex = (value) => data.wireframeMode = (WireframeMode)value + setIndex = (value) => data.wireframeMode = (WireframeMode)value, + onValueChanged = (_, _) => DebugManager.instance.ReDrawOnScreenDebug() + }; + + internal static DebugUI.Widget CreateWireframeNotSupportedWarning(DebugDisplaySettingsRendering data) => new DebugUI.Container + { + nameAndTooltip = Strings.WireframeNotSupportedWarning, + isHiddenCallback = () => + { + switch (SystemInfo.graphicsDeviceType) + { + case GraphicsDeviceType.OpenGLES2: + case GraphicsDeviceType.OpenGLES3: + case GraphicsDeviceType.Vulkan: + return data.wireframeMode == WireframeMode.None; + default: + return true; + } + } }; internal static DebugUI.Widget CreateOverdraw(DebugDisplaySettingsRendering data) => new DebugUI.BoolField @@ -220,6 +239,7 @@ public SettingsPanel(DebugDisplaySettingsRendering data) WidgetFactory.CreateMSAA(data), WidgetFactory.CreatePostProcessing(data), WidgetFactory.CreateAdditionalWireframeShaderViews(data), + WidgetFactory.CreateWireframeNotSupportedWarning(data), WidgetFactory.CreateOverdraw(data) } }); From a4b99cbe1bf21c5be5db347b6a7b6216bf80c55e Mon Sep 17 00:00:00 2001 From: Oleksandr Kokoshyn Date: Fri, 27 Aug 2021 17:14:55 +0200 Subject: [PATCH 2/9] Edited the warning and the tooltip. --- .../Runtime/Debug/DebugDisplaySettingsRendering.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs index 75e1d14311f..b14b85cb2c7 100644 --- a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs +++ b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs @@ -82,7 +82,7 @@ static class Strings public static readonly NameAndTooltip MapOverlays = new() { name = "Map Overlays", tooltip = "Overlays render pipeline textures to validate the scene." }; public static readonly NameAndTooltip MapSize = new() { name = "Map Size", tooltip = "Set the size of the render pipeline texture in the scene." }; public static readonly NameAndTooltip AdditionalWireframeModes = new() { name = "Additional Wireframe Modes", tooltip = "Debug the scene with additional wireframe shader views that are different from those in the scene view." }; - public static readonly NameAndTooltip WireframeNotSupportedWarning = new() { name = "Warning: Wireframe may not be supported on this platform", tooltip = "Some platforms, for example OpenGL ES and Vulkan on mobile, may not support wireframe rendering." }; + public static readonly NameAndTooltip WireframeNotSupportedWarning = new() { name = "Warning: this platform might not support wireframe rendering.", tooltip = "Some platforms, for example, mobile platforms using OpenGL ES and Vulkan, might not support wireframe rendering." }; public static readonly NameAndTooltip Overdraw = new() { name = "Overdraw", tooltip = "Debug anywhere pixels are overdrawn on top of each other." }; public static readonly NameAndTooltip PostProcessing = new() { name = "Post-processing", tooltip = "Override the controls for Post Processing in the scene." }; public static readonly NameAndTooltip MSAA = new() { name = "MSAA", tooltip = "Use the checkbox to disable MSAA in the scene." }; From 7f9e8d8aea79ca13e0b0135450155bf9e6e46d1f Mon Sep 17 00:00:00 2001 From: Arttu Peltonen Date: Tue, 7 Sep 2021 11:30:53 +0300 Subject: [PATCH 3/9] Add new MessageBox DebugUI widget. - Use it to display "wireframe unsupported" & "missing shaders" warnings in player builds. --- .../Debugging/DebugUIDrawer.Builtins.cs | 36 +++ .../Runtime/Debugging/DebugUI.Fields.cs | 21 ++ .../Prefabs/Resources/DebugUICanvas.prefab | 4 + .../Scripts/DebugUIHandlerMessageBox.cs | 46 ++++ .../Scripts/DebugUIHandlerMessageBox.cs.meta | 11 + .../Prefabs/Widgets/DebugUIMessageBox.prefab | 220 ++++++++++++++++++ .../Widgets/DebugUIMessageBox.prefab.meta | 8 + .../Debug/DebugDisplaySettingsCommon.cs | 21 ++ .../Debug/DebugDisplaySettingsLighting.cs | 2 + .../Debug/DebugDisplaySettingsMaterial.cs | 3 +- .../Debug/DebugDisplaySettingsRendering.cs | 11 +- 11 files changed, 380 insertions(+), 3 deletions(-) create mode 100644 com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs create mode 100644 com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs.meta create mode 100644 com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIMessageBox.prefab create mode 100644 com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIMessageBox.prefab.meta diff --git a/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs b/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs index e10e5360d91..1992c693941 100644 --- a/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs +++ b/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs @@ -592,6 +592,42 @@ public override bool OnGUI(DebugUI.Widget widget, DebugState state) } } + /// + /// Builtin Drawer for MessageBox Items. + /// + [DebugUIDrawer(typeof(DebugUI.MessageBox))] + public sealed class DebugUIDrawerMessageBox : DebugUIDrawer + { + /// + /// OnGUI implementation for TextLabel DebugUIDrawer. + /// + /// DebugUI Widget. + /// Debug State associated with the Debug Item. + /// The state of the widget. + public override bool OnGUI(DebugUI.Widget widget, DebugState state) + { + var w = Cast(widget); + + var rect = PrepareControlRect(); + + var style = EditorStyles.label; + var color = w.style switch + { + DebugUI.MessageBox.Style.Info => new Color32(185, 220, 255, 255), + DebugUI.MessageBox.Style.Warning => new Color32(231, 180, 3, 255), + DebugUI.MessageBox.Style.Error => new Color32(231, 75, 3, 255), + _ => (Color32)Color.white + }; + + var oldColor = GUI.color; + GUI.color = color; + EditorGUI.LabelField(rect, EditorGUIUtility.TrTextContent(w.displayName, w.tooltip), EditorStyles.helpBox); + GUI.color = oldColor; + + return true; + } + } + /// /// Builtin Drawer for Container Debug Items. /// diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs b/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs index 030f5f6a346..cd7fcf7101d 100644 --- a/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs +++ b/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs @@ -526,5 +526,26 @@ public class Vector4Field : Field /// public int decimals = 3; } + + /// + /// Simple message box widget, providing a couple of different styles. + /// + public class MessageBox : Widget + { + /// + /// Label style defines text color and background. + /// + public enum Style + { + Info, + Warning, + Error + } + + /// + /// Style used to render displayName. + /// + public Style style = Style.Info; + } } } diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUICanvas.prefab b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUICanvas.prefab index 78009281f75..bfe79e7f0ef 100644 --- a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUICanvas.prefab +++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUICanvas.prefab @@ -58,6 +58,7 @@ Canvas: m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 m_SortingOrder: 0 m_TargetDisplay: 0 @@ -175,3 +176,6 @@ MonoBehaviour: - type: UnityEngine.Rendering.DebugUI+Table+Row, Unity.RenderPipelines.Core.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null prefab: {fileID: 224053494956566916, guid: 2d019437ff89b8d44949727731cd9357, type: 3} + - type: UnityEngine.Rendering.DebugUI+MessageBox, Unity.RenderPipelines.Core.Runtime, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + prefab: {fileID: 224053494956566916, guid: 10a25524b0986f9488b430e2829bbbe8, type: 3} diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs new file mode 100644 index 00000000000..5a87b1cd922 --- /dev/null +++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs @@ -0,0 +1,46 @@ +using UnityEngine.UI; + +namespace UnityEngine.Rendering.UI +{ + /// + /// DebugUIHandler for MessageBox widget. + /// + public class DebugUIHandlerMessageBox : DebugUIHandlerWidget + { + /// Name of the widget. + public Text nameLabel; + + DebugUI.MessageBox m_Field; + + static Color32 k_WarningBackgroundColor = new Color32(231, 180, 3, 30); + static Color32 k_WarningTextColor = new Color32(231, 180, 3, 255); + static Color32 k_ErrorBackgroundColor = new Color32(231, 75, 3, 30); + static Color32 k_ErrorTextColor = new Color32(231, 75, 3, 255); + + internal override void SetWidget(DebugUI.Widget widget) + { + base.SetWidget(widget); + m_Field = CastWidget(); + nameLabel.text = m_Field.displayName; + + var image = GetComponent(); + switch (m_Field.style) + { + case DebugUI.MessageBox.Style.Warning: + image.color = k_WarningBackgroundColor; + nameLabel.color = k_WarningTextColor; + break; + + case DebugUI.MessageBox.Style.Error: + image.color = k_ErrorBackgroundColor; + nameLabel.color = k_ErrorTextColor; + break; + } + } + + public override bool OnSelection(bool fromNext, DebugUIHandlerWidget previous) + { + return false; + } + } +} diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs.meta b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs.meta new file mode 100644 index 00000000000..9c64244ea97 --- /dev/null +++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c98bed7eaeec4cb32c57a5280f85e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIMessageBox.prefab b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIMessageBox.prefab new file mode 100644 index 00000000000..401922e8a05 --- /dev/null +++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIMessageBox.prefab @@ -0,0 +1,220 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1880654171993120 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224053494956566916} + - component: {fileID: 114903677526224182} + - component: {fileID: 114617406789257194} + - component: {fileID: 2667470447078002195} + - component: {fileID: 6558164272786438813} + - component: {fileID: 3503157118102991044} + m_Layer: 0 + m_Name: DebugUIMessageBox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224053494956566916 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880654171993120} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 224133929923872250} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 295, y: 0} + m_SizeDelta: {x: 590, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &114903677526224182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880654171993120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 6 + m_Right: 6 + m_Top: 4 + m_Bottom: 4 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &114617406789257194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880654171993120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &2667470447078002195 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880654171993120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e25c98bed7eaeec4cb32c57a5280f85e, type: 3} + m_Name: + m_EditorClassIdentifier: + colorDefault: {r: 0.8, g: 0.8, b: 0.8, a: 1} + colorSelected: {r: 0.25, g: 0.65, b: 0.8, a: 1} + nameLabel: {fileID: 114398791307483412} + backgroundImage: {fileID: 3503157118102991044} +--- !u!222 &6558164272786438813 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880654171993120} + m_CullTransparentMesh: 1 +--- !u!114 &3503157118102991044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880654171993120} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.27058825} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1887383709356810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224133929923872250} + - component: {fileID: 222546040197109316} + - component: {fileID: 114398791307483412} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224133929923872250 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1887383709356810} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 224053494956566916} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222546040197109316 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1887383709356810} + m_CullTransparentMesh: 1 +--- !u!114 &114398791307483412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1887383709356810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8, g: 0.8, b: 0.8, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 74a5091d8707f334b9a5c31ef71a64ba, type: 3} + m_FontSize: 15 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'Message text + +' diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIMessageBox.prefab.meta b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIMessageBox.prefab.meta new file mode 100644 index 00000000000..e6d7c9aaa03 --- /dev/null +++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIMessageBox.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10a25524b0986f9488b430e2829bbbe8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs index 7c686468340..eb3c40982fd 100644 --- a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs +++ b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs @@ -5,6 +5,25 @@ namespace UnityEngine.Rendering.Universal { class DebugDisplaySettingsCommon : IDebugDisplaySettingsData { + internal static class WidgetFactory + { + internal static DebugUI.Widget CreateMissingDebugShadersWarning() => new DebugUI.MessageBox + { + displayName = "Warning: Missing debug shader variants. Ensure \"Strip Debug Variants\" option is disabled in URP Global Settings.", + style = DebugUI.MessageBox.Style.Warning, + isHiddenCallback = () => + { +#if UNITY_EDITOR + return true; +#else + if (UniversalRenderPipelineGlobalSettings.instance != null) + return UniversalRenderPipelineGlobalSettings.instance.supportRuntimeDebugDisplay; + return true; +#endif + } + }; + } + private class SettingsPanel : DebugDisplaySettingsPanel { public override string PanelName => "Frequently Used"; @@ -13,6 +32,8 @@ private class SettingsPanel : DebugDisplaySettingsPanel public SettingsPanel() { + AddWidget(DebugDisplaySettingsCommon.WidgetFactory.CreateMissingDebugShadersWarning()); + var materialSettingsData = DebugDisplaySettings.Instance.MaterialSettings; AddWidget(new DebugUI.Foldout { diff --git a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsLighting.cs b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsLighting.cs index e9babe10d5f..6dce156a8ce 100644 --- a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsLighting.cs +++ b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsLighting.cs @@ -41,6 +41,8 @@ private class SettingsPanel : DebugDisplaySettingsPanel public SettingsPanel(DebugDisplaySettingsLighting data) { + AddWidget(DebugDisplaySettingsCommon.WidgetFactory.CreateMissingDebugShadersWarning()); + AddWidget(new DebugUI.Foldout { displayName = "Lighting Debug Modes", diff --git a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsMaterial.cs b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsMaterial.cs index e7d25dc7d62..8310ee6b93f 100644 --- a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsMaterial.cs +++ b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsMaterial.cs @@ -296,6 +296,8 @@ private class SettingsPanel : DebugDisplaySettingsPanel public override string PanelName => "Material"; public SettingsPanel(DebugDisplaySettingsMaterial data) { + AddWidget(DebugDisplaySettingsCommon.WidgetFactory.CreateMissingDebugShadersWarning()); + AddWidget(new DebugUI.Foldout { displayName = "Material Filters", @@ -307,7 +309,6 @@ public SettingsPanel(DebugDisplaySettingsMaterial data) WidgetFactory.CreateVertexAttribute(data) } }); - AddWidget(new DebugUI.Foldout { displayName = "Material Validation", diff --git a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs index b14b85cb2c7..eacc16634c7 100644 --- a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs +++ b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsRendering.cs @@ -82,7 +82,7 @@ static class Strings public static readonly NameAndTooltip MapOverlays = new() { name = "Map Overlays", tooltip = "Overlays render pipeline textures to validate the scene." }; public static readonly NameAndTooltip MapSize = new() { name = "Map Size", tooltip = "Set the size of the render pipeline texture in the scene." }; public static readonly NameAndTooltip AdditionalWireframeModes = new() { name = "Additional Wireframe Modes", tooltip = "Debug the scene with additional wireframe shader views that are different from those in the scene view." }; - public static readonly NameAndTooltip WireframeNotSupportedWarning = new() { name = "Warning: this platform might not support wireframe rendering.", tooltip = "Some platforms, for example, mobile platforms using OpenGL ES and Vulkan, might not support wireframe rendering." }; + public static readonly NameAndTooltip WireframeNotSupportedWarning = new() { name = "Warning: This platform might not support wireframe rendering.", tooltip = "Some platforms, for example, mobile platforms using OpenGL ES and Vulkan, might not support wireframe rendering." }; public static readonly NameAndTooltip Overdraw = new() { name = "Overdraw", tooltip = "Debug anywhere pixels are overdrawn on top of each other." }; public static readonly NameAndTooltip PostProcessing = new() { name = "Post-processing", tooltip = "Override the controls for Post Processing in the scene." }; public static readonly NameAndTooltip MSAA = new() { name = "MSAA", tooltip = "Use the checkbox to disable MSAA in the scene." }; @@ -134,11 +134,15 @@ internal static class WidgetFactory onValueChanged = (_, _) => DebugManager.instance.ReDrawOnScreenDebug() }; - internal static DebugUI.Widget CreateWireframeNotSupportedWarning(DebugDisplaySettingsRendering data) => new DebugUI.Container + internal static DebugUI.Widget CreateWireframeNotSupportedWarning(DebugDisplaySettingsRendering data) => new DebugUI.MessageBox { nameAndTooltip = Strings.WireframeNotSupportedWarning, + style = DebugUI.MessageBox.Style.Warning, isHiddenCallback = () => { +#if UNITY_EDITOR + return true; +#else switch (SystemInfo.graphicsDeviceType) { case GraphicsDeviceType.OpenGLES2: @@ -148,6 +152,7 @@ internal static class WidgetFactory default: return true; } +#endif } }; @@ -226,6 +231,8 @@ private class SettingsPanel : DebugDisplaySettingsPanel public SettingsPanel(DebugDisplaySettingsRendering data) { + AddWidget(DebugDisplaySettingsCommon.WidgetFactory.CreateMissingDebugShadersWarning()); + AddWidget(new DebugUI.Foldout { displayName = "Rendering Debug", From 724a454b612c0f5853478662dabf6ccedbb0b59b Mon Sep 17 00:00:00 2001 From: Arttu Peltonen Date: Tue, 7 Sep 2021 14:27:15 +0300 Subject: [PATCH 4/9] Update visual style based on feedback. --- .../Editor/Debugging/DebugUIDrawer.Builtins.cs | 18 ++++++------------ .../Scripts/DebugUIHandlerMessageBox.cs | 2 -- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs b/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs index 1992c693941..6c035f5fdca 100644 --- a/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs +++ b/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs @@ -608,21 +608,15 @@ public override bool OnGUI(DebugUI.Widget widget, DebugState state) { var w = Cast(widget); - var rect = PrepareControlRect(); - - var style = EditorStyles.label; - var color = w.style switch + var type = w.style switch { - DebugUI.MessageBox.Style.Info => new Color32(185, 220, 255, 255), - DebugUI.MessageBox.Style.Warning => new Color32(231, 180, 3, 255), - DebugUI.MessageBox.Style.Error => new Color32(231, 75, 3, 255), - _ => (Color32)Color.white + DebugUI.MessageBox.Style.Info => MessageType.Info, + DebugUI.MessageBox.Style.Warning => MessageType.Warning, + DebugUI.MessageBox.Style.Error => MessageType.Error, + _ => MessageType.None }; - var oldColor = GUI.color; - GUI.color = color; - EditorGUI.LabelField(rect, EditorGUIUtility.TrTextContent(w.displayName, w.tooltip), EditorStyles.helpBox); - GUI.color = oldColor; + EditorGUILayout.HelpBox(w.displayName, type); return true; } diff --git a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs index 5a87b1cd922..125468c747b 100644 --- a/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs +++ b/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerMessageBox.cs @@ -28,12 +28,10 @@ internal override void SetWidget(DebugUI.Widget widget) { case DebugUI.MessageBox.Style.Warning: image.color = k_WarningBackgroundColor; - nameLabel.color = k_WarningTextColor; break; case DebugUI.MessageBox.Style.Error: image.color = k_ErrorBackgroundColor; - nameLabel.color = k_ErrorTextColor; break; } } From 88f6fc22e52fea6e39b606c6c0f04c7bb2daf881 Mon Sep 17 00:00:00 2001 From: Arttu Peltonen Date: Tue, 7 Sep 2021 15:12:22 +0300 Subject: [PATCH 5/9] Add missing debug shader warning for HDRP. - Also don't use deprecated field on URP. --- .../Runtime/Debug/DebugDisplay.cs | 40 +++++++++++++++---- .../Debug/DebugDisplaySettingsCommon.cs | 2 +- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs b/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs index 8890c1978d6..b3f521f2b96 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs @@ -162,7 +162,7 @@ public class DebugDisplaySettings : IDebugData DebugUI.Widget[] m_DebugLightingItems; DebugUI.Widget[] m_DebugVolumeItems; DebugUI.Widget[] m_DebugRenderingItems; - DebugUI.Widget[] m_DebugDecalsAffectingTransparentItems; + DebugUI.Widget[] m_DebugDecalsItems; static GUIContent[] s_LightingFullScreenDebugStrings = null; static int[] s_LightingFullScreenDebugValues = null; @@ -1021,6 +1021,25 @@ void RegisterDisplayStatsDebug() panel.children.Add(m_DebugDisplayStatsItems); } + DebugUI.Widget CreateMissingDebugShadersWarning() + { + return new DebugUI.MessageBox + { + displayName = "Warning: Missing debug shader variants. Ensure \"Runtime Debug Shaders\" option is enabled in HDRP Global Settings.", + style = DebugUI.MessageBox.Style.Warning, + isHiddenCallback = () => + { +#if UNITY_EDITOR + return true; +#else + if (HDRenderPipelineGlobalSettings.instance != null) + return HDRenderPipelineGlobalSettings.instance.supportRuntimeDebugDisplay; + return true; +#endif + } + }; + } + static class MaterialStrings { public static readonly NameAndTooltip CommonMaterialProperties = new() { name = "Common Material Properties", tooltip = "Use the drop-down to select and debug a Material property to visualize on every GameObject on screen." }; @@ -1041,7 +1060,7 @@ static class MaterialStrings void RegisterMaterialDebug() { var list = new List(); - + list.Add(CreateMissingDebugShadersWarning()); list.Add(new DebugUI.EnumField { nameAndTooltip = MaterialStrings.CommonMaterialProperties, getter = () => (int)data.materialDebugSettings.debugViewMaterialCommonValue, setter = value => SetDebugViewCommonMaterialProperty((MaterialSharedProperty)value), autoEnum = typeof(MaterialSharedProperty), getIndex = () => (int)data.materialDebugSettings.debugViewMaterialCommonValue, setIndex = value => { data.ResetExclusiveEnumIndices(); data.materialDebugSettings.debugViewMaterialCommonValue = (MaterialSharedProperty)value; } }); list.Add(new DebugUI.EnumField { nameAndTooltip = MaterialStrings.Material, getter = () => (data.materialDebugSettings.debugViewMaterial[0]) == 0 ? 0 : data.materialDebugSettings.debugViewMaterial[1], setter = value => SetDebugViewMaterial(value), enumNames = MaterialDebugSettings.debugViewMaterialStrings, enumValues = MaterialDebugSettings.debugViewMaterialValues, getIndex = () => data.materialDebugSettings.materialEnumIndex, setIndex = value => { data.ResetExclusiveEnumIndices(); data.materialDebugSettings.materialEnumIndex = value; } }); list.Add(new DebugUI.EnumField { nameAndTooltip = MaterialStrings.Engine, getter = () => data.materialDebugSettings.debugViewEngine, setter = value => SetDebugViewEngine(value), enumNames = MaterialDebugSettings.debugViewEngineStrings, enumValues = MaterialDebugSettings.debugViewEngineValues, getIndex = () => data.engineEnumIndex, setIndex = value => { data.ResetExclusiveEnumIndices(); data.engineEnumIndex = value; } }); @@ -1108,7 +1127,7 @@ void RefreshLightingDebug(DebugUI.Field field, T value) void RefreshDecalsDebug(DebugUI.Field field, T value) { - UnregisterDebugItems(k_PanelDecals, m_DebugDecalsAffectingTransparentItems); + UnregisterDebugItems(k_PanelDecals, m_DebugDecalsItems); RegisterDecalsDebug(); } @@ -1225,7 +1244,7 @@ static class LightingStrings void RegisterLightingDebug() { var list = new List(); - + list.Add(CreateMissingDebugShadersWarning()); { var shadows = new DebugUI.Container() { displayName = "Shadows" }; @@ -1917,6 +1936,8 @@ void RegisterRenderingDebug() { var widgetList = new List(); + widgetList.Add(CreateMissingDebugShadersWarning()); + widgetList.Add( new DebugUI.EnumField { nameAndTooltip = RenderingStrings.FullscreenDebugMode, getter = () => (int)data.fullScreenDebugMode, setter = value => SetFullScreenDebugMode((FullScreenDebugMode)value), onValueChanged = RefreshRenderingDebug, enumNames = s_RenderingFullScreenDebugStrings, enumValues = s_RenderingFullScreenDebugValues, getIndex = () => data.renderingFulscreenDebugModeEnumIndex, setIndex = value => { data.ResetExclusiveEnumIndices(); data.renderingFulscreenDebugModeEnumIndex = value; } } ); @@ -2058,9 +2079,14 @@ void RegisterDecalsDebug() } }; - m_DebugDecalsAffectingTransparentItems = new DebugUI.Widget[] { decalAffectingTransparent }; + m_DebugDecalsItems = new DebugUI.Widget[] + { + CreateMissingDebugShadersWarning(), + decalAffectingTransparent + }; + var panel = DebugManager.instance.GetPanel(k_PanelDecals, true); - panel.children.Add(m_DebugDecalsAffectingTransparentItems); + panel.children.Add(m_DebugDecalsItems); } internal void RegisterDebug() @@ -2076,7 +2102,7 @@ internal void RegisterDebug() internal void UnregisterDebug() { - UnregisterDebugItems(k_PanelDecals, m_DebugDecalsAffectingTransparentItems); + UnregisterDebugItems(k_PanelDecals, m_DebugDecalsItems); DisableProfilingRecorders(); if (HDRenderPipeline.currentAsset?.currentPlatformRenderPipelineSettings.supportRayTracing ?? true) diff --git a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs index eb3c40982fd..30e2b9e3647 100644 --- a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs +++ b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs @@ -17,7 +17,7 @@ internal static class WidgetFactory return true; #else if (UniversalRenderPipelineGlobalSettings.instance != null) - return UniversalRenderPipelineGlobalSettings.instance.supportRuntimeDebugDisplay; + return !UniversalRenderPipelineGlobalSettings.instance.stripDebugVariants; return true; #endif } From fcc6ca39ec5488aa376a3aabdda6ff3f2e4907cc Mon Sep 17 00:00:00 2001 From: Arttu Peltonen Date: Tue, 7 Sep 2021 15:29:33 +0300 Subject: [PATCH 6/9] Changelog for Core & HDRP --- com.unity.render-pipelines.core/CHANGELOG.md | 1 + com.unity.render-pipelines.high-definition/CHANGELOG.md | 1 + 2 files changed, 2 insertions(+) diff --git a/com.unity.render-pipelines.core/CHANGELOG.md b/com.unity.render-pipelines.core/CHANGELOG.md index 0a34553f239..aefc5fd2c71 100644 --- a/com.unity.render-pipelines.core/CHANGELOG.md +++ b/com.unity.render-pipelines.core/CHANGELOG.md @@ -50,6 +50,7 @@ The version number for this package has increased due to a version update of a r - Added class for drawing shadow cascades `UnityEditor.Rendering.ShadowCascadeGUI.DrawShadowCascades`. - Added UNITY_PREV_MATRIX_M and UNITY_PREV_MATRIX_I_M shader macros to support instanced motion vector rendering - Added new API to customize the rtHandleProperties of a particular RTHandle. This is a temporary work around to assist with viewport setup of Custom post process when dealing with DLSS or TAAU +- Added DebugUI.MessageBox widget to allow showing info/warning/error messages in Rendering Debugger. ### Fixed - Help boxes with fix buttons do not crop the label. diff --git a/com.unity.render-pipelines.high-definition/CHANGELOG.md b/com.unity.render-pipelines.high-definition/CHANGELOG.md index 97d43ebb61e..b7716d68a64 100644 --- a/com.unity.render-pipelines.high-definition/CHANGELOG.md +++ b/com.unity.render-pipelines.high-definition/CHANGELOG.md @@ -99,6 +99,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Added a parameter to control the vertical shape offset of the volumetric clouds (case 1358528). - Added an option to render screen space global illumination in half resolution to achieve real-time compatible performance in high resolutions (case 1353727). - Added a built-in custom pass to draw object IDs. +- Added a warning to Rendering Debugger Runtime UI when debug shaders are stripped. ### Fixed - Fixed Intensity Multiplier not affecting realtime global illumination. From 7b38470449f73c09eecbf93325ca340ab8c1ee27 Mon Sep 17 00:00:00 2001 From: sebastienlagarde Date: Mon, 20 Sep 2021 12:54:44 +0200 Subject: [PATCH 7/9] Update CHANGELOG.md --- com.unity.render-pipelines.high-definition/CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/CHANGELOG.md b/com.unity.render-pipelines.high-definition/CHANGELOG.md index 601e51f6c26..91cf1044937 100644 --- a/com.unity.render-pipelines.high-definition/CHANGELOG.md +++ b/com.unity.render-pipelines.high-definition/CHANGELOG.md @@ -45,7 +45,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fixed sorting for mesh decals. - Fixed a warning when enabling tile/cluster debug. - Fix recursive rendering transmittance over the sky (case 1323945). - +- Fixed a warning to Rendering Debugger Runtime UI when debug shaders are stripped. +- ### Changed - Visual Environment ambient mode is now Dynamic by default. - Surface ReflectionTypeLoadExceptions in HDUtils.GetRenderPipelineMaterialList(). Without surfacing these exceptions, developers cannot act on any underlying reflection errors in the HDRP assembly. @@ -429,7 +430,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fixed ThreadMapDetail to saturate AO & smoothness strength inputs to prevent out-of-bounds values set by users (1357740) - Allow negative wind speed parameter. - Fixed custom pass custom buffer not bound after being created inside a custom pass. -- Fixed a warning to Rendering Debugger Runtime UI when debug shaders are stripped. ### Changed - Changed Window/Render Pipeline/HD Render Pipeline Wizard to Window/Rendering/HDRP Wizard From dcc9f0adfcc5034eb90766efb14f2931e63268bc Mon Sep 17 00:00:00 2001 From: Oleksandr Kokoshyn Date: Mon, 20 Sep 2021 13:12:15 +0200 Subject: [PATCH 8/9] Edited the warning (URP) --- .../Runtime/Debug/DebugDisplaySettingsCommon.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs index 30e2b9e3647..8a03d0c5a2f 100644 --- a/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs +++ b/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsCommon.cs @@ -9,7 +9,7 @@ internal static class WidgetFactory { internal static DebugUI.Widget CreateMissingDebugShadersWarning() => new DebugUI.MessageBox { - displayName = "Warning: Missing debug shader variants. Ensure \"Strip Debug Variants\" option is disabled in URP Global Settings.", + displayName = "Warning: the debug shader variants are missing. Ensure that the \"Strip Debug Variants\" option is disabled in URP Global Settings.", style = DebugUI.MessageBox.Style.Warning, isHiddenCallback = () => { From b0395697faaa9db338160ac7a45b9db38a0f88a8 Mon Sep 17 00:00:00 2001 From: Oleksandr Kokoshyn Date: Mon, 20 Sep 2021 13:21:00 +0200 Subject: [PATCH 9/9] Edited the warning (HDRP) --- .../Runtime/Debug/DebugDisplay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs b/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs index 567a48bbe1c..65ad4de7b73 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs @@ -1025,7 +1025,7 @@ DebugUI.Widget CreateMissingDebugShadersWarning() { return new DebugUI.MessageBox { - displayName = "Warning: Missing debug shader variants. Ensure \"Runtime Debug Shaders\" option is enabled in HDRP Global Settings.", + displayName = "Warning: the debug shader variants are missing. Ensure that the \"Runtime Debug Shaders\" option is enabled in HDRP Global Settings.", style = DebugUI.MessageBox.Style.Warning, isHiddenCallback = () => {