diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/Rendering-Debugger.md b/Packages/com.unity.render-pipelines.core/Documentation~/Rendering-Debugger.md index 5d041d9ec3c..988b773307f 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/Rendering-Debugger.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/Rendering-Debugger.md @@ -6,7 +6,7 @@ If your project uses a custom Scriptable Render Pipeline (SRP), you can add cont If your project uses the Universal Render Pipeline (URP) or the High-Definition Render Pipeline (HDRP), refer to the following pages: -- [Add controls to the Rendering Debugger in URP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@15.0/manual/features/rendering-debugger-add-controls.html) +- [Add controls to the Rendering Debugger in URP](https://docs.unity3d.com/Manual/urp/features/rendering-debugger-add-controls.html) - [Add controls to the Rendering Debugger in HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@15.0/manual/Rendering-Debugger-Add-Controls.html) ## How to access the Rendering Debugger diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/TableOfContents.md b/Packages/com.unity.render-pipelines.core/Documentation~/TableOfContents.md index 6adc3f35232..37f4d650a5a 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/TableOfContents.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/TableOfContents.md @@ -2,6 +2,7 @@ * [What's new](whats-new.md) * [12](whats-new-12.md) * [13](whats-new-13.md) + * [17](whats-new-17.md) * [Creating a custom render pipeline](srp-custom.md) * [Create a custom Scriptable Render Pipeline](srp-custom-getting-started.md) * [Create a Render Pipeline Asset and Render Pipeline Instance in a custom render pipeline](srp-creating-render-pipeline-asset-and-render-pipeline-instance.md) diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/User-Render-Requests.md b/Packages/com.unity.render-pipelines.core/Documentation~/User-Render-Requests.md index e322283530f..fbad4c18bef 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/User-Render-Requests.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/User-Render-Requests.md @@ -8,7 +8,7 @@ The request is processed sequentially in your script, so there's no callback inv `RenderPipeline.StandardRequest` renders the following: -* A full stack of cameras in the [Universal Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html) (URP). +* A full stack of cameras in the [Universal Render Pipeline](https://docs.unity3d.com/Manual/urp/urp-introduction.html) (URP). * A single camera in the [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest/index.html) (HDRP). The following code sample gets the output of the scriptable render pipeline when you select a GUI button. Attach the script to a camera and select **Enter Play Mode**. @@ -91,4 +91,4 @@ public class StandardRenderRequest : MonoBehaviour ## Other useful information -* On [Universal Render Pipeline (URP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@17.0/manual/User-Render-Requests.html). +* On [Universal Render Pipeline (URP)](https://docs.unity3d.com/Manual/urp/User-Render-Requests.html). diff --git a/Packages/com.unity.render-pipelines.core/Documentation~/index.md b/Packages/com.unity.render-pipelines.core/Documentation~/index.md index d1724a3269f..7a0b3dbefa3 100644 --- a/Packages/com.unity.render-pipelines.core/Documentation~/index.md +++ b/Packages/com.unity.render-pipelines.core/Documentation~/index.md @@ -6,4 +6,4 @@ SRP Core contains reusable code, including boilerplate code for working with pla If you are creating a custom SRP from scratch or customizing a prebuilt SRP, using SRP Core will save you time. -For more information on SRP, including a guide to getting started with a custom SRP, see the [SRP documentation](https://docs.unity3d.com/Manual/ScriptableRenderPipeline.html). For more information on Unity's prebuilt SRPs, see the [Universal Render Pipeline (URP) documentation](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest), or the [High Definition Render Pipeline (HDRP) documentation](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest). +For more information on SRP, including a guide to getting started with a custom SRP, see the [SRP documentation](https://docs.unity3d.com/Manual/ScriptableRenderPipeline.html). For more information on Unity's prebuilt SRPs, see the [Universal Render Pipeline (URP) documentation](https://docs.unity3d.com/Manual/urp/urp-introduction.html), or the [High Definition Render Pipeline (HDRP) documentation](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest). diff --git a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugState.cs b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugState.cs index 0c7e971bc50..5a57ad95d16 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugState.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugState.cs @@ -237,9 +237,15 @@ public override void SetValue(object value, DebugUI.IValueField field) /// /// Unsigned Integer Debug State. /// - [Serializable, DebugState(typeof(DebugUI.UIntField), typeof(DebugUI.MaskField))] + [Serializable, DebugState(typeof(DebugUI.UIntField))] public sealed class DebugStateUInt : DebugState { } + /// + /// Rendering layer mask state. + /// + [Serializable, DebugState(typeof(DebugUI.RenderingLayerField))] + public sealed class DebugStateRenderingLayer : DebugState { } + /// /// Float Debug State. /// diff --git a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs index f5bed0d0d3d..ca52e10e39f 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugUIDrawer.Builtins.cs @@ -398,12 +398,11 @@ protected override Enum DoGUI(Rect rect, GUIContent label, DebugUI.BitField fiel } } - /// /// Builtin Drawer for Maskfield Debug Items. /// - [DebugUIDrawer(typeof(DebugUI.MaskField))] - public sealed class DebugUIDrawerMaskField : DebugUIFieldDrawer + [DebugUIDrawer(typeof(DebugUI.RenderingLayerField))] + public sealed class DebugUIDrawerRenderingLayerField : DebugUIFieldDrawer { /// /// Does the field of the given type @@ -413,15 +412,10 @@ public sealed class DebugUIDrawerMaskField : DebugUIFieldDrawerThe field /// The state /// The current value from the UI - protected override uint DoGUI(Rect rect, GUIContent label, DebugUI.MaskField field, DebugStateUInt state) + protected override RenderingLayerMask DoGUI(Rect rect, GUIContent label, DebugUI.RenderingLayerField field, DebugStateRenderingLayer state) { uint value = field.GetValue(); - - var enumNames = new string[field.enumNames.Length]; - for (int i = 0; i < enumNames.Length; i++) - enumNames[i] = field.enumNames[i].text; - var mask = EditorGUI.MaskField(rect, label, (int)value, enumNames); - + var mask = EditorGUI.MaskField(rect, label, (int)value, field.renderingLayersNames); return (uint)mask; } } diff --git a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugWindow.cs b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugWindow.cs index 1ca095c6d56..9547e9e6afa 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugWindow.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Debugging/DebugWindow.cs @@ -43,7 +43,7 @@ void OnEnable() hideFlags = HideFlags.HideAndDontSave; } } - + [CoreRPHelpURL("Rendering-Debugger")] sealed class DebugWindow : EditorWindowWithHelpButton, IHasCustomMenu { @@ -478,22 +478,22 @@ void OnGUI() using (new EditorGUILayout.VerticalScope()) { var selectedPanel = panels[m_Settings.selectedPanel]; - + using (new EditorGUILayout.HorizontalScope()) { var style = new GUIStyle(CoreEditorStyles.sectionHeaderStyle) { fontStyle = FontStyle.Bold }; EditorGUILayout.LabelField(new GUIContent(selectedPanel.displayName), style); - + // Context menu var rect = GUILayoutUtility.GetLastRect(); var contextMenuRect = new Rect(rect.xMax, rect.y + 4f, 16f, 16f); - + CoreEditorUtils.ShowHelpButton(contextMenuRect, selectedPanel.documentationUrl, new GUIContent($"{selectedPanel.displayName} panel.")); } const float leftMargin = 4f; GUILayout.Space(leftMargin); - + using (var scrollScope = new EditorGUILayout.ScrollViewScope(m_ContentScroll)) { TraverseContainerGUI(selectedPanel); @@ -544,6 +544,11 @@ void OnWidgetGUI(DebugUI.Widget widget) if (widget.isInactiveInEditor || widget.isHidden) return; + if (widget.queryPath == null) + { + Debug.LogError($"Widget {widget.GetType()} query path is null"); + return; + } // State will be null for stateless widget m_WidgetStates.TryGetValue(widget.queryPath, out DebugState state); diff --git a/Packages/com.unity.render-pipelines.core/Editor/Deprecated.cs b/Packages/com.unity.render-pipelines.core/Editor/Deprecated.cs index e1bdc6b6989..700535aa3fb 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Deprecated.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Deprecated.cs @@ -158,4 +158,34 @@ public DefaultVolumeProfileEditor(Editor baseEditor, VolumeProfile profile) m_TargetSerializedObject = baseEditor.serializedObject; } } + + + + /// + /// Builtin Drawer for Maskfield Debug Items. + /// + [DebugUIDrawer(typeof(DebugUI.MaskField))] + [Obsolete("DebugUI.MaskField has been deprecated and is not longer supported, please use BitField instead. #from(6000.2)", false)] + public sealed class DebugUIDrawerMaskField : DebugUIFieldDrawer + { + /// + /// Does the field of the given type + /// + /// The rect to draw the field + /// The label for the field + /// The field + /// The state + /// The current value from the UI + protected override uint DoGUI(Rect rect, GUIContent label, DebugUI.MaskField field, DebugStateUInt state) + { + uint value = field.GetValue(); + + var enumNames = new string[field.enumNames.Length]; + for (int i = 0; i < enumNames.Length; i++) + enumNames[i] = field.enumNames[i].text; + var mask = EditorGUI.MaskField(rect, label, (int)value, enumNames); + + return (uint)mask; + } + } } diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.Serialization.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.Serialization.cs index 12733d3cc13..e44748d4704 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.Serialization.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.Serialization.cs @@ -1070,7 +1070,11 @@ unsafe static void WriteBakingCells(BakingCell[] bakingCells) AssetDatabase.ImportAsset(cellDataFilename); AssetDatabase.ImportAsset(cellOptionalDataFilename); - AssetDatabase.ImportAsset(cellProbeOcclusionDataFilename); + // If we did not write a probe occlusion file (because it was zero bytes), don't try to load it (UUM-101480) + if (probeOcclusion.Length > 0) + { + AssetDatabase.ImportAsset(cellProbeOcclusionDataFilename); + } AssetDatabase.ImportAsset(cellBricksDataFilename); AssetDatabase.ImportAsset(cellSharedDataFilename); AssetDatabase.ImportAsset(cellSupportDataFilename); diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBuildProcessor.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBuildProcessor.cs index 65fbc5026a8..cf0413046c4 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBuildProcessor.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBuildProcessor.cs @@ -4,11 +4,10 @@ using UnityEditor.Build.Reporting; using UnityEngine; using UnityEngine.Rendering; -using UnityEngine.SceneManagement; namespace UnityEditor.Rendering { - class ProbeVolumeBuildProcessor : BuildPlayerProcessor, IProcessSceneWithReport + class ProbeVolumeBuildProcessor : BuildPlayerProcessor, IPostprocessBuildWithReport { const string kTempAPVStreamingAssetsPath = "TempAPVStreamingAssets"; @@ -18,15 +17,27 @@ string GetTempAPVStreamingAssetsPath() return Path.Combine(libraryPath, kTempAPVStreamingAssetsPath); } - void PrepareStreamableAsset(ProbeVolumeStreamableAsset asset, string basePath, bool useStreamingAsset) + // Include an asset in the build. The mechanism for doing so depends on whether we are using StreamingAssets path. + static void IncludeStreamableAsset(ProbeVolumeStreamableAsset asset, string basePath, bool useStreamingAsset) { - asset.UpdateAssetReference(useStreamingAsset); - if (useStreamingAsset) + { + asset.ClearAssetReferenceForBuild(); CopyStreamableAsset(asset, basePath); + } + else + { + asset.EnsureAssetLoaded(); + } + } + + // Ensure that an asset is not included in the build. + static void StripStreambleAsset(ProbeVolumeStreamableAsset asset) + { + asset.ClearAssetReferenceForBuild(); } - void CopyStreamableAsset(ProbeVolumeStreamableAsset asset, string basePath) + static void CopyStreamableAsset(ProbeVolumeStreamableAsset asset, string basePath) { var assetPath = asset.GetAssetPath(); if (!File.Exists(assetPath)) @@ -60,6 +71,9 @@ void GetProbeVolumeProjectSettings(BuildTarget target, out bool supportProbeVolu } } + // Keep track of which assets we touched during the build, so we can restore them after the build. + private static HashSet s_BakingSetsProcessedLastBuild = new(); + public override void PrepareForBuild(BuildPlayerContext buildPlayerContext) { GetProbeVolumeProjectSettings(buildPlayerContext.BuildPlayerOptions.target, out bool supportProbeVolume, out var maxSHBands); @@ -89,8 +103,7 @@ public override void PrepareForBuild(BuildPlayerContext buildPlayerContext) Directory.CreateDirectory(tempStreamingAssetsPath); - HashSet processedBakingSets = new HashSet(); - + s_BakingSetsProcessedLastBuild.Clear(); foreach (var scene in buildPlayerContext.BuildPlayerOptions.scenes) { var sceneGUID = AssetDatabase.AssetPathToGUID(scene); @@ -98,7 +111,7 @@ public override void PrepareForBuild(BuildPlayerContext buildPlayerContext) if (bakingSet != null) { // Already processed (different scenes can belong to the same baking set). - if (processedBakingSets.Contains(bakingSet)) + if (s_BakingSetsProcessedLastBuild.Contains(bakingSet)) continue; if (!bakingSet.cellSharedDataAsset.IsValid()) // Not baked @@ -111,89 +124,57 @@ public override void PrepareForBuild(BuildPlayerContext buildPlayerContext) bool useStreamingAsset = !GraphicsSettings.GetRenderPipelineSettings().probeVolumeDisableStreamingAssets; - PrepareStreamableAsset(bakingSet.cellSharedDataAsset, basePath, useStreamingAsset); - PrepareStreamableAsset(bakingSet.cellBricksDataAsset, basePath, useStreamingAsset); + IncludeStreamableAsset(bakingSet.cellSharedDataAsset, basePath, useStreamingAsset); + IncludeStreamableAsset(bakingSet.cellBricksDataAsset, basePath, useStreamingAsset); // For now we always strip support data in build as it's mostly unsupported. // Later we'll need a proper option to strip it or not. bool stripSupportData = true; - if (!stripSupportData) - PrepareStreamableAsset(bakingSet.cellSupportDataAsset, basePath, useStreamingAsset); + if (stripSupportData) + StripStreambleAsset(bakingSet.cellSupportDataAsset); + else + IncludeStreamableAsset(bakingSet.cellSupportDataAsset, basePath, useStreamingAsset); foreach (var scenario in bakingSet.scenarios) { - PrepareStreamableAsset(scenario.Value.cellDataAsset, basePath, useStreamingAsset); + IncludeStreamableAsset(scenario.Value.cellDataAsset, basePath, useStreamingAsset); if (maxSHBands == ProbeVolumeSHBands.SphericalHarmonicsL2) - PrepareStreamableAsset(scenario.Value.cellOptionalDataAsset, basePath, useStreamingAsset); - PrepareStreamableAsset(scenario.Value.cellProbeOcclusionDataAsset, basePath, useStreamingAsset); + IncludeStreamableAsset(scenario.Value.cellOptionalDataAsset, basePath, useStreamingAsset); + else + StripStreambleAsset(scenario.Value.cellOptionalDataAsset); + + if (bakingSet.bakedProbeOcclusion) + IncludeStreamableAsset(scenario.Value.cellProbeOcclusionDataAsset, basePath, useStreamingAsset); + else + StripStreambleAsset(scenario.Value.cellProbeOcclusionDataAsset); } - processedBakingSets.Add(bakingSet); + s_BakingSetsProcessedLastBuild.Add(bakingSet); } } buildPlayerContext.AddAdditionalPathToStreamingAssets(tempStreamingAssetsPath, AdaptiveProbeVolumes.kAPVStreamingAssetsPath); } - private static bool IsBundleBuild(BuildReport report, bool isPlaying) - { - // We are entering playmode, so not building a bundle. - if (isPlaying) - return false; - - // Addressable builds do not provide a BuildReport. Because the Addressables package - // only supports AssetBundle builds, we infer that this is not a player build. - if (report == null) - return true; - - return report.summary.buildType == BuildType.AssetBundle; - } - - // This codepath handles the case of building asset bundles, i.e. not a full player build. It updates the references - // to individual data assets in the baking sets for each scene, such that the assets are included in the bundle. - public override int callbackOrder => 1; - public void OnProcessScene(Scene scene, BuildReport report) + public void OnPostprocessBuild(BuildReport report) { - // Only run for bundle builds. - if (!IsBundleBuild(report, Application.isPlaying)) - return; - - // Only run when APV is enabled. - GetProbeVolumeProjectSettings(EditorUserBuildSettings.activeBuildTarget, out bool supportProbeVolume, out var maxSHBands); - if (!supportProbeVolume) - return; - - // Reload the map from scene to baking set if we couldn't find the specific baking set. - if (ProbeVolumeBakingSet.sceneToBakingSet == null || ProbeVolumeBakingSet.sceneToBakingSet.Count == 0) - ProbeVolumeBakingSet.SyncBakingSets(); - - // Get the baking set for the scene. - var bakingSet = ProbeVolumeBakingSet.GetBakingSetForScene(scene.GetGUID()); - if (bakingSet == null || !bakingSet.cellSharedDataAsset.IsValid()) + if (s_BakingSetsProcessedLastBuild == null || s_BakingSetsProcessedLastBuild.Count == 0) return; - bool useStreamingAsset = !GraphicsSettings.GetRenderPipelineSettings().probeVolumeDisableStreamingAssets; - if (useStreamingAsset) + // Go over each asset reference we touched during the last build, make sure asset references are intact. + foreach (var bakingSet in s_BakingSetsProcessedLastBuild) { - Debug.LogWarning( - "Attempted to build an Asset Bundle containing Adaptive Probe Volume data, but streaming assets are enabled. This is unsupported. " + - "To use Adaptive Probe Volumes with Asset Bundles, please check 'Probe Volume Disable Streaming Assets' under Graphics Settings."); + bakingSet.cellBricksDataAsset.EnsureAssetLoaded(); + bakingSet.cellSharedDataAsset.EnsureAssetLoaded(); + bakingSet.cellSupportDataAsset.EnsureAssetLoaded(); + foreach (var scenario in bakingSet.scenarios) + { + scenario.Value.cellDataAsset.EnsureAssetLoaded(); + scenario.Value.cellOptionalDataAsset.EnsureAssetLoaded(); + scenario.Value.cellProbeOcclusionDataAsset.EnsureAssetLoaded(); + } } - // Update all the asset references. - bakingSet.cellSharedDataAsset.UpdateAssetReference(useStreamingAsset); - bakingSet.cellBricksDataAsset.UpdateAssetReference(useStreamingAsset); - - bool stripSupportData = true; - if (!stripSupportData) - bakingSet.cellSupportDataAsset.UpdateAssetReference(false); - - foreach (var scenario in bakingSet.scenarios) - { - scenario.Value.cellDataAsset.UpdateAssetReference(useStreamingAsset); - if (maxSHBands == ProbeVolumeSHBands.SphericalHarmonicsL2) - scenario.Value.cellOptionalDataAsset.UpdateAssetReference(useStreamingAsset); - scenario.Value.cellProbeOcclusionDataAsset.UpdateAssetReference(useStreamingAsset); - } + s_BakingSetsProcessedLastBuild.Clear(); } } } diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs index 8aaa605c3c5..fcd6253a80e 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs @@ -221,6 +221,7 @@ public override void OnGUI() Initialize(); var prv = ProbeReferenceVolume.instance; + // In single scene mode, user can't control active set, so we automatically create a new one // in case the active scene doesn't have a baking set so that we can display baking settings // Clone the current activeSet if possible so that it's seamless when eg. duplicating a scene @@ -787,10 +788,14 @@ internal void OnSceneOpened(Scene scene, OpenSceneMode mode) // Find the set in which the new active scene belongs var set = ProbeVolumeBakingSet.GetBakingSetForScene(scene); - if (set != null) - { - activeSet = set; + activeSet = set; + if (set == null) + { + m_SingleSceneMode = true; + } + else + { // If we load a new scene that doesn't have the current scenario, change it if (!set.m_LightingScenarios.Contains(prv.lightingScenario)) prv.SetActiveScenario(set.m_LightingScenarios[0], false); diff --git a/Packages/com.unity.render-pipelines.core/Runtime/AssemblyInfo.cs b/Packages/com.unity.render-pipelines.core/Runtime/AssemblyInfo.cs index 8bf49b24911..96162f18722 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/AssemblyInfo.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/AssemblyInfo.cs @@ -5,3 +5,7 @@ [assembly: InternalsVisibleTo("Unity.RenderPipelines.Core.Runtime.Tests")] [assembly: InternalsVisibleTo("Unity.GraphicTests.Performance.RPCore.Runtime")] [assembly: InternalsVisibleTo("Unity.GraphicTests.Performance.Universal.Runtime")] // access to internal ProfileIds + +// Smoke test project visibility +[assembly: InternalsVisibleTo("SRPSmoke.Runtime.Tests")] +[assembly: InternalsVisibleTo("SRPSmoke.Editor.Tests")] diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs index db504af0bcf..7c6c0495449 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs @@ -242,6 +242,134 @@ public override float ValidateValue(float value) } } + /// + /// Field that displays + /// + public class RenderingLayerField : Field, IContainer + { + static readonly NameAndTooltip s_RenderingLayerColors = new() + { + name = "Layers Color", + tooltip = "Select the display color for each Rendering Layer" + }; + + private string[] m_RenderingLayersNames = Array.Empty(); + + private int m_DefinedRenderingLayersCount = -1; + + private int maxRenderingLayerCount + { + get + { +#if UNITY_EDITOR + if (UnityEditor.Rendering.EditorGraphicsSettings. + TryGetFirstRenderPipelineSettingsFromInterface(out var settings)) + return Mathf.Min(settings.maxSupportedRenderingLayers, RenderingLayerMask.GetRenderingLayerCount()); +#endif + + return RenderingLayerMask.GetRenderingLayerCount(); + } + } + + private void Resize() + { + m_DefinedRenderingLayersCount = RenderingLayerMask.GetDefinedRenderingLayerCount(); + + // Fill layer names + m_RenderingLayersNames = new string[maxRenderingLayerCount]; + for (int i = 0; i < maxRenderingLayerCount; i++) + { + var definedLayerName = RenderingLayerMask.RenderingLayerToName(i); + if (string.IsNullOrEmpty(definedLayerName)) + definedLayerName = $"Unused Rendering Layer {i}"; + m_RenderingLayersNames[i] = definedLayerName; + } + + // Foldout + Color for each layer + m_RenderingLayersColors.Clear(); + var layersColor = new DebugUI.Foldout() + { + nameAndTooltip = s_RenderingLayerColors, + flags = Flags.EditorOnly, + parent = this, + }; + m_RenderingLayersColors.Add(layersColor); + + for (int i = 0; i < m_RenderingLayersNames.Length; i++) + { + var index = i; // capture the variable for the color field index + layersColor.children.Add(new DebugUI.ColorField + { + displayName = m_RenderingLayersNames[index], + getter = () => + { + Assert.IsNotNull(getRenderingLayerColor, "Please specify a method for getting the rendering layer color"); + return getRenderingLayerColor(index); + }, + setter = value => + { + Assert.IsNotNull(setRenderingLayerColor, "Please specify a method for setting the rendering layer color"); + setRenderingLayerColor(value, index); + } + }); + } + + GenerateQueryPath(); + } + + /// + /// Obtains the list of the available rendering layer names + /// + public string[] renderingLayersNames + { + get + { + if (m_DefinedRenderingLayersCount != RenderingLayerMask.GetDefinedRenderingLayerCount()) + { + Resize(); + } + + return m_RenderingLayersNames; + } + } + + private ObservableList m_RenderingLayersColors = new ObservableList(); + + /// + /// Gets the list of widgets representing the rendering layer colors. + /// + public ObservableList children + { + get + { + if (m_DefinedRenderingLayersCount != RenderingLayerMask.GetDefinedRenderingLayerCount()) + { + Resize(); + } + + return m_RenderingLayersColors; + } + } + + /// + /// Obtains the color in a given index + /// + public Func getRenderingLayerColor { get; set; } + /// + /// Sets the color for a given index + /// + public Action setRenderingLayerColor { get; set; } + + internal override void GenerateQueryPath() + { + base.GenerateQueryPath(); + + int numChildren = children.Count; + for (int i = 0; i < numChildren; i++) + children[i].GenerateQueryPath(); + } + } + /// /// Generic that stores enumNames and enumValues /// @@ -446,47 +574,6 @@ public Type enumType } } - /// - /// Maskfield enumeration field. - /// - public class MaskField : EnumField - { - /// - /// Fills the enum using the provided names - /// - /// names to fill the enum - public void Fill(string[] names) - { - using (ListPool.Get(out var tmpNames)) - using (ListPool.Get(out var tmpValues)) - { - for (int i=0; i<(names.Length); ++i) - { - tmpNames.Add(new GUIContent(names[i])); - tmpValues.Add(i); - } - enumNames = tmpNames.ToArray(); - enumValues = tmpValues.ToArray(); - } - } - - /// - /// Assigns a value to the maskfield. - /// - /// value for the maskfield - public override void SetValue(uint value) - { - Assert.IsNotNull(setter); - var validValue = ValidateValue(value); - - if (!validValue.Equals(getter())) - { - setter(validValue); - onValueChanged?.Invoke(this, validValue); - } - } - } - /// /// Color field. /// diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUICanvas.prefab b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUICanvas.prefab index e6f951c943a..37aaf8c0cae 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUICanvas.prefab +++ b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Resources/DebugUICanvas.prefab @@ -114,7 +114,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 76db615e524a19c4990482d75a475543, type: 3} m_Name: m_EditorClassIdentifier: - panelPrefab: {fileID: 224481716535368988, guid: daa46a58178a6ad41ae1ddc2dc7f856d, type: 3} + panelPrefab: {fileID: 224481716535368988, guid: daa46a58178a6ad41ae1ddc2dc7f856d, + type: 3} prefabs: - type: UnityEngine.Rendering.DebugUI+Value, Unity.RenderPipelines.Core.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null @@ -163,13 +164,15 @@ MonoBehaviour: prefab: {fileID: 224284813447651300, guid: 38a07789c9e87004dad98c2909f58369, type: 3} - type: UnityEngine.Rendering.DebugUI+BitField, Unity.RenderPipelines.Core.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - prefab: {fileID: 5833802642077810669, guid: 7c78b588b2e1f7c4a86ca4a985cf6e4a, type: 3} + prefab: {fileID: 5833802642077810669, guid: 7c78b588b2e1f7c4a86ca4a985cf6e4a, + type: 3} - type: UnityEngine.Rendering.DebugUI+HistoryBoolField, Unity.RenderPipelines.Core.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null prefab: {fileID: 108402283379224504, guid: 5088d0220f0c4df439cf06c5c270eacb, type: 3} - type: UnityEngine.Rendering.DebugUI+HistoryEnumField, Unity.RenderPipelines.Core.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - prefab: {fileID: 8535926254376877601, guid: b2da6b27df236b144b3516ed8e7d36ac, type: 3} + prefab: {fileID: 8535926254376877601, guid: b2da6b27df236b144b3516ed8e7d36ac, + type: 3} - type: UnityEngine.Rendering.DebugUI+Table, Unity.RenderPipelines.Core.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null prefab: {fileID: 224284813447651300, guid: 38a07789c9e87004dad98c2909f58369, type: 3} @@ -193,7 +196,12 @@ MonoBehaviour: prefab: {fileID: 224224135738715566, guid: ad83bc56407925d44a77a5bd01cd6783, type: 3} - type: UnityEngine.Rendering.DebugUI+ObjectPopupField, Unity.RenderPipelines.Core.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - prefab: {fileID: 4224455051203994714, guid: 48fb043c850cadc4a883b53785e14c6e, type: 3} + prefab: {fileID: 4224455051203994714, guid: 48fb043c850cadc4a883b53785e14c6e, + type: 3} - type: UnityEngine.Rendering.DebugUI+RuntimeDebugShadersMessageBox, Unity.RenderPipelines.Core.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null prefab: {fileID: 224053494956566916, guid: 10a25524b0986f9488b430e2829bbbe8, type: 3} + - type: UnityEngine.Rendering.DebugUI+RenderingLayerField, Unity.RenderPipelines.Core.Runtime, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + prefab: {fileID: 5833802642077810669, guid: 928d1ca04af80c84e8d5dabc18095d79, + type: 3} diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRenderingLayerField.cs b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRenderingLayerField.cs new file mode 100644 index 00000000000..7516c5811cb --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRenderingLayerField.cs @@ -0,0 +1,152 @@ +using System.Collections.Generic; +using UnityEngine.Assertions; +using UnityEngine.UI; + +namespace UnityEngine.Rendering.UI +{ + /// + /// DebugUIHandler for RenderingLayerField widget. + /// + public class DebugUIHandlerRenderingLayerField : DebugUIHandlerWidget + { + /// Name of the widget. + public Text nameLabel; + /// Value toggle. + public UIFoldout valueToggle; + + /// Toggles for the RenderingLayerField. + public List toggles; + + DebugUI.RenderingLayerField m_Field; + DebugUIHandlerContainer m_Container; + + internal override void SetWidget(DebugUI.Widget widget) + { + base.SetWidget(widget); + m_Field = CastWidget(); + m_Container = GetComponent(); + nameLabel.text = m_Field.displayName; + + int toggleIndex = 0; + var count = m_Field.renderingLayersNames.Length - 1; + foreach (var layerName in m_Field.renderingLayersNames) + { + if (toggleIndex >= toggles.Count) + continue; + + var toggle = toggles[toggleIndex]; + toggle.getter = GetValue; + toggle.setter = SetValue; + toggle.nextUIHandler = toggleIndex < count ? toggles[toggleIndex + 1] : null; + toggle.previousUIHandler = toggleIndex > 0 ? toggles[toggleIndex - 1] : null; + toggle.parentUIHandler = this; + toggle.index = toggleIndex; + toggle.nameLabel.text = layerName; + toggle.Init(); + toggleIndex++; + } + + // Destroy the remaining toggles outside of the range of the displayed enum. + for (; toggleIndex < toggles.Count; ++toggleIndex) + { + CoreUtils.Destroy(toggles[toggleIndex].gameObject); + toggles[toggleIndex] = null; + } + } + + bool GetValue(int index) + { + var mask = m_Field.GetValue(); + return (mask & (1u << index)) != 0; + } + + void SetValue(int index, bool value) + { + var mask = m_Field.GetValue(); + if (value) + mask |= 1 << index; + else + mask &= ~(1 << index); + m_Field.SetValue(mask); + } + + /// + /// OnSelection implementation. + /// + /// True if the selection wrapped around. + /// Previous widget. + /// True if the selection is allowed. + public override bool OnSelection(bool fromNext, DebugUIHandlerWidget previous) + { + if (fromNext || valueToggle.isOn == false) + { + nameLabel.color = colorSelected; + } + else if (valueToggle.isOn) + { + if (m_Container.IsDirectChild(previous)) + { + nameLabel.color = colorSelected; + } + else + { + var lastItem = m_Container.GetLastItem(); + DebugManager.instance.ChangeSelection(lastItem, false); + } + } + + return true; + } + + /// + /// OnDeselection implementation. + /// + public override void OnDeselection() + { + nameLabel.color = colorDefault; + } + + /// + /// OnIncrement implementation. + /// + /// True if incrementing fast. + public override void OnIncrement(bool fast) + { + valueToggle.isOn = true; + } + + /// + /// OnDecrement implementation. + /// + /// Trye if decrementing fast. + public override void OnDecrement(bool fast) + { + valueToggle.isOn = false; + } + + /// + /// OnAction implementation. + /// + public override void OnAction() + { + valueToggle.isOn = !valueToggle.isOn; + } + + /// + /// Next implementation. + /// + /// Next widget UI handler, parent if there is none. + public override DebugUIHandlerWidget Next() + { + if (!valueToggle.isOn || m_Container == null) + return base.Next(); + + var firstChild = m_Container.GetFirstItem(); + + if (firstChild == null) + return base.Next(); + + return firstChild; + } + } +} diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/CommonAssets/Editor/Setup/SetupProject.cs.meta b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRenderingLayerField.cs.meta similarity index 83% rename from Tests/SRPTests/Projects/SRP_SmokeTest/Assets/CommonAssets/Editor/Setup/SetupProject.cs.meta rename to Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRenderingLayerField.cs.meta index 121d6203f42..600e05f1b49 100644 --- a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/CommonAssets/Editor/Setup/SetupProject.cs.meta +++ b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Scripts/DebugUIHandlerRenderingLayerField.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1bdb31f6bf73c1042b388677e3650e74 +guid: ea44ef5968bb44a48b7855c36dae02c4 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIHandlerRenderingLayerField.prefab b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIHandlerRenderingLayerField.prefab new file mode 100644 index 00000000000..f75ebd752cf --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIHandlerRenderingLayerField.prefab @@ -0,0 +1,12455 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &74822769193199464 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1958888752443160004} + - component: {fileID: 6679106303399258962} + - component: {fileID: 5050348896946348867} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1958888752443160004 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 74822769193199464} + 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: 8356148564785885022} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6679106303399258962 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 74822769193199464} + m_CullTransparentMesh: 0 +--- !u!114 &5050348896946348867 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 74822769193199464} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &198308496328705422 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7290923337117366102} + - component: {fileID: 8069964854434385667} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7290923337117366102 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 198308496328705422} + 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: 6075760728334120815} + m_Father: {fileID: 3747482945603663964} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8069964854434385667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 198308496328705422} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2700416459006292345} + toggleTransition: 1 + graphic: {fileID: 5802453145572142467} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &210585996295577721 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5983516410954562191} + - component: {fileID: 2707655605294999502} + - component: {fileID: 4746959147978535488} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5983516410954562191 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210585996295577721} + 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: 5833546809406971014} + m_Father: {fileID: 3807659439045052884} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2707655605294999502 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210585996295577721} + m_CullTransparentMesh: 0 +--- !u!114 &4746959147978535488 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 210585996295577721} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &235513122320341711 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1483444589931372990} + - component: {fileID: 1448067562088378152} + - component: {fileID: 3439658608168239967} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1483444589931372990 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 235513122320341711} + 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: 3626888406440555363} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &1448067562088378152 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 235513122320341711} + m_CullTransparentMesh: 0 +--- !u!114 &3439658608168239967 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 235513122320341711} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &246970216348187374 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8356148564785885022} + - component: {fileID: 2749009075916353680} + - component: {fileID: 5002250424606232238} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8356148564785885022 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 246970216348187374} + 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: 1958888752443160004} + m_Father: {fileID: 1670263807047702912} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2749009075916353680 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 246970216348187374} + m_CullTransparentMesh: 0 +--- !u!114 &5002250424606232238 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 246970216348187374} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &273425814977816694 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4976284874825399851} + - component: {fileID: 3545676079014388947} + - component: {fileID: 1546348349704106882} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4976284874825399851 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 273425814977816694} + 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: 1425864700568453755} + m_Father: {fileID: 7432866224741430686} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3545676079014388947 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 273425814977816694} + m_CullTransparentMesh: 0 +--- !u!114 &1546348349704106882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 273425814977816694} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &292985107547532810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1425864700568453755} + - component: {fileID: 8941389240832981586} + - component: {fileID: 4957790091271580714} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1425864700568453755 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 292985107547532810} + 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: 4976284874825399851} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8941389240832981586 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 292985107547532810} + m_CullTransparentMesh: 0 +--- !u!114 &4957790091271580714 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 292985107547532810} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &460735431326532047 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1904428486749382773} + - component: {fileID: 9003751344240168844} + m_Layer: 5 + m_Name: DebugUI Toggle 22 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1904428486749382773 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 460735431326532047} + 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: 3141594381208770657} + - {fileID: 6353858620915095577} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &9003751344240168844 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 460735431326532047} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 2284996109865033884} + valueToggle: {fileID: 3456792024118400511} + checkmarkImage: {fileID: 9060318935775576703} +--- !u!1 &600368409436158652 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8557170861926017448} + - component: {fileID: 930171243308949994} + - component: {fileID: 3955374361418223195} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8557170861926017448 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 600368409436158652} + 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: 5001324386341305675} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &930171243308949994 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 600368409436158652} + m_CullTransparentMesh: 0 +--- !u!114 &3955374361418223195 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 600368409436158652} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &789524568955009124 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4787045164725599468} + - component: {fileID: 5387021893471557754} + - component: {fileID: 8019534688361173590} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4787045164725599468 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 789524568955009124} + 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: 7597631521775465986} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5387021893471557754 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 789524568955009124} + m_CullTransparentMesh: 0 +--- !u!114 &8019534688361173590 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 789524568955009124} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &904359353859202414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3769025729730033565} + - component: {fileID: 8271676633369491976} + - component: {fileID: 7083163093166539205} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3769025729730033565 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 904359353859202414} + 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: 1143708577816669107} + m_Father: {fileID: 7380185792925235767} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8271676633369491976 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 904359353859202414} + m_CullTransparentMesh: 0 +--- !u!114 &7083163093166539205 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 904359353859202414} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &1255721778690630820 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1850453015581534804} + - component: {fileID: 5989295061535193187} + - component: {fileID: 6701717425365996163} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1850453015581534804 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1255721778690630820} + 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: 8643262011863657182} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &5989295061535193187 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1255721778690630820} + m_CullTransparentMesh: 0 +--- !u!114 &6701717425365996163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1255721778690630820} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &1257738450584450071 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2748700044399894202} + - component: {fileID: 4493443016418537037} + - component: {fileID: 3530406180247266972} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2748700044399894202 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1257738450584450071} + 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: 3002137670299042156} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &4493443016418537037 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1257738450584450071} + m_CullTransparentMesh: 0 +--- !u!114 &3530406180247266972 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1257738450584450071} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &1337984993859421813 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3160084798452651386} + - component: {fileID: 485236091688378859} + - component: {fileID: 8209430775002992777} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3160084798452651386 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1337984993859421813} + 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: 428045328721135137} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &485236091688378859 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1337984993859421813} + m_CullTransparentMesh: 0 +--- !u!114 &8209430775002992777 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1337984993859421813} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &1377925216867464122 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2314514058934025060} + - component: {fileID: 9179246579421883796} + - component: {fileID: 1050381230042893636} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2314514058934025060 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1377925216867464122} + 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: 4199920854957040706} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &9179246579421883796 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1377925216867464122} + m_CullTransparentMesh: 0 +--- !u!114 &1050381230042893636 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1377925216867464122} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &1383658768669401416 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2590341387017464519} + - component: {fileID: 7090020572617868160} + m_Layer: 5 + m_Name: DebugUI Toggle 28 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2590341387017464519 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383658768669401416} + 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: 3916575158388844691} + - {fileID: 1698301253758164178} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7090020572617868160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1383658768669401416} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 1736220021016928009} + valueToggle: {fileID: 5352515433852677119} + checkmarkImage: {fileID: 4818644045601654872} +--- !u!1 &1401422664981114516 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1994050603111272669} + - component: {fileID: 7150958925909432444} + - component: {fileID: 1133652755111259454} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1994050603111272669 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401422664981114516} + 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: 8625410696850161855} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &7150958925909432444 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401422664981114516} + m_CullTransparentMesh: 0 +--- !u!114 &1133652755111259454 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1401422664981114516} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &1408560429885557106 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6386133981247227809} + - component: {fileID: 2451434126944430322} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6386133981247227809 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1408560429885557106} + 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: 8351659506645333476} + m_Father: {fileID: 3954105840611946110} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2451434126944430322 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1408560429885557106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4755971768771506769} + toggleTransition: 1 + graphic: {fileID: 8599129644269611419} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &1454308972692154975 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5154472422670747833} + - component: {fileID: 4353645496875133955} + - component: {fileID: 4818644045601654872} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5154472422670747833 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1454308972692154975} + 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: 1185291142442617761} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4353645496875133955 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1454308972692154975} + m_CullTransparentMesh: 0 +--- !u!114 &4818644045601654872 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1454308972692154975} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &1486507231905896618 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 958809557181456115} + - component: {fileID: 5378385216208721069} + - component: {fileID: 5432711013158779192} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &958809557181456115 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486507231905896618} + 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: 3803781275079323733} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &5378385216208721069 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486507231905896618} + m_CullTransparentMesh: 0 +--- !u!114 &5432711013158779192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486507231905896618} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &1512534620145188899 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6667855967321245346} + - component: {fileID: 5904973363994399480} + - component: {fileID: 164768344116107986} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6667855967321245346 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1512534620145188899} + 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: 1071186331609494896} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &5904973363994399480 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1512534620145188899} + m_CullTransparentMesh: 0 +--- !u!114 &164768344116107986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1512534620145188899} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &1519841233505932146 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2075241552360254502} + - component: {fileID: 8562085848866449756} + m_Layer: 5 + m_Name: DebugUI Toggle 17 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2075241552360254502 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1519841233505932146} + 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: 8235471640864529742} + - {fileID: 7432866224741430686} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8562085848866449756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1519841233505932146} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 7954571544824238787} + valueToggle: {fileID: 2405871519029774392} + checkmarkImage: {fileID: 4957790091271580714} +--- !u!1 &1805931634763419227 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8429224242260680381} + - component: {fileID: 3660393548531142813} + - component: {fileID: 5654365300560118476} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8429224242260680381 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1805931634763419227} + 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: 2759500403880505928} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &3660393548531142813 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1805931634763419227} + m_CullTransparentMesh: 0 +--- !u!114 &5654365300560118476 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1805931634763419227} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &1841768535940055272 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1237372008052714286} + - component: {fileID: 8189617005992343066} + - component: {fileID: 4128875111787400469} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1237372008052714286 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1841768535940055272} + 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: 3954105840611946110} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &8189617005992343066 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1841768535940055272} + m_CullTransparentMesh: 0 +--- !u!114 &4128875111787400469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1841768535940055272} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &1892104052310373591 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 800688055469850145} + - component: {fileID: 6391126850643013647} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &800688055469850145 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892104052310373591} + 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: 5283382075449741548} + m_Father: {fileID: 8643262011863657182} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6391126850643013647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892104052310373591} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3792906712613004423} + toggleTransition: 1 + graphic: {fileID: 5356581191142619947} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &1912957997510059643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1914011185745597247} + - component: {fileID: 3243688633497074117} + - component: {fileID: 4324276223801582212} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1914011185745597247 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1912957997510059643} + 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: 4880028377363535173} + m_Father: {fileID: 9157722414083985858} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3243688633497074117 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1912957997510059643} + m_CullTransparentMesh: 0 +--- !u!114 &4324276223801582212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1912957997510059643} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &1938792781808105035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5369190403499271288} + - component: {fileID: 2958440384749385630} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5369190403499271288 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1938792781808105035} + 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: 7956694805050852688} + m_Father: {fileID: 7816446078609134115} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2958440384749385630 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1938792781808105035} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4189231263243852722} + toggleTransition: 1 + graphic: {fileID: 9162012530475593324} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &1971118125168773045 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1698301253758164178} + - component: {fileID: 5352515433852677119} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1698301253758164178 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1971118125168773045} + 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: 1185291142442617761} + m_Father: {fileID: 2590341387017464519} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5352515433852677119 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1971118125168773045} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6797895232316676442} + toggleTransition: 1 + graphic: {fileID: 4818644045601654872} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &2067454400387581445 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3747482945603663964} + - component: {fileID: 6537490383020632609} + m_Layer: 5 + m_Name: DebugUI Toggle 13 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3747482945603663964 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067454400387581445} + 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: 8233626477581283555} + - {fileID: 7290923337117366102} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6537490383020632609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067454400387581445} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 4427599279144680947} + valueToggle: {fileID: 8069964854434385667} + checkmarkImage: {fileID: 5802453145572142467} +--- !u!1 &2067722791479922788 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5647913056700805355} + - component: {fileID: 5078048544661078628} + - component: {fileID: 7875341202550150707} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5647913056700805355 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067722791479922788} + 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: 2652713077043660966} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &5078048544661078628 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067722791479922788} + m_CullTransparentMesh: 0 +--- !u!114 &7875341202550150707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067722791479922788} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &2073291026924378913 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1189216680378437486} + - component: {fileID: 1217054267639125318} + - component: {fileID: 7495417191435204136} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1189216680378437486 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2073291026924378913} + 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: 1544810510454982857} + m_Father: {fileID: 7954316942891746433} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1217054267639125318 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2073291026924378913} + m_CullTransparentMesh: 0 +--- !u!114 &7495417191435204136 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2073291026924378913} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &2086480278583842799 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2451940126815751474} + - component: {fileID: 6087187633097608169} + m_Layer: 5 + m_Name: DebugUI Toggle 24 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2451940126815751474 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086480278583842799} + 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: 6697593953020889603} + - {fileID: 4086772113621016208} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6087187633097608169 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2086480278583842799} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 4846740409493721984} + valueToggle: {fileID: 970757129289726534} + checkmarkImage: {fileID: 6029727342443417148} +--- !u!1 &2110357719490854994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3612299115344139013} + - component: {fileID: 5687218474045752718} + - component: {fileID: 5811605465015081675} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3612299115344139013 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110357719490854994} + 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: 8558628789733519512} + m_Father: {fileID: 8413373871896021635} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5687218474045752718 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110357719490854994} + m_CullTransparentMesh: 0 +--- !u!114 &5811605465015081675 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110357719490854994} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &2129180063755082928 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3803781275079323733} + - component: {fileID: 7493564373867626443} + m_Layer: 5 + m_Name: DebugUI Toggle 6 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3803781275079323733 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129180063755082928} + 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: 958809557181456115} + - {fileID: 6644699419958076397} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7493564373867626443 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129180063755082928} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 5432711013158779192} + valueToggle: {fileID: 147858285169255864} + checkmarkImage: {fileID: 4127528762848208377} +--- !u!1 &2207389410027094222 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3737111891372312802} + - component: {fileID: 2037913533698422136} + - component: {fileID: 1701711077839953596} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3737111891372312802 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2207389410027094222} + 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: 319426443455914023} + m_Father: {fileID: 906931124344334618} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2037913533698422136 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2207389410027094222} + m_CullTransparentMesh: 0 +--- !u!114 &1701711077839953596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2207389410027094222} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &2210364538776165098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5076517029326469307} + - component: {fileID: 953415876542653751} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5076517029326469307 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2210364538776165098} + 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: 428045328721135137} + m_Father: {fileID: 5081734458789119777} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &953415876542653751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2210364538776165098} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8813570217460717391} + toggleTransition: 1 + graphic: {fileID: 8209430775002992777} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &2260129634959441134 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 791520587265625091} + - component: {fileID: 4607543735610172353} + - component: {fileID: 5356581191142619947} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &791520587265625091 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2260129634959441134} + 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: 5283382075449741548} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4607543735610172353 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2260129634959441134} + m_CullTransparentMesh: 0 +--- !u!114 &5356581191142619947 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2260129634959441134} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &2312190080207680053 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5283382075449741548} + - component: {fileID: 6899205371889111843} + - component: {fileID: 3792906712613004423} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5283382075449741548 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2312190080207680053} + 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: 791520587265625091} + m_Father: {fileID: 800688055469850145} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6899205371889111843 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2312190080207680053} + m_CullTransparentMesh: 0 +--- !u!114 &3792906712613004423 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2312190080207680053} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &2320641401228566767 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7388519436634992578} + - component: {fileID: 1196526696592632852} + - component: {fileID: 5067439095481778869} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7388519436634992578 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2320641401228566767} + 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: 2069466459521621409} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1196526696592632852 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2320641401228566767} + m_CullTransparentMesh: 0 +--- !u!114 &5067439095481778869 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2320641401228566767} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &2405211379384313265 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7361462984932131187} + - component: {fileID: 3269991560789098383} + - component: {fileID: 8683242940989415304} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7361462984932131187 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2405211379384313265} + 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: 3110659917968075140} + m_Father: {fileID: 1763134690699169346} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3269991560789098383 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2405211379384313265} + m_CullTransparentMesh: 0 +--- !u!114 &8683242940989415304 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2405211379384313265} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &2472766322376748401 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6546067790357044605} + - component: {fileID: 3251042231684009560} + - component: {fileID: 4755439529892379193} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6546067790357044605 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2472766322376748401} + 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: 4894700207822734448} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3251042231684009560 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2472766322376748401} + m_CullTransparentMesh: 0 +--- !u!114 &4755439529892379193 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2472766322376748401} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &2528115446453954515 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7508261725234730334} + - component: {fileID: 4251434431392806875} + - component: {fileID: 6982057837895959611} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7508261725234730334 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2528115446453954515} + 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: 8995314096000718896} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4251434431392806875 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2528115446453954515} + m_CullTransparentMesh: 0 +--- !u!114 &6982057837895959611 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2528115446453954515} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &2656729411710343347 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1670263807047702912} + - component: {fileID: 1441446908436994080} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1670263807047702912 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2656729411710343347} + 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: 8356148564785885022} + m_Father: {fileID: 4761151331139786934} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1441446908436994080 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2656729411710343347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5002250424606232238} + toggleTransition: 1 + graphic: {fileID: 5050348896946348867} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &2735537141019569035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1064151588746797128} + - component: {fileID: 5415619581143717901} + - component: {fileID: 8599129644269611419} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1064151588746797128 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2735537141019569035} + 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: 8351659506645333476} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5415619581143717901 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2735537141019569035} + m_CullTransparentMesh: 0 +--- !u!114 &8599129644269611419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2735537141019569035} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &2756405507098548097 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4086772113621016208} + - component: {fileID: 970757129289726534} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4086772113621016208 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2756405507098548097} + 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: 591433198773945814} + m_Father: {fileID: 2451940126815751474} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &970757129289726534 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2756405507098548097} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1681414707425253133} + toggleTransition: 1 + graphic: {fileID: 6029727342443417148} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &2797151631749506656 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5124529111177426770} + - component: {fileID: 5568758194233421245} + - component: {fileID: 2270273949667200229} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5124529111177426770 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2797151631749506656} + 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: 3680364213637305159} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &5568758194233421245 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2797151631749506656} + m_CullTransparentMesh: 0 +--- !u!114 &2270273949667200229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2797151631749506656} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &2985614219956721450 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6551000627649811944} + - component: {fileID: 7462788929612166242} + - component: {fileID: 8907934119334727340} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6551000627649811944 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2985614219956721450} + 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: 2336108770712772099} + m_Father: {fileID: 1869528527587065075} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7462788929612166242 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2985614219956721450} + m_CullTransparentMesh: 0 +--- !u!114 &8907934119334727340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2985614219956721450} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &3171115851903540441 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7954316942891746433} + - component: {fileID: 2258849323521112219} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7954316942891746433 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3171115851903540441} + 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: 1189216680378437486} + m_Father: {fileID: 8818044284439774689} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2258849323521112219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3171115851903540441} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7495417191435204136} + toggleTransition: 1 + graphic: {fileID: 888460402368909444} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &3204111589982867630 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1544810510454982857} + - component: {fileID: 7980649047932582416} + - component: {fileID: 888460402368909444} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1544810510454982857 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3204111589982867630} + 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: 1189216680378437486} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7980649047932582416 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3204111589982867630} + m_CullTransparentMesh: 0 +--- !u!114 &888460402368909444 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3204111589982867630} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &3239541957581880198 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1568876051421469522} + - component: {fileID: 6393270941446573718} + - component: {fileID: 7069956242290131492} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1568876051421469522 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3239541957581880198} + 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: 4295031112077750847} + m_Father: {fileID: 5941713586452052334} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6393270941446573718 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3239541957581880198} + m_CullTransparentMesh: 0 +--- !u!114 &7069956242290131492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3239541957581880198} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &3308387163373142073 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7956694805050852688} + - component: {fileID: 3660989855823199432} + - component: {fileID: 4189231263243852722} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7956694805050852688 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3308387163373142073} + 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: 3774037929180827509} + m_Father: {fileID: 5369190403499271288} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3660989855823199432 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3308387163373142073} + m_CullTransparentMesh: 0 +--- !u!114 &4189231263243852722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3308387163373142073} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &3315913571245561063 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3774037929180827509} + - component: {fileID: 3804283252385965860} + - component: {fileID: 9162012530475593324} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3774037929180827509 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3315913571245561063} + 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: 7956694805050852688} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3804283252385965860 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3315913571245561063} + m_CullTransparentMesh: 0 +--- !u!114 &9162012530475593324 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3315913571245561063} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &3368454694728957684 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6644699419958076397} + - component: {fileID: 147858285169255864} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6644699419958076397 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3368454694728957684} + 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: 2567792433006010677} + m_Father: {fileID: 3803781275079323733} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &147858285169255864 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3368454694728957684} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6640962838804556285} + toggleTransition: 1 + graphic: {fileID: 4127528762848208377} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &3369459815916386821 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7464475961458692551} + - component: {fileID: 2163830951127551774} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7464475961458692551 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3369459815916386821} + 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: 5001324386341305675} + m_Father: {fileID: 8625410696850161855} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2163830951127551774 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3369459815916386821} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6925205396671069} + toggleTransition: 1 + graphic: {fileID: 3955374361418223195} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &3374982763725671149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 699944379274011391} + - component: {fileID: 4982503990233528976} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &699944379274011391 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3374982763725671149} + 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: 4894700207822734448} + m_Father: {fileID: 2652713077043660966} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &4982503990233528976 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3374982763725671149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5624070143109776842} + toggleTransition: 1 + graphic: {fileID: 4755439529892379193} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &3384862175355358611 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3954105840611946110} + - component: {fileID: 1510212987001653101} + m_Layer: 5 + m_Name: DebugUI Toggle 4 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3954105840611946110 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3384862175355358611} + 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: 1237372008052714286} + - {fileID: 6386133981247227809} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1510212987001653101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3384862175355358611} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 4128875111787400469} + valueToggle: {fileID: 2451434126944430322} + checkmarkImage: {fileID: 8599129644269611419} +--- !u!1 &3428755322359797045 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7380185792925235767} + - component: {fileID: 8590323334709990305} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7380185792925235767 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3428755322359797045} + 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: 3769025729730033565} + m_Father: {fileID: 3002137670299042156} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8590323334709990305 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3428755322359797045} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7083163093166539205} + toggleTransition: 1 + graphic: {fileID: 7629182826719062560} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &3516696314699177012 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8654207302046996467} + - component: {fileID: 3282158458090981443} + m_Layer: 5 + m_Name: DebugUI Toggle 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8654207302046996467 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3516696314699177012} + 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: 49982278915739227} + - {fileID: 4397487224462890380} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3282158458090981443 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3516696314699177012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 2720401729764849792} + valueToggle: {fileID: 7118092976832869884} + checkmarkImage: {fileID: 4899798569211387073} +--- !u!1 &3569379677769956627 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7816446078609134115} + - component: {fileID: 7448835212396526773} + m_Layer: 5 + m_Name: DebugUI Toggle 9 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7816446078609134115 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3569379677769956627} + 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: 2531124078508228213} + - {fileID: 5369190403499271288} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7448835212396526773 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3569379677769956627} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 7700455392299810905} + valueToggle: {fileID: 2958440384749385630} + checkmarkImage: {fileID: 9162012530475593324} +--- !u!1 &3571443757009416159 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3642279660512588141} + - component: {fileID: 3639759082769292463} + - component: {fileID: 3459723882786048853} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3642279660512588141 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3571443757009416159} + 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: 3641684792875398575} + m_Father: {fileID: 3641221951591520489} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3639759082769292463 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3571443757009416159} + m_CullTransparentMesh: 0 +--- !u!114 &3459723882786048853 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3571443757009416159} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &3571527177030264211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3641221951591520489} + - component: {fileID: 3462889519718661877} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3641221951591520489 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3571527177030264211} + 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: 3642279660512588141} + m_Father: {fileID: 3641905530822378611} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3462889519718661877 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3571527177030264211} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3459723882786048853} + toggleTransition: 1 + graphic: {fileID: 3459027866663724429} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &3572023702122751751 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3641174431038411831} + - component: {fileID: 3639509330965081415} + - component: {fileID: 3459080543867973199} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3641174431038411831 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3572023702122751751} + 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: 3641905530822378611} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &3639509330965081415 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3572023702122751751} + m_CullTransparentMesh: 0 +--- !u!114 &3459080543867973199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3572023702122751751} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &3572471841810415943 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3641905530822378611} + - component: {fileID: 3572471841810415940} + m_Layer: 5 + m_Name: DebugUI Toggle 0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3641905530822378611 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3572471841810415943} + 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: 3641174431038411831} + - {fileID: 3641221951591520489} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -13} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3572471841810415940 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3572471841810415943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 3459080543867973199} + valueToggle: {fileID: 3462889519718661877} + checkmarkImage: {fileID: 3459027866663724429} +--- !u!1 &3572808593452157577 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3641684792875398575} + - component: {fileID: 3639164083858556819} + - component: {fileID: 3459027866663724429} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3641684792875398575 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3572808593452157577} + 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: 3642279660512588141} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3639164083858556819 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3572808593452157577} + m_CullTransparentMesh: 0 +--- !u!114 &3459027866663724429 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3572808593452157577} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &3585643264467902480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4894700207822734448} + - component: {fileID: 5095661899487818905} + - component: {fileID: 5624070143109776842} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4894700207822734448 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3585643264467902480} + 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: 6546067790357044605} + m_Father: {fileID: 699944379274011391} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5095661899487818905 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3585643264467902480} + m_CullTransparentMesh: 0 +--- !u!114 &5624070143109776842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3585643264467902480} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &3631579074025567380 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3141594381208770657} + - component: {fileID: 9014116387579602363} + - component: {fileID: 2284996109865033884} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3141594381208770657 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3631579074025567380} + 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: 1904428486749382773} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &9014116387579602363 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3631579074025567380} + m_CullTransparentMesh: 0 +--- !u!114 &2284996109865033884 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3631579074025567380} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &3645164844498060459 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8413373871896021635} + - component: {fileID: 7471413337957999450} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8413373871896021635 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3645164844498060459} + 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: 3612299115344139013} + m_Father: {fileID: 2759500403880505928} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7471413337957999450 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3645164844498060459} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5811605465015081675} + toggleTransition: 1 + graphic: {fileID: 4289623129001525722} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &3657568049055452192 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8558628789733519512} + - component: {fileID: 5209445438387244003} + - component: {fileID: 4289623129001525722} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8558628789733519512 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3657568049055452192} + 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: 3612299115344139013} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5209445438387244003 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3657568049055452192} + m_CullTransparentMesh: 0 +--- !u!114 &4289623129001525722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3657568049055452192} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &3712882999369957480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1143708577816669107} + - component: {fileID: 6245370273393918545} + - component: {fileID: 7629182826719062560} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1143708577816669107 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3712882999369957480} + 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: 3769025729730033565} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6245370273393918545 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3712882999369957480} + m_CullTransparentMesh: 0 +--- !u!114 &7629182826719062560 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3712882999369957480} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &3765212742840115414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4880028377363535173} + - component: {fileID: 1706073112578242183} + - component: {fileID: 7322248292256421261} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4880028377363535173 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3765212742840115414} + 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: 1914011185745597247} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1706073112578242183 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3765212742840115414} + m_CullTransparentMesh: 0 +--- !u!114 &7322248292256421261 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3765212742840115414} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &3880431613689876023 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7399658697125515523} + - component: {fileID: 2309084006960021099} + m_Layer: 5 + m_Name: DebugUI Toggle 25 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7399658697125515523 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3880431613689876023} + 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: 1221176923530238434} + - {fileID: 1869528527587065075} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2309084006960021099 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3880431613689876023} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 5102590157774239751} + valueToggle: {fileID: 8562629198898424411} + checkmarkImage: {fileID: 5177354320781382892} +--- !u!1 &3884623341178589105 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4263894447749242993} + - component: {fileID: 5756384988777549420} + - component: {fileID: 6243446961833559651} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4263894447749242993 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3884623341178589105} + 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: 4157811473205521841} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &5756384988777549420 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3884623341178589105} + m_CullTransparentMesh: 0 +--- !u!114 &6243446961833559651 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3884623341178589105} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &3941629718707521949 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6667778054025323136} + - component: {fileID: 2456697693204756471} + - component: {fileID: 3659922831755168663} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6667778054025323136 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3941629718707521949} + 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: 1133780997644914158} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &2456697693204756471 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3941629718707521949} + m_CullTransparentMesh: 0 +--- !u!114 &3659922831755168663 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3941629718707521949} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &4027286663159150654 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6445334109479971278} + - component: {fileID: 8058732095134162664} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6445334109479971278 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4027286663159150654} + 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: 8573571124664108074} + m_Father: {fileID: 9173084524125034988} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8058732095134162664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4027286663159150654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4482108447807922650} + toggleTransition: 1 + graphic: {fileID: 962910717536914882} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &4037875838780246769 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8818044284439774689} + - component: {fileID: 8114663146547476803} + m_Layer: 5 + m_Name: DebugUI Toggle 11 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8818044284439774689 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4037875838780246769} + 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: 9026513043517260611} + - {fileID: 7954316942891746433} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8114663146547476803 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4037875838780246769} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 8196305987243256177} + valueToggle: {fileID: 2258849323521112219} + checkmarkImage: {fileID: 888460402368909444} +--- !u!1 &4079825732997906742 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6353858620915095577} + - component: {fileID: 3456792024118400511} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6353858620915095577 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4079825732997906742} + 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: 6341387859349373114} + m_Father: {fileID: 1904428486749382773} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3456792024118400511 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4079825732997906742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4830864563684941362} + toggleTransition: 1 + graphic: {fileID: 9060318935775576703} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &4113300208803229572 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4278529981198013852} + - component: {fileID: 8694217767465827808} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4278529981198013852 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4113300208803229572} + 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: 7198286586904223138} + m_Father: {fileID: 4199920854957040706} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8694217767465827808 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4113300208803229572} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 785927379557597115} + toggleTransition: 1 + graphic: {fileID: 8002195202206546742} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &4115723969835415551 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1763134690699169346} + - component: {fileID: 3776545304459646159} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1763134690699169346 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4115723969835415551} + 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: 7361462984932131187} + m_Father: {fileID: 1133780997644914158} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3776545304459646159 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4115723969835415551} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8683242940989415304} + toggleTransition: 1 + graphic: {fileID: 7141046430449178186} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &4136008973788615843 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6520704134104925015} + - component: {fileID: 1702414852724651410} + m_Layer: 5 + m_Name: DebugUI Toggle 26 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6520704134104925015 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4136008973788615843} + 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: 4047548843005941320} + - {fileID: 5941713586452052334} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1702414852724651410 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4136008973788615843} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 4510461617772264124} + valueToggle: {fileID: 4787017756125165782} + checkmarkImage: {fileID: 332153022343275791} +--- !u!1 &4179571699095856206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1185291142442617761} + - component: {fileID: 2313539819687221356} + - component: {fileID: 6797895232316676442} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1185291142442617761 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4179571699095856206} + 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: 5154472422670747833} + m_Father: {fileID: 1698301253758164178} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2313539819687221356 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4179571699095856206} + m_CullTransparentMesh: 0 +--- !u!114 &6797895232316676442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4179571699095856206} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &4254056818223299175 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3002137670299042156} + - component: {fileID: 7788606920463215453} + m_Layer: 5 + m_Name: DebugUI Toggle 18 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3002137670299042156 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4254056818223299175} + 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: 2748700044399894202} + - {fileID: 7380185792925235767} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7788606920463215453 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4254056818223299175} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 3530406180247266972} + valueToggle: {fileID: 8590323334709990305} + checkmarkImage: {fileID: 7629182826719062560} +--- !u!1 &4329563734337181686 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1413563205384497702} + - component: {fileID: 7286666392514011208} + - component: {fileID: 4509044584000312710} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1413563205384497702 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4329563734337181686} + 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: 6872577016307684039} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7286666392514011208 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4329563734337181686} + m_CullTransparentMesh: 0 +--- !u!114 &4509044584000312710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4329563734337181686} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &4442289739500596448 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6697593953020889603} + - component: {fileID: 1135027492066294985} + - component: {fileID: 4846740409493721984} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6697593953020889603 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4442289739500596448} + 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: 2451940126815751474} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &1135027492066294985 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4442289739500596448} + m_CullTransparentMesh: 0 +--- !u!114 &4846740409493721984 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4442289739500596448} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &4595870184737454115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 591433198773945814} + - component: {fileID: 6409064332323974544} + - component: {fileID: 1681414707425253133} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &591433198773945814 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4595870184737454115} + 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: 1299297123745915370} + m_Father: {fileID: 4086772113621016208} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6409064332323974544 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4595870184737454115} + m_CullTransparentMesh: 0 +--- !u!114 &1681414707425253133 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4595870184737454115} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &4612880306164105923 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7413620405051575626} + - component: {fileID: 6285758457108715709} + - component: {fileID: 2165066025782384386} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7413620405051575626 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4612880306164105923} + 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: 3434169616513257095} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &6285758457108715709 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4612880306164105923} + m_CullTransparentMesh: 0 +--- !u!114 &2165066025782384386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4612880306164105923} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &4639780946518862453 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6341387859349373114} + - component: {fileID: 3261218236385974570} + - component: {fileID: 4830864563684941362} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6341387859349373114 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4639780946518862453} + 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: 213539999138786333} + m_Father: {fileID: 6353858620915095577} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3261218236385974570 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4639780946518862453} + m_CullTransparentMesh: 0 +--- !u!114 &4830864563684941362 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4639780946518862453} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &4649577923568229521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1299297123745915370} + - component: {fileID: 7678348437943295021} + - component: {fileID: 6029727342443417148} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1299297123745915370 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4649577923568229521} + 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: 591433198773945814} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7678348437943295021 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4649577923568229521} + m_CullTransparentMesh: 0 +--- !u!114 &6029727342443417148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4649577923568229521} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &4849482690791000872 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6075760728334120815} + - component: {fileID: 3882171044134844897} + - component: {fileID: 2700416459006292345} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6075760728334120815 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4849482690791000872} + 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: 6493715579490047529} + m_Father: {fileID: 7290923337117366102} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3882171044134844897 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4849482690791000872} + m_CullTransparentMesh: 0 +--- !u!114 &2700416459006292345 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4849482690791000872} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &5014516996357532671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5001324386341305675} + - component: {fileID: 185118308965006561} + - component: {fileID: 6925205396671069} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5001324386341305675 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5014516996357532671} + 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: 8557170861926017448} + m_Father: {fileID: 7464475961458692551} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &185118308965006561 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5014516996357532671} + m_CullTransparentMesh: 0 +--- !u!114 &6925205396671069 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5014516996357532671} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &5041280086884305940 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8927555893094689660} + - component: {fileID: 3176317505229877131} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8927555893094689660 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5041280086884305940} + 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: 7461098207183238788} + m_Father: {fileID: 4817301142119688916} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3176317505229877131 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5041280086884305940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2358232831280620294} + toggleTransition: 1 + graphic: {fileID: 2981323361707958040} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &5069726341249081048 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4047548843005941320} + - component: {fileID: 5397351996381731281} + - component: {fileID: 4510461617772264124} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4047548843005941320 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5069726341249081048} + 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: 6520704134104925015} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &5397351996381731281 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5069726341249081048} + m_CullTransparentMesh: 0 +--- !u!114 &4510461617772264124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5069726341249081048} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &5130458670307175369 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3916575158388844691} + - component: {fileID: 6082500289769078190} + - component: {fileID: 1736220021016928009} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3916575158388844691 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5130458670307175369} + 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: 2590341387017464519} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &6082500289769078190 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5130458670307175369} + m_CullTransparentMesh: 0 +--- !u!114 &1736220021016928009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5130458670307175369} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &5202510230799889004 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3626888406440555363} + - component: {fileID: 8180736816758371908} + m_Layer: 5 + m_Name: DebugUI Toggle 8 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3626888406440555363 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5202510230799889004} + 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: 1483444589931372990} + - {fileID: 9157722414083985858} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8180736816758371908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5202510230799889004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 3439658608168239967} + valueToggle: {fileID: 2214193822323440039} + checkmarkImage: {fileID: 7322248292256421261} +--- !u!1 &5216377504156040801 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5927895885435220356} + - component: {fileID: 7966387800811379961} + - component: {fileID: 3496924685570888828} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5927895885435220356 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5216377504156040801} + 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: 4817301142119688916} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &7966387800811379961 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5216377504156040801} + m_CullTransparentMesh: 0 +--- !u!114 &3496924685570888828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5216377504156040801} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &5267050426723971953 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5267050426723971950} + - component: {fileID: 5267050426723971948} + - component: {fileID: 5267050426723971951} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5267050426723971950 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050426723971953} + 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: 5267050428775862375} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5267050426723971948 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050426723971953} + m_CullTransparentMesh: 0 +--- !u!114 &5267050426723971951 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050426723971953} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &5267050426938384531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5267050426938384528} + - component: {fileID: 5267050426938384529} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5267050426938384528 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050426938384531} + 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: 5267050428775862375} + m_Father: {fileID: 5267050427034451046} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5267050426938384529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050426938384531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5267050428775862372} + toggleTransition: 1 + graphic: {fileID: 5267050426723971951} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &5267050427034451049 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5267050427034451046} + - component: {fileID: 5267050427034451047} + m_Layer: 5 + m_Name: DebugUI Toggle 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5267050427034451046 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050427034451049} + 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: 5267050427060996203} + - {fileID: 5267050426938384528} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5267050427034451047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050427034451049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 5267050427060996200} + valueToggle: {fileID: 5267050426938384529} + checkmarkImage: {fileID: 5267050426723971951} +--- !u!1 &5267050427060996202 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5267050427060996203} + - component: {fileID: 5267050427060996201} + - component: {fileID: 5267050427060996200} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5267050427060996203 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050427060996202} + 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: 5267050427034451046} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &5267050427060996201 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050427060996202} + m_CullTransparentMesh: 0 +--- !u!114 &5267050427060996200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050427060996202} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &5267050428775862374 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5267050428775862375} + - component: {fileID: 5267050428775862373} + - component: {fileID: 5267050428775862372} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5267050428775862375 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050428775862374} + 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: 5267050426723971950} + m_Father: {fileID: 5267050426938384528} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5267050428775862373 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050428775862374} + m_CullTransparentMesh: 0 +--- !u!114 &5267050428775862372 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5267050428775862374} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &5462907878922134795 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2759500403880505928} + - component: {fileID: 8677530327100967840} + m_Layer: 5 + m_Name: DebugUI Toggle 27 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2759500403880505928 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5462907878922134795} + 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: 8429224242260680381} + - {fileID: 8413373871896021635} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8677530327100967840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5462907878922134795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 5654365300560118476} + valueToggle: {fileID: 7471413337957999450} + checkmarkImage: {fileID: 4289623129001525722} +--- !u!1 &5483026217932215876 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 319426443455914023} + - component: {fileID: 2203183165023518730} + - component: {fileID: 1504294621800433182} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &319426443455914023 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5483026217932215876} + 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: 3737111891372312802} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2203183165023518730 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5483026217932215876} + m_CullTransparentMesh: 0 +--- !u!114 &1504294621800433182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5483026217932215876} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &5576049767558804990 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7792108644153214049} + - component: {fileID: 6296772535290834005} + - component: {fileID: 2353148834173414365} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7792108644153214049 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5576049767558804990} + 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: 7977966139789023458} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &6296772535290834005 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5576049767558804990} + m_CullTransparentMesh: 0 +--- !u!114 &2353148834173414365 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5576049767558804990} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &5661721680391056024 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2069466459521621409} + - component: {fileID: 1684022678578897709} + - component: {fileID: 8306564221555339770} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2069466459521621409 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5661721680391056024} + 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: 7388519436634992578} + m_Father: {fileID: 1471453698717655133} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1684022678578897709 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5661721680391056024} + m_CullTransparentMesh: 0 +--- !u!114 &8306564221555339770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5661721680391056024} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &5713211408484041554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8235471640864529742} + - component: {fileID: 7780419505253050479} + - component: {fileID: 7954571544824238787} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8235471640864529742 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5713211408484041554} + 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: 2075241552360254502} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &7780419505253050479 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5713211408484041554} + m_CullTransparentMesh: 0 +--- !u!114 &7954571544824238787 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5713211408484041554} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &5750870979089988624 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2336108770712772099} + - component: {fileID: 967809402997970503} + - component: {fileID: 5177354320781382892} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2336108770712772099 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5750870979089988624} + 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: 6551000627649811944} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &967809402997970503 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5750870979089988624} + m_CullTransparentMesh: 0 +--- !u!114 &5177354320781382892 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5750870979089988624} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &5801129305911044462 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4199920854957040706} + - component: {fileID: 3036984858544632144} + m_Layer: 5 + m_Name: DebugUI Toggle 15 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4199920854957040706 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5801129305911044462} + 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: 2314514058934025060} + - {fileID: 4278529981198013852} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3036984858544632144 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5801129305911044462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 1050381230042893636} + valueToggle: {fileID: 8694217767465827808} + checkmarkImage: {fileID: 8002195202206546742} +--- !u!1 &5923712961749352638 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2542400616675058289} + - component: {fileID: 8748157484271708675} + - component: {fileID: 4127528762848208377} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2542400616675058289 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5923712961749352638} + 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: 2567792433006010677} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8748157484271708675 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5923712961749352638} + m_CullTransparentMesh: 0 +--- !u!114 &4127528762848208377 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5923712961749352638} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &6047295618778324901 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5833403709247139747} + - component: {fileID: 5836198589662574527} + - component: {fileID: 5943836262754876151} + m_Layer: 5 + m_Name: Arrow Closed + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5833403709247139747 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047295618778324901} + 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: 5834238147341516467} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &5836198589662574527 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047295618778324901} + m_CullTransparentMesh: 0 +--- !u!114 &5943836262754876151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047295618778324901} + 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: 1} + 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: 21300000, guid: 7a0568d5e3330b84687e307992be3030, type: 3} + m_Type: 0 + 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 &6047428593800107549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5833894441773011497} + - component: {fileID: 5836132423617176489} + - component: {fileID: 5944573348398787477} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5833894441773011497 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047428593800107549} + 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: 5834238147341516467} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5836132423617176489 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047428593800107549} + m_CullTransparentMesh: 0 +--- !u!114 &5944573348398787477 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047428593800107549} + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: 'BitField + +' +--- !u!1 &6047464508828073067 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5833912162122428113} + - component: {fileID: 5836418015764029031} + - component: {fileID: 5944727394572058481} + m_Layer: 5 + m_Name: Arrow Opened + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5833912162122428113 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047464508828073067} + 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: 5834238147341516467} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &5836418015764029031 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047464508828073067} + m_CullTransparentMesh: 0 +--- !u!114 &5944727394572058481 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047464508828073067} + 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: 1} + 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: 21300000, guid: a674720496c1ed248a5b7ea3e22a11fd, type: 3} + m_Type: 0 + 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 &6047609828951176373 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5834238147341516467} + - component: {fileID: 5943742358506384225} + m_Layer: 5 + m_Name: Header + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5834238147341516467 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047609828951176373} + 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: 5833912162122428113} + - {fileID: 5833403709247139747} + - {fileID: 5833894441773011497} + m_Father: {fileID: 5833802642077810669} + 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: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5943742358506384225 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6047609828951176373} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e4786b5477cac0a42855b21fdaa2242f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 0} + toggleTransition: 0 + graphic: {fileID: 0} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 0 + content: {fileID: 6048264713057143749} + arrowOpened: {fileID: 6047464508828073067} + arrowClosed: {fileID: 6047295618778324901} +--- !u!1 &6048035622621399599 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3110659917968075140} + - component: {fileID: 5134166864003699706} + - component: {fileID: 7141046430449178186} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3110659917968075140 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048035622621399599} + 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: 7361462984932131187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5134166864003699706 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048035622621399599} + m_CullTransparentMesh: 0 +--- !u!114 &7141046430449178186 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048035622621399599} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &6048135192916836887 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5833802642077810669} + - component: {fileID: 5943726395919352301} + - component: {fileID: 5940633483949707567} + - component: {fileID: 5944332278156944397} + - component: {fileID: 4742033028387346344} + m_Layer: 0 + m_Name: DebugUIHandlerRenderingLayerField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5833802642077810669 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048135192916836887} + 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: 5834238147341516467} + - {fileID: 5832985335166806795} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 293.5, y: 0} + m_SizeDelta: {x: 577, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5943726395919352301 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048135192916836887} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &5940633483949707567 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048135192916836887} + 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 &5944332278156944397 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048135192916836887} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2bd470ffc0c0fe54faddbf8d466bf519, type: 3} + m_Name: + m_EditorClassIdentifier: + contentHolder: {fileID: 5832985335166806795} +--- !u!114 &4742033028387346344 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048135192916836887} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea44ef5968bb44a48b7855c36dae02c4, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Core.Runtime::UnityEngine.Rendering.UI.DebugUIHandlerRenderingLayerField + 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: 5944573348398787477} + valueToggle: {fileID: 5943742358506384225} + toggles: + - {fileID: 3572471841810415940} + - {fileID: 5267050427034451047} + - {fileID: 8451891156616883890} + - {fileID: 3282158458090981443} + - {fileID: 1510212987001653101} + - {fileID: 6392172160440368498} + - {fileID: 7493564373867626443} + - {fileID: 4371419930628413674} + - {fileID: 8180736816758371908} + - {fileID: 7448835212396526773} + - {fileID: 3618360561353404684} + - {fileID: 8114663146547476803} + - {fileID: 1735825134769845716} + - {fileID: 6537490383020632609} + - {fileID: 2462861946137041447} + - {fileID: 3036984858544632144} + - {fileID: 3757811077270860227} + - {fileID: 8562085848866449756} + - {fileID: 7788606920463215453} + - {fileID: 6603789859038349866} + - {fileID: 9022096370556916318} + - {fileID: 5317882346756600920} + - {fileID: 9003751344240168844} + - {fileID: 8192731229695085962} + - {fileID: 6087187633097608169} + - {fileID: 2309084006960021099} + - {fileID: 1702414852724651410} + - {fileID: 8677530327100967840} + - {fileID: 7090020572617868160} + - {fileID: 6749636456503821663} + - {fileID: 1654229716869570161} + - {fileID: 4713833427757240811} +--- !u!1 &6048264713057143749 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5832985335166806795} + - component: {fileID: 5944589737316668415} + - component: {fileID: 5943701092258004071} + - component: {fileID: 5836253473327886437} + - component: {fileID: 5940597155278695931} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5832985335166806795 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048264713057143749} + 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: 3641905530822378611} + - {fileID: 5267050427034451046} + - {fileID: 5081734458789119777} + - {fileID: 8654207302046996467} + - {fileID: 3954105840611946110} + - {fileID: 1071186331609494896} + - {fileID: 3803781275079323733} + - {fileID: 8930712156476357657} + - {fileID: 3626888406440555363} + - {fileID: 7816446078609134115} + - {fileID: 8625410696850161855} + - {fileID: 8818044284439774689} + - {fileID: 1133780997644914158} + - {fileID: 3747482945603663964} + - {fileID: 4761151331139786934} + - {fileID: 4199920854957040706} + - {fileID: 4817301142119688916} + - {fileID: 2075241552360254502} + - {fileID: 3002137670299042156} + - {fileID: 9173084524125034988} + - {fileID: 4157811473205521841} + - {fileID: 3434169616513257095} + - {fileID: 1904428486749382773} + - {fileID: 8643262011863657182} + - {fileID: 2451940126815751474} + - {fileID: 7399658697125515523} + - {fileID: 6520704134104925015} + - {fileID: 2759500403880505928} + - {fileID: 2590341387017464519} + - {fileID: 7977966139789023458} + - {fileID: 2652713077043660966} + - {fileID: 3680364213637305159} + m_Father: {fileID: 5833802642077810669} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 288.5, y: -52.5} + m_SizeDelta: {x: 577, y: 53} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5944589737316668415 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048264713057143749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 25 + m_Right: 0 + m_Top: 0 + m_Bottom: 4 + m_ChildAlignment: 0 + m_Spacing: 1 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &5943701092258004071 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048264713057143749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 1 +--- !u!222 &5836253473327886437 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048264713057143749} + m_CullTransparentMesh: 0 +--- !u!114 &5940597155278695931 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6048264713057143749} + 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: 0, g: 0, b: 0, a: 0.2509804} + 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: 21300000, guid: 127279d577f25ac4ea17dae3782e5074, type: 3} + m_Type: 0 + 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 &6054211915192511925 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3434169616513257095} + - component: {fileID: 5317882346756600920} + m_Layer: 5 + m_Name: DebugUI Toggle 21 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3434169616513257095 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6054211915192511925} + 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: 7413620405051575626} + - {fileID: 906931124344334618} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5317882346756600920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6054211915192511925} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 2165066025782384386} + valueToggle: {fileID: 171724460343184333} + checkmarkImage: {fileID: 1504294621800433182} +--- !u!1 &6255634095443365774 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1617024272870076377} + - component: {fileID: 1463420292870698296} + - component: {fileID: 2981323361707958040} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1617024272870076377 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6255634095443365774} + 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: 7461098207183238788} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1463420292870698296 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6255634095443365774} + m_CullTransparentMesh: 0 +--- !u!114 &2981323361707958040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6255634095443365774} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &6319982235128125421 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5941713586452052334} + - component: {fileID: 4787017756125165782} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5941713586452052334 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6319982235128125421} + 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: 1568876051421469522} + m_Father: {fileID: 6520704134104925015} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &4787017756125165782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6319982235128125421} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7069956242290131492} + toggleTransition: 1 + graphic: {fileID: 332153022343275791} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &6393401694846712333 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5784938561067271187} + - component: {fileID: 4365777817241233862} + - component: {fileID: 3314591442341821866} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5784938561067271187 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6393401694846712333} + 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: 8930712156476357657} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &4365777817241233862 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6393401694846712333} + m_CullTransparentMesh: 0 +--- !u!114 &3314591442341821866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6393401694846712333} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &6398709037057264613 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2652713077043660966} + - component: {fileID: 1654229716869570161} + m_Layer: 5 + m_Name: DebugUI Toggle 30 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2652713077043660966 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6398709037057264613} + 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: 5647913056700805355} + - {fileID: 699944379274011391} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1654229716869570161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6398709037057264613} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 7875341202550150707} + valueToggle: {fileID: 4982503990233528976} + checkmarkImage: {fileID: 4755439529892379193} +--- !u!1 &6434403705248118292 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2531124078508228213} + - component: {fileID: 6369504825566277162} + - component: {fileID: 7700455392299810905} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2531124078508228213 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6434403705248118292} + 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: 7816446078609134115} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &6369504825566277162 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6434403705248118292} + m_CullTransparentMesh: 0 +--- !u!114 &7700455392299810905 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6434403705248118292} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &6435836762835265831 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3912983369996595199} + - component: {fileID: 8673800743758914287} + - component: {fileID: 4899798569211387073} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3912983369996595199 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6435836762835265831} + 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: 4700199911600101284} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8673800743758914287 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6435836762835265831} + m_CullTransparentMesh: 0 +--- !u!114 &4899798569211387073 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6435836762835265831} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &6457266601126856795 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3807659439045052884} + - component: {fileID: 4529595284317267641} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3807659439045052884 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6457266601126856795} + 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: 5983516410954562191} + m_Father: {fileID: 1071186331609494896} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &4529595284317267641 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6457266601126856795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4746959147978535488} + toggleTransition: 1 + graphic: {fileID: 4947107805862492328} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &6647650129815640830 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2414531926316930725} + - component: {fileID: 6013907816282172337} + - component: {fileID: 962910717536914882} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2414531926316930725 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6647650129815640830} + 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: 8573571124664108074} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6013907816282172337 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6647650129815640830} + m_CullTransparentMesh: 0 +--- !u!114 &962910717536914882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6647650129815640830} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &6716624449677664242 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 906931124344334618} + - component: {fileID: 171724460343184333} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &906931124344334618 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6716624449677664242} + 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: 3737111891372312802} + m_Father: {fileID: 3434169616513257095} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &171724460343184333 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6716624449677664242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1701711077839953596} + toggleTransition: 1 + graphic: {fileID: 1504294621800433182} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &6761454948229671359 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7597631521775465986} + - component: {fileID: 289195601024694387} + - component: {fileID: 367787215377800833} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7597631521775465986 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6761454948229671359} + 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: 4787045164725599468} + m_Father: {fileID: 8139433324506673700} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &289195601024694387 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6761454948229671359} + m_CullTransparentMesh: 0 +--- !u!114 &367787215377800833 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6761454948229671359} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &6770269405074232191 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2567792433006010677} + - component: {fileID: 715164927613047327} + - component: {fileID: 6640962838804556285} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2567792433006010677 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6770269405074232191} + 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: 2542400616675058289} + m_Father: {fileID: 6644699419958076397} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &715164927613047327 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6770269405074232191} + m_CullTransparentMesh: 0 +--- !u!114 &6640962838804556285 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6770269405074232191} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &6865668874098640108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8625410696850161855} + - component: {fileID: 3618360561353404684} + m_Layer: 5 + m_Name: DebugUI Toggle 10 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8625410696850161855 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6865668874098640108} + 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: 1994050603111272669} + - {fileID: 7464475961458692551} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3618360561353404684 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6865668874098640108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 1133652755111259454} + valueToggle: {fileID: 2163830951127551774} + checkmarkImage: {fileID: 3955374361418223195} +--- !u!1 &6960760094989099012 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4817301142119688916} + - component: {fileID: 3757811077270860227} + m_Layer: 5 + m_Name: DebugUI Toggle 16 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4817301142119688916 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6960760094989099012} + 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: 5927895885435220356} + - {fileID: 8927555893094689660} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3757811077270860227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6960760094989099012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 3496924685570888828} + valueToggle: {fileID: 3176317505229877131} + checkmarkImage: {fileID: 2981323361707958040} +--- !u!1 &6970906156153676647 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9157722414083985858} + - component: {fileID: 2214193822323440039} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9157722414083985858 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6970906156153676647} + 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: 1914011185745597247} + m_Father: {fileID: 3626888406440555363} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2214193822323440039 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6970906156153676647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4324276223801582212} + toggleTransition: 1 + graphic: {fileID: 7322248292256421261} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &6993641499757403295 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8930712156476357657} + - component: {fileID: 4371419930628413674} + m_Layer: 5 + m_Name: DebugUI Toggle 7 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8930712156476357657 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6993641499757403295} + 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: 5784938561067271187} + - {fileID: 1471453698717655133} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &4371419930628413674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6993641499757403295} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 3314591442341821866} + valueToggle: {fileID: 2933965054200657782} + checkmarkImage: {fileID: 5067439095481778869} +--- !u!1 &7107229098804190366 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7432866224741430686} + - component: {fileID: 2405871519029774392} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7432866224741430686 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7107229098804190366} + 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: 4976284874825399851} + m_Father: {fileID: 2075241552360254502} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2405871519029774392 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7107229098804190366} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1546348349704106882} + toggleTransition: 1 + graphic: {fileID: 4957790091271580714} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &7116855287743012930 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7461098207183238788} + - component: {fileID: 3657859447761797027} + - component: {fileID: 2358232831280620294} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7461098207183238788 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7116855287743012930} + 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: 1617024272870076377} + m_Father: {fileID: 8927555893094689660} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3657859447761797027 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7116855287743012930} + m_CullTransparentMesh: 0 +--- !u!114 &2358232831280620294 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7116855287743012930} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &7334754811724867571 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7198286586904223138} + - component: {fileID: 926128736222914170} + - component: {fileID: 785927379557597115} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7198286586904223138 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7334754811724867571} + 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: 4305866066951985147} + m_Father: {fileID: 4278529981198013852} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &926128736222914170 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7334754811724867571} + m_CullTransparentMesh: 0 +--- !u!114 &785927379557597115 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7334754811724867571} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &7358121168254530163 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8643262011863657182} + - component: {fileID: 8192731229695085962} + m_Layer: 5 + m_Name: DebugUI Toggle 23 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8643262011863657182 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7358121168254530163} + 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: 1850453015581534804} + - {fileID: 800688055469850145} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8192731229695085962 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7358121168254530163} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 6701717425365996163} + valueToggle: {fileID: 6391126850643013647} + checkmarkImage: {fileID: 5356581191142619947} +--- !u!1 &7362354665106149521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6872577016307684039} + - component: {fileID: 4617364959482326908} + - component: {fileID: 6744668526965383060} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6872577016307684039 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362354665106149521} + 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: 1413563205384497702} + m_Father: {fileID: 5346538742984764208} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4617364959482326908 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362354665106149521} + m_CullTransparentMesh: 0 +--- !u!114 &6744668526965383060 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362354665106149521} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &7449666261731372048 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5080179768469462520} + - component: {fileID: 3283613025475625064} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5080179768469462520 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7449666261731372048} + 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: 8995314096000718896} + m_Father: {fileID: 4157811473205521841} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3283613025475625064 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7449666261731372048} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4021666774289769486} + toggleTransition: 1 + graphic: {fileID: 6982057837895959611} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &7479290689902784385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4700199911600101284} + - component: {fileID: 105621480128343845} + - component: {fileID: 2426528291183551289} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4700199911600101284 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7479290689902784385} + 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: 3912983369996595199} + m_Father: {fileID: 4397487224462890380} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &105621480128343845 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7479290689902784385} + m_CullTransparentMesh: 0 +--- !u!114 &2426528291183551289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7479290689902784385} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &7529363791104559946 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 49982278915739227} + - component: {fileID: 3336377035561475108} + - component: {fileID: 2720401729764849792} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &49982278915739227 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7529363791104559946} + 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: 8654207302046996467} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &3336377035561475108 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7529363791104559946} + m_CullTransparentMesh: 0 +--- !u!114 &2720401729764849792 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7529363791104559946} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &7586276679416498961 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1071186331609494896} + - component: {fileID: 6392172160440368498} + m_Layer: 5 + m_Name: DebugUI Toggle 5 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1071186331609494896 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7586276679416498961} + 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: 6667855967321245346} + - {fileID: 3807659439045052884} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6392172160440368498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7586276679416498961} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 164768344116107986} + valueToggle: {fileID: 4529595284317267641} + checkmarkImage: {fileID: 4947107805862492328} +--- !u!1 &7597021854849206998 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 428045328721135137} + - component: {fileID: 9195918111891992531} + - component: {fileID: 8813570217460717391} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &428045328721135137 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7597021854849206998} + 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: 3160084798452651386} + m_Father: {fileID: 5076517029326469307} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9195918111891992531 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7597021854849206998} + m_CullTransparentMesh: 0 +--- !u!114 &8813570217460717391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7597021854849206998} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &7668809704783364795 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4157811473205521841} + - component: {fileID: 9022096370556916318} + m_Layer: 5 + m_Name: DebugUI Toggle 20 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4157811473205521841 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7668809704783364795} + 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: 4263894447749242993} + - {fileID: 5080179768469462520} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &9022096370556916318 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7668809704783364795} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 6243446961833559651} + valueToggle: {fileID: 3283613025475625064} + checkmarkImage: {fileID: 6982057837895959611} +--- !u!1 &7679443995315107407 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3680364213637305159} + - component: {fileID: 4713833427757240811} + m_Layer: 5 + m_Name: DebugUI Toggle 31 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3680364213637305159 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7679443995315107407} + 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: 5124529111177426770} + - {fileID: 8139433324506673700} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &4713833427757240811 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7679443995315107407} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 2270273949667200229} + valueToggle: {fileID: 6819208608482539135} + checkmarkImage: {fileID: 8019534688361173590} +--- !u!1 &7715904839202416233 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5833546809406971014} + - component: {fileID: 2537786671583968872} + - component: {fileID: 4947107805862492328} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5833546809406971014 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7715904839202416233} + 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: 5983516410954562191} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2537786671583968872 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7715904839202416233} + m_CullTransparentMesh: 0 +--- !u!114 &4947107805862492328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7715904839202416233} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &7818452579344612254 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1133780997644914158} + - component: {fileID: 1735825134769845716} + m_Layer: 5 + m_Name: DebugUI Toggle 12 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1133780997644914158 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7818452579344612254} + 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: 6667778054025323136} + - {fileID: 1763134690699169346} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1735825134769845716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7818452579344612254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 3659922831755168663} + valueToggle: {fileID: 3776545304459646159} + checkmarkImage: {fileID: 7141046430449178186} +--- !u!1 &7843109833182365029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4295031112077750847} + - component: {fileID: 8702525542202927311} + - component: {fileID: 332153022343275791} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4295031112077750847 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7843109833182365029} + 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: 1568876051421469522} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8702525542202927311 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7843109833182365029} + m_CullTransparentMesh: 0 +--- !u!114 &332153022343275791 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7843109833182365029} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &7898878042900185760 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1869528527587065075} + - component: {fileID: 8562629198898424411} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1869528527587065075 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7898878042900185760} + 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: 6551000627649811944} + m_Father: {fileID: 7399658697125515523} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8562629198898424411 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7898878042900185760} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8907934119334727340} + toggleTransition: 1 + graphic: {fileID: 5177354320781382892} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &7939045417989815978 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5346538742984764208} + - component: {fileID: 6804859282518200063} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5346538742984764208 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7939045417989815978} + 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: 6872577016307684039} + m_Father: {fileID: 7977966139789023458} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6804859282518200063 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7939045417989815978} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6744668526965383060} + toggleTransition: 1 + graphic: {fileID: 4509044584000312710} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &8098599426082517356 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9173084524125034988} + - component: {fileID: 6603789859038349866} + m_Layer: 5 + m_Name: DebugUI Toggle 19 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9173084524125034988 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8098599426082517356} + 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: 6378496972948662163} + - {fileID: 6445334109479971278} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6603789859038349866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8098599426082517356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 5787119873324982712} + valueToggle: {fileID: 8058732095134162664} + checkmarkImage: {fileID: 962910717536914882} +--- !u!1 &8229421512619543525 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4761151331139786934} + - component: {fileID: 2462861946137041447} + m_Layer: 5 + m_Name: DebugUI Toggle 14 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4761151331139786934 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8229421512619543525} + 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: 9130896057738824197} + - {fileID: 1670263807047702912} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2462861946137041447 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8229421512619543525} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 2966172492667721896} + valueToggle: {fileID: 1441446908436994080} + checkmarkImage: {fileID: 5050348896946348867} +--- !u!1 &8382174878446464441 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8573571124664108074} + - component: {fileID: 3541859132605311333} + - component: {fileID: 4482108447807922650} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8573571124664108074 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8382174878446464441} + 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: 2414531926316930725} + m_Father: {fileID: 6445334109479971278} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3541859132605311333 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8382174878446464441} + m_CullTransparentMesh: 0 +--- !u!114 &4482108447807922650 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8382174878446464441} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &8418424508630208074 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9026513043517260611} + - component: {fileID: 704724795174701787} + - component: {fileID: 8196305987243256177} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9026513043517260611 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8418424508630208074} + 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: 8818044284439774689} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &704724795174701787 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8418424508630208074} + m_CullTransparentMesh: 0 +--- !u!114 &8196305987243256177 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8418424508630208074} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &8419724988180278695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8139433324506673700} + - component: {fileID: 6819208608482539135} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8139433324506673700 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8419724988180278695} + 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: 7597631521775465986} + m_Father: {fileID: 3680364213637305159} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6819208608482539135 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8419724988180278695} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 367787215377800833} + toggleTransition: 1 + graphic: {fileID: 8019534688361173590} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &8544218448054256101 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1471453698717655133} + - component: {fileID: 2933965054200657782} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1471453698717655133 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8544218448054256101} + 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: 2069466459521621409} + m_Father: {fileID: 8930712156476357657} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2933965054200657782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8544218448054256101} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8306564221555339770} + toggleTransition: 1 + graphic: {fileID: 5067439095481778869} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &8629100503664999682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1221176923530238434} + - component: {fileID: 7824910029803158027} + - component: {fileID: 5102590157774239751} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1221176923530238434 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8629100503664999682} + 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: 7399658697125515523} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &7824910029803158027 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8629100503664999682} + m_CullTransparentMesh: 0 +--- !u!114 &5102590157774239751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8629100503664999682} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &8677633347016963363 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 213539999138786333} + - component: {fileID: 7192581332987687273} + - component: {fileID: 9060318935775576703} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &213539999138786333 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8677633347016963363} + 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: 6341387859349373114} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7192581332987687273 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8677633347016963363} + m_CullTransparentMesh: 0 +--- !u!114 &9060318935775576703 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8677633347016963363} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &8685390622490100011 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7977966139789023458} + - component: {fileID: 6749636456503821663} + m_Layer: 5 + m_Name: DebugUI Toggle 29 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7977966139789023458 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8685390622490100011} + 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: 7792108644153214049} + - {fileID: 5346538742984764208} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6749636456503821663 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8685390622490100011} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 2353148834173414365} + valueToggle: {fileID: 6804859282518200063} + checkmarkImage: {fileID: 4509044584000312710} +--- !u!1 &8802377152758538674 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6378496972948662163} + - component: {fileID: 8757688739712324464} + - component: {fileID: 5787119873324982712} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6378496972948662163 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8802377152758538674} + 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: 9173084524125034988} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &8757688739712324464 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8802377152758538674} + m_CullTransparentMesh: 0 +--- !u!114 &5787119873324982712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8802377152758538674} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &8891641694798509794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4305866066951985147} + - component: {fileID: 795277854931234843} + - component: {fileID: 8002195202206546742} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4305866066951985147 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8891641694798509794} + 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: 7198286586904223138} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &795277854931234843 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8891641694798509794} + m_CullTransparentMesh: 0 +--- !u!114 &8002195202206546742 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8891641694798509794} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &8907353874709907600 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8233626477581283555} + - component: {fileID: 8128548266341100821} + - component: {fileID: 4427599279144680947} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8233626477581283555 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8907353874709907600} + 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: 3747482945603663964} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &8128548266341100821 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8907353874709907600} + m_CullTransparentMesh: 0 +--- !u!114 &4427599279144680947 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8907353874709907600} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &8934854630699155733 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4397487224462890380} + - component: {fileID: 7118092976832869884} + m_Layer: 5 + m_Name: Toggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4397487224462890380 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8934854630699155733} + 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: 4700199911600101284} + m_Father: {fileID: 8654207302046996467} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7118092976832869884 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8934854630699155733} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2426528291183551289} + toggleTransition: 1 + graphic: {fileID: 4899798569211387073} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!1 &8938513161468718541 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6493715579490047529} + - component: {fileID: 3501081499322488200} + - component: {fileID: 5802453145572142467} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6493715579490047529 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8938513161468718541} + 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: 6075760728334120815} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: 11, y: 11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3501081499322488200 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8938513161468718541} + m_CullTransparentMesh: 0 +--- !u!114 &5802453145572142467 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8938513161468718541} + 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: 1} + 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: 21300000, guid: b346b2a2df1d290438be3287b6419408, type: 3} + m_Type: 0 + 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 &8941056226660783832 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9130896057738824197} + - component: {fileID: 1608539554958489079} + - component: {fileID: 2966172492667721896} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9130896057738824197 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8941056226660783832} + 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: 4761151331139786934} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &1608539554958489079 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8941056226660783832} + m_CullTransparentMesh: 0 +--- !u!114 &2966172492667721896 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8941056226660783832} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!1 &9046698730679528549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5081734458789119777} + - component: {fileID: 8451891156616883890} + m_Layer: 5 + m_Name: DebugUI Toggle 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5081734458789119777 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9046698730679528549} + 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: 6885379471270306523} + - {fileID: 5076517029326469307} + m_Father: {fileID: 5832985335166806795} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 301, y: -40} + m_SizeDelta: {x: 552, y: 26} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &8451891156616883890 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9046698730679528549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0012fc4688b5d5342a441aa32c0e099e, 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: 7894181582057877634} + valueToggle: {fileID: 953415876542653751} + checkmarkImage: {fileID: 8209430775002992777} +--- !u!1 &9109294533507219646 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8351659506645333476} + - component: {fileID: 2982061304914416535} + - component: {fileID: 4755971768771506769} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8351659506645333476 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9109294533507219646} + 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: 1064151588746797128} + m_Father: {fileID: 6386133981247227809} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2982061304914416535 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9109294533507219646} + m_CullTransparentMesh: 0 +--- !u!114 &4755971768771506769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9109294533507219646} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &9147698509246440744 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8995314096000718896} + - component: {fileID: 3459244149561950068} + - component: {fileID: 4021666774289769486} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8995314096000718896 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9147698509246440744} + 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: 7508261725234730334} + m_Father: {fileID: 5080179768469462520} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -12} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3459244149561950068 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9147698509246440744} + m_CullTransparentMesh: 0 +--- !u!114 &4021666774289769486 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9147698509246440744} + 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: 1} + 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: 21300000, guid: d49e78756811bfa4aafb8b6535417991, type: 3} + 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 &9156468530069850769 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6885379471270306523} + - component: {fileID: 8455131147975850754} + - component: {fileID: 7894181582057877634} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6885379471270306523 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9156468530069850769} + 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: 5081734458789119777} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &8455131147975850754 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9156468530069850769} + m_CullTransparentMesh: 0 +--- !u!114 &7894181582057877634 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9156468530069850769} + 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: 0 + 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: 16 + 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: 0 + m_LineSpacing: 1 + m_Text: New Text diff --git a/Tests/SRPTests/Packages/local.code.coverage.references/package.json.meta b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIHandlerRenderingLayerField.prefab.meta similarity index 60% rename from Tests/SRPTests/Packages/local.code.coverage.references/package.json.meta rename to Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIHandlerRenderingLayerField.prefab.meta index 8fdcd3c9f60..4efc01a70b9 100644 --- a/Tests/SRPTests/Packages/local.code.coverage.references/package.json.meta +++ b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/Prefabs/Widgets/DebugUIHandlerRenderingLayerField.prefab.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 2206b52eb14cec944ba9b2a6076e8c10 -PackageManifestImporter: +guid: 928d1ca04af80c84e8d5dabc18095d79 +PrefabImporter: externalObjects: {} userData: assetBundleName: diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Deprecated.cs b/Packages/com.unity.render-pipelines.core/Runtime/Deprecated.cs index 9046879c434..a0b1cc9c211 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Deprecated.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Deprecated.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using UnityEngine.Assertions; +using static UnityEngine.Rendering.DebugUI; namespace UnityEngine.Rendering { @@ -153,4 +155,50 @@ public void Unregister(Volume volume, int layer) Unregister(volume); } } + + + public partial class DebugUI + { + /// + /// Maskfield enumeration field. + /// + [Obsolete("Mask field is not longer supported. Please use a BitField or implement your own Widget. #from(6000.2)", false)] + public class MaskField : EnumField + { + /// + /// Fills the enum using the provided names + /// + /// names to fill the enum + public void Fill(string[] names) + { + using (ListPool.Get(out var tmpNames)) + using (ListPool.Get(out var tmpValues)) + { + for (int i = 0; i < (names.Length); ++i) + { + tmpNames.Add(new GUIContent(names[i])); + tmpValues.Add(i); + } + enumNames = tmpNames.ToArray(); + enumValues = tmpValues.ToArray(); + } + } + + /// + /// Assigns a value to the maskfield. + /// + /// value for the maskfield + public override void SetValue(uint value) + { + Assert.IsNotNull(setter); + var validValue = ValidateValue(value); + + if (!validValue.Equals(getter())) + { + setter(validValue); + onValueChanged?.Invoke(this, validValue); + } + } + } + } } diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawer.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawer.cs index 666a7cb3706..aabf6728f7b 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawer.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawer.cs @@ -334,7 +334,7 @@ private static void Recreate(GPUResidentDrawerSettings settings) private NativeList m_FrameCameraIDs; private bool m_FrameUpdateNeeded = false; - private bool m_SelectionChanged; + private bool m_IsSelectionDirty; static GPUResidentDrawer() { @@ -399,6 +399,7 @@ private GPUResidentDrawer(GPUResidentDrawerSettings settings, int maxInstanceCou #if UNITY_EDITOR AssemblyReloadEvents.beforeAssemblyReload += OnAssemblyReload; m_FrameCameraIDs = new NativeList(1, Allocator.Persistent); + m_IsSelectionDirty = true; // Force at least one selection update #endif SceneManager.sceneLoaded += OnSceneLoaded; @@ -429,6 +430,7 @@ private void Dispose() #endif SceneManager.sceneLoaded -= OnSceneLoaded; + // Note: Those RenderPipelineManager callbacks do not run when using built-in editor debug views such as lightmap, shadowmask etc RenderPipelineManager.beginContextRendering -= OnBeginContextRendering; RenderPipelineManager.endContextRendering -= OnEndContextRendering; RenderPipelineManager.beginCameraRendering -= OnBeginCameraRendering; @@ -487,6 +489,7 @@ private void OnBeginContextRendering(ScriptableRenderContext context, List cameras) { bool newFrame = false; @@ -508,21 +511,16 @@ private void EditorFrameUpdate(List cameras) else m_FrameUpdateNeeded = true; } - - ProcessSelection(); } private void OnSelectionChanged() { - m_SelectionChanged = true; + m_IsSelectionDirty = true; } - private void ProcessSelection() + private void UpdateSelection() { - if(!m_SelectionChanged) - return; - - m_SelectionChanged = false; + Profiler.BeginSample("GPUResidentDrawer.UpdateSelection"); Object[] renderers = Selection.GetFiltered(typeof(MeshRenderer), SelectionMode.Deep); @@ -532,8 +530,10 @@ private void ProcessSelection() rendererIDs[i] = renderers[i] ? renderers[i].GetInstanceID() : 0; m_Batcher.UpdateSelectedRenderers(rendererIDs); - + rendererIDs.Dispose(); + + Profiler.EndSample(); } #endif @@ -612,10 +612,15 @@ private void PostPostLateUpdate() supportedChangedPackedMaterialDatas.Dispose(); m_BatchersContext.UpdateInstanceMotions(); - m_Batcher.UpdateFrame(); #if UNITY_EDITOR + if (m_IsSelectionDirty) + { + UpdateSelection(); + m_IsSelectionDirty = false; + } + m_FrameUpdateNeeded = false; #endif } diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCuller.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCuller.cs index 7d753421fc0..a980a3e23fb 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCuller.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCuller.cs @@ -206,6 +206,9 @@ unsafe float CalculateLODVisibility(int instanceIndex, int sharedInstanceIndex, Assert.IsTrue(lodMask > 0); ref var lodGroup = ref lodGroupCullingData.ElementAt((int)lodIndex); + if (lodGroup.forceLODMask != 0) + return (lodGroup.forceLODMask & lodMask) != 0 ? k_LODPercentFullyVisible : k_LODPercentInvisible; + float cameraSqrDistToLODCenter = isOrtho ? sqrScreenRelativeMetric : LODGroupRenderingUtils.CalculateSqrPerspectiveDistance(lodGroup.worldSpaceReferencePoint, cameraPosition, sqrScreenRelativeMetric); // Remove lods that are beyond the max lod. diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPool.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPool.cs index 2b33013a199..42705f501e6 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPool.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPool.cs @@ -27,6 +27,7 @@ internal unsafe struct LODGroupCullingData public fixed float transitionDistances[LODGroupData.k_MaxLODLevelsCount]; // todo - make this a separate data struct (CPUOnly, as we do not support dithering on GPU..) public float worldSpaceSize;// SpeedTree crossfade. public fixed bool percentageFlags[LODGroupData.k_MaxLODLevelsCount];// SpeedTree crossfade. + public byte forceLODMask; } [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] @@ -155,6 +156,7 @@ public void Execute(int index) var worldReferencePoint = inputData.worldSpaceReferencePoint[index]; var worldSpaceSize = inputData.worldSpaceSize[index]; var lastLODIsBillboard = inputData.lastLODIsBillboard[index]; + var forceLODMask = inputData.forceLODMask[index]; var useDitheringCrossFade = fadeMode != LODFadeMode.None && supportDitheringCrossFade; var useSpeedTreeCrossFade = fadeMode == LODFadeMode.SpeedTree; @@ -166,6 +168,7 @@ public void Execute(int index) lodGroupData->rendererCount = useDitheringCrossFade ? renderersCount : 0; lodGroupCullingData->worldSpaceSize = worldSpaceSize; lodGroupCullingData->worldSpaceReferencePoint = worldReferencePoint; + lodGroupCullingData->forceLODMask = forceLODMask; lodGroupCullingData->lodCount = lodCount; rendererCount.Add(lodGroupData->rendererCount); diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/DecodeSH.hlsl b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/DecodeSH.hlsl index dfcd7d3440e..3e1ea9ff582 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/DecodeSH.hlsl +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/DecodeSH.hlsl @@ -74,7 +74,11 @@ float3 EncodeSH(float l0, float3 l1) #if !HALF_IS_FLOAT half3 EncodeSH(half l0, half3 l1) { - return l0 == 0.0 ? 0.5 : l1 * rcp(l0) / (2.0 * APV_L1_ENCODING_SCALE) + 0.5; + // UUM-92338: To prevent rcp(l0) from going to infinity, 1.0/l0 must be smaller than 65504 (HALF_MAX) + // => l0 must be greater than than 1.0/65504 = 0.00001526624(0x0100) which is a subnormal number + // To ensure robustness and avoid issues, we need a bigger threshold value. + // 0.00006103515625 (HALF_MIN) would be a decent choice but we select 0.0001 instead, which was already used in ProbeVolume.hlsl + return (l0 < 0.0001 ? 0.5 : l1 * rcp(l0) / (2.0 * APV_L1_ENCODING_SCALE) + 0.5); } #endif diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs index a9eadd77de4..f6615975f95 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs @@ -727,6 +727,7 @@ public struct ExtraDataActionInput List m_ActiveScenes = new List(); ProbeVolumeBakingSet m_CurrentBakingSet = null; + ProbeVolumeBakingSet m_LazyBakingSet = null; bool m_NeedLoadAsset = false; bool m_ProbeReferenceVolumeInit = false; @@ -857,6 +858,39 @@ internal void RegisterPerSceneData(ProbeVolumePerSceneData data) } } + /// + /// Setting a BakingSet while it is uninitialized schedules it to be set after initialization. + /// + /// BakingSet to set. + /// Returns true when scheduled. + internal bool ScheduleBakingSet(ProbeVolumeBakingSet bakingSet) + { + if (m_IsInitialized) + { + return false; + } + + m_LazyBakingSet = bakingSet; + return true; + } + + /// + /// Set the scheduled BakingSet if it exists. + /// + /// Returns true if the scheduling is executed. + internal bool ProcessScheduledBakingSet() + { + if (m_LazyBakingSet == null) + { + return false; + } + + SetActiveBakingSet(m_LazyBakingSet); + m_LazyBakingSet = null; + + return true; + } + /// /// Loads the baking set the given scene is part of if it exists. /// @@ -877,6 +911,11 @@ public void SetActiveBakingSet(ProbeVolumeBakingSet bakingSet) if (m_CurrentBakingSet == bakingSet) return; + if (ScheduleBakingSet(bakingSet)) + { + return; + } + foreach (var data in perSceneDataList) data.QueueSceneRemoval(); @@ -1015,6 +1054,8 @@ public void Initialize(in ProbeVolumeSystemParameters parameters) foreach (var data in perSceneDataList) data.Initialize(); + + ProcessScheduledBakingSet(); } /// diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingSet.Editor.cs b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingSet.Editor.cs index 0ff45e67338..3b52d8fa485 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingSet.Editor.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingSet.Editor.cs @@ -560,9 +560,9 @@ internal void EnsurePerSceneData(Scene scene, string sceneGUID) } } - internal SceneBakeData GetSceneBakeData(string sceneGUID) + internal SceneBakeData GetSceneBakeData(string sceneGUID, bool addIfMissing = true) { - if (!m_SceneBakeData.TryGetValue(sceneGUID, out var bakeData)) + if (!m_SceneBakeData.TryGetValue(sceneGUID, out var bakeData) && addIfMissing) { if (m_SceneGUIDs.Contains(sceneGUID)) m_SceneBakeData[sceneGUID] = bakeData = new SceneBakeData(); diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingSet.cs b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingSet.cs index d6d9a6d0c48..d37cd5090f6 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingSet.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingSet.cs @@ -31,7 +31,8 @@ public sealed partial class ProbeVolumeBakingSet : ScriptableObject, ISerializat internal enum Version { Initial, - RemoveProbeVolumeSceneData + RemoveProbeVolumeSceneData, + AssetsAlwaysReferenced, } [Serializable] @@ -345,6 +346,28 @@ internal void Migrate() #endif } + // Upgrade baking sets from before we always stored asset references. + if (version < Version.AssetsAlwaysReferenced && ProbeReferenceVolume.instance.isInitialized) + { +#if UNITY_EDITOR + cellBricksDataAsset.EnsureAssetLoaded(); + cellSharedDataAsset.EnsureAssetLoaded(); + cellSupportDataAsset.EnsureAssetLoaded(); + foreach (var scenario in scenarios) + { + scenario.Value.cellDataAsset.EnsureAssetLoaded(); + scenario.Value.cellOptionalDataAsset.EnsureAssetLoaded(); + scenario.Value.cellProbeOcclusionDataAsset.EnsureAssetLoaded(); + } + + version = Version.AssetsAlwaysReferenced; + + // Save immediately since these references must be written to disk for certain functionality + // to work, such as exporting a .unitypackage. Changing in memory is not enough. + UnityEditor.EditorUtility.SetDirty(this); + UnityEditor.AssetDatabase.SaveAssetIfDirty(this); +#endif + } #pragma warning restore 618 } @@ -645,18 +668,45 @@ NativeArray RequestScratchBuffer(int size) } } + private unsafe bool FileExists(string path) + { + // Can't use System.IO.File.Exists as it doesn't work with compressed streaming assets folder (iOS, Android) + FileInfoResult infoResult; + ReadHandle h = AsyncReadManager.GetFileInfo(path, &infoResult); + h.JobHandle.Complete(); + return infoResult.FileState == FileState.Exists; + } + // Load from disk all data related to the required cells only. // This allows us to avoid loading the whole file in memory which could be a huge spike for multi scene setups. unsafe NativeArray LoadStreambleAssetData(ProbeVolumeStreamableAsset asset, List cellIndices) where T : struct { if (!m_UseStreamingAsset) { - // Only when not using Streaming Asset is this reference valid. Debug.Assert(asset.asset != null); return asset.asset.GetData().Reinterpret(1); } else { + if (!FileExists(asset.GetAssetPath())) + { + asset.RefreshAssetPath(); + if (!FileExists(asset.GetAssetPath())) + { + // If we can't load from StreamingAssets, but we have a valid asset reference, try to use the asset reference instead. + if (asset.HasValidAssetReference()) + { + return asset.asset.GetData().Reinterpret(1); + } + else + { + Debug.LogAssertion($"File {asset.GetAssetPath()} does not exist on disk. If you are trying to load Adaptive Probe Volumes from AssetBundles or Addressables, " + + "tick the \"Probe Volume Disable Streaming Assets\" project setting in the Graphics tab when building the Player."); + return default; + } + } + } + // Prepare read commands. // Reallocate read commands buffer if needed. if (!m_ReadCommandBuffer.IsCreated || m_ReadCommandBuffer.Length < cellIndices.Count) diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeGIContributor.cs b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeGIContributor.cs index 54b467918eb..83e44b9319c 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeGIContributor.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeGIContributor.cs @@ -390,10 +390,14 @@ public GIContributors FilterLayerMaskOnly(LayerMask layerMask) var filteredPrototypes = new List(); foreach (var treeProto in terrain.treePrototypes) { - int treeProtoLayerMask = 1 << treeProto.component.gameObject.layer; + // check if the mesh renderer exists + if (treeProto.component != null) + { + int treeProtoLayerMask = 1 << treeProto.component.gameObject.layer; - if ((treeProtoLayerMask & layerMask) != 0) - filteredPrototypes.Add(treeProto); + if ((treeProtoLayerMask & layerMask) != 0) + filteredPrototypes.Add(treeProto); + } } var terrainContrib = new TerrainContributor() diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumePerSceneData.cs b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumePerSceneData.cs index 639f3087436..4fc973f5ecb 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumePerSceneData.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumePerSceneData.cs @@ -78,7 +78,7 @@ internal void QueueSceneLoading() #if UNITY_EDITOR // Check if we are trying to load APV data for a scene which has not enabled APV (or it was removed) - var bakedData = serializedBakingSet.GetSceneBakeData(sceneGUID); + var bakedData = serializedBakingSet.GetSceneBakeData(sceneGUID, addIfMissing: false); if (bakedData != null && bakedData.hasProbeVolume == false) return; #endif @@ -97,9 +97,10 @@ void OnEnable() { #if UNITY_EDITOR // In the editor, always refresh the GUID as it may become out of date is scene is duplicated or other weird things - // This field is serialized, so it will be available in standalones, where it can't change anymore + // This field is serialized, so it will be available in standalones, where it can't change anymore. + // Only change the GUID if the new one is valid. var newGUID = gameObject.scene.GetGUID(); - if (newGUID != sceneGUID) + if (newGUID != sceneGUID && new GUID(newGUID) != default) { sceneGUID = newGUID; EditorUtility.SetDirty(this); diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeStreamableAsset.cs b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeStreamableAsset.cs index 4f60b151350..c21c10b4f2c 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeStreamableAsset.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeStreamableAsset.cs @@ -43,6 +43,9 @@ public ProbeVolumeStreamableAsset(string apvStreamingAssetsPath, SerializedDicti m_StreamableCellDescs = cellDescs; m_ElementSize = elementSize; m_StreamableAssetPath = Path.Combine(Path.Combine(apvStreamingAssetsPath, bakingSetGUID), m_AssetGUID + ".bytes"); +#if UNITY_EDITOR + EnsureAssetLoaded(); +#endif } internal void RefreshAssetPath() @@ -63,9 +66,16 @@ public string GetAssetPath() return m_FinalAssetPath; } + internal bool HasValidAssetReference() + { + return m_Asset != null && m_Asset.bytes != null; + } + unsafe public bool FileExists() { #if UNITY_EDITOR + if (HasValidAssetReference()) + return true; if (File.Exists(GetAssetPath())) return true; // File may not exist if it was moved, refresh path in this case @@ -89,9 +99,16 @@ public void RenameAsset(string newName) m_FinalAssetPath = ""; } - public void UpdateAssetReference(bool useStreamingAsset) + // Ensures that the asset is referenced via Unity's serialization layer. + public void EnsureAssetLoaded() + { + m_Asset = AssetDatabase.LoadAssetAtPath(GetAssetPath()); + } + + // Temporarily clear the asset reference. Used to prevent serialization of the asset when we are using the StreamingAssets codepath. + public void ClearAssetReferenceForBuild() { - m_Asset = useStreamingAsset ? null : AssetDatabase.LoadAssetAtPath(GetAssetPath()); + m_Asset = null; } #endif diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/PassesData.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/PassesData.cs index ba880599e08..2eb76e8cf1c 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/PassesData.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/PassesData.cs @@ -4,6 +4,7 @@ using Unity.Collections.LowLevel.Unsafe; using UnityEngine.Rendering; using System.Collections.Generic; +using Unity.Collections; namespace UnityEngine.Rendering.RenderGraphModule.NativeRenderPassCompiler { @@ -569,6 +570,32 @@ public NativePassData(ref PassData pass, CompilerContextData ctx) TryMergeNativeSubPass(ctx, ref this, ref pass); } + // Gets the best SubPassFlag for a pass that originally had no depth attachment, that we want to merge with this pass. + public SubPassFlags GetSubPassFlagForMerging() + { + // We should not be calling this method if native pass doesn't have depth. + if (hasDepth == false) + { + throw new Exception("SubPassFlag for merging can not be determined if native pass doesn't have a depth attachment"); + } + + // Only do this for mobile using Vulkan. +#if (PLATFORM_ANDROID) + if (SystemInfo.graphicsDeviceType == GraphicsDeviceType.Vulkan) + { + // Depth attachment is always at index 0. + return (fragments[0].accessFlags.HasFlag(AccessFlags.Write)) ? SubPassFlags.None : SubPassFlags.ReadOnlyDepth; + } + else + { + return SubPassFlags.ReadOnlyDepth; + } +#else + // By default flag this subpass as ReadOnlyDepth. + return SubPassFlags.ReadOnlyDepth; +#endif + } + public void Clear() { firstGraphPass = 0; @@ -594,7 +621,9 @@ public readonly ReadOnlySpan GraphPasses(CompilerContextData ctx) return ctx.passData.MakeReadOnlySpan(firstGraphPass, numGraphPasses); } - var actualPasses = new PassData[numGraphPasses]; + var actualPasses = + new NativeArray(numGraphPasses, Allocator.Temp, + NativeArrayOptions.UninitializedMemory); for (int i = firstGraphPass, index = 0; i < lastGraphPass + 1; ++i) { @@ -786,11 +815,11 @@ static bool CanMergeNativeSubPass(CompilerContextData contextData, NativePassDat // nextSubpass is expensive on some platforms (even if its' essentially a no-op as it's using the same attachments). SubPassFlags flags = SubPassFlags.None; - // If depth ends up being bound only because of merging we explicitly say that we will not write to it - // which could have been implied by leaving the flag to None + // If depth ends up being bound only because of merging if (!passToMerge.fragmentInfoHasDepth && nativePass.hasDepth) { - flags = SubPassFlags.ReadOnlyDepth; + // Set SubPassFlags to best match the pass we are trying to merge with + flags = nativePass.GetSubPassFlagForMerging(); } // MRT attachments @@ -902,11 +931,11 @@ public static void TryMergeNativeSubPass(CompilerContextData contextData, ref Na return; } - // If depth ends up being bound only because of merging we explicitly say that we will not write to it - // which could have been implied by leaving the flag to None + // If depth ends up being bound only because of merging if (!passToMerge.fragmentInfoHasDepth && nativePass.hasDepth) { - desc.flags = SubPassFlags.ReadOnlyDepth; + // Set SubPassFlags to best match the pass we are trying to merge with + desc.flags = nativePass.GetSubPassFlagForMerging(); } // MRT attachments @@ -1028,11 +1057,11 @@ static void UpdateNativeSubPassesAttachments(CompilerContextData contextData, re ref var nativeSubPassDescriptor = ref contextData.nativeSubPassData.ElementAt(lastVisitedNativeSubpassIdx); - // If depth ends up being bound only because of merging we explicitly say that we will not write to it - // which could have been implied by leaving the flag to None + // If depth ends up being bound only because of merging if (!currGraphPass.fragmentInfoHasDepth && nativePass.hasDepth) { - nativeSubPassDescriptor.flags = SubPassFlags.ReadOnlyDepth; + // Set SubPassFlags to best match the pass we are trying to merge with + nativeSubPassDescriptor.flags = nativePass.GetSubPassFlagForMerging(); } // MRT attachments diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs index a59c8efba8c..46f5ec44601 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs @@ -2519,7 +2519,7 @@ void GenerateCompilerDebugData(ref DebugData debugData) newPass.syncFromPassIndex = passInfo.syncFromPassIndex; newPass.syncToPassIndex = passInfo.syncToPassIndex; - DebugData.s_PassScriptMetadata.TryGetValue(pass.name, out newPass.scriptInfo); + DebugData.s_PassScriptMetadata.TryGetValue(pass, out newPass.scriptInfo); for (int type = 0; type < (int)RenderGraphResourceType.Count; ++type) { diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Utilities/CoreUtils.cs b/Packages/com.unity.render-pipelines.core/Runtime/Utilities/CoreUtils.cs index 141a63c62b1..a3022cd1982 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Utilities/CoreUtils.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Utilities/CoreUtils.cs @@ -13,6 +13,25 @@ namespace UnityEngine.Rendering /// public static class CoreUtils { +#if UNITY_EDITOR + static CoreUtils() + { + void OnBeforeAssemblyReload() + { + UnityObject.DestroyImmediate(m_BlackCubeTexture); + UnityObject.DestroyImmediate(m_BlackVolumeTexture); + UnityObject.DestroyImmediate(m_WhiteCubeTexture); + UnityObject.DestroyImmediate(m_WhiteVolumeTexture); + UnityObject.DestroyImmediate(m_MagentaCubeTexture); + UnityObject.DestroyImmediate(m_MagentaCubeTextureArray); + UnityObject.DestroyImmediate(m_EmptyUAV); + m_EmptyBuffer?.Release(); + UnityEditor.AssemblyReloadEvents.beforeAssemblyReload -= OnBeforeAssemblyReload; + } + UnityEditor.AssemblyReloadEvents.beforeAssemblyReload += OnBeforeAssemblyReload; + } +#endif + /// /// List of look at matrices for cubemap faces. /// Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/bb204881(v=vs.85).aspx diff --git a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRSystem.cs b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRSystem.cs index 6be5c7b846d..08eb90074a3 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRSystem.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRSystem.cs @@ -460,6 +460,7 @@ private static RenderTextureDescriptor XrRenderTextureDescToUnityRenderTextureDe // XRTODO : fix root problem RenderTextureDescriptor rtDesc = new RenderTextureDescriptor(xrDesc.width, xrDesc.height, xrDesc.graphicsFormat, xrDesc.depthStencilFormat, xrDesc.mipCount); rtDesc.dimension = xrDesc.dimension; + rtDesc.msaaSamples = xrDesc.msaaSamples; rtDesc.volumeDepth = xrDesc.volumeDepth; rtDesc.vrUsage = xrDesc.vrUsage; rtDesc.sRGB = xrDesc.sRGB; diff --git a/Packages/com.unity.render-pipelines.core/Tests/Editor/AssemblyInfo.cs b/Packages/com.unity.render-pipelines.core/Tests/Editor/AssemblyInfo.cs new file mode 100644 index 00000000000..21d14073caf --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Tests/Editor/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("SRPSmoke.Editor.Tests")] diff --git a/Packages/com.unity.render-pipelines.core/Tests/Editor/AssemblyInfo.cs.meta b/Packages/com.unity.render-pipelines.core/Tests/Editor/AssemblyInfo.cs.meta new file mode 100644 index 00000000000..e8c59f801cb --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Tests/Editor/AssemblyInfo.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 79d9da7a81239e744bc809717c68ae47 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs b/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs index 3ad5f36cfb1..abece210ec4 100644 --- a/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs +++ b/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using UnityEngine.Experimental.Rendering; +using UnityEngine.Profiling; using UnityEngine.Rendering.RenderGraphModule; using UnityEngine.Rendering.RenderGraphModule.NativeRenderPassCompiler; @@ -9,6 +10,8 @@ namespace UnityEngine.Rendering.Tests { class NativePassCompilerRenderGraphTests { + static Recorder gcAllocRecorder = Recorder.Get("GC.Alloc"); + class RenderGraphTestPassData { public TextureHandle[] textures = new TextureHandle[8]; @@ -1145,5 +1148,64 @@ public void ChangingGlobalStateDisablesCulling() Assert.IsTrue(firstNativePass.numGraphPasses == 2); } + + [Test] + public void GraphPassesDoesNotAlloc() + { + var g = AllocateRenderGraph(); + using (var builder = g.AddRasterRenderPass("TestPass0", out var passData)) + { + builder.SetRenderFunc((RenderGraphTestPassData data, RasterGraphContext context) => { }); + builder.AllowPassCulling(false); + } + using (var builder = g.AddRasterRenderPass("TestPass1_Culled", out var passData)) + { + builder.SetRenderFunc((RenderGraphTestPassData data, RasterGraphContext context) => { }); + builder.AllowPassCulling(true); + } + using (var builder = g.AddRasterRenderPass("TestPass2", out var passData)) + { + builder.SetRenderFunc((RenderGraphTestPassData data, RasterGraphContext context) => { }); + builder.AllowPassCulling(false); + } + + // First pass is preserved as requested but second pass is culled + var result = g.CompileNativeRenderGraph(g.ComputeGraphHash()); + var passes = result.contextData.GetNativePasses(); + + // Second pass has been culled + Assert.IsTrue(passes != null && passes.Count == 1 && passes[0].numGraphPasses == 2); + // Goes into possible alloc path + Assert.IsFalse(passes[0].lastGraphPass - passes[0].firstGraphPass + 1 == passes[0].numGraphPasses); + + + ValidateNoGCAllocs(() => + { + passes[0].GraphPasses(result.contextData); + }); + + // From RenderPassCullingTests.cs + void ValidateNoGCAllocs(Action action) + { + // Warmup - this will catch static c'tors etc. + CountGCAllocs(action); + + // Actual test. + var count = CountGCAllocs(action); + if (count != 0) + throw new AssertionException($"Expected 0 GC allocations but there were {count}"); + } + + int CountGCAllocs(Action action) + { + gcAllocRecorder.FilterToCurrentThread(); + gcAllocRecorder.enabled = true; + + action(); + + gcAllocRecorder.enabled = false; + return gcAllocRecorder.sampleBlockCount; + } + } } } diff --git a/Packages/com.unity.render-pipelines.core/Tests/Editor/Unity.RenderPipelines.Core.Editor.Tests.asmdef b/Packages/com.unity.render-pipelines.core/Tests/Editor/Unity.RenderPipelines.Core.Editor.Tests.asmdef index cd34a7d1f6d..1d43eb285b9 100644 --- a/Packages/com.unity.render-pipelines.core/Tests/Editor/Unity.RenderPipelines.Core.Editor.Tests.asmdef +++ b/Packages/com.unity.render-pipelines.core/Tests/Editor/Unity.RenderPipelines.Core.Editor.Tests.asmdef @@ -9,7 +9,8 @@ "GUID:d8b63aba1907145bea998dd612889d6b", "GUID:4fd6538c1c56b409fb53fdf0183170ec", "GUID:e0cd26848372d4e5c891c569017e11f1", - "GUID:bf043f86dbf1bda4398ec83eebe40b8c" + "GUID:bf043f86dbf1bda4398ec83eebe40b8c", + "GUID:aa4a944c34c4c5449b84975fb1570dad" ], "includePlatforms": [ "Editor" @@ -26,4 +27,4 @@ ], "versionDefines": [], "noEngineReferences": false -} +} \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.core/Tests/Editor/Volumes/RenderPipelineTests.cs b/Packages/com.unity.render-pipelines.core/Tests/Editor/Volumes/RenderPipelineTests.cs index 02f7e8eb621..65a1988f560 100644 --- a/Packages/com.unity.render-pipelines.core/Tests/Editor/Volumes/RenderPipelineTests.cs +++ b/Packages/com.unity.render-pipelines.core/Tests/Editor/Volumes/RenderPipelineTests.cs @@ -5,7 +5,7 @@ namespace UnityEditor.Rendering.Tests { - class RenderPipelineTests + internal class RenderPipelineTests { RenderPipelineAsset m_PreviousRenderPipelineAssetInGraphicsSettings; RenderPipelineAsset m_PreviousRenderPipelineAssetInQualitySettings; diff --git a/Packages/com.unity.render-pipelines.core/Tests/Runtime/AssemblyInfos.cs b/Packages/com.unity.render-pipelines.core/Tests/Runtime/AssemblyInfos.cs index 89789ef4a5e..d1f436bab46 100644 --- a/Packages/com.unity.render-pipelines.core/Tests/Runtime/AssemblyInfos.cs +++ b/Packages/com.unity.render-pipelines.core/Tests/Runtime/AssemblyInfos.cs @@ -1,3 +1,5 @@ using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("Unity.RenderPipelines.Core.Editor.Tests")] +[assembly: InternalsVisibleTo("SRPSmoke.Runtime.Tests")] +[assembly: InternalsVisibleTo("SRPSmoke.Editor.Tests")] diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Alpha-Output.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Alpha-Output.md index 3f871f1c7f0..61f76536d3a 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Alpha-Output.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Alpha-Output.md @@ -27,22 +27,22 @@ Rendering Buffer Format | Post-processing Buffer Format | Alpha Output ## DoF and Alpha Output Another case which might require post-processing of the alpha channel is for scenes that use Depth Of Field. In this case, if the alpha isn't processed, compositing results in a sharp cut-off of an object that appears blurred. This is better illustrated in the images below: -![](Images/DoFAlpha.png) +![An out-of-focus sphere composited over a solid blue background using a R16G16B16A16 buffer format for both rendering and post-processing. In this case, DoF is applied in the alpha channel, resulting in a proper composition.](Images/DoFAlpha.png) An out-of-focus sphere composited over a solid blue background using a R16G16B16A16 buffer format for both rendering and post-processing. In this case, DoF is applied in the alpha channel, resulting in a proper composition (the output alpha used in the composition is shown in the image inset). -![](Images/DoFAlphaCopy.png) +![An out-of-focus sphere composited over a solid blue background using AlphaCopy. In this case, DoF isn't applied in the alpha channel, resulting in a sharp outline around the composited sphere.](Images/DoFAlphaCopy.png) An out-of-focus sphere composited over a solid blue background using AlphaCopy. In this case, DoF isn't applied in the alpha channel, resulting in a sharp outline around the composited sphere (the output alpha used in the composition is shown in the image inset). ## Temporal Anti-Aliasing and Alpha Output When you enable Temporal Anti-Aliasing (TAA), it's highly recommended to enable post-processing for the alpha channel (R16G16B16A16 format for both rendering and post-processing). If the alpha channel isn't post-processed, then the alpha mask is jittered, as shown in the images below: -![](Images/TAA_AlphaCopy.gif) +![A sphere rendered with TAA using AlphaCopy, composited over a solid blue background using the alpha channel. The alpha channel isn't temporally stabilized by TAA, resulting in jittering on the final image.](Images/TAA_AlphaCopy.gif) A sphere rendered with TAA using AlphaCopy, composited over a solid blue background using the alpha channel. The alpha channel isn't temporally stabilized by TAA, resulting in jittering on the final image. -![](Images/TAA_Alpha.gif) +![A sphere rendered with TAA, composited over a solid blue background using the alpha channel. TAA is also applied in the alpha channel, resulting in a stable composition.](Images/TAA_Alpha.gif) A sphere rendered with TAA (R16G16B16A16 for both rendering and post-processing), composited over a solid blue background using the alpha channel. TAA is also applied in the alpha channel, resulting in a stable composition. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Compute-Thickness.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Compute-Thickness.md index e3b5f073659..5680b131d35 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Compute-Thickness.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Compute-Thickness.md @@ -1,6 +1,6 @@ # Compute Thickness -![](Images/ComputeThickness.png) +![A detailed dragon statuette made of a translucent green material.](Images/ComputeThickness.png) HDRP can use the optical path to make transparent or opaque materials appear more dense in larger internal areas of a mesh. This is called compute thickness. @@ -90,9 +90,7 @@ HDRP creates a texture that contains the thickness of all the GameObjects in eac HDRP calculates compute thickness for opaque materials before transparent materials. This means opaque materials affect the thickness of transparent materials, but opaque materials do not affect each other’s thickness. -For example, the image below displays two spheres that use a compute thickness material and intersect an opaque checkerboard plane. The transparent sphere (A) has a dark edge where the plane intersects it, but the opaque plane does not affect the opaque sphere (B). - -![](Images/computethickness_transparency.png) +![Two spheres that use a compute thickness material and intersect an opaque checkerboard plane. The transparent sphere (A) has a dark edge where the plane intersects it, but the opaque plane doesn't affect the opaque sphere (B).](Images/computethickness_transparency.png)
A: A sphere with a transparent compute thickness material intersecting an opaque plane. B: A sphere with an opaque compute thickness material intersecting an opaque plane. @@ -140,17 +138,17 @@ To visualize the compute thickness debug mode, perform the following actions: This view displays the thickness or overlap count of the objects in the layer you select in the **Layer Mask** property. -![](Images/ComputeThickness_Debug.png) +![A model shown in the default compute thickness debug view, and the debug view when you enable **Show Overlap Count**. In the second view, yellow areas indicate a high number of overlapping triangles.](Images/ComputeThickness_Debug.png) A: The default appearance of the compute thickness debug view. -B: The compute thickness debug view when you enable **Show Overlap Count** . +B: The compute thickness debug view when you enable **Show Overlap Count**. | **Debug view color** | **Description** | | ------------------------------------------------------------ | ------------------------------------------------------------ | -| ![img](Images/computethickness_debug_vidris.png)Vidris color scale | A gradient scale that represents thickness. Purple represents the minimum thickness and yellow represents the maximum thickness.
When you enable **Show Overlap Count,** yellow areas indicate a high number of overlapping triangles. | -| ![img](Images/computethickness_debug_red.png)Red | Negative thickness caused by an open mesh, flipped triangles, or an odd number of triangles in the optical path. | -| ![img](Images/computethickness_debug_gray.png)Gray | The default background color.
Gray areas inside a mesh indicate pixels that are in a similar position (z-fight) or have no thickness. | -| ![img](Images/computethickness_debug_orange.png)Orange | Compute Thickness is not active in HDRP graphics settings. To fix this, [enable compute thickness](#computethickness-enable). | -| ![img](Images/computethickness_debug_pink.png)Pink | This layer is not assigned to the HDRP Asset’s Layer Mask property. To fix this, [enable compute thickness](#computethickness-enable). | +| ![Vidris color scale](Images/computethickness_debug_vidris.png)Vidris color scale | A gradient scale that represents thickness. Purple represents the minimum thickness and yellow represents the maximum thickness.
When you enable **Show Overlap Count,** yellow areas indicate a high number of overlapping triangles. | +| ![Red](Images/computethickness_debug_red.png)Red | Negative thickness caused by an open mesh, flipped triangles, or an odd number of triangles in the optical path. | +| ![Gray](Images/computethickness_debug_gray.png)Gray | The default background color.
Gray areas inside a mesh indicate pixels that are in a similar position (z-fight) or have no thickness. | +| ![Orange](Images/computethickness_debug_orange.png)Orange | Compute Thickness is not active in HDRP graphics settings. To fix this, [enable compute thickness](#computethickness-enable). | +| ![Pink](Images/computethickness_debug_pink.png)Pink | This layer is not assigned to the HDRP Asset’s Layer Mask property. To fix this, [enable compute thickness](#computethickness-enable). | ## Limitations diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Frame-Debugger.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Frame-Debugger.md deleted file mode 100644 index 1ee40904548..00000000000 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Frame-Debugger.md +++ /dev/null @@ -1,11 +0,0 @@ -# Viewing a Custom Pass in the Frame Debugger - -You can use the [Frame Debugger](https://docs.unity3d.com/Manual/FrameDebugger.html) to examine every draw call you issued in the Custom Pass. To find your pass, look for the name you gave your Custom Pass in the Custom Pass Volume component. - -In this example, the Custom Pass is called **My Outline Pass**. The **Frame Debug** window (menu: - -**Window > Analysis > Frame Debugger**) displays the steps that **My Outline Pass** executes in the left window, highlighted in the image below: - -![](images/Custom_Pass_Frame_Debug.png) - -To learn more about the Frame Debugger, see the [Frame Debugger](https://docs.unity3d.com/Manual/FrameDebugger.html) documentation. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Injection-Points.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Injection-Points.md index 89bddeb728f..c44d7802ccd 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Injection-Points.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Injection-Points.md @@ -23,6 +23,3 @@ Unity triggers the following injection points in a frame, in order from top to b | BeforeTransparent | Color (Pyramid \| Read \| Write), Depth (Read \| Write), Normal and roughness (Read), Motion Vectors (Read) | The available buffers for this injection point contain:
- All opaque objects.
- Transparent PreRefraction objects.
- Transparent objects with depth-prepass and screen space reflections (SSR) enabled.

In this Injection Point you can sample the color pyramid that Unity uses for transparent refraction. You can use this to create a blur effect. All objects Unity renders in this injection point will not be in the color pyramid.

You can also use this injection point to draw some transparent objects that refract the whole scene, like water. | | BeforePostProcess | Color (Pyramid \| Read \| Write), Depth (Read \| Write), Normal and roughness (Read), Motion Vectors (Read) | The available buffers for this injection point contain all geometry in the frame that uses High Dynamic Range (HDR). | | AfterPostProcess | Color (Read \| Write), Depth (Read) | The available buffers for this injection point contain the final render of the scene, including post-process effects.

This injection point executes the available buffers after Unity applies any post-processing effects.

If you select this injection point, objects that use the depth buffer display jittering artifacts.

When you select this injection point for a [FullscreenCustom Pass](custom-pass-create-gameobject.md#full-screen-custom-pass), Unity assigns the camera color buffer as the target by default. | - -The purple boxes correspond to the injection points above in this diagram representing the pass layout in HDRP: -![](Images/HDRP-frame-graph-diagram.png) \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Double-Sided.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Double-Sided.md index 40edb4a4311..c188e48d858 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Double-Sided.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Double-Sided.md @@ -2,7 +2,7 @@ This setting controls whether The High Definition Render Pipeline (HDRP) renders both faces of the geometry of GameObjects using this Material, or just the front face. - ![](Images/DoubleSided1.png) + ![Half a cube. Two arrows represent the normals of the front faces, which point along the x-axis and y-axis. The opposite side of those faces are labelled as the back faces.](Images/DoubleSided1.png) This setting is disabled by default. Enable it if you want HDRP to render both faces of your geometry. When disabled, HDRP [culls](https://docs.unity3d.com/Manual/SL-CullAndDepth.html) the back-facing polygons of your geometry and only renders front-facing polygons. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Glossary.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Glossary.md index c2510eb6521..0a83106cb6c 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Glossary.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Glossary.md @@ -113,8 +113,6 @@ An anti-aliasing technique that uses frames from a history buffer to smooth edge A measure of the amount of light ([luminous flux](#LuminousFlux)) falling onto a given area. Differs from luminance because illuminance is a specific measurement of light whereas luminance describes visual perceptions of light. -![](Images/GlossaryLighting3.png) - #### luminous flux: diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Features.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Features.md index a6f354177fa..995cb82f790 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Features.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Features.md @@ -76,19 +76,19 @@ HDRP Shaders allow you to use the following features: ### Lit Shader -![](Images/HDRPFeatures-LitShader.png) +![A large group of spheres, each of which uses a different material.](Images/HDRPFeatures-LitShader.png) The Lit Shader is the default Shader in HDRP. Use the Lit Shader to create realistic Materials. The Lit Shader also includes options for effects including subsurface scattering, iridescence, and translucency. For more information, including the full list of Shader properties, see the [Lit Shader documentation](lit-material.md) and [Lit master stack](lit-master-stack-reference.md). ### Layered Lit Shader -![](Images/HDRPFeatures-LayeredLitShader.png) +![A close-up of a rocky, grassy landscape.](Images/HDRPFeatures-LayeredLitShader.png) The Layered Lit Shader combines a main Material with other tileable Materials to produce visuals with a similar quality to a single high-resolution texture, but in a way that's less resource intensive than a [Lit Shader](lit-material.md) using the single high-resolution Texture. For more information, including a full list of Shader properties, see the [Layered Lit Shader documentation](layered-lit-material-inspector-reference.md). ### Unlit Shader -![](Images/HDRPFeatures-UnlitShader.png) +![Glowing strip lights.](Images/HDRPFeatures-UnlitShader.png) The Unlit Shader allows you to create Materials that aren't affected by lighting. Unlit Shaders are perfect for visual effects. For more information, including a full list of Shader properties, see the [Unlit Shader documentation](unlit-shader.md) and [Unlit master stack](unlit-master-stack-reference.md). @@ -96,13 +96,13 @@ With the **Shadow Matte** option, you can have the surface receive shadow withou ### StackLit Shader -![](Images/HDRPFeatures-StackLitShader.png) +![A row of red sphere-like plastic shapes with reflective and opaque surfaces.](Images/HDRPFeatures-StackLitShader.png) The StackLit Shader is a higher quality than the Lit Shader, but more resource intensive. This Shader coats surfaces more accurately than the Lit Shader, and, unlike the Lit Shader, allows you to use multiple Material features like anisotropy, subsurface scattering iridescence, and hazy parametrization at the same time. For more information, including a full list of Shader properties, see the [Stacklit master stack](stacklit-master-stack-reference.md) ### Hair Shader -![](Images/HDRPFeatures-HairShader.png) +![Two views of a woman with realistic flowing hair.](Images/HDRPFeatures-HairShader.png) The Hair Shader is purpose-built to accurately render realistic and stylized hair in your Unity Project. You can use the following modes: - Physically based: Uses the Marschner lighting model with multiple scattering to improve the realism of light-colored hair. @@ -112,13 +112,13 @@ For more information, including a full list of Shader properties, see the [Hair ### Fabric Shader -![](Images/HDRPFeatures-FabricShader.png) +![A close-up of a sphere with a detailed fabric texture.](Images/HDRPFeatures-FabricShader.png) The Fabric Shader allows you to render realistic fabric Materials in HDRP. You can use the cotton wool or silk lighting model to create a wide variety of fabrics. For more information, including a full list of Shader properties, see [Create a fabric material](create-a-fabric-material.md). ### Eye Shader -![](Images/HDRPFeatures-EyeShader.png) +![Six floating eyeballs.](Images/HDRPFeatures-EyeShader.png) The Eye Shader allows you to render realistic eye Materials in HDRP. The Eye shader can use the following material types: - Eye: Uses a low resource-intensity method to calculate caustics. @@ -130,13 +130,13 @@ For more information, including a full list of Shader properties, see the [Eye S ### AxF Shader -![](Images/HDRPFeatures-AxFShader.png) +![Seven spheres floating against a forest backdrop, each with a different realistic surface texture.](Images/HDRPFeatures-AxFShader.png) The AxF Shader supports the [X-Rite AxF](https://www.xrite.com/axf) measured Material format. The AxF importer, available in [Unity Enterprise for Product Lifecylce](https://unity.com/products/unity-enterprise-product-lifecycle), automatically populates an AxF Material when it imports AxF Assets. For more information, including a full list of Shader properties, see the [AxF Shader documentation](AxF-material-inspector-reference.md). ### Decals -![](Images/HDRPFeatures-DecalShader.png) +![Rocky ground with two iridescent oil patches.](Images/HDRPFeatures-DecalShader.png) Use Decals to apply a separate texture to surfaces in your Scene. To apply a decal to a surface, you can either use the [Decal Projector component](decal-projector-reference.md) to project the decal onto the surface, or assign the decal shader directly to a Mesh and then place the Mesh on the surface. @@ -146,17 +146,17 @@ For more information, see [Decals](decals.md). ### Terrain Shader -![](Images/HDRPFeatures-TerrainShader.png) +![A mountain range.](Images/HDRPFeatures-TerrainShader.png) The Terrain Lit Shader is compatible with the built-in terrain system and supports up to eight layers in a single draw call. This Shader uses the same lighting model as the Lit Shader. For more information, including the full list of Shader properties, see the [Terrain Lit Shader documentation](terrain-lit-material.md). ### Compute Thickness -![](Images/HDRPFeatures-ComputeThickness.png) +![A detailed dragon statuette rendered using various techniques.](Images/HDRPFeatures-ComputeThickness.png) Compute Thickness is a screen-space pass that calculates the accumulated [thickness](Compute-Thickness.md) of objects in a specific Layer. HDRP calculates the optical path and overlap count, which you can use with [Subsurface Scattering](skin-and-diffusive-surfaces-subsurface-scattering.md) and [Refraction](Override-Screen-Space-Refraction.md). You can also use the overlap count to calculate compute thickness on non-closed or flat geometry like vegetation. Use the [HD Sample Buffer](https://docs.unity3d.com/Packages/com.unity.shadergraph@latest/index.html?preview=1&subfolder=/manual/HD-Sample-Buffer-Node.html) node to sample the thickness in a Shader Graph. ### Volumetric Materials -![VolumetricMaterials](Images/VolumetricMaterials.png) +![A plane with a layer of fog floating above it.](Images/VolumetricMaterials.png) In HDRP, you can control the density of fog in an area to create a Volumetric fog effect. Use a [local volumetric fog](create-a-local-fog-effect.md) volume override to set a 3D Mask texture or a shader graph that controls the fog color and the density. @@ -168,7 +168,7 @@ The Visual Effect Graph supports volumetric outputs, like the [Volume (Cone)](ht ### Light types -![](Images/HDRPFeatures-LightTypes.png) +![Three glowing strip lights in a dark, foggy industrial environment.](Images/HDRPFeatures-LightTypes.png) The HDRP light types use [physical light units](#PLU) to help you light your Scene in the most realistic way possible. To assist you in creating physically accurate lights, the [Light component](Light-Component.md) Inspector includes icons alongside the **Intensity** and **Temperature** properties. Each icon displays the real-world light source that the value of each property currently represents. Each icon is also a button which you can click to access a list of preset values that match real-world light sources. For lights to behave properly when using PLU, you need to respect HDRP unit convention (1 Unity unit equals 1 meter). The HDRP light types are: @@ -205,7 +205,7 @@ For more information, including the full list of light properties, see the [Ligh ### Rendering Layers -![](Images/HDRPFeatures-LightLayers.png) +![Three spheres, labelled to show that each receives light from different lights.](Images/HDRPFeatures-LightLayers.png) Rendering Layers are Layer Masks that you specify for Lights, Decals and Meshes. Lights only illuminate Meshes that are on the same Rendering Layer. You can also use Rendering Layers in the shadow map settings to decouple shadows from lighting. For more information on Rendering Layers, see the [Rendering Layers documentation](Rendering-Layers.md). @@ -213,20 +213,16 @@ You can use Rendering layers in the shadow map dropdown to control which GameObj ### IES Profiles and light cookies -![](Images/HDRPFeatures-IESProfiles.png) +![Four detailed dragon statuettes, each lit using a different type or color of spotlight.](Images/HDRPFeatures-IESProfiles.png) HDRP supports the Illuminating Engineering Society's (IES) file format for describing the distribution of light from a light source. HDRP supports the IES profile for Point, Spot (Cone, Pyramid, and Box), and rectangular Area [Lights](Light-Component.md). You can also mix the IES profile with [cookies](https://docs.unity3d.com/Manual/Cookies.html) and even use the profile and cookie mix for [light map baking](https://docs.unity3d.com/Manual/LightMode-Baked.html). ### Light Anchor -![](Images/LightAnchor0.png) - HDRP's [Light Anchor component](light-anchor.md) allows you to manipulate a light from the Main Camera view. ### Light Explorer -![](Images/LightExplorer.png) - HDRP adds options to the [Light Explorer](https://docs.unity3d.com/Manual/LightingExplorer.html) that you can use to select and edit the following light sources: - Directional lights - Point lights @@ -238,32 +234,32 @@ HDRP adds options to the [Light Explorer](https://docs.unity3d.com/Manual/Lighti ### Lens Flare, data-driven -![](Images/LensFlareSamples2.png) +![A lens flare from a bright sun viewed from space.](Images/LensFlareSamples2.png) Use HDRP's data-driven Lens Flare system provides a [lens flare asset](shared/lens-flare/lens-flare-asset.md) and a [lens flare component](shared/lens-flare/lens-flare-component.md) that you can attach to any GameObject. You can control each element of a Lens Flare individually. ### Lens Flare, Screen Space -![](Images/ScreenSpaceLensFlare-feature.png) +![A sports car in a town square at sunset, with lens flares from its metal bumper.](Images/ScreenSpaceLensFlare-feature.png) HDRP generates the Screen Space Lens Flare effect from screen information to create multiple types of flares based on the [Bloom](Post-Processing-Bloom.md) texture. This is useful for view-dependent bright spots (like specular reflection and overexposed areas) that don't have a defined position in world space. ### Reflection probes -![](Images/HDRPFeatures-ReflectionProbes.png) +![An office scene with highly realistic lighting.](Images/HDRPFeatures-ReflectionProbes.png) HDRP supports cubemap reflections that take surface smoothness into account. HDRP cubemap reflection optionally supports a fake distance based roughness. This helps you produce realistic reflections in your Scene in real time. You can control the reflection probe resolution for each probe. For more information, see [introduction to Reflection Probes](Reflection-Probes-Intro.md) ### Planar reflection probe -![](Images/PlanarReflectionFiltering-Feature.png) +![A floor with realistic wet patches.](Images/PlanarReflectionFiltering-Feature.png) HDRP supports Planar reflection probes that take surface smoothness into account. This allows you to create effects that mimic a shiny mirror or a wet floor. HDRP includes accurate filtering for planar reflection that's close to being physically based. For more information, see [Planar Reflection Probe](Planar-Reflection-Probe.md). ### Screen-space reflection and refraction -![](Images/HDRPFeatures-ScreenSpaceReflectionRefraction.png) +![A town square scene with a large puddle that reflects the buildings above, and the same scene with a close-up of a Reflection Probe.](Images/HDRPFeatures-ScreenSpaceReflectionRefraction.png) HDRP provides a screen-space solution for reflection and refraction. It uses the depth and color buffer of the screen to help simulate the path that light travels to the Camera and uses this to calculate accurate reflection and refraction. You can use this feature for transparent materials too, such as windows or water. For more information, see [screen-space reflection](Override-Screen-Space-Reflection.md) and [screen-space refraction](Override-Screen-Space-Refraction.md). To see how to setup refractive materials and understand the limitations of Screen Space Refraction, download the [Material Sample](HDRP-Sample-Content.md#material-samples) from the Package Manager window and open the **Transparency** scenes. @@ -280,7 +276,7 @@ HDRP includes a [screen space ambient occlusion](Override-Ambient-Occlusion.md) Screen space ambient occlusion in HDRP can apply a direction to indirect specular lighting. To improve the specular occlusion approximation, you can use a texture that contains bent normal information that corresponds to the light direction. ### Adaptive Probe Volumes -![](Images/HDRPFeatures-APV.png) +![A scene from the [Enemies](https://unity.com/demos/enemies) demo, with a woman sitting playing chess in a large ornate room.](Images/HDRPFeatures-APV.png) Adaptive Probe Volumes (APV) is a probe-based global illumination system that automatically places light probes based on the geometry density in your scene. APV features include: - Per-pixel probe selection and lighting. @@ -294,7 +290,7 @@ For more information, see [APV](probevolumes.md). ### Screen-space global illumination -![](Images/HDRPFeatures-SSGI.png) +![A stylized scene of a desk with plants and clay figures, lit warmly.](Images/HDRPFeatures-SSGI.png) HDRP supports screen-space global illumination (SSGI). SSGI is an algorithm that accesses the indirect diffuse lighting that the environment generates. It works in the same way as the [Screen Space Reflection](Override-Screen-Space-Reflection.md) in that it uses ray marching to calculate the result. @@ -311,8 +307,6 @@ HDRP allows you to calculate exposure using several methods. This includes: ##### Histogram exposure -![](Images/Exposure_Histogram.png) - HDRP's exposure implementation computes a histogram of the image which allows you to select high and low percentile values to discard. Discarding outlying values in the shadows or highlights helps to calculate a more stable exposure. For more information, see [Exposure](Override-Exposure.md). ##### Metering mode @@ -321,13 +315,13 @@ HDRP's exposure implementation includes a metering mask. This includes a texture ### Emission -![](Images/HDRPFeatures-Emission.png) +![A neon-lit street scene at night, with glowing signs.](Images/HDRPFeatures-Emission.png) HDRP Materials support light [emission](lit-material-inspector-reference.md#EmissionInputs), which allows you to make a Material into a self-illuminated visible source of light. Global illumination takes emission into account and you can use [physical light units](#PLU) to set the intensity based on real-world lights. ### Shadows -![](Images/HDRPFeatures-Shadows.png) +![The shadow of a tree cast on a forest floor.](Images/HDRPFeatures-Shadows.png) HDRP uses multiple methods to calculate shadows: @@ -355,7 +349,7 @@ To apply a tint to the shadow or the penumbra of the shadow: ### Ray tracing -![](Images/HDRPFeatures-RayTracing.png) +![A ray-traced scene of a sparsely-furnished modern room.](Images/HDRPFeatures-RayTracing.png) You can use ray tracing as an alternative to some screen space effects, shadowing techniques, and Mesh rendering techniques: @@ -379,7 +373,7 @@ You can use ray tracing as an alternative to some screen space effects, shadowin ### Sky -![](Images/HDRPFeatures-Sky.png) +![Clouds.](Images/HDRPFeatures-Sky.png) In HDRP, you set up the sky inside a [Volume](understand-volumes.md), so you can change sky settings, or even the type of sky itself, depending on the position of the Camera in the Scene. HDRP allows you to separate the visual sky from the sky that you use for environment lighting. HDRP includes the following built-in sky types for you to use in your Unity Project: @@ -391,7 +385,7 @@ HDRP is able to handle multiple skies seen by different Cameras. #### Backplate -![](Images/HDRPFeatures-HDRISky.png) +![A stylized car floating on a dirt road in a vast plain.](Images/HDRPFeatures-HDRISky.png) A backplate projects the bottom part of a [HDRI Sky](create-an-hdri-sky.md) onto a plane in one of the following shapes: - **Rectangle** @@ -403,7 +397,7 @@ To match the scale of the GameObjects in your Scene, change the Backplate's **Sc ### Cloud Layer -![](Images/HDRPFeatures-CloudLayer.png) +![A scene of a town square with a cloudy sky.](Images/HDRPFeatures-CloudLayer.png) In HDRP, you set up cloud layers inside a [Volume](Volumes.md), so you can change clouds settings, or even the type of clouds itself, depending on the position of the Camera in the Scene. HDRP allows you to separate the clouds in the visual sky from the clouds that you use for environment lighting. HDRP includes the following built-in cloud type for you to use in your Unity Project: @@ -411,13 +405,13 @@ In HDRP, you set up cloud layers inside a [Volume](Volumes.md), so you can chang ### Volumetric Clouds -![](Images/HDRPFeatures-VolumetricClouds.png) +![A snowy mountain range and lake with a cloudy sky at sunset.](Images/HDRPFeatures-VolumetricClouds.png) You can use a [Volume](understand-volumes.md) component to create volumetric clouds. Volumetric clouds physically exist inside a scene, HDRP does not project them on the HDRI sky. A camera can fly through volumetric clouds and volumetric clouds have accurate interactions with the sky, sun and fog. Volumetric clouds cast shadows on themselves and the ground using a Beer shadow map. For more information, refer to [Volumetric Clouds](create-realistic-clouds-volumetric-clouds.md). ### Fog -![](Images/HDRPFeatures-Fog.png) +![A futuristic cityscape with fog obscuring the distant buildings.](Images/HDRPFeatures-Fog.png) In HDRP, you set up fog inside a [Volume](understand-volumes.md) which means you can change fog settings or the fog type depending on the position of the Camera in the Scene. You can set the color of the fog yourself or use the color of the sky. HDRP fog affects Materials with both opaque and transparent surfaces. HDRP implements an exponential [fog](fog.md) with optional volumetric effects. @@ -425,7 +419,7 @@ In HDRP, you set up fog inside a [Volume](understand-volumes.md) which means you ### Water Surface -![](Images/Water2023-1.png) +![An ocean at sunset.](Images/Water2023-1.png) Use HDRP's water system to create and control realistic water surfaces. HDRP's water system includes the following features: - Multiple presets. @@ -446,13 +440,13 @@ For more information, refer to [Water system](water.md). ### Post-processing -![](Images/HDRPFeatures-PostProcessing.png) +![A scene of a fiery supernova, shown with post-processing effects both enabled and disabled.](Images/HDRPFeatures-PostProcessing.png) HDRP includes its own purpose-built implementation for post-processing to produce exceptionally high-quality graphics. You can use post-processing to apply full-screen filters and effects to the Camera to drastically improve the visuals of your Unity Project with little set-up time. For an overview on HDRP post-processing, see the [post-processing documentation](Post-Processing-Main.md). ### HDR Display Output -![](Images/HDRPFeatures-HDR.png) +![A sunset over a plane, with a color gamut displaying the range of colors used.](Images/HDRPFeatures-HDR.png) You can output a HDRP scene to high dynamic range (HDR) displays and customize the output in the following ways: @@ -464,13 +458,13 @@ For more information see the [High Dynamic Range Output documentation](HDR-Outpu ### Accumulation motion blur -![](Images/path_tracing_recording-Feature.png) +![A piece of wood falling, with motion blur.](Images/path_tracing_recording-Feature.png) HDRP includes a recording API that you can use to render effects like high-quality accumulation motion blur. This technique combines information from multiple intermediate sub-frames to create a converged frame. Use this API to extract the converged frame and perform further processing or save it to disk. For information about this feature, and some example scripts, see [Multiframe rendering and accumulation](Accumulation.md). ### Anti-Aliasing -![](Images/HDRPFeatures-AntiAliasing.png) +![A futuristic interior, shown with anti-aliasing both enabled and disabled.](Images/HDRPFeatures-AntiAliasing.png) HDRP includes the following [antialiasing](Anti-Aliasing.md) methods to help you remove aliasing effects with performance and quality in mind: @@ -485,28 +479,24 @@ HDRP uses a physically based Camera system that works seamlessly with the other ### Custom Post-processing -![Posterize](Images/HDRPFeatures-CustomPostProcess.png) +![A man in a forest with a posterize effect applied.](Images/HDRPFeatures-CustomPostProcess.png) HDRP allows you to add your own custom post processes integrated with the volume framework. You can inject them after opaque and sky object, before the [temporal antialiasing](Anti-Aliasing.md#TAA) pass, before built-in post processes or after built-in post processes. For more information, see the [Custom Post-processing documentation](Custom-Post-Process.md). ### Custom Passes -![HDRPFeatures-CustomPass](Images/HDRPFeatures-CustomPass.gif) - Use a Custom Pass to inject shaders and C# scripts at certain points inside the render pipeline. You can use a Custom Pass to draw objects, override the rendering properties of objects in your scene, perform fullscreen passes and read some camera buffers like depth, color, normal or motion vectors. You can also use this Camera override to render some GameObjects with a different field of view, like arms in a first-person application. For more information, see [Custom Pass](Custom-Pass.md). Use the [Custom Pass API](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest?subfolder=/api/UnityEngine.Rendering.HighDefinition.CustomPassUtils.html) to render GameObjects from another point of view, like a disabled camera, within the rendering of your main Camera. You can use this API to render `Depth`, `Normal`, and `Tangent` into an `RTHandle`. ### High Quality Line Rendering -![img](Images/HQLines-Hero.png) +![A lion cub with realistic fur, climbing on another lion.](Images/HQLines-Hero.png) High Quality Line Rendering allows you to render hair, wires, and other line-based geometry with high quality anti-aliasing and transparency. For more information, refer to [High Quality Line Rendering](Override-High-Quality-Lines.md). ### Custom Pass AOV Export -![img](Images/aov_example.png) - This feature allows you to export arbitrary data from custom pass injection points using an extension of the Arbitrary Output Variables (AOV) API in HDRP. An example use-case is for exporting “Object IDs” that are rendered with a custom pass. For information about the feature and example scripts, see the [AOV documentation](AOVs.md). ### Fullscreen Shader Graph @@ -515,7 +505,7 @@ Use the Fullscreen Shader Graph to create custom post process and fullscreen cus ### Custom Render Texture in Shader Graph -![CustomRenderTextureRipples](Images/CustomRenderTextureRipples.png) +![Light ripples in water.](Images/CustomRenderTextureRipples.png) In HDRP, you can use [Custom Render Textures](https://docs.unity3d.com/Manual/class-CustomRenderTexture.html) as a Shader Graph target to create static or dynamic textures. Custom Render Textures support multiple texture dimensions. For example, you can use 3D textures with Local Volumetric Fog, and Cubemaps in the HDRI sky. @@ -526,7 +516,7 @@ You can also create complex effects like dynamic ripples and snow deformation wn Use the [Canvas ShaderGraph](canvas-material.md) to create custom [UGUI user interface elements](https://docs.unity3d.com/Packages/com.unity.ugui@1.0/manual/UICanvas.html). ### Graphics Compositor -![](Images/Compositor-HDRPTemplateWithLogo_Feature.png) +![A sample scene of a workshop, with the Unity logo composited on top.](Images/Compositor-HDRPTemplateWithLogo_Feature.png) Use the Graphics Compositor to compose images and videos with 3D content into a final frame in real-time, without an external compositing tool. @@ -544,7 +534,7 @@ For information, see [HDRP Compositor](graphics-compositor.md). ### Path-traced depth of field -![](Images/Path-traced-DoF-Feature.png) +![Two paint pots with a depth of field effect that makes surfaces increasingly blurry towards and away from the camera.](Images/Path-traced-DoF-Feature.png) HDRP includes a depth of field mode for producing path-traced images with high-quality defocus blur. This mode can use multiple layers of transparency and doesn't produce any artifacts. However, path tracing can cause some noise. To fix noise artefacts, increase the sample count or using an external denoising tool. For more information about, see [Depth-of-field](Post-Processing-Depth-of-Field.md). @@ -554,13 +544,13 @@ HDRP includes a recording API which you can use to render converged path-traced ### Path-traced sub-surface scattering -![](Images/Path-traced-SSS-Feature.png) +![A close-up of a detailed dragon statuette made of a translucent green material.](Images/Path-traced-SSS-Feature.png) Path tracing supports subsurface scattering (SSS), using a random walk approach. To use it, enable path tracing and set up SSS in the same way as you would for HDRP materials. For information on SSS in HDRP, see [subsurface scattering](skin-and-diffusive-surfaces-subsurface-scattering.md). ### Path-traced fog -![](Images/Path-traced-fog-Feature.png) +![A close-up of a detailed dragon statuette in fog.](Images/Path-traced-fog-Feature.png) Path tracing in HDRP supports anisotropic fog absorption. To use this feature enable path tracing and set up fog in HDRP. For information, refer to [fog](fog.md). @@ -570,8 +560,6 @@ Path tracing works with [decals](decals.md). For more information, refer to [Und ### Materials support -![](Images/Path-traced-materials-Feature.png) - Path tracing can render the following rasterization engine [Materials](#Material): - Lit @@ -585,7 +573,7 @@ When you enable path tracing, objects that use non-HDRP Materials won't appear i ### Denoising support -![](Images/Path-Tracing-Denoise-banner.png) +![Vegetation in a display case in a room, shown with denoising both enabled and disabled.](Images/Path-Tracing-Denoise-banner.png) HDRP supports denoising for frames that use path tracing. You can choose from the following denoising libraries: - Optix Denoiser. @@ -597,19 +585,17 @@ HDRP supports denoising for frames that use path tracing. You can choose from th ### Color checker -![](Images/colorchecker.png) +![A scene showing the different modes of the Color Checker Tool. Each mode displays a different palette as spheres or squares.](Images/colorchecker.png) Use the Color Checker tool to check the calibration of lighting and post processing. To open the color checker tool, go to **GameObject** > **Rendering** > **Color Checker Tool**. HDRP doesn't save any changes you make in the color checker. ### Light placement tool -![](Images/LightPlacementTool.png) - Use the Light Placement Tool to look through a light and use the camera movement controls to move the light around the scene. To enter this mode select a light GameObject and select the Light Placement Tool button in the Tools Panel. For more information, refer to [Light placement tool](lights-placement-tool.md) ### LookDev -![](Images/HDRPFeatures-LookDev.png) +![The Look Dev tool in split-screen view, with the scene on the left side, and the selection of environments on the right side.](Images/HDRPFeatures-LookDev.png) The LookDev is a viewer that allows you to import and display Assets in a consistent lighting environment. Use the LookDev window to validate outsourced Assets or to showcase your own created Asset with HDRP. For more information on the LookDev, including a description of how to use it, see the [LookDev documentation](test-and-debug-materials-in-different-lighting-conditions-look-dev.md). ### Render Pipeline Wizard diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Sample-Content.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Sample-Content.md index fef1813e34c..c2c5fafa957 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Sample-Content.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Sample-Content.md @@ -28,7 +28,7 @@ This Sample includes various examples of lit and unlit particle effects. ## Material samples -![Material Samples](Images/MaterialSamples.png) +![The Materials sample scene. A display of various materials, each with a description panel.](Images/MaterialSamples.png) This Sample includes various examples of Materials. It includes Materials that use the [Lit Shader](lit-material.md), [Fabric Master Stack](fabric-master-stack-reference.md), [Hair Master Stack](hair-master-stack-reference.md), [Eye Shader](eye-master-stack-reference.md) and [Decal Master Stack](decal-master-stack-reference.md). The included Materials use effects such as subsurface scattering, displacement, and anisotropy. The **MaterialSamples** Scene requires Text Mesh Pro to display the text explanations. @@ -38,14 +38,14 @@ In the **Eye** Scene, the eye examples use a carefully designed mesh with a part ## Transparent samples -![Transparent Samples](Images/TransparentSamples.png) +![The Transparent samples scene. A display of various transparent materials, each with a description panel.](Images/TransparentSamples.png) In the Transparency scene, the examples contain information on how to setup properly transparents in your projects using different rendering methods (Rasterization, Ray Tracing, Path Tracing). To take advantage of all the content of this section, a GPU that supports [Ray Tracing](Ray-Tracing-Getting-Started.md) is needed. ## Lens Flare samples -![Lens Flare Samples](Images/LensFlareSamples.png) +![A lens flare.](Images/LensFlareSamples.png) The [Lens Flare](shared/lens-flare/lens-flare-component.md) samples include the following examples that you can use in your project: - Lens Flare Assets. @@ -56,7 +56,6 @@ The [Lens Flare](shared/lens-flare/lens-flare-component.md) samples include the ## Volumetric samples -![Volumetric Samples](Images/VolumetricSamples.png) The volumetric samples include a scene that contains multiple examples of [volumetric fog](create-a-local-fog-effect.md). This scene includes the following: - 3D textures. @@ -64,7 +63,7 @@ The volumetric samples include a scene that contains multiple examples of [volum - Fog Volume Shader Graph examples. ## Fullscreen samples -![Fullscreen Samples](Images/FullscreenSamples.png) +![A scene with a group of simple geometric shapes, rendered with white edges, a Sobel filter, and using a different color for each object.](Images/FullscreenSamples.png) This sample includes examples on how to create a [Fullscreen Shader](create-a-fullscreen-material.md) and use it with a Custom Pass, Custom Post Process and Custom Render Target. The sample scene includes prefabs for the following effects: @@ -74,7 +73,7 @@ This sample includes examples on how to create a [Fullscreen Shader](create-a-fu ## Water samples -![](Images/Water_samples.png) +![Water sample scenes. A swimming pool, a glacier with a waterfall, and a small island.](Images/Water_samples.png) The Water samples contain the following scenes you can use to learn about HDRP's [Water](water.md) features: @@ -86,7 +85,7 @@ The Water samples contain the following scenes you can use to learn about HDRP's ## Environment samples -![](Images/environment-samples.png) +![A mountaintop viewed at night with a starry sky, and during the day with white clouds.](Images/environment-samples.png) This sample puts multiple environment effects together in the same scene with different lighting conditions. The scene includes examples focusing on the following effects: diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/IES-Importer.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/IES-Importer.md index f0240ece106..ad0b332f612 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/IES-Importer.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/IES-Importer.md @@ -2,8 +2,6 @@ The High Definition Render Pipeline (HDRP) includes an importer to handle the .ies file format. When you add an [IES profile](IES-Profile.md) to your project, the IES importer Inspector provides information and customization options for the internally used textures. -![](Images/IESImporter1.png) - When you apply the import settings, the importer generates a [Light](Light-Component.md) Prefab as a sub-asset of the IED profile. You can drag the Prefab into the Scene view or Hierarchy to create an instance of a Light that uses the IES profile. ### Properties diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/IES-Profile.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/IES-Profile.md index 52b9d088342..04079a82426 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/IES-Profile.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/IES-Profile.md @@ -2,7 +2,7 @@ IES profiles describe how light spreads for a given direction. They are similar to [light cookies](https://docs.unity3d.com/Manual/Cookies.html) in that they use a multiplier mask to achieve this goal. The Unity IES profile supports Point, Spot (Cone, Pyramid, Box), and Area (Rectangular) [Lights](Light-Component.md). -![](Images/HDRPFeatures-IESProfile.png) +![Different types of lights in Unity.](Images/HDRPFeatures-IESProfile.png) The main benefit of using IES profiles over cookies is that light manufacturers provide the profiles. This means that they are physically accurate to the real-world light they represent and also artists do not need to dedicate time authoring them. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Area_Materials.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Area_Materials.png deleted file mode 100644 index edb4211daa0..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Area_Materials.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ContactShadowLightComponent.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ContactShadowLightComponent.png deleted file mode 100644 index fc510c9fe3f..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ContactShadowLightComponent.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Exposure_Histogram.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Exposure_Histogram.png deleted file mode 100644 index 5e79f6802aa..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Exposure_Histogram.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/FS_SampleTex2DArray.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/FS_SampleTex2DArray.png deleted file mode 100644 index 3fff9be2bf7..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/FS_SampleTex2DArray.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/FidelityFX-Menu.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/FidelityFX-Menu.png deleted file mode 100644 index 38938f77323..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/FidelityFX-Menu.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/HDRPFeatures-CustomPass.gif b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/HDRPFeatures-CustomPass.gif deleted file mode 100644 index 62e72392886..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/HDRPFeatures-CustomPass.gif and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/HDSampleBuffer.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/HDSampleBuffer.png deleted file mode 100644 index 42f7f619f25..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/HDSampleBuffer.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/IESImporter1.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/IESImporter1.png deleted file mode 100644 index 6e90fee7e6d..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/IESImporter1.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/LightExplorer.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/LightExplorer.png deleted file mode 100644 index 1051157ae64..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/LightExplorer.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/LightPlacementTool.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/LightPlacementTool.png deleted file mode 100644 index f9cdebde618..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/LightPlacementTool.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingFilmGrain1.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingFilmGrain1.png deleted file mode 100644 index 91c3be7c84d..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingFilmGrain1.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingPaniniProjection1.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingPaniniProjection1.png deleted file mode 100644 index 8b846505d85..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingPaniniProjection1.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingPropagatingNaNsRenderDoc.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingPropagatingNaNsRenderDoc.png deleted file mode 100644 index 5bc2e0501b0..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingPropagatingNaNsRenderDoc.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingShadowsMidtonesHighlights1.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingShadowsMidtonesHighlights1.png deleted file mode 100644 index 2fc2ac87a64..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingShadowsMidtonesHighlights1.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingSplitToning1.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingSplitToning1.png deleted file mode 100644 index 606a3505e58..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingSplitToning1.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingWhiteBalance1.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingWhiteBalance1.png deleted file mode 100644 index ee776368763..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Post-processingWhiteBalance1.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Shadows1.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Shadows1.png deleted file mode 100644 index a5c98a79aef..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/Shadows1.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/SpecularOcclusion.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/SpecularOcclusion.png deleted file mode 100644 index 09292819719..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/SpecularOcclusion.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/UseMipBias.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/UseMipBias.png deleted file mode 100644 index a4b18e2e3de..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/UseMipBias.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/environment-plane-settings.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/environment-plane-settings.jpg deleted file mode 100644 index 618b2938bab..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/environment-plane-settings.jpg and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ghost-beast.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ghost-beast.png deleted file mode 100644 index 7df7f6f2371..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ghost-beast.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/gpu-occlusion-culling-ux.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/gpu-occlusion-culling-ux.png deleted file mode 100644 index 5e8961322c1..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/gpu-occlusion-culling-ux.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/samples-materials.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/samples-materials.png deleted file mode 100644 index 845b9093e53..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/samples-materials.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/shared/lens-flare/lensflare-ring.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/shared/lens-flare/lensflare-ring.png deleted file mode 100644 index a0d7757d38f..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/shared/lens-flare/lensflare-ring.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/stp-comparison.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/stp-comparison.png deleted file mode 100644 index 92fbd5ac96c..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/stp-comparison.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/stp-upscaler-ux.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/stp-upscaler-ux.png deleted file mode 100644 index 840084b3de8..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/stp-upscaler-ux.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/visualenvironment-renderingspace.png b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/visualenvironment-renderingspace.png deleted file mode 100644 index 5c1abfd746b..00000000000 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/visualenvironment-renderingspace.png and /dev/null differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Light-Component.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Light-Component.md index 34c8bac6f15..c9733175a8b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Light-Component.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Light-Component.md @@ -2,7 +2,7 @@ Use the Light component to create light sources in your [Scene](https://docs.unity3d.com/Manual/CreatingScenes.html). The Light component controls the shape, color, and intensity of the light. It also controls whether or not the Light casts shadows in your Scene, and more advanced settings. -![](Images/HDRPFeatures-LightTypes.png) +![Lights in a scene.](Images/HDRPFeatures-LightTypes.png) ## Create Lights diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Mask-Map-and-Detail-Map.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Mask-Map-and-Detail-Map.md index 5534281d2ea..d60fc914659 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Mask-Map-and-Detail-Map.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Mask-Map-and-Detail-Map.md @@ -23,7 +23,7 @@ To create a mask map, create a linear composited map in a photo editor, using th The following example image demonstrates the individual components of a full mask map. -![](Images/MaskMapAndDetailMap2.png) +![A full mask map, with the metallic texture in the R channel, the ambient occlusion texture in the G channel, the detail mask in the B channel, and the smoothness in the A channel.](Images/MaskMapAndDetailMap2.png) @@ -42,7 +42,7 @@ To create a detail map, create a linear composited map in a photo editor, using The following example image demonstrates the individual components of a full detail map. -![](Images/MaskMapAndDetailMap3.png) +![A full detail map, with the desaturated albedo texture in the R channel, the red channel of the normal map in the G channel, the green channel of the normal map in the A channel, and smoothness in the B channel.](Images/MaskMapAndDetailMap3.png) ### Desaturated albedo (red channel) @@ -50,7 +50,7 @@ The red channel represents the albedo variation. It makes the underlying materia The image below shows the impact of the detail albedo on the final color. HDRP calculates color interpolation in sRGB space. -![](Images/DetailMap-red.png) +![A red material with a gradient detail map. When Detail Albedo Scale is 1, the two textures create a smooth red gradient. When Detail Albedo Scale is 2, the gradient is banded.](Images/DetailMap-red.png) ### Smoothness (blue channel) @@ -58,8 +58,8 @@ The blue channel represents the smoothness variation and HDRP calculates it the The image below shows the impact of the detail smoothness on the final color. -![](Images/DetailMap-blue.png) +![A material of smoothness 0.5 with a gradient detail map. When Detail Smoothness Scale is 1, the two textures create a smoothness gradient. When Detail Smoothness Scale is 2, the gradient transitions faster.](Images/DetailMap-blue.png) The following example shows the same gradient detail map as above, used by three Lit materials with different smoothness values. -![](Images/DetailMap-smoothness.png) +![Three squares with smoothness values of 0, 0.5, and 1.0. As the smoothness value increases, more of the right side of the square reflects the scene.](Images/DetailMap-smoothness.png) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Material-Type.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Material-Type.md index e67490f389f..5d64aec6bc8 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Material-Type.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Material-Type.md @@ -11,7 +11,7 @@ The **Material Type** property allows you to give your Material a type, which al | **Specular Color** | Applies the Specular Color workflow to the Material. Use this **Material Type** to create Materials with a coloured specular highlight. This is similar to the [built-in Specular Shader](https://docs.unity3d.com/Manual/StandardShaderMaterialParameterSpecular.html). | | **Translucent** | Applies the Translucent workflow to the Material. Use this **Material Type**, and a thickness map, to simulate a translucent object, such as a plant leaf. In contrast to **Subsurface Scattering** Materials, **Translucent** Materials do not blur light that transmits through the Material. | -![](Images/MaterialType1.png) +![A detailed dragon statuette, rendered three times. The first dragon is iridescent, the second is a translucent green material, and the third has subsurface scattering.](Images/MaterialType1.png) ## Properties diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Diffusion-Profile.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Diffusion-Profile.md index 0887d6e17e4..a298604ce70 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Diffusion-Profile.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Diffusion-Profile.md @@ -13,8 +13,6 @@ To add a **Diffusion Profile List** to a Volume: ## Properties -![](Images\Override-DiffusionProfile1.png) - [!include[](snippets/Volume-Override-Enable-Properties.md)] | **Property** | **Description** | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Micro-Shadows.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Micro-Shadows.md index 08f2193adc2..83b9a762734 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Micro-Shadows.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Micro-Shadows.md @@ -6,7 +6,7 @@ HDRP uses the details from the normal map, the ambient occlusion map, and specul In this image, the different layers of details in the Material shadow each other. -![](Images/OverrideMicroShadows1.png) +![A ground texture with micro shadows enabled and disabled. With micro shadows enabled, the twigs and moss cast more realistic-looking shadows.](Images/OverrideMicroShadows1.png) Micro shadows at 0.85 opacity on a mossy ground material viewed from the top. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Screen-Space-Refraction.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Screen-Space-Refraction.md index d3cb1506ed6..ff8c0086c72 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Screen-Space-Refraction.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Override-Screen-Space-Refraction.md @@ -15,7 +15,7 @@ To use this setting, you must enable it on a [Volume](understand-volumes.md), as 1. In the Scene or Hierarchy view, select a GameObject that contains a Volume component. 2. In the Inspector for this object, select **Add Override** > **Lighting** > **Screen Space Refraction**. -![](Images/screen-weight-distance.png)
+![Comparison image of two outdoor scenes. In the first image, a refraction effect is visible. In the second image, the colours appear normal.](Images/screen-weight-distance.png)
In the refractive cube on the left of the screen, **Screen Weight Distance** affects the edges of the screen where HDRP fades from using the color buffer to using Reflection Probes. ## Properties diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Physical-Light-Units.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Physical-Light-Units.md index 015b5a03685..4bfc60aabac 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Physical-Light-Units.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Physical-Light-Units.md @@ -2,7 +2,7 @@ HDRP uses Physical Light Units (PLU) for its lighting. These units are based on real-life light measurements, like those you see on light bulb packaging or a photographic light meter. Note that for lights to behave properly when using PLU, you need to respect HDRP unit convention (1 Unity unit equals 1 meter). -![](Images/HDRPTemplate-Banner1.png) +![A room with lights.](Images/HDRPTemplate-Banner1.png) ## Units diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Depth-of-Field.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Depth-of-Field.md index de6ba424ce8..cb3ce675995 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Depth-of-Field.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Depth-of-Field.md @@ -17,9 +17,9 @@ Depth Of Field includes [advanced properties](https://docs.unity3d.com/Packages/ ## Properties | **Property** | **Description** | -| ------------------ | ------------------------------------------------------------ | -| **Focus Mode** | Use the drop-down to select the mode that HDRP uses to set the focus for the depth of field effect.
• **Off**: Select this option to disable depth of field.
• **Physical Camera**: Select this option to use the physical [Camera](hdrp-camera-component-reference.md) to set focusing properties for the depth of field effect. For information on what Camera properties affect depth of field, see [Physical Camera settings](#PhysicalCameraSettings).
• **Manual Ranges**: Select this option to use custom values to set the near and far range of the depth of field effect. | -| **Focus Distance Mode** | Use the drop-down to select where the focus distance is specified.
• **Volume**: Reads the focus distance from the Volume.
• **Camera**: Reads the focus distance from the physical camera.
This property only appears when you select **Physical Camera** from the **Focus Mode** drop-down. | +|-|-| +| **Focus Mode** | Use the drop-down to select the mode that HDRP uses to set the focus for the depth of field effect. The options are:
  • **Off**: Select this option to disable depth of field.
  • **Physical Camera**: Select this option to use the physical [Camera](hdrp-camera-component-reference.md) to set focusing properties for the depth of field effect. For more information about what Camera properties affect depth of field, refer to [Physical Camera settings](#PhysicalCameraSettings).
  • **Manual Ranges**: Select this option to use custom values to set the near and far range of the depth of field effect.
| +| **Focus Distance Mode** | Use the drop-down to select where the focus distance is specified. The options are:
  • **Volume**: Reads the focus distance from the Volume.
  • **Camera**: Reads the focus distance from the physical camera.
This property only appears when you select **Physical Camera** from the **Focus Mode** drop-down. | | **Focus Distance** | Set the distance to the focus plane from the Camera.
This property only appears when you select **Volume** from the **Distance Mode** drop-down. | ### Near Blur @@ -52,12 +52,12 @@ Here is a list of the physical [Camera](hdrp-camera-component-reference.md) prop | **Blades Count** | This determines the shape of the bokeh. For more information on the effect this property has, see the example below. | | **Curvature** | Determines how much of the blades are visible. Use this to change the roundness of bokeh in the blur. For more information on the effect this property has, see the example below. | -This example shows how the **Blade Count** and **Curvature** properties affect the shape of the bokeh: +![This example shows how the **Blade Count** and **Curvature** properties affect the shape of the bokeh. On the left side, there's a five blade iris that's slightly open, producing a pentagonal bokeh. On the right side, there's a five blade iris that's wide open, producing a circular bokeh.](Images/Post-ProcessingDepthofField2.png) -* On the left side, there is a five blade iris that's slightly open; producing a pentagonal bokeh. -* On the right side, there is a five blade iris that's wide open; producing a circular bokeh. +This example shows how the **Blade Count** and **Curvature** properties affect the shape of the bokeh: -![](Images/Post-ProcessingDepthofField2.png) +* On the left side, there is a five blade iris that's slightly open, producing a pentagonal bokeh. +* On the right side, there is a five blade iris that's wide open, producing a circular bokeh. ## Path-traced depth of field @@ -67,4 +67,4 @@ Path-traced depth of field produces images without any artifacts, apart from noi HDRP computes path-traced depth of field at full resolution and ignores any quality settings from the Volume. -![](Images/Path-traced-DoF.png) +![Two paint pots with a depth of field effect that makes surfaces increasingly blurry towards and away from the camera.](Images/Path-traced-DoF.png) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Film-Grain.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Film-Grain.md index 031c2f97e4c..55bd102f059 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Film-Grain.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Film-Grain.md @@ -13,8 +13,6 @@ The Film Grain effect simulates the random optical texture of photographic film, ## Properties -![](Images/Post-processingFilmGrain1.png) - | **Property** | **Description** | | ------------- | ------------------------------------------------------------ | | **Type** | Use the drop-down to select the type of grain to use. You can select from a list of presets that HDRP includes, or select **Custom** to provide your own grain Texture. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Main.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Main.md index d993c49c8ad..ed64fc4af5b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Main.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Main.md @@ -8,8 +8,8 @@ Post-processing effects in HDRP use the [Volume](understand-volumes.md) framewor The images below display a Scene with and without HDRP post-processing. -![](Images/PostProcessingMain1.png) +![A scene of a human without post-processing effects.](Images/PostProcessingMain1.png) Without post-processing. -![](Images/PostProcessingMain2.png) +![A scene of a human with post-processing effects.](Images/PostProcessingMain2.png) With post-processing. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Panini-Projection.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Panini-Projection.md index f6d31c9823e..a78340e5f73 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Panini-Projection.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Panini-Projection.md @@ -15,8 +15,6 @@ For more information about panini projection, see PanoTools’ wiki documentatio ## Properties -![](Images/Post-processingPaniniProjection1.png) - | **Property** | **Description** | | --------------- | ------------------------------------------------------------ | | **Distance** | Use the slider to set the strength of the distortion. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Propagating-NaNs.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Propagating-NaNs.md index 0b3f1cc5055..b13ea80a0ee 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Propagating-NaNs.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Propagating-NaNs.md @@ -18,13 +18,13 @@ A commonly reported issue in HDRP is that [bloom](Post-Processing-Bloom.md) gene For example, see a NaN caused by a material issue that spreads to the whole scene when HDRP calculates bloom: -![](Images/Post-processingPropagatingNaNsExample1.png) +![A small black dot is visible on a sphere.](Images/Post-processingPropagatingNaNsExample1.png) -![](Images/Post-processingPropagatingNaNsExample2.png) +![A black square is visible on a sphere.](Images/Post-processingPropagatingNaNsExample2.png) -![](Images/Post-processingPropagatingNaNsExample3.png) +![A large black square is visible on a sphere.](Images/Post-processingPropagatingNaNsExample3.png) -![](Images/Post-processingPropagatingNaNsExample4.png) +![The entire screen is black and the sphere is no longer visible.](Images/Post-processingPropagatingNaNsExample4.png) A similar issue occurs when HDRP generates color pyramids for use by features such as [screen-space reflection](Override-Screen-Space-Reflection.md), [screen-space refraction](Override-Screen-Space-Refraction.md), and distortion. @@ -57,9 +57,6 @@ After you capture a frame, RenderDoc can display pixels with a Nan or Inf value 1. In the Texture Viewer, open the **Overlay** drop-down. 2. Select **Nan or Inf/-ve Display**. -![](Images/Post-processingPropagatingNaNsRenderDoc.png) - - If the Nan or Inf values are still difficult to find: 1. Look at the bloom dispatches to see where bloom propagates the Nan or Inf pixels from. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Shadows-Midtones-Highlights.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Shadows-Midtones-Highlights.md index f29971137bc..8df8f634438 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Shadows-Midtones-Highlights.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Shadows-Midtones-Highlights.md @@ -13,8 +13,6 @@ The **Shadows Midtones Highlights** effect separately controls the shadows, midt ## Properties -![](Images/Post-processingShadowsMidtonesHighlights1.png) - | **Property** | **Description** | | -------------- | ------------------------------------------------------------ | | **Shadows** | Use this to control the shadows. Use the trackball to select the color HDRP should shift the hue of the shadows to. Use the slider to offset the color lightness of the trackball color. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Split-Toning.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Split-Toning.md index efd0ad51a63..e2814023d5d 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Split-Toning.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-Split-Toning.md @@ -15,8 +15,6 @@ This effect tints different areas of the image based on luminance values, to hel When you adjust the color in the color picker for each property, you should only adjust the **Hue** and **Saturation**. **Value** also changes the overall image brightness. -![](Images/Post-processingSplitToning1.png) - | **Property** | **Description** | | -------------- | ------------------------------------------------------------ | | **Shadows** | Use the color picker to select the color that HDRP uses for tinting shadows. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-White-Balance.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-White-Balance.md index 68a99d0a738..bc3de908af3 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-White-Balance.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Post-Processing-White-Balance.md @@ -13,8 +13,6 @@ The White Balance component applies a white balance effect that removes unrealis ## Properties -![](Images/Post-processingWhiteBalance1.png) - | **Property** | **Description** | | --------------- | ------------------------------------------------------------ | | **Temperature** | Use the slider to set the white balance to a custom color temperature. Higher values result in a warmer color temperature and lower values result in a colder color temperature. See [Wikipedia: Color balance](https://en.wikipedia.org/wiki/Color_balance) for more information about color temperature. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Contact-Shadows.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Contact-Shadows.md index e15d5faf8a8..8a4d3965c84 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Contact-Shadows.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Contact-Shadows.md @@ -2,17 +2,14 @@ Ray-Traced Contact Shadows is a ray tracing feature in the High Definition Render Pipeline (HDRP). It's an alternative to HDRP's [Contact Shadow](Override-Contact-Shadows.md) technique that uses a more accurate ray-traced solution that can use off-screen data. -![](Images/RayTracedContactShadow1.png) +![A stone temple scene without contact shadows. Foliage and dark corners have few shadows.](Images/RayTracedContactShadow1.png)
+A stone temple scene without contact shadows. Foliage and dark corners have few shadows. -**Without Contact shadows** +![A stone temple scene with contact shadows. Foliage and dark corners have more shadows.](Images/RayTracedContactShadow2.png)
+A stone temple scene with contact shadows. Foliage and dark corners have more shadows. -![](Images/RayTracedContactShadow2.png) - -**Contact shadows** - -![](Images/RayTracedContactShadow3.png) - -**Ray-traced contact shadows** +![A stone temple scene with ray-traced contact shadows. Foliage and dark corners have even more shadows.](Images/RayTracedContactShadow3.png)
+A stone temple scene with ray-traced contact shadows. Foliage and dark corners have even more shadows. For information about ray tracing in HDRP, and how to set up your HDRP Project to support ray tracing, see [Getting started with ray tracing](Ray-Tracing-Getting-Started.md). @@ -27,5 +24,3 @@ This feature is an alternative to the [Contact Shadows](Override-Contact-Shadows 3. HDRP calculates ray-traced contact shadows on a per-light basis. This means you need to enable it for each light. 4. Select a [Light](Light-Component.md) and, in the Inspector, go to **Shadows > Contact Shadows** and tick the **Enable** checkbox. This exposes the **Ray Tracing** property. 5. Enable the **Ray Tracing** checkbox. - -![](Images/ContactShadowLightComponent.png) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Shadows.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Shadows.md index 844eaa469be..ae7bc9b52a9 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Shadows.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Shadows.md @@ -41,29 +41,29 @@ If a light is has **Shadowmask Mode** set to **Shadowmask**, then ray traced sha Ray-traced shadows offer an alternative to the cascade shadow map that Directional Lights use for opaque GameObjects. -![](Images/RayTracedShadows1.png) +![A scene with a Directional Light cascade shadow map.](Images/RayTracedShadows1.png) -**Directional Light cascade shadow map** +Directional Light cascade shadow map -![](Images/RayTracedShadows2.png) +![A scene with a Directional Light cascade shadow map, where the Sun Angle is 0. The shadow details are sharp and visible.](Images/RayTracedShadows2.png) -**Ray-traced Directional Light shadows (Sun Angle = 0)** +Ray-traced Directional Light shadows (Sun Angle = 0) -![](Images/RayTracedShadows3.png) +![A scene with a Directional Light cascade shadow map, where the Sun Angle is 0.53 which is the angle of the Sun as seen from Earth. The shadows are visible and the details are faint.](Images/RayTracedShadows3.png) -**Ray-traced Directional Light shadows (Sun Angle = 0.53, the angle of the Sun as seen from Earth)** +Ray-traced Directional Light shadows (Sun Angle = 0.53, the angle of the Sun as seen from Earth) Ray-traced shadows allow for transparent and transmissive GameObjects, lit by Directional Lights, to cast colored shadows. **Note**: When you use a Directional Light with a transmissive GameObject, HDRP displays rasterized shadows on the reverse side of the GameObject. -![](Images/RayTracedShadows9.png) +![Three different colored GameObjects with ray traced Directional Light colored shadows of the corresponding colors.](Images/RayTracedShadows9.png) -**Ray-traced Directional Light shadows with colored shadows** +Ray-traced Directional Light shadows with colored shadows -![](Images/RayTracedShadows10.png) +![Three different colored GameObjects with ray traced Directional Light shadows. All the shadows are the same color.](Images/RayTracedShadows10.png) -**Ray-traced Directional Light shadows without colored shadows** +Ray-traced Directional Light shadows without colored shadows ### Properties @@ -81,27 +81,27 @@ Ray-traced shadows allow for transparent and transmissive GameObjects, lit by Di Ray-traced shadows offer an alternative to the shadow map that Point and Spot Lights use for opaque GameObjects. HDRP still evaluates the lighting of a Point Light as coming from a single point in space (the light is [punctual](Glossary.md#punctual-lights)), but it evaluates the shadowing as if the light was coming from the surface of a sphere. On the other side, HDRP evaluates the lighting of a Spot Light as coming from a single point in space, but it evaluates the shadowing as if the light was coming from the surface of a cone. -![](Images/RayTracedShadows4.png) +![An outdoor scene of a wall and trees, with a Point Light shadow map.](Images/RayTracedShadows4.png) -**Point Light shadow map** +Point Light shadow map -![](Images/RayTracedShadows5.png) +![An outdoor scene of a wall and trees, with ray traced Point Light shadows of a radius of 0.001m. The shadows of the trees are sharp and visible on the wall.](Images/RayTracedShadows5.png) -**Ray-traced Point Light shadows (Radius = 0.001m)** +Ray-traced Point Light shadows (Radius = 0.001m) -![](Images/RayTracedShadows6.png) +![An outdoor scene of a wall and trees, with ray traced Point Light shadows of a radius of 0.05m. The shadows of the trees are no longer visible on the wall.](Images/RayTracedShadows6.png) -**Ray-traced Point Light shadows (radius = 0.5m)** +Ray-traced Point Light shadows (radius = 0.5m) Ray-traced shadows offer the possibility of semi-transparent shadows for Point Lights cast by transparent and transmissive GameObjects. -![](Images/RayTracedShadows11.png) +![Three different colored GameObjects with ray traced Point Light semi-transparent shadows.](Images/RayTracedShadows11.png) -**Ray-traced Point Light shadows with semi-transparent shadows** +Ray-traced Point Light shadows with semi-transparent shadows -![](Images/RayTracedShadows12.png) +![Three different colored GameObjects with ray traced Point Light shadows that aren't semi-transparent.](Images/RayTracedShadows12.png) -**Ray-traced Point Light shadows without semi-transparent shadows** +Ray-traced Point Light shadows without semi-transparent shadows ### Properties @@ -120,11 +120,11 @@ Ray-traced shadows offer the possibility of semi-transparent shadows for Point L Ray-traced shadows offer an alternative to the [exponential variance shadow map](Glossary.md#ExponentialVarianceShadowMap) that Rectangle Lights use for opaque GameObjects. -![](Images/RayTracedShadows7.png) -**Rectangle Light shadow map** +![An outdoor scene with a Rectangle Light shadow map.](Images/RayTracedShadows7.png) +Rectangle Light shadow map -![](Images/RayTracedShadows8.png) -**Ray-traced Rectangle Light shadows** +![An outdoor scene with ray-traced Rectangle Light shadows.](Images/RayTracedShadows8.png) +Ray-traced Rectangle Light shadows **Note**: When rendering in [deferred mode](Forward-And-Deferred-Rendering.md), HDRP provides accurate ray-traced area light shadows for the [Lit](lit-material.md) shader. When HDRP renders for any other shader, or for the Lit shader in forward mode, it uses an approximation to calculate ray-traced shadows for area lights. This approximation is not perfectly accurate, but does produce plausible results. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Subsurface-Scattering.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Subsurface-Scattering.md index ec3161f2a3e..8ceda085788 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Subsurface-Scattering.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Traced-Subsurface-Scattering.md @@ -2,9 +2,9 @@ Ray-Traced Subsurface Scattering is a ray tracing feature in the High Definition Render Pipeline (HDRP). It is an alternative, more accurate, ray-traced solution to [Subsurface-Scattering](skin-and-diffusive-surfaces-subsurface-scattering.md) that can make use of off screen data. -![](Images/RayTracedSubsurfaceScattering.png) +![A head rendered with ray traced subsurface scattering.](Images/RayTracedSubsurfaceScattering.png) -**Perry head rendered with ray traced subsurface scattering** +A head rendered with ray traced subsurface scattering. ## Using ray traced subsurface scattering diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Getting-Started.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Getting-Started.md index 5bcc53bf216..38cb0144ab4 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Getting-Started.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Getting-Started.md @@ -140,4 +140,4 @@ To build your Project to a Unity Player, ray tracing requires that the build use To check whether it's possible to use ray tracing in a Scene, HDRP includes a menu option that validates each GameObject in the Scene. If you don't setup GameObjects correctly, this process throws warnings in the Console window. For the list of things this option checks for, see [Menu items](Menu-Items.md#other). To use it: 1. Click **Edit** > **Render Pipeline** > **HD Render Pipeline** > **Check Scene Content for Ray Tracing**. -2. In the Console window, check if there are any warnings. \ No newline at end of file +2. In the Console window, check if there are any warnings. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Reflection-Probe.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Reflection-Probe.md index b5bda4e0cb7..65198ce07fe 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Reflection-Probe.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Reflection-Probe.md @@ -86,7 +86,7 @@ You can use Scene view gizmos to visually customize specific properties. | **Gizmo** | **Property** | **Description** | | ------------------------------------------------------------ | ----------------------------------- | ------------------------------------------------------------ | -| ![](Images/ReflectionProbeGizmo1.png) | **Influence Volume boundary**. | Provides Scene view handles that allow you to resize the boundaries of the [Influence Volume](#InfluenceVolume), which defines the area this Reflection Probe affects reflective Materials. Edits the **Box Size** or **Radius** value, depending on the **Shape** you select. | -| ![](Images/ReflectionProbeGizmo2.png) | **Blend Distance boundary**. | Provides Scene view handles that allows you to alter the inward distance from the **Box Size** or **Radius** at which this Reflection Probe blends with other Reflection Probes. Its behavior depends on the [workflow mode](#Workflows) you are using. It scales all sides equally in **Normal** mode, scales just the side with the handle you control in **Advanced** mode. | -| ![](Images/ReflectionProbeGizmo3.png) | **Blend Normal Distance boundary**. | Provides Scene view handles that allow you to resize the boundary where pixels with a normal pointing away from the **Capture Position** don’t receive any influence from this Probe. | -| ![](Images/ReflectionProbeGizmo4.png) | **Capture Position**. | Changes the behavior of the Move Tool so that it alters the **Capture Position** property, rather than the **Position** of the **Transform**. | +| ![Influence Volume boundary](Images/ReflectionProbeGizmo1.png) | **Influence Volume boundary**. | Provides Scene view handles that allow you to resize the boundaries of the [Influence Volume](#InfluenceVolume), which defines the area this Reflection Probe affects reflective Materials. Edits the **Box Size** or **Radius** value, depending on the **Shape** you select. | +| ![Blend Distance boundary](Images/ReflectionProbeGizmo2.png) | **Blend Distance boundary**. | Provides Scene view handles that allows you to alter the inward distance from the **Box Size** or **Radius** at which this Reflection Probe blends with other Reflection Probes. Its behavior depends on the [workflow mode](#Workflows) you are using. It scales all sides equally in **Normal** mode, scales just the side with the handle you control in **Advanced** mode. | +| ![Blend Normal Distance boundary](Images/ReflectionProbeGizmo3.png) | **Blend Normal Distance boundary**. | Provides Scene view handles that allow you to resize the boundary where pixels with a normal pointing away from the **Capture Position** don’t receive any influence from this Probe. | +| ![Capture Position](Images/ReflectionProbeGizmo4.png) | **Capture Position**. | Changes the behavior of the Move Tool so that it alters the **Capture Position** property, rather than the **Position** of the **Transform**. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Reflection-Probes-Intro.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Reflection-Probes-Intro.md index 2ea362da080..041cba7a2dc 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Reflection-Probes-Intro.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Reflection-Probes-Intro.md @@ -7,7 +7,7 @@ The High Definition Render Pipeline (HDRP) allows you to use two different Refle - [Reflection Probes](Reflection-Probe.md) captures a view of its surroundings in all directions and stores the result as a cubemap, similar to the Reflection Probe in built-in render pipeline. - [Planar Reflection Probes](Planar-Reflection-Probe.md) captures a view in a direction calculated from a reflection of the Camera’s position and rotation, then stores the result in a 2D RenderTexture. By default, the reflected Camera calculates its field of view by setting the center of its projection to the Probe’s **Mirror Position**, and then expands it until it includes the Probe’s **Influence Volume**, as shown here: -![](Images/ReflectionProbeIntro1.png) +![A diagram that represents the Camera, the Planar Reflection Probe, the capture area, and the reflected Camera. The reflected Camera has the same field of view angle as the Camera.](Images/ReflectionProbeIntro1.png) For more information about how to use the reflection probe, see [Use reflection probes](Reflection-Probe-Usage.md). diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Rendering-Layers.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Rendering-Layers.md index b1a2d7f9475..20ccc91d1ea 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Rendering-Layers.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Rendering-Layers.md @@ -5,7 +5,7 @@ The High Definition Render Pipeline (HDRP) allows you to use Rendering Layers, w A Renderer can support up to 32 rendering layers, but all HDRP effects using Rendering Layers only support the first 16 layers. On the image below, you can see usage of Rendering Layers with Lights to only affect some of the meshes. -![](Images/HDRPFeatures-LightLayers.png) +![Three spheres, labelled to show that each receives light from different lights.](Images/HDRPFeatures-LightLayers.png) Rendering Layers are also supported on decal projectors, and can be sampled from the ShaderGraph to implement custom effects. @@ -63,17 +63,15 @@ By default, in the UI for Lights, Decals, Mesh Renderers or Terrain, Rendering L Using [cookies](https://docs.unity3d.com/Manual/Cookies.html) for light fixtures can sometimes have a negative visual effect on a bulb, such as self-shadowing or transmission contribution. You can use Light Layers to make a bulb Mesh not receive any light from the Light’s cookie, and instead receive light from a separate small Point Light. +![The Light cookie incorrectly affects the transmission of this bulb’s geometry.](Images/LightLayers1.png)
The Light cookie incorrectly affects the transmission of this bulb’s geometry. -![](Images/LightLayers1.png) - +![Assigning the bulb’s Mesh Renderer to a specific Rendering Layer means that the Light cookie no longer affects the bulb’s Mesh Renderer.](Images/LightLayers2.png)
Assigning the bulb’s Mesh Renderer to a specific Rendering Layer means that the Light cookie no longer affects the bulb’s Mesh Renderer. -![](Images/LightLayers2.png) - +![To restore the transmission effect, create a Point Light and assign it to the same Rendering Layer as the bulb’s Mesh Renderer. Now this Point Light only affects the bulb’s Mesh Renderer and does not contribute to the rest of the Scene Lighting.](Images/LightLayers3.png)
To restore the transmission effect, create a Point Light and assign it to the same Rendering Layer as the bulb’s Mesh Renderer. Now this Point Light only affects the bulb’s Mesh Renderer and does not contribute to the rest of the Scene Lighting. -![](Images/LightLayers3.png) For more information on this process, see Pierre Donzallaz’s [expert guide](https://pydonzallaz.files.wordpress.com/2019/02/create-high-quality-light-fixtures-in-unity.pdf) on creating high quality light fixtures in Unity. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Shadows-in-HDRP.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Shadows-in-HDRP.md index a3f7322ff12..3488bc431bb 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Shadows-in-HDRP.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Shadows-in-HDRP.md @@ -72,9 +72,7 @@ In HDRP, each individual Light component controls its own shadow biasing using t - **Slope-Scale Depth Bias** - **Normal Bias** -Find these settings under the **Shadows** section. If some property fields are missing, enable [additional properties](expose-all-additional-properties.md) to display them. For details on how each property controls the shadow biasing, see the [Light documentation](Light-Component.md). - -![](Images/Shadows1.png) +Find these settings under the **Shadows** section in the **Light** Inspector. If some property fields are missing, enable [additional properties](expose-all-additional-properties.md) to display them. For details on how each property controls the shadow biasing, see the [Light documentation](Light-Component.md). Using high shadow bias values may result in light "leaking" through Meshes. This is where there is a visible gap between the shadow and its caster and leads to shadow shapes that don't accurately represent their casters. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Stencil-Usage.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Stencil-Usage.md index caf23eddd1e..5d11da1e02d 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Stencil-Usage.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Stencil-Usage.md @@ -8,8 +8,6 @@ HDRP reserves specific bits for features such as subsurface scattering, SSR, rec During HDRP rendering, a "Clear Stencil Buffer" pass occurs just before starting to render transparent objects, and it doesn't modify user bits. The only instance where user bits are cleared is at the start of rendering when the depth buffer is cleared. -![](Images/HDRP-frame-graph-diagram.png) - ## Free Stencil Bits Within the stencil buffer during rendering, bits 6 and 7 remain untouched by HDRP code. Any other bits are HDRP reserved and may be cleared or overwritten at any moment during the frame. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md index 6d9582bbe0b..6882e797e6e 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md @@ -199,7 +199,6 @@ * [Create a local fog effect](create-a-local-fog-effect.md) * [Create a Fog Volume shader](create-a-fog-volume-shader.md) * [Volumetric fog samples](VolumetricSamplesDescriptions.md) - * [Set up a volumetric sample scene](set-up-the-volumetric-sample-scene.md) * [Troubleshoot fog](troubleshoot-fog.md) * [Water](water.md) * [Use the water system in your Project](water-use-the-water-system-in-your-project.md) @@ -208,10 +207,10 @@ * [Quality and performance decisions](water-quality-and-performance-decisions.md) * [Water Override for Volumes](water-the-water-system-volume-override.md) * [Water surface fluctuations](water-decals-masking-landing.md) - * [Enable mask and water decals](enable-mask-and-water-decals.md) - * [Add swell, agitation, or ripples](add-swell-agitation-or-ripples.md) - * [Simulating currents with water decals](simulating-currents-with-water-decals.md) - * [Simulating foam or ripples with masks](simulating-foam-or-ripples-with-masks.md) + * [Enable mask and water decals](enable-mask-and-water-decals.md) + * [Add swell, agitation, or ripples](add-swell-agitation-or-ripples.md) + * [Simulate currents with water decals](simulating-currents-with-water-decals.md) + * [Simulate foam or ripples with masks](simulating-foam-or-ripples-with-masks.md) * [Decals and masking in the water system](water-decals-and-masking-in-the-water-system.md) * [Foam in the Water System](water-foam-in-the-water-system.md) * [Caustics in the Water System](water-caustics-in-the-water-system.md) @@ -240,7 +239,7 @@ * [Use the Rendering Debugger](use-the-rendering-debugger.md) * [Add controls to the Rendering Debugger](add-controls-to-the-rendering-debugger.md) * [Rendering and post-processing](rendering-and-post-processing.md) - * [Understand execution order](rendering-execution-order.md) + * [Execution order reference](rendering-execution-order.md) * [Understand post-processing](Post-Processing-Main.md) * [Anti-aliasing](Anti-Aliasing.md) * [Dynamic resolution](Dynamic-Resolution.md) @@ -309,7 +308,6 @@ * [Customize the High Definition Render Pipeline (HDRP)](render-graph.md) * [Test and debug rendering and post-processing](rendering-troubleshoot.md) * [Troubleshoot a custom pass](Custom-Pass-Troubleshooting.md) - * [View a custom pass in the Frame Debugger](Custom-Pass-Frame-Debugger.md) * [Troubleshoot a custom post-processing effect](rendering-troubleshoot-custom-post-processes.md) * [Understand and fix Not a Number (NAN) and Infinite (Inf) values](Post-Processing-Propagating-NaNs.md) * [Known issues](Known-Issues.md) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/VolumetricSamplesDescriptions.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/VolumetricSamplesDescriptions.md index 1515d27cfa8..049e3b5d32b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/VolumetricSamplesDescriptions.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/VolumetricSamplesDescriptions.md @@ -5,7 +5,7 @@ in Unity to enhance your fog effects with **3D Textures** or **Shader Graphs**. It also covers various blending modes and quality settings to optimize the visual quality and performance of your fog effects. -![](Images/volumetric-fog-samples.jpg) +![A plane with a volumetric cloud floating above it.](Images/volumetric-fog-samples.jpg) Learn how to configure the Local Volumetric Fog component, use different blending modes, and explore a variety of sample effects like 3D texture masks, @@ -27,6 +27,8 @@ issue, you can keep the **Screen Resolution Percentage** low as a tradeoff. ## Sample effects +To set up a volumetric sample scene, select **Window** > **Package manager** > **High Definition RP** > **Samples**, then import **Volumetric Samples**. Each sample is a prefab in the `Assets/Samples/High Definition RP/[HDRP version number]/Volumetric samples` folder. + ### 3D texture mask This Local Volumetric Fog uses the **Texture Mask Mode**. It requires a **3D diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/add-swell-agitation-or-ripples.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/add-swell-agitation-or-ripples.md index 4b9d265d7c1..9480cc2552d 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/add-swell-agitation-or-ripples.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/add-swell-agitation-or-ripples.md @@ -23,18 +23,8 @@ To add a Water Mask: 1. In the Water Volume Inspector window, drag the texture to the **Water Mask** property. - - - - - - - - -
- - - -
-In this example, the red channel has a gradient that reduces the first and second simulation bands. The noise on the green channel reduces ripples. For more information, refer to the Water Mask property description. -
+![A water mask that's more red towards the left and more blue towards the right.](Images/WaterMask_Example-22.2.png) + +![An ocean rendered using the water mask.](Images/WaterMask_ExempleRender.PNG) + +In this example, the red channel has a gradient that reduces the first and second simulation bands. The noise on the green channel reduces ripples. For more information, refer to the Simulation Mask property description. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/build-test-and-deploy.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/build-test-and-deploy.md index 52ddfbaa46e..3b54e640757 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/build-test-and-deploy.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/build-test-and-deploy.md @@ -12,6 +12,5 @@ Configure a build, and publish and debug a project in the High Definition Render - [Configure build settings for different platforms](configure-build-settings-for-different-platforms.md) - [Platform configuration](platform-configuration.md) - [Test and debug materials](test-and-debug-materials.md) -- [View a Custom Pass in the Frame Debugger](Custom-Pass-Frame-Debugger.md) - [Debug ray tracing effects](Ray-Tracing-Debug.md) - [Reduce shader variants](reduce-shader-variants.md) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/create-a-fullscreen-material.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/create-a-fullscreen-material.md index ffabede8603..2f3bbdd6284 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/create-a-fullscreen-material.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/create-a-fullscreen-material.md @@ -77,8 +77,6 @@ To set a source material for the `Blit()` command to use in shader graph: **Note**: The type of source material node depends on the platform you use. Windows and some platforms use Texture2DArray and other platforms use Texture2D. To see which texture type to use, refer to the [documentation for the platform you are using](https://docs.unity3d.com/Manual/PlatformSpecific.html). -![](Images/FS_SampleTex2DArray.png) - ### Set the Blit pass in a C# script @@ -101,7 +99,7 @@ Your scene appears gray if you read from and write to the color buffer in the sa ## Missing part of full-screen effect -![](Images/fullscreen_troubleshooting_1.png) +![A view of a sphere, with a red fog post-processing effect that covers only part of the display.](Images/fullscreen_troubleshooting_1.png) This error can happen when you use a full-screen shader with a custom pass C# script that uses the `Blit()` function, and you haven’t selected the **Blit** shader pass in the Inspector window or in a script. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/custom-post-processing-create-apply.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/custom-post-processing-create-apply.md index de697675796..358f4bdf8b6 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/custom-post-processing-create-apply.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/custom-post-processing-create-apply.md @@ -20,8 +20,6 @@ This creates each template file in the **Project** window in the **Assets** fold **Note**: When using **Full screen Shader Graph**, if you need **Scene Color**, use the **Post Process Input** source for the **HD Sample Buffer** node. -![](Images/HDSampleBuffer.png) - ## Apply a custom post-processing effect diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/float-objects-on-a-water-surface.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/float-objects-on-a-water-surface.md index 16d557b003a..5bdb4414e42 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/float-objects-on-a-water-surface.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/float-objects-on-a-water-surface.md @@ -10,7 +10,7 @@ To do this: ## Example: Float one object -![](Images/water-22.2-onebuoyancy.png) +![A cube floating on an ocean.](Images/water-22.2-onebuoyancy.png) This is an example script to float one object on a water surface. @@ -52,7 +52,7 @@ public class FitToWaterSurface : MonoBehaviour ## Example: Float several objects -![](Images/water-22.2-multibuoyancy.png) +![Hundreds of cubes floating on an ocean.](Images/water-22.2-multibuoyancy.png) This is an example script to float an array of objects on a water surface using the [Burst compiler](https://docs.unity3d.com/Packages/com.unity.burst@1.8/manual/index.html). diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/light-anchor.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/light-anchor.md index c2661d5451e..a709c9cb0fe 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/light-anchor.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/light-anchor.md @@ -19,7 +19,7 @@ Use **Orbit** and **Elevation** to control the orientation of the light, in degr You can use the **Anchor Position Override** to provide a GameObject’s [Transform](https://docs.unity3d.com/ScriptReference/Transform.html) as an anchor point for the Light. This is useful if you want the Light to follow a specific GameObject in the Scene. -![](Images/LightAnchorAnimation.gif) +![The Light follows the sphere GameObject in the scene as it rotates.](Images/LightAnchorAnimation.gif) **Note**: The above example uses the Main Camera as the reference Camera that adjusts the light rotation. The Common presets might create a different result in the Scene View if your view isn't aligned with the Main Camera. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/lights-placement-tool.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/lights-placement-tool.md index 5cc49c45782..47640ee969b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/lights-placement-tool.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/lights-placement-tool.md @@ -4,7 +4,7 @@ The High Definition Render Pipeline (HDRP) includes the Light Placement Tool whi This tool does not affect any Cameras in your Scene. The Scene View Camera returns to its original position when you disable the Light Placement Tool. -![](Images/light-placement-tool.jpg) +![A garden scene. On the left, the default Scene view. On the right, the view from the light.](Images/light-placement-tool.jpg) ## Use the Light Placement Tool diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/local-volumetric-fog-volume-reference.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/local-volumetric-fog-volume-reference.md index 82581d4d1b0..23248191544 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/local-volumetric-fog-volume-reference.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/local-volumetric-fog-volume-reference.md @@ -13,6 +13,7 @@ Refer to [Create a local fog effect](create-a-local-fog-effect.md) for more info | **Mask Mode** | Select a mask type to apply to the fog:
•**Texture**: Applies a 3D texture to the fog volume.
•**Material**: Applies a Material to the fog which updates every frame. You can use this to create dynamic fog effects. | | **Blending Mode** | Determines how this fog volume blends with existing fog in the scene:
•**Overwrite**: Replaces existing fog in the volume area with this fog volume.
•**Additive**: Adds the color and density of this fog volume to other fog in the scene. This is the default value.
•**Multiply**: Multiplies the color and density of this fog volume with other fog in the scene. You can use this to create effects relative to a specific fog density.
•**Min**: Determines the minimum density value of this fog volume and the scene fog inside its bounding box. For example, a value of 0 appears to remove fog in a certain area.
•**Max**: Determines the maximum density value of this fog volume and the scene fog inside its bounding box.
| | **Priority** | Determined the order in which HDRP blends fog volumes. HDRP renders the lowest priority volume first and the highest priority last. | +| **Scale Mode** | Specifies the scaling mode to apply to the Local Volumetric Fog Volume. Invariant uses only the size of the volume. Inherit From Hierarchy multiplies the size and the transform scale. | | **Size** | Controls the dimensions of the Volume. | | **Per Axis Control** | Controls the blend distance based on each axis. | | **Blend Distance** | Blend Distance fades from this fog volume's level to the fog level outside it.
This value indicates the absolute distance from the edge of the Volume bounds, defined by the Size property, where the fade starts.
Unity clamps this value between 0 and half of the lowest axis value in the Size property.
If you use the **Normal** tab, you can alter a single float value named Blend Distance, which gives a uniform fade in every direction. If you open the **Advanced** tab, you can use two fades per axis, one for each direction. For example, on the X-axis you could have one for left-to-right and one for right-to-left.
A value of 0 hides the fade, and a value of 1 creates a fade. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/path-tracing-limitations.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/path-tracing-limitations.md index fa57b017aed..f8ea1811302 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/path-tracing-limitations.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/path-tracing-limitations.md @@ -22,6 +22,7 @@ HDRP path tracing in Unity currently has the following limitations: - Emissive Decals. - [Graphics.DrawMesh](https://docs.unity3d.com/ScriptReference/Graphics.DrawMesh.html) or [Graphics.RenderMesh](https://docs.unity3d.com/2022.1/Documentation/ScriptReference/Graphics.RenderMesh.html), because rasterization and ray tracing are different ways of generating an image. - [Streaming Virtual Texturing](https://docs.unity3d.com/Documentation/Manual/svt-streaming-virtual-texturing.html). + - Vertex animation, for example wind deformation of vegetation. ### Unsupported shader graph nodes for path tracing diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-adjustment-volume-component-reference.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-adjustment-volume-component-reference.md index c9c660983f7..2e5421e7e5a 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-adjustment-volume-component-reference.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-adjustment-volume-component-reference.md @@ -6,93 +6,18 @@ Refer to the following for more information about using the Probe Adjustment Vol - [Fix issues with Adaptive Probe Volumes](probevolumes-fixissues.md) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyDescription
Influence Volume
ShapeSet the shape of the Adjustment Volume to either Box or Sphere.
SizeSet the size of the Adjustment Volume. This property only appears if you set Shape to Box.
RadiusSet the radius of the Adjustment Volume. This property only appears if you set Shape to Sphere.
Mode -

Select how to override probes inside the Adjustment Volume.

-
    -
  • Invalidate Probes: Mark selected probes as invalid. Refer to How light probe validity works for more information.
  • -
  • Override Validity Threshold: Override the threshold HDRP uses to determine whether Light Probes are marked as invalid. Refer to Adjust Dilation for more information.
  • -
  • Apply Virtual Offset: Change the position Light Probes use when sampling the lighting in the scene during baking. Refer to Adjust Virtual Offset for more information.
  • -
  • Override Virtual Offset Settings: Override the biases HDRP uses during baking to determine when Light Probes use Virtual Offset, and calculate sampling positions. Refer to Adjust Virtual Offset for more information
  • -
  • Intensity Scale: Override the intensity of probes to brighten or darken affected areas.
  • -
  • Override Sky Direction Override the directions Unity uses to sample the ambient probe, if you enable sky occlusion.
  • -
  • Override Sample Count: Override the number of samples Unity uses for Adaptive Probe Volumes.
  • -
-
Dilation Validity Threshold -

Override the ratio of backfaces a probe samples before HDRP considers it invalid. This option only appears if you set Mode to Override Validity Threshold, and you enable Additional Properties.

-
Virtual Offset Rotation -

Set the rotation angle for the Virtual Offset vector on all probes in the Adjustment Volume. This option only appears if you set Mode to Apply Virtual Offset.

-
Virtual Offset Distance -

Set how far HDRP pushes probes along the Virtual Offset Rotation vector. This option only appears if you set Mode to Apply Virtual Offset.

-
Geometry Bias -

Sets how far HDRP pushes a probe's capture point out of geometry after one of its sampling rays hits geometry. This option only appears if you set Mode to Override Virtual Offset Settings.

-
Ray Origin Bias

Override the distance between a probe's center and the point HDRP uses to determine the origin of that probe's sampling ray. This can be used to push rays beyond nearby geometry if the geometry causes issues. This option appears only if you set Mode to Override Virtual Offset Settings.

-
Intensity Scale -

Change the brightness of all probes covered by the Probe Volumes Adjustment Volume component. Use this sparingly, because changing the intensity of probe data can lead to inconsistencies in the lighting. This option only appears if you set Mode to Intensity Scale.

-
Preview Probe Adjustments -

Preview the effect of the adjustments in the Scene view and the Rendering Debugger.

-
Bake Probe Volumes -

Bake the Adaptive Probe Volumes with the adjustments.

-
+| Property | Description | +| :------- | :--------------------------------------------------------------------------------- | +| **Influence Volume** | Set the shape of the Adjustment Volume to either **Box** or **Sphere**.
  • **Shape**: Set the shape of the Adjustment Volume to either **Box** or **Sphere**.
  • **Size**: Set the size of the Adjustment Volume. This property only appears if you set **Shape** to **Box**.
  • **Radius**: Set the radius of the Adjustment Volume. This property only appears if you set **Shape** to **Sphere**.
| +| **Mode** | Select how to override probes inside the Adjustment Volume.
  • **Invalidate Probes:** Mark selected probes as invalid. Refer to [How light probe validity works](probevolumes-fixissues.md#how-light-probe-validity-works) for more information.
  • **Override Validity Threshold:** Override the threshold HDRP uses to determine whether Light Probes are marked as invalid. Refer to [Adjust Dilation](probevolumes-fixissues.md#adjust-dilation) for more information.
  • **Apply Virtual Offset:** Change the position Light Probes use when sampling the lighting in the scene during baking. Refer to [Adjust Virtual Offset](probevolumes-fixissues.md#adjust-virtual-offset) for more information.
  • **Override Virtual Offset Settings:** Override the biases HDRP uses during baking to determine when Light Probes use Virtual Offset, and calculate sampling positions. Refer to [Adjust Virtual Offset](probevolumes-fixissues.md#adjust-virtual-offset) for more information.
  • **Intensity Scale:** Override the intensity of probes to brighten or darken affected areas.
  • **Override Sky Direction:** Override the directions Unity uses to sample the ambient probe, if you enable [sky occlusion](probevolumes-skyocclusion.md).
  • **Override Sample Count:** Override the number of samples Unity uses for Adaptive Probe Volumes.
| +| **Dilation Validity Threshold** | Override the ratio of backfaces a probe samples before HDRP considers it invalid. This option only appears if you set **Mode** to **Override Validity Threshold**, and you enable **Additional Properties**. | +| **Virtual Offset Rotation** | Set the rotation angle for the Virtual Offset vector on all probes in the Adjustment Volume. This option only appears if you set **Mode** to **Apply Virtual Offset**. | +| **Virtual Offset Distance** | Set how far HDRP pushes probes along the Virtual Offset Rotation vector. This option only appears if you set **Mode** to **Apply Virtual Offset**. | +| **Geometry Bias** | Sets how far HDRP pushes a probe's capture point out of geometry after one of its sampling rays hits geometry. This option only appears if you set **Mode** to **Override Virtual Offset Settings**. | +| **Ray Origin Bias** | Override the distance between a probe's center and the point HDRP uses to determine the origin of that probe's sampling ray. This can be used to push rays beyond nearby geometry if the geometry causes issues. This option appears only if you set **Mode** to **Override Virtual Offset Settings**. | +| **Intensity Scale** | Change the brightness of all probes covered by the Probe Volumes Adjustment Volume component. Use this sparingly, because changing the intensity of probe data can lead to inconsistencies in the lighting. This option only appears if you set **Mode** to **Intensity Scale**. | +| **Preview Probe Adjustments** | Preview the effect of the adjustments in the Scene view and the [Rendering Debugger](rendering-debugger-window-reference.md). | +| **Bake Probe Volumes** | Bake the Adaptive Probe Volumes with the adjustments. | ## Override Sample Count properties @@ -101,7 +26,7 @@ These properties are visible only when you set **Mode** to **Override Sample Cou ### Probes | Property | Description | -|-|-| +|:--------|:-------| | **Direct Sample Count** | Set the number of samples Unity uses to calculate direct lighting. | | **Indirect Sample Count** | Set the number of samples Unity uses to calculate indirect lighting. | | **Sample Count Multiplier** | Set a value to multiply **Direct Sample Count** and **Indirect Sample Count** by. | @@ -112,6 +37,6 @@ These properties are visible only when you set **Mode** to **Override Sample Cou These properties only have an effect if you enable sky occlusion. Refer to [Update light from the sky at runtime with sky occlusion](probevolumes-skyocclusion.md) for more information. | Property | Description | -|-|-| +|:------|:------| | **Sample Count** | Set the number of samples Unity uses to calculate a sky occlusion value for each probe. | | **Max Bounces** | Set the maximum number of times Unity bounces light off objects when it calculates a sky occlusion value. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-concept.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-concept.md index 8591c72a8fd..797503a0456 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-concept.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-concept.md @@ -23,7 +23,7 @@ Adaptive Probe Volumes have the following advantages: - Adaptive Probe Volumes include [streaming](probevolumes-streaming.md) functionality to support large open worlds. - You can use Adaptive Probe Volumes to [update light from the sky at runtime with sky occlusion](probevolumes-skyocclusion.md). -![](Images/probevolumes-per-pixel.png)
+![Two comparison scenes of a red car model. The left scene uses Light Probe Groups, so each part of the car is a different shade of red. The right scene uses Adaptive Probe Volumes, so each part of the car is the same shade of red. ](Images/probevolumes-per-pixel.png)
The car model is made up of separate GameObjects. The left scene uses Light Probe Groups, which use per-object lighting, so each part of the car samples a single blended probe value. The right scene uses Adaptive Probe Volumes, which use per-pixel lighting, so each part of the car samples its nearest probes. This image uses the ArchVizPRO Photostudio HDRP asset from the Unity Asset Store. ![](Images/probevolumes-reflection-probe-normalization.png)
diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-fixissues.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-fixissues.md index 16eee27c819..90766a7a973 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-fixissues.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-fixissues.md @@ -14,11 +14,11 @@ HDRP uses the following techniques to minimise incorrect lighting data from Ligh You can check which Light Probes are invalid using the [Rendering Debugger](rendering-debugger-window-reference.md#ProbeVolume). -![](Images/probevolumes-virtualoffsetvsnot.png)
-In the Scene on the left, Virtual Offset isn't active and dark bands are visible. In the Scene on the right, Virtual Offset is active.
+![In the scene on the left, Virtual Offset isn't active so dark bands are visible. In the scene on the right, Virtual Offset is active so there are no dark bands.](Images/probevolumes-virtualoffsetvsnot.png)
+In the scene on the left, Virtual Offset isn't active so dark bands are visible. In the scene on the right, Virtual Offset is active so there are no dark bands. -![](Images/probevolumes-dilationvsnot.png)
-In the Scene on the left, Dilation isn't active and some areas are too dark. In the Scene on the right, Dilation is active.
+![In the scene on the left, Dilation isn't active so some areas are too dark. In the scene on the right, Dilation is active so the areas are no longer dark.](Images/probevolumes-dilationvsnot.png)
+In the scene on the left, Dilation isn't active so some areas are too dark. In the scene on the right, Dilation is active so the areas are no longer dark. ## Fix dark blotches or streaks @@ -39,7 +39,7 @@ You can also disable Virtual Offset for a Baking Set. Virtual Offset only affect ### Adjust Dilation -You can configure **Probe Dilation Settings** in the [Adaptive Probe Volumes panel](probevolumes-lighting-panel-reference.md) in the Lighting window). This changes how HDRP calculates the validity of Light Probes, and how invalid Light Probes use lighting data from nearby valid Light Probes. +You can configure **Probe Dilation Settings** in the [Adaptive Probe Volumes panel](probevolumes-lighting-panel-reference.md) in the Lighting window. This changes how HDRP calculates the validity of Light Probes, and how invalid Light Probes use lighting data from nearby valid Light Probes. You can adjust the following: @@ -56,9 +56,8 @@ You can also disable Dilation for a Baking Set. Dilation only affects baking tim Light leaks are areas that are too light or dark, often in the corners of a wall or ceiling. -![](Images/probevolumes-lightleak.JPG)
-A light leak. -
+![A wall with light leaks, where one side of the wall is too light and one side of the wall is too dark.](Images/probevolumes-lightleak.JPG)
+A wall with light leaks, where one side of the wall is too light and one side of the wall is too dark. Light leaks often occur when geometry receives light from a Light Probe that isn't visible to the geometry, for example because the Light Probe is on the other side of a wall. Adaptive Probe Volumes use regular grids of Light Probes, so Light Probes might not follow walls or be at the boundary between different lighting areas. @@ -151,9 +150,8 @@ Refer to [Probe Adjustment Volume component reference](probevolumes-adjustment-v Seams are artefacts that appear when one lighting condition transitions immediately into another. Seams are caused when two adjacent bricks have different Light Probe densities. Refer to [bricks](probevolumes-concept.md#how-probe-volumes-work) for more information. -![](Images/probevolumes-seams.JPG)
-Two seams. -
+![Two seams on a wall which show the sharp changes in lighting conditions between light and dark.](Images/probevolumes-seams.JPG)
+Two seams on a wall which show the sharp changes in lighting conditions between light and dark. URP fixes seams automatically. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-skyocclusion.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-skyocclusion.md index 0124c58c3b5..dfd4a3bc593 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-skyocclusion.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-skyocclusion.md @@ -15,6 +15,12 @@ At runtime, when a static or dynamic GameObject samples an Adaptive Probe Volume - A sky color from the ambient probe, which updates when the sky color changes. - The sky occlusion value, which is static. +## Limitations + +When Unity calculates sky occlusion values, Unity treats the surfaces of GameObjects as opaque and a gray color. As a result, transparent or translucent GameObjects like windows or leaves bounce light away instead of transmitting it through. Also, dark-colored walls reflect the same amount of light as light-colored walls. To minimize lighting issues, disable **Contribute GI** in the [**Static Editor Flags** property](xref:um-static-objects) for transparent or translucent GameObjects. + +To override the gray color Unity uses, go to **Sky Occlusion Settings** in the [Adaptive Probe Volumes panel](probevolumes-lighting-panel-reference.html#sky-occlusion-settings) and adjust **Albedo Override**. + ## Enable sky occlusion First, enable the GPU lightmapper. Unity doesn't support sky occlusion if you use **Progressive CPU** instead. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-streaming.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-streaming.md index ece305d9a54..bbdfa985b21 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-streaming.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-streaming.md @@ -32,7 +32,7 @@ The smallest section HDRP loads and uses is a cell, which is the same size as th To view the cells in an Adaptive Probe Volume, or debug streaming, use the [Rendering Debugger](rendering-debugger-window-reference.md#probe-volume-panel). -![](Images/probevolumes-debug-displayprobecells.PNG)
+![The Rendering Debugger with **Display Cells** enabled. Each green rectangle is a cell.](Images/probevolumes-debug-displayprobecells.PNG)
The Rendering Debugger with **Display Cells** enabled. ## Load APV data from AssetBundles or Addressables diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/ray-tracing-introduction.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/ray-tracing-introduction.md index 22801f4a256..fd5d2694b8f 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/ray-tracing-introduction.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/ray-tracing-introduction.md @@ -70,9 +70,9 @@ Ray tracing in HDRP isn't compatible with the following features. #### Lighting and shadows -- Box-shaped spot lights. - Fully accurate shadow culling. You might see missing shadows in ray-traced effects. To improve the accuracy of shadow culling, use the **Extend Shadow Culling** property in [Ray Tracing Settings](reference-ray-tracing-settings.md). - Volumetric [fog](create-a-local-fog-effect.md). +- Water. #### Geometry and materials diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/refraction-models.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/refraction-models.md index 27f67be8952..d11b075b2e2 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/refraction-models.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/refraction-models.md @@ -11,7 +11,7 @@ If you use this model, HDRP does the following [during the refraction process](O 2. HDRP uses a sphere to approximate the object's shape, and the diameter of the sphere to determine how far the light travels inside. 3. When the light leaves the object, HDRP uses the sphere's surface normal as part of calculating the second refraction. This determines how much the light bends back. -
+The sphere refraction model with an angel statue object. Three rays travel from the camera, and bend as they travel through the object.
How HDRP calculates the refracted light for three example pixels, if you use a **Refraction Thickness Map** to set different widths for different pixels on an object. The solid orange lines are vectors that represent the direction of light from the camera to a pixel. The white circles represent spheres that approximate the object's thickness. The solid blue lines are surface normals. To control the diameter of the spheres: @@ -21,10 +21,10 @@ To control the diameter of the spheres: If you use the sphere refraction model with a spherical object, the Scene you see through the object might be upside-down. -![](Images/refraction-inversion-diagram.svg)
+![Light rays from a tree converging to a point (the inversion point) then continuing, so the tree is upside-down when the rays reach the camera.](Images/refraction-inversion-diagram.svg)
The light rays bend a lot when they exit the object, so they cross over and hit the opposite end of the tree. -![](Images/refraction-inversion.png)
+![A scene with a translucent sphere floating in a forest.](Images/refraction-inversion.png)
The view through a refractive sphere is upside-down. ## Planar refraction model @@ -42,7 +42,7 @@ If you use this model, HDRP does the following [during the refraction process](O 2. HDRP uses a parallel plane to approximate the exit surface (this is a 'planar projection'), and the distance between the object's surface and the plane to determine how far the light travels inside. 3. When the light leaves the object, HDRP bends the light back so it has the same direction as the light that entered the object. -
+The planar refraction model with an angel statue object. Three rays travel from the camera, and bend as they travel through the object.
How HDRP calculates the refracted light for three example pixels, if you use a **Refraction Thickness Map** to set different widths for different pixels on an object. The solid orange lines are vectors that represent the direction of light from the camera to a pixel. The dotted blue lines represent parallel planes approximating the object's thickness. The solid blue lines are surface normals. To control the distance between the planes: @@ -52,10 +52,10 @@ To control the distance between the planes: Set the thickness to the approximate width of the object. The bigger the width, the more visible the refraction effect. -![](Images/refraction-thickness-diagram.svg)
+![A camera viewing a tree through two refractive objects. The light bends more as it travels through the thicker object.](Images/refraction-thickness-diagram.svg)
With a thicker object, the light is offset by a greater amount. -![](Images/refraction-thickness.png)
+![Three transparent cubes of increasing thickness, in front of a checkerboard pattern.](Images/refraction-thickness.png)
Objects with increasing thickness, showing how the light is increasingly deformed. ## Thin refraction model diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-and-post-processing.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-and-post-processing.md index e5bd1fced6f..b2e7215b017 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-and-post-processing.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-and-post-processing.md @@ -4,7 +4,7 @@ Control how the High Definition Render Pipeline (HDRP) renders a scene and apply |Page|Description| |-|-| -|[Understand execution order](rendering-execution-order.md)|Learn the order in which HDRP executes render passes.| +|[Execution order reference](rendering-execution-order.md)|Learn the order in which HDRP executes render passes.| |[Understand post-processing](Post-Processing-Main.md)|Learn how HDRP performs post-processing.| |[Anti-aliasing](Anti-Aliasing.md)|Use an antialiasing method to reduce the appearance of jagged edges.| |[Dynamic resolution](Dynamic-Resolution.md)|Change the screen resolution automatically to maintain a stable frame rate.| diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-debugger-window-reference.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-debugger-window-reference.md index 7cd61d6725d..0b3bb1b5be1 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-debugger-window-reference.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-debugger-window-reference.md @@ -648,12 +648,15 @@ The **Color monitors** are a set of industry-standard monitors to help artists c | **Size** | The size ratio of the color monitors. | | **Property** | **Description** | -| ----------------- | ------------------------------------------------------------ | -| **Clear Render Targets at creation** | Enable the checkbox to make the Render Graph system clear render targets the first time it uses them | -| **Disable Pass Culling** | Enable the checkbox to render passes which have no impact on the final render. | -| **Immediate Mode** | Enable the checkbox to make the Render Graph system evaluate passes immediately after it creates them. | -| **Log Frame Information** | Press the button to log in the Console informations about the passes rendered during a frame. | -| **Log Resources** | Press the button to log in the Console the list of resources used when rendering a frame. | +| --- | --- | +| **Clear Render Targets At Creation** | Clears render textures the first time the render graph system uses them. | +| **Clear Render Targets When Freed** | Clears render textures when they're no longer used by render graph. | +| **Disable Pass Culling** | Disables HDRP culling render passes that have no impact on the final render. | +| **Disable Pass Merging** | Disables HDRP merging render passes. | +| **Immediate Mode** | Enables the render graph system evaluating passes immediately after it creates them. | +| **Enable Logging** | Enables logging to the **Console** window. | +| **Log Frame Information** | Logs how HDRP uses the resources during the frame, in the **Console** window. | +| **Log Resources** | Logs the resources HDRP uses during the frame, in the **Console** window. | The **NVIDIA device debug view** is a panel that displays a list of the current feature states of NVIDIA Deep Learning Super Sampling (DLSS). Each row represents an active screen in which DLSS is running. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-execution-order.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-execution-order.md index bb94eb05881..8f4f69374de 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-execution-order.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-execution-order.md @@ -1,35 +1,135 @@ -# Understand execution order +# Execution order reference -The following diagram shows the order in which the High Definition Render Pipeline (HDRP) executes render passes. +The High Definition Render Pipeline (HDRP) executes render passes using the following stages: -For more information about injection points, refer to [injection points](Custom-Pass-Injection-Points.md). +1. Prepass +2. Prepare LightLoop data +3. Opaque and sky +4. Transparent +5. Post-processing +6. Overlay gizmos -![](Images/HDRP-frame-graph-diagram.png) +## Prepass stage + +HDRP executes the prepass stage in the following order: + +1. Before Rendering - custom pass injection point +2. Prepass - depth, normal/smoothness, motion vectors +3. PreRenderSky/Cloud +4. DBuffer - no emissive decal +5. GBuffer +6. After Depth and Normal - custom pass injection point +7. Depth pyramid +8. Camera motion vectors + +## Prepare Lightloop data stage + +1. Shadows or cached shadows, or an [optional async pass](#optional-async-stage) +2. Screen space shadows +3. Generate MaxZPass + + +### Optional async pass + +The optional async pass calculates the following: + +- Lights list +- Screen space ambient occlusion (SSAO) +- Contact shadows +- Volume voxelization +- Screen space reflections (SSR) +- Screen space global illumination (SSGI) + +### Opaque and sky stage + +HDRP executes the opaque and sky stage in the following order: + +1. Deferred lighting +2. Forward opaques +3. Decal emissive +4. Subsurface scattering +5. Sky +6. After Opaque and Sky - custom pass injection point +7. After Opaque and Sky - custom post-processing injection point + +### Transparents stage + +HDRP executes the transparents stage in the following order: + +1. Clear stencil +2. Pre-refraction transparent depth prepass +3. Water G-buffer +4. Waterline +5. Transparent depth prepass +6. Volumetric lighting +7. Fog +8. Clouds +9. High Quality Line Rendering +10. Screen space reflections (SSR) +11. Before PreRefraction - custom pass injection point +12. Transparent pre-refraction +13. Water lighting +14. Color pyramid pre-refraction +15. Screen space multiple scattering (SSMS) +16. Before Transparent - custom pass injection point +17. Transparents +18. Low-resolution transparents +19. Combine transparents +20. Transparent PostPass +21. Transparent UI: HDR output + +## Post-processing stage + +HDRP executes the post-processing stage in the following order: + +1. Color pyramid distortion +2. Distortion +3. Before Post Process - custom pass injection point +4. After Post Process Objects +5. Exposure +6. Deep learning super sampling (DLSS) upsample - before Post +7. Before Temporal anti-aliasing (TAA) - custom post-processing injection point +8. TAA or subpixel morphological anti-aliasing (SMAA) +9. Before Postprocess - custom post-processing injection point +10. Depth of field +11. DLSS upsample - After depth of field +12. Motion blur +13. After Post Process Blurs - custom post-processing injection point +14. Panini projection +15. Lens Flare (SRP) +16. Bloom +17. Uber pass - color grading, lens distortion, chromatic effect, vignette, composite +18. After Post Process - custom post-processing injection point +19. DLSS upsample - After Post +20. Final - grain, dithering, composite, fast approximate anti-aliasing (FXAA) +21. After Post Process - custom post-processing injection point ## Post-processing effect execution order The post-processing system in HDRP applies post-processing effects in a specific order. The system also combines some effects into the same compute shader stack to minimize the number of passes. -### Execution order and effect grouping - HDRP executes post processing effects in the following order, from top to bottom. -| Post-processing passes | Compute shader stack | Final post-processing pass | -| -------------------------------------------------- | --------------------- | -------------------------- | -| NaN Killer | | | -| Anti-aliasing (TAA, SMAA) | | | -| Depth of Field | | | -| Motion Blur | | | -| Panini Projection | | | -| Bloom (Pyramid) | | | -| Color Grading (LUT Baking) | | | -| Screen Space Lens Flare (written in bloom texture) | | | -| Data driven lens flare | | | -| | Lens Distortion | | -| | Chromatic Aberration | | -| | Bloom (Apply) | | -| | Vignette | | -| | Color Grading (Apply) | | -| | | Antialiasing (FXAA) | -| | | Film Grain | -| | | 8-bit Dithering | +| **Effect** | **Execution order** | +|-|-| +| NaN remover | Post-processing pass | +| Anti-aliasing - TAA, SMAA | Post-processing pass | +| Depth of field | Post-processing pass | +| Motion blur | Post-processing pass | +| Panini projection | Post-processing pass | +| Bloom - pyramid | Post-processing pass | +| Color grading - look up table (LUT) baking | Post-processing pass | +| Screen space lens flare, written in bloom texture | Post-processing pass | +| Lens flare (SRP) | Post-processing pass | +| Lens distortion | Compute shader stack | +| Chromatic aberration | Compute shader stack | +| Apply bloom | Compute shader stack | +| Vignette | Compute shader stack | +| Apply color grading | Compute shader stack | +| Anti-aliasing - FXAA | Final post-processing pass | +| Film grain | Final post-processing pass | +| 8-bit dithering | Final post-processing pass | + +## Additional resources + +- [Injection points](Custom-Pass-Injection-Points.md) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-troubleshoot.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-troubleshoot.md index 819a6af902a..0016702a76d 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-troubleshoot.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-troubleshoot.md @@ -5,8 +5,10 @@ Identify and fix common problems with rendering, post-processing and custom pass | Page | Description | |-|-| |[Troubleshoot a Custom Pass](Custom-Pass-Troubleshooting.md)|Fix issues with custom pass effects.| -|[View a Custom Pass in the Frame Debugger](Custom-Pass-Frame-Debugger.md)| Use the Frame Debugger to identify issues with a custom pass.| |[Troubleshoot a custom post-processing effect](rendering-troubleshoot-custom-post-processes.md)|Fix issues with custom post-processing effects.| |[Understand and fix Not a Number (NAN) and Infinite (Inf) values](Post-Processing-Propagating-NaNs.md)|Learn how to identify and remove spreading NAN and Inf values.| |[Known issues](Known-Issues.md)|Fix problems you might have with material array size and local HDRP config packages.| +## Additional resources + +- [Check or find a rendering event](xref:frame-debugger-window-event-hierarchy) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/set-up-a-volume.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/set-up-a-volume.md index e264f54f8cc..5b587880ef8 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/set-up-a-volume.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/set-up-a-volume.md @@ -37,7 +37,7 @@ To add a volume to your scene and edit its Volume Profile, follow these steps: 2. In the **Scene** or **Hierarchy** view, select the new GameObject to view it in the Inspector. 3. In the **Volume** component, assign a Volume Profile asset. To create a new Volume Profile, select **New**. -The list of Volume Overrides that the Volume Profile contains appears below the Volume Profile asset. You can add or remove Volume Overrides and edit their properties. Refer to [Volume Overrides](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@17.0/manual/VolumeOverrides.html) for more information about changing the Volume Overrides and properties. +The list of Volume Overrides that the Volume Profile contains appears below the Volume Profile asset. You can add or remove Volume Overrides and edit their properties. Refer to [Volume Overrides](https://docs.unity3d.com/Manual/urp/VolumeOverrides.html) for more information about changing the Volume Overrides and properties. ### Example: Create a local post-processing effect diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/set-up-the-volumetric-sample-scene.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/set-up-the-volumetric-sample-scene.md deleted file mode 100644 index a39d575afce..00000000000 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/set-up-the-volumetric-sample-scene.md +++ /dev/null @@ -1,47 +0,0 @@ -# Set up a volumetric sample scene - -1. Select **Window** > **Package manager**. - -1. In the **Package manager** window, select **High Definition RP**. - -1. In the **Samples** tab, import the **Volumetric Samples**. - -1. In the **Project** window, go to **Assets** > **Samples** > **High Definition RP** > HDRP version number > **Volumetric samples** > **Scenes.** - -1. Select the **Volumetric Samples scene.** - -1. Go to **Assets** > **Samples** > **High Definition RP** > HDRP version number > **Volumetric sample**s > **Prefabs**. - -1. Drag one of the following sample prefabs in your scene: - -![3D Texture Mask Sample](Images/3d-texture-mask-sample.jpg) - -**3D Texture Mask Sample** - -![About Blending Modes](Images/about-blending-modes.jpg) - -**About Blending Modes** - -![Cloudy Sample](Images/cloudy-sample.jpg) - -**Cloudy Sample** - -![Foggy Orb and Light Sample](Images/foggy-orb-and-light-sample.jpg) - -**Foggy Orb and Light Sample** - -![Fumes Sample](Images/fumes-sample.jpg) - -**Fumes Sample** - -![Ground Smoke Prefab Sample](Images/ground-smoke-prefab-sample.jpg) - -**Ground Smoke Prefab Sample** - -![Procedural Noise Fog Sample](Images/procedural-noise-fog-sample.jpg) - -**Procedural Noise Fog Sample** - -![Volumetric Heart Sample](Images/volumetric-heart-sample.jpg) - -**Volumetric Heart Sample** diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/settings-and-properties-related-to-the-water-system.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/settings-and-properties-related-to-the-water-system.md index 2147606ca38..20580625e0a 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/settings-and-properties-related-to-the-water-system.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/settings-and-properties-related-to-the-water-system.md @@ -91,7 +91,7 @@ The options are: Script Interactions -Enable to have the ability to query the water surface position and current direction from the simulation. See Scripting in the water system for more information. +Enable to have the ability to query the water surface position and current direction from the simulation. Refer to Scripting in the water system for more information. @@ -234,7 +234,6 @@ Enable to activate the option for creating a deformation decal. Enable to activate the option for creating a foam decal. -A texture HDRP uses to attenuate or supress Ripple (green channel) and Swell or Agitation (red channel) water frequencies. For more information, see Decals and masking in the water system. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-debug-mode.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-debug-mode.md index 4afccf381bc..3ec9bfecdfb 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-debug-mode.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-debug-mode.md @@ -8,33 +8,33 @@ The Water Mask mode displays the reduction of each simulation band. White means You can select which channel of the water mask to debug by using the **Water Mask Mode** dropdown. Note that, for saving texture space, the red channel always attenuate the first band (First swell band for oceans, Agitation for rivers, Ripples for pools), green channel, the second band (Second swell band for oceans, ripples for rivers)... etc -![](Images/water-debug-watermask.png) +![An island scene, with a gradient texture that represents the simulation band changing as the water approaches the island.](Images/water-debug-watermask.png) ## Simulation Foam Mask The Simulation Foam Mask mode shows where the simulation foam is rendered on your water surface. -![](Images/water-debug-foammask.png) +![A glacier, with a waterfall displayed as black.](Images/water-debug-foammask.png) ## Current The Current mode shows in which direction the current flows. You can select between swell or agitation and ripples to debug. Note that this mode does not take into account the chaos parameter set in the simulation section. -![](Images/water-debug-current.png) +![An aerial view of a winding river, with small arrows on the water surface that represent the current direction.](Images/water-debug-current.png) ## Deformation The Deformation mode shows the deformation area and the deformation height of the water surface. -![](Images/water-debug-deformation.png) +![A glacier with a waterfall. Different shades of blue represent deformation.](Images/water-debug-deformation.png) ## Foam The Foam mode shows the foam are and where the generated foam (both foam from foam generated and simulation foam) are rendered. You can select to show Surface Foam or Deep Foam using the **Water Foam Mode**. -![](Images/water-debug-foam.png) +![An island scene, with the water surface rendered bright blue to make surface foam clearer.](Images/water-debug-foam.png) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/water.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/water.md index f46fa11d839..ae3024c4a22 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/water.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/water.md @@ -19,3 +19,4 @@ Create water in the High Definition Render Pipeline (HDRP). | [Materials in the water system](water-materials-in-the-water-system.md) | The effects of water Material properties. | | [Scripting in the water system](water-scripting-in-the-water-system.md) | How to write scripts that interact with the water system. | | [VFX Graph in the water system](water-vfx-interaction.md) | How to make VFX Graph interact with the water system. | + diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/whats-new-12.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/whats-new-12.md index edb08ee45b1..9f905a6d002 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/whats-new-12.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/whats-new-12.md @@ -25,7 +25,7 @@ You can use this Vertex Block to create an additional velocity for procedural ge ### Cloud Layer System -![](Images/HDRPFeatures-CloudLayer.png) +![A scene of a town square with a cloudy sky.](Images/HDRPFeatures-CloudLayer.png) HDRP 12.0 introduces a cloud system that you can control through the volume framework. @@ -37,28 +37,24 @@ For detailed steps on how to create custom clouds in your scene, see [creating c HDRP now includes a Volumetric Clouds volume override which allows you to precisely control the cloud coverage in your scene. These clouds receive realistic lighting from the sun and sky. For more information, see the [Volumetric Clouds](create-realistic-clouds-volumetric-clouds.md) documentation. -![](Images/volumetric-clouds-2.png) +![A snowy mountain range and lake with a cloudy sky at sunset.](Images/volumetric-clouds-2.png) -![](Images/volumetric-clouds-1.png) +![A snowy mountain range on a clear day with clouds in the sky.](Images/volumetric-clouds-1.png) ### Lens Flares -![](Images/LensFlareSamples2.png) +![Lens flare effects from a bright sun viewed from space.](Images/LensFlareSamples2.png) HDRP 12.0 includes a new Lens Flare system. You can attach a Lens Flare (SRP) component to any GameObject. Some Lens Flare properties only appear when you attach a Lens Flare (SRP) component to a light. Each Lens Flare has optional multiple elements that you can control individually. HDRP also provides a [new lens flare asset](shared/lens-flare/lens-flare-asset.md) and a [new lens flare component](shared/lens-flare/lens-flare-component.md) that you can attach to any GameObject. -HDRP includes a new Lens Flare sample that uses presets and Textures. You can see an example of the Textures included in this sample in the image below: - -![](Images/LensFlareTextures.png) +HDRP includes a new Lens Flare sample that uses presets and Textures. ### Light Anchor From HDRP 12.0, HDRP includes a new [Light Anchor](light-anchor.md) component. You can attach this component to any light to control the light in Main Camera view. -![](Images/LightAnchor0.png) - ### Light List HDRP version 2021.2 includes a new setting in `ShaderConfig.cs` called `FPTLMaxLightCount`. You can use this setting to set the maximum number of lights per tile on the GPU. To increase this value, you must generate a new Shader config project. For information on how to create a new Shader config project, see [HDRP-Config-Package](). @@ -83,7 +79,7 @@ The image below displays the **Temporal Anti-Aliasing (TAA) Upscale** (A) next t For more information, see [Dynamic Resolution](Dynamic-Resolution.md) -![A:TAA Upscale. B: Catmull-Rom.](Images/DynamicRes_SidebySide_AB.png) +![An industrial environment rendered twice, using TAA (A) and Catmull-Rom (B).](Images/DynamicRes_SidebySide_AB.png) #### NVIDIA’s Deep Learning Super Sampling @@ -113,10 +109,6 @@ To enable **AMD’s FidelityFX Super Resolution**.: - Open the **Default Fallback Upscale Filter** drop down . - Select **FidelityFX Super Resolution**. -![](Images/FidelityFX-Menu.png) - - - ### Mip Bias Support This HDRP version introduces a new setting called **Use Mip Bias.** This setting improves the detail of any upscaling filters you use in your scene. @@ -128,8 +120,6 @@ To enable **Use Mip Bias**: - Expand the **Dynamic resolution** section. - Enable the **Use Mip Bias** checkbox. -![](Images/UseMipBias.png) - ### ClearFlag HDRP 2021.2 includes the new `ClearFlag.Stencil` function. Use this to clear all flags from a stencil. @@ -138,7 +128,7 @@ From HDRP 2021.2, `ClearFlag.Depth` does not clear stencils. ### Probe Volumes Global Illumination (Experimental) -![](Images/ProbeVolumesGI.png) +![A classroom scene, with a 3D grid of Probe Volume probes represented as white spheres throughout the scene.](Images/ProbeVolumesGI.png) HDRP 12.0 introduces an experimental version of the Probe Volume system that creates pre-computed probe-based global illumination. You can use this system to place light probes automatically and create per-pixel lighting. @@ -206,7 +196,7 @@ You can also choose whether to hide or display ### Path tracing improvements -![](Images/HDRPFeatures-FabricPT.png) +![A high-definition living room scene, with highly realistic textures on the sofa, chair, and cushions.](Images/HDRPFeatures-FabricPT.png) HDRP’s path tracing now supports more materials: @@ -244,7 +234,7 @@ When you create a custom decal shader in HDRP 12.x, the accumulated normal value ### Decal normal blending -![](Images/HDRPFeatures-SurfGrad.png) +![A rock with a Unity logo, rendered twice. The image on the right uses the new additive normal blending method, so the logo blends into the surface detail.](Images/HDRPFeatures-SurfGrad.png) From HDRP 12.0 you can use a new option in the [HDRP Asset](HDRP-Asset.md) (**Rendering > Decals > Additive Normal Blending**) to additively blend decal normals with the GameObject's normal map. @@ -272,10 +262,10 @@ Improved the quality of the physically-based Depth Of Field in the following way - Improved support for MSAA to remove artifacts around the edges of visible GameObjects. -![](Images/HDRPFeatures-BetterDoF.png) +![A highly detailed render of a cassette player on a desk, with a depth of field effect that makes surfaces blurry towards and away from the camera.](Images/HDRPFeatures-BetterDoF.png) ### Physically Based Hair Shader -![](Images/PBHairShader.png) +![A head of curly hair.](Images/PBHairShader.png) HDRP 12.0 includes a new physically-based Marschner hair shader. You can use this as an alternative to the Kajiya-Kay hair shader. This new shading model allows you to quickly create a hair material that fits any lighting scenario. For more information about this new hair shader model and its parameters, see [Hair Master Stack](hair-master-stack-reference.md). @@ -306,8 +296,6 @@ HDRP 12.0 includes a built-in custom pass that you can use to generate Object ID HDRP 12.0 includes a more precise method to calculate specular occlusion based on Ambient Occlusion (AO) and Bent normals. This replaces the old method for all materials and shader graphs. -![](Images/SpecularOcclusion.png) - ### Ambient Occlusion and Specular Occlusion In HDRP 12.x, the algorithm that calculates how ambient occlusion and specular occlusion contributes to direct lighting doesn’t use the multi-bounce contribution (GTAOMultiBounce). This gives a more accurate direct lighting result. @@ -323,11 +311,11 @@ HDRP 12.0 improves the quality of the [Screen Space Global Illumination (SSGI)]( SSGI off: -![](Images/SSGIoff.png) +![A room with SSGI off.](Images/SSGIoff.png) SSGI on: -![](Images/SSGIon.png) +![A room with SSGI on, with improved lighting.](Images/SSGIon.png) ### Ray Traced Global Illumination diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/whats-new-17.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/whats-new-17.md index 079d59900b3..1c5d5f3b27f 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/whats-new-17.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/whats-new-17.md @@ -8,7 +8,7 @@ This page contains an overview of new features, improvements, and issues resolve Adaptive Probe Volumes can now be enhance with [Sky Occlusion](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.0/manual/probevolumes-skyocclusion.html) baking. -![](Images/WhatsNew17_SkyOcclusionTOD.png) +![The exterior of an apartment building lit differently in the morning, afternoon, and evening.](Images/WhatsNew17_SkyOcclusionTOD.png) This add a way to perform dynamic time of day for exterior with a sun light on top of a static lighting scenario like for interior done with Adaptive Probe Volumes. @@ -17,9 +17,6 @@ This add a way to perform dynamic time of day for exterior with a sun light on t #### Fallback New user interface for upscaler fallbacks. This new user interface will help the user set their preference in case a platform or API does not support such upscaler. -![](Images/stp-upscaler-ux.png) - - #### AMD FidelityFX 2.1 Super Resolution for Windows Support for AMD FidelityFX 2.1 Super Resolution for Dx11, Dx12, Vulkan in any GPU vendor. The upscaler includes predefined upscaling modes and can easily be turned on in the HDRP settings by enabling the com.unity.amd internal package. This feature also includes the plugin and public API for programmability and accessibility of this effect on any scriptable object. @@ -28,13 +25,11 @@ Support for AMD FidelityFX 2.1 Super Resolution for Dx11, Dx12, Vulkan in any GP Support for the Spatial-Temporal Post-Processing (STP) upscaler has been added for all platforms. This upscaler produces higher quality visuals than the existing TAAU upscaler, but it only supports dynamic resolution when the hardware dynamic resolution mode is active. This means APIs such as DX11 are only capable of using STP when the resolution scale is forced to a fixed percentage. -![](Images/stp-comparison.png) - ### SpeedTree Support of SpeedTree 9 files (.st9) exported by the SpeedTree Modeler application. Speedtree is now compatible with GPU Resident Drawer introduced in this release for improve CPU performance. In addition re-designs the SpeedTreeWind & SpeedTreeWindManager implementations to support multiple SpeedTree wind technologies as well as scalable CPU performance. Performance improvements depends on number of tree instances with wind, a speed up of x5-x10 CPU can be observe on MainThread and RenderThread depends on scenario. -![](Images/fantasy_kingdom_environment.jpg) +![The [Fantasy Kingdom](https://unity.com/demos/fantasy-kingdom) scene with trees in bright autumn colors.](Images/fantasy_kingdom_environment.jpg) ### Path Tracing @@ -42,13 +37,13 @@ Support of SpeedTree 9 files (.st9) exported by the SpeedTree Modeler applicatio Disc and tube shaped area lights are now supported with path tracing. -![](Images/Path-traced-tube-disc-lights.png) +![A car with underbody lights.](Images/Path-traced-tube-disc-lights.png) #### Separate Volumetric Fog denoising The HDRP path tracer now offers an option to denoise the volumetric fog effect separately from the full color output. -![](Images/Separate-volumetric-denoising.png) +![A foggy town square scene, with separate volumetric fog denoising on the left that provides smoother fog.](Images/Separate-volumetric-denoising.png) ### Performance @@ -58,12 +53,10 @@ GPU Resident Drawer Leveraging the power of the [Batch Render Group API](https:/ The extra GPU Culling functionality built on top of GPU Resident drawer allows for GPU-side culling of instances that do not contribute to the final image. This can help to improve GPU performance in scenes with heavy overdraw, and does not require any additional authoring to try out. With Rendering Debugger integration. -![](Images/gpu-occlusion-culling.png) +![The Rendering Debugger displaying occlusion culling information.](Images/gpu-occlusion-culling.png) Enable GPU Resident Drawer and occlusion culling via checkbox on the SRP asset. -![](Images/gpu-occlusion-culling-ux.png) - ## Updated ### Adaptive Probe Volumes @@ -78,8 +71,6 @@ A new toggle was also added to the Probe Volume Graphics settings to disable the Planet parametrization for effects like fog, physically based sky and volumetric clouds have been moved to a shared place in the [Visual Environement override](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.0/manual/visual-environment-volume-override-reference). -![](Images/environment-plane-settings.jpg) - #### Physically Based Sky The Physically Based sky has received a set of improvements and optimizations. @@ -88,33 +79,31 @@ The memory usage for the precomputed tables has also been reduced. Memory and pe Additionally, the PBR sky now includes an ozone layer as part of the atmosphere model. This is especially noticeable when the sun is close to the horizon. -![](Images/ozone.png) +![A cloudy sky at sunset, with an ozone layer on the right that darkens the sky.](Images/ozone.png) Finally, aerial perspective can now be enabled to simulate light absorption by particles in the atmosphere when looking at objects in the distance, such as mountains or clouds. -![](Images/scattering.png) +![A cloudy sky, with atmospheric scattering on the right that makes the centre of the clouds brighter.](Images/scattering.png) #### Volumetric clouds The volumetric clouds are not clipped by the far plane anymore. Additionally, earth curvature control was removed as Planet settings are now controlled from the Visual Environement. Local Clouds option is also removed, as far plane clipping does not happen anymore. To preserve the behavior of camera not being able to go inside the clouds, you should now set the **Rendering Space** option in **Camera Space** from the Visual Environement -![](Images/visualenvironment-renderingspace.png) - #### Water system Support of GameObject transform on Water Surfaces have been improved. Infinite Oceans and surfaces with Instanced Quad geometry can now be translated and rotated, and support setting a negative scale to flip the surface. Added a Water Decal target for ShaderGraph in order to output water deformation and foam directly to the atlas, and avoid going through a CustomRenderTexture. Using the same graph also simplifies authoring when deformation and foam generation are linked. Additionally foam is now animated to follow the current direction. -![](Images/water-decal.png) +![A shader graph with a Water Decal target, and the effect it produces on a lake.](Images/water-decal.png) Underwater rendering now supports using the volumetric fog to rendering god rays and light shafts. -![](Images/volumetric-underwater.png) +![An underwater view with light shafts shining through from above.](Images/volumetric-underwater.png) Finally, a node has been added to the shadergraph to sample the height of the camera relative to the water surface. It can be used to create water drips and droplets on the camera. Refer to the underwater scene from the water samples in the package manager to see it in action. -![](Images/Waterline.png) +![A camera at the surface level of an ocean, with droplets on the lens.](Images/Waterline.png) #### Volumetric Fog @@ -131,8 +120,6 @@ They are now more consistent and coherent across the different samples. There is more sharing between pipelines and packages and have dependencies in samples themselves. More explanations, links, files are included to better understand what is presented. -![](Images/samples-materials.png) - ### Lens Flare Lens Flares are now have improved XR support. @@ -142,29 +129,23 @@ Additionally, a new ring procedural shape have been added as well as few other f - Support for radial gradient for procedural shapes. - Support for light override to be able to have multiple flares affected by one light. -![](Images/shared/lens-flare/lensflare-ring.png) - ### Hair Improve the workflow for width of a line with the High Quality Line Rendering Feature. Users are now able to express the width in centimeter units on a per-vertex basis. -![](Images/per-vertex-width-values.png) +![At the top, eyebrows with no width values. At the bottom, eyebrows with per-vertex width values, which are softer. ](Images/per-vertex-width-values.png) Character using per-vertex width values for peach fuzz with uniform width of 0.01cm -![](Images/orb-hair.png) +![Character using per-vertex width values for peach fuzz with uniform width of 0.01cm.](Images/orb-hair.png) Also, a new rendering LOD mode based on screen coverage of a hair asset have been added to culls strands based on some kind of heuristic. The screen coverage LOD mode allows an artist to define an animation curve, where the x-axis is the ratio between the screen space bounding-box of the hair instance to the viewport. The y-axis is the percentage of strands to render based on this ratio. -![](Images/ghost-beast.png) - ### Area Lights Area light now used a "pillow" windowing function that is used for range attenuation of both rectangular and line lights. Both area (with cookie) and line lights now works correctly with every material type including Water, Hair, Fabric shaders, dual lobe SSS. In addition this version reduce the amount of CPU memory used to store LTC tables. -![](Images/Area_Materials.png) - ### Path Tracing #### Include for Path Tracing checkbox diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogEditor.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogEditor.cs index 747416783e1..b640ac13f40 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogEditor.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogEditor.cs @@ -111,7 +111,7 @@ static void DrawGizmosSelected(LocalVolumetricFog localVolumetricFog, GizmoType || s_ShapeBox == null || s_ShapeBox.Equals(null)) return; - using (new Handles.DrawingScope(Matrix4x4.TRS(localVolumetricFog.transform.position, localVolumetricFog.transform.rotation, Vector3.one))) + using (new Handles.DrawingScope(Matrix4x4.TRS(localVolumetricFog.transform.position, localVolumetricFog.transform.rotation, localVolumetricFog.effectiveScale))) { // Blend box s_BlendBox.center = CenterBlendLocalPosition(localVolumetricFog); @@ -131,7 +131,7 @@ static void DrawGizmosSelected(LocalVolumetricFog localVolumetricFog, GizmoType void OnSceneGUI() { //Note: for each handle to be independent when multi-selecting LocalVolumetricFog, - //We cannot rely hereon SerializedLocalVolumetricFog which is the collection of + //We cannot rely here on SerializedLocalVolumetricFog which is the collection of //selected LocalVolumetricFog. Thus code is almost the same of the UI. LocalVolumetricFog localVolumetricFog = target as LocalVolumetricFog; @@ -139,7 +139,7 @@ void OnSceneGUI() switch (EditMode.editMode) { case k_EditBlend: - using (new Handles.DrawingScope(Matrix4x4.TRS(localVolumetricFog.transform.position, localVolumetricFog.transform.rotation, Vector3.one))) + using (new Handles.DrawingScope(Matrix4x4.TRS(localVolumetricFog.transform.position, localVolumetricFog.transform.rotation, localVolumetricFog.effectiveScale))) { //contained must be initialized in all case s_ShapeBox.center = Vector3.zero; @@ -186,10 +186,10 @@ void OnSceneGUI() case k_EditShape: //important: if the origin of the handle's space move along the handle, //handles displacement will appears as moving two time faster. - using (new Handles.DrawingScope(Matrix4x4.TRS(Vector3.zero, localVolumetricFog.transform.rotation, Vector3.one))) + using (new Handles.DrawingScope(Matrix4x4.TRS(localVolumetricFog.transform.position, localVolumetricFog.transform.rotation, localVolumetricFog.effectiveScale))) { //contained must be initialized in all case - s_ShapeBox.center = Quaternion.Inverse(localVolumetricFog.transform.rotation) * localVolumetricFog.transform.position; + s_ShapeBox.center = Vector3.zero; s_ShapeBox.size = localVolumetricFog.parameters.size; Vector3 previousSize = localVolumetricFog.parameters.size; @@ -257,9 +257,6 @@ void OnSceneGUI() 1.0f - (newSize.y > 0.00000001 ? (newSize.y - newUniformFade) / newSize.y : 0f), 1.0f - (newSize.z > 0.00000001 ? (newSize.z - newUniformFade) / newSize.z : 0f)); } - - Vector3 delta = localVolumetricFog.transform.rotation * s_ShapeBox.center - localVolumetricFog.transform.position; - localVolumetricFog.transform.position += delta; } } break; diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogUI.Drawer.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogUI.Drawer.cs index 4fdedfa0024..24298da733b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogUI.Drawer.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogUI.Drawer.cs @@ -79,6 +79,8 @@ static void Drawer_VolumeContent(SerializedLocalVolumetricFog serialized, Editor Vector3 previousPositiveFade = serialized.editorPositiveFade.vector3Value; Vector3 previousNegativeFade = serialized.editorNegativeFade.vector3Value; + EditorGUILayout.PropertyField(serialized.scaleMode, Styles.s_ScaleMode); + EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(serialized.size, Styles.s_Size); if (EditorGUI.EndChangeCheck()) diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogUI.Skin.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogUI.Skin.cs index 576feb02bcb..fd6f24e3e67 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogUI.Skin.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/LocalVolumetricFogUI.Skin.cs @@ -16,6 +16,7 @@ internal static class Styles EditorGUIUtility.IconContent("PreMatCube", "|Modify the influence volume. (SHIFT+2)") }; + public static readonly GUIContent s_ScaleMode = new GUIContent("Scale Mode", "Specifies the scaling mode to apply to the Local Volumetric Fog Volume."); public static readonly GUIContent s_Size = new GUIContent("Size", "Modify the size of this Local Volumetric Fog. This is independent of the Transform's Scale."); public static readonly GUIContent s_AlbedoLabel = new GUIContent("Single Scattering Albedo", "The color this fog scatters light to."); public static readonly GUIContent s_MeanFreePathLabel = new GUIContent("Fog Distance", "Density at the base of the fog. Determines how far you can see through the fog in meters."); diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/SerializedLocalVolumetricFog.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/SerializedLocalVolumetricFog.cs index 33f03f41e89..2785963a2a6 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/SerializedLocalVolumetricFog.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/VolumetricLighting/SerializedLocalVolumetricFog.cs @@ -16,6 +16,7 @@ class SerializedLocalVolumetricFog public SerializedProperty textureScroll; public SerializedProperty textureTile; + public SerializedProperty scaleMode; public SerializedProperty size; SerializedProperty positiveFade; @@ -54,6 +55,7 @@ public SerializedLocalVolumetricFog(SerializedObject serializedObject) textureScroll = densityParams.FindPropertyRelative("textureScrollingSpeed"); textureTile = densityParams.FindPropertyRelative("textureTiling"); + scaleMode = densityParams.FindPropertyRelative("scaleMode"); size = densityParams.FindPropertyRelative("size"); positiveFade = densityParams.FindPropertyRelative("positiveFade"); diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDSubTarget.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDSubTarget.cs index 49ef88a43ee..02c1f8fbab2 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDSubTarget.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDSubTarget.cs @@ -213,7 +213,9 @@ protected SubShaderDescriptor PostProcessSubShader(SubShaderDescriptor subShader { if (passDescriptor.defines == null) passDescriptor.defines = new(); - passDescriptor.defines.Add(CoreDefines.SupportGlobalMipBias); + + if (!passDescriptor.defines.Any(d => d.descriptor.referenceName == CoreDefines.SupportGlobalMipBias.First().descriptor.referenceName)) + passDescriptor.defines.Add(CoreDefines.SupportGlobalMipBias); } CollectPassKeywords(ref passDescriptor); @@ -287,7 +289,9 @@ protected KernelDescriptor PostProcessKernel(KernelDescriptor kernel) { if (passDescriptor.defines == null) passDescriptor.defines = new(); - passDescriptor.defines.Add(CoreDefines.SupportGlobalMipBias); + + if (!passDescriptor.defines.Any(d => d.descriptor.referenceName == CoreDefines.SupportGlobalMipBias.First().descriptor.referenceName)) + passDescriptor.defines.Add(CoreDefines.SupportGlobalMipBias); } CollectPassKeywords(ref passDescriptor); diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/UIBlocks/SurfaceOptionUIBlock.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/UIBlocks/SurfaceOptionUIBlock.cs index 7e49b97def1..4035bc60edf 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/UIBlocks/SurfaceOptionUIBlock.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/UIBlocks/SurfaceOptionUIBlock.cs @@ -325,7 +325,7 @@ public override void LoadMaterialProperties() transmissionEnable = FindProperty(kTransmissionEnable); clearCoatEnabled = FindProperty(kClearCoatEnabled); - + excludeFromTUAndAA = FindProperty(kExcludeFromTUAndAA); if ((m_Features & Features.DoubleSidedNormalMode) != 0) @@ -874,6 +874,15 @@ protected void DrawLitSurfaceOptions() materialEditor.ShaderProperty(depthOffsetEnable, Styles.depthOffsetEnableText); EditorGUI.indentLevel--; } + + if (displaceMode != DisplacementMode.None && materials[0].GetTexture(kHeightMap) == null) + { + EditorGUILayout.Space(); + EditorGUI.indentLevel++; + + EditorGUILayout.HelpBox("Please set a valid HeightMap (in the 'Surface Inputs' category) to apply any displacement.", MessageType.Warning); + EditorGUI.indentLevel--; + } } } diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Water/WaterSurface/VFX/SampleWaterSurface.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Water/WaterSurface/VFX/SampleWaterSurface.cs index 15e58885dce..2921ec8d156 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Water/WaterSurface/VFX/SampleWaterSurface.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Water/WaterSurface/VFX/SampleWaterSurface.cs @@ -20,9 +20,7 @@ public override void OnInspectorGUI() } } } - - - [VFXHelpURL("Operator-SampleWaterSurface")] + [VFXInfo(category = "Sampling")] class SampleWaterSurface : VFXOperator { diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs index 1c5c84ccc5f..07f2a024f5a 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs @@ -1078,6 +1078,7 @@ void RegisterMaterialDebug() { var container = new DebugUI.Container() { + displayName = "#MaterialRenderingLayers", isHiddenCallback = () => !IsDebuggingRenderingLayers(), children = { @@ -1099,45 +1100,17 @@ void RegisterMaterialDebug() } }; - var field = new DebugUI.BitField + var renderingLayersField = new DebugUI.RenderingLayerField() { nameAndTooltip = LightingStrings.LightLayersFilterLayers, - getter = () => data.lightingDebugSettings.debugLightLayersFilterMask, - setter = value => data.lightingDebugSettings.debugLightLayersFilterMask = (RenderingLayerMask)value, - enumType = typeof(RenderingLayerMask), - isHiddenCallback = () => data.lightingDebugSettings.debugSelectionLightLayers + getter = () => (uint)data.lightingDebugSettings.debugLightLayersFilterMask, + setter = value => data.lightingDebugSettings.debugLightLayersFilterMask = (RenderingLayerMask)(uint)value, + getRenderingLayerColor = index => data.lightingDebugSettings.debugRenderingLayersColors[index], + setRenderingLayerColor = (value, index) => data.lightingDebugSettings.debugRenderingLayersColors[index] = value, + isHiddenCallback = () => data.lightingDebugSettings.debugSelectionLightLayers, }; - var renderingLayers = new List(); - for (int i = 0; i < 32; i++) - renderingLayers.Add($"Unused Rendering Layer {i}"); - - var names = UnityEngine.RenderingLayerMask.GetDefinedRenderingLayerNames(); - for (int i = 0; i < names.Length; i++) - { - var index = UnityEngine.RenderingLayerMask.NameToRenderingLayer(names[i]); - renderingLayers[index] = names[i]; - } - - for (int i = 0; i < field.enumNames.Length - 1; i++) - field.enumNames[i + 1].text = renderingLayers[i]; - - container.children.Add(field); - - var layersColor = new DebugUI.Foldout() { nameAndTooltip = LightingStrings.LightLayersColor, flags = DebugUI.Flags.EditorOnly }; - for (int i = 0; i < renderingLayers.Count; i++) - { - int index = i; - layersColor.children.Add(new DebugUI.ColorField - { - displayName = renderingLayers[i], - flags = DebugUI.Flags.EditorOnly, - getter = () => data.lightingDebugSettings.debugRenderingLayersColors[index], - setter = value => data.lightingDebugSettings.debugRenderingLayersColors[index] = value - }); - } - - container.children.Add(layersColor); + container.children.Add(renderingLayersField); list.Add(container); } @@ -1247,7 +1220,6 @@ static class LightingStrings public static readonly NameAndTooltip LightLayersUseSelectedLight = new() { name = "Filter Light Layers by Light", tooltip = "Highlight Renderers affected by the selected light." }; public static readonly NameAndTooltip LightLayersSwitchToLightShadowLayers = new() { name = "Use Light's Shadow Layer Mask", tooltip = "Highlight Renderers that cast shadows for the selected light." }; public static readonly NameAndTooltip LightLayersFilterLayers = new() { name = "Filter Layers", tooltip = "Use the drop-down to filter light layers that you want to visialize." }; - public static readonly NameAndTooltip LightLayersColor = new() { name = "Layers Color", tooltip = "Select the display color of each light layer." }; // Material Overrides public static readonly NameAndTooltip OverrideSmoothness = new() { name = "Override Smoothness", tooltip = "Enable the checkbox to override the smoothness for the entire Scene." }; diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl index 7b9a677238c..00f5920d294 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.hlsl @@ -192,6 +192,9 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS // With XR single-pass and camera-relative: offset position to do lighting computations from the combined center view (original camera matrix). // This is required because there is only one list of lights generated on the CPU. Shadows are also generated once and shared between the instanced views. + // We keep the unmodified per-eye position around since we use it to sample APV. Passing the modified world space position to GetAbsolutePositionWS after + // this point would give incorrect results. + float3 unmodifiedPositionWS = posInput.positionWS; ApplyCameraRelativeXR(posInput.positionWS); LightLoopContext context; @@ -497,7 +500,7 @@ void LightLoop( float3 V, PositionInputs posInput, PreLightData preLightData, BS // Reflect normal to get lighting for reflection probe tinting float3 R = reflect(-V, bsdfData.normalWS); - EvaluateAdaptiveProbeVolume(GetAbsolutePositionWS(posInput.positionWS), + EvaluateAdaptiveProbeVolume(GetAbsolutePositionWS(unmodifiedPositionWS), bsdfData.normalWS, -bsdfData.normalWS, R, diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricCloudsFullResolution.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricCloudsFullResolution.cs index 3f710ba6dd9..8633f2affc8 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricCloudsFullResolution.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricCloudsFullResolution.cs @@ -1,4 +1,3 @@ -using UnityEngine.Experimental.Rendering; using UnityEngine.Rendering.RenderGraphModule; namespace UnityEngine.Rendering.HighDefinition @@ -56,7 +55,6 @@ VolumetricCloudsParameters_FullResolution PrepareVolumetricCloudsParameters_Full static void TraceVolumetricClouds_FullResolution(CommandBuffer cmd, VolumetricCloudsParameters_FullResolution parameters, GraphicsBuffer ambientProbeBuffer, RTHandle colorBuffer, RTHandle depthPyramid, - RTHandle intermediateCloudsLighting, RTHandle intermediateCloudsDepth, RTHandle cloudsLighting, RTHandle cloudsDepth) { // Compute the number of tiles to evaluate @@ -74,10 +72,6 @@ static void TraceVolumetricClouds_FullResolution(CommandBuffer cmd, VolumetricCl // Ray-march the clouds for this frame DoVolumetricCloudsTrace(cmd, finalTX, finalTY, parameters.viewCount, in parameters.commonData, ambientProbeBuffer, colorBuffer, depthPyramid, - intermediateCloudsLighting, intermediateCloudsDepth); - - DoVolumetricCloudsUpscale(cmd, parameters.combineKernel, finalTX, finalTY, parameters.viewCount, in parameters.commonData, - intermediateCloudsLighting, intermediateCloudsDepth, colorBuffer, depthPyramid, cloudsLighting, cloudsDepth); } @@ -91,10 +85,6 @@ class VolumetricCloudsFullResolutionData public TextureHandle depthPyramid; public BufferHandle ambientProbeBuffer; - // Intermediate buffers - public TextureHandle tracedCloudsLighting; - public TextureHandle tracedCloudsDepth; - // Output buffer public TextureHandle cloudsLighting; public TextureHandle cloudsDepth; @@ -115,7 +105,6 @@ VolumetricCloudsOutput RenderVolumetricClouds_FullResolution(RenderGraph renderG passData.depthPyramid = builder.ReadTexture(depthPyramid); passData.ambientProbeBuffer = builder.ReadBuffer(renderGraph.ImportBuffer(m_CloudsDynamicProbeBuffer)); - CreateTracingTextures(renderGraph, builder, settings, 1.0f, out passData.tracedCloudsLighting, out passData.tracedCloudsDepth); CreateOutputTextures(renderGraph, builder, settings, out passData.cloudsLighting, out passData.cloudsDepth); builder.SetRenderFunc( @@ -123,7 +112,6 @@ VolumetricCloudsOutput RenderVolumetricClouds_FullResolution(RenderGraph renderG { TraceVolumetricClouds_FullResolution(ctx.cmd, data.parameters, data.ambientProbeBuffer, data.colorBuffer, data.depthPyramid, - data.tracedCloudsLighting, data.tracedCloudsDepth, data.cloudsLighting, data.cloudsDepth); }); diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/VolumetricClouds.compute b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/VolumetricClouds.compute index 82bedf9ca10..5fb00d2a89f 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/VolumetricClouds.compute +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/VolumetricClouds.compute @@ -76,13 +76,14 @@ void REPROJECT_CLOUDS(uint3 dispatchThreadId : SV_DispatchThreadID, // 2. Check history validity float2 motionVector = EvaluateCloudMotionVectors(fullResCoord, currentCloudDepth, 1.0); - float2 historyUV = (intermediateCoord.xy + 0.5) / _IntermediateScreenSize.xy - motionVector; + float2 historyUV = (intermediateCoord.xy + 0.5) * _IntermediateScreenSize.zw - motionVector; float4 history = SAMPLE_TEXTURE2D_X_LOD(_HistoryVolumetricClouds1Texture, s_linear_clamp_sampler, historyUV * _HistoryViewportScale, 0); float previousSampleCount = history.x; // History is invalid if sample is out of screen or scene depth was too different - if (all(historyUV == saturate(historyUV)) && previousSampleCount >= 0.5f && EvaluateDepthDifference(history.y, currentSceneDepth)) + float2 historyUVMax = 1.0 - 0.5 * _IntermediateScreenSize.zw - 0.000001; // To avoid lerp with garbage pixels + if (all(0.0 <= float4(historyUV, historyUVMax - historyUV)) && previousSampleCount >= 0.5f && EvaluateDepthDifference(history.y, currentSceneDepth)) { float4 previousColor = SAMPLE_TEXTURE2D_X_LOD(_HistoryVolumetricClouds0Texture, s_linear_clamp_sampler, historyUV * _HistoryViewportScale, 0); previousColor.xyz *= GetInversePreviousExposureMultiplier() * GetCurrentExposureMultiplier(); diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricLighting.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricLighting.cs index 71585fc1924..45c53bb1d68 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricLighting.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricLighting.cs @@ -877,10 +877,12 @@ void PrepareVisibleLocalVolumetricFogList(HDCamera hdCamera, CommandBuffer cmd) ulong cameraSceneCullingMask = HDUtils.GetSceneCullingMaskFromCamera(hdCamera.camera); foreach (var volume in volumes) { + var transform = volume.transform; + Vector3 scaleSize = volume.GetScaledSize(transform); Vector3 center = volume.transform.position; // Reject volumes that are completely fade out or outside of the volumetric fog using bounding sphere - float boundingSphereRadius = Vector3.Magnitude(volume.parameters.size); + float boundingSphereRadius = Vector3.Magnitude(scaleSize); float minObbDistance = Vector3.Magnitude(center - camPosition) - hdCamera.camera.nearClipPlane - boundingSphereRadius; if (minObbDistance > volume.parameters.distanceFadeEnd || minObbDistance > fog.depthExtent.value) continue; @@ -892,8 +894,8 @@ void PrepareVisibleLocalVolumetricFogList(HDCamera hdCamera, CommandBuffer cmd) // Handle camera-relative rendering. center -= camOffset; - var transform = volume.transform; - var bounds = GeometryUtils.OBBToAABB(transform.right, transform.up, transform.forward, volume.parameters.size, center); + + var bounds = GeometryUtils.OBBToAABB(transform.right, transform.up, transform.forward, scaleSize, center); // Frustum cull on the CPU for now. TODO: do it on the GPU. // TODO: account for custom near and far planes of the V-Buffer's frustum. @@ -908,7 +910,7 @@ void PrepareVisibleLocalVolumetricFogList(HDCamera hdCamera, CommandBuffer cmd) } // TODO: cache these? - var obb = new OrientedBBox(Matrix4x4.TRS(transform.position - camOffset, transform.rotation, volume.parameters.size)); + var obb = new OrientedBBox(Matrix4x4.TRS(transform.position - camOffset, transform.rotation, scaleSize)); m_VisibleVolumeBounds.Add(obb); m_GlobalVolumeIndices.Add(volume.GetGlobalIndex()); var visibleData = volume.parameters.ConvertToEngineData(); diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs index 33f0cc975a5..f1f3c018159 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs @@ -8,6 +8,17 @@ namespace UnityEngine.Rendering.HighDefinition { + /// The scaling mode to apply to Local Volumetric Fog. + public enum LocalVolumetricFogScaleMode + { + /// Ignores the transformation hierarchy and uses the scale values in the Local Volumetric Fog component directly. + [InspectorName("Scale Invariant")] + ScaleInvariant, + /// Multiplies the lossy scale of the Transform with the Local Volumetric Fog's size then applies this to the Local Volumetric Fog component. + [InspectorName("Inherit from Hierarchy")] + InheritFromHierarchy, + } + /// Artist-friendly Local Volumetric Fog parametrization. [Serializable] public partial struct LocalVolumetricFogArtistParameters @@ -55,6 +66,9 @@ public partial struct LocalVolumetricFogArtistParameters [SerializeField, FormerlySerializedAs("advancedFade"), FormerlySerializedAs("m_AdvancedFade")] internal bool m_EditorAdvancedFade; + /// The scaling mode to apply to Local Volumetric Fog. + public LocalVolumetricFogScaleMode scaleMode; + /// Dimensions of the volume. public Vector3 size; /// Inverts the fade gradient. @@ -98,6 +112,7 @@ public LocalVolumetricFogArtistParameters(Color color, float _meanFreePath, floa textureTiling = Vector3.one; textureOffset = textureScrollingSpeed; + scaleMode = LocalVolumetricFogScaleMode.ScaleInvariant; size = Vector3.one; positiveFade = Vector3.one * 0.1f; @@ -198,6 +213,12 @@ public partial class LocalVolumetricFog : MonoBehaviour [NonSerialized] internal Material textureMaterial; + /// stores the current effective scale, Vector3.one if the component is Scale Invariant, or lossy scale if the component Inherit From Hiearchy. + internal Vector3 effectiveScale; + + /// stores the final scale of the local volumetric fog component. + internal Vector3 scaledSize; + /// Gather and Update any parameters that may have changed. internal void PrepareParameters(float time) { @@ -274,11 +295,14 @@ internal void PrepareDrawCall(int globalIndex) // We can put this in global m_RenderingProperties.SetBuffer(HDShaderIDs._VolumetricMaterialData, LocalVolumetricFogManager.manager.volumetricMaterialDataBuffer); + effectiveScale = GetEffectiveScale(this.transform); + scaledSize = GetScaledSize(this.transform); + // Send local properties inside constants instead of structured buffer to optimize GPU reads var engineData = parameters.ConvertToEngineData(); var tr = transform; var position = tr.position; - var bounds = new OrientedBBox(Matrix4x4.TRS(position, tr.rotation, parameters.size)); + var bounds = new OrientedBBox(Matrix4x4.TRS(position, tr.rotation, scaledSize)); m_RenderingProperties.SetVector(HDShaderIDs._VolumetricMaterialObbRight, bounds.right); m_RenderingProperties.SetVector(HDShaderIDs._VolumetricMaterialObbUp, bounds.up); m_RenderingProperties.SetVector(HDShaderIDs._VolumetricMaterialObbExtents, new Vector3(bounds.extentX, bounds.extentY, bounds.extentZ)); @@ -319,6 +343,16 @@ internal void PrepareDrawCall(int globalIndex) Graphics.RenderPrimitivesIndexedIndirect(renderParams, MeshTopology.Triangles, LocalVolumetricFogManager.manager.volumetricMaterialIndexBuffer, LocalVolumetricFogManager.manager.globalIndirectBuffer, 1, m_GlobalIndex); } + internal Vector3 GetEffectiveScale(Transform tr) + { + return (parameters.scaleMode == LocalVolumetricFogScaleMode.InheritFromHierarchy) ? tr.lossyScale : Vector3.one; + } + + internal Vector3 GetScaledSize(Transform tr) + { + return Vector3.Max(Vector3.one * 0.001f, Vector3.Scale(parameters.size, GetEffectiveScale(tr))); + } + #if UNITY_EDITOR void UpdateLocalVolumetricFogVisibility() { @@ -326,6 +360,7 @@ void UpdateLocalVolumetricFogVisibility() UpdateLocalVolumetricFogVisibility(isVisible); } + void UpdateLocalVolumetricFogVisibilityPrefabStage(SceneView sv) { var stage = PrefabStageUtility.GetCurrentPrefabStage(); diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFogManager.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFogManager.cs index f5026f75e10..250e8f6497c 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFogManager.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFogManager.cs @@ -105,12 +105,12 @@ void Resize(int bufferCount) unsafe void AllocateIndirectBuffers(int count) { - globalIndirectBuffer = new GraphicsBuffer(GraphicsBuffer.Target.IndirectArguments, count, sizeof(GraphicsBuffer.IndirectDrawArgs)); + globalIndirectBuffer = new GraphicsBuffer(GraphicsBuffer.Target.IndirectArguments, count, sizeof(GraphicsBuffer.IndirectDrawIndexedArgs)); globalIndirectionBuffer = new GraphicsBuffer(GraphicsBuffer.Target.Raw, count, sizeof(uint)); // Initialize with zeros to prevent weird behaviours - var zeros = new NativeArray(count * Mathf.Max(sizeof(GraphicsBuffer.IndirectDrawArgs), sizeof(uint)), Allocator.Temp, NativeArrayOptions.ClearMemory); - globalIndirectBuffer.SetData(zeros, 0, 0, count * sizeof(GraphicsBuffer.IndirectDrawArgs)); + var zeros = new NativeArray(count * Mathf.Max(sizeof(GraphicsBuffer.IndirectDrawIndexedArgs), sizeof(uint)), Allocator.Temp, NativeArrayOptions.ClearMemory); + globalIndirectBuffer.SetData(zeros, 0, 0, count * sizeof(GraphicsBuffer.IndirectDrawIndexedArgs)); globalIndirectionBuffer.SetData(zeros, 0, 0, count * sizeof(uint)); zeros.Dispose(); } diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitBuiltinData.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitBuiltinData.hlsl index ead9f16f076..af49cce571b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitBuiltinData.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitBuiltinData.hlsl @@ -21,14 +21,14 @@ float3 GetEmissiveColor(SurfaceData surfaceData) return _EmissiveColor * lerp(float3(1.0, 1.0, 1.0), surfaceData.baseColor.rgb, _AlbedoAffectEmissive); } -#ifdef _EMISSIVE_COLOR_MAP float3 GetEmissiveColor(SurfaceData surfaceData, UVMapping emissiveMapMapping) { float3 emissiveColor = GetEmissiveColor(surfaceData); +#ifdef _EMISSIVE_COLOR_MAP emissiveColor *= SAMPLE_UVMAPPING_TEXTURE2D(_EmissiveColorMap, sampler_EmissiveColorMap, emissiveMapMapping).rgb; +#endif // _EMISSIVE_COLOR_MAP return emissiveColor; } -#endif // _EMISSIVE_COLOR_MAP void GetBuiltinData(FragInputs input, float3 V, inout PositionInputs posInput, SurfaceData surfaceData, float alpha, float3 bentNormalWS, float depthOffset, out BuiltinData builtinData) { diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/ShaderPass/LitDepthPass.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/ShaderPass/LitDepthPass.hlsl index 1ce902b183b..98eabca5cc7 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/ShaderPass/LitDepthPass.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/ShaderPass/LitDepthPass.hlsl @@ -7,7 +7,7 @@ #endif // Attributes -#define REQUIRE_TANGENT_TO_WORLD ((defined(_PIXEL_DISPLACEMENT) && defined(_HEIGHTMAP) && defined(_DEPTHOFFSET_ON)) || (defined(_ALPHATEST_ON) && defined(_MAPPING_TRIPLANAR))) +#define REQUIRE_TANGENT_TO_WORLD ((defined(_PIXEL_DISPLACEMENT) && defined(_DEPTHOFFSET_ON)) || (defined(_ALPHATEST_ON) && defined(_MAPPING_TRIPLANAR))) #define REQUIRE_NORMAL defined(TESSELLATION_ON) || REQUIRE_TANGENT_TO_WORLD || defined(_VERTEX_DISPLACEMENT) || defined(OUTPUT_DECAL_BUFER) #define REQUIRE_VERTEX_COLOR (defined(_VERTEX_DISPLACEMENT) || defined(_TESSELLATION_DISPLACEMENT) || (defined(LAYERED_LIT_SHADER) && (defined(_LAYER_MASK_VERTEX_COLOR_MUL) || defined(_LAYER_MASK_VERTEX_COLOR_ADD)))) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.PostProcess.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.PostProcess.cs index e760e3f12ac..00ee3473b0c 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.PostProcess.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.PostProcess.cs @@ -3636,7 +3636,6 @@ void LensFlareComputeOcclusionDataDrivenPass(RenderGraph renderGraph, HDCamera h nonJitteredViewProjMatrix0 = data.hdCamera.mainViewConstants.nonJitteredViewProjMatrix; xrId0 = data.hdCamera.xr.multipassId; #endif - Rect viewport = data.hdCamera.finalViewport; LensFlareCommonSRP.ComputeOcclusion( data.parameters.lensFlareShader, data.hdCamera.camera, data.hdCamera.xr, xrId0, @@ -3724,9 +3723,9 @@ TextureHandle LensFlareDataDrivenPass(RenderGraph renderGraph, HDCamera hdCamera builder.SetRenderFunc( (LensFlareData data, RenderGraphContext ctx) => { - Rect viewport = data.hdCamera.finalViewport; float width = (float)data.viewport.x; float height = (float)data.viewport.y; + Rect viewport = new Rect(0, 0, width, height); #if ENABLE_VR && ENABLE_XR_MODULE // Single pass VR diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VertMesh.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VertMesh.hlsl index e9fe4012c22..618237713b0 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VertMesh.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/VertMesh.hlsl @@ -126,6 +126,12 @@ VaryingsToDS InterpolateWithBaryCoordsToDS(VaryingsToDS input0, VaryingsToDS inp #define PackVaryingsType PackVaryingsToPS #endif +#if defined(HAVE_VFX_MODIFICATION) +//compiler shows warning when using intermediate returns (see vfx culling), disable this. +#pragma warning(push) +#pragma warning(disable : 4000) +#endif + // TODO: Here we will also have all the vertex deformation (GPU skinning, vertex animation, morph target...) or we will need to generate a compute shaders instead (better! but require work to deal with unpacking like fp16) VaryingsMeshType VertMesh(AttributesMesh input, float3 worldSpaceOffset #ifdef HAVE_VFX_MODIFICATION @@ -245,6 +251,10 @@ VaryingsMeshType VertMesh(AttributesMesh input, float3 worldSpaceOffset return output; } +#if defined(HAVE_VFX_MODIFICATION) +#pragma warning(pop) +#endif + VaryingsMeshType VertMesh(AttributesMesh input) { #ifdef HAVE_VFX_MODIFICATION diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/HDRenderPipeline.WaterSystem.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/HDRenderPipeline.WaterSystem.cs index be47212054e..b5344370014 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/HDRenderPipeline.WaterSystem.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/HDRenderPipeline.WaterSystem.cs @@ -177,9 +177,9 @@ void CheckWaterCurrentData() internal void Cleanup() { - // Grab all the water surfaces in the scene - var waterSurfaces = WaterSurface.instancesAsArray; - int numWaterSurfaces = WaterSurface.instanceCount; + // Grab all the water surfaces in the scene. Including disabled ones (i.e. not in WaterSurface.instances). + var waterSurfaces = Object.FindObjectsByType(FindObjectsSortMode.None); + int numWaterSurfaces = waterSurfaces.Length; // Loop through them and display them for (int surfaceIdx = 0; surfaceIdx < numWaterSurfaces; ++surfaceIdx) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/WaterSurface/WaterSurface.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/WaterSurface/WaterSurface.cs index 99d9c5f1c6e..f74b6d9b875 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/WaterSurface/WaterSurface.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Water/WaterSurface/WaterSurface.cs @@ -86,6 +86,7 @@ public partial class WaterSurface : MonoBehaviour { #region Instance Management // Management to avoid memory allocations at fetch time + // NOTE: instances tracks active instances, disabled instances can exist and are not included. internal static HashSet instances = new HashSet(); internal static WaterSurface[] instancesAsArray = null; internal static int instanceCount = 0; diff --git a/Packages/com.unity.render-pipelines.high-definition/package.json b/Packages/com.unity.render-pipelines.high-definition/package.json index 42a813df54f..e6beb7433f3 100644 --- a/Packages/com.unity.render-pipelines.high-definition/package.json +++ b/Packages/com.unity.render-pipelines.high-definition/package.json @@ -83,7 +83,7 @@ }, { "displayName": "Water Samples", - "description": "Add a set of examples using the Water System, showcasing various environements using all the features of the system.", + "description": "Add a set of examples using the Water System, showcasing various environments using all the features of the system.", "path": "Samples~/WaterSamples", "dependencies": [ "com.unity.render-pipelines.high-definition/Samples~/Common", diff --git a/Packages/com.unity.render-pipelines.universal-config/Documentation~/index.md b/Packages/com.unity.render-pipelines.universal-config/Documentation~/index.md index 0210e7df3e2..d0d572ceb49 100644 --- a/Packages/com.unity.render-pipelines.universal-config/Documentation~/index.md +++ b/Packages/com.unity.render-pipelines.universal-config/Documentation~/index.md @@ -2,5 +2,5 @@ The Universal Render Pipeline (URP) uses this package to control the settings of some of its features. If you want to use this package to configure URP, you must link it as a local package. -* For information on how to set up and use the URP Config package, see [URP Config](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html?subfolder=/manual/URP-Config-Package.html). -* For documentation on URP itself, see [URP documentation](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html). +* For information on how to set up and use the URP Config package, see [URP Config](https://docs.unity3d.com/Manual/urp/URP-Config-Package.html). +* For documentation on URP itself, see [URP documentation](https://docs.unity3d.com/Manual/urp/urp-introduction.html). diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DDataEditor.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DDataEditor.cs index a59f2d74237..ced1ddbee80 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DDataEditor.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DDataEditor.cs @@ -13,6 +13,9 @@ class Styles public static readonly GUIContent lightBlendStylesHeader = EditorGUIUtility.TrTextContent("Light Blend Styles", "A Light Blend Style is a collection of properties that describe a particular way of applying lighting."); public static readonly GUIContent postProcessHeader = EditorGUIUtility.TrTextContent("Post-processing"); + public static readonly GUIContent filteringSectionLabel = EditorGUIUtility.TrTextContent("Filtering", "Settings that controls and define which layers the renderer draws."); + public static readonly GUIContent layerMask = EditorGUIUtility.TrTextContent("Layer Mask", "Controls which transparent layers this renderer draws."); + public static readonly GUIContent transparencySortMode = EditorGUIUtility.TrTextContent("Transparency Sort Mode", "Default sorting mode used for transparent objects"); public static readonly GUIContent transparencySortAxis = EditorGUIUtility.TrTextContent("Transparency Sort Axis", "Axis used for custom axis sorting mode"); public static readonly GUIContent hdrEmulationScale = EditorGUIUtility.TrTextContent("HDR Emulation Scale", "Describes the scaling used by lighting to remap dynamic range between LDR and HDR"); @@ -43,6 +46,7 @@ struct LightBlendStyleProps public SerializedProperty blendFactorAdditive; } + SerializedProperty m_LayerMask; SerializedProperty m_TransparencySortMode; SerializedProperty m_TransparencySortAxis; SerializedProperty m_HDREmulationScale; @@ -60,6 +64,7 @@ struct LightBlendStyleProps SerializedProperty m_CameraSortingLayersTextureBound; SerializedProperty m_CameraSortingLayerDownsamplingMethod; + SavedBool m_FilteringFoldout; SavedBool m_GeneralFoldout; SavedBool m_LightRenderTexturesFoldout; SavedBool m_LightBlendStylesFoldout; @@ -84,6 +89,7 @@ void OnEnable() m_WasModified = false; m_Renderer2DData = (Renderer2DData)serializedObject.targetObject; + m_LayerMask = serializedObject.FindProperty("m_LayerMask"); m_TransparencySortMode = serializedObject.FindProperty("m_TransparencySortMode"); m_TransparencySortAxis = serializedObject.FindProperty("m_TransparencySortAxis"); m_HDREmulationScale = serializedObject.FindProperty("m_HDREmulationScale"); @@ -121,6 +127,7 @@ void OnEnable() m_DefaultMaterialType = serializedObject.FindProperty("m_DefaultMaterialType"); m_DefaultCustomMaterial = serializedObject.FindProperty("m_DefaultCustomMaterial"); + m_FilteringFoldout = new SavedBool($"{target.GetType()}.FilteringFoldout", true); m_GeneralFoldout = new SavedBool($"{target.GetType()}.GeneralFoldout", true); m_LightRenderTexturesFoldout = new SavedBool($"{target.GetType()}.LightRenderTexturesFoldout", true); m_LightBlendStylesFoldout = new SavedBool($"{target.GetType()}.LightBlendStylesFoldout", true); @@ -137,6 +144,7 @@ public override void OnInspectorGUI() { serializedObject.Update(); + DrawFiltering(); DrawGeneral(); DrawLightRenderTextures(); DrawLightBlendStyles(); @@ -184,6 +192,18 @@ public void DrawCameraSortingLayerTexture() EditorGUI.EndDisabledGroup(); } + private void DrawFiltering() + { + CoreEditorUtils.DrawSplitter(); + m_FilteringFoldout.value = CoreEditorUtils.DrawHeaderFoldout(Styles.filteringSectionLabel, m_FilteringFoldout.value); + if (!m_FilteringFoldout.value) + return; + + EditorGUILayout.PropertyField(m_LayerMask, Styles.layerMask); + + EditorGUILayout.Space(); + } + private void DrawGeneral() { CoreEditorUtils.DrawSplitter(); diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteCustomLitSubTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteCustomLitSubTarget.cs index 06ea092ea16..aae2a514149 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteCustomLitSubTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteCustomLitSubTarget.cs @@ -109,7 +109,7 @@ public static PassDescriptor Lit(UniversalTarget target) // Conditional State renderStates = SpriteSubTargetUtility.GetDefaultRenderState(target), pragmas = CorePragmas._2DDefault, - defines = new DefineCollection(), + defines = new DefineCollection() { CoreDefines.UseFragmentFog }, keywords = SpriteLitKeywords.Lit, includes = SpriteLitIncludes.Lit, }; @@ -187,7 +187,7 @@ public static PassDescriptor Forward(UniversalTarget target) // Conditional State renderStates = CoreRenderStates.Default, pragmas = CorePragmas._2DDefault, - defines = new DefineCollection(), + defines = new DefineCollection() { CoreDefines.UseFragmentFog }, includes = SpriteLitIncludes.Forward, // Custom Interpolator Support diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteLitSubTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteLitSubTarget.cs index 7f8edbc30e6..d80389a6914 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteLitSubTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteLitSubTarget.cs @@ -132,7 +132,7 @@ public static PassDescriptor Lit(UniversalTarget target) // Conditional State renderStates = SpriteSubTargetUtility.GetDefaultRenderState(target), pragmas = CorePragmas._2DDefault, - defines = new DefineCollection(), + defines = new DefineCollection() { CoreDefines.UseFragmentFog }, keywords = SpriteLitKeywords.Lit, includes = SpriteLitIncludes.Lit, @@ -216,7 +216,7 @@ public static PassDescriptor Forward(UniversalTarget target) // Conditional State renderStates = CoreRenderStates.Default, pragmas = CorePragmas._2DDefault, - defines = new DefineCollection(), + defines = new DefineCollection() { CoreDefines.UseFragmentFog }, includes = SpriteLitIncludes.Forward, // Custom Interpolator Support diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteUnlitSubTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteUnlitSubTarget.cs index fd1520a1348..d0007ced61a 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteUnlitSubTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteUnlitSubTarget.cs @@ -127,7 +127,7 @@ public static PassDescriptor Unlit(UniversalTarget target) // Conditional State renderStates = SpriteSubTargetUtility.GetDefaultRenderState(target), pragmas = CorePragmas._2DDefault, - defines = new DefineCollection(), + defines = new DefineCollection() { CoreDefines.UseFragmentFog }, keywords = SpriteUnlitKeywords.Unlit, includes = SpriteUnlitIncludes.Unlit, @@ -169,7 +169,7 @@ public static PassDescriptor Forward(UniversalTarget target) // Conditional State renderStates = CoreRenderStates.Default, pragmas = CorePragmas._2DDefault, - defines = new(), + defines = new DefineCollection() { CoreDefines.UseFragmentFog }, keywords = SpriteUnlitKeywords.Unlit, includes = SpriteUnlitIncludes.Unlit, diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShapeEditor/EditorTool/PathEditorTool.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShapeEditor/EditorTool/PathEditorTool.cs index b86f50378e2..09d37e19031 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShapeEditor/EditorTool/PathEditorTool.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShapeEditor/EditorTool/PathEditorTool.cs @@ -380,6 +380,8 @@ void IDuringSceneGuiTool.DuringSceneGui(SceneView sceneView) { if (m_GUIState.eventType == EventType.Layout) m_Controller.ClearClosestPath(); + else if (m_GUIState.eventType == EventType.ValidateCommand) + return; m_RectSelector.OnGUI(); diff --git a/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/FullScreenPassRendererFeatureEditor.cs b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/FullScreenPassRendererFeatureEditor.cs index d8fccb87677..92691710b72 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/FullScreenPassRendererFeatureEditor.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/FullScreenPassRendererFeatureEditor.cs @@ -1,85 +1,88 @@ using System.Collections.Generic; -using UnityEditor; -using UnityEditor.Rendering; using UnityEngine; +using UnityEngine.Rendering.Universal; -/// -/// Custom editor for FullScreenPassRendererFeature class responsible for drawing unavailable by default properties -/// such as custom drop down items and additional properties. -/// -[CustomEditor(typeof(FullScreenPassRendererFeature))] -public class FullScreenPassRendererFeatureEditor : Editor +namespace UnityEditor.Rendering.Universal { - private SerializedProperty m_InjectionPointProperty; - private SerializedProperty m_RequirementsProperty; - private SerializedProperty m_FetchColorBufferProperty; - private SerializedProperty m_BindDepthStencilAttachmentProperty; - private SerializedProperty m_PassMaterialProperty; - private SerializedProperty m_PassIndexProperty; - - private static readonly GUIContent k_InjectionPointGuiContent = new GUIContent("Injection Point", "Specifies where in the frame this pass will be injected."); - private static readonly GUIContent k_RequirementsGuiContent = new GUIContent("Requirements", "A mask of URP internal textures that will need to be generated and bound for sampling.\n\nNote that 'Color' here corresponds to '_CameraOpaqueTexture' so most of the time you will want to use the 'Fetch Color Buffer' option instead."); - private static readonly GUIContent k_FetchColorBufferGuiContent = new GUIContent("Fetch Color Buffer", "Enable this if the assigned material will need to sample the active color target. The active color will be bound to the '_BlitTexture' shader property for sampling. Note that this will introduce an internal color copy pass."); - private static readonly GUIContent k_BindDepthStencilAttachmentGuiContent = new GUIContent("Bind Depth-Stencil", "Enable this to bind the active camera's depth-stencil attachment to the framebuffer (only use this if depth-stencil ops are used by the assigned material as this could have a performance impact)."); - private static readonly GUIContent k_PassMaterialGuiContent = new GUIContent("Pass Material", "The material used to render the full screen pass."); - private static readonly GUIContent k_PassGuiContent = new GUIContent("Pass", "The name of the shader pass to use from the assigned material."); - - private void OnEnable() - { - m_InjectionPointProperty = serializedObject.FindProperty("injectionPoint"); - m_RequirementsProperty = serializedObject.FindProperty("requirements"); - m_FetchColorBufferProperty = serializedObject.FindProperty("fetchColorBuffer"); - m_BindDepthStencilAttachmentProperty = serializedObject.FindProperty("bindDepthStencilAttachment"); - m_PassMaterialProperty = serializedObject.FindProperty("passMaterial"); - m_PassIndexProperty = serializedObject.FindProperty("passIndex"); - } - /// - /// Implementation for a custom inspector + /// Custom editor for FullScreenPassRendererFeature class responsible for drawing unavailable by default properties + /// such as custom drop down items and additional properties. /// - public override void OnInspectorGUI() + [UnityEngine.Scripting.APIUpdating.MovedFrom("")] + [CustomEditor(typeof(FullScreenPassRendererFeature))] + public class FullScreenPassRendererFeatureEditor : Editor { - var currentFeature = target as FullScreenPassRendererFeature; + private SerializedProperty m_InjectionPointProperty; + private SerializedProperty m_RequirementsProperty; + private SerializedProperty m_FetchColorBufferProperty; + private SerializedProperty m_BindDepthStencilAttachmentProperty; + private SerializedProperty m_PassMaterialProperty; + private SerializedProperty m_PassIndexProperty; - if (currentFeature.passMaterial == null || currentFeature.passIndex >= currentFeature.passMaterial.passCount) - currentFeature.passIndex = 0; + private static readonly GUIContent k_InjectionPointGuiContent = new GUIContent("Injection Point", "Specifies where in the frame this pass will be injected."); + private static readonly GUIContent k_RequirementsGuiContent = new GUIContent("Requirements", "A mask of URP internal textures that will need to be generated and bound for sampling.\n\nNote that 'Color' here corresponds to '_CameraOpaqueTexture' so most of the time you will want to use the 'Fetch Color Buffer' option instead."); + private static readonly GUIContent k_FetchColorBufferGuiContent = new GUIContent("Fetch Color Buffer", "Enable this if the assigned material will need to sample the active color target. The active color will be bound to the '_BlitTexture' shader property for sampling. Note that this will introduce an internal color copy pass."); + private static readonly GUIContent k_BindDepthStencilAttachmentGuiContent = new GUIContent("Bind Depth-Stencil", "Enable this to bind the active camera's depth-stencil attachment to the framebuffer (only use this if depth-stencil ops are used by the assigned material as this could have a performance impact)."); + private static readonly GUIContent k_PassMaterialGuiContent = new GUIContent("Pass Material", "The material used to render the full screen pass."); + private static readonly GUIContent k_PassGuiContent = new GUIContent("Pass", "The name of the shader pass to use from the assigned material."); - EditorGUILayout.PropertyField(m_InjectionPointProperty, k_InjectionPointGuiContent); - EditorGUILayout.PropertyField(m_RequirementsProperty, k_RequirementsGuiContent); - EditorGUILayout.PropertyField(m_FetchColorBufferProperty, k_FetchColorBufferGuiContent); - EditorGUILayout.PropertyField(m_BindDepthStencilAttachmentProperty, k_BindDepthStencilAttachmentGuiContent); - EditorGUILayout.PropertyField(m_PassMaterialProperty, k_PassMaterialGuiContent); - - if (AdvancedProperties.BeginGroup()) + private void OnEnable() { - DrawMaterialPassProperty(currentFeature); + m_InjectionPointProperty = serializedObject.FindProperty("injectionPoint"); + m_RequirementsProperty = serializedObject.FindProperty("requirements"); + m_FetchColorBufferProperty = serializedObject.FindProperty("fetchColorBuffer"); + m_BindDepthStencilAttachmentProperty = serializedObject.FindProperty("bindDepthStencilAttachment"); + m_PassMaterialProperty = serializedObject.FindProperty("passMaterial"); + m_PassIndexProperty = serializedObject.FindProperty("passIndex"); } - AdvancedProperties.EndGroup(); - serializedObject.ApplyModifiedProperties(); - } + /// + /// Implementation for a custom inspector + /// + public override void OnInspectorGUI() + { + var currentFeature = target as FullScreenPassRendererFeature; - private void DrawMaterialPassProperty(FullScreenPassRendererFeature feature) - { - List selectablePasses; - bool isMaterialValid = feature.passMaterial != null; - selectablePasses = isMaterialValid ? GetPassIndexStringEntries(feature) : new List() {"No material"}; + if (currentFeature.passMaterial == null || currentFeature.passIndex >= currentFeature.passMaterial.passCount) + currentFeature.passIndex = 0; - // If material is invalid 0'th index is selected automatically, so it stays on "No material" entry - // It is invalid index, but FullScreenPassRendererFeature wont execute until material is valid - m_PassIndexProperty.intValue = EditorGUILayout.Popup(k_PassGuiContent, m_PassIndexProperty.intValue, selectablePasses.ToArray()); - } + EditorGUILayout.PropertyField(m_InjectionPointProperty, k_InjectionPointGuiContent); + EditorGUILayout.PropertyField(m_RequirementsProperty, k_RequirementsGuiContent); + EditorGUILayout.PropertyField(m_FetchColorBufferProperty, k_FetchColorBufferGuiContent); + EditorGUILayout.PropertyField(m_BindDepthStencilAttachmentProperty, k_BindDepthStencilAttachmentGuiContent); + EditorGUILayout.PropertyField(m_PassMaterialProperty, k_PassMaterialGuiContent); - private static List GetPassIndexStringEntries(FullScreenPassRendererFeature component) - { - List passIndexEntries = new List(); - for (int i = 0; i < component.passMaterial.passCount; ++i) + if (AdvancedProperties.BeginGroup()) + { + DrawMaterialPassProperty(currentFeature); + } + AdvancedProperties.EndGroup(); + + serializedObject.ApplyModifiedProperties(); + } + + private void DrawMaterialPassProperty(FullScreenPassRendererFeature feature) { - // "Name of a pass (index)" - "PassAlpha (1)" - string entry = $"{component.passMaterial.GetPassName(i)} ({i})"; - passIndexEntries.Add(entry); + List selectablePasses; + bool isMaterialValid = feature.passMaterial != null; + selectablePasses = isMaterialValid ? GetPassIndexStringEntries(feature) : new List() {"No material"}; + + // If material is invalid 0'th index is selected automatically, so it stays on "No material" entry + // It is invalid index, but FullScreenPassRendererFeature wont execute until material is valid + m_PassIndexProperty.intValue = EditorGUILayout.Popup(k_PassGuiContent, m_PassIndexProperty.intValue, selectablePasses.ToArray()); } - return passIndexEntries; + private static List GetPassIndexStringEntries(FullScreenPassRendererFeature component) + { + List passIndexEntries = new List(); + for (int i = 0; i < component.passMaterial.passCount; ++i) + { + // "Name of a pass (index)" - "PassAlpha (1)" + string entry = $"{component.passMaterial.GetPassName(i)} ({i})"; + passIndexEntries.Add(entry); + } + + return passIndexEntries; + } } } diff --git a/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/NewPostProcessRendererFeature.cs.txt b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/NewPostProcessRendererFeature.cs.txt index 7779aa5ce68..60a7ebe1f67 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/NewPostProcessRendererFeature.cs.txt +++ b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/NewPostProcessRendererFeature.cs.txt @@ -3,43 +3,31 @@ using UnityEngine.Rendering; using UnityEngine.Rendering.RenderGraphModule; using UnityEngine.Rendering.Universal; -// This is the script template for creating a ScriptableRendererFeature meant for a post-processing effect -// -// To see how this feature is made to work with on a custom VolumeComponent observe the "AddRenderPasses" and "ExecuteMainPass" methods -// -// For a general guide on how to create custom ScriptableRendererFeatures see the following URP documentation page: -// https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html?subfolder=/manual/renderer-features/create-custom-renderer-feature.html +// Create a Scriptable Renderer Feature that implements a post-processing effect when the camera is inside a custom volume. +// For more information about creating scriptable renderer features, refer to https://docs.unity3d.com/Manual/urp/customizing-urp.html public sealed class #FEATURE_TYPE# : ScriptableRendererFeature { #region FEATURE_FIELDS - // * The material used to render the post-processing effect - // * The 'SerializeField' attribute makes sure that the private material reference we assign in the "Create" method - // while in the editor will be serialised and the referenced material will be included in the player build - // * To not clutter the renderer feature UI we're keeping this field hidden, but if you'd like to be able to change - // the material in the editor UI you could just make this field public and remove the current attributes + // Declare the material used to render the post-processing effect. + // Add a [SerializeField] attribute so Unity serializes the property and includes it in builds. [SerializeField] [HideInInspector] private Material m_Material; - // The user defined ScriptableRenderPass that is responsible for the actual rendering of the effect + // Declare the render pass that renders the effect. private CustomPostRenderPass m_FullScreenPass; #endregion #region FEATURE_METHODS + // Override the Create method. + // Unity calls this method when the Scriptable Renderer Feature loads for the first time, and when you change a property. public override void Create() { #if UNITY_EDITOR - // * This assigns a material asset reference while in the editor and the "[SerializeField]" attribute on the - // private `m_Material` field will make sure that the referenced material will be included in player builds - // * Alternatively, you could create a material from the shader at runtime e.g.: - // 'm_Material = new Material(m_Shader);' - // In this case for the shader referenced by 'm_Shader' to be included in builds you will have to either: - // 1) Assign 'm_Shader = Shader.Find("Shader Graphs/FullscreenInvertColors")' behind UNITY_EDITOR only and make sure 'm_Shader' is a "[SerializedField]" - // 2) Or add "Shader Graphs/FullscreenInvertColors" to the "Always Included Shaders List" under "ProjectSettings"-> "Graphics" -> "Shader Settings" - // and call 'm_Shader = Shader.Find("Shader Graphs/FullscreenInvertColors")' outside of the UNITY_EDITOR section + // Assign a material asset to m_Material in the Unity Editor. if (m_Material == null) m_Material = UnityEditor.AssetDatabase.LoadAssetAtPath("Packages/com.unity.render-pipelines.universal/Runtime/Materials/FullscreenInvertColors.mat"); #endif @@ -48,87 +36,63 @@ public sealed class #FEATURE_TYPE# : ScriptableRendererFeature m_FullScreenPass = new CustomPostRenderPass(name, m_Material); } - // Here you can inject one or multiple render passes in the renderer. - // This method is called when setting up the renderer once per-camera. + // Override the AddRenderPasses method to inject passes into the renderer. Unity calls AddRenderPasses once per camera. public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { - // Skip rendering if m_Material or the pass instance are null for whatever reason + // Skip rendering if m_Material or the pass instance are null. if (m_Material == null || m_FullScreenPass == null) return; - // This check makes sure to not render the effect to reflection probes or preview cameras as post-processing is typically not desired there + // Skip rendering if the target is a Reflection Probe or a preview camera. if (renderingData.cameraData.cameraType == CameraType.Preview || renderingData.cameraData.cameraType == CameraType.Reflection) return; - // You can control the rendering of your feature using custom post-processing VolumeComponents - // - // E.g. when controlling rendering with a VolumeComponent you will typically want to skip rendering as an optimization when the component - // has settings which would make it imperceptible (e.g. the implementation of IsActive() might return false when some "intensity" value is 0). - // - // N.B. if your volume component type is actually defined in C# it is unlikely that VolumeManager would return a "null" instance of it as - // GlobalSettings should always contain an instance of all VolumeComponents in the project even if if they're not overriden in the scene + // Skip rendering if the camera is outside the custom volume. #VOLUME_TYPE# myVolume = VolumeManager.instance.stack?.GetComponent<#VOLUME_TYPE#>(); if (myVolume == null || !myVolume.IsActive()) return; - // Here you specify at which part of the frame the effect will execute - // - // When creating post-processing effects you will almost always want to use on of the following injection points: - // BeforeRenderingTransparents - in cases you want your effect to be visible behind transparent objects - // BeforeRenderingPostProcessing - in cases where your effect is supposed to run before the URP post-processing stack - // AfterRenderingPostProcessing - in cases where your effect is supposed to run after the URP post-processing stack, but before FXAA, upscaling or color grading + // Specify when the effect will execute during the frame. + // For a post-processing effect, the injection point is usually BeforeRenderingTransparents, BeforeRenderingPostProcessing, or AfterRenderingPostProcessing. + // For more information, refer to https://docs.unity3d.com/Manual/urp/customize/custom-pass-injection-points.html m_FullScreenPass.renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing; - // You can specify if your effect needs scene depth, normals, motion vectors or a downscaled opaque color as input - // - // You specify them as a mask e.g. ScriptableRenderPassInput.Normals | ScriptableRenderPassInput.Motion and URP - // will either reuse these if they've been generated earlier in the frame or will add passes to generate them. - // - // The inputs will get bound as global shader texture properties and can be sampled in the shader using using the following: - // * Depth - use "SampleSceneDepth" after including "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareNormalsTexture.hlsl" - // * Normal - use "SampleSceneNormals" after including "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareNormalsTexture.hlsl" - // * Opaque Scene Color - use "SampleSceneColor" after including "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTexture.hlsl". - // Note that "OpaqueSceneColor" is a texture containing a possibly downscaled copy of the framebuffer from before rendering transparent objects which - // should not be your first choice when wanting to do a post-processing effect, for that this template will copy the active texture for sampling which is more expensive - // * Motion Vectors - you currently need to declare and sample the texture as follows: - // TEXTURE2D_X(_MotionVectorTexture); - // ... - // LOAD_TEXTURE2D_X_LOD(_MotionVectorTexture, pixelCoords, 0).xy - // - // N.B. when using the FullScreenPass Shader Graph target you should simply use the "URP Sample Buffer" node which will handle the above for you + // Specify that the effect doesn't need scene depth, normals, motion vectors, or the color texture as input. m_FullScreenPass.ConfigureInput(ScriptableRenderPassInput.None); + // Add the render pass to the renderer. renderer.EnqueuePass(m_FullScreenPass); } protected override void Dispose(bool disposing) { - // We dispose the pass we created to free the resources it might be holding onto + // Free the resources the render pass uses. m_FullScreenPass.Dispose(); } #endregion + // Create the custom render pass. private class CustomPostRenderPass : ScriptableRenderPass { #region PASS_FIELDS - // The material used to render the post-processing effect + // Declare the material used to render the post-processing effect. private Material m_Material; - // The handle to the temporary color copy texture (only used in the non-render graph path) + // Declare a texture to use as a temporary color copy. This texture is used only in the Compatibility Mode path. private RTHandle m_CopiedColor; - // The property block used to set additional properties for the material + // Declare a property block to set additional properties for the material. private static MaterialPropertyBlock s_SharedPropertyBlock = new MaterialPropertyBlock(); - // This constant is meant to showcase how to create a copy color pass that is needed for most post-processing effects + // Declare a property that enables or disables the render pass that samples the color texture. private static readonly bool kSampleActiveColor = true; - // This constant is meant to showcase how you can add dept-stencil support to your main pass + // Declare a property that adds or removes depth-stencil support. private static readonly bool kBindDepthStencilAttachment = false; - // Creating some shader properties in advance as this is slightly more efficient than referencing them by string + // Create shader properties in advance, which is more efficient than referencing them by string. private static readonly int kBlitTexturePropertyId = Shader.PropertyToID("_BlitTexture"); private static readonly int kBlitScaleBiasPropertyId = Shader.PropertyToID("_BlitScaleBias"); @@ -136,55 +100,55 @@ public sealed class #FEATURE_TYPE# : ScriptableRendererFeature public CustomPostRenderPass(string passName, Material material) { + // Add a profiling sampler. profilingSampler = new ProfilingSampler(passName); + + // Assign the material to the render pass. m_Material = material; - // * The 'requiresIntermediateTexture' field needs to be set to 'true' when a ScriptableRenderPass intends to sample - // the active color buffer - // * This will make sure that URP will not apply the optimization of rendering the entire frame to the write-only backbuffer, - // but will instead render to intermediate textures that can be sampled, which is typically needed for post-processing + // To make sure the render pass can sample the active color buffer, set URP to render to intermediate textures instead of directly to the backbuffer. requiresIntermediateTexture = kSampleActiveColor; } #region PASS_SHARED_RENDERING_CODE - // This method contains the shared rendering logic for doing the temporary color copy pass (used by both the non-render graph and render graph paths) + // Add a command to create the temporary color copy texture. + // This method is used in both the render graph system path and the Compatibility Mode path. private static void ExecuteCopyColorPass(RasterCommandBuffer cmd, RTHandle sourceTexture) { Blitter.BlitTexture(cmd, sourceTexture, new Vector4(1, 1, 0, 0), 0.0f, false); } - // This method contains the shared rendering logic for doing the main post-processing pass (used by both the non-render graph and render graph paths) + // Add commands to render the effect. + // This method is used in both the render graph system path and the Compatibility Mode path. private static void ExecuteMainPass(RasterCommandBuffer cmd, RTHandle sourceTexture, Material material) { + // Clear the material properties. s_SharedPropertyBlock.Clear(); if(sourceTexture != null) s_SharedPropertyBlock.SetTexture(kBlitTexturePropertyId, sourceTexture); - // This uniform needs to be set for user materials with shaders relying on core Blit.hlsl to work as expected + // Set the scale and bias so shaders that use Blit.hlsl work correctly. s_SharedPropertyBlock.SetVector(kBlitScaleBiasPropertyId, new Vector4(1, 1, 0, 0)); - // USING A CUSTOM VOLUME COMPONENT: - // - // To control the rendering of your effect using a custom VolumeComponent you can set the material's properties - // based on the blended values of your VolumeComponent by querying them with the core VolumeManager API e.g.: + // Set the material properties based on the blended values of the custom volume. + // For more information, refer to https://docs.unity3d.com/Manual/urp/post-processing/custom-post-processing-with-volume.html #VOLUME_TYPE# myVolume = VolumeManager.instance.stack?.GetComponent<#VOLUME_TYPE#>(); if (myVolume != null) s_SharedPropertyBlock.SetFloat("_Intensity", myVolume.intensity.value); + // Draw to the current render target. cmd.DrawProcedural(Matrix4x4.identity, material, 0, MeshTopology.Triangles, 3, 1, s_SharedPropertyBlock); } - // This method is used to get the descriptor used for creating the temporary color copy texture that will enable the main pass to sample the screen color + // Get the texture descriptor needed to create the temporary color copy texture. + // This method is used in both the render graph system path and the Compatibility Mode path. private static RenderTextureDescriptor GetCopyPassTextureDescriptor(RenderTextureDescriptor desc) { - // Unless 'desc.bindMS = true' for an MSAA texture a resolve pass will be inserted before it is bound for sampling. - // Since our main pass shader does not expect to sample an MSAA target we will leave 'bindMS = false'. - // If the camera target has MSAA enabled an MSAA resolve will still happen before our copy-color pass but - // with this change we will avoid an unnecessary MSAA resolve before our main pass. + // Avoid an unnecessary multisample anti-aliasing (MSAA) resolve before the main render pass. desc.msaaSamples = 1; - // This avoids copying the depth buffer tied to the current descriptor as the main pass in this example does not use it + // Avoid copying the depth buffer, as the main pass render in this example doesn't use depth. desc.depthBufferBits = (int)DepthBits.None; return desc; @@ -194,35 +158,36 @@ public sealed class #FEATURE_TYPE# : ScriptableRendererFeature #region PASS_NON_RENDER_GRAPH_PATH - // This method is called before executing the render pass (non-render graph path only). - // It can be used to configure render targets and their clear state. Also to create temporary render target textures. - // When empty this render pass will render to the active camera render target. - // You should never call CommandBuffer.SetRenderTarget. Instead call ConfigureTarget and ConfigureClear. - // The render pipeline will ensure target setup and clearing happens in a performant manner. - [System.Obsolete("This rendering path is for compatibility mode only (when Render Graph is disabled). Use Render Graph API instead.", false)] + // Override the OnCameraSetup method to configure render targets and their clear states, and create temporary render target textures. + // Unity calls this method before executing the render pass. + // This method is used only in the Compatibility Mode path. + // Use ConfigureTarget or ConfigureClear in this method. Don't use CommandBuffer.SetRenderTarget. + [System.Obsolete("This rendering path works in Compatibility Mode only, which is deprecated. Use the render graph API instead.", false)] public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) { - // This ScriptableRenderPass manages its own RenderTarget. - // ResetTarget here so that ScriptableRenderer's active attachment can be invalidated when processing this ScriptableRenderPass. + // Reset the render target to default. ResetTarget(); - // This allocates our intermediate texture for the non-RG path and makes sure it's reallocated if some settings on the camera target change (e.g. resolution) + // Allocate a temporary texture, and reallocate it if there's a change to camera settings, for example resolution. if (kSampleActiveColor) RenderingUtils.ReAllocateHandleIfNeeded(ref m_CopiedColor, GetCopyPassTextureDescriptor(renderingData.cameraData.cameraTargetDescriptor), name: "_CustomPostPassCopyColor"); } - // Here you can implement the rendering logic (non-render graph path only). - // Use ScriptableRenderContext to issue drawing commands or execute command buffers - // https://docs.unity3d.com/ScriptReference/Rendering.ScriptableRenderContext.html - // You don't have to call ScriptableRenderContext.submit, the render pipeline will call it at specific points in the pipeline. - [System.Obsolete("This rendering path is for compatibility mode only (when Render Graph is disabled). Use Render Graph API instead.", false)] + // Override the Execute method to implement the rendering logic. Use ScriptableRenderContext to issue drawing commands or execute command buffers. + // You don't need to call ScriptableRenderContext.Submit. + // This method is used only in the Compatibility Mode path. + [System.Obsolete("This rendering path works in Compatibility Mode only, which is deprecated. Use the render graph API instead.", false)] public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { + + // Get the camera data and command buffer. ref var cameraData = ref renderingData.cameraData; var cmd = CommandBufferPool.Get(); + // Add a profiling sampler. using (new ProfilingScope(cmd, profilingSampler)) { + // Create a command buffer to execute the render pass. RasterCommandBuffer rasterCmd = CommandBufferHelpers.GetRasterCommandBuffer(cmd); if (kSampleActiveColor) { @@ -230,25 +195,32 @@ public sealed class #FEATURE_TYPE# : ScriptableRendererFeature ExecuteCopyColorPass(rasterCmd, cameraData.renderer.cameraColorTargetHandle); } + // Set the render target based on the depth-stencil attachment. if(kBindDepthStencilAttachment) CoreUtils.SetRenderTarget(cmd, cameraData.renderer.cameraColorTargetHandle, cameraData.renderer.cameraDepthTargetHandle); else CoreUtils.SetRenderTarget(cmd, cameraData.renderer.cameraColorTargetHandle); + // Execute the main render pass. ExecuteMainPass(rasterCmd, kSampleActiveColor ? m_CopiedColor : null, m_Material); } + // Execute the command buffer. context.ExecuteCommandBuffer(cmd); cmd.Clear(); + // Release the command buffer. CommandBufferPool.Release(cmd); } - // Cleanup any allocated resources that were created during the execution of this render pass (non-render graph path only) + // Free the resources the camera uses. + // This method is used only in the Compatibility Mode path. public override void OnCameraCleanup(CommandBuffer cmd) { } + // Free the resources the texture uses. + // This method is used only in the Compatibility Mode path. public void Dispose() { m_CopiedColor?.Release(); @@ -258,13 +230,15 @@ public sealed class #FEATURE_TYPE# : ScriptableRendererFeature #region PASS_RENDER_GRAPH_PATH - // The custom copy color pass data that will be passed at render graph execution to the lambda we set with "SetRenderFunc" during render graph setup + // Declare the resource the copy render pass uses. + // This method is used only in the render graph system path. private class CopyPassData { public TextureHandle inputTexture; } - // The custom main pass data that will be passed at render graph execution to the lambda we set with "SetRenderFunc" during render graph setup + // Declare the resources the main render pass uses. + // This method is used only in the render graph system path. private class MainPassData { public Material material; @@ -281,26 +255,23 @@ public sealed class #FEATURE_TYPE# : ScriptableRendererFeature ExecuteMainPass(context.cmd, data.inputTexture.IsValid() ? data.inputTexture : null, data.material); } - // Here you can implement the rendering logic for the render graph path - // The implementation diverges from the non-rendergraph path because we don't need a copy here when sampling the active color. However, this means that every pixel needs to be written in your material, a partial write (eg using stencil) will not be visually correct and requires a copy first. + // Override the RecordRenderGraph method to implement the rendering logic. + // This method is used only in the render graph system path. public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) { + + // Get the resources the pass uses. UniversalResourceData resourcesData = frameData.Get(); UniversalCameraData cameraData = frameData.Get(); - // Below is an example of a typical post-processing effect which samples from the current color - // Feel free modify/rename/add additional or remove the existing passes based on the needs of your custom post-processing effect - + // Sample from the current color texture. using (var builder = renderGraph.AddRasterRenderPass(passName, out var passData, profilingSampler)) { passData.material = m_Material; TextureHandle destination; - // GPU graphics pipelines don't allow to sample the texture bound as the active color target, ie the cameraColor cannot both be an input and the render target. - // Before, this required us to first copy the cameraColor to then blit back to it while sampling from the copy. Now that we have the ContextContainer, we can swap the cameraColor to - // another (temp) resource so that the next pass uses the temp resource. We don't need the copy anymore. However, this only works if you are writing to every - // pixel of the frame, a partial write will need the copy first to add to the existing content. See FullScreenPassRendererFeature.cs for an example. + // Copy cameraColor to a temporary texture, if the kSampleActiveColor property is set to true. if (kSampleActiveColor) { var cameraColorDesc = renderGraph.GetTextureDesc(resourcesData.cameraColor); @@ -310,7 +281,7 @@ public sealed class #FEATURE_TYPE# : ScriptableRendererFeature destination = renderGraph.CreateTexture(cameraColorDesc); passData.inputTexture = resourcesData.cameraColor; - //If you use framebuffer fetch in your material then you need to use builder.SetInputAttachment. If the pass can be merged then this will reduce GPU bandwidth usage / power consumption and improve GPU performance. + // If you use framebuffer fetch in your material, use builder.SetInputAttachment to reduce GPU bandwidth usage and power consumption. builder.UseTexture(passData.inputTexture, AccessFlags.Read); } else @@ -319,15 +290,19 @@ public sealed class #FEATURE_TYPE# : ScriptableRendererFeature passData.inputTexture = TextureHandle.nullHandle; } + + // Set the render graph to render to the temporary texture. builder.SetRenderAttachment(destination, 0, AccessFlags.Write); - // This branch is currently not taken, but if your pass needed the depth and/or stencil buffer to be bound this is how you would do it + // Bind the depth-stencil buffer. + // This is a demonstration. The code isn't used in the example. if (kBindDepthStencilAttachment) builder.SetRenderAttachmentDepth(resourcesData.activeDepthTexture, AccessFlags.Write); + // Set the render method. builder.SetRenderFunc((MainPassData data, RasterGraphContext context) => ExecuteMainPass(data, context)); - //Swap cameraColor to the new temp resource (destination) for the next pass + // Set cameraColor to the new temporary texture so the next render pass can use it. You don't need to blit to and from cameraColor if you use the render graph system. if (kSampleActiveColor) { resourcesData.cameraColor = destination; diff --git a/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/NewPostProcessVolumeComponent.cs.txt b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/NewPostProcessVolumeComponent.cs.txt index aefa570c1eb..5790c598ef2 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/NewPostProcessVolumeComponent.cs.txt +++ b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/NewPostProcessVolumeComponent.cs.txt @@ -2,37 +2,35 @@ using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; -// This defines a custom VolumeComponent to be used with the Core VolumeFramework -// (see core API docs https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@latest/index.html?subfolder=/api/UnityEngine.Rendering.VolumeComponent.html) -// (see URP docs https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html?subfolder=/manual/Volumes.html) -// -// After implementing this class you can: -// * Tweak the default values for this VolumeComponent in the URP GlobalSettings -// * Add overrides for this VolumeComponent to any local or global scene volume profiles -// (see URP docs https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html?subfolder=/manual/Volume-Profile.html) -// (see URP docs https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html?subfolder=/manual/VolumeOverrides.html) -// * Access the blended values of this VolumeComponent from your ScriptableRenderPasses or scripts using the VolumeManager API -// (see core API docs https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@latest/index.html?subfolder=/api/UnityEngine.Rendering.VolumeManager.html) -// * Override the values for this volume per-camera by placing a VolumeProfile in a dedicated layer and setting the camera's "Volume Mask" to that layer -// -// Things to keep in mind: -// * Be careful when renaming, changing types or removing public fields to not break existing instances of this class (note that this class inherits from ScriptableObject so the same serialization rules apply) -// * The 'IPostProcessComponent' interface adds the 'IsActive()' method, which is currently not strictly necessary and is for your own convenience -// * It is recommended to only expose fields that are expected to change. Fields which are constant such as shaders, materials or LUT textures -// should likely be in AssetBundles or referenced by serialized fields of your custom ScriptableRendererFeatures on used renderers so they would not get stripped during builds +// Defines a custom Volume Override component that controls the intensity of the URP Post-processing effect on a Scriptable Renderer Feature. +// For more information about the VolumeComponent API, refer to https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@17.2/api/UnityEngine.Rendering.VolumeComponent.html + +// Add the Volume Override to the list of available Volume Override components in the Volume Profile. [VolumeComponentMenu("Post-processing Custom/#DISPLAY_NAME#")] + +// If the related Scriptable Renderer Feature doesn't exist, display a warning about adding it to the renderer. [VolumeRequiresRendererFeatures(typeof(#FEATURE_TYPE#))] + +// Make the Volume Override active in the Universal Render Pipeline. [SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))] + +// Create the Volume Override by inheriting from VolumeComponent public sealed class #VOLUME_TYPE# : VolumeComponent, IPostProcessComponent { + // Set the name of the volume component in the list in the Volume Profile. public #VOLUME_TYPE#() { displayName = "#DISPLAY_NAME#"; } + // Create a property to control the intesity of the effect, with a tooltip description. + // You can set the default value in the project-wide Graphics settings window. For more information, refer to https://docs.unity3d.com/Manual/urp/urp-global-settings.html + // You can override the value in a local or global volume. For more information, refer to https://docs.unity3d.com/Manual/urp/volumes-landing-page.html + // To access the value in a script, refer to the VolumeManager API: https://docs.unity3d.com/Packages/com.unity.render-pipelines.core@latest/index.html?subfolder=/api/UnityEngine.Rendering.VolumeManager.html [Tooltip("Enter the description for the property that is shown when hovered")] public ClampedFloatParameter intensity = new ClampedFloatParameter(1f, 0f, 1f); + // Optional: Implement the IsActive() method of the IPostProcessComponent interface, and get the intensity value. public bool IsActive() { return intensity.GetValue() > 0.0f; diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs index 66ce217c70c..a621a53c578 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalTarget.cs @@ -1651,6 +1651,7 @@ static class CorePragmas { Pragma.Target(ShaderModel.Target20) }, { Pragma.ExcludeRenderers(new[] { Platform.D3D9 }) }, { Pragma.MultiCompileInstancing }, + { Pragma.MultiCompileFog }, { Pragma.Vertex("vert") }, { Pragma.Fragment("frag") }, }; diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Light2D.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Light2D.cs index fb7cca46bf5..f94e4451e46 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Light2D.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Light2D.cs @@ -484,11 +484,13 @@ internal Matrix4x4 GetMatrix() private void Awake() { -#if UNITY_EDITOR // Default target sorting layers to "All" if (m_ApplyToSortingLayers == null) - m_ApplyToSortingLayers = SortingLayer.layers.Select(x => x.id).ToArray(); -#endif + { + m_ApplyToSortingLayers = new int[SortingLayer.layers.Length]; + for (int i = 0; i < m_ApplyToSortingLayers.Length; ++i) + m_ApplyToSortingLayers[i] = SortingLayer.layers[i].id; + } } void OnEnable() diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Passes/Utility/LayerUtility.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Passes/Utility/LayerUtility.cs index 586b32a2d5e..edee92d883a 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Passes/Utility/LayerUtility.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Passes/Utility/LayerUtility.cs @@ -217,7 +217,7 @@ public static void GetFilterSettings(Renderer2DData rendererData, ref LayerBatch { filterSettings = FilteringSettings.defaultValue; filterSettings.renderQueueRange = RenderQueueRange.all; - filterSettings.layerMask = -1; + filterSettings.layerMask = rendererData.layerMask; filterSettings.renderingLayerMask = 0xFFFFFFFF; filterSettings.sortingLayerRange = layerBatch.layerRange; } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2D.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2D.cs index de60f34f852..5e93bbc1556 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2D.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2D.cs @@ -411,7 +411,7 @@ public override void Setup(ScriptableRenderContext context, ref RenderingData re // Don't resolve during post processing if there are passes after or pixel perfect camera is used bool pixelPerfectCameraEnabled = ppc != null && ppc.enabled; bool hasCaptureActions = cameraData.captureActions != null && lastCameraInStack; - bool resolvePostProcessingToCameraTarget = !hasCaptureActions && !hasPassesAfterPostProcessing && !requireFinalPostProcessPass && !pixelPerfectCameraEnabled; + bool resolvePostProcessingToCameraTarget = lastCameraInStack && !hasCaptureActions && !hasPassesAfterPostProcessing && !requireFinalPostProcessPass && !pixelPerfectCameraEnabled; if (hasPostProcess) { diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2DData.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2DData.cs index e561721c773..d3bc0b7af17 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2DData.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Renderer2DData.cs @@ -25,6 +25,9 @@ internal enum Renderer2DDefaultMaterialType Custom } + [SerializeField] + LayerMask m_LayerMask = -1; + [SerializeField] TransparencySortMode m_TransparencySortMode = TransparencySortMode.Default; @@ -80,6 +83,7 @@ internal enum Renderer2DDefaultMaterialType internal bool useCameraSortingLayerTexture => m_UseCameraSortingLayersTexture; internal int cameraSortingLayerTextureBound => m_CameraSortingLayersTextureBound; internal Downsampling cameraSortingLayerDownsamplingMethod => m_CameraSortingLayerDownsamplingMethod; + internal LayerMask layerMask => m_LayerMask; /// /// Creates the instance of the Renderer2D. diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs index 1e4c00e4dc1..1cac87e6610 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs @@ -194,7 +194,8 @@ void SetGlobalLightTextures(RenderGraph graph, IRasterRenderGraphBuilder builder } else if (rendererData.lightCullResult.IsSceneLit()) { - builder.SetGlobalTextureAfterPass(graph.defaultResources.blackTexture, Shader.PropertyToID(RendererLighting.k_ShapeLightTextureIDs[0])); + for (var i = 0; i < RendererLighting.k_ShapeLightTextureIDs.Length; i++) + builder.SetGlobalTextureAfterPass(graph.defaultResources.blackTexture, Shader.PropertyToID(RendererLighting.k_ShapeLightTextureIDs[i])); } } } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Shadows/ShadowCaster2D.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Shadows/ShadowCaster2D.cs index 76a8855668b..6f106123cad 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Shadows/ShadowCaster2D.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Shadows/ShadowCaster2D.cs @@ -197,7 +197,7 @@ public ShadowCastingOptions castingOption /// /// If selfShadows is true, useRendererSilhoutte specifies that the renderer's sihouette should be considered part of the shadow. If selfShadows is false, useRendererSilhoutte specifies that the renderer's sihouette should be excluded from the shadow /// - [Obsolete("useRendererSilhoutte is deprecated. Use rendererSilhoutte instead")] + [Obsolete("useRendererSilhoutte is deprecated. Use selfShadows instead")] public bool useRendererSilhouette { set { m_UseRendererSilhouette = value; } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsMaterial.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsMaterial.cs index caf2e458599..08cdaa7c5a3 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsMaterial.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Debug/DebugDisplaySettingsMaterial.cs @@ -353,7 +353,6 @@ static class Strings public static readonly NameAndTooltip MaterialValidationMode = new() { name = "Material Validation Mode", tooltip = "Debug and validate material properties." }; public static readonly NameAndTooltip RenderingLayersSelectedLight = new() { name = "Filter Rendering Layers by Light", tooltip = "Highlight Renderers affected by Selected Light" }; public static readonly NameAndTooltip SelectedLightShadowLayerMask = new() { name = "Use Light's Shadow Layer Mask", tooltip = "Highlight Renderers that cast shadows for the Selected Light" }; - public static readonly NameAndTooltip RenderingLayerColors = new() { name = "Layers Color", tooltip = "Select the display color for each Rendering Layer" }; public static readonly NameAndTooltip FilterRenderingLayerMask = new() { name = "Filter Layers", tooltip = "Use the dropdown to filter Rendering Layers that you want to visualize" }; public static readonly NameAndTooltip ValidationPreset = new() { name = "Validation Preset", tooltip = "Validate using a list of preset surfaces and inputs based on real-world surfaces." }; public static readonly NameAndTooltip AlbedoCustomColor = new() { name = "Target Color", tooltip = "Custom target color for albedo validation." }; @@ -415,13 +414,20 @@ internal static class WidgetFactory isHiddenCallback = () => !panel.data.renderingLayersSelectedLight }; - internal static DebugUI.Widget CreateFilterRenderingLayerMasks (SettingsPanel panel) => new DebugUI.MaskField + internal static DebugUI.RenderingLayerField CreateFilterRenderingLayerMasks(SettingsPanel panel) { - nameAndTooltip = Strings.FilterRenderingLayerMask, - getter = () => panel.data.renderingLayerMask, - setter = value => panel.data.renderingLayerMask = value, - isHiddenCallback = () => panel.data.renderingLayersSelectedLight - }; + var renderingLayersField = new DebugUI.RenderingLayerField() + { + nameAndTooltip = Strings.FilterRenderingLayerMask, + getter = () => panel.data.renderingLayerMask, + setter = value => panel.data.renderingLayerMask = value, + getRenderingLayerColor = index => panel.data.debugRenderingLayersColors[index], + setRenderingLayerColor = (value, index) => panel.data.debugRenderingLayersColors[index] = value, + isHiddenCallback = () => panel.data.renderingLayersSelectedLight + }; + + return renderingLayersField; + } internal static DebugUI.Widget CreateAlbedoPreset(SettingsPanel panel) => new DebugUI.EnumField { @@ -501,32 +507,6 @@ public SettingsPanel(DebugDisplaySettingsMaterial data) : base(data) { AddWidget(new DebugUI.RuntimeDebugShadersMessageBox()); - - DebugUI.MaskField filterRenderingLayerWidget = (DebugUI.MaskField)WidgetFactory.CreateFilterRenderingLayerMasks(this); - var renderingLayers = new List(); - for (int i = 0; i < 32; i++) - renderingLayers.Add($"Unused Rendering Layer {i}"); - var names = UnityEngine.RenderingLayerMask.GetDefinedRenderingLayerNames(); - for (int i = 0; i < names.Length; i++) - { - var index = UnityEngine.RenderingLayerMask.NameToRenderingLayer(names[i]); - renderingLayers[index] = names[i]; - } - filterRenderingLayerWidget.Fill(renderingLayers.ToArray()); - - var layersColor = new DebugUI.Foldout() { nameAndTooltip = Strings.RenderingLayerColors, flags = DebugUI.Flags.EditorOnly }; - for (int i = 0; i < renderingLayers.Count; i++) - { - int index = i; - layersColor.children.Add(new DebugUI.ColorField - { - displayName = renderingLayers[i], - flags = DebugUI.Flags.EditorOnly, - getter = () => this.data.debugRenderingLayersColors[index], - setter = value => this.data.debugRenderingLayersColors[index] = value - }); - } - AddWidget(new DebugUI.Foldout { displayName = "Material Filters", @@ -544,8 +524,7 @@ public SettingsPanel(DebugDisplaySettingsMaterial data) { WidgetFactory.CreateRenderingLayersSelectedLight(this), WidgetFactory.CreateSelectedLightShadowLayerMask(this), - filterRenderingLayerWidget, - layersColor, + WidgetFactory.CreateFilterRenderingLayerMasks(this), } }, WidgetFactory.CreateVertexAttribute(this) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Decal/DecalProjector.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Decal/DecalProjector.cs index 3e565d812c7..af9bb31aacb 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Decal/DecalProjector.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Decal/DecalProjector.cs @@ -247,6 +247,16 @@ public float fadeFactor } private Material m_OldMaterial = null; + private float m_OldDrawDistance = 1000.0f; + private float m_OldFadeScale = 0.9f; + private float m_OldStartAngleFade = 180.0f; + private float m_OldEndAngleFade = 180.0f; + private Vector2 m_OldUVScale = new Vector2(1, 1); + private Vector2 m_OldUVBias = new Vector2(0, 0); + private DecalScaleMode m_OldScaleMode = DecalScaleMode.ScaleInvariant; + private Vector3 m_OldOffset = new Vector3(0, 0, 0.5f); + private Vector3 m_OldSize = new Vector3(1, 1, 1); + private float m_OldFadeFactor = 1.0f; /// A scale that should be used for rendering and handles. internal Vector3 effectiveScale => m_ScaleMode == DecalScaleMode.InheritFromHierarchy ? transform.lossyScale : Vector3.one; @@ -319,6 +329,36 @@ internal void OnValidate() } else onDecalPropertyChange?.Invoke(this); + + m_OldDrawDistance = m_DrawDistance; + m_OldFadeScale = m_FadeScale; + m_OldStartAngleFade = m_StartAngleFade; + m_OldEndAngleFade = m_EndAngleFade; + m_OldUVScale = m_UVScale; + m_OldUVBias = m_UVBias; + m_OldScaleMode = m_ScaleMode; + m_OldOffset = m_Offset; + m_OldSize = m_Size; + m_OldFadeFactor = m_FadeFactor; + } + + void OnDidApplyAnimationProperties() + { + // Needed to be able to update state properly for animated serialized-properties. + if (m_OldMaterial != m_Material || + Mathf.Abs(m_OldDrawDistance - m_DrawDistance) > Mathf.Epsilon || + Mathf.Abs(m_OldFadeScale - m_FadeScale) > Mathf.Epsilon || + Mathf.Abs(m_OldStartAngleFade - m_StartAngleFade) > Mathf.Epsilon || + Mathf.Abs(m_OldEndAngleFade - m_EndAngleFade) > Mathf.Epsilon || + m_OldUVScale != m_UVScale || + m_OldUVBias != m_UVBias || + m_OldScaleMode != m_ScaleMode || + m_OldOffset != m_Offset || + m_OldSize != m_Size || + Mathf.Abs(m_OldFadeFactor - m_FadeFactor) > Mathf.Epsilon) + { + OnValidate(); + } } /// diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs b/Packages/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs index 7df9d52069b..8c70d8546aa 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs @@ -688,45 +688,51 @@ void SetupMainLightConstants(CommandBuffer cmd, UniversalLightData lightData) cmd.SetGlobalVector(ShaderConstants._MainLightColor, lightColor); } - void SetupMatrixConstants(RasterCommandBuffer cmd, UniversalCameraData cameraData) + internal Matrix4x4[] GetScreenToWorldMatrix(UniversalCameraData cameraData) { #if ENABLE_VR && ENABLE_XR_MODULE int eyeCount = cameraData.xr.enabled && cameraData.xr.singlePassEnabled ? 2 : 1; #else int eyeCount = 1; #endif + Matrix4x4[] screenToWorld = m_ScreenToWorld; // deferred shaders expects 2 elements - for (int eyeIndex = 0; eyeIndex < eyeCount; eyeIndex++) + // pixel coordinates to NDC coordinates. + Matrix4x4 screenToNDC = new Matrix4x4( + new Vector4(2.0f / (float)this.RenderWidth, 0.0f, 0.0f, 0.0f), + new Vector4(0.0f, 2.0f / (float)this.RenderHeight, 0.0f, 0.0f), + new Vector4(0.0f, 0.0f, 1.0f, 0.0f), + new Vector4(-1.0f, -1.0f, 0.0f, 1.0f) + ); + + if (DeferredConfig.IsOpenGL) { - Matrix4x4 proj = cameraData.GetProjectionMatrix(eyeIndex); - Matrix4x4 view = cameraData.GetViewMatrix(eyeIndex); - Matrix4x4 gpuProj = GL.GetGPUProjectionMatrix(proj, false); - - // xy coordinates in range [-1; 1] go to pixel coordinates. - Matrix4x4 toScreen = new Matrix4x4( - new Vector4(0.5f * this.RenderWidth, 0.0f, 0.0f, 0.0f), - new Vector4(0.0f, 0.5f * this.RenderHeight, 0.0f, 0.0f), - new Vector4(0.0f, 0.0f, 1.0f, 0.0f), - new Vector4(0.5f * this.RenderWidth, 0.5f * this.RenderHeight, 0.0f, 1.0f) + // We need to manunally adjust z in NDC space from [0; 1] (storage in depth texture) to [-1; 1]. + Matrix4x4 renormalizeZ = new Matrix4x4( + new Vector4(1.0f, 0.0f, 0.0f, 0.0f), + new Vector4(0.0f, 1.0f, 0.0f, 0.0f), + new Vector4(0.0f, 0.0f, 2.0f, 0.0f), + new Vector4(0.0f, 0.0f, -1.0f, 1.0f) ); - Matrix4x4 zScaleBias = Matrix4x4.identity; - if (DeferredConfig.IsOpenGL) - { - // We need to manunally adjust z in NDC space from [-1; 1] to [0; 1] (storage in depth texture). - zScaleBias = new Matrix4x4( - new Vector4(1.0f, 0.0f, 0.0f, 0.0f), - new Vector4(0.0f, 1.0f, 0.0f, 0.0f), - new Vector4(0.0f, 0.0f, 0.5f, 0.0f), - new Vector4(0.0f, 0.0f, 0.5f, 1.0f) - ); - } + screenToNDC = renormalizeZ * screenToNDC; + } - screenToWorld[eyeIndex] = Matrix4x4.Inverse(toScreen * zScaleBias * gpuProj * view); + for (int eyeIndex = 0; eyeIndex < eyeCount; eyeIndex++) + { + Matrix4x4 view = cameraData.GetViewMatrix(eyeIndex); + Matrix4x4 gpuProj = cameraData.GetGPUProjectionMatrix(false, eyeIndex); + + screenToWorld[eyeIndex] = Matrix4x4.Inverse(gpuProj * view) * screenToNDC; } - cmd.SetGlobalMatrixArray(ShaderConstants._ScreenToWorld, screenToWorld); + return screenToWorld; + } + + void SetupMatrixConstants(RasterCommandBuffer cmd, UniversalCameraData cameraData) + { + cmd.SetGlobalMatrixArray(ShaderConstants._ScreenToWorld, GetScreenToWorldMatrix(cameraData)); } void PrecomputeLights( diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalCameraData.cs b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalCameraData.cs index 6099d4b9d6c..036b59f5777 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalCameraData.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalCameraData.cs @@ -44,6 +44,7 @@ internal void PushBuiltinShaderConstantsXR(RasterCommandBuffer cmd, bool renderI var projection0 = GetProjectionMatrix(); var view0 = GetViewMatrix(); cmd.SetViewProjectionMatrices(view0, projection0); + if (xr.singlePassEnabled) { var projection1 = GetProjectionMatrix(1); @@ -57,6 +58,26 @@ internal void PushBuiltinShaderConstantsXR(RasterCommandBuffer cmd, bool renderI // Update multipass worldSpace camera pos Vector3 worldSpaceCameraPos = Matrix4x4.Inverse(GetViewMatrix(0)).GetColumn(3); cmd.SetGlobalVector(ShaderPropertyId.worldSpaceCameraPos, worldSpaceCameraPos); + + //Multipass uses the same value as a normal render, and doesn't use the value set for stereo, + //which is why you need to set a value like unity_MatrixInvV. + //The values below should be the same as set in the SetCameraMatrices function in ScriptableRenderer.cs. + Matrix4x4 gpuProjectionMatrix = GetGPUProjectionMatrix(renderIntoTexture); // TODO: invProjection might NOT match the actual projection (invP*P==I) as the target flip logic has diverging paths. + Matrix4x4 inverseViewMatrix = Matrix4x4.Inverse(view0); + Matrix4x4 inverseProjectionMatrix = Matrix4x4.Inverse(gpuProjectionMatrix); + Matrix4x4 inverseViewProjection = inverseViewMatrix * inverseProjectionMatrix; + + // There's an inconsistency in handedness between unity_matrixV and unity_WorldToCamera + // Unity changes the handedness of unity_WorldToCamera (see Camera::CalculateMatrixShaderProps) + // we will also change it here to avoid breaking existing shaders. (case 1257518) + Matrix4x4 worldToCameraMatrix = Matrix4x4.Scale(new Vector3(1.0f, 1.0f, -1.0f)) * view0; + Matrix4x4 cameraToWorldMatrix = worldToCameraMatrix.inverse; + cmd.SetGlobalMatrix(ShaderPropertyId.worldToCameraMatrix, worldToCameraMatrix); + cmd.SetGlobalMatrix(ShaderPropertyId.cameraToWorldMatrix, cameraToWorldMatrix); + + cmd.SetGlobalMatrix(ShaderPropertyId.inverseViewMatrix, inverseViewMatrix); + cmd.SetGlobalMatrix(ShaderPropertyId.inverseProjectionMatrix, inverseProjectionMatrix); + cmd.SetGlobalMatrix(ShaderPropertyId.inverseViewAndProjectionMatrix, inverseViewProjection); } m_CachedRenderIntoTextureXR = renderIntoTexture; m_InitBuiltinXRConstants = true; diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/AdditionalLightsShadowCasterPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/AdditionalLightsShadowCasterPass.cs index 0f55988759a..f6d65fff5ed 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/AdditionalLightsShadowCasterPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/AdditionalLightsShadowCasterPass.cs @@ -438,14 +438,17 @@ public bool Setup(UniversalRenderingData renderingData, UniversalCameraData came short additionalLightCount = 0; short validShadowCastingLightsCount = 0; bool supportsSoftShadows = shadowData.supportsSoftShadows; - bool isDeferred = ((UniversalRenderer)cameraData.renderer).renderingModeActual == RenderingMode.Deferred; + UniversalRenderer universalRenderer = (UniversalRenderer)cameraData.renderer; + bool isDeferred = universalRenderer.renderingModeActual == RenderingMode.Deferred; + bool shadowTransparentReceive = universalRenderer.shadowTransparentReceive; + bool hasForwardShadowPass = !isDeferred || shadowTransparentReceive; for (int visibleLightIndex = 0; visibleLightIndex < visibleLights.Length; ++visibleLightIndex) { // Skip main directional light as it is not packed into the shadow atlas if (visibleLightIndex == lightData.mainLightIndex) continue; - short lightIndexToUse = isDeferred ? validShadowCastingLightsCount : additionalLightCount++; + short lightIndexToUse = !hasForwardShadowPass ? validShadowCastingLightsCount : additionalLightCount++; // We need to always set these indices, even if the light is not shadow casting or doesn't fit in the shadow slices (UUM-46577) m_VisibleLightIndexToAdditionalLightIndex[visibleLightIndex] = lightIndexToUse; diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPassRenderGraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPassRenderGraph.cs index 48282b7dbf9..f1c102e401c 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPassRenderGraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPassRenderGraph.cs @@ -1554,7 +1554,7 @@ public void RenderFinalBlit(RenderGraph renderGraph, UniversalCameraData cameraD passData.material = m_Materials.finalPass; passData.settings = settings; - if (settings.requireHDROutput && m_EnableColorEncodingIfNeeded) + if (settings.requireHDROutput && m_EnableColorEncodingIfNeeded && cameraData.rendersOverlayUI) builder.UseTexture(overlayUITexture, AccessFlags.Read); #if ENABLE_VR && ENABLE_XR_MODULE diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScriptableRenderPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScriptableRenderPass.cs index 9888dcb275f..f6a7383a06d 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScriptableRenderPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScriptableRenderPass.cs @@ -11,6 +11,10 @@ namespace UnityEngine.Rendering.Universal { /// /// Input requirements for ScriptableRenderPass. + /// + /// URP adds render passes to generate the inputs, or reuses inputs that are already available from earlier in the frame. + /// + /// URP binds the inputs as global shader texture properties. /// /// [Flags] @@ -23,21 +27,31 @@ public enum ScriptableRenderPassInput /// /// Used when a ScriptableRenderPass requires a depth texture. + /// + /// To sample the depth texture in a shader, include `Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl`, then use the `SampleSceneDepth` method. /// Depth = 1 << 0, /// /// Used when a ScriptableRenderPass requires a normal texture. + /// + /// To sample the normals texture in a shader, include `Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareNormalsTexture.hlsl`, then use the `SampleSceneNormals` method. /// Normal = 1 << 1, /// /// Used when a ScriptableRenderPass requires a color texture. + /// + /// To sample the color texture in a shader, include `Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTexture.hlsl`, then use the `SampleSceneColor` method. + /// + /// **Note:** The opaque texture might be a downscaled copy of the framebuffer from before rendering transparent objects. /// Color = 1 << 2, /// /// Used when a ScriptableRenderPass requires a motion vectors texture. + /// + /// To sample the motion vectors texture in a shader, use `TEXTURE2D_X(_MotionVectorTexture)`, then `LOAD_TEXTURE2D_X_LOD(_MotionVectorTexture, pixelCoords, 0).xy`. /// Motion = 1 << 3, } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.cs index 8704ee80de3..f54a6a7032d 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.cs @@ -1,316 +1,316 @@ using System; -using UnityEngine; using UnityEngine.Rendering.RenderGraphModule; -using UnityEngine.Rendering; -using UnityEngine.Rendering.Universal; using UnityEngine.Experimental.Rendering; -/// -/// This renderer feature lets you create single-pass full screen post processing effects without needing to write code. -/// -[URPHelpURL("renderer-features/renderer-feature-full-screen-pass")] -public partial class FullScreenPassRendererFeature : ScriptableRendererFeature +namespace UnityEngine.Rendering.Universal { /// - /// An injection point for the full screen pass. This is similar to the RenderPassEvent enum but limited to only supported events. + /// This renderer feature lets you create single-pass full screen post processing effects without needing to write code. /// - public enum InjectionPoint + [URPHelpURL("renderer-features/renderer-feature-full-screen-pass")] + public partial class FullScreenPassRendererFeature : ScriptableRendererFeature { /// - /// Inject a full screen pass before transparents are rendered. + /// An injection point for the full screen pass. This is similar to the RenderPassEvent enum but limited to only supported events. /// - BeforeRenderingTransparents = RenderPassEvent.BeforeRenderingTransparents, + public enum InjectionPoint + { + /// + /// Inject a full screen pass before transparents are rendered. + /// + BeforeRenderingTransparents = RenderPassEvent.BeforeRenderingTransparents, + + /// + /// Inject a full screen pass before post processing is rendered. + /// + BeforeRenderingPostProcessing = RenderPassEvent.BeforeRenderingPostProcessing, + + /// + /// Inject a full screen pass after post processing is rendered. + /// + AfterRenderingPostProcessing = RenderPassEvent.AfterRenderingPostProcessing + } /// - /// Inject a full screen pass before post processing is rendered. + /// Specifies at which injection point the pass will be rendered. /// - BeforeRenderingPostProcessing = RenderPassEvent.BeforeRenderingPostProcessing, + public InjectionPoint injectionPoint = InjectionPoint.AfterRenderingPostProcessing; /// - /// Inject a full screen pass after post processing is rendered. + /// Specifies whether the assigned material will need to use the current screen contents as an input texture. + /// Disable this to optimize away an extra color copy pass when you know that the assigned material will only need + /// to write on top of or hardware blend with the contents of the active color target. /// - AfterRenderingPostProcessing = RenderPassEvent.AfterRenderingPostProcessing - } - - /// - /// Specifies at which injection point the pass will be rendered. - /// - public InjectionPoint injectionPoint = InjectionPoint.AfterRenderingPostProcessing; - - /// - /// Specifies whether the assigned material will need to use the current screen contents as an input texture. - /// Disable this to optimize away an extra color copy pass when you know that the assigned material will only need - /// to write on top of or hardware blend with the contents of the active color target. - /// - public bool fetchColorBuffer = true; - - /// - /// A mask of URP textures that the assigned material will need access to. Requesting unused requirements can degrade - /// performance unnecessarily as URP might need to run additional rendering passes to generate them. - /// - public ScriptableRenderPassInput requirements = ScriptableRenderPassInput.None; + public bool fetchColorBuffer = true; - /// - /// The material used to render the full screen pass (typically based on the Fullscreen Shader Graph target). - /// - public Material passMaterial; - - /// - /// The shader pass index that should be used when rendering the assigned material. - /// - public int passIndex = 0; - - /// - /// Specifies if the active camera's depth-stencil buffer should be bound when rendering the full screen pass. - /// Disabling this will ensure that the material's depth and stencil commands will have no effect (this could also have a slight performance benefit). - /// - public bool bindDepthStencilAttachment = false; + /// + /// A mask of URP textures that the assigned material will need access to. Requesting unused requirements can degrade + /// performance unnecessarily as URP might need to run additional rendering passes to generate them. + /// + public ScriptableRenderPassInput requirements = ScriptableRenderPassInput.None; - private FullScreenRenderPass m_FullScreenPass; + /// + /// The material used to render the full screen pass (typically based on the Fullscreen Shader Graph target). + /// + public Material passMaterial; - /// - public override void Create() - { - m_FullScreenPass = new FullScreenRenderPass(name); - } + /// + /// The shader pass index that should be used when rendering the assigned material. + /// + public int passIndex = 0; - internal override bool RequireRenderingLayers(bool isDeferred, bool needsGBufferAccurateNormals, out RenderingLayerUtils.Event atEvent, out RenderingLayerUtils.MaskSize maskSize) - { - atEvent = RenderingLayerUtils.Event.Opaque; - maskSize = RenderingLayerUtils.MaskSize.Bits8; - return false; - } + /// + /// Specifies if the active camera's depth-stencil buffer should be bound when rendering the full screen pass. + /// Disabling this will ensure that the material's depth and stencil commands will have no effect (this could also have a slight performance benefit). + /// + public bool bindDepthStencilAttachment = false; - /// - public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) - { - if (renderingData.cameraData.cameraType == CameraType.Preview - || renderingData.cameraData.cameraType == CameraType.Reflection - || UniversalRenderer.IsOffscreenDepthTexture(ref renderingData.cameraData)) - return; + private FullScreenRenderPass m_FullScreenPass; - if (passMaterial == null) + /// + public override void Create() { - Debug.LogWarningFormat("The full screen feature \"{0}\" will not execute - no material is assigned. Please make sure a material is assigned for this feature on the renderer asset.", name); - return; + m_FullScreenPass = new FullScreenRenderPass(name); } - if (passIndex < 0 || passIndex >= passMaterial.passCount) + internal override bool RequireRenderingLayers(bool isDeferred, bool needsGBufferAccurateNormals, out RenderingLayerUtils.Event atEvent, out RenderingLayerUtils.MaskSize maskSize) { - Debug.LogWarningFormat("The full screen feature \"{0}\" will not execute - the pass index is out of bounds for the material.", name); - return; + atEvent = RenderingLayerUtils.Event.Opaque; + maskSize = RenderingLayerUtils.MaskSize.Bits8; + return false; } - m_FullScreenPass.renderPassEvent = (RenderPassEvent)injectionPoint; - m_FullScreenPass.ConfigureInput(requirements); - m_FullScreenPass.SetupMembers(passMaterial, passIndex, fetchColorBuffer, bindDepthStencilAttachment); - - m_FullScreenPass.requiresIntermediateTexture = fetchColorBuffer; - - renderer.EnqueuePass(m_FullScreenPass); - } - - /// - protected override void Dispose(bool disposing) - { - m_FullScreenPass.Dispose(); - } - - internal class FullScreenRenderPass : ScriptableRenderPass - { - private Material m_Material; - private int m_PassIndex; - private bool m_FetchActiveColor; - private bool m_BindDepthStencilAttachment; - private RTHandle m_CopiedColor; - - private static MaterialPropertyBlock s_SharedPropertyBlock = new MaterialPropertyBlock(); - - public FullScreenRenderPass(string passName) + /// + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { - profilingSampler = new ProfilingSampler(passName); - } + if (renderingData.cameraData.cameraType == CameraType.Preview + || renderingData.cameraData.cameraType == CameraType.Reflection + || UniversalRenderer.IsOffscreenDepthTexture(ref renderingData.cameraData)) + return; - public void SetupMembers(Material material, int passIndex, bool fetchActiveColor, bool bindDepthStencilAttachment) - { - m_Material = material; - m_PassIndex = passIndex; - m_FetchActiveColor = fetchActiveColor; - m_BindDepthStencilAttachment = bindDepthStencilAttachment; - } + if (passMaterial == null) + { + Debug.LogWarningFormat("The full screen feature \"{0}\" will not execute - no material is assigned. Please make sure a material is assigned for this feature on the renderer asset.", name); + return; + } - [Obsolete(DeprecationMessage.CompatibilityScriptingAPIObsolete, false)] - public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) - { - // Disable obsolete warning for internal usage - #pragma warning disable CS0618 - // FullScreenPass manages its own RenderTarget. - // ResetTarget here so that ScriptableRenderer's active attachement can be invalidated when processing this ScriptableRenderPass. - ResetTarget(); - #pragma warning restore CS0618 - - if (m_FetchActiveColor) - ReAllocate(renderingData.cameraData.cameraTargetDescriptor); - } + if (passIndex < 0 || passIndex >= passMaterial.passCount) + { + Debug.LogWarningFormat("The full screen feature \"{0}\" will not execute - the pass index is out of bounds for the material.", name); + return; + } - internal void ReAllocate(RenderTextureDescriptor desc) - { - desc.msaaSamples = 1; - desc.depthStencilFormat = GraphicsFormat.None; - RenderingUtils.ReAllocateHandleIfNeeded(ref m_CopiedColor, desc, name: "_FullscreenPassColorCopy"); - } + m_FullScreenPass.renderPassEvent = (RenderPassEvent)injectionPoint; + m_FullScreenPass.ConfigureInput(requirements); + m_FullScreenPass.SetupMembers(passMaterial, passIndex, fetchColorBuffer, bindDepthStencilAttachment); - public void Dispose() - { - m_CopiedColor?.Release(); + m_FullScreenPass.requiresIntermediateTexture = fetchColorBuffer; + + renderer.EnqueuePass(m_FullScreenPass); } - private static void ExecuteCopyColorPass(RasterCommandBuffer cmd, RTHandle sourceTexture) + /// + protected override void Dispose(bool disposing) { - Blitter.BlitTexture(cmd, sourceTexture, new Vector4(1, 1, 0, 0), 0.0f, false); + m_FullScreenPass.Dispose(); } - private static void ExecuteMainPass(RasterCommandBuffer cmd, RTHandle sourceTexture, Material material, int passIndex) + internal class FullScreenRenderPass : ScriptableRenderPass { - s_SharedPropertyBlock.Clear(); - if (sourceTexture != null) - s_SharedPropertyBlock.SetTexture(ShaderPropertyId.blitTexture, sourceTexture); + private Material m_Material; + private int m_PassIndex; + private bool m_FetchActiveColor; + private bool m_BindDepthStencilAttachment; + private RTHandle m_CopiedColor; - // We need to set the "_BlitScaleBias" uniform for user materials with shaders relying on core Blit.hlsl to work - s_SharedPropertyBlock.SetVector(ShaderPropertyId.blitScaleBias, new Vector4(1, 1, 0, 0)); + private static MaterialPropertyBlock s_SharedPropertyBlock = new MaterialPropertyBlock(); - cmd.DrawProcedural(Matrix4x4.identity, material, passIndex, MeshTopology.Triangles, 3, 1, s_SharedPropertyBlock); - } + public FullScreenRenderPass(string passName) + { + profilingSampler = new ProfilingSampler(passName); + } - [Obsolete(DeprecationMessage.CompatibilityScriptingAPIObsolete, false)] - public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) - { - ref var cameraData = ref renderingData.cameraData; - var cmd = renderingData.commandBuffer; + public void SetupMembers(Material material, int passIndex, bool fetchActiveColor, bool bindDepthStencilAttachment) + { + m_Material = material; + m_PassIndex = passIndex; + m_FetchActiveColor = fetchActiveColor; + m_BindDepthStencilAttachment = bindDepthStencilAttachment; + } - using (new ProfilingScope(cmd, profilingSampler)) + [Obsolete(DeprecationMessage.CompatibilityScriptingAPIObsolete, false)] + public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) { - RasterCommandBuffer rasterCmd = CommandBufferHelpers.GetRasterCommandBuffer(cmd); + // Disable obsolete warning for internal usage + #pragma warning disable CS0618 + // FullScreenPass manages its own RenderTarget. + // ResetTarget here so that ScriptableRenderer's active attachement can be invalidated when processing this ScriptableRenderPass. + ResetTarget(); + #pragma warning restore CS0618 + if (m_FetchActiveColor) - { - CoreUtils.SetRenderTarget(cmd, m_CopiedColor); - ExecuteCopyColorPass(rasterCmd, cameraData.renderer.cameraColorTargetHandle); - } + ReAllocate(renderingData.cameraData.cameraTargetDescriptor); + } - if (m_BindDepthStencilAttachment) - CoreUtils.SetRenderTarget(cmd, cameraData.renderer.cameraColorTargetHandle, cameraData.renderer.cameraDepthTargetHandle); - else - CoreUtils.SetRenderTarget(cmd, cameraData.renderer.cameraColorTargetHandle); + internal void ReAllocate(RenderTextureDescriptor desc) + { + desc.msaaSamples = 1; + desc.depthStencilFormat = GraphicsFormat.None; + RenderingUtils.ReAllocateHandleIfNeeded(ref m_CopiedColor, desc, name: "_FullscreenPassColorCopy"); + } - ExecuteMainPass(rasterCmd, m_FetchActiveColor ? m_CopiedColor : null, m_Material, m_PassIndex); + public void Dispose() + { + m_CopiedColor?.Release(); } - } - public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) - { - UniversalResourceData resourcesData = frameData.Get(); - UniversalCameraData cameraData = frameData.Get(); + private static void ExecuteCopyColorPass(RasterCommandBuffer cmd, RTHandle sourceTexture) + { + Blitter.BlitTexture(cmd, sourceTexture, new Vector4(1, 1, 0, 0), 0.0f, false); + } + + private static void ExecuteMainPass(RasterCommandBuffer cmd, RTHandle sourceTexture, Material material, int passIndex) + { + s_SharedPropertyBlock.Clear(); + if (sourceTexture != null) + s_SharedPropertyBlock.SetTexture(ShaderPropertyId.blitTexture, sourceTexture); - TextureHandle source, destination; + // We need to set the "_BlitScaleBias" uniform for user materials with shaders relying on core Blit.hlsl to work + s_SharedPropertyBlock.SetVector(ShaderPropertyId.blitScaleBias, new Vector4(1, 1, 0, 0)); - Debug.Assert(resourcesData.cameraColor.IsValid()); + cmd.DrawProcedural(Matrix4x4.identity, material, passIndex, MeshTopology.Triangles, 3, 1, s_SharedPropertyBlock); + } - if (m_FetchActiveColor) + [Obsolete(DeprecationMessage.CompatibilityScriptingAPIObsolete, false)] + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { - var targetDesc = renderGraph.GetTextureDesc(resourcesData.cameraColor); - targetDesc.name = "_CameraColorFullScreenPass"; - targetDesc.clearBuffer = false; + ref var cameraData = ref renderingData.cameraData; + var cmd = renderingData.commandBuffer; - source = resourcesData.activeColorTexture; - destination = renderGraph.CreateTexture(targetDesc); - - using (var builder = renderGraph.AddRasterRenderPass("Copy Color Full Screen", out var passData, profilingSampler)) + using (new ProfilingScope(cmd, profilingSampler)) { - passData.inputTexture = source; - builder.UseTexture(passData.inputTexture, AccessFlags.Read); + RasterCommandBuffer rasterCmd = CommandBufferHelpers.GetRasterCommandBuffer(cmd); + if (m_FetchActiveColor) + { + CoreUtils.SetRenderTarget(cmd, m_CopiedColor); + ExecuteCopyColorPass(rasterCmd, cameraData.renderer.cameraColorTargetHandle); + } - builder.SetRenderAttachment(destination, 0, AccessFlags.Write); + if (m_BindDepthStencilAttachment) + CoreUtils.SetRenderTarget(cmd, cameraData.renderer.cameraColorTargetHandle, cameraData.renderer.cameraDepthTargetHandle); + else + CoreUtils.SetRenderTarget(cmd, cameraData.renderer.cameraColorTargetHandle); - builder.SetRenderFunc((CopyPassData data, RasterGraphContext rgContext) => - { - ExecuteCopyColorPass(rgContext.cmd, data.inputTexture); - }); + ExecuteMainPass(rasterCmd, m_FetchActiveColor ? m_CopiedColor : null, m_Material, m_PassIndex); } - - //Swap for next pass; - source = destination; } - else + + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) { - source = TextureHandle.nullHandle; - } + UniversalResourceData resourcesData = frameData.Get(); + UniversalCameraData cameraData = frameData.Get(); - destination = resourcesData.activeColorTexture; + TextureHandle source, destination; + Debug.Assert(resourcesData.cameraColor.IsValid()); - using (var builder = renderGraph.AddRasterRenderPass(passName, out var passData, profilingSampler)) - { - passData.material = m_Material; - passData.passIndex = m_PassIndex; + if (m_FetchActiveColor) + { + var targetDesc = renderGraph.GetTextureDesc(resourcesData.cameraColor); + targetDesc.name = "_CameraColorFullScreenPass"; + targetDesc.clearBuffer = false; - passData.inputTexture = source; + source = resourcesData.activeColorTexture; + destination = renderGraph.CreateTexture(targetDesc); + + using (var builder = renderGraph.AddRasterRenderPass("Copy Color Full Screen", out var passData, profilingSampler)) + { + passData.inputTexture = source; + builder.UseTexture(passData.inputTexture, AccessFlags.Read); - if(passData.inputTexture.IsValid()) - builder.UseTexture(passData.inputTexture, AccessFlags.Read); + builder.SetRenderAttachment(destination, 0, AccessFlags.Write); - bool needsColor = (input & ScriptableRenderPassInput.Color) != ScriptableRenderPassInput.None; - bool needsDepth = (input & ScriptableRenderPassInput.Depth) != ScriptableRenderPassInput.None; - bool needsMotion = (input & ScriptableRenderPassInput.Motion) != ScriptableRenderPassInput.None; - bool needsNormal = (input & ScriptableRenderPassInput.Normal) != ScriptableRenderPassInput.None; + builder.SetRenderFunc((CopyPassData data, RasterGraphContext rgContext) => + { + ExecuteCopyColorPass(rgContext.cmd, data.inputTexture); + }); + } - if (needsColor) - { - Debug.Assert(resourcesData.cameraOpaqueTexture.IsValid()); - builder.UseTexture(resourcesData.cameraOpaqueTexture); + //Swap for next pass; + source = destination; } - - if (needsDepth) + else { - Debug.Assert(resourcesData.cameraDepthTexture.IsValid()); - builder.UseTexture(resourcesData.cameraDepthTexture); + source = TextureHandle.nullHandle; } - if (needsMotion) - { - Debug.Assert(resourcesData.motionVectorColor.IsValid()); - builder.UseTexture(resourcesData.motionVectorColor); - Debug.Assert(resourcesData.motionVectorDepth.IsValid()); - builder.UseTexture(resourcesData.motionVectorDepth); - } + destination = resourcesData.activeColorTexture; - if (needsNormal) + + using (var builder = renderGraph.AddRasterRenderPass(passName, out var passData, profilingSampler)) { - Debug.Assert(resourcesData.cameraNormalsTexture.IsValid()); - builder.UseTexture(resourcesData.cameraNormalsTexture); - } + passData.material = m_Material; + passData.passIndex = m_PassIndex; + + passData.inputTexture = source; + + if(passData.inputTexture.IsValid()) + builder.UseTexture(passData.inputTexture, AccessFlags.Read); + + bool needsColor = (input & ScriptableRenderPassInput.Color) != ScriptableRenderPassInput.None; + bool needsDepth = (input & ScriptableRenderPassInput.Depth) != ScriptableRenderPassInput.None; + bool needsMotion = (input & ScriptableRenderPassInput.Motion) != ScriptableRenderPassInput.None; + bool needsNormal = (input & ScriptableRenderPassInput.Normal) != ScriptableRenderPassInput.None; + + if (needsColor) + { + Debug.Assert(resourcesData.cameraOpaqueTexture.IsValid()); + builder.UseTexture(resourcesData.cameraOpaqueTexture); + } + + if (needsDepth) + { + Debug.Assert(resourcesData.cameraDepthTexture.IsValid()); + builder.UseTexture(resourcesData.cameraDepthTexture); + } + + if (needsMotion) + { + Debug.Assert(resourcesData.motionVectorColor.IsValid()); + builder.UseTexture(resourcesData.motionVectorColor); + Debug.Assert(resourcesData.motionVectorDepth.IsValid()); + builder.UseTexture(resourcesData.motionVectorDepth); + } + + if (needsNormal) + { + Debug.Assert(resourcesData.cameraNormalsTexture.IsValid()); + builder.UseTexture(resourcesData.cameraNormalsTexture); + } - builder.SetRenderAttachment(destination, 0, AccessFlags.Write); + builder.SetRenderAttachment(destination, 0, AccessFlags.Write); - if (m_BindDepthStencilAttachment) - builder.SetRenderAttachmentDepth(resourcesData.activeDepthTexture, AccessFlags.Write); + if (m_BindDepthStencilAttachment) + builder.SetRenderAttachmentDepth(resourcesData.activeDepthTexture, AccessFlags.Write); - builder.SetRenderFunc((MainPassData data, RasterGraphContext rgContext) => - { - ExecuteMainPass(rgContext.cmd, data.inputTexture, data.material, data.passIndex); - }); + builder.SetRenderFunc((MainPassData data, RasterGraphContext rgContext) => + { + ExecuteMainPass(rgContext.cmd, data.inputTexture, data.material, data.passIndex); + }); + } } - } - private class CopyPassData - { - internal TextureHandle inputTexture; - } + private class CopyPassData + { + internal TextureHandle inputTexture; + } - private class MainPassData - { - internal Material material; - internal int passIndex; - internal TextureHandle inputTexture; + private class MainPassData + { + internal Material material; + internal int passIndex; + internal TextureHandle inputTexture; + } } } } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.migration.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.migration.cs index 28431a3126c..c0fa826ffbc 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.migration.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.migration.cs @@ -1,79 +1,82 @@ -using UnityEngine; using UnityEditor; -using UnityEngine.Rendering.Universal; +using UnityEngine.Scripting.APIUpdating; -public partial class FullScreenPassRendererFeature : ISerializationCallbackReceiver +namespace UnityEngine.Rendering.Universal { - private enum Version + [MovedFrom("")] + public partial class FullScreenPassRendererFeature : ISerializationCallbackReceiver { - // * Uninitialised is a special last entry that will only ever be set on newly created objects or objects - // which were previously serialised with no Version member at all. - // * We distinguish between new objects and the unversioned objects based on if we first see this value during - // serialization or during deserialization respectively. - Uninitialised = -1, - - Initial, - AddFetchColorBufferCheckbox, + private enum Version + { + // * Uninitialised is a special last entry that will only ever be set on newly created objects or objects + // which were previously serialised with no Version member at all. + // * We distinguish between new objects and the unversioned objects based on if we first see this value during + // serialization or during deserialization respectively. + Uninitialised = -1, - // These two entries should remain at the end of the enum and new version should be added before Count - Count, - Latest = Count - 1, - } + Initial, + AddFetchColorBufferCheckbox, - [SerializeField] - [HideInInspector] - private Version m_Version = Version.Uninitialised; + // These two entries should remain at the end of the enum and new version should be added before Count + Count, + Latest = Count - 1, + } - private void UpgradeIfNeeded() - { - // As we rely on serialization/deserialization order to initialize the version as player might have restricions - // on when and if serialization is done skipping any upgrading at runtime to avoid accidentally doing the - // upgrade on the latest version. Upgrading at runtime does not really have much utility as it would mean - // that the asset would need to have been produced in an editor which is an earlier build version than the player -#if UNITY_EDITOR - if (m_Version == Version.Latest) - return; + [SerializeField] + [HideInInspector] + private Version m_Version = Version.Uninitialised; - if(m_Version == Version.Initial) + private void UpgradeIfNeeded() { - // * Previously the ScriptableRenderPassInput.Color requirement was repurposed to mean "copy the active - // color target" even though it is typically used to request '_CameraOpaqueTexture' and the copy color pass. - // * From now on, the "Fetch Color Buffer" choice will be a separate checkbox to remove the inconsistent - // meaning and to allow using the '_CameraOpaqueTexture' if one wants to as well. - fetchColorBuffer = requirements.HasFlag(ScriptableRenderPassInput.Color); + // As we rely on serialization/deserialization order to initialize the version as player might have restricions + // on when and if serialization is done skipping any upgrading at runtime to avoid accidentally doing the + // upgrade on the latest version. Upgrading at runtime does not really have much utility as it would mean + // that the asset would need to have been produced in an editor which is an earlier build version than the player + #if UNITY_EDITOR + if (m_Version == Version.Latest) + return; + + if(m_Version == Version.Initial) + { + // * Previously the ScriptableRenderPassInput.Color requirement was repurposed to mean "copy the active + // color target" even though it is typically used to request '_CameraOpaqueTexture' and the copy color pass. + // * From now on, the "Fetch Color Buffer" choice will be a separate checkbox to remove the inconsistent + // meaning and to allow using the '_CameraOpaqueTexture' if one wants to as well. + fetchColorBuffer = requirements.HasFlag(ScriptableRenderPassInput.Color); - // As the Color flag was being masked out during actual rendering we can safely disable it. - requirements &= ~ScriptableRenderPassInput.Color; + // As the Color flag was being masked out during actual rendering we can safely disable it. + requirements &= ~ScriptableRenderPassInput.Color; - m_Version++; + m_Version++; + } + // Put the next upgrader in an "if" here (not "else if" as they migh all need to run) + + // Making sure SetDirty is called once after deserialization + EditorApplication.delayCall += () => + { + if (this) + EditorUtility.SetDirty(this); + }; + #endif } - // Put the next upgrader in an "if" here (not "else if" as they migh all need to run) - // Making sure SetDirty is called once after deserialization - EditorApplication.delayCall += () => + /// + void ISerializationCallbackReceiver.OnBeforeSerialize() { - if (this) - EditorUtility.SetDirty(this); - }; -#endif - } - - /// - void ISerializationCallbackReceiver.OnBeforeSerialize() - { - // This should only ever be true the first time we're serializing a newly created object - if (m_Version == Version.Uninitialised) - m_Version = Version.Latest; - } + // This should only ever be true the first time we're serializing a newly created object + if (m_Version == Version.Uninitialised) + m_Version = Version.Latest; + } - /// - void ISerializationCallbackReceiver.OnAfterDeserialize() - { - // The 'Uninitialised' version is expected to only occur during deserialization for objects that were previously - // serialized before we added the m_Version field - if (m_Version == Version.Uninitialised) - m_Version = Version.Initial; + /// + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + // The 'Uninitialised' version is expected to only occur during deserialization for objects that were previously + // serialized before we added the m_Version field + if (m_Version == Version.Uninitialised) + m_Version = Version.Initial; - UpgradeIfNeeded(); + UpgradeIfNeeded(); + } } } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature_OldGUID.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature_OldGUID.cs new file mode 100644 index 00000000000..52759072bba --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature_OldGUID.cs @@ -0,0 +1,44 @@ +// UUM-92491: This solve an issue where in 2022.3 FullScreenPassRendererFeature got introduced with another +// guid than in the 6000.0 version. To update the GUID, we are bound to this strange inheritance and migration. +// See also FullScreenPassRendererFeature_OldGUIDEditor, for the in editor downcasting. + +#if UNITY_EDITOR +using UnityEditor; +#endif +using UnityEngine; + + +[System.Obsolete("Kept for migration purpose only. Do not use (see script for more info) #from(6000.0) (UnityUpgradable) -> FullScreenPassRendererFeature", true)] +class FullScreenPassRendererFeature_OldGUID : UnityEngine.Rendering.Universal.FullScreenPassRendererFeature, ISerializationCallbackReceiver +{ + void ISerializationCallbackReceiver.OnAfterDeserialize() + { +#if UNITY_EDITOR + // InternalCreate cannot be called in serialization callback... Delaying + EditorApplication.delayCall += DownCast; +#endif + } + +#if UNITY_EDITOR + void DownCast() + { + if (this == null || this.Equals(null)) return; + + const string newGUID = "b00045f12942b46c698459096c89274e"; + const string oldGUID = "6d613f08f173d4dd895bb07b3230baa9"; + + // Check current GUID to be extra sure it is the old one to update + var serializedObject = new SerializedObject(this); + var scriptProperty = serializedObject.FindProperty("m_Script"); + MonoScript currentScript = scriptProperty.objectReferenceValue as MonoScript; + AssetDatabase.TryGetGUIDAndLocalFileIdentifier(currentScript.GetInstanceID(), out var currentGUID, out var _); + if (currentGUID != oldGUID) + return; + + // Mutate to base FullScreenPassRendererFeature script + var newScript = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(newGUID)); + scriptProperty.objectReferenceValue = newScript; + serializedObject.ApplyModifiedProperties(); + } +#endif +} diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature_OldGUID.cs.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature_OldGUID.cs.meta new file mode 100644 index 00000000000..8028956fc52 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature_OldGUID.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6d613f08f173d4dd895bb07b3230baa9 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs index b90c808824a..826c21d4c86 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs @@ -174,6 +174,7 @@ protected internal override bool SupportsMotionVectors() internal DeferredLights deferredLights { get => m_DeferredLights; } internal LayerMask opaqueLayerMask { get; set; } internal LayerMask transparentLayerMask { get; set; } + internal bool shadowTransparentReceive { get; set; } internal GraphicsFormat cameraDepthTextureFormat { get => (m_CameraDepthTextureFormat != DepthFormat.Default) ? (GraphicsFormat)m_CameraDepthTextureFormat : k_DepthStencilFormatDefault; } internal GraphicsFormat cameraDepthAttachmentFormat { get => (m_CameraDepthAttachmentFormat != DepthFormat.Default) ? (GraphicsFormat)m_CameraDepthAttachmentFormat : k_DepthStencilFormatDefault; } @@ -222,6 +223,7 @@ public UniversalRenderer(UniversalRendererData data) : base(data) m_IntermediateTextureMode = data.intermediateTextureMode; opaqueLayerMask = data.opaqueLayerMask; transparentLayerMask = data.transparentLayerMask; + shadowTransparentReceive = data.shadowTransparentReceive; if (UniversalRenderPipeline.asset?.supportsLightCookies ?? false) { diff --git a/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/DepthBlit/DepthBlitFeature.cs b/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/DepthBlit/DepthBlitFeature.cs index 67cb04e93f1..6eda638d413 100644 --- a/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/DepthBlit/DepthBlitFeature.cs +++ b/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/DepthBlit/DepthBlitFeature.cs @@ -4,26 +4,30 @@ using UnityEngine.Rendering.RenderGraphModule; using UnityEngine.Rendering.Universal; -// This Renderer Feature enqueues either the DepthBlitCopyDepthPass or the DepthBlitDepthOnlyPass depending on the current platform support. -// DepthBlitCopyPass is a simplified version of URP CopyDepthPass. The pass copies the depth texture to an RTHandle. -// DepthBlitDepthOnlyPass is a simplified version of the URP DepthOnlyPass. The pass renders depth values to an RTHandle. -// The Renderer Feature also enqueues the DepthBlitEdgePass which takes the RTHandle as input to create an effect to visualize depth, and output it to the screen. +// Create a Scriptable Renderer Feature that either copies the depth texture to a render texture (RTHandle), or renders depth values to a render texture. +// The Scriptable Renderer Feature then outputs the render texture to the screen, using a material that renders an edge effect. +// For more information about creating scriptable renderer features, refer to https://docs.unity3d.com/Manual/urp/customizing-urp.html public class DepthBlitFeature : ScriptableRendererFeature { + // Set the injection points for the render passes public RenderPassEvent evt_Depth = RenderPassEvent.AfterRenderingOpaques; public RenderPassEvent evt_Edge = RenderPassEvent.AfterRenderingOpaques; - public UniversalRendererData rendererDataAsset; // The field for accessing opaqueLayerMask on the renderer asset + + // Create a property for a Universal Renderer asset that sets the opaque layers to draw. + public UniversalRendererData rendererDataAsset; + // Create a property for the shader that copies the depth texture. public Shader copyDepthShader; + // Create a property for the material that renders the edge effect. public Material m_DepthEdgeMaterial; - // The properties for creating the depth texture + // Set the properties of the destination depth texture. private const string k_DepthRTName = "_MyDepthTexture"; private FilterMode m_DepthRTFilterMode = FilterMode.Bilinear; private TextureWrapMode m_DepthRTWrapMode = TextureWrapMode.Clamp; - // This class is for keeping the TextureHandle reference in the frame data so that it can be shared with multiple passes in the render graph system. + // Create a class that keeps the reference to the depth texture in the frame data, so multiple passes in the render graph system can share the texture. public class TexRefData : ContextItem { public TextureHandle depthTextureHandle = TextureHandle.nullHandle; @@ -34,12 +38,13 @@ public override void Reset() } } - // The passes for the effect + // Declare the render passes. + // The script uses DepthOnlyPass for platforms that run OpenGL ES, which doesn't support copying from a depth texture. private DepthBlitCopyDepthPass m_CopyDepthPass; - private DepthBlitDepthOnlyPass m_DepthOnlyPass; // DepthOnlyPass is for platforms that run OpenGL ES, which does not support CopyDepth. + private DepthBlitDepthOnlyPass m_DepthOnlyPass; private DepthBlitEdgePass m_DepthEdgePass; - // Check if the platform supports CopyDepthPass + // Check if the platform supports copying from a depth texture. private bool CanCopyDepth(ref CameraData cameraData) { bool msaaEnabledForCamera = cameraData.cameraTargetDescriptor.msaaSamples > 1; @@ -49,7 +54,7 @@ private bool CanCopyDepth(ref CameraData cameraData) bool msaaDepthResolve = msaaEnabledForCamera && SystemInfo.supportsMultisampledTextures != 0; - // Avoid copying MSAA depth on GLES3 platform to avoid invalid results + // Avoid copying MSAA depth on GLES3 platforms to avoid invalid results if (IsGLESDevice() && msaaDepthResolve) return false; @@ -61,13 +66,15 @@ private bool IsGLESDevice() return SystemInfo.graphicsDeviceType == GraphicsDeviceType.OpenGLES3; } + // Override the AddRenderPasses method to inject passes into the renderer. Unity calls AddRenderPasses once per camera. public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { + // Skip rendering if the camera is not a game camera. var cameraData = renderingData.cameraData; if (renderingData.cameraData.cameraType != CameraType.Game) return; - // Setup RenderTextureDescriptor for creating the depth RTHandle + // Set up a RenderTextureDescriptor with the properties of the depth texture. var desc = renderingData.cameraData.cameraTargetDescriptor; if (CanCopyDepth(ref cameraData)) { @@ -80,11 +87,13 @@ public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingD desc.msaaSamples = 1; } - // Setup passes + // Create the DepthBlitCopyDepthPass or DepthBlitDepthOnlyPass render pass, and inject it into the renderer. RTHandle depthRTHandle; if (CanCopyDepth(ref cameraData)) { if (m_CopyDepthPass == null) + // Create a new instance of a render pass that copies the depth texture to the new render texture. + // This render pass is a simplified version of CopyDepthPass in URP. m_CopyDepthPass = new DepthBlitCopyDepthPass(evt_Depth, copyDepthShader, desc, m_DepthRTFilterMode, m_DepthRTWrapMode, name: k_DepthRTName); @@ -94,6 +103,8 @@ public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingD else { if (m_DepthOnlyPass == null) + // Create a new instance of a render pass that renders depth values to the new render texture. + // This render pass is a simplified version of DepthOnlyPass in URP. m_DepthOnlyPass = new DepthBlitDepthOnlyPass(evt_Depth, RenderQueueRange.opaque, rendererDataAsset.opaqueLayerMask, desc, m_DepthRTFilterMode, m_DepthRTWrapMode, name: k_DepthRTName); @@ -101,16 +112,18 @@ public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingD depthRTHandle = m_DepthOnlyPass.depthRT; } - // Pass the RTHandle for the DepthEdge effect + // Pass the render texture to the edge effect render pass, and inject the render pass into the renderer. m_DepthEdgePass.SetRTHandle(ref depthRTHandle); renderer.EnqueuePass(m_DepthEdgePass); } public override void Create() { + // Create a new instance of the render pass that renders the edge effect. m_DepthEdgePass = new DepthBlitEdgePass(m_DepthEdgeMaterial, evt_Edge); } + // Free the resources the render passes use. protected override void Dispose(bool disposing) { m_CopyDepthPass?.Dispose(); diff --git a/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/DistortTunnel/DistortTunnelRendererFeature.cs b/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/DistortTunnel/DistortTunnelRendererFeature.cs index 54f4361b509..af33d4a25bb 100644 --- a/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/DistortTunnel/DistortTunnelRendererFeature.cs +++ b/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/DistortTunnel/DistortTunnelRendererFeature.cs @@ -3,26 +3,33 @@ using UnityEngine.Rendering.RenderGraphModule; using UnityEngine.Rendering.Universal; -// This Renderer Feature creates an RTHandle which stores a Texture2DArray with 2 slices for the final effect. -// The RTHandle is being set as input or output for the 3 passes: -// 1. CopyColor pass: Blit the screen color texture to the RTHandle's first slice. -// 2. Tunnel pass: Render a "tunnel" object from the scene to the RTHandle's second slice. -// 3. Distort pass: Uses the two slices to create the final effect, and blits the result back to screen. +// Create a Scriptable Renderer Feature that renders a distorted tunnel effect. +// This Scriptable Renderer Feature is used in the Universal Render Pipeline (URP) package samples. For more information, https://docs.unity3d.com/Manual/urp/package-sample-urp-package-samples.html. +// For more information about creating scriptable renderer features, refer to https://docs.unity3d.com/Manual/urp/customizing-urp.html. public class DistortTunnelRendererFeature : ScriptableRendererFeature { + // Create a property to set the injection point for the render passes. public RenderPassEvent passEvent = RenderPassEvent.AfterRenderingSkybox; + // Create a property to set the shader to use for the distortion effect. public Shader distortShader; + + // Set the material to use for the distortion effect. private Material m_DistortMaterial; + // Declare the three render passes. + // 1. CopyColorPass blits the screen color texture to the first slice of a 2D render texture array. + // 2. TunnelPass renders a tunnel GameObject from the scene to the second slice of a 2D render texture array. + // 3. DistortPass uses the two slices to create the final effect, and blits the result back to the screen. private DistortTunnelPass_CopyColor m_CopyColorPass; private DistortTunnelPass_Tunnel m_TunnelPass; private DistortTunnelPass_Distort m_DistortPass; + // Declare and name the render texture that stores the render pass outputs. private RTHandle m_DistortTunnelTexHandle; private const string k_DistortTunnelTexName = "_DistortTunnelTexture"; - // This class stores TextureHandle references in the frame data so that they can be shared with multiple passes in the render graph system. + // Create a class that keeps the TextureHandle reference in the frame data, so multiple passes in the render graph system can share the texture. public class TexRefData : ContextItem { public TextureHandle distortTunnelTexHandle = TextureHandle.nullHandle; @@ -33,20 +40,24 @@ public override void Reset() } } + public override void Create() { + // Set the resources the render passes use. m_CopyColorPass = new DistortTunnelPass_CopyColor(passEvent); m_TunnelPass = new DistortTunnelPass_Tunnel(passEvent); m_DistortMaterial = CoreUtils.CreateEngineMaterial(distortShader); m_DistortPass = new DistortTunnelPass_Distort(m_DistortMaterial, passEvent); } + // Override the AddRenderPasses method to inject passes into the renderer. Unity calls AddRenderPasses once per camera. public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { + // Skip rendering if the camera isn't a game camera. if (renderingData.cameraData.cameraType != CameraType.Game) return; - // Create RTHandle with 2 slices + // Create a 2D render texture array that contains 2 slices. var desc = renderingData.cameraData.cameraTargetDescriptor; desc.depthBufferBits = 0; desc.msaaSamples = 1; @@ -54,16 +65,18 @@ public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingD desc.volumeDepth = 2; RenderingUtils.ReAllocateHandleIfNeeded(ref m_DistortTunnelTexHandle, desc, FilterMode.Bilinear, TextureWrapMode.Clamp, name: k_DistortTunnelTexName ); - // Provide the necessary RTHandles to the passes + // Set the 2D texture array and its slices as inputs and outputs for the render passes. m_CopyColorPass.SetRTHandles(ref m_DistortTunnelTexHandle,0); m_TunnelPass.SetRTHandles(ref m_DistortTunnelTexHandle,1); m_DistortPass.SetRTHandles(ref m_DistortTunnelTexHandle); + // Inject the render passes into the renderer. renderer.EnqueuePass(m_CopyColorPass); renderer.EnqueuePass(m_TunnelPass); renderer.EnqueuePass(m_DistortPass); } + // Free the resources the Scriptable Renderer Feature uses. protected override void Dispose(bool disposing) { CoreUtils.Destroy(m_DistortMaterial); diff --git a/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/KeepFrame/KeepFrameFeature.cs b/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/KeepFrame/KeepFrameFeature.cs index 3ed56cc3c4c..fe12960137e 100644 --- a/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/KeepFrame/KeepFrameFeature.cs +++ b/Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/RendererFeatures/KeepFrame/KeepFrameFeature.cs @@ -7,18 +7,18 @@ using UnityEngine.Rendering.RenderGraphModule.Util; using UnityEngine.Rendering.Universal; -// This renderer feature will replicate a "don't clear" behaviour by injecting two passes into the pipeline: -// One pass that copies color at the end of a frame -// Another pass that draws the content of the copied texture at the beginning of a new frame -// In this version of the sample we provide implementations for both RenderGraph and non-RenderGraph pipelines. -// This way you can easily see what changed and how to manage code bases with backwards compatibility +// Create a Scriptable Renderer Feature that replicates Don't Clear behavior by injecting two render passes into the pipeline. +// The first pass copies the camera color target at the end of a frame. The second pass draws the contents of the copied texture at the beginning of a new frame. +// For more information about creating Scriptable Renderer Features, refer to https://docs.unity3d.com/Manual/urp/customizing-urp.html. public class KeepFrameFeature : ScriptableRendererFeature { - // This pass is responsible for copying color to a specified destination + // Create the custom render pass that copies the camera color to a destination texture. class CopyFramePass : ScriptableRenderPass { + // Declare the destination texture. RTHandle m_Destination; + // Declare the resources the render pass uses. public void Setup(RTHandle destination) { m_Destination = destination; @@ -26,55 +26,61 @@ public void Setup(RTHandle destination) #pragma warning disable 618, 672 // Type or member is obsolete, Member overrides obsolete member - // Unity calls the Execute method in the Compatibility mode + // Override the Execute method to implement the rendering logic. + // This method is used only in the Compatibility Mode path. public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { + // Skip rendering if the camera isn't a game camera. if (renderingData.cameraData.camera.cameraType != CameraType.Game) return; + // Set the source texture as the camera color target. var source = renderingData.cameraData.renderer.cameraColorTargetHandle; + // Get a command buffer. CommandBuffer cmd = CommandBufferPool.Get("CopyFramePass"); + // Blit the camera color target to the destination texture. Blit(cmd, source, m_Destination); + // Execute the command buffer. context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); } #pragma warning restore 618, 672 - // RecordRenderGraph is called for the RenderGraph path. - // Because RenderGraph has to calculate internally how resources are used we must be aware of 2 - // distinct timelines inside this method: one for recording resource usage and one for recording draw commands. - // It is important to scope resources correctly as global state may change between the execution times of each. + // Override the RecordRenderGraph method to implement the rendering logic. + // This method is used only in the render graph system path. public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) { + // Get the resources the pass uses. UniversalResourceData resourceData = frameData.Get(); UniversalCameraData cameraData = frameData.Get(); + // Skip rendering if the camera isn't a game camera. if (cameraData.camera.cameraType != CameraType.Game) return; + // Set the source texture as the camera color target. TextureHandle source = resourceData.activeColorTexture; - // When using the RenderGraph API the lifetime and ownership of resources is managed by the render graph system itself. - // This allows for optimal resource usage and other optimizations to be done automatically for the user. - // In the cases where resources must persist across frames, between different cameras or when users want - // to manage their lifetimes themselves, the resources must be imported when recording the render pass. + // Import the texture that persists across frames, so the render graph system can use it. TextureHandle destination = renderGraph.ImportTexture(m_Destination); if (!source.IsValid() || !destination.IsValid()) return; + // Blit the content of the copied texture to the camera color target with a material. RenderGraphUtils.BlitMaterialParameters para = new(source, destination, Blitter.GetBlitMaterial(TextureDimension.Tex2D), 0); renderGraph.AddBlitPass(para, "Copy Frame Pass"); } } - // This pass is responsible for drawing the old color to a full screen quad + // Create the custom render pass that draws the contents of the copied texture at the beginning of a new frame. class DrawOldFramePass : ScriptableRenderPass { + // Declare the resources the render pass uses. class PassData { public TextureHandle source; @@ -86,6 +92,7 @@ class PassData RTHandle m_Handle; string m_TextureName; + // Set up the resources the render pass uses. public void Setup(Material drawOldFrameMaterial, RTHandle handle, string textureName) { m_DrawOldFrameMaterial = drawOldFrameMaterial; @@ -93,62 +100,75 @@ public void Setup(Material drawOldFrameMaterial, RTHandle handle, string texture m_Handle = handle; } - // This is an example of how to share code between RenderGraph and older non-RenderGraph setups. - // The common draw commands are extracted in a private static method that gets called from both - // Execute and render graph builder's SetRenderFunc. + // Blit the copied texture to the camera color target. + // This method uses common draw commands that both the render graph system and Compatibility Mode paths can use. static void ExecutePass(RasterCommandBuffer cmd, RTHandle source, Material material) { if (material == null) return; + // Get the viewport scale. Vector2 viewportScale = source.useScaling ? new Vector2(source.rtHandleProperties.rtHandleScale.x, source.rtHandleProperties.rtHandleScale.y) : Vector2.one; + + // Blit the copied texture to the camera color target. Blitter.BlitTexture(cmd, source, viewportScale, material, 0); } #pragma warning disable 618, 672 // Type or member is obsolete, Member overrides obsolete member - // Unity calls the Execute method in the Compatibility mode + // Override the Execute method to implement the rendering logic. + // This method is used only in the Compatibility Mode path. public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { + // Get a command buffer. CommandBuffer cmd = CommandBufferPool.Get(nameof(DrawOldFramePass)); cmd.SetGlobalTexture(m_TextureName, m_Handle); + // Set the source texture as the camera color target. var source = renderingData.cameraData.renderer.cameraColorTargetHandle; + + // Blit the camera color target to the destination texture. ExecutePass(CommandBufferHelpers.GetRasterCommandBuffer(cmd), source, m_DrawOldFrameMaterial); + // Execute the command buffer. context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); } #pragma warning restore 618, 672 + // Override the RecordRenderGraph method to implement the rendering logic. + // This method is used only in the render graph system path. public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) { + // Get the resources the pass uses. UniversalResourceData resourceData = frameData.Get(); UniversalCameraData cameraData = frameData.Get(); - TextureHandle oldFrameTextureHandle = renderGraph.ImportTexture(m_Handle); + // Import the texture that persists across frames, so the render graph system can use it. + TextureHandle oldFrameTextureHandle = renderGraph.ImportTexture(m_Handle); using (var builder = renderGraph.AddRasterRenderPass("Draw Old Frame Pass", out var passData)) { + // Set the destination texture as the camera color target. TextureHandle destination = resourceData.activeColorTexture; if (!oldFrameTextureHandle.IsValid() || !destination.IsValid()) return; + // Set the resources the pass uses. passData.material = m_DrawOldFrameMaterial; passData.source = oldFrameTextureHandle; passData.name = m_TextureName; + // Set the render graph system to read the copied texture, and write to the camera color target. builder.UseTexture(oldFrameTextureHandle, AccessFlags.Read); builder.SetRenderAttachment(destination, 0, AccessFlags.Write); - // Normally global state modifications are not allowed when using RenderGraph and will result in errors. - // In the exceptional cases where this is intentional we must let the RenderGraph API know by calling - // AllowGlobalStateModification(true). Use this only where necessary as it will introduce a sync point - // in the frame which may have a negative impact on performance. + // Allow global state modifications. Use this only where necessary as it introduces a synchronization point in the frame, which might have an impact on performance. builder.AllowGlobalStateModification(true); + // Set the render method. builder.SetRenderFunc((PassData data, RasterGraphContext context) => { context.cmd.SetGlobalTexture(data.name, data.source); @@ -161,9 +181,9 @@ public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer [Serializable] public class Settings { - [Tooltip("The material that is used when the old frame is redrawn at the start of the new frame (before opaques).")] + [Tooltip("Sets the material to use to draw the previous frame.")] public Material displayMaterial; - [Tooltip("The name of the texture used for referencing the copied frame. (Defaults to _FrameCopyTex if empty)")] + [Tooltip("Sets the texture to copy each frame into. The default it _FrameCopyTex.")] public string textureName; } diff --git a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl index 6588ed0e5ff..7690e408d9d 100644 --- a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl +++ b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl @@ -416,7 +416,7 @@ half AdditionalLightRealtimeShadow(int lightIndex, float3 positionWS, half3 ligh half AdditionalLightRealtimeShadow(int lightIndex, float3 positionWS, half3 lightDirection) { - #if defined(ADDITIONAL_LIGHT_CALCULATE_SHADOWS) + #if !defined(ADDITIONAL_LIGHT_CALCULATE_SHADOWS) return half(1.0); #endif diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Sprite-Lit-Default.shader b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Sprite-Lit-Default.shader index 686a209d6ef..ba03b8fac6f 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Sprite-Lit-Default.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Sprite-Lit-Default.shader @@ -21,7 +21,6 @@ Shader "Universal Render Pipeline/2D/Sprite-Lit-Default" Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha Cull Off ZWrite [_ZWrite] - ZTest Off Pass { diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/ScalingSetup.shader b/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/ScalingSetup.shader index 338f8624602..5d215ecf42d 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/ScalingSetup.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/ScalingSetup.shader @@ -45,7 +45,7 @@ Shader "Hidden/Universal Render Pipeline/Scaling Setup" // In HDR output mode, the colors are expressed in nits, which can go up to 10k nits. // We divide by the display max nits to get a max value closer to 1.0 but it could still be > 1.0. // Finally, use FastTonemap() to squash everything < 1.0. - color = FastTonemap(color * OneOverPaperWhite); + color = half4(FastTonemap(color.rgb * OneOverPaperWhite), color.a); #endif // EASU expects perceptually encoded color data so either encode to gamma 2.0 here if the input // data is linear, or let it pass through unchanged if it's already gamma encoded. diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainDetailLitPasses.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainDetailLitPasses.hlsl index 4a7ce2f0d57..659709ca500 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainDetailLitPasses.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainDetailLitPasses.hlsl @@ -159,7 +159,8 @@ Varyings TerrainLitVertex(Attributes input) diffuseColor += LightingLambert(attenuatedLightColor, mainLight.direction, NormalWS); } - #if defined(_ADDITIONAL_LIGHTS) || defined(_ADDITIONAL_LIGHTS_VERTEX) + // Adding !defined(USE_CLUSTER_LIGHT_LOOP): in Forward+ we can't possibly get the light list in a vertex shader. + #if (defined(_ADDITIONAL_LIGHTS) || defined(_ADDITIONAL_LIGHTS_VERTEX)) && !USE_FORWARD_PLUS if (IsLightingFeatureEnabled(DEBUGLIGHTINGFEATUREFLAGS_ADDITIONAL_LIGHTS)) { int pixelLightCount = GetAdditionalLightsCount(); diff --git a/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md b/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md index 630ac204f20..c5204fe4826 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md +++ b/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md @@ -8,11 +8,12 @@ Shader Graph can display colors on nodes in your graph to improve readability. T ## Modes -| Name | Description | -|:-----|:------------| -| None | Does not display colors on the nodes. All nodes use the default gray. | -| Category | Displays colors on the nodes based on their assigned category. See **Category Colors** below. | -| Precision | Displays colors on the nodes based on the current [Precision Mode](Precision-Modes) in use. | +| Name | Description | +|:-------------|:------------| +| None | Does not display colors on the nodes. All nodes use the default gray. | +| Category | Displays colors on the nodes based on their assigned category. See **Category Colors** below. | +| Heatmap | Displays colors on the nodes based on the nodes relative performance cost. By default, dark colored nodes contribute very little to the overall GPU performance cost of the shader and brighter colored nodes require more GPU computation to run. | +| Precision | Displays colors on the nodes based on the current [Precision Mode](Precision-Modes) in use. | | User Defined | Lets you set the display colors on a per-node basis. These are custom colors for your graph. See **User Defined Colors** below. | ### Category Colors @@ -23,15 +24,15 @@ This mode displays colors on the nodes based on their category. See the [Node Li The table below lists current categories and their corresponding colors. -| Name | Color | Hex Value | -|:-----|:------|:----------| -| Artistic | ![#DB773B](https://placehold.it/15/DB773B/000000?text=+) | #DB773B | -| Channel | ![#97D13D](https://placehold.it/15/97D13D/000000?text=+) | #97D13D | -| Input | ![#CB3022](https://placehold.it/15/CB3022/000000?text=+) | #CB3022 | -| Math | ![#4B92F3](https://placehold.it/15/4B92F3/000000?text=+) | #4B92F3 | -| Procedural | ![#9C4FFF](https://placehold.it/15/9C4FFF/000000?text=+) | #9C4FFF | -| Utility | ![#AEAEAE](https://placehold.it/15/AEAEAE/000000?text=+) | #AEAEAE | -| UV | ![#08D78B](https://placehold.it/15/08D78B/000000?text=+) | #08D78B | +| Name | Color | Hex Value | +|:-----------|:---------------------------------------------------------|:----------| +| Artistic | ![#DB773B](https://placehold.it/15/DB773B/000000?text=+) | #DB773B | +| Channel | ![#97D13D](https://placehold.it/15/97D13D/000000?text=+) | #97D13D | +| Input | ![#CB3022](https://placehold.it/15/CB3022/000000?text=+) | #CB3022 | +| Math | ![#4B92F3](https://placehold.it/15/4B92F3/000000?text=+) | #4B92F3 | +| Procedural | ![#9C4FFF](https://placehold.it/15/9C4FFF/000000?text=+) | #9C4FFF | +| Utility | ![#AEAEAE](https://placehold.it/15/AEAEAE/000000?text=+) | #AEAEAE | +| UV | ![#08D78B](https://placehold.it/15/08D78B/000000?text=+) | #08D78B | **Note:** [Sub Graph](Sub-Graph.md) nodes in a main [Shader Graph](index.md) fall in the Utility category. If you select **Category** mode, all Sub Graphs use the Utility color. @@ -45,10 +46,10 @@ This mode displays colors on the nodes based on user preferences. In this mode, To set a custom color for a node, right-click on the target node to bring up the the context menu, and select **Color**. -| Option | Description | -|:-------|:------------| +| Option | Description | +|:------- |:------------| | Change... |Brings up a color picker menu and lets you set your own custom color on the node. | -| Reset | Removes the currently selected color and sets it to the default gray. | +| Reset | Removes the currently selected color and sets it to the default gray. | ![](images/Color-Mode-User-Defined.png) diff --git a/Packages/com.unity.shadergraph/Documentation~/Create-Shader-Graph.md b/Packages/com.unity.shadergraph/Documentation~/Create-Shader-Graph.md index 1e8df26e36b..3b0a32c6085 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Create-Shader-Graph.md +++ b/Packages/com.unity.shadergraph/Documentation~/Create-Shader-Graph.md @@ -13,7 +13,7 @@ The following options are always available: A sub menu for each installed render pipeline may be present containing template stacks for standard shading models ( Lit, Unlit, etc ). -For a full list of provided options, refer to the [Universal Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest) and [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest) documentation. +For a full list of provided options, refer to the [Universal Render Pipeline](https://docs.unity3d.com/Manual/urp/urp-introduction.html) and [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest) documentation. For this example, Universal is installed so a Unversal Lit Shader Graph has been created. diff --git a/Packages/com.unity.shadergraph/Documentation~/Getting-Started.md b/Packages/com.unity.shadergraph/Documentation~/Getting-Started.md index eb9171b14a0..cd100678fe1 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Getting-Started.md +++ b/Packages/com.unity.shadergraph/Documentation~/Getting-Started.md @@ -3,7 +3,7 @@ Use Shader Graph with either of the Scriptable Render Pipelines (SRPs) available in Unity version 2018.1 and later: - The [High Definition Render Pipeline (HDRP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest) -- The [Universal Render Pipeline (URP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest) +- The [Universal Render Pipeline (URP)](https://docs.unity3d.com/Manual/urp/urp-introduction.html) As of Unity version 2021.2, you can also use Shader Graph with the [Built-In Render Pipeline](https://docs.unity3d.com/Documentation/Manual/built-in-render-pipeline.html). @@ -12,4 +12,4 @@ As of Unity version 2021.2, you can also use Shader Graph with the [Built-In Ren When you install HDRP or URP into your project, Unity also installs the Shader Graph package automatically. You can manually install Shader Graph for use with the Built-In Render Pipeline on Unity version 2021.2 and later with the Package Manager. For more information on how to install a package, see [Adding and removing packages](https://docs.unity3d.com/Manual/upm-ui-actions.html) in the Unity User Manual. -For more information about how to set up a Scriptable Render Pipeline, see [Getting started with HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.0/manual/getting-started-in-hdrp.html) or [Getting started with URP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@17.0/manual/InstallingAndConfiguringURP.html). +For more information about how to set up a Scriptable Render Pipeline, see [Getting started with HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.0/manual/getting-started-in-hdrp.html) or [Getting started with URP](https://docs.unity3d.com/Manual/urp/InstallingAndConfiguringURP). diff --git a/Packages/com.unity.shadergraph/Documentation~/Graph-Settings-Tab.md b/Packages/com.unity.shadergraph/Documentation~/Graph-Settings-Tab.md index 78d145f0c1e..038ddf6665a 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Graph-Settings-Tab.md +++ b/Packages/com.unity.shadergraph/Documentation~/Graph-Settings-Tab.md @@ -12,4 +12,4 @@ The **Graph Settings** tab on the **[Graph Inspector](Internal-Inspector.md)** m |:----------|:------------| | Precision | A [Precision Mode](Precision-Modes.md) drop-down menu that lets you set the default precision for the entire graph. You can override the Precision setting here at the node level in your graph.| | Preview Mode | (Subgraphs only) Your options are **Inherit**, **Preview 2D**, and **Preview 3D**. | -| Active Targets | A list that contains the Targets you've selected. You can add or remove entries using the Add (**+**) and Remove (**-**) buttons.
Shader Graph supports three targets: the [Universal Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/manual/index.html), the [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@12.0/manual/index.html), and [Built-In Render Pipeline](https://docs.unity3d.com/2020.3/Documentation/Manual/render-pipelines.html). Target-specific settings appear below the standard setting options. The displayed Target-specific settings change according to which Targets you select. | +| Active Targets | A list that contains the Targets you've selected. You can add or remove entries using the Add (**+**) and Remove (**-**) buttons.
Shader Graph supports three targets: the [Universal Render Pipeline](https://docs.unity3d.com/Manual/urp/urp-introduction.html), the [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@12.0/manual/index.html), and [Built-In Render Pipeline](https://docs.unity3d.com/2020.3/Documentation/Manual/render-pipelines). Target-specific settings appear below the standard setting options. The displayed Target-specific settings change according to which Targets you select. | diff --git a/Packages/com.unity.shadergraph/Documentation~/Graph-Target.md b/Packages/com.unity.shadergraph/Documentation~/Graph-Target.md index 63b2305a31a..652b6b20eb4 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Graph-Target.md +++ b/Packages/com.unity.shadergraph/Documentation~/Graph-Target.md @@ -10,7 +10,7 @@ Target Settings are specific to each Target, and can vary between assets dependi Typically, each Target you select generates a valid subshader from the graph. For example, a Shader Graph asset with both URP and HDRP Targets will generate two subshaders. When you use a graph that targets multiple render pipelines, you must reimport the Shader Graph asset if you change the active render pipeline. This updates the Material Inspector for any Materials that use your graph. -Shader Graph supports three targets: the [Universal Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/manual/index.html), the [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@12.0/manual/index.html), and the [Built-In Render Pipeline](https://docs.unity3d.com/2020.3/Documentation/Manual/render-pipelines.html). +Shader Graph supports three targets: the [Universal Render Pipeline](https://docs.unity3d.com/Manual/urp/urp-introduction.html), the [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@12.0/manual/index.html), and the [Built-In Render Pipeline](https://docs.unity3d.com/2020.3/Documentation/Manual/render-pipelines). Not all blocks are compatible with all targets. If a block in your graph becomes inactive when you choose a target, that block is not compatible with that target. diff --git a/Packages/com.unity.shadergraph/Documentation~/Position-Node.md b/Packages/com.unity.shadergraph/Documentation~/Position-Node.md index 116449a0274..5982556c6cc 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Position-Node.md +++ b/Packages/com.unity.shadergraph/Documentation~/Position-Node.md @@ -21,7 +21,7 @@ The Position Node provides drop-down options for both **World** and **Absolute W The [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest/index.html) uses [Camera Relative](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest?preview=1&subfolder=/manual/Camera-Relative-Rendering.html) as its default world space. -The [Universal Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html) uses **Absolute World** as its default world space. +The [Universal Render Pipeline](https://docs.unity3d.com/Manual/urp/urp-introduction.html) uses **Absolute World** as its default world space. ### Upgrading from previous versions If you use a Position Node in **World** space on a graph authored in Shader Graph version 6.7.0 or earlier, it automatically upgrades the selection to **Absolute World**. This ensures that the calculations on your graph remain accurate to your expectations, since the **World** output might change. diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready-Decal.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready-Decal.md index bcd3e81a8ee..ac30f503e25 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready-Decal.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready-Decal.md @@ -1,7 +1,7 @@ # Decals Decals allow you to apply local material modifications to specific places in the world. You might think of things like applying graffiti tags to a wall or scattering fallen leaves below a tree. But decals can be used for a lot more. In these examples, we see decals making things look wet, making surfaces appear to have flowing water across them, projecting water caustics, and blending specific materials onto other objects. -Decals are available to use in both HDRP and URP, but they need to be enabled in both render pipelines. To use decals, refer to the documentation in both [HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.0/manual/decals.html) and [URP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@17.0/manual/renderer-feature-decal.html). +Decals are available to use in both HDRP and URP, but they need to be enabled in both render pipelines. To use decals, refer to the documentation in both [HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.0/manual/decals.html) and [URP](https://docs.unity3d.com/Manual/urp/renderer-feature-decal.html). #### Material Projection This decal uses triplanar projection to project a material in 3D space. It projects materials correctly onto any mesh that intersects the decal volume. It can be used to apply terrain materials on to other objects like rocks so that they blend in better with the terrain. diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready-Detail.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready-Detail.md index 59de6ba7216..1e454e51a9c 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready-Detail.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready-Detail.md @@ -54,7 +54,7 @@ This custom GUI script enables the small texture thumbnails and other features i ## Decals Decals allow you to apply local material modifications to specific places in the world. You might think of things like applying graffiti tags to a wall or scattering fallen leaves below a tree. But decals can be used for a lot more. In these examples, we see decals making things look wet, making surfaces appear to have flowing water across them, projecting water caustics, and blending specific materials onto other objects. -Decals are available to use in both HDRP and URP, but they need to be enabled in both render pipelines. To use decals, see the documentation in both [HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.0/manual/decals.html) and [URP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@17.0/manual/renderer-feature-decal.html). +Decals are available to use in both HDRP and URP, but they need to be enabled in both render pipelines. To use decals, see the documentation in both [HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.0/manual/decals.html) and [URP](https://docs.unity3d.com/Manual/urp/renderer-feature-decal.html). #### Material Projection This decal uses triplanar projection to project a material in 3D space. It projects materials correctly onto any mesh that intersects the decal volume. It can be used to apply terrain materials on to other objects like rocks so that they blend in better with the terrain. diff --git a/Packages/com.unity.shadergraph/Documentation~/SpeedTree8-SubGraphAssets.md b/Packages/com.unity.shadergraph/Documentation~/SpeedTree8-SubGraphAssets.md index 3429efa03ff..ddfd332c278 100644 --- a/Packages/com.unity.shadergraph/Documentation~/SpeedTree8-SubGraphAssets.md +++ b/Packages/com.unity.shadergraph/Documentation~/SpeedTree8-SubGraphAssets.md @@ -18,7 +18,7 @@ Shader Graph has three built-in SpeedTree Sub Graph Assets: * [SpeedTree8Wind](#SpeedTree8Wind) * [SpeedTree8Billboard](#SpeedTree8Billboard) -These Sub Graph Assets provide SpeedTree 8 functionality for both the [Universal Render Pipeline (URP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/manual/index.html) and [High Definition Render Pipeline (HDRP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@12.0/manual/index.html), so that you can work with SpeedTree 8 assets and create your own custom SpeedTree 8 Shader Graphs. +These Sub Graph Assets provide SpeedTree 8 functionality for both the [Universal Render Pipeline (URP)](https://docs.unity3d.com/Manual/urp/urp-introduction.html) and [High Definition Render Pipeline (HDRP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@12.0/manual/index), so that you can work with SpeedTree 8 assets and create your own custom SpeedTree 8 Shader Graphs. **Note:** The URP-specific versions of these SpeedTree 8 Sub Graph Assets use transparent billboard back faces instead of culling billboard back faces. These Sub Graph Assets can only replace their URP equivalents as a default once URP supports per-material culling overrides in Shader Graphs. diff --git a/Packages/com.unity.shadergraph/Documentation~/Upgrade-Guide-10-0-x.md b/Packages/com.unity.shadergraph/Documentation~/Upgrade-Guide-10-0-x.md index eff56487221..1d3332b5b05 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Upgrade-Guide-10-0-x.md +++ b/Packages/com.unity.shadergraph/Documentation~/Upgrade-Guide-10-0-x.md @@ -35,7 +35,7 @@ After the upgrade, you can add any required Block nodes that went missing, and r ### Upgrade cross-pipeline Master Nodes to the Master Stack -If your graph contains PBR or Unlit Master Nodes that are compatible with both the [Universal Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest) (URP) and the [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest) (HDRP), Shader Graph automatically upgrades them to the Master Stack based on the render pipeline currently available in your project. With Master Stacks, when you switch from one render pipeline to another, you must reimport your Shader Graph assets to update the Material Inspector for any Materials in your project. +If your graph contains PBR or Unlit Master Nodes that are compatible with both the [Universal Render Pipeline](https://docs.unity3d.com/Manual/urp/urp-introduction.html) (URP) and the [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest) (HDRP), Shader Graph automatically upgrades them to the Master Stack based on the render pipeline currently available in your project. With Master Stacks, when you switch from one render pipeline to another, you must reimport your Shader Graph assets to update the Material Inspector for any Materials in your project. In URP, you can now find all PBR Master Node settings in the URP Lit Target. The Unlit Master Node settings are in the URP Unlit Target. These settings are the same, and the final shader should appear the same as before the upgrade. diff --git a/Packages/com.unity.shadergraph/Documentation~/index.md b/Packages/com.unity.shadergraph/Documentation~/index.md index b03b1738ca1..44e968d904d 100644 --- a/Packages/com.unity.shadergraph/Documentation~/index.md +++ b/Packages/com.unity.shadergraph/Documentation~/index.md @@ -6,7 +6,7 @@ Shader Graph enables you to build shaders visually. Instead of writing code, you For an introduction to Shader Graph, see [Getting Started](Getting-Started.md). -Shader Graph is available through the Package Manager window in supported versions of the Unity Editor. If you install a Scriptable Render Pipeline (SRP) such as the [Universal Render Pipeline (URP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest) or the [High Definition Render Pipeline (HDRP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest), Unity automatically installs Shader Graph in your project. +Shader Graph is available through the Package Manager window in supported versions of the Unity Editor. If you install a Scriptable Render Pipeline (SRP) such as the [Universal Render Pipeline (URP)](https://docs.unity3d.com/Manual/urp/urp-introduction.html) or the [High Definition Render Pipeline (HDRP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest), Unity automatically installs Shader Graph in your project. Shader Graph package versions on Unity Engine 2018.x are *Preview* versions, which do not receive bug fixes and feature maintenance. To work with an actively supported version of Shader Graph, use Unity Engine 2019.1 or higher. @@ -14,7 +14,7 @@ Shader Graph package versions on Unity Engine 2018.x are *Preview* versions, whi With the release of Unity 2021.1, graphics packages are relocating to the core of Unity. This move simplifies the experience of working with new Unity graphics features, as well as ensuring that your projects are always running on the latest verified graphics code. -For each release of Unity (alpha / beta / patch release) graphics packages are embedded within the main Unity installer. When you install the latest release of Unity, you also get the latest [Universal Render Pipeline (URP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest), [High Definition Render Pipeline (HDRP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest), Shader Graph, [Visual Effect (VFX) Graph](https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest) packages, among others. +For each release of Unity (alpha / beta / patch release) graphics packages are embedded within the main Unity installer. When you install the latest release of Unity, you also get the latest [Universal Render Pipeline (URP)](https://docs.unity3d.com/Manual/urp/urp-introduction.html), [High Definition Render Pipeline (HDRP)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest), Shader Graph, [Visual Effect (VFX) Graph](https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest) packages, among others. Tying graphics packages to the main Unity release allows better testing to ensure that the graphics packages you use have been tested extensively with the version of Unity you have downloaded. diff --git a/Packages/com.unity.shadergraph/Documentation~/surface-options.md b/Packages/com.unity.shadergraph/Documentation~/surface-options.md index f49bd2ca652..e1df7e53e70 100644 --- a/Packages/com.unity.shadergraph/Documentation~/surface-options.md +++ b/Packages/com.unity.shadergraph/Documentation~/surface-options.md @@ -9,12 +9,12 @@ Enable **Allow Material Override** to modify a specific set of properties for Un - + - + diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/Input/Lighting/BakedGINode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/Input/Lighting/BakedGINode.cs index 3c2e861c097..0cde32f1a8e 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/Input/Lighting/BakedGINode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/Input/Lighting/BakedGINode.cs @@ -76,7 +76,7 @@ public sealed override void UpdateNodeAfterDeserialization() public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMode) { - if (generationMode == GenerationMode.ForReals) + if (generationMode == GenerationMode.ForReals || generationMode == GenerationMode.VFX) { sb.AppendLine("$precision3 {6} = SHADERGRAPH_BAKED_GI({0}, {1}, IN.{2}.xy, {3}, {4}, {5});", GetSlotValue(kPositionWSInputSlotId, generationMode), diff --git a/Packages/com.unity.shadergraph/Editor/Drawing/Inspector/PropertyDrawers/ShaderInputPropertyDrawer.cs b/Packages/com.unity.shadergraph/Editor/Drawing/Inspector/PropertyDrawers/ShaderInputPropertyDrawer.cs index 75d21a6fad4..affd93baf93 100644 --- a/Packages/com.unity.shadergraph/Editor/Drawing/Inspector/PropertyDrawers/ShaderInputPropertyDrawer.cs +++ b/Packages/com.unity.shadergraph/Editor/Drawing/Inspector/PropertyDrawers/ShaderInputPropertyDrawer.cs @@ -182,9 +182,15 @@ void BuildExposedField(PropertySheet propertySheet) propertySheet.Add(toggleDataPropertyDrawer.CreateGUI( evt => { + if (shaderInput is AbstractShaderProperty property && + (!property.overrideHLSLDeclaration || property.hlslDeclarationOverride == HLSLDeclaration.DoNotDeclare)) + { + property.hlslDeclarationOverride = property.GetDefaultHLSLDeclaration(); + property.overrideHLSLDeclaration = true; + } this._preChangeValueCallback("Change Exposed Toggle"); this._exposedFieldChangedCallback(evt.isOn); - this._postChangeValueCallback(false, ModificationScope.Graph); + this._postChangeValueCallback(true, ModificationScope.Graph); }, new ToggleData(shaderInput.isExposed), shaderInput is ShaderKeyword ? "Generate Material Property" : "Show In Inspector", @@ -529,8 +535,11 @@ void BuildHLSLDeclarationOverrideFields(PropertySheet propertySheet, AbstractSha property.hlslDeclarationOverride = evt.newValue; property.overrideHLSLDeclaration = true; UpdateEnableState(); - this._exposedFieldChangedCallback(evt.newValue != HLSLDeclaration.Global); - property.generatePropertyBlock = evt.newValue != HLSLDeclaration.Global; + if ((evt.newValue == HLSLDeclaration.Global) ^ (evt.previousValue == HLSLDeclaration.Global)) + { + this._exposedFieldChangedCallback(evt.newValue != HLSLDeclaration.Global); + property.generatePropertyBlock = evt.newValue != HLSLDeclaration.Global; + } this._postChangeValueCallback(true, ModificationScope.Graph); }); @@ -562,7 +571,7 @@ void BuildPrecisionField(PropertySheet propertySheet, AbstractShaderProperty pro void HandleVector1ShaderProperty(PropertySheet propertySheet, Vector1ShaderProperty vector1ShaderProperty) { - var floatType = isCurrentPropertyGlobal ? FloatType.Default : vector1ShaderProperty.floatType; + var floatType = (isSubGraph || isCurrentPropertyGlobal) ? FloatType.Default : vector1ShaderProperty.floatType; // Handle vector 1 mode parameters switch (floatType) { @@ -1440,6 +1449,8 @@ void KeywordAddCallbacks() if (EditorGUI.EndChangeCheck()) { + this._preChangeValueCallback("Edit Enum Keyword Entry"); + displayName = GetSanitizedDisplayName(displayName); referenceName = GetSanitizedReferenceName(displayName.ToUpper()); var duplicateIndex = FindDuplicateKeywordReferenceNameIndex(entry.id, referenceName); @@ -1560,6 +1571,7 @@ void KeywordRemoveEntry(ReorderableList list) void KeywordReorderEntries(ReorderableList list) { + this._preChangeValueCallback("Reorder Keyword Entry"); this._postChangeValueCallback(true); } @@ -1619,7 +1631,6 @@ void BuildDropdownFields(PropertySheet propertySheet, ShaderInput shaderInput) return; BuildDropdownField(propertySheet, dropdown); - BuildExposedField(propertySheet); } void BuildDropdownField(PropertySheet propertySheet, ShaderDropdown dropdown) diff --git a/Packages/com.unity.shadergraph/Editor/Generation/ShaderGraphVfxAsset.cs b/Packages/com.unity.shadergraph/Editor/Generation/ShaderGraphVfxAsset.cs index 4b37554f1b1..d283c23fec8 100644 --- a/Packages/com.unity.shadergraph/Editor/Generation/ShaderGraphVfxAsset.cs +++ b/Packages/com.unity.shadergraph/Editor/Generation/ShaderGraphVfxAsset.cs @@ -133,6 +133,11 @@ public string outputStructName internal set { m_OutputStructName = value; } } + internal void SetGUID(string guid) + { + m_Data.OverrideObjectId(guid, "SerializedVfxAssetData"); + } + public List properties { get diff --git a/Packages/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs b/Packages/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs index a27eb52a309..902978d272e 100644 --- a/Packages/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs +++ b/Packages/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs @@ -986,6 +986,7 @@ void AddCoordinateSpaceSnippets(InterpolatorType interpolatorType, Func @@ -18,7 +18,7 @@ Particles orient to face forward towards the camera plane. This mode works for m Particles orient to face forward towards the camera position. Similar to the **Face Camera Plane** mode, however, here particles face towards the camera itself, appearing identical even at the edge of the screen. -![](Images/Block-OrientFaceCameraPosition.png) +![A row of downward-facing arrows above a camera plane and a camera. The direction of the arrows all point to converge towards the camera position.](Images/Block-OrientFaceCameraPosition.png) @@ -26,7 +26,7 @@ Particles orient to face forward towards the camera position. Similar to the **F Particles orient to face towards a specified position. -![](Images/Block-OrientLookAtPosition.gif) +![A row of downward-facing arrows above a camera plane and a camera. A small circle moves between the arrows and camera. The direction of the arrows point towards the circle, and change direction to follow its movement.](Images/Block-OrientLookAtPosition.gif) @@ -34,7 +34,7 @@ Particles orient to face towards a specified position. Particles orient to face towards the nearest point along the direction of an infinite line. -![](Images/Block-OrientLookAtLine.gif) +![A row of downward-facing arrows above a camera plane and a camera. A line between the arrows and the camera is initially horizontal but hinges on a point to swing and become diagonal, before swinging back. As the line swings, the direction of the arrows follow the nearest point on the line it's hinged on.](Images/Block-OrientLookAtLine.gif) @@ -42,11 +42,11 @@ Particles orient to face towards the nearest point along the direction of an inf Particles orient to a custom particle space defined using two specified axes. The first axis is immutable and the Block uses the second axis to derive the third. It then recalculates the second axis to create an orthogonal particle space. -![](Images/Block-OrientAdvancedAxisBuilding.gif) +![Four different modes of axes. 1 is First Axis, represented by a single arrow. 2 is Second Axis, which adds to 1 with a second arrow originating from the same point. 3 is Derive Third Axis, which adds to 2 with a third arrow originating from the same point. 4 is Orthogonalize, which changes the second axis arrow to create an orthogonal space.](Images/Block-OrientAdvancedAxisBuilding.gif) This is an advanced mode and you can use it to create custom orientation behaviors. -![](Images/Block-OrientAdvanced.gif) +![A row of arrows above a camera plane and a camera. For XY, the direction of the arrows point left. For YZ, the direction of the arrows converge towards the center. For ZX, the direction of the arrows converge towards the center.](Images/Block-OrientAdvanced.gif) @@ -54,7 +54,7 @@ This is an advanced mode and you can use it to create custom orientation behavio Particles orient themselves on the specified ‘up’ axis and rotate on it to face the camera. This is useful for effects like grass where the up axis is generally known and particles should rotate on it to face the camera without falling flat if observed from the top. -![](Images/Block-OrientFixedAxis.png) +![A row of upward-facing arrows above a camera plane and a camera. The direction of the arrows point outwards.](Images/Block-OrientFixedAxis.png) @@ -62,7 +62,7 @@ Particles orient themselves on the specified ‘up’ axis and rotate on it to f Particles orient to face forward towards the direction they are moving in based on the **Velocity** attribute. The up axis is set to the velocity, and particles rotate on it to orient themselves to the camera as needed. -![](Images/Block-OrientAlongVelocity.gif) +![A row of arrows above a camera plane and a camera. The arrows point towards the direction they're moving in and rotate to orient themselves to the camera.](Images/Block-OrientAlongVelocity.gif) ## Block compatibility diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-TileWarpPositions.md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-TileWarpPositions.md index cb9906f2544..5b40d6239c2 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Block-TileWarpPositions.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-TileWarpPositions.md @@ -8,7 +8,7 @@ If you move the AABox, this Block warps particles around as the box moves, creat This Block can be useful to create infinitely tiling effects that need to stay close to the camera or the player in an application, such as rain or snow. -![](Images/Block-TileWarpPositionsMain.gif) +![Three different states of an AABox that contains particles. When Tile/Warp is disabled, the particles are not contained to the box. When Tile/Warp is enabled, the particles are contained in the box as they warp to the other side. When moving the AABox around with the Tile/Warp volume, the particles warp as the box moves.](Images/Block-TileWarpPositionsMain.gif) ## Block compatibility diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-TriggerEventAlways.md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-TriggerEventAlways.md index 29f035f17a6..2b3fbdec50b 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Block-TriggerEventAlways.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-TriggerEventAlways.md @@ -8,7 +8,7 @@ The **Trigger Event Always** Block triggers the continual creation of a specifie You can also use the Trigger Block with various conditions to create more complex spawning behavior. For example: -![](Images/Block-TriggerEventAlwaysExample.png) +![A Visual Effect Graph window which shows the Trigger Event Always Block executing under complex conditions. An Age Over Lifetime Operator returns the age of a particle relative to its lifetime, which uses a Compare Operator to compare if the value is less than 0.1. The connected Branch then outputs 5 when the Predicate is true or 0 when the Predicate is false, which connects to the Trigger Event Always Block inside the Update Particle Context.](Images/Block-TriggerEventAlwaysExample.png) ## Block compatibility diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Images/PlayControls.png b/Packages/com.unity.visualeffectgraph/Documentation~/Images/PlayControls.png deleted file mode 100644 index 96795a57b8c..00000000000 Binary files a/Packages/com.unity.visualeffectgraph/Documentation~/Images/PlayControls.png and /dev/null differ diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Images/PropertyGizmosInspector.png b/Packages/com.unity.visualeffectgraph/Documentation~/Images/PropertyGizmosInspector.png deleted file mode 100644 index 989d8468533..00000000000 Binary files a/Packages/com.unity.visualeffectgraph/Documentation~/Images/PropertyGizmosInspector.png and /dev/null differ diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PerlinNoise.md b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PerlinNoise.md index 9ff7bd65395..483507ad93f 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PerlinNoise.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PerlinNoise.md @@ -4,7 +4,7 @@ Menu Path : **Operator > Noise > Perlin Noise** The **Perlin Noise** Operator allows you to specify coordinates to sample a noise value within a specified range in one, two, or three dimensions. Perlin noise is a type of gradient noise which has a good distribution of values which makes it rarer to have similar adjacent values. -![](Images/Operator-PerlinNoiseAnimation.gif) +![Three cubes representing one, two, and three dimensional noise.](Images/Operator-PerlinNoiseAnimation.gif) You can use this Operator to introduce variety to your particle attributes. A common use case is to use each particle’s position as a coordinate to sample the noise to output a new color, velocity, or position value. @@ -19,12 +19,12 @@ You can use this Operator to introduce variety to your particle attributes. A co | **Input** | **Type** | **Description** | | -------------- | ----------------------------- | ------------------------------------------------------------ | -| **Coordinate** | Float
Vector2
Vector3 | The coordinate in the noise field to sample from.
![](Images/Operator-PerlinNoiseCoordinate.gif)
The **Type** changes to match the number of **Dimensions**. | -| **Frequency** | Float | The period in which Unity samples the noise. A higher frequency results in more frequent noise change.
![](Images/Operator-PerlinNoiseFrequency.gif) | -| **Octaves** | Int | The number of layers of noise. More octaves create a more varied look but are also more resource-intensive to calculate.
![](Images/Operator-PerlinNoiseOctaves.gif) | -| **Roughness** | Float | The scaling factor Unity applies to each octave. Unity only uses roughness when **Octaves** is set to a value higher than 1.
![](Images/Operator-PerlinNoiseRoughness.gif) | -| **Lacunarity** | Float | The rate of change of the frequency for each successive octave. A lacunarity value of 1 results in each octave having the same frequency.
![](Images/Operator-PerlinNoiseLacunarity.gif) | -| **Range** | Vector2 | The range within which Unity calculates the noise. The noise stays between the X and Y value you specify here, where X is the minimum and Y is the maximum.
![](Images/Operator-PerlinNoiseRange.gif) | +| **Coordinate** | Float
Vector2
Vector3 | The coordinate in the noise field to sample from.
![A cursor moving across the noise field, showing the different coordinates.](Images/Operator-PerlinNoiseCoordinate.gif)
The **Type** changes to match the number of **Dimensions**. | +| **Frequency** | Float | The period in which Unity samples the noise. A higher frequency results in more frequent noise change.
![As the value of the frequency increases, the noise increases.](Images/Operator-PerlinNoiseFrequency.gif) | +| **Octaves** | Int | The number of layers of noise. More octaves create a more varied look but are also more resource-intensive to calculate.
![As the value of the octaves increases, the noise is more varied.](Images/Operator-PerlinNoiseOctaves.gif) | +| **Roughness** | Float | The scaling factor Unity applies to each octave. Unity only uses roughness when **Octaves** is set to a value higher than 1.
![As the value of the roughness increases, the noise is more visibly detailed.](Images/Operator-PerlinNoiseRoughness.gif) | +| **Lacunarity** | Float | The rate of change of the frequency for each successive octave. A lacunarity value of 1 results in each octave having the same frequency.
![As the value of the lacunarity increases, the noise is more visibly detailed.](Images/Operator-PerlinNoiseLacunarity.gif) | +| **Range** | Vector2 | The range within which Unity calculates the noise. The noise stays between the X and Y value you specify here, where X is the minimum and Y is the maximum.
![As the range increases, the noise is more visible.](Images/Operator-PerlinNoiseRange.gif) | | **Output** | **Type** | **Description** | | --------------- | ----------------------------- | ------------------------------------------------------------ | diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SampleBuffer.md b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SampleBuffer.md index 21f3c1c3339..6a9a7a3e883 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SampleBuffer.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SampleBuffer.md @@ -1,10 +1,10 @@ -# Sample Buffer +# Sample Graphics Buffer -**Menu Path : Operator > Sampling > Sample Buffer** +**Menu Path : Operator > Sampling > Sample Graphics Buffer** -The Sample Buffer Operator enables you to fetch and sample a structured buffer. A structured buffer is a [GraphicsBuffer](https://docs.unity3d.com/ScriptReference/GraphicsBuffer.html) created using the [Structured](https://docs.unity3d.com/ScriptReference/GraphicsBuffer.Target.Structured.html) target. +The Sample Graphics Buffer Operator enables you to fetch and sample a structured buffer. A structured buffer is a [GraphicsBuffer](https://docs.unity3d.com/ScriptReference/GraphicsBuffer.html) created using the [Structured](https://docs.unity3d.com/ScriptReference/GraphicsBuffer.Target.Structured.html) target. ## Operator settings @@ -17,7 +17,7 @@ The Sample Buffer Operator enables you to fetch and sample a structured buffer. | **Input** | **Type** | **Description** | | ---------- | --------------------------------------- | ------------------------------------------------------------ | | **Input** | [Configurable](#operator-configuration) | The structure type. | -| **Buffer** | GraphicsBuffer | The structured buffer to fetch. You can only connect an exposed property to this input port. | +| **Buffer** | Graphics Buffer [property](Properties.md)| The structured buffer to fetch. You can only connect an exposed property to this input port. | | **Index** | uint | The index of the element to fetch. | | **Output** | **Type** | **Description** | @@ -26,32 +26,34 @@ The Sample Buffer Operator enables you to fetch and sample a structured buffer. ## Operator configuration -To view the Operator's configuration, click the **cog** icon in the Operator's header. +To set the struct type, select the cog icon. The available types are: -### Available types -This Operator supports sampling structured buffers that use blittable types. The list of built-in blittable types is: - - float - - int - - uint - - Vector2 - - Vector3 - - Vector4 - - Matrix4x4 +- float +- int +- uint +- Vector2 +- Vector3 +- Vector4 +- Matrix4x4 -You can also declare custom types. To do this, add the `[VFXType]` attribute to a struct, and use the `VFXTypeAttribute.Usage.GraphicsBuffer` type. For example: +### Add a custom type + +To add a custom type to the list, add the `[VFXType(VFXTypeAttribute.Usage.GraphicsBuffer)]` attribute to a struct. For example, the following script adds a **MyCustomData** type: ```c# using UnityEngine; using UnityEngine.VFX; [VFXType(VFXTypeAttribute.Usage.GraphicsBuffer)] -struct CustomData +struct MyCustomData { - public Vector3 color; - public Vector3 position; + public Vector3 myColor; + public Vector3 myPosition; } ``` +After you set a custom type, open the **s** dropdown to display the properties of the struct and connect them to other Operators and [Contexts](Contexts.md). + ## Limitations The Operator has the following limitations: diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-Smoothstep.md b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-Smoothstep.md index 75fc4454b42..3117dff7b19 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-Smoothstep.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-Smoothstep.md @@ -2,14 +2,13 @@ Menu Path : **Operator > Math > Arithmetic > Smoothstep** -The **Smoothstep** Operator calculates the linear interpolation of a value between two border values with smoothing at the limits. +The **Smoothstep** Operator calculates a smooth Hermite interpolation of a value between two border values with smoothing at the limits. -This Operator returns a value between **X** and **Y**. Where this value is between **X** and **Y** depends on the value of **S**: +This Operator returns a value between 0 and 1, depending on the value of **X**, **Y**, and **S**: -- If **S** is greater than 1, the result is **Y**. -- If **S** is less than 0 the result is **X.** - -- If **S** is between 0 and 1 then the result is a smooth transition between **X** and **Y**. The result = (Y - X) * ( 3S2 - 2S3 ) + **X** +- If **S** is less than or equal to **X**, the result is 0. +- If **S** is greater than or equal to **Y**, the result is 1. +- If **S** is between **X** and **Y**, the result is a smooth transition between 0 and 1. This Operator accepts input values of various types. For the list of types this Operator can use, see [Available Types](#available-types). The **X** and **Y** input are always of the same type. **S** changes to be the same type as **X** and **Y**. @@ -19,13 +18,13 @@ This Operator accepts input values of various types. For the list of types this | **Input** | **Type** | **Description** | | --------- | --------------------------------------- | ------------------------------------------------------------ | -| **X** | [Configurable](#operator-configuration) | The value to interpolate from. | -| **Y** | [Configurable](#operator-configuration) | The value to interpolate to. | +| **X** | [Configurable](#operator-configuration) | The minimum step value. | +| **Y** | [Configurable](#operator-configuration) | The maximum step value. | | **S** | [Configurable](#operator-configuration) | A value for the interpolation. An input of either float type or the same type as **X**. | | **Output** | **Type** | **Description** | | ---------- | ----------- | ------------------------------------------------------------ | -| **Out** | Output Port | The linear interpolation of **S** between **X** and **Y** with smoothing at the limits.
The **Type** changes to match the type of **X** and **Y**. | +| **Out** | Output Port | A value between 0 and 1, based on the Hermite interpolation of **S**. | ## Operator configuration diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SquareWave.md b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SquareWave.md index e1ee2009d25..7246570961f 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SquareWave.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-SquareWave.md @@ -4,7 +4,7 @@ Menu Path : **Operator > Math > Wave > Square Wave** The Square Wave Operator allows you to generate a value which alternates between a minimum and a maximum value at steady intervals based on a provided input and a set frequency. -![](Images/Operator-SquareWaveAnimation.gif) +![A lower line representing the minimum and a higher line representing the maximum, with a square wave at regular intervals. A blue dot travels across the minimum line of the square wave for a few seconds, then moves to the maximum lines for the same amount of time, before repeating the cycle.](Images/Operator-SquareWaveAnimation.gif) If **Frequency** is set to 1, the blue dot remains at **Min** with an **Input** value from 0 to almost 0.5. Then, with an **Input** value from 0.5 to almost 1, the dot remains at **Max**. After that, the wave repeats. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-ValueNoise.md b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-ValueNoise.md index b5db7b102c7..eb44c562d0a 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-ValueNoise.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-ValueNoise.md @@ -4,7 +4,7 @@ Menu Path : **Operator > Noise > Value Noise** The **Value Noise** Operator allows you to specify coordinates to sample a noise value within a specified range in one, two, or three dimensions. Value noise uses simple interpolated values, which means that adjacent values are likely to be similar. -![](Images/Operator-ValueNoiseAnimation.gif) +![Three cubes representing one, two, and three dimensional noise.](Images/Operator-ValueNoiseAnimation.gif) You can use this Operator to introduce variety to your particle attributes. A common use case is to sample using each particle’s position as a coordinate to output a new color, velocity, or position value. @@ -19,12 +19,12 @@ You can use this Operator to introduce variety to your particle attributes. A co | **Input** | **Type** | **Description** | | -------------- | ----------------------------- | ------------------------------------------------------------ | -| **Coordinate** | Float
Vector2
Vector3 | The coordinate in the noise field to sample from.
![](Images/Operator-ValueNoiseCoordinate.gif)
The **Type** changes to match the number of **Dimensions**. | -| **Frequency** | Float | The period in which Unity samples the noise. A higher frequency results in more frequent noise change.
![](Images/Operator-ValueNoiseFrequency.gif) | -| **Octaves** | Int | The number of layers of noise. More octaves create a more varied look but are also more resource-intensive to calculate.
![](Images/Operator-ValueNoiseOctaves.gif) | -| **Roughness** | Float | The scaling factor Unity applies to each octave. Unity only uses roughness when **Octaves** is set to a value higher than 1.
![](Images/Operator-ValueNoiseRoughness.gif) | -| **Lacunarity** | Float | The rate of change of the frequency for each successive octave. A lacunarity value of 1 results in each octave having the same frequency.
![](Images/Operator-ValueNoiseLacunarity.gif) | -| **Range** | Vector2 | The range within which Unity calculates the noise. The noise stays between the X and Y value you specify here, where X is the minimum and Y is the maximum.
![](Images/Operator-ValueNoiseRange.gif) | +| **Coordinate** | Float
Vector2
Vector3 | The coordinate in the noise field to sample from.
![A cursor moving across the noise field, showing the different coordinates.](Images/Operator-ValueNoiseCoordinate.gif)
The **Type** changes to match the number of **Dimensions**. | +| **Frequency** | Float | The period in which Unity samples the noise. A higher frequency results in more frequent noise change.
![As the value of the frequency increases, the noise increases.](Images/Operator-ValueNoiseFrequency.gif) | +| **Octaves** | Int | The number of layers of noise. More octaves create a more varied look but are also more resource-intensive to calculate.
![As the value of the octaves increases, the noise is more varied.](Images/Operator-ValueNoiseOctaves.gif) | +| **Roughness** | Float | The scaling factor Unity applies to each octave. Unity only uses roughness when **Octaves** is set to a value higher than 1.
![As the value of the roughness increases, the noise is more visibly detailed.](Images/Operator-ValueNoiseRoughness.gif) | +| **Lacunarity** | Float | The rate of change of the frequency for each successive octave. A lacunarity value of 1 results in each octave having the same frequency.
![As the value of the lacunarity increases, the noise is more visibly detailed.](Images/Operator-ValueNoiseLacunarity.gif) | +| **Range** | Vector2 | The range within which Unity calculates the noise. The noise stays between the X and Y value you specify here, where X is the minimum and Y is the maximum.
![As the range increases, the noise is more visible.](Images/Operator-ValueNoiseRange.gif) | | **Output** | **Type** | **Description** | | --------------- | ----------------------------- | ------------------------------------------------------------ | diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Reference-Attributes.md b/Packages/com.unity.visualeffectgraph/Documentation~/Reference-Attributes.md index 84af97ca242..97d3e90a608 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Reference-Attributes.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Reference-Attributes.md @@ -52,7 +52,7 @@ System Attributes provide information about system values. These attributes are | Name | Type | Description | Default Value | | ---------- | ------- | ------------------------------------------------------------ | ---------- | -| `particleID` | uint | A unique ID that refers to 1 particle | 0 | +| `particleId` | uint | A unique ID that refers to 1 particle | 0 | | `seed` | uint | A unique seed used for random number computations. | 0 | | `spawnCount` | float | A `SpawnEvent` attribute that describes how many particles were spawned this frame. You can use `spawnCount` as a [Source Attribute](Attributes.md) in a Spawn context. `spawnCount` is a floating point number so that Unity can accumulate a relative `spawnCount` at the spawn context stage in the [Constant Rate](Block-ConstantRate.md) block.| 0.0 | | `spawnTime` | float | A SpawnEvent attribute available as Source Attribute in Spawn Contexts, that contains a Spawn Context internal time (when exported using a [Set Spawn Time](Block-SetSpawnTime.md) Spawn Block) | 0.0 | diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/System-Requirements.md b/Packages/com.unity.visualeffectgraph/Documentation~/System-Requirements.md index 87d33fedf6e..ce25c961caf 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/System-Requirements.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/System-Requirements.md @@ -8,6 +8,7 @@ The following table shows the compatibility of the Visual Effect Graph versions | **Package version** | **Minimum Unity version** | **Maximum Unity version** | | ------------------- | ------------------------- | ------------------------- | +| 17.x | Unity 6 | Unity 6 | | 16.x | 2023.2 | 2023.2 | | 15.x | 2023.1 | 2023.1 | | 14.x | 2022.2 | 2022.2 | @@ -38,7 +39,7 @@ The Visual Effect Graph varies in compatibility between the High Definition Rend The Visual Effect Graph supports the [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest/index.html) (HDRP) from Unity 2018.3 and is verified for HDRP from Unity 2019.3. The Visual Effect Graph supports every platform that HDRP supports. For information on which platforms this includes, see HDRP's [system requirements](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest/index.html?subfolder=/manual/System-Requirements.html). -In the [Universal Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html) (URP) versions 2019.3. to 2021.1, the Visual Effect Graph supports a subset of platforms that URP supports, and only supports unlit particles. +In the [Universal Render Pipeline](https://docs.unity3d.com/Manual/urp/urp-introduction.html) (URP) versions 2019.3. to 2021.1, the Visual Effect Graph supports a subset of platforms that URP supports, and only supports unlit particles. **Note**: When you download the HDRP package from the Package Manager, Unity automatically installs the Visual Effect Graph package. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectComponent.md b/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectComponent.md index e16a63edb69..267766be856 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectComponent.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectComponent.md @@ -69,8 +69,6 @@ To access property values, edit them using the Inspector, use the [C# API](https The Play Controls window displays UI Elements that give you control over the currently selected instance of a Visual Effect. It is displayed in the bottom-right corner of the Scene View, when a Visual Effect Game Object is selected. -![](Images/PlayControls.png) - The play Controls Window displays the following controls: * Stop (Button) : Resets the effect and set its state to paused. @@ -88,4 +86,3 @@ The play Controls Window displays the following controls: You can edit some properties using Gizmos in the scene. In order to enable gizmo editing, click the **Show Property Gizmos** button in the Inspector. Upon enabling property Gizmos, every property that can be edited using Gizmos will display **Edit Gizmo** buttons next to every property that can be edited using gizmos. -![Property Gizmos Inspector](Images/PropertyGizmosInspector.png) diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectGraphWindow.md b/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectGraphWindow.md index 865a3384597..a408d611bac 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectGraphWindow.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectGraphWindow.md @@ -32,14 +32,14 @@ The Visual Effect Graph window Toolbar contains functionality to operate on a Vi | Item | Description | | --------------------- | ------------------------------------------------------------ | -| **Save**
![](Images/save.png) | **Action** : Use this button to save the Visual Effect Graph that is currently open and its subgraphs.
**Dropdown**:

• **Save as…**: Saves the Visual Effect Graph under a specified name and/or location.
• **Show in Inspector**: Focuses the Visual Effect Graph's Asset in the Inspector.| -| **Compile**
![](Images/compile.png) | **Action** : Recompiles the open Visual Effect Graph.
**Dropdown**:

• **Auto Compile**: Automatically compiles the Visual Effect Graph.
• **Auto Reinit**: Automatically reinitializes an attached component when a value changes in the **Spawner** or **Init** contexts.
• **Prewarm Time**: Specifies the duration of the prewarm used with **Auto Reinit**. If the VFX already has a runtime prewarm, it ignores this setting.
•**Runtime Mode**: Forces optimized compilation, even when the editor is open.
• **Shader Debug Symbols**: Forces shader debug symbols generation when Unity compiles the authored VFX asset.
• **Shader Validation**: Forces shader compilation when the effect recompiles, even if no visual effect is visible. This displays the Shader errors in the Scene.| -| **Auto Attach**
![](Images/auto-attach.png) | **Toggle**: Toggles the visibility of the Auto Attachment panel. The **Auto Attachment** panel allows you to attach the open Visual Effect Graph to a GameObject by selecting it in the Hierarchy. Once you have attached the visual effect to a GameObject, it enables the Visual Effect controls in the VFX Control panel and allows you to tweak gizmos in the Scene View.| +| **Save**
![Save section](Images/save.png) | **Action** : Use this button to save the Visual Effect Graph that is currently open and its subgraphs.
**Dropdown**:

• **Save as…**: Saves the Visual Effect Graph under a specified name and/or location.
• **Show in Inspector**: Focuses the Visual Effect Graph's Asset in the Inspector.| +| **Compile**
![Compile section](Images/compile.png) | **Action** : Recompiles the open Visual Effect Graph.
**Dropdown**:

• **Auto Compile**: Automatically compiles the Visual Effect Graph.
• **Auto Reinit**: Automatically reinitializes an attached component when a value changes in the **Spawner** or **Init** contexts.
• **Prewarm Time**: Specifies the duration of the prewarm used with **Auto Reinit**. If the VFX already has a runtime prewarm, it ignores this setting.
•**Runtime Mode**: Forces optimized compilation, even when the editor is open.
• **Shader Debug Symbols**: Forces shader debug symbols generation when Unity compiles the authored VFX asset.
• **Shader Validation**: Forces shader compilation when the effect recompiles, even if no visual effect is visible. This displays the Shader errors in the Scene.| +| **Auto Attach**
![Auto Attach section](Images/auto-attach.png) | **Toggle**: Toggles the visibility of the Auto Attachment panel. The **Auto Attachment** panel allows you to attach the open Visual Effect Graph to a GameObject by selecting it in the Hierarchy. Once you have attached the visual effect to a GameObject, it enables the Visual Effect controls in the VFX Control panel and allows you to tweak gizmos in the Scene View.| | **Lock** | **Toggle**: Toggles lock/unlock for auto attachments. If you set the toggle to unlocked - you can attach the open Visual Effect Graph to a GameObject by selecting items in the Hierarchy. If you set the toggle to locked - The GameObject that is currently attached becomes locked and auto attachments are disabled. The Visual Effect Graph then can not be attached by selecting items in the Hierarchy. You can manually keep the lock and change the attachment in the object picker of the Auto Attach panel.| -| **Blackboard**
![](Images/blackboard.png) | **Toggle**: Toggles the visibility of the **Blackboard Panel**.| -| **VFX Control**
![](Images/vfx-control.png) | **Toggle**: Toggles the visibility of the VFX Control.| -| **Help**
![](Images/help.png) | **Toggle**: Opens the Visual Effect Graph [manual](https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/).

**Dropdown**:

**VFX Graph Additions**: Installs pre-made visual effects and utility operators made with Visual Effect Graph. These include Bonfire, Lightning, Smoke and Sparks effect examples. There are also various operators and Subgraph Blocks:

• **Get Strip Progress**: A subgraph that calculates the progress of a particle in the strip in the range 0 to 1. You can use this to sample curves and gradients to modify the strip based on its progress.

• **Encompass (Point)**: A subgraph that grows the bounds of an AABox to encompass a point.

• **Degrees to Radians and Radians to Degrees**: Subgraphs that help you to convert between radians and degrees within your graph.

**Output Event Helpers**: This version of the Visual Effect Graph introduces new helper scripts to the OutputEvent Helpers sample to help you to set up OutputEvents:

• **Cinemachine Camera Shake**: An Output Event Handler script that triggers a Camera shake through a [Cinemachine Impulse Source](https://docs.unity3d.com/Packages/com.unity.cinemachine@latest/index.html?subfolder=/manual/CinemachineImpulseSourceOverview.html), on a given output event.

• **Play audio**: An Output Event Handler script that plays a single AudioSource on a given output event.

• **Spawn a Prefab**: An Output Event Handler script that spawns Prefabs (managed from a pool) on a given output event. It uses position, angle, scale, and lifetime to position the Prefab and disable it after a delay. To synchronize other values, you can use other scripts inside the Prefab:

• **Change Prefab Light**: An example that demonstrates how to synchronize a light with your effect.

• **Change Prefab RigidBody Velocity**: An example that demonstrates how to synchronize changing the velocity of a RigidBody with your effect.

• **RigidBody**: An Output Event Handler script that applies a force or velocity change to a RigidBody on a given output event.

• **Unity Event**: An Output Event Handler that raises a UnityEvent on a given output event.

• **[VFX Graph Home](https://unity.com/visual-effect-graph)**: Opens the Visual Effect Graph home page.

• **[Forum](https://forum.unity.com/forums/visual-effect-graph.428/)**: Opens a Visual Effect Graph sub-forum.

• **[Github] [Spaceship Demo](https://github.com/Unity-Technologies/SpaceshipDemo)**: Opens a repository of AAA Playable First person demo showcasing effects made with Visual Effect Graph and rendered with the High Definition Render Pipeline.

• **[Github] [VFX Graph Samples](https://github.com/Unity-Technologies/VisualEffectGraph-Samples)**: Opens a repository that contains sample scenes and visual effects made with Visual Effect Graph.| -| **Version Control**
![](Images/version-control.png) | **Action**: When you enable [Version Control](https://docs.unity3d.com/Manual/Versioncontrolintegration.html), these buttons become available. Click the main button to check out the changes you made in the asset file.

**Dropdown**:

• **Get Latest**: Updates the asset file with latest changes from the repository.
• **Submit**: Submits the current state of the asset to the Version Control System.
• **Revert**: Discards the changes you made to the asset.| +| **Blackboard**
![Blackboard section](Images/blackboard.png) | **Toggle**: Toggles the visibility of the **Blackboard Panel**.| +| **VFX Control**
![VFX Control section](Images/vfx-control.png) | **Toggle**: Toggles the visibility of the VFX Control.| +| **Help**
![Help section](Images/help.png) | **Toggle**: Opens the Visual Effect Graph [manual](https://docs.unity3d.com/Packages/com.unity.visualeffectgraph@latest/).

**Dropdown**:

**VFX Graph Additions**: Installs pre-made visual effects and utility operators made with Visual Effect Graph. These include Bonfire, Lightning, Smoke and Sparks effect examples. There are also various operators and Subgraph Blocks:

• **Get Strip Progress**: A subgraph that calculates the progress of a particle in the strip in the range 0 to 1. You can use this to sample curves and gradients to modify the strip based on its progress.

• **Encompass (Point)**: A subgraph that grows the bounds of an AABox to encompass a point.

• **Degrees to Radians and Radians to Degrees**: Subgraphs that help you to convert between radians and degrees within your graph.

**Output Event Helpers**: This version of the Visual Effect Graph introduces new helper scripts to the OutputEvent Helpers sample to help you to set up OutputEvents:

• **Cinemachine Camera Shake**: An Output Event Handler script that triggers a Camera shake through a [Cinemachine Impulse Source](https://docs.unity3d.com/Packages/com.unity.cinemachine@latest/index.html?subfolder=/manual/CinemachineImpulseSourceOverview.html), on a given output event.

• **Play audio**: An Output Event Handler script that plays a single AudioSource on a given output event.

• **Spawn a Prefab**: An Output Event Handler script that spawns Prefabs (managed from a pool) on a given output event. It uses position, angle, scale, and lifetime to position the Prefab and disable it after a delay. To synchronize other values, you can use other scripts inside the Prefab:

• **Change Prefab Light**: An example that demonstrates how to synchronize a light with your effect.

• **Change Prefab RigidBody Velocity**: An example that demonstrates how to synchronize changing the velocity of a RigidBody with your effect.

• **RigidBody**: An Output Event Handler script that applies a force or velocity change to a RigidBody on a given output event.

• **Unity Event**: An Output Event Handler that raises a UnityEvent on a given output event.

• **[VFX Graph Home](https://unity.com/visual-effect-graph)**: Opens the Visual Effect Graph home page.

• **[Forum](https://forum.unity.com/forums/visual-effect-graph.428/)**: Opens a Visual Effect Graph sub-forum.

• **[Github] [Spaceship Demo](https://github.com/Unity-Technologies/SpaceshipDemo)**: Opens a repository of AAA Playable First person demo showcasing effects made with Visual Effect Graph and rendered with the High Definition Render Pipeline.

• **[Github] [VFX Graph Samples](https://github.com/Unity-Technologies/VisualEffectGraph-Samples)**: Opens a repository that contains sample scenes and visual effects made with Visual Effect Graph.| +| **Version Control**
![Version Control section](Images/version-control.png) | **Action**: When you enable [Version Control](https://docs.unity3d.com/Manual/Versioncontrolintegration.html), these buttons become available. Click the main button to check out the changes you made in the asset file.

**Dropdown**:

• **Get Latest**: Updates the asset file with latest changes from the repository.
• **Submit**: Submits the current state of the asset to the Version Control System.
• **Revert**: Discards the changes you made to the asset.| ### Node Workspace diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/performance-debug-panel.md b/Packages/com.unity.visualeffectgraph/Documentation~/performance-debug-panel.md index f9ec1ceb02a..8e39ea73411 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/performance-debug-panel.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/performance-debug-panel.md @@ -20,7 +20,7 @@ The Graph Debug Information panel provides information relative to the entire gr | **Texture Usage** | For each system, lists the textures used along with their dimension and memory size. | | **Heatmap parameter** |
  • GPU Time Threshold (ms): This controls the value, in milliseconds, above which the execution times in the panels will turn red. Adjust this value to easily identify expensive parts for your graph.
  • | -Shortcuts to the **Rendering Debugger** [in URP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@latest/index.html?subfolder=/manual/features/rendering-debugger.html) or [in HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest/index.html?subfolder=/manual/rendering-debugger-window-reference.html) and to the [Unity Profiler](https://docs.unity3d.com/Manual/Profiler.html) are available through the menu on the top-right of the Graph Debug Information panel. +Shortcuts to the **Rendering Debugger** [in URP](https://docs.unity3d.com/Manual/urp/features/rendering-debugger.html) or [in HDRP](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest/index.html?subfolder=/manual/rendering-debugger-window-reference.html) and to the [Unity Profiler](https://docs.unity3d.com/Manual/Profiler.html) are available through the menu on the top-right of the Graph Debug Information panel. ## Particle System Info The Particle System Info panel is attached to the Initialize Context of each system. This panel provides information relative a specific system. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/sdf-bake-tool-window.md b/Packages/com.unity.visualeffectgraph/Documentation~/sdf-bake-tool-window.md index c32b41b47ac..8ef7e669806 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/sdf-bake-tool-window.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/sdf-bake-tool-window.md @@ -8,13 +8,12 @@ To open the SDF Bake Tool window, select **Window** > **Visual Effects** > **Uti In the Unity Editor, in the [Visual Effect Graph window](VisualEffectGraphWindow.md), blocks and operators, such as [Collide With Signed Distance Field](Block-CollideWithSignedDistanceField.md), take an SDF as an input. -![](Images/sdf-update-particle-context.png) - -*A screenshot of the Update Particle context.* +![The Update Particle context.](Images/sdf-update-particle-context.png) +The **Update Particle** context. To create an SDF asset to use in the Unity Editor, you can use the SDF Bake Tool window: -1. Open the SDF Bake Tool window (menu: **Window** > **Visual Effects** > **Utilities** > **SDF Bake Tool**)
    ![](Images/sdf-bake-tool-window.png)
    *The SDF Bake Tool window previewing a Mesh asset and its SDF representation.* +1. Open the SDF Bake Tool window (menu: **Window** > **Visual Effects** > **Utilities** > **SDF Bake Tool**)
    ![The SDF Bake Tool window previewing a Mesh asset and its SDF representation.](Images/sdf-bake-tool-window.png)
    The SDF Bake Tool window previewing a Mesh asset and its SDF representation. 2. Choose an asset to generate an SDF representation for. If you want to generate an SDF to represent a single Mesh asset, set **Model Source** to **Mesh**. If you want to generate an SDF that represents multiple Meshes, set **Model Source** to **Prefab**. This mode generates an SDF that represents the combination of every Mesh in a Prefab's hierarchy. 3. By default, the SDF Bake Tool sets the bounds of the [baking box](sdf-bake-tool.md#baking-box) to be equal to the bounding box of the geometry. To scale the baking box, use **Box Size**. To move the baking box, use **Box Center**. 4. Choose a **Maximal Resolution** for the resulting SDF texture. The **Maximal Resolution** corresponds to the resolution along the longest side of the box. @@ -38,9 +37,9 @@ The SDF Bake Tool window includes default properties, which should suit most use 1. To the right of the window's header, select the **More** menu (⋮). 2. Enable **Advanced Properties**. -![](Images/sdf-bake-tool-additional-properties.png) +![The SDF Bake Tool window and the context menu that includes the advanced properties toggle.](Images/sdf-bake-tool-additional-properties.png) -*The SDF Bake Tool window and the context menu that includes the additional properties toggle.* +The **SDF Bake Tool** window and the context menu that includes the **Advanced Properties** toggle. | **Property** | **Description** | | ----------------------- | ------------------------------------------------------------ | diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/whats-new-14.md b/Packages/com.unity.visualeffectgraph/Documentation~/whats-new-14.md index 20bd78b5701..b1595d7a797 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/whats-new-14.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/whats-new-14.md @@ -8,19 +8,19 @@ The following is a list of features Unity added to version 14 of the Visual Effe ### Six way smoke -![](Images/VFX-WhatsNew14-2-still.png) +![Different smoke effects.](Images/VFX-WhatsNew14-2-still.png) VFX Graph version 14 includes a new way to light smoke effects. You can now use custom lightmaps exported from third-party software to light your smoke texture. VFX Graph bakes six light directions from these lightmaps and uses them to light the smoke from every direction. ### Boolean ports -![](Images/VFX-WhatsNew14-6.png) +![Boolean ports with Blocks in the VFX Graph window.](Images/VFX-WhatsNew14-6.png) Version 14 includes Boolean ports that you can use to activate or deactivate Blocks depending on logic operations. This feature also includes some implicit casts between numeral types and Booleans. ### 2D Shader Graph support -![](Images/VFX-WhatsNew14-3.png) +![A sprite running across a temple.](Images/VFX-WhatsNew14-3.png) In this version, Visual Effect Graph supports Shader Graph’s 2D sub-targets that you can use to render your particles as sprites. To find the new sub-targets, go to **Create** > **Shader Graph** > **URP**. This feature is only available in the Universal Render Pipeline. @@ -30,13 +30,13 @@ The following is a list of improvements Unity made to the Visual Effect Graph in ### Timeline integration -![](Images/VFX-WhatsNew14-4.gif) +![Unity's Timeline UI.](Images/VFX-WhatsNew14-4.gif) VFX Graph 14 improves the workflow of visual effects in Timeline. You can use the new VFX Animation clip to scrub through and control VFX Graph [Events](Events.md). You can also control how the effect reinitializes and pre-warm the effect. For more information, see [Timeline](Timeline.md). ### Skinned mesh sampling -![](Images/VFX-WhatsNew14-5.gif) +![Sample Skinned Mesh Operator in the VFX Graph window and its output of a person with colourful arrows.](Images/VFX-WhatsNew14-5.gif) In VFX Graph 14 improves aspects of the Skinned Mesh Renderer Sampling based on your feedback in the following ways: diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/whats-new-15.md b/Packages/com.unity.visualeffectgraph/Documentation~/whats-new-15.md index 4b4b0019758..2fbfb6ce817 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/whats-new-15.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/whats-new-15.md @@ -20,7 +20,7 @@ To use ray tracing in an HDRP scene, refer to [Getting started with ray tracing] ### Volumetric Fog Output -![](Images/VolumetricFogParticles.gif) +![A scene of a woman statue covered in fog.](Images/VolumetricFogParticles.gif) VFX Graph verision 15.0 adds the [Output Particle HDRP Volumetric Fog](Context-OutputParticleHDRPVolumetricFog.md ) output node which samples [Local Volumetric Fog](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest?subfolder=/manual/Local-Volumetric-Fog.html) in the High Definition Render Pipeline (HDRP). diff --git a/Packages/com.unity.visualeffectgraph/Editor/Controls/VFXSliderField.cs b/Packages/com.unity.visualeffectgraph/Editor/Controls/VFXSliderField.cs index 23f003d87df..8d90de871cc 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/Controls/VFXSliderField.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/Controls/VFXSliderField.cs @@ -76,7 +76,7 @@ public float ToScaled(float linearValue) } } - abstract class VFXBaseSliderField : VisualElement, INotifyValueChanged + abstract class VFXBaseSliderField : VisualElement, IVFXNotifyValueChanged { protected readonly Slider m_Slider; protected readonly TextValueField m_Field; @@ -160,6 +160,11 @@ public void SetValueWithoutNotify(T newValue) SetValueWithoutNotify(ValueToFloat(newValue), newValue); } + public void SetValueWithoutNotify(T newValue, bool force) + { + SetValueWithoutNotify(ValueToFloat(newValue), newValue, force); + } + public T value { get => m_Value; diff --git a/Packages/com.unity.visualeffectgraph/Editor/Core/VFXLibrary.cs b/Packages/com.unity.visualeffectgraph/Editor/Core/VFXLibrary.cs index c5148cbba60..0fcf1e7e8a6 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/Core/VFXLibrary.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/Core/VFXLibrary.cs @@ -35,7 +35,11 @@ public Variant(string name, string category, Type modelType, KeyValuePair(); } - public virtual string GetDocumentationLink() => VFXHelpURLAttribute.GetHelpUrl(modelType); + public virtual string GetDocumentationLink() + { + DocumentationUtils.TryGetHelpURL(modelType, out var url); + return url; + } public virtual VFXModel CreateInstance() { diff --git a/Packages/com.unity.visualeffectgraph/Editor/Expressions/VFXExpressionContext.cs b/Packages/com.unity.visualeffectgraph/Editor/Expressions/VFXExpressionContext.cs index 0a9f2d59a31..bec47f9e273 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/Expressions/VFXExpressionContext.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/Expressions/VFXExpressionContext.cs @@ -209,14 +209,14 @@ public void Compile() using (s_CompileExpressionContext.Auto()) { - bool needToPatch = HasAny(VFXExpressionContextOption.GPUDataTransformation | VFXExpressionContextOption.PatchReadToEventAttribute); - var gpuTransformation = needToPatch && Has(VFXExpressionContextOption.GPUDataTransformation); - var spawnEventPath = needToPatch && Has(VFXExpressionContextOption.PatchReadToEventAttribute); - foreach (var exp in m_EndExpressions) - { Compile(exp.Key); - if (needToPatch) + + if (HasAny(VFXExpressionContextOption.GPUDataTransformation | VFXExpressionContextOption.PatchReadToEventAttribute)) + { + var gpuTransformation = Has(VFXExpressionContextOption.GPUDataTransformation); + var spawnEventPath = Has(VFXExpressionContextOption.PatchReadToEventAttribute); + foreach (var exp in m_EndExpressions) m_ReducedCache[exp.Key] = PatchVFXExpression(GetReduced(exp.Key), null /* no source in end expression */, gpuTransformation, spawnEventPath, m_GlobalEventAttribute); } } diff --git a/Packages/com.unity.visualeffectgraph/Editor/FilterPopup/VFXFilterWindow.cs b/Packages/com.unity.visualeffectgraph/Editor/FilterPopup/VFXFilterWindow.cs index 51cff4fc496..bb1b84d4cf2 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/FilterPopup/VFXFilterWindow.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/FilterPopup/VFXFilterWindow.cs @@ -7,6 +7,7 @@ using Unity.UI.Builder; using UnityEditor.UIElements; using UnityEngine; +using UnityEngine.Rendering; using UnityEngine.UIElements; namespace UnityEditor.VFX.UI @@ -492,7 +493,7 @@ private void OnDocumentation() var docLink = descriptor.GetDocumentationLink(); if (!string.IsNullOrEmpty(docLink)) { - Help.BrowseURL(string.Format(docLink, VFXHelpURLAttribute.version)); + Help.BrowseURL(string.Format(docLink, Documentation.version)); } } } diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Blackboard/VFXBlackboard.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Blackboard/VFXBlackboard.cs index 6314210ce5c..f51cb0f8521 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Blackboard/VFXBlackboard.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Blackboard/VFXBlackboard.cs @@ -1225,6 +1225,11 @@ public IEnumerable GetAttributeRowsFromNames(string[] return m_Treeview.Query().Where(x => attributeNames.Any(y => VFXAttributeHelper.IsMatching(y, x.attribute.title, true))).ToList(); } + public void ClearAllAttributesHighlights() + { + m_Treeview.Query().ForEach(r => r.RemoveFromClassList("hovered")); + } + public void OnControllerChanged(ref ControllerChangedEvent e) { switch (e.change) diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXBlockUI.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXBlockUI.cs index 6766e4c4644..0915b332aeb 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXBlockUI.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXBlockUI.cs @@ -67,10 +67,7 @@ protected override void SelfChange() private void OnDetachFromPanel(DetachFromPanelEvent evt) { var view = evt.originPanel.visualTree.Q(); - if (view != null) - { - UpdateHover(view, false); - } + view?.blackboard?.ClearAllAttributesHighlights(); } private void OnMouseHover(EventBase evt) diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Controller/VFXViewController.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Controller/VFXViewController.cs index 93ff5de4878..cbed3df2fde 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Controller/VFXViewController.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Controller/VFXViewController.cs @@ -682,11 +682,20 @@ public void Remove(IEnumerable removedControllers, bool explicitDele public void RemoveElement(Controller element, bool explicitDelete = false) { + bool HasCustomAttributes(VFXModel model) + { + return model is IVFXAttributeUsage attributeUsage && + attributeUsage.usedAttributes.Any(x => graph.attributesManager.IsCustom(x.name)); + } + VFXModel removedModel = null; + bool needSyncCustomAttributes = false; + if (element is VFXContextController contextController) { VFXContext context = contextController.model; removedModel = context; + needSyncCustomAttributes = HasCustomAttributes(removedModel); contextController.NodeGoingToBeRemoved(); // Remove connections from context @@ -716,6 +725,7 @@ public void RemoveElement(Controller element, bool explicitDelete = false) else if (element is VFXBlockController block) { removedModel = block.model; + needSyncCustomAttributes = HasCustomAttributes(removedModel); block.NodeGoingToBeRemoved(); block.contextController.RemoveBlock(block.model); @@ -724,6 +734,7 @@ public void RemoveElement(Controller element, bool explicitDelete = false) else if (element is VFXParameterNodeController parameter) { removedModel = parameter.model; + needSyncCustomAttributes = HasCustomAttributes(removedModel); parameter.NodeGoingToBeRemoved(); parameter.parentController.model.RemoveNode(parameter.infos); RemoveFromGroupNodes(parameter); @@ -736,6 +747,7 @@ public void RemoveElement(Controller element, bool explicitDelete = false) if (element is VFXNodeController nodeController) { removedModel = nodeController.model; + needSyncCustomAttributes = HasCustomAttributes(removedModel); container = removedModel as IVFXSlotContainer; nodeController.NodeGoingToBeRemoved(); RemoveFromGroupNodes(nodeController); @@ -743,6 +755,7 @@ public void RemoveElement(Controller element, bool explicitDelete = false) else { removedModel = ((VFXParameterController)element).model; + needSyncCustomAttributes = HasCustomAttributes(removedModel); container = (IVFXSlotContainer)removedModel; foreach (var parameterNode in m_SyncedModels[removedModel]) { @@ -814,7 +827,7 @@ public void RemoveElement(Controller element, bool explicitDelete = false) Debug.LogErrorFormat("Unexpected type : {0}", element.GetType().FullName); } - if (removedModel is IVFXAttributeUsage attributeUsage && attributeUsage.usedAttributes.Any(x => graph.attributesManager.IsCustom(x.name))) + if (needSyncCustomAttributes) { graph.SyncCustomAttributes(); } diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/PropertyRM.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/PropertyRM.cs index 33c133ac44b..5564ff69ccb 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/PropertyRM.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/PropertyRM.cs @@ -36,6 +36,10 @@ interface IPropertyRMProvider void EndLiveModification(); } + interface IVFXNotifyValueChanged : INotifyValueChanged + { + void SetValueWithoutNotify(T typedNewValue, bool force = false); + } class SimplePropertyRMProvider : IPropertyRMProvider { @@ -149,7 +153,7 @@ public virtual bool IsCompatible(IPropertyRMProvider provider) public float GetPreferredLabelWidth() { - if (hasLabel && this.Q
    PropertyURP LitURP UnlitBuilt-In Render Pipeline
    Workflow ModeSee the URP documentation for the Lit URP Shader.Not applicable.Not applicable.
    Workflow ModeSee the URP documentation for the Lit URP Shader.Not applicable.Not applicable.
    Receive Shadows
    Cast ShadowsThis property is only exposed if Allow Material Override is enabled for this Shader Graph. Enable this property to make it possible for a GameObject using this shader to cast shadows onto itself and other GameObjects. This corresponds to the SubShader Tag ForceNoShadowCasting.Not applicable.
    Surface TypeSee the URP documentation for the Lit and Unlit Shaders.In the Built-In Render Pipeline, this feature has the same behavior as in URP. Consult the URP documentation.
    Surface TypeSee the URP documentation for the Lit and Unlit Shaders.In the Built-In Render Pipeline, this feature has the same behavior as in URP. Consult the URP documentation.
    Render FaceIn the Built-In Render Pipeline, this feature has the same behavior as in URP. Consult the URP documentation.