Singularity/Library/PackageCache/com.unity.render-pipelines..../Runtime/Debug/DebugDisplaySettingsCommon.cs
2024-05-06 11:45:45 -07:00

120 lines
5.2 KiB
C#

using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Rendering.Universal
{
class DebugDisplaySettingsCommon : IDebugDisplaySettingsData
{
internal static class WidgetFactory
{
internal static DebugUI.Widget CreateMissingDebugShadersWarning() => new DebugUI.MessageBox
{
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 = () =>
{
#if UNITY_EDITOR
return true;
#else
if (UniversalRenderPipelineGlobalSettings.instance != null)
return !UniversalRenderPipelineGlobalSettings.instance.stripDebugVariants;
return true;
#endif
}
};
}
private class SettingsPanel : DebugDisplaySettingsPanel
{
public override string PanelName => "Frequently Used";
const string k_GoToSectionString = "Go to Section...";
public SettingsPanel()
{
AddWidget(DebugDisplaySettingsCommon.WidgetFactory.CreateMissingDebugShadersWarning());
var materialSettingsData = DebugDisplaySettings.Instance.MaterialSettings;
AddWidget(new DebugUI.Foldout
{
displayName = "Material Filters",
isHeader = true,
opened = true,
children =
{
DebugDisplaySettingsMaterial.WidgetFactory.CreateMaterialOverride(materialSettingsData)
},
contextMenuItems = new List<DebugUI.Foldout.ContextMenuItem>()
{
new DebugUI.Foldout.ContextMenuItem
{
displayName = k_GoToSectionString,
action = () => { DebugManager.instance.RequestEditorWindowPanelIndex(1); }
}
}
});
var lightingSettingsData = DebugDisplaySettings.Instance.LightingSettings;
AddWidget(new DebugUI.Foldout
{
displayName = "Lighting Debug Modes",
isHeader = true,
opened = true,
children =
{
DebugDisplaySettingsLighting.WidgetFactory.CreateLightingDebugMode(lightingSettingsData),
DebugDisplaySettingsLighting.WidgetFactory.CreateLightingFeatures(lightingSettingsData)
},
contextMenuItems = new List<DebugUI.Foldout.ContextMenuItem>()
{
new DebugUI.Foldout.ContextMenuItem
{
displayName = k_GoToSectionString,
action = () => { DebugManager.instance.RequestEditorWindowPanelIndex(2); }
}
}
});
var renderingSettingsData = DebugDisplaySettings.Instance.RenderingSettings;
AddWidget(new DebugUI.Foldout
{
displayName = "Rendering Debug",
isHeader = true,
opened = true,
children =
{
DebugDisplaySettingsRendering.WidgetFactory.CreateHDR(renderingSettingsData),
DebugDisplaySettingsRendering.WidgetFactory.CreateMSAA(renderingSettingsData),
DebugDisplaySettingsRendering.WidgetFactory.CreatePostProcessing(renderingSettingsData),
DebugDisplaySettingsRendering.WidgetFactory.CreateAdditionalWireframeShaderViews(renderingSettingsData),
DebugDisplaySettingsRendering.WidgetFactory.CreateWireframeNotSupportedWarning(renderingSettingsData),
DebugDisplaySettingsRendering.WidgetFactory.CreateOverdraw(renderingSettingsData)
},
contextMenuItems = new List<DebugUI.Foldout.ContextMenuItem>()
{
new DebugUI.Foldout.ContextMenuItem
{
displayName = k_GoToSectionString,
action = () => { DebugManager.instance.RequestEditorWindowPanelIndex(3); }
}
}
});
}
}
#region IDebugDisplaySettingsData
public bool AreAnySettingsActive => DebugDisplaySettings.Instance.AreAnySettingsActive;
public bool IsPostProcessingAllowed => DebugDisplaySettings.Instance.IsPostProcessingAllowed;
public bool IsLightingActive => DebugDisplaySettings.Instance.IsLightingActive;
public bool TryGetScreenClearColor(ref Color color) => DebugDisplaySettings.Instance.TryGetScreenClearColor(ref color);
public IDebugDisplaySettingsPanelDisposable CreatePanel()
{
return new SettingsPanel();
}
#endregion
}
}