diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/LightingSearchColumnProviders.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/LightingSearchColumnProviders.cs index fb5500a16c0..0807c39e532 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/LightingSearchColumnProviders.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/LightingSearchColumnProviders.cs @@ -308,6 +308,7 @@ internal static string GetBakingMode(ProbeVolumeBakingSet bakingSet) internal static void SetBakingMode(ProbeVolumeBakingSet bakingSet, string mode) { + Undo.RecordObject(bakingSet, "Change Baking Mode"); bakingSet.singleSceneMode = (mode == "Single Scene"); } @@ -318,6 +319,7 @@ internal static int GetSkyOcclusionBakingSamples(ProbeVolumeBakingSet bakingSet) internal static void SetSkyOcclusionBakingSamples(ProbeVolumeBakingSet bakingSet, int samples) { + Undo.RecordObject(bakingSet, "Change Occlusion Baking"); bakingSet.skyOcclusionBakingSamples = samples; } @@ -334,6 +336,7 @@ internal static void SetVolumeMode(GameObject go, string mode) if (!go.TryGetComponent(out var volume)) return; + Undo.RecordObject(volume, "Change Volume Mode"); volume.isGlobal = (mode == "Global"); } @@ -350,6 +353,7 @@ internal static void SetVolumeProfile(GameObject go, VolumeProfile profile) if (!go.TryGetComponent(out var volume)) return; + Undo.RecordObject(volume, "Change Volume Profile"); volume.sharedProfile = profile; } @@ -368,6 +372,7 @@ internal static void SetLightShape(GameObject go, LightType value) if (IsLightShapeApplicable(value)) { + Undo.RecordObject(light, "Change light Shape"); light.type = value; } } 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 654fb1b7e92..a2a052bbc3b 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 @@ -1040,6 +1040,41 @@ public CameraSelector() private Camera[] m_CamerasArray; private List m_Cameras = new List(); +#if ENABLE_RENDERING_DEBUGGER_UI + /// + protected override VisualElement Create() + { + var objectPopUpField = base.Create() as UIElements.PopupField; + + if (objectPopUpField == null) + return new Label("Error creating CameraSelector field"); + + objectPopUpField.choices ??= new List() { null }; + + // Refresh the dropdown choices to keep it in sync with available cameras in the scene. + // NOTE: If the currently selected camera is deleted, PopupField handles it internally, + // so we only need to maintain the available choices list. + this.ScheduleTracked(objectPopUpField, () => objectPopUpField.schedule.Execute(() => + { + // Using ListPool and SequenceEqual to avoid unnecessary allocations and UI updates + using (UnityEngine.Pool.ListPool.Get(out var tmp)) + { + tmp.Add(null); + tmp.AddRange(getObjects()); + + if (!tmp.SequenceEqual(objectPopUpField.choices)) + { + objectPopUpField.choices.Clear(); + objectPopUpField.choices.AddRange(tmp); + } + } + + }).Every(500)); + + return objectPopUpField; + } +#endif + IEnumerable cameras { get diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.cs b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.cs index 8ffc3f27344..dcc7edc4f1e 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.cs @@ -308,22 +308,19 @@ internal VisualElement ToVisualElement(Context context) m_Context = context; m_VisualElement = Create(); - //Debug.Log($"ToVisualElement for {queryPath}"); - if (m_VisualElement == null) { Debug.LogWarning($"Unable to create a Visual Element for type {GetType()}"); return null; } m_VisualElement.AddToClassList("unity-inspector-element"); - + m_VisualElement.name = displayName; #if UNITY_EDITOR // Support for legacy state handling if (this is ISupportsLegacyStateHandling legacyStateWidget) { m_RequiresLegacyStateHandling = legacyStateWidget.RequiresLegacyStateHandling(); - //Debug.Log($"LegacyState: {m_RequiresLegacyStateHandling} ({queryPath})"); } #endif diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/RuntimeDebugWindow.cs b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/RuntimeDebugWindow.cs index fa2eb2ea482..cb4e0649a00 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/RuntimeDebugWindow.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/RuntimeDebugWindow.cs @@ -139,7 +139,7 @@ void OnDestroy() // Need to unregister here as well because when the UI is closed and reopened, it is a different object so the member // function will be a different object and the Unregister call in RecreateGUI does nothing. - m_PanelRootElement.UnregisterCallback(ConvertNavigationMoveEvents, TrickleDown.TrickleDown); + m_PanelRootElement?.UnregisterCallback(ConvertNavigationMoveEvents, TrickleDown.TrickleDown); } DebugManager.instance.displayRuntimeUI = false; 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 0d5a6daceaa..441f1d9c7c6 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Utilities/CoreUtils.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Utilities/CoreUtils.cs @@ -1845,32 +1845,48 @@ public static IEnumerable LoadAllAssets(string extension = "asset", bool a } } + const char k_DirectorySeparatorChar = '/'; + /// /// Create any missing folders in the file path given. /// - /// File or folder (ending with '/') path to ensure existence of each subfolder in. + /// File or folder (ending with '/') path to ensure existence of each subfolder in. public static void EnsureFolderTreeInAssetFilePath(string filePath) { - var path = filePath.Replace('\\', Path.DirectorySeparatorChar).Replace('/', Path.DirectorySeparatorChar); - if (!path.StartsWith("Assets" + Path.DirectorySeparatorChar, StringComparison.CurrentCultureIgnoreCase)) - throw new ArgumentException($"Path should start with \"Assets/\". Got {filePath}.", filePath); + if (string.IsNullOrEmpty(filePath)) + return; + + // Normalize to forward slashes (Unity standard) + var path = filePath.Replace('\\', k_DirectorySeparatorChar); + + if (!path.StartsWith("Assets/", StringComparison.Ordinal)) + throw new ArgumentException($"Path should start with \"Assets/\". Got {filePath}.", nameof(filePath)); var folderPath = Path.GetDirectoryName(path); - if (!UnityEditor.AssetDatabase.IsValidFolder(folderPath)) + if (string.IsNullOrEmpty(folderPath)) + return; + + // GetDirectoryName may reintroduce backslashes on Windows + folderPath = folderPath.Replace('\\', k_DirectorySeparatorChar); + + // Early exit if folder already exists + if (AssetDatabase.IsValidFolder(folderPath)) + return; + + var folderNames = folderPath.Split(k_DirectorySeparatorChar); + string currentPath = "Assets"; + + for (int i = 1; i < folderNames.Length; ++i) { - var folderNames = folderPath.Split(Path.DirectorySeparatorChar); - string rootPath = ""; - foreach (var folderName in folderNames) - { - var newPath = rootPath + folderName; - if (!UnityEditor.AssetDatabase.IsValidFolder(newPath)) - UnityEditor.AssetDatabase.CreateFolder(rootPath.TrimEnd(Path.DirectorySeparatorChar), folderName); - rootPath = newPath + Path.DirectorySeparatorChar; - } + string nextPath = currentPath + k_DirectorySeparatorChar + folderNames[i]; + if (!UnityEditor.AssetDatabase.IsValidFolder(nextPath)) + UnityEditor.AssetDatabase.CreateFolder(currentPath, folderNames[i]); + currentPath = nextPath; } } + /// /// Returns the icon for the given type if it has an IconAttribute. /// diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeComponent.cs b/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeComponent.cs index f9c60fcdda3..c125c1c7bf9 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeComponent.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeComponent.cs @@ -328,25 +328,6 @@ internal void SetOverridesTo(IEnumerable enumerable, bool state } } - /// - /// A custom hashing function that Unity uses to compare the state of parameters. - /// - /// A computed hash code for the current instance. - public override int GetHashCode() - { - unchecked - { - //return parameters.Aggregate(17, (i, p) => i * 23 + p.GetHash()); - - int hash = 17; - - for (int i = 0; i < parameterList.Length; i++) - hash = hash * 23 + parameterList[i].GetHashCode(); - - return hash; - } - } - /// /// Returns true if any of the volume properites has been overridden. /// diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeManager.cs b/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeManager.cs index dce529e4e28..9f073eb82a4 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeManager.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeManager.cs @@ -272,16 +272,14 @@ public void Initialize(VolumeProfile globalDefaultVolumeProfile = null, VolumePr void InitializeBaseTypesArray(VolumeProfile globalDefaultVolumeProfile = null) { using var profilerScope = k_ProfilerMarkerInitializeBaseTypesArray.Auto(); -#if UNITY_EDITOR - LoadBaseTypesByReflection(GraphicsSettings.currentRenderPipelineAssetType); -#else +#if !UNITY_EDITOR if (globalDefaultVolumeProfile == null) { var defaultVolumeProfileSettings = GraphicsSettings.GetRenderPipelineSettings(); globalDefaultVolumeProfile = defaultVolumeProfileSettings?.defaultVolumeProfile; } - LoadBaseTypes(globalDefaultVolumeProfile); #endif + LoadBaseTypes(GraphicsSettings.currentRenderPipelineAssetType, globalDefaultVolumeProfile); } //This is called by test where the basetypes are tuned for the purpose of the test. @@ -323,7 +321,7 @@ public void Deinitialize() /// The VolumeProfile to use as the global default profile. public void SetGlobalDefaultProfile(VolumeProfile profile) { - LoadBaseTypes(profile); + LoadBaseTypes(GraphicsSettings.currentRenderPipelineAssetType, profile); globalDefaultProfile = profile; EvaluateVolumeDefaultState(); } @@ -435,8 +433,9 @@ public void DestroyStack(VolumeStack stack) /// LoadBaseTypes is responsible for loading the list of VolumeComponent types that will be used to build the default state of the VolumeStack. It uses the provided global default profile to determine which component types are relevant for the current render pipeline. /// This will be called only once at runtime on app boot /// + /// The Pipeline Type used to check if each VolumeComponent is supported. /// The global default volume profile to use to build the base component type array. - internal void LoadBaseTypes(VolumeProfile globalDefaultVolumeProfile) + internal void LoadBaseTypesByDefaultVolume(Type rpType, VolumeProfile globalDefaultVolumeProfile) { if (globalDefaultVolumeProfile == null) { @@ -446,13 +445,13 @@ internal void LoadBaseTypes(VolumeProfile globalDefaultVolumeProfile) using (ListPool.Get(out var list)) { - var pipelineAssetType = GraphicsSettings.currentRenderPipelineAssetType; foreach (var comp in globalDefaultVolumeProfile.components) { - if (comp == null) continue; + if (comp == null) + continue; var componentType = comp.GetType(); - if (!SupportedOnRenderPipelineAttribute.IsTypeSupportedOnRenderPipeline(componentType, pipelineAssetType)) + if (!SupportedOnRenderPipelineAttribute.IsTypeSupportedOnRenderPipeline(componentType, rpType)) continue; list.Add(componentType); @@ -481,15 +480,30 @@ internal Type[] LoadBaseTypesByReflection(Type pipelineAssetType) if (!SupportedOnRenderPipelineAttribute.IsTypeSupportedOnRenderPipeline(t, pipelineAssetType)) continue; + if (t.GetCustomAttribute() != null) + continue; + list.Add(t); } - m_BaseComponentTypeArray = list.ToArray(); } return m_BaseComponentTypeArray; } #endif + /// + /// Helper to choose a type loading depending if we are in Editor and Standalone. + /// + /// The Pipeline Type used to check if each VolumeComponent is supported. + /// The global default volume profile to use to build the base component type array. + void LoadBaseTypes(Type pipelineAssetType, VolumeProfile globalDefaultVolumeProfile = null) + { +#if UNITY_EDITOR + LoadBaseTypesByReflection(pipelineAssetType); +#else + LoadBaseTypesByDefaultVolume(pipelineAssetType, globalDefaultVolumeProfile); +#endif + } internal void InitializeVolumeComponents() { diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeProfile.cs b/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeProfile.cs index 53d2a302c32..38e3e6f29cf 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeProfile.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Volume/VolumeProfile.cs @@ -321,33 +321,16 @@ public bool TryGetAllSubclassOf(Type type, List result) return count != result.Count; } - /// - /// A custom hashing function that Unity uses to compare the state of parameters. - /// - /// A computed hash code for the current instance. - public override int GetHashCode() - { - unchecked - { - int hash = 17; - - for (int i = 0; i < components.Count; i++) - hash = hash * 23 + components[i].GetHashCode(); - - return hash; - } - } - internal int GetComponentListHashCode() { unchecked { - int hash = 17; + var hashCode = HashFNV1A32.Create(); for (int i = 0; i < components.Count; i++) - hash = hash * 23 + components[i].GetType().GetHashCode(); + hashCode.Append(components[i].GetType().GetHashCode()); - return hash; + return hashCode.value; } } diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Vrs/Vrs.cs b/Packages/com.unity.render-pipelines.core/Runtime/Vrs/Vrs.cs index d49f60326b4..d3cedefc8bc 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Vrs/Vrs.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Vrs/Vrs.cs @@ -38,6 +38,11 @@ class VisualizationPassData /// /// Check if conversion of color texture to shading rate image is supported. /// Convenience to abstract all capabilities checks. + /// + /// The `IsColorMaskTextureConversionSupported` method checks for the following: + ///- VRS hardware support through [ShadingRateInfo.supportsPerImageTile](xref:UnityEngine.Rendering.ShadingRateInfo.supportsPerImageTile). The `supportsPerImageTile` property determines whether your GPU can define different quality levels to different tiles. + ///- Compute shader support through [SystemInfo.supportsComputeShaders](xref:UnityEngine.Device.SystemInfo.supportsComputeShaders) + ///- Proper initialization of VRS utility functions and compute shaders required for converting color textures to shading rate image (SRI). This is automatically handled by the render pipeline. However, for custom implementations, you must call manually. /// /// Returns true if conversion of color texture to shading rate image is supported, false otherwise. public static bool IsColorMaskTextureConversionSupported() diff --git a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRLayout.cs b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRLayout.cs index ce4fc8a2087..f4a85623ea2 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRLayout.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRLayout.cs @@ -10,6 +10,24 @@ public class XRLayout { readonly List<(Camera, XRPass)> m_ActivePasses = new List<(Camera, XRPass)>(); + /// + /// State container for Quad View rendering, used to cache data across render passes. + /// + public QuadViewState quadView; + + /// + /// Contains cached state for Quad View XR rendering. + /// Quad View is an XR rendering mode where peripheral (outer) and foveal (inner) views are rendered separately. + /// + public struct QuadViewState + { + /// + /// Cached vignette center from the peripheral (outer) view pass. + /// Used by the inner view pass to ensure vignette effect is consistent across both views. + /// + public Vector4 cachedPeripheralVignetteCenter; + } + /// /// Configure the layout to render from the specified camera by generating passes from the the connected XR device. /// @@ -76,6 +94,7 @@ internal void Clear() } m_ActivePasses.Clear(); + quadView = default; } internal void LogDebugInfo() diff --git a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRLayoutStack.cs b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRLayoutStack.cs index 6e07b1f6b47..c6758437337 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRLayoutStack.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRLayoutStack.cs @@ -15,6 +15,8 @@ public XRLayout New() return layout; } + public bool hasLayout => m_Stack.Count > 0; + public XRLayout top => m_Stack.Peek(); public void Release() diff --git a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRPass.cs b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRPass.cs index e38e229fc12..744c714e614 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRPass.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRPass.cs @@ -26,6 +26,8 @@ public struct XRPassCreateInfo internal bool hasMotionVectorPass; internal bool spaceWarpRightHandedNDC; internal bool isLastCameraPass; + internal Vector4 uvScales; + internal Vector4 uvOffsets; #if ENABLE_VR && ENABLE_XR_MODULE internal UnityEngine.XR.XRDisplaySubsystem.XRRenderPass xrSdkRenderPass; @@ -54,6 +56,8 @@ public XRPass() m_OcclusionMesh = new XROcclusionMesh(this); m_VisibleMesh = new XRVisibleMesh(this); isLastCameraPass = true; // default to last camera pass when creating from default constructor + uvScales = Vector4.one; + uvOffsets = Vector4.zero; } /// @@ -137,6 +141,32 @@ public bool supportsFoveatedRendering /// public bool isLastCameraPass { get; private set; } + /// + /// The scale factors used to map the current view's UV coordinates to the + /// peripheral (outset) view's UV space during post-processing. + /// xy = left eye (scale x, scale y), zw = right eye (scale x, scale y). + /// + /// + /// Used in Quad View foveated rendering where the high-resolution inner patch + /// occupies a specific sub-region of the physical eye buffer. + /// Formula: mappedUV = uv * uvScales + uvOffsets + /// Only applicable to the inner pass; outer pass uses (1,1,1,1). + /// + public Vector4 uvScales { get; private set; } + + /// + /// The translation offsets used to map the current view's UV coordinates to the + /// peripheral (outset) view's UV space during post-processing. + /// xy = left eye (offset x, offset y), zw = right eye (offset x, offset y). + /// + /// + /// Used in Quad View foveated rendering where the high-resolution inner patch + /// occupies a specific sub-region of the physical eye buffer. + /// Formula: mappedUV = uv * uvScales + uvOffsets + /// Only applicable to the inner pass; outer pass uses (0,0,0,0). + /// + public Vector4 uvOffsets { get; private set; } + /// /// Index of the pass inside the frame. /// @@ -558,6 +588,8 @@ public void InitBase(XRPassCreateInfo createInfo) occlusionMeshScale = createInfo.occlusionMeshScale; foveatedRenderingInfo = createInfo.foveatedRenderingInfo; isLastCameraPass = createInfo.isLastCameraPass; + uvScales = createInfo.uvScales; + uvOffsets = createInfo.uvOffsets; } internal void AddView(XRView xrView) 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 9d9d1a97fda..85f720981dd 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRSystem.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRSystem.cs @@ -321,6 +321,12 @@ public static XRLayout NewLayout() return s_Layout.New(); } + /// + /// Returns the current active XR layout, or null if none is active. + /// Used by render passes to access cross-camera XR state like Quad View parameters. + /// + public static XRLayout currentLayout => s_Layout.hasLayout ? s_Layout.top : null; + /// /// Used by the render pipeline to complete the XR layout at the end of the frame. /// @@ -430,15 +436,77 @@ void AddViewToPass(XRPass xrPass, XRDisplaySubsystem.XRRenderPass renderPass, in xrPass.AddView(BuildView(renderPass, renderParam)); } - for (int renderPassIndex = 0; renderPassIndex < s_Display.GetRenderPassCount(); ++renderPassIndex) + // Helper: extract frustum extents from projection matrix. + // Returns Vector4(width, height, left, top) at unit depth. + static Vector4 ExtractFrustumBoundsFromProjection(Matrix4x4 proj) + { + float width = 2.0f / proj[0, 0]; + float height = 2.0f / proj[1, 1]; + float left = (proj[0, 2] - 1.0f) / proj[0, 0]; + float top = (1 - proj[1, 2]) / proj[1, 1]; + + return new Vector4(width, height, left, top); + } + + Vector4 ExtractViewBounds(XRDisplaySubsystem.XRRenderPass renderPass, int renderParamIndex) + { + renderPass.GetRenderParameter(camera, renderParamIndex, out var renderParam); + var proj = renderParam.projection; + return ExtractFrustumBoundsFromProjection(proj); + } + + int renderPassCount = s_Display.GetRenderPassCount(); + + // Pre-calculate view bounds for quad view (2 passes × 2 views) using fixed-size stack variables + // This avoids List allocations that would cause GC pressure every frame + Vector4 pass0View0Bounds = default, pass0View1Bounds = default; + Vector4 pass1View0Bounds = default, pass1View1Bounds = default; + bool isQuadViewSetup = renderPassCount == 2; + if (isQuadViewSetup) + { + s_Display.GetRenderPass(0, out var pass0); + s_Display.GetRenderPass(1, out var pass1); + if (pass0.GetRenderParameterCount() >= 2 && pass1.GetRenderParameterCount() >= 2) + { + pass0View0Bounds = ExtractViewBounds(pass0, 0); + pass0View1Bounds = ExtractViewBounds(pass0, 1); + pass1View0Bounds = ExtractViewBounds(pass1, 0); + pass1View1Bounds = ExtractViewBounds(pass1, 1); + } + else + { + isQuadViewSetup = false; + } + } + + for (int renderPassIndex = 0; renderPassIndex < renderPassCount; ++renderPassIndex) { s_Display.GetRenderPass(renderPassIndex, out var renderPass); s_Display.GetCullingParameters(camera, renderPass.cullingPassIndex, out var cullingParams); int renderParameterCount = renderPass.GetRenderParameterCount(); + bool isLastPass = renderPassIndex == renderPassCount - 1; + // This parameter makes sure we are in 2 pass quad view's second pass, which is the only case we need to apply special UV scale and offset. + bool isQuadViewLastPass = isLastPass && isQuadViewSetup; + Vector4 uvScales = Vector4.one; + Vector4 uvOffsets = Vector4.zero; + if (isQuadViewLastPass) + { + // Calculate UV scales and offsets from pre-computed view bounds + uvScales.x = pass1View0Bounds.x / pass0View0Bounds.x; + uvScales.y = pass1View0Bounds.y / pass0View0Bounds.y; + uvScales.z = pass1View1Bounds.x / pass0View1Bounds.x; + uvScales.w = pass1View1Bounds.y / pass0View1Bounds.y; + + uvOffsets.x = (pass1View0Bounds.z - pass0View0Bounds.z) / pass0View0Bounds.x; + uvOffsets.y = -(pass1View0Bounds.w - pass0View0Bounds.w) / pass0View0Bounds.y; + uvOffsets.z = (pass1View1Bounds.z - pass0View1Bounds.z) / pass0View1Bounds.x; + uvOffsets.w = -(pass1View1Bounds.w - pass0View1Bounds.w) / pass0View1Bounds.y; + } + if (CanUseSinglePass(camera, renderPass)) { - var createInfo = BuildPass(renderPass, cullingParams, layout, renderPassIndex == s_Display.GetRenderPassCount() - 1); + var createInfo = BuildPass(renderPass, cullingParams, layout, renderPassIndex == s_Display.GetRenderPassCount() - 1, uvScales, uvOffsets); var xrPass = s_PassAllocator(createInfo); for (int renderParamIndex = 0; renderParamIndex < renderParameterCount; ++renderParamIndex) @@ -452,7 +520,7 @@ void AddViewToPass(XRPass xrPass, XRDisplaySubsystem.XRRenderPass renderPass, in { for (int renderParamIndex = 0; renderParamIndex < renderParameterCount; ++renderParamIndex) { - var createInfo = BuildPass(renderPass, cullingParams, layout, renderPassIndex == s_Display.GetRenderPassCount() - 1); + var createInfo = BuildPass(renderPass, cullingParams, layout, renderPassIndex == s_Display.GetRenderPassCount() - 1, uvScales, uvOffsets); var xrPass = s_PassAllocator(createInfo); AddViewToPass(xrPass, renderPass, renderParamIndex); layout.AddPass(camera, xrPass); @@ -515,7 +583,6 @@ static XRView BuildView(XRDisplaySubsystem.XRRenderPass renderPass, XRDisplaySub { // Convert viewport from normalized to screen space Rect viewport = renderParameter.viewport; - viewport.x *= renderPass.renderTargetScaledWidth; viewport.width *= renderPass.renderTargetScaledWidth; viewport.y *= renderPass.renderTargetScaledHeight; @@ -542,8 +609,8 @@ private static RenderTextureDescriptor XrRenderTextureDescToUnityRenderTextureDe return rtDesc; } - static XRPassCreateInfo BuildPass(XRDisplaySubsystem.XRRenderPass xrRenderPass, ScriptableCullingParameters cullingParameters, XRLayout layout, bool isLastPass) - { + static XRPassCreateInfo BuildPass(XRDisplaySubsystem.XRRenderPass xrRenderPass, ScriptableCullingParameters cullingParameters, XRLayout layout, bool isLastPass, Vector4 uvScales, Vector4 uvOffsets) + { XRPassCreateInfo passInfo = new XRPassCreateInfo { renderTarget = xrRenderPass.renderTarget, @@ -562,7 +629,9 @@ static XRPassCreateInfo BuildPass(XRDisplaySubsystem.XRRenderPass xrRenderPass, copyDepth = xrRenderPass.shouldFillOutDepth, spaceWarpRightHandedNDC = xrRenderPass.spaceWarpRightHandedNDC, xrSdkRenderPass = xrRenderPass, - isLastCameraPass = isLastPass + isLastCameraPass = isLastPass, + uvScales = uvScales, + uvOffsets = uvOffsets }; return passInfo; diff --git a/Packages/com.unity.render-pipelines.core/Samples~/Common/Scripts/Editor/SamplesShowcaseEditorWindow.cs b/Packages/com.unity.render-pipelines.core/Samples~/Common/Scripts/Editor/SamplesShowcaseEditorWindow.cs index e7b4d635abb..bbf0e4a5e74 100644 --- a/Packages/com.unity.render-pipelines.core/Samples~/Common/Scripts/Editor/SamplesShowcaseEditorWindow.cs +++ b/Packages/com.unity.render-pipelines.core/Samples~/Common/Scripts/Editor/SamplesShowcaseEditorWindow.cs @@ -19,7 +19,7 @@ static void Init() static void SceneOpened(Scene scene, OpenSceneMode openSceneMode) { - var currentShowcase = (SamplesShowcase)FindFirstObjectByType(typeof(SamplesShowcase)); + var currentShowcase = (SamplesShowcase)FindAnyObjectByType(typeof(SamplesShowcase)); if(currentShowcase != null) Selection.activeGameObject = currentShowcase.gameObject; } diff --git a/Packages/com.unity.render-pipelines.core/Samples~/RendererShaderUserValue_Common/Scripts/VertexAnimationTextureBaker.cs b/Packages/com.unity.render-pipelines.core/Samples~/RendererShaderUserValue_Common/Scripts/VertexAnimationTextureBaker.cs index ff61acfc6c2..6156d7c18ba 100644 --- a/Packages/com.unity.render-pipelines.core/Samples~/RendererShaderUserValue_Common/Scripts/VertexAnimationTextureBaker.cs +++ b/Packages/com.unity.render-pipelines.core/Samples~/RendererShaderUserValue_Common/Scripts/VertexAnimationTextureBaker.cs @@ -1,3 +1,4 @@ +#if UNITY_EDITOR using UnityEngine; using UnityEditor; using System.Collections.Generic; @@ -122,4 +123,5 @@ void BakeVATArray(GameObject target, List clips, int fps) Debug.Log($"VAT Array (RGBAHalf) baked: {path} with {clips.Count} clips. Max frames = {maxFrames}"); } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.core/Tests/Editor/CoreUtils.Tests.EnsureFolderTreeInAssetFilePath.cs b/Packages/com.unity.render-pipelines.core/Tests/Editor/CoreUtils.Tests.EnsureFolderTreeInAssetFilePath.cs index 75203b41631..a050ed408b1 100644 --- a/Packages/com.unity.render-pipelines.core/Tests/Editor/CoreUtils.Tests.EnsureFolderTreeInAssetFilePath.cs +++ b/Packages/com.unity.render-pipelines.core/Tests/Editor/CoreUtils.Tests.EnsureFolderTreeInAssetFilePath.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Text; using NUnit.Framework; using UnityEngine.Rendering; @@ -23,7 +24,13 @@ partial class CoreUtilsTests [TestCase("Assets/TestFolder/Folder#Test/SubFolder/", TestName = "Folder name containing a hash character")] [TestCase("Assets/TestFolder/Folder@Test/SubFolder/File.txt", TestName = "File name containing @ character")] [TestCase("Assets/TestFolder/Folder\\SubFolder/File", TestName = "File without extension")] - + [TestCase("Assets/TestFolder//DoubleSlash/File.txt", TestName = "Path with double slashes")] + [TestCase("Assets/TestFolder///TripleSlash/File.txt", TestName = "Path with triple slashes")] + [TestCase("Assets/TestFolder/Mixed\\Separators/File.txt", TestName = "Mixed forward and backslashes")] + [TestCase("Assets/TestFolder/A/B/C/D/E/F/G/H/I/J/Deep.txt", TestName = "Deep nested path (10 levels)")] + [TestCase("Assets/TestFolder/Unicode文件夹/File.txt", TestName = "Unicode characters in folder name")] + [TestCase("Assets/TestFolder/Émojis😀/File.txt", TestName = "Emoji in folder name")] + [TestCase("Assets/TestFolder/VeryLongFolderNameThatExceedsNormalLength123456789012345678901234567890/File.txt", TestName = "Very long folder name")] public void EnsureFolderTreeInAssetFilePath(string path) { string folderPath = Path.GetDirectoryName(path); @@ -34,15 +41,31 @@ public void EnsureFolderTreeInAssetFilePath(string path) [Test] [TestCase("Assets", TestName = "Just Assets and not Assets/")] [TestCase("NotAssetsFolder/TestFolder/", TestName = "FilePath does not start with Assets/")] + [TestCase("assets/TestFolder/", TestName = "Lowercase assets (case sensitivity)")] + [TestCase("ASSETS/TestFolder/", TestName = "Uppercase ASSETS")] + [TestCase("FileName.txt", TestName = "FileName.txt")] + [TestCase("C:\\Filename.txt", TestName = "C:\\Filename.txt")] public void EnsureFolderTreeInAssetFilePathThrows(string folderPath) { Assert.Throws(() => CoreUtils.EnsureFolderTreeInAssetFilePath(folderPath)); } + [Test] + public void EnsureFolderTreeInAssetFilePath_NullOrEmpty_DoesNotThrow() + { + Assert.DoesNotThrow(() => CoreUtils.EnsureFolderTreeInAssetFilePath(null)); + Assert.DoesNotThrow(() => CoreUtils.EnsureFolderTreeInAssetFilePath("")); + Assert.DoesNotThrow(() => CoreUtils.EnsureFolderTreeInAssetFilePath(string.Empty)); + } + [TearDown] public void TearDown() { - AssetDatabase.DeleteAsset("Assets/TestFolder"); + if (AssetDatabase.IsValidFolder("Assets/TestFolder")) + { + AssetDatabase.DeleteAsset("Assets/TestFolder"); + } + AssetDatabase.Refresh(); } } } diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPPreprocessShaders.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPPreprocessShaders.cs index 089d7f33e38..62c38f1671a 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPPreprocessShaders.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/BuildProcessors/HDRPPreprocessShaders.cs @@ -167,7 +167,9 @@ protected override bool DoShadersStripper(HDRenderPipelineAsset hdrpAsset, Shade return true; // If we are transparent we use cluster lighting and not tile lighting - if (inputData.shaderKeywordSet.IsEnabled(m_TileLighting)) + // Exception: Keep tile lighting variants when DEBUG_DISPLAY is enabled for rendering debugger (only if stripDebugVariants is false) + if (inputData.shaderKeywordSet.IsEnabled(m_TileLighting) && + (stripDebugVariants || !inputData.shaderKeywordSet.IsEnabled(m_DebugDisplay))) return true; } else // Opaque diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/HDLightingSearchColumnProviders.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/HDLightingSearchColumnProviders.cs index 2a6ead6f038..15cfc3d5bfc 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/HDLightingSearchColumnProviders.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Lighting/HDLightingSearchColumnProviders.cs @@ -255,23 +255,18 @@ public static void ReflectionProbeResolutionSearchColumnProvider(SearchColumn co HDLightingSearchDataAccessors.SetReflectionProbeResolution(go, data); }; - column.cellCreator = _ => CreateImguiContainer(); - column.binder = (args, ve) => + column.drawer = args => { var go = args.item.data as GameObject ?? args.item.ToObject(); if (go == null || !go.TryGetComponent(out var hdProbe)) { - ve.visible = false; - return; + return args.value; } var reflectionProbeResolutionData = (HDLightingSearchDataAccessors.ReflectionProbeResolutionData)args.value; - - var imguiContainer = ve.Q(); switch (hdProbe.type) { case ProbeSettings.ProbeType.ReflectionProbe: - imguiContainer.onGUIHandler = () => { var rect = EditorGUILayout.GetControlRect(false, k_ImguiContainerHeight); var leftRect = new Rect(rect.x, rect.y, rect.width * k_RectLeftWidthRatio, rect.height); @@ -279,9 +274,7 @@ public static void ReflectionProbeResolutionSearchColumnProvider(SearchColumn co GUILayout.BeginHorizontal("box", GUILayout.ExpandWidth(true)); - EditorGUI.BeginChangeCheck(); - var (level, useOverride) = SerializedScalableSettingValueUI.LevelFieldGUI(leftRect, GUIContent.none, ScalableSettingSchema.GetSchemaOrNull(ScalableSettingSchemaId.With3Levels), reflectionProbeResolutionData.level, reflectionProbeResolutionData.useOverride); - + var (level, useOverride) = SerializedScalableSettingValueUI.LevelFieldGUI(leftRect, GUIContent.none, ScalableSettingSchema.GetSchemaOrNull(ScalableSettingSchemaId.With3Levels), reflectionProbeResolutionData.level, reflectionProbeResolutionData.useOverride); Enum overrideLevel; if (reflectionProbeResolutionData.useOverride) { @@ -294,54 +287,46 @@ public static void ReflectionProbeResolutionSearchColumnProvider(SearchColumn co overrideLevel = EditorGUI.EnumFlagsField(rightRect, reflectionProbeResolutionData.overrideLevel); } } - if(EditorGUI.EndChangeCheck()) - { - reflectionProbeResolutionData.level = level; - reflectionProbeResolutionData.useOverride = useOverride; - reflectionProbeResolutionData.overrideLevel = (CubeReflectionResolution)overrideLevel; - column.setter?.Invoke(new SearchColumnEventArgs(args.item, args.context, column) { value = reflectionProbeResolutionData }); - } + + reflectionProbeResolutionData.level = level; + reflectionProbeResolutionData.useOverride = useOverride; + reflectionProbeResolutionData.overrideLevel = (CubeReflectionResolution)overrideLevel; GUILayout.EndHorizontal(); }; break; case ProbeSettings.ProbeType.PlanarProbe: default: - imguiContainer.onGUIHandler = () => - { - var rect = EditorGUILayout.GetControlRect(false, k_ImguiContainerHeight); - var leftRect = new Rect(rect.x, rect.y, rect.width * k_RectLeftWidthRatio, rect.height); - var rightRect = new Rect(rect.x + rect.width * k_RectLeftWidthRatio, rect.y, rect.width * k_RectRightWidthRatio, rect.height); + { + var rect = EditorGUILayout.GetControlRect(false, k_ImguiContainerHeight); + var leftRect = new Rect(rect.x, rect.y, rect.width * k_RectLeftWidthRatio, rect.height); + var rightRect = new Rect(rect.x + rect.width * k_RectLeftWidthRatio, rect.y, rect.width * k_RectRightWidthRatio, rect.height); - GUILayout.BeginHorizontal("box", GUILayout.ExpandWidth(true)); + GUILayout.BeginHorizontal("box", GUILayout.ExpandWidth(true)); - EditorGUI.BeginChangeCheck(); - var (level, useOverride) = SerializedScalableSettingValueUI.LevelFieldGUI(leftRect, GUIContent.none, ScalableSettingSchema.GetSchemaOrNull(ScalableSettingSchemaId.With3Levels), reflectionProbeResolutionData.level, reflectionProbeResolutionData.useOverride); - - Enum overrideLevel; - if (reflectionProbeResolutionData.useOverride) - { - overrideLevel = EditorGUI.EnumPopup(rightRect, reflectionProbeResolutionData.overrideLevel); - } - else - { - using (new EditorGUI.DisabledScope(true)) - { - overrideLevel = EditorGUI.EnumFlagsField(rightRect, reflectionProbeResolutionData.overrideLevel); - } - } - if (EditorGUI.EndChangeCheck()) + var (level, useOverride) = SerializedScalableSettingValueUI.LevelFieldGUI(leftRect, GUIContent.none, ScalableSettingSchema.GetSchemaOrNull(ScalableSettingSchemaId.With3Levels), reflectionProbeResolutionData.level, reflectionProbeResolutionData.useOverride); + Enum overrideLevel; + if (reflectionProbeResolutionData.useOverride) + { + overrideLevel = EditorGUI.EnumPopup(rightRect, reflectionProbeResolutionData.overrideLevel); + } + else + { + using (new EditorGUI.DisabledScope(true)) { - reflectionProbeResolutionData.level = level; - reflectionProbeResolutionData.useOverride = useOverride; - reflectionProbeResolutionData.overrideLevel = (CubeReflectionResolution)overrideLevel; - column.setter?.Invoke(new SearchColumnEventArgs(args.item, args.context, column) { value = reflectionProbeResolutionData }); + overrideLevel = EditorGUI.EnumFlagsField(rightRect, reflectionProbeResolutionData.overrideLevel); } + } + + reflectionProbeResolutionData.level = level; + reflectionProbeResolutionData.useOverride = useOverride; + reflectionProbeResolutionData.overrideLevel = (CubeReflectionResolution)overrideLevel; - GUILayout.EndHorizontal(); - }; + GUILayout.EndHorizontal(); break; + } } + return reflectionProbeResolutionData; }; } @@ -369,55 +354,42 @@ public static void ContactShadowsSearchColumnProvider(SearchColumn column) HDLightingSearchDataAccessors.SetContactShadowsData(go, data); }; - column.cellCreator = _ => CreateImguiContainer(); - column.binder = (args, ve) => + column.drawer = args => { var go = args.item.data as GameObject ?? args.item.ToObject(); if (go == null || !go.TryGetComponent(out _)) { - ve.visible = false; - return; + return null; } - ve.visible = true; var contactShadowsData = (HDLightingSearchDataAccessors.ContactShadowsData)args.value; - var imguiContainer = ve.Q(); - imguiContainer.onGUIHandler = () => + var rect = EditorGUILayout.GetControlRect(false, k_ImguiContainerHeight); + var leftRect = new Rect(rect.x, rect.y, rect.width - k_ToggleWidth - 4f, rect.height); + var rightRect = new Rect(rect.xMax - k_ToggleWidth, rect.y, k_ToggleWidth, rect.height); + var (level, useOverride) = SerializedScalableSettingValueUI.LevelFieldGUI( + leftRect, + GUIContent.none, + ScalableSettingSchema.GetSchemaOrNull(ScalableSettingSchemaId.With3Levels), + contactShadowsData.level, + contactShadowsData.useOverride); + + contactShadowsData.level = level; + contactShadowsData.useOverride = useOverride; + + if (contactShadowsData.useOverride) { - var rect = EditorGUILayout.GetControlRect(false, k_ImguiContainerHeight); - var leftRect = new Rect(rect.x, rect.y, rect.width - k_ToggleWidth - 4f, rect.height); - var rightRect = new Rect(rect.xMax - k_ToggleWidth, rect.y, k_ToggleWidth, rect.height); - - EditorGUI.BeginChangeCheck(); - var (level, useOverride) = SerializedScalableSettingValueUI.LevelFieldGUI( - leftRect, - GUIContent.none, - ScalableSettingSchema.GetSchemaOrNull(ScalableSettingSchemaId.With3Levels), - contactShadowsData.level, - contactShadowsData.useOverride); - - contactShadowsData.level = level; - contactShadowsData.useOverride = useOverride; - - if (contactShadowsData.useOverride) - { - contactShadowsData.overrideValue = EditorGUI.Toggle(rightRect, contactShadowsData.overrideValue); - } - else - { - var hdrp = HDRenderPipeline.currentAsset; - var defaultValue = HDAdditionalLightData.ScalableSettings.UseContactShadow(hdrp); - using (new EditorGUI.DisabledScope(true)) - { - contactShadowsData.overrideValue = EditorGUI.Toggle(rightRect, defaultValue[contactShadowsData.level]); - } - } - - if (EditorGUI.EndChangeCheck()) + contactShadowsData.overrideValue = EditorGUI.Toggle(rightRect, contactShadowsData.overrideValue); + } + else + { + var hdrp = HDRenderPipeline.currentAsset; + var defaultValue = HDAdditionalLightData.ScalableSettings.UseContactShadow(hdrp); + using (new EditorGUI.DisabledScope(true)) { - column.setter?.Invoke(new SearchColumnEventArgs(args.item, args.context, column) { value = contactShadowsData }); + contactShadowsData.overrideValue = EditorGUI.Toggle(rightRect, defaultValue[contactShadowsData.level]); } - }; + } + return contactShadowsData; }; } @@ -435,58 +407,28 @@ public static void ShadowResolutionSearchColumnProvider(SearchColumn column) column.setter = args => { - if (args.value is not HDLightingSearchDataAccessors.ShadowResolutionData data) + if (args.value is not ShadowResolutionOption option) return; var go = args.item.data as GameObject ?? args.item.ToObject(); if (go == null) return; - HDLightingSearchDataAccessors.SetShadowResolutionData(go, data); + HDLightingSearchDataAccessors.SetShadowResolutionData(go, option); }; - column.cellCreator = _ => CreateImguiContainer(); - column.binder = (args, ve) => + column.drawer = args => { var go = args.item.data as GameObject ?? args.item.ToObject(); if (go == null || !go.TryGetComponent(out _)) { - ve.visible = false; - return; + return null; } - ve.visible = true; - var shadowResolutionData = (HDLightingSearchDataAccessors.ShadowResolutionData)args.value; - var imguiContainer = ve.Q(); - imguiContainer.onGUIHandler = () => - { - var rect = EditorGUILayout.GetControlRect(false, 20); - var currentOption = shadowResolutionData.useOverride - ? ShadowResolutionOption.Custom - : shadowResolutionData.level switch - { - <= 0 => ShadowResolutionOption.Low, - 1 => ShadowResolutionOption.Medium, - _ => ShadowResolutionOption.High - }; - - EditorGUI.BeginChangeCheck(); - var newOption = (ShadowResolutionOption)EditorGUI.EnumPopup(rect, currentOption); - if (EditorGUI.EndChangeCheck()) - { - if (newOption == ShadowResolutionOption.Custom) - { - shadowResolutionData.useOverride = true; - } - else - { - shadowResolutionData.useOverride = false; - shadowResolutionData.level = (int)newOption; - } - - column.setter?.Invoke(new SearchColumnEventArgs(args.item, args.context, column) { value = shadowResolutionData }); - } - }; + var currentOption = (ShadowResolutionOption)args.value; + var rect = EditorGUILayout.GetControlRect(false, 20); + var newOption = (ShadowResolutionOption)EditorGUI.EnumPopup(rect, currentOption); + return newOption; }; } @@ -580,13 +522,6 @@ public static void LightModeSearchColumnProvider(SearchColumn column) }; } - static VisualElement CreateImguiContainer() - { - var visualElement = new VisualElement() { style = { height = k_ImguiContainerHeight } }; - visualElement.Add(new IMGUIContainer() { style = { height = k_ImguiContainerHeight } }); - return visualElement; - } - static class HDLightingSearchDataAccessors { internal struct ReflectionProbeResolutionData @@ -603,12 +538,6 @@ internal struct ContactShadowsData public bool overrideValue; } - internal struct ShadowResolutionData - { - public int level; - public bool useOverride; - } - internal static float GetLightIntensity(GameObject go) { if (!go.TryGetComponent(out var light)) @@ -636,6 +565,7 @@ internal static void SetLightIntensity(GameObject go, float intensity) if (!LightUnitUtils.IsLightUnitSupported(lightType, lightUnit)) return; + Undo.RecordObject(light, "Change light intensity"); light.intensity = LightUnitUtils.ConvertIntensity(light, intensity, lightUnit, nativeUnit); } @@ -655,6 +585,7 @@ internal static void SetLightIntensityUnit(GameObject go, LightUnit unit) if (!LightUnitUtils.IsLightUnitSupported(light.type, unit)) return; + Undo.RecordObject(light, "Change light intensity unit"); light.lightUnit = unit; // Mark the light component as dirty so Unity's change detection system @@ -700,15 +631,20 @@ internal static ContactShadowsData GetContactShadowsData(GameObject go) return contactShadowsData; } - internal static ShadowResolutionData GetShadowResolutionData(GameObject go) + internal static ShadowResolutionOption GetShadowResolutionData(GameObject go) { - var shadowResolutionData = new ShadowResolutionData(); if (!go.TryGetComponent(out var lightData)) - return shadowResolutionData; + return ShadowResolutionOption.Custom; - shadowResolutionData.level = lightData.shadowResolution.level; - shadowResolutionData.useOverride = lightData.shadowResolution.useOverride; - return shadowResolutionData; + var currentOption = lightData.shadowResolution.useOverride + ? ShadowResolutionOption.Custom + : lightData.shadowResolution.level switch + { + <= 0 => ShadowResolutionOption.Low, + 1 => ShadowResolutionOption.Medium, + _ => ShadowResolutionOption.High + }; + return currentOption; } internal static void SetReflectionProbeResolution(GameObject go, ReflectionProbeResolutionData reflectionProbeResolutionData) @@ -716,6 +652,7 @@ internal static void SetReflectionProbeResolution(GameObject go, ReflectionProbe if (!go.TryGetComponent(out var hdProbe)) return; + Undo.RecordObject(hdProbe, "Change reflection probe resolution"); switch (hdProbe.type) { case ProbeSettings.ProbeType.ReflectionProbe: @@ -737,18 +674,27 @@ internal static void SetContactShadowsData(GameObject go, ContactShadowsData con if (!go.TryGetComponent(out var lightData)) return; + Undo.RecordObject(lightData, "Change contact shadow data"); lightData.useContactShadow.level = contactShadowsData.level; lightData.useContactShadow.useOverride = contactShadowsData.useOverride; lightData.useContactShadow.@override = contactShadowsData.overrideValue; } - internal static void SetShadowResolutionData(GameObject go, ShadowResolutionData shadowResolutionData) + internal static void SetShadowResolutionData(GameObject go, ShadowResolutionOption newOption) { if (!go.TryGetComponent(out var lightData)) return; - lightData.shadowResolution.level = shadowResolutionData.level; - lightData.shadowResolution.useOverride = shadowResolutionData.useOverride; + Undo.RecordObject(lightData, "Change shadow resolution"); + if (newOption == ShadowResolutionOption.Custom) + { + lightData.shadowResolution.useOverride = true; + } + else + { + lightData.shadowResolution.useOverride = false; + lightData.shadowResolution.level = (int)newOption; + } lightData.RefreshCachedShadow(); } @@ -765,6 +711,7 @@ internal static void SetRayTracingMode(GameObject go, UnityEngine.Experimental.R if (!go.TryGetComponent(out var meshRenderer)) return; + Undo.RecordObject(meshRenderer, "Change ray tracing mode"); meshRenderer.rayTracingMode = value; } @@ -785,6 +732,8 @@ internal static void SetLightMode(GameObject go, LightmapBakeType value) return; if (light.type == LightType.Tube || light.type == LightType.Disc) return; + + Undo.RecordObject(light, "Change light mode"); light.lightmapBakeType = value; EditorUtility.SetDirty(light); } @@ -809,6 +758,7 @@ internal static void SetLightShape(GameObject go, LightType value) if (IsLightShapeApplicable(value)) { + Undo.RecordObject(light, "Change light shape"); light.type = value; if (!LightUnitUtils.IsLightUnitSupported(value, light.lightUnit)) 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 b93f9e8f5b9..9c4d491625e 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 @@ -273,12 +273,6 @@ public partial class DebugDisplaySettings : IDebugData, ISerializedDebugDisplayS static GUIContent[] s_RenderingMipmapDebugMaterialTextureSlotStrings = null; static int[] s_RenderingMipmapDebugMaterialTextureSlotValues = null; - static List s_CameraNames = new List() { new("None") }; - static GUIContent[] s_CameraNamesStrings = { new ("No Visible Camera") }; - static int[] s_CameraNamesValues = { 0 }; - - static bool needsRefreshingCameraFreezeList = true; - #if ENABLE_NVIDIA && ENABLE_NVIDIA_MODULE internal UnityEngine.NVIDIA.DebugView nvidiaDebugView { get; } = new UnityEngine.NVIDIA.DebugView(); #endif @@ -341,8 +335,66 @@ public partial class DebugData public bool countRays = false; /// Display Show Lens Flare Data Driven Only. public bool showLensFlareDataDrivenOnly = false; + + [Obsolete("This API has been deprecated. #from(6000.6)")] // TODO: Remove with debugCameraToFreeze + private static Camera[] GetAvailableDebuggableCameras() + { + using (ListPool.Get(out var tmp)) + { + +#if UNITY_EDITOR + if (UnityEditor.SceneView.lastActiveSceneView != null) + { + var sceneCamera = UnityEditor.SceneView.lastActiveSceneView.camera; + if (sceneCamera != null) + tmp.Add(sceneCamera); + } +#endif + + var cameraArray = new Camera[Camera.allCamerasCount]; + Camera.GetAllCameras(cameraArray); + + foreach (var camera in cameraArray) + { + if (camera == null) + continue; + + if (camera.cameraType != CameraType.Preview && camera.cameraType != CameraType.Reflection) + { + if (camera.TryGetComponent(out _)) + tmp.Add(camera); + } + } + + return tmp.ToArray(); + } + } + /// Index of the camera to freeze for visibility. - public int debugCameraToFreeze = 0; + [Obsolete("Replace 'debugCameraToFreeze = index' with 'selectedCameraToFreeze = camera'. Index-based access is deprecated because camera list order is not stable. #from(6000.5)", false)] + public int debugCameraToFreeze + { + get + { + var cameras = GetAvailableDebuggableCameras(); + if (cameras == null || cameras.Length == 0 || selectedCameraToFreeze == null) + return -1; + + return Array.IndexOf(cameras, selectedCameraToFreeze); + } + set + { + var cameras = GetAvailableDebuggableCameras(); + if (value < 0 || value >= cameras.Length) + selectedCameraToFreeze = null; + else + selectedCameraToFreeze = cameras[value]; + } + } + + /// The camera to freeze for visibility. + public Camera selectedCameraToFreeze; + internal RTASDebugView rtasDebugView = RTASDebugView.Shadows; internal RTASDebugMode rtasDebugMode = RTASDebugMode.InstanceID; internal VolumetricCloudsDebug volumetricCloudDebug = VolumetricCloudsDebug.Lighting; @@ -680,7 +732,7 @@ public ColorPickerDebugMode GetDebugColorPickerMode() /// True if camera visibility is frozen public bool IsCameraFreezeEnabled() { - return data.debugCameraToFreeze != 0; + return data.selectedCameraToFreeze != null; } /// @@ -690,7 +742,7 @@ public bool IsCameraFreezeEnabled() /// True if a specific camera is frozen for visibility. public bool IsCameraFrozen(Camera camera) { - return IsCameraFreezeEnabled() && camera.name.Equals(s_CameraNamesStrings[data.debugCameraToFreeze].text); + return IsCameraFreezeEnabled() && camera == data.selectedCameraToFreeze; } /// @@ -1962,7 +2014,14 @@ void RegisterRenderingDebug() }); } - renderingSettings.children.Add(new DebugUI.EnumField { nameAndTooltip = RenderingStrings.FreezeCameraForCulling, getter = () => data.debugCameraToFreeze, setter = value => data.debugCameraToFreeze = value, enumNames = s_CameraNamesStrings, enumValues = s_CameraNamesValues, getIndex = () => data.debugCameraToFreezeEnumIndex, setIndex = value => data.debugCameraToFreezeEnumIndex = value }); + var freezeCameraForCullingSelector = new DebugUI.CameraSelector() + { + nameAndTooltip = RenderingStrings.FreezeCameraForCulling, + getter = () => data.selectedCameraToFreeze, + setter = value => data.selectedCameraToFreeze = value as Camera + }; + + renderingSettings.children.Add(freezeCameraForCullingSelector); renderingSettings.children.Add(new DebugUI.Container { @@ -2218,19 +2277,6 @@ internal void UpdateMaterials() } } - internal void UpdateCameraFreezeOptions() - { - if (needsRefreshingCameraFreezeList) - { - s_CameraNamesStrings = s_CameraNames.ToArray(); - s_CameraNamesValues = Enumerable.Range(0, s_CameraNames.Count()).ToArray(); - - UnregisterRenderingDebug(); - RegisterRenderingDebug(); - needsRefreshingCameraFreezeList = false; - } - } - internal bool DebugHideSky(HDCamera hdCamera) { return (IsMatcapViewEnabled(hdCamera) || diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/CompositeWithUIAndOETF.shader b/Packages/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/CompositeWithUIAndOETF.shader index 830e7e13ec4..f037942be65 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/CompositeWithUIAndOETF.shader +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/PostProcessing/Shaders/CompositeWithUIAndOETF.shader @@ -8,6 +8,7 @@ Shader "Hidden/HDRP/CompositeUI" #pragma multi_compile_local_fragment _ APPLY_AFTER_POST #pragma multi_compile_local _ DISABLE_TEXTURE2D_X_ARRAY #pragma multi_compile_local_fragment _ BLIT_SINGLE_SLICE + #pragma multi_compile_local_fragment _ HDR_COLORSPACE_CONVERSION HDR_ENCODING HDR_COLORSPACE_CONVERSION_AND_ENCODING #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl" @@ -96,6 +97,9 @@ Shader "Hidden/HDRP/CompositeUI" float4 uiValue = SAMPLE_TEXTURE2D_X_LOD(_UITexture, s_point_clamp_sampler, uiCoord, 0); #endif + #if defined(HDR_COLORSPACE_CONVERSION) + outColor.rgb = RotateRec709ToOutputSpace(outColor.rgb) * _PaperWhite; + #endif outColor.rgb = SceneUIComposition(uiValue, outColor.rgb, _PaperWhite, _MaxNits); outColor.rgb = OETF(outColor.rgb, _MaxNits); diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.RenderGraph.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.RenderGraph.cs index 18db752b227..bfed4123426 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.RenderGraph.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.RenderGraph.cs @@ -143,6 +143,24 @@ void RecordRenderGraph(RenderRequest renderRequest, colorBuffer = RenderDebugViewMaterial(m_RenderGraph, cullingResults, hdCamera, gpuLightListOutput, prepassOutput.dbuffer, prepassOutput.gbuffer, prepassOutput.depthBuffer, vtFeedbackBuffer); colorBuffer = ResolveMSAAColor(m_RenderGraph, hdCamera, colorBuffer); + + bool rendersOffscreenUI = !m_OffscreenUIRenderedInCurrentFrame && HDROutputActiveForCameraType(hdCamera) && SupportedRenderingFeatures.active.rendersUIOverlay; + if (rendersOffscreenUI) + { + uiBuffer = RenderHDROffscreenUI(m_RenderGraph, hdCamera, renderContext); + m_OffscreenUIRenderedInCurrentFrame = true; + } + else + { + // We do not render offscreen ui for the rest of cameras. + uiBuffer = m_OffscreenUIRenderedInCurrentFrame ? m_RenderGraph.ImportTexture(m_OffscreenUIColorBuffer.Value) : m_RenderGraph.defaultResources.blackTextureXR; + } + + bool blitsOffscreenUICover = rendersOffscreenUI && m_RequireOffscreenUICoverPrepass; + if (blitsOffscreenUICover) + { + BlitFullscreenUIToOffscreen(m_RenderGraph, colorBackBuffer, uiBuffer, hdCamera); + } } else if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.RayTracing) && pathTracing.enable.value && hdCamera.camera.cameraType != CameraType.Preview && GetRayTracingState() && GetRayTracingClusterState()) { @@ -258,7 +276,7 @@ void RecordRenderGraph(RenderRequest renderRequest, colorBuffer = RenderTransparency(m_RenderGraph, hdCamera, renderContext, colorBuffer, prepassOutput.resolvedNormalBuffer, vtFeedbackBuffer, currentColorPyramid, volumetricLighting, rayCountTexture, opticalFogTransmittance, m_SkyManager.GetSkyReflection(hdCamera), gpuLightListOutput, transparentPrepass, ref prepassOutput, shadowResult, cullingResults, customPassCullingResults, aovRequest, aovCustomPassBuffers); - bool rendersOffscreenUI = !m_OffscreenUIRenderedInCurrentFrame && HDROutputActiveForCameraType(hdCamera) && SupportedRenderingFeatures.active.rendersUIOverlay && !NeedHDRDebugMode(m_CurrentDebugDisplaySettings); + bool rendersOffscreenUI = !m_OffscreenUIRenderedInCurrentFrame && HDROutputActiveForCameraType(hdCamera) && SupportedRenderingFeatures.active.rendersUIOverlay; if (rendersOffscreenUI) { uiBuffer = RenderHDROffscreenUI(m_RenderGraph, hdCamera, renderContext); @@ -515,6 +533,7 @@ class FinalBlitPassData public Vector4 offscreenUIViewportParams; public bool applyAfterPP; public CubemapFace cubemapFace; + public bool postProcessEnabled; public TextureHandle uiTexture; public TextureHandle afterPostProcessTexture; @@ -556,14 +575,17 @@ void BlitFinalCameraTexture(RenderGraph renderGraph, HDCamera hdCamera, in Textu // Pick the right material based off XR rendering using texture arrays and if we are dealing with a single slice at the moment or processing all slices automatically. passData.blitMaterial = (TextureXR.useTexArray && passData.srcTexArraySlice >= 0) ? m_FinalBlitWithOETFTexArraySingleSlice : m_FinalBlitWithOETF; GetHDROutputParameters(HDRDisplayInformationForCamera(hdCamera), HDRDisplayColorGamutForCamera(hdCamera), m_Tonemapping, out passData.hdrOutputParmeters, out var unused); + GetOffscreenUIViewportParams(hdCamera, out passData.offscreenUIViewportParams); passData.uiTexture = uiTexture; builder.UseTexture(passData.uiTexture, AccessFlags.Read); passData.applyAfterPP = hdCamera.frameSettings.IsEnabled(FrameSettingsField.AfterPostprocess) && !NeedHDRDebugMode(m_CurrentDebugDisplaySettings); + passData.postProcessEnabled = m_PostProcessEnabled; } else { passData.hdrOutputParmeters = new Vector4(-1.0f, -1.0f, -1.0f, -1.0f); + passData.postProcessEnabled = false; } builder.SetRenderFunc( @@ -584,7 +606,12 @@ void BlitFinalCameraTexture(RenderGraph renderGraph, HDCamera hdCamera, in Textu propertyBlock.SetVector(HDShaderIDs._OffscreenUIViewportParams, data.offscreenUIViewportParams); propertyBlock.SetInt(HDShaderIDs._BlitTexArraySlice, data.srcTexArraySlice); - HDROutputUtils.ConfigureHDROutput(data.blitMaterial, data.colorGamut, HDROutputUtils.Operation.ColorEncoding); + HDROutputUtils.Operation hdrOperation = HDROutputUtils.Operation.ColorEncoding; + if (!data.postProcessEnabled) + { + hdrOperation |= HDROutputUtils.Operation.ColorConversion; + } + HDROutputUtils.ConfigureHDROutput(data.blitMaterial, data.colorGamut, hdrOperation); if (data.applyAfterPP) { diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs index a48c12f3948..cf3b12a6548 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs @@ -2757,9 +2757,6 @@ AOVRequestData aovRequest } else { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - m_DebugDisplaySettings.UpdateCameraFreezeOptions(); -#endif m_CurrentDebugDisplaySettings = m_DebugDisplaySettings; } @@ -3091,6 +3088,7 @@ out ScriptableCullingParameters cullingParams frozenCullingParamAvailable = false; } + cullingParams.conservativeEnclosingSphere = currentAsset.m_ShouldUseConservativeEnclosingSphere; LightLoopUpdateCullingParameters(ref cullingParams, hdCamera); // If we don't use environment light (like when rendering reflection probes) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs index 3996fcf619a..2fa47414308 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipelineAsset.cs @@ -24,6 +24,8 @@ namespace UnityEngine.Rendering.HighDefinition #endif public partial class HDRenderPipelineAsset : RenderPipelineAsset, IVirtualTexturingEnabledRenderPipeline, IProbeVolumeEnabledRenderPipeline, IGPUResidentRenderPipeline, IRenderGraphEnabledRenderPipeline, ISTPEnabledRenderPipeline { + //This is not exposed to the UI. It can be enabled via Debug inspector if it is really needed. + [SerializeField] internal bool m_ShouldUseConservativeEnclosingSphere; /// public override string renderPipelineShaderTag => HDRenderPipeline.k_ShaderTagName; diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPass.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPass.cs index ffb4289aecb..a059689ec92 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPass.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPass.cs @@ -58,8 +58,9 @@ internal TargetBuffer getConstrainedDepthBuffer() { TargetBuffer depth = targetDepthBuffer; if (depth == TargetBuffer.Camera && + HDRenderPipeline.currentAsset != null && HDRenderPipeline.currentAsset.currentPlatformRenderPipelineSettings.dynamicResolutionSettings.enabled && - currentHDCamera.allowDynamicResolution && + currentHDCamera != null && currentHDCamera.allowDynamicResolution && injectionPoint == CustomPassInjectionPoint.AfterPostProcess) { // This custom pass is injected after postprocessing, and Dynamic Resolution Scaling is enabled, which diff --git a/Packages/com.unity.render-pipelines.high-definition/Tests/Editor/HDLightingSearchColumnProvidersTests.cs b/Packages/com.unity.render-pipelines.high-definition/Tests/Editor/HDLightingSearchColumnProvidersTests.cs index 698c272abeb..566970cae25 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Tests/Editor/HDLightingSearchColumnProvidersTests.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Tests/Editor/HDLightingSearchColumnProvidersTests.cs @@ -418,7 +418,7 @@ public void ShadowResolution_Column_Getter_ReturnsShadowResolutionData() var getterResult = column.getter(args); Assert.IsNotNull(getterResult, "Getter should return a value"); - Assert.IsTrue(getterResult.GetType().Name.Contains("ShadowResolutionData"), "Getter should return ShadowResolutionData"); + Assert.IsTrue(getterResult.GetType().Name.Contains("ShadowResolutionOption"), "Getter should return ShadowResolutionOption"); } #endregion @@ -587,8 +587,11 @@ public void AllHDRPColumns_HaveValidConfiguration() }, $"Column initialization for {columnType} should not throw"); Assert.IsNotNull(column.getter, $"Column {columnType} should have a getter"); - Assert.IsNotNull(column.cellCreator, $"Column {columnType} should have a cell creator"); - Assert.IsNotNull(column.binder, $"Column {columnType} should have a binder"); + if (column.drawer == null) + { + Assert.IsNotNull(column.cellCreator, $"Column {columnType} should have a cell creator"); + Assert.IsNotNull(column.binder, $"Column {columnType} should have a binder"); + } Assert.IsNotNull(column.setter, $"Column {columnType} should have a setter"); } } 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 359156f4704..91372f3983c 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 @@ -103,6 +103,10 @@ public void Render(RenderGraph graph, ContextContainer frameData, int batchIndex // Early out for preview camera if (cameraData.cameraType == CameraType.Preview) isLitView = false; + + DebugHandler debugHandler = GetActiveDebugHandler(cameraData); + if (debugHandler != null) + isLitView = debugHandler.IsLightingActive; #endif // Preset global light textures for first batch @@ -110,7 +114,7 @@ public void Render(RenderGraph graph, ContextContainer frameData, int batchIndex { using (var builder = graph.AddRasterRenderPass(k_SetLightBlendTexture, out var passData, m_SetLightBlendTextureProfilingSampler)) { - if (layerBatch.lightStats.useLights) + if (layerBatch.lightStats.useLights && isLitView) { passData.lightTextures = universal2DResourceData.lightTextures[batchIndex]; for (var i = 0; i < passData.lightTextures.Length; i++) @@ -164,7 +168,7 @@ public void Render(RenderGraph graph, ContextContainer frameData, int batchIndex builder.UseRendererList(passData.rendererList); } - if (passData.layerUseLights) + if (passData.layerUseLights && isLitView) { passData.lightTextures = universal2DResourceData.lightTextures[batchIndex]; for (var i = 0; i < passData.lightTextures.Length; i++) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs index f5261a6876d..4eaccc9f8fb 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs @@ -56,6 +56,7 @@ private struct ImportResourceSummary CopyDepthPass m_CopyDepthPass; UpscalePass m_UpscalePass; CopyCameraSortingLayerPass m_CopyCameraSortingLayerPass; + CapturePass m_CapturePass; FinalBlitPass m_FinalBlitPass; FinalBlitPass m_OffscreenUICoverPrepass; DrawScreenSpaceUIPass m_DrawOffscreenUIPass; @@ -114,6 +115,7 @@ public Renderer2D(Renderer2DData data) : base(data) m_UpscalePass = new UpscalePass(RenderPassEvent.AfterRenderingPostProcessing, m_BlitMaterial); m_CopyCameraSortingLayerPass = new CopyCameraSortingLayerPass(m_BlitMaterial); + m_CapturePass = new CapturePass(RenderPassEvent.AfterRendering); m_FinalBlitPass = new FinalBlitPass(RenderPassEvent.AfterRendering + k_FinalBlitPassQueueOffset, m_BlitMaterial, m_BlitHDRMaterial); m_OffscreenUICoverPrepass = new FinalBlitPass(RenderPassEvent.BeforeRenderingPostProcessing, m_BlitMaterial, m_BlitOffscreenUICoverMaterial); @@ -196,7 +198,8 @@ private RenderPassInputSummary GetRenderPassInputs() || cameraData.cameraTargetDescriptor.msaaSamples > 1 && UniversalRenderer.PlatformRequiresExplicitMsaaResolve() || m_Renderer2DData.useCameraSortingLayerTexture || !Mathf.Approximately(cameraData.renderScale, 1.0f) - || (DebugHandler != null && DebugHandler.WriteToDebugScreenTexture(cameraData.resolveFinalTarget)); + || (DebugHandler != null && DebugHandler.WriteToDebugScreenTexture(cameraData.resolveFinalTarget)) + || cameraData.captureActions != null; return inputSummary; } @@ -969,7 +972,13 @@ private void OnAfterRendering(RenderGraph renderGraph) { m_UpscalePass.Render(renderGraph, cameraData.camera, commonResourceData.cameraColor, universal2DResourceData.upscaleTexture); commonResourceData.cameraColor = universal2DResourceData.upscaleTexture; - } + } + + // Capture pass for Unity Recorder + if (hasCaptureActions) + { + m_CapturePass.RecordRenderGraph(renderGraph, frameData); + } if (applyFinalPostProcessing) { diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcess/UberPostProcessPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcess/UberPostProcessPass.cs index 1c8beab4b0e..31d5a6ba145 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcess/UberPostProcessPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcess/UberPostProcessPass.cs @@ -1,4 +1,5 @@ using System; +using UnityEngine.Experimental.Rendering; using UnityEngine.Rendering.RenderGraphModule; using System.Runtime.CompilerServices; // AggressiveInlining @@ -225,7 +226,7 @@ public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer if(data.chromaticAberration.IsActive()) data.chromaticAberration.Apply(material); - data.vignette.Apply(material, cameraData.xr); + data.vignette.Apply(material); if(data.filmGrain.IsActive()) data.filmGrain.Apply(material); @@ -262,8 +263,14 @@ public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer RenderingUtils.SetupOffscreenUIViewportParams(material, ref cameraData.pixelRect, data.isFinalPass && cameraData.resolveFinalTarget); } - // Done with Uber, blit it #if ENABLE_VR && ENABLE_XR_MODULE + // Setup XR UV remapping for Quad View (used by all screen-space effects) + if (cameraData.xr != null && cameraData.xr.enabled && cameraData.xr.singlePassEnabled) + { + PostProcessUtils.SetupXRUVRemapping(material, cameraData.xr); + } + + // Done with Uber, blit it if (cameraData.xr.enabled && cameraData.xr.hasValidVisibleMesh) PostProcessUtils.ScaleViewportAndDrawVisibilityMesh(context, data.sourceTexture, data.destinationTexture, data.cameraData, material, data.isFinalPass); else @@ -510,24 +517,51 @@ internal struct VignetteParams { public Vector4 vignetteParams1; public Vector4 vignetteParams2; +#if ENABLE_VR && ENABLE_XR_MODULE + public Vector4 vignetteXRCenter; + public bool hasXRCenter; +#endif + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Setup(Vignette vignette, int width, int height, Experimental.Rendering.XRPass xrPass) { CalcVignetteParams(vignette, width, height, xrPass, out vignetteParams1, out vignetteParams2); +#if ENABLE_VR && ENABLE_XR_MODULE + hasXRCenter = false; + if (xrPass != null && xrPass.enabled && xrPass.singlePassEnabled) + { + hasXRCenter = true; + Vector2 center = vignetteParams2; + var xrLayout = XRSystem.currentLayout; + + if (xrLayout != null && xrPass.viewCount > 1 && xrPass.multipassId == 1 && xrPass.isLastCameraPass) + { + // Second pass (inner views): Reuse the cached peripheral vignette center + // This ensures vignette is calculated in the outer UV space after remapping + vignetteXRCenter = xrLayout.quadView.cachedPeripheralVignetteCenter; + } + else + { + // First pass (peripheral/outer views): Calculate and cache the vignette center + vignetteXRCenter = xrPass.ApplyXRViewCenterOffset(center); + if (xrLayout != null) + xrLayout.quadView.cachedPeripheralVignetteCenter = vignetteXRCenter; + } + } +#endif } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Apply(Material material, Experimental.Rendering.XRPass xrPass) + public void Apply(Material material) { material.SetVector(ShaderConstants._Vignette_Params1, vignetteParams1); material.SetVector(ShaderConstants._Vignette_Params2, vignetteParams2); #if ENABLE_VR && ENABLE_XR_MODULE - if (xrPass != null && xrPass.enabled && xrPass.singlePassEnabled) + if (hasXRCenter) { - Vector2 center = vignetteParams2; - material.SetVector(ShaderConstants._Vignette_ParamsXR, xrPass.ApplyXRViewCenterOffset(center)); + material.SetVector(ShaderConstants._Vignette_ParamsXR, vignetteXRCenter); } #endif } @@ -546,6 +580,11 @@ static public void CalcVignetteParams(Vignette vignette, int width, int height, // center since the version of the shader that is not single-pass will use the value in _Vignette_Params2 center = xrPass.ApplyXRViewCenterOffset(center); } + if (xrPass != null && xrPass.singlePassEnabled && xrPass.viewCount > 1 && xrPass.multipassId == 1 && xrPass.isLastCameraPass) + { + // In quad view we need to also apply the aspect ratio correction to the vignette as the UV remapping will cause it to be stretched/squashed if not corrected + aspectRatio *= xrPass.uvScales.y / xrPass.uvScales.x; + } #endif vignetteParams1 = new Vector4( diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/PostProcessUtils.cs b/Packages/com.unity.render-pipelines.universal/Runtime/PostProcessUtils.cs index b3016bb3ca2..3d0e0a1de81 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/PostProcessUtils.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/PostProcessUtils.cs @@ -271,6 +271,21 @@ internal static void SetupHDROutput(Material material, HDROutputUtils.HDRDisplay } #endregion +#if ENABLE_VR && ENABLE_XR_MODULE + /// + /// Configures UV remapping for Quad View multi-resolution rendering in XR. + /// Sets shader parameters for screen-space effects to align with inner view coordinates. + /// + /// The material to configure. + /// The XR pass containing UV scale/offset parameters. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static void SetupXRUVRemapping(Material material, XRPass xrPass) + { + material.SetVector(ShaderConstants._Quad_View_Uv_Remap_scalesXR, xrPass.uvScales); + material.SetVector(ShaderConstants._Quad_View_Uv_Remap_offsetsXR, xrPass.uvOffsets); + } +#endif + #region Blit [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -395,6 +410,9 @@ static class ShaderConstants public static readonly int _BlueNoise_Texture = Shader.PropertyToID("_BlueNoise_Texture"); public static readonly int _Dithering_Params = Shader.PropertyToID("_Dithering_Params"); + public static readonly int _Quad_View_Uv_Remap_scalesXR = Shader.PropertyToID("_Quad_View_Uv_Remap_scalesXR"); + public static readonly int _Quad_View_Uv_Remap_offsetsXR = Shader.PropertyToID("_Quad_View_Uv_Remap_offsetsXR"); + public static readonly int _SourceSize = Shader.PropertyToID("_SourceSize"); } } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs index 6531a325c85..34842fd2007 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs @@ -22,6 +22,9 @@ public class OnTilePostProcessPass : ScriptableRenderPass int m_DitheringTextureIndex; PostProcessData m_PostProcessData; + // Cache vignette center from peripheral (outer) pass for quad view + static Vector4 s_CachedPeripheralVignetteCenter = Vector4.zero; + const string m_PassName = "On Tile Post Processing"; const string m_FallbackPassName = "On Tile Post Processing (sampling fallback) "; @@ -113,8 +116,18 @@ public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer SetupGrain(m_OnTileUberMaterial, cameraData, filmgrain, m_PostProcessData); SetupDithering(m_OnTileUberMaterial, cameraData, m_PostProcessData); + CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings.LinearToSRGBConversion, cameraData.requireSrgbConversion); + CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings.UseFastSRGBLinearConversion, postProcessingData.useFastSRGBLinearConversion); CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings._ENABLE_ALPHA_OUTPUT, cameraData.isAlphaOutputEnabled); +#if ENABLE_VR && ENABLE_XR_MODULE + // Setup XR UV remapping for Quad View (used by all screen-space effects) + if (cameraData.xr != null && cameraData.xr.enabled && cameraData.xr.singlePassEnabled) + { + PostProcessUtils.SetupXRUVRemapping(m_OnTileUberMaterial, cameraData.xr); + } +#endif + int shaderPass; if (m_UseTextureReadFallback) @@ -328,11 +341,33 @@ void SetupVignette(Material material, XRPass xrPass, int width, int height, Vign if (xrPass != null && xrPass.enabled) { if (xrPass.singlePassEnabled) - material.SetVector(ShaderConstants._Vignette_ParamsXR, xrPass.ApplyXRViewCenterOffset(center)); + { + Vector4 vignetteXRCenter; + var xrLayout = XRSystem.currentLayout; + + if (xrLayout != null && xrPass.viewCount > 1 && xrPass.multipassId == 1 && xrPass.isLastCameraPass) + { + // Second pass (inner views): Reuse the cached peripheral vignette center + // This ensures vignette is calculated in the outer UV space after remapping + vignetteXRCenter = xrLayout.quadView.cachedPeripheralVignetteCenter; + // In quad view we need to also apply the aspect ratio correction to the vignette as the UV remapping will cause it to be stretched/squashed if not corrected + aspectRatio *= xrPass.uvScales.y / xrPass.uvScales.x; + } + else + { + // First pass (peripheral/outer views): Calculate and cache the vignette center + vignetteXRCenter = xrPass.ApplyXRViewCenterOffset(center); + if (xrLayout != null) + xrLayout.quadView.cachedPeripheralVignetteCenter = vignetteXRCenter; + } + material.SetVector(ShaderConstants._Vignette_ParamsXR, vignetteXRCenter); + } else + { // In multi-pass mode we need to modify the eye center with the values from .xy of the corrected // center since the version of the shader that is not single-pass will use the value in _Vignette_Params2 center = xrPass.ApplyXRViewCenterOffset(center); + } } #endif diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader index 94d4c361f14..5121e9913ed 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader @@ -4,6 +4,8 @@ Shader "OnTileUberPost" #pragma multi_compile_local_fragment _ _HDR_GRADING _TONEMAP_ACES _TONEMAP_NEUTRAL #pragma multi_compile_local_fragment _ _FILM_GRAIN #pragma multi_compile_local_fragment _ _DITHERING + #pragma multi_compile_local_fragment _ _GAMMA_20 _LINEAR_TO_SRGB_CONVERSION + #pragma multi_compile_local_fragment _ _USE_FAST_SRGB_LINEAR_CONVERSION #pragma multi_compile_local_fragment _ _ENABLE_ALPHA_OUTPUT #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" @@ -31,6 +33,8 @@ Shader "OnTileUberPost" float4 _Vignette_Params2; #ifdef USING_STEREO_MATRICES float4 _Vignette_ParamsXR; + float4 _Quad_View_Uv_Remap_scalesXR; // xy = Eye0 scale, zw = Eye1 scale + float4 _Quad_View_Uv_Remap_offsetsXR; // xy = Eye0 offset, zw = Eye1 offset #endif float2 _Grain_Params; float4 _Grain_TilingParams; @@ -38,12 +42,16 @@ Shader "OnTileUberPost" float4 _HDROutputLuminanceParams; #define VignetteColor _Vignette_Params1.xyz - #ifdef USING_STEREO_MATRICES +#ifdef USING_STEREO_MATRICES #define VignetteCenterEye0 _Vignette_ParamsXR.xy #define VignetteCenterEye1 _Vignette_ParamsXR.zw - #else + #define QuadViewUvRemapEye0Scale _Quad_View_Uv_Remap_scalesXR.xy + #define QuadViewUvRemapEye1Scale _Quad_View_Uv_Remap_scalesXR.zw + #define QuadViewUvRemapEye0Offset _Quad_View_Uv_Remap_offsetsXR.xy + #define QuadViewUvRemapEye1Offset _Quad_View_Uv_Remap_offsetsXR.zw +#else #define VignetteCenter _Vignette_Params2.xy - #endif +#endif #define VignetteIntensity _Vignette_Params2.z #define VignetteSmoothness _Vignette_Params2.w #define VignetteRoundness _Vignette_Params1.w @@ -73,6 +81,23 @@ Shader "OnTileUberPost" { half3 color = inputColor.rgb; + // Gamma space... Just do the rest of Uber in linear and convert back to sRGB at the end + #if UNITY_COLORSPACE_GAMMA + { + color = GetSRGBToLinear(color); + inputColor = GetSRGBToLinear(inputColor); + } + #endif + + // Remapped UV for screen-space effects in Quad View + float2 uvRemapped = uv; +#ifdef USING_STEREO_MATRICES + // Select per-eye scale and offset for robust handling of asymmetric projection matrices + const float2 quadViewScale = unity_StereoEyeIndex == 0 ? QuadViewUvRemapEye0Scale : QuadViewUvRemapEye1Scale; + const float2 quadViewOffset = unity_StereoEyeIndex == 0 ? QuadViewUvRemapEye0Offset : QuadViewUvRemapEye1Offset; + uvRemapped = uv * quadViewScale + quadViewOffset; +#endif + // To save on variants we use an uniform branch for vignette. This may have performance impact on lower end platforms UNITY_BRANCH if (VignetteIntensity > 0) @@ -83,26 +108,40 @@ Shader "OnTileUberPost" const float2 VignetteCenter = unity_StereoEyeIndex == 0 ? VignetteCenterEye0 : VignetteCenterEye1; #endif - color = ApplyVignette(color, uv, VignetteCenter, VignetteIntensity, VignetteRoundness, VignetteSmoothness, VignetteColor); + color = ApplyVignette(color, uvRemapped, VignetteCenter, VignetteIntensity, VignetteRoundness, VignetteSmoothness, VignetteColor); } // Color grading is always enabled when post-processing/uber is active { color = ApplyColorGrading(color, PostExposure, TEXTURE2D_ARGS(_InternalLut, sampler_LinearClamp), LutParams, TEXTURE2D_ARGS(_UserLut, sampler_LinearClamp), UserLutParams, UserLutContribution, PaperWhite, OneOverPaperWhite); } - + #if _FILM_GRAIN { - color = ApplyGrain(color, uv, TEXTURE2D_ARGS(_Grain_Texture, sampler_LinearRepeat), GrainIntensity, GrainResponse, GrainScale, GrainOffset, OneOverPaperWhite); + color = ApplyGrain(color, uvRemapped, TEXTURE2D_ARGS(_Grain_Texture, sampler_LinearRepeat), GrainIntensity, GrainResponse, GrainScale, GrainOffset, OneOverPaperWhite); + } + #endif + + // When Unity is configured to use gamma color encoding, we ignore the request to convert to gamma 2.0 and instead fall back to sRGB encoding + #if _GAMMA_20 && !UNITY_COLORSPACE_GAMMA + { + color = LinearToGamma20(color); + inputColor = LinearToGamma20(inputColor); + } + // Back to sRGB + #elif UNITY_COLORSPACE_GAMMA || _LINEAR_TO_SRGB_CONVERSION + { + color = GetLinearToSRGB(color); + inputColor = LinearToSRGB(inputColor); } #endif #if _DITHERING { - color = ApplyDithering(color, uv, TEXTURE2D_ARGS(_BlueNoise_Texture, sampler_PointRepeat), DitheringScale, DitheringOffset, PaperWhite, OneOverPaperWhite); + color = ApplyDithering(color, uvRemapped, TEXTURE2D_ARGS(_BlueNoise_Texture, sampler_PointRepeat), DitheringScale, DitheringOffset, PaperWhite, OneOverPaperWhite); } #endif - + #if _ENABLE_ALPHA_OUTPUT // Saturate is necessary to avoid issues when additive blending pushes the alpha over 1. return half4(color, saturate(inputColor.a)); diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Core2D.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Core2D.hlsl index 3b888875bd5..06b21292140 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Core2D.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Core2D.hlsl @@ -100,7 +100,7 @@ float3 UnitySkinSprite( in float3 inputData, in uint4 blendIndices, in float4 bl void SetUpSpriteInstanceProperties() { -#ifdef UNITY_INSTANCING_ENABLED +#if defined(UNITY_INSTANCING_ENABLED) && !defined(HAVE_VFX_MODIFICATION) unity_SpriteProps.xy = unity_SpriteFlip; #endif } diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/UberPost.shader b/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/UberPost.shader index 8a793dc0605..7225df20367 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/UberPost.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/UberPost.shader @@ -65,6 +65,8 @@ Shader "Hidden/Universal Render Pipeline/UberPost" float4 _Vignette_Params2; #ifdef USING_STEREO_MATRICES float4 _Vignette_ParamsXR; + float4 _Quad_View_Uv_Remap_scalesXR; // xy = Eye0 scale, zw = Eye1 scale + float4 _Quad_View_Uv_Remap_offsetsXR; // xy = Eye0 offset, zw = Eye1 offset #endif float2 _Grain_Params; float4 _Grain_TilingParams; @@ -92,6 +94,10 @@ Shader "Hidden/Universal Render Pipeline/UberPost" #ifdef USING_STEREO_MATRICES #define VignetteCenterEye0 _Vignette_ParamsXR.xy #define VignetteCenterEye1 _Vignette_ParamsXR.zw + #define QuadViewUvRemapEye0Scale _Quad_View_Uv_Remap_scalesXR.xy + #define QuadViewUvRemapEye1Scale _Quad_View_Uv_Remap_scalesXR.zw + #define QuadViewUvRemapEye0Offset _Quad_View_Uv_Remap_offsetsXR.xy + #define QuadViewUvRemapEye1Offset _Quad_View_Uv_Remap_offsetsXR.zw #else #define VignetteCenter _Vignette_Params2.xy #endif @@ -160,9 +166,21 @@ Shader "Hidden/Universal Render Pipeline/UberPost" { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + // Original UV for back buffer sampling (no Quad View remapping) float2 uv = SCREEN_COORD_APPLY_SCALEBIAS(UnityStereoTransformScreenSpaceTex(input.texcoord)); float2 uvDistorted = DistortUV(uv); + // Remapped UV for screen-space effects in Quad View (vignette, bloom, grain, etc.) + float2 uvRemapped = uv; + float2 uvRemappedDistorted = uvDistorted; + #ifdef USING_STEREO_MATRICES + // Select per-eye scale and offset for robust handling of asymmetric projection matrices + const float2 quadViewScale = unity_StereoEyeIndex == 0 ? QuadViewUvRemapEye0Scale : QuadViewUvRemapEye1Scale; + const float2 quadViewOffset = unity_StereoEyeIndex == 0 ? QuadViewUvRemapEye0Offset : QuadViewUvRemapEye1Offset; + uvRemapped = uv * quadViewScale + quadViewOffset; + uvRemappedDistorted = DistortUV(uvRemapped); + #endif + // NOTE: Hlsl specifies missing input.a to fill 1 (0 for .rgb). // InputColor is a "bottom" layer for alpha output. half4 inputColor = SampleColor(ClampUVForBilinear(SCREEN_COORD_REMOVE_SCALEBIAS(uvDistorted), _BlitTexture_TexelSize.xy)); @@ -221,7 +239,7 @@ Shader "Hidden/Universal Render Pipeline/UberPost" // considering we use a cover-style scale on the dirt texture the difference // isn't massive so we chose to save a few ALUs here instead in case lens // distortion is active. - half3 dirt = SAMPLE_TEXTURE2D(_LensDirt_Texture, sampler_LinearClamp, uvDistorted * LensDirtScale + LensDirtOffset).xyz; + half3 dirt = SAMPLE_TEXTURE2D(_LensDirt_Texture, sampler_LinearClamp, uvRemappedDistorted * LensDirtScale + LensDirtOffset).xyz; dirt *= LensDirtIntensity; color += dirt * bloom.xyz; } @@ -247,7 +265,7 @@ Shader "Hidden/Universal Render Pipeline/UberPost" const float2 VignetteCenter = unity_StereoEyeIndex == 0 ? VignetteCenterEye0 : VignetteCenterEye1; #endif - color = ApplyVignette(color, uvDistorted, VignetteCenter, VignetteIntensity, VignetteRoundness, VignetteSmoothness, VignetteColor); + color = ApplyVignette(color, uvRemappedDistorted, VignetteCenter, VignetteIntensity, VignetteRoundness, VignetteSmoothness, VignetteColor); } // Color grading is always enabled when post-processing/uber is active @@ -257,7 +275,7 @@ Shader "Hidden/Universal Render Pipeline/UberPost" #if _FILM_GRAIN { - color = ApplyGrain(color, uv, TEXTURE2D_ARGS(_Grain_Texture, sampler_LinearRepeat), GrainIntensity, GrainResponse, GrainScale, GrainOffset, OneOverPaperWhite); + color = ApplyGrain(color, uvRemapped, TEXTURE2D_ARGS(_Grain_Texture, sampler_LinearRepeat), GrainIntensity, GrainResponse, GrainScale, GrainOffset, OneOverPaperWhite); } #endif @@ -277,7 +295,7 @@ Shader "Hidden/Universal Render Pipeline/UberPost" #if _DITHERING { - color = ApplyDithering(color, uv, TEXTURE2D_ARGS(_BlueNoise_Texture, sampler_PointRepeat), DitheringScale, DitheringOffset, PaperWhite, OneOverPaperWhite); + color = ApplyDithering(color, uvRemapped, TEXTURE2D_ARGS(_BlueNoise_Texture, sampler_PointRepeat), DitheringScale, DitheringOffset, PaperWhite, OneOverPaperWhite); // Assume color > 0 and prevent 0 - ditherNoise. // Negative colors can cause problems if fed back to the postprocess via render to FP16 texture. color = max(color, 0); @@ -317,7 +335,7 @@ Shader "Hidden/Universal Render Pipeline/UberPost" #if defined(DEBUG_DISPLAY) half4 debugColor = 0; - if(CanDebugOverrideOutputColor(half4(color, 1), uv, debugColor)) + if(CanDebugOverrideOutputColor(half4(color, 1), uvRemapped, debugColor)) { return debugColor; } diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/CopyDepthPass.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/CopyDepthPass.hlsl index 731ba1e892b..6698a7f5712 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/CopyDepthPass.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/CopyDepthPass.hlsl @@ -44,7 +44,7 @@ float SampleDepth(float2 pixelCoords) { int2 coord = int2(pixelCoords); #if MSAA_SAMPLES == 1 - return LOAD(coord); + return LOAD(coord).r; #else float outDepth = DEPTH_DEFAULT_VALUE; diff --git a/Packages/com.unity.shadergraph/Documentation~/Colorspace-Conversion-Node.md b/Packages/com.unity.shadergraph/Documentation~/Colorspace-Conversion-Node.md index 1a6a7ebaecf..a993c4ddcb3 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Colorspace-Conversion-Node.md +++ b/Packages/com.unity.shadergraph/Documentation~/Colorspace-Conversion-Node.md @@ -16,7 +16,7 @@ Returns the result of converting the value of input **In** from one colorspace s | Name | Type | Options | Description | |:------------ |:-------------|:-----|:---| | From | Dropdown | RGB, Linear, HSV | Selects the colorspace to convert from | -| To | Dropdown | RGB, Linear, HSV | Selects the colorspace to convert to | +| To | Dropdown | RGB, Linear, HSV | Selects the colorspace to convert to. Returns values in the range 0 to 1, or higher if the color space is HDR. | ## Generated Code Example diff --git a/Packages/com.unity.shadergraph/Documentation~/HD-Scene-Color-Node.md b/Packages/com.unity.shadergraph/Documentation~/HD-Scene-Color-Node.md index 74ba57e3890..37a660a7696 100644 --- a/Packages/com.unity.shadergraph/Documentation~/HD-Scene-Color-Node.md +++ b/Packages/com.unity.shadergraph/Documentation~/HD-Scene-Color-Node.md @@ -1,24 +1,35 @@ -# HD Scene Color Node +# HD Scene Color node -The HD Scene Color Node does the same thing as the Scene Color Node, but allows you to access the mips of the color buffer. +The HD Scene Color node samples the color buffer of the current camera, using the screen space coordinates you input. The node works the same way as the [Scene Color Node](Scene-Color-Node.md) but returns the mipmap levels of the color buffer. -## Render pipeline compatibility +To make sure the HD Scene Color node outputs the correct values, follow these steps: -| **Node** | **Universal Render Pipeline (URP)** | **High Definition Render Pipeline (HDRP)** | -| -------------- | ----------------------------------- | ------------------------------------------ | -| HD Scene Color | No | Yes | +1. Connect the node to the fragment [shader stage](Shader-Stage.md). The HD Scene Color node doesn't support the vertex shader stage. +2. In the **Graph Settings** tab of the [**Graph Inspector**](Internal-inspector.md) window, set **Surface Type** to **Transparent**. Otherwise, the node samples the color buffer before Unity renders all the opaque contents in the scene. + +The node uses trilinear clamp mode to sample the color buffer, so it smoothly interpolates between the mipmap levels. + +## Render pipeline support + +The HD Scene Color node supports the High Definition Render Pipeline (HDRP) only. If you use the node with an unsupported pipeline, it returns 0 (black). + +If you use your own custom render pipeline, you must define the behavior of the node yourself. Otherwise, the node returns a value of 0 (black). ## Ports -| Name | Direction | Type | Binding | Description | -|:------------ |:-------------|:-----|:---|:---| -| **UV** | Input | Vector 4 | Screen Position | Sets the normalized screen coordinates to sample. | -| **Lod** | Input | float | None | Sets the mip level that the sampler uses to sample the color buffer. | -| **Output** | Output | Vector 3 | None | Output value | +| Name | Direction | Type | Binding | Description | +|:--|:--|:--|:--|:--| +| **UV** | Input | Vector 4 | Screen position | The normalized screen space coordinates to sample from. | +| **Lod** | Input | float | None | The mipmap level to sample. | +| **Output** | Output | Vector 3 | None | The color value from the color buffer at the coordinates and mipmap level. | + +## Properties -## Notes -### Exposure +| **Property** | **Description** | +|-|-| +| **Exposure** | Applies [exposure](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest/index.html?subfolder=/manual/Override-Exposure.html) to the camera color. This property is disabled by default to avoid double exposure. | -You can use the Exposure property to specify if you want to output the Camera color with exposure applied or not. By default, this property is disabled to avoid double exposure. +## Additional resources -The sampler that this Node uses to sample the color buffer is in trilinear clamp mode. This allows the sampler to smoothly interpolate between the mip maps. +- [Scene Color Node](Scene-Color-Node.md) +- [Custom pass buffers and pyramids](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest/index.html?subfolder=/manual/Custom-Pass-buffers-pyramids.html) diff --git a/Packages/com.unity.shadergraph/Documentation~/Property-Types.md b/Packages/com.unity.shadergraph/Documentation~/Property-Types.md index 2aee450abbe..e432a1b79c7 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Property-Types.md +++ b/Packages/com.unity.shadergraph/Documentation~/Property-Types.md @@ -21,7 +21,7 @@ All properties have the following common parameters in addition to those specifi | **Preview Value** | Sets a value to use for preview in the Shader Graph window, only when you set **Scope** to **Global**. | | **Show In Inspector** | Displays the property in the material Inspector when enabled.
If you disable this option, it includes an `[HideInInspector]` attribute to the material property (refer to [Properties block reference in ShaderLab](https://docs.unity3d.com/Manual/SL-Properties.html#material-property-attributes) for more details). | | **Read Only** | Marks the property as non-editable in the material Inspector by adding the [`PerRendererData`](https://docs.unity3d.com/ScriptReference/Rendering.ShaderPropertyFlags.html) attribute. | -| **Custom Attributes** | Enables attachment of custom scripted drawers or decorators to extend the material property UI, such as adding static headers or complex controls.
The **Custom Material Property Drawers** sample, available in the Package Manager among other [Shader Graph samples](ShaderGraph-Samples.md), shows how to display a Vector2 as a min/max slider, for example.

**Note**: When you declare the custom functions in the script, make sure to suffix their names with `Drawer` or `Decorator`.

In the list, use **+** or **-** to add or remove entries. Each entry corresponds to a function call which requires the following parameters:
  • **Name**: A shorthened version of the function name, without its `Drawer` or `Decorator` suffix.
  • **Value**: The input values for the function as the script expects them.
**Note**: A property can only have one drawer at any given time. | +| **Custom Attributes** | Enables attachment of custom scripted drawers or decorators to extend the material property UI, such as adding static headers or complex controls.
The [Custom Material Property Drawers](Shader-Graph-Sample-Custom-Material-Property-Drawers.md) sample shows how to display a Vector2 as a min/max slider, for example.

**Note**: When you declare the custom functions in the script, make sure to suffix their names with `Drawer` or `Decorator`.

In the list, use **+** or **-** to add or remove entries. Each entry corresponds to a function call which requires the following parameters:
  • **Name**: A shortened version of the function name, without its `Drawer` or `Decorator` suffix.
  • **Value**: The input values for the function as the script expects them.
**Note**: A property can only have one drawer at any given time. | | **Use Custom Binding** | Turns the property into a bound input port for connection to the [**Branch On Input Connection**](Branch-On-Input-Connection-Node.md) node. In the **Label** field, enter the label for the default value that displays on your Subgraph node's port binding in its parent Shader Graph.
This property is available only in sub graphs. | ## Float @@ -150,7 +150,7 @@ Defines a [Cubemap](https://docs.unity3d.com/Manual/class-Cubemap.html) value. D ## Virtual Texture -Defines a [Texture Stack](https://docs.unity3d.com/2020.1/Documentation/Manual/svt-use-in-shader-graph.html), which appears as object fields of type [Texture](https://docs.unity3d.com/Manual/class-TextureImporter.html) in the Material Inspector. The number of fields corresponds to the number of layers in the property. +Defines a [Texture Stack](https://docs.unity3d.com/Manual/svt-use-in-shader-graph.html), which appears as object fields of type [Texture](https://docs.unity3d.com/Manual/class-TextureImporter.html) in the Material Inspector. The number of fields corresponds to the number of layers in the property. | Parameter | Description | | :--- | :--- | diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting-Get-Started.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting-Get-Started.md index e12e7c57273..b2019a44869 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting-Get-Started.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting-Get-Started.md @@ -3,7 +3,7 @@ Use the templates and sub graphs included in the **Custom Lighting** sample to get started with lighting model customization in Shader Graph. > [!NOTE] -> To use the **Custom Lighting** templates and sub graphs, you first need to [import the sample in your project](ShaderGraph-Samples.md#add-samples). +> To use the **Custom Lighting** templates and sub graphs, you first need to [import the sample in your project](ShaderGraph-Samples-Import.md). ## Start from a shader graph template diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting-Introduction.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting-Introduction.md index b52c4be8d66..96ea6158826 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting-Introduction.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting-Introduction.md @@ -24,7 +24,7 @@ The assets available in the **Custom Lighting** sample allow you to [get started Before you start to customize lighting models with Shader Graph, be aware of the following limitations: -### Shader Graph doesn't support deferred rendering +### Shader Graph doesn't support custom lighting with deferred rendering Customizable lighting is only intended to be used when you set the render type to Forward or Forward+ in the Render Asset. diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting.md index 10402c4e975..51af075393d 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Lighting.md @@ -1,6 +1,4 @@ -# Custom Lighting - -![An example scene with custom lighting effects.](images/CustomLightingSample.png) +# Custom Lighting sample Use the additional templates and sub graphs provided in the **Custom Lighting** sample to get started with lighting model customization in Shader Graph. diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Material-Property-Drawers.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Material-Property-Drawers.md new file mode 100644 index 00000000000..e26c20a1050 --- /dev/null +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Custom-Material-Property-Drawers.md @@ -0,0 +1,81 @@ +## Custom Material Property Drawers sample + +Learn how to use custom attributes in Shader Graph to improve the display and usability of property controls in the material's Inspector window. + +The Custom Material Property Drawers sample includes a shader graph based material set up for adjustable color gradient and noise. This example shows how to achieve the following in the material Inspector UI with Shader Graph: + +* Hide or display a basic material color property. +* Display a Vector2 property as a min/max slider. +* Display a help box for a property. + +## Before you start + +To access the Custom Material Property Drawers sample, follow these steps: + +1. [Import](ShaderGraph-Samples-Import.md) the Custom Material Property Drawers sample in your project. + +1. In the Project window, open the `Assets/Samples/Shader Graph//Custom Material Property Drawers` folder. + +1. Open the `RemapDrawerExample` shader graph asset. + +## Hide or display a property in the material Inspector UI + +To hide or display a material property from the shader graph in the material Inspector UI, follow these steps: + +1. In the [Shader Graph window](Shader-Graph-Window.md), in the [Blackboard](Blackboard.md), select a property, for example **InnerColor**. + +1. In the [Graph Inspector](Internal-Inspector.md), in the **Node Settings** tab, disable **Show in Inspector**. + +1. Save the graph. + +1. In the Project window, select the `RemapDrawerExample` material variant asset. + +1. In the Inspector window, notice that the **InnerColor** property isn't displayed, contrarily to the other properties of the graph. + +1. In the [Shader Graph window](Shader-Graph-Window.md), re-enable **Show in Inspector** for the **InnerColor** property. + +1. Save the graph. + +1. In the Inspector window, notice that the **InnerColor** property is now displayed. + +## Display a material property as a min/max range slider + +To learn how to display a material property as a min/max range slider in the material Inspector UI, follow these steps: + +1. In the [Shader Graph window](Shader-Graph-Window.md), in the [Blackboard](Blackboard.md), select the **Range** property. + +1. In the [Graph Inspector](Internal-Inspector.md), in the **Node Settings** tab, notice the following: + + * The **Custom Attributes** include an entry named **Remap**, which modifies the **Range** property's appearance in the material UI based on a script provided with the sample. + * The attribute includes no parameter values for the called function. For more information, refer to the sticky note besides the **Range** property instance in the graph. + +1. In the Project window, open the `Editor` subfolder. + +1. Select the `RemapDrawer` C# file. + +1. In the Inspector window, notice the following: + + * The C# file includes a set of custom functions named `RemapDrawer` to display a Vector2 as a min/max slider. + * The function names include a `Drawer` suffix while in the shader graph the **Range** property excludes this suffix to call the functions. + +## Display a help box in the material Inspector UI + +To learn how to display a help box in the material Inspector UI, follow these steps: + +1. In the [Shader Graph window](Shader-Graph-Window.md), in the [Blackboard](Blackboard.md), select the **NoiseRange** property. + +1. In the [Graph Inspector](Internal-Inspector.md), in the **Node Settings** tab, notice the following: + + * The **Custom Attributes** include an entry named **Remap** (previously described) and a second one named **HelpBox**, which adds a help box to the **NoiseRange** property in the material UI based on a second script provided with the sample. + * The two attributes include specific parameter values for the called functions. For more information, refer to the sticky note under the **NoiseRange** property instance in the graph. + +1. In the Project window, still in the `Editor` subfolder, select the `HelpBoxDecorator` C# file. + +1. In the Inspector window, notice the following: + + * The C# file includes a set of custom functions named `HelpBoxDecorator` to draw a message box in the material UI. + * The function names include a `Decorator` suffix while in the shader graph the **NoiseRange** property excludes this suffix to call the functions. + +## Additional resources + +* [Property attribute reference](Property-Types.md) \ No newline at end of file diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Feature-Examples.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Feature-Examples.md index 3d55aace82f..dcd94cf7223 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Feature-Examples.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Feature-Examples.md @@ -1,7 +1,9 @@ -# Feature Examples +# Feature Examples sample The Shader Graph Feature Examples sample content is a collection of Shader Graph assets that demonstrate how to achieve common techniques and effects in Shader Graph. The goal of this sample pack is to help users see what is required to achieve specific effects and provide examples to make it easier for users to learn. +Each sample contains notes that describe what the shader does. Most of the shaders have their core functionality in a subgraph, so you can copy and paste them into your own shader graphs. + The sample content is broken into the following categories: - **Blending Masks** - these samples generate masks based on characteristics of the surface - such as height, facing angle, or distance from the camera. diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Node-Reference.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Node-Reference.md new file mode 100644 index 00000000000..f4be3cad408 --- /dev/null +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Node-Reference.md @@ -0,0 +1,5 @@ +# Node Reference sample + +This set of Shader Graph assets provides reference material for the nodes available in the Shader Graph node library. + +Each graph contains a description for a specific node, examples of how it can be used, and useful tips. Some example assets also show a break-down of the math that the node is doing. You can use these samples along with the documentation to learn more about the behavior of individual nodes. diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Procedural-Patterns.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Procedural-Patterns.md new file mode 100644 index 00000000000..4ce9b80a025 --- /dev/null +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Procedural-Patterns.md @@ -0,0 +1,19 @@ +# Procedural Patterns sample + +This collection of Assets showcases various procedural techniques possible with Shader Graph. Use them directly in your Project, or edit them to create other procedural patterns. + +This collection includes the following patterns: + +* Bacteria +* Brick +* Dots +* Grid +* Herringbone +* Hex Lattice +* Houndstooth +* Smooth Wave +* Spiral +* Stripes +* Truchet +* Whirl +* Zig Zag diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready.md index 7a116cc5839..112a4aa68bc 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Production-Ready.md @@ -1,8 +1,6 @@ -# Production Ready Shaders +# Production Ready Shaders sample -The Shader Graph Production Ready Shaders sample is a collection of Shader Graph shader assets that are ready to be used out of the box or modified to suit your needs. You can take them apart and learn from them, or just drop them directly into your project and use them as they are. The sample also includes a step-by-step tutorial for how to combine several of the shaders to create a forest stream environment. - -The sample content is broken into the following categories: +The Shader Graph Production Ready Shaders sample is a collection of Shader Graph shader assets that are ready to be used out of the box or modified to suit your needs. You can take them apart and learn from them, or just drop them directly into your project and use them as they are. The sample includes the Shader Graph versions of the HDRP and URP Lit shaders. It also includes a step-by-step tutorial for how to combine several of the shaders to create a forest stream environment. | Topic | Description | |:------|:--------------| diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Terrain.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Terrain.md index c6de4e6ec06..26ab4981b46 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Terrain.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-Terrain.md @@ -1,4 +1,4 @@ -# Terrain Shaders +# Terrain Shaders sample The Terrain Shaders sample shows you how to design your own terrain material solutions and customize them to fit your specific goals and performance budgets. Possibilities include high quality tile repetition break-up solutions, detail mapping, smooth blending with the distant material, parallax mapping, auto materials, triplanar projection, and more. diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders.md index e77ef30e74f..4bea29cf4bc 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders.md @@ -1,11 +1,10 @@ -# UGUI Shaders -![The Shader Graph UGUI Shaders: A collection of Shader Graph subgraphs that serve as building blocks for building user interface elements.](images/UIToolsSample.png) +# UGUI Shaders sample -The Shader Graph UGUI Shaders sample is a collection of Shader Graph subgraphs that serve as building blocks for building user interface elements. They speed up the process of building widgets, buttons, and backgrounds for the user interface of your project. Using these tools, you can build dynamic, procedural UI elements that don’t require any texture memory and scale correctly for any resolution screen. +The Shader Graph UGUI Shaders sample is a collection of Shader Graph subgraphs that you can use to build user interface elements. They speed up the process of building widgets, buttons, and backgrounds for the user interface of your project. With these tools, you can build dynamic, procedural UI elements that don’t require any texture memory and scale correctly for any resolution screen. In addition to the subgraphs, the sample also includes example buttons, indicators, and backgrounds built using the subgraphs. The examples show how the subgraphs function in context and help you learn how to use them. -We have two main objectives with this sample set: +This sample set covers two main objectives: - Demonstrate Shader Graph’s ability to create dynamic, resolution-independent user interface elements in a wide variety of shapes and styles. diff --git a/Packages/com.unity.shadergraph/Documentation~/ShaderGraph-Samples-Import.md b/Packages/com.unity.shadergraph/Documentation~/ShaderGraph-Samples-Import.md new file mode 100644 index 00000000000..e0b88cf4f3f --- /dev/null +++ b/Packages/com.unity.shadergraph/Documentation~/ShaderGraph-Samples-Import.md @@ -0,0 +1,15 @@ +# Import Shader Graph samples + +To import a Shader Graph sample to your project: + +1. In the main menu, go to **Window** > **Package Management** > **Package Manager**. + +1. Select **Shader Graph** from the list of packages. + +1. In the **Samples** section, select **Import** next to a sample. + +To open a sample, go to the `Assets/Samples/Shader Graph//` folder. + +## Additional resources + +* [Shader Graph samples](ShaderGraph-Samples.md) diff --git a/Packages/com.unity.shadergraph/Documentation~/ShaderGraph-Samples.md b/Packages/com.unity.shadergraph/Documentation~/ShaderGraph-Samples.md index 7dc00155b2d..0c722469884 100644 --- a/Packages/com.unity.shadergraph/Documentation~/ShaderGraph-Samples.md +++ b/Packages/com.unity.shadergraph/Documentation~/ShaderGraph-Samples.md @@ -1,62 +1,15 @@ # Shader Graph samples -## Description - -The Shader Graph package offers sample Assets, which you can download through **Package Manager**. When you import these samples, Unity places the files in your Project's Asset folder. The files contain examples that demonstrate how to use Shader Graph features. - -## Add samples - -To add samples to your project: - -1. In the main menu, go to **Window** > **Package Management** > **Package Manager**. - -1. Select **Shader Graph** from the list of packages. - -1. In the **Samples** section, select **Import** next to a sample. - -1. Open the sample assets from the `Assets/Samples/Shader Graph//` folder. - -## Available samples - -The following samples are currently available for Shader Graph. - -| Procedural Patterns | -|:--------------------| -|![A visual overview of Procedural Patterns](images/Patterns_Page.png) | -| This collection of Assets showcases various procedural techniques possible with Shader Graph. Use them directly in your Project, or edit them to create other procedural patterns. The patterns in this collection are: Bacteria, Brick, Dots, Grid, Herringbone, Hex Lattice, Houndstooth, Smooth Wave, Spiral, Stripes, Truchet, Whirl, Zig Zag. | - - -| Node Reference | -|:--------------------| -|![A visual overview of Node Reference](images/NodeReferenceSamples.png) | -| This set of Shader Graph assets provides reference material for the nodes available in the Shader Graph node library. Each graph contains a description for a specific node, examples of how it can be used, and useful tips. Some example assets also show a break-down of the math that the node is doing. You can use these samples along with the documentation to learn more about the behavior of individual nodes. | - -| [Feature Examples](Shader-Graph-Sample-Feature-Examples.md) | -|:--------------------| -|![A visual overview of Feature Examples](images/FeatureExamplesSample.png) | -| This is a collection of over 30 Shader Graph files. Each file demonstrates a specific shader technique such as angle blending, triplanar projection, parallax mapping, and custom lighting. While you won’t use these shaders directly in your project, you can use them to quickly learn and understand the various techniques, and recreate them into your own work. Each file contains notes that describe what the shader is doing, and most of the shaders are set up with the core functionality contained in a subgraph that’s easy to copy and paste directly into your own shader. The sample also has extensive documentation describing each of the samples to help you learn. - -| [Production Ready Shaders](Shader-Graph-Sample-Production-Ready.md) | -|:--------------------| -|![A visual example of Production Ready Shaders](images/ProductionReadySample.png) | -| The Shader Graph Production Ready Shaders sample is a collection of Shader Graph shader assets that are ready to be used out of the box or modified to suit your needs. You can take them apart and learn from them, or just drop them directly into your project and use them as they are. The sample includes the Shader Graph versions of the HDRP and URP Lit shaders. It also includes a step-by-step tutorial for how to combine several of the shaders to create a forest stream environment. - -| [UGUI Shaders](Shader-Graph-Sample-UGUI-Shaders.md) | -|:--------------------| -|![A visual example of UGUI Shaders](images/UIToolsSample.png) | -| The Shader Graph UGUI Shaders sample is a collection of Shader Graph subgraphs that you can use to build user interface elements. They speed up the process of building widgets, buttons, and backgrounds for the user interface of your project. With these tools, you can build dynamic, procedural UI elements that don’t require any texture memory and scale correctly for any resolution screen. In addition to the subgraphs, the sample also includes example buttons, indicators, and backgrounds built with the subgraphs. The examples show how the subgraphs function in context and help you learn how to use them. - -| Custom Material Property Drawers | -|:--------------------| -|![An example result of Custom Material Property Drawers in a material's Inspector](images/CustomMaterialPropertySample.png) | -| This sample contains an example of a Custom Material Property Drawer that allows using a Min/Max Slider to control a Vector2 x and y values, often used for range remapping. It comes with a documented Shader Graph example. | - -| [Custom Lighting](Shader-Graph-Sample-Custom-Lighting.md) | -|:--------------------| -|![A visual example of Custom Lighting](images/CustomLightingSample.png) | -| The Shader Graph Custom Lighting sample shows how you can create your own custom lighting model in Shader Graph and provides dozens of example templates, shaders, and subgraphs to help you get started with your own custom lighting. - -| [Terrain Shaders](Shader-Graph-Sample-Terrain-Shaders.md) | -|:--------------------| -|![A visual overview of Terrain Shaders](images/TerrainSample.png) | -| The Shader Graph Terrain Sample provides example shaders to learn from and subgraphs that you can use to build your own terrain shaders. Custom terrain shaders can use more advanced features like hexagon tile break-up, parallax occlusion mapping, or triplanar projection. Or you can use techniques like array texture sampling or alternate texture packing methods to make the shader cheaper to render than the default one. Whether you're making faster or more advanced terrain shaders, this sample will help you get the results you're looking for. | +The Shader Graph package offers many different samples that demonstrate how to use Shader Graph features in various contexts. + +| Topic | Description | +| :--- | :--- | +| [Import Shader Graph samples](ShaderGraph-Samples-Import.md) | Learn how to import the Shader Graph samples to your project. | +| [Procedural Patterns sample](Shader-Graph-Sample-Procedural-Patterns.md) | Learn how to generate patterns procedurally with Shader Graph. | +| [Node Reference sample](Shader-Graph-Sample-Node-Reference.md) | Learn in context about the nodes from the Shader Graph [node library](Node-Library.md). | +| [Feature Examples sample](Shader-Graph-Sample-Feature-Examples.md) | Learn about shader techniques such as angle blending, triplanar projection, parallax mapping, and custom lighting. | +| [Production Ready Shaders sample](Shader-Graph-Sample-Production-Ready.md) | Learn how to create production ready shader graphs that emulate terrain vegetation, rock details, water effects, weather effects, and other post-processing effects. | +| [UGUI Shaders sample](Shader-Graph-Sample-UGUI-Shaders.md) | Learn how to build user interface elements with Shader Graph. | +| [Custom Material Property Drawers sample](Shader-Graph-Sample-Custom-Material-Property-Drawers.md) | Learn how to set up a shader graph to display a property in the form of a min/max slider and add a help box in the material's Inspector UI. | +| [Custom Lighting sample](Shader-Graph-Sample-Custom-Lighting.md) | Learn how to create custom lighting models in Shader Graph. | +| [Terrain Shaders sample](Shader-Graph-Sample-Terrain.md) | Learn how to build terrain shaders with Shader Graph. | diff --git a/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md b/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md index 0d7951780ae..6fac9b7bfc4 100644 --- a/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md +++ b/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md @@ -332,6 +332,9 @@ * [Block Nodes](Block-Node.md) * [Built In Blocks](Built-In-Blocks.md) * [Samples](ShaderGraph-Samples.md) + * [Import Shader Graph samples](ShaderGraph-Samples-Import.md) + * [Procedural Patterns](Shader-Graph-Sample-Procedural-Patterns.md) + * [Node Reference](Shader-Graph-Sample-Node-Reference.md) * [Feature Examples](Shader-Graph-Sample-Feature-Examples.md) * [Production Ready Shaders](Shader-Graph-Sample-Production-Ready.md) * [Lit Shaders](Shader-Graph-Sample-Production-Ready-Lit.md) @@ -354,6 +357,7 @@ * [How to create a functioning button](Shader-Graph-Sample-UGUI-Shaders-How-tos-Button.md) * [How to make shapes that adapt to the aspect ratio of the UI element](Shader-Graph-Sample-UGUI-Shaders-How-tos-aspect-ratio.md) * [Notes on performance](Shader-Graph-Sample-UGUI-Shaders-Notes-on-performance.md) + * [Custom Material Property Drawers](Shader-Graph-Sample-Custom-Material-Property-Drawers.md) * [Custom Lighting](Shader-Graph-Sample-Custom-Lighting.md) * [Introduction to lighting model customization](Shader-Graph-Sample-Custom-Lighting-Introduction.md) * [Get started with the Custom Lighting sample](Shader-Graph-Sample-Custom-Lighting-Get-Started.md) diff --git a/Packages/com.unity.shadergraph/Documentation~/images/CustomLightingSample.png b/Packages/com.unity.shadergraph/Documentation~/images/CustomLightingSample.png deleted file mode 100644 index e93bad5b28f..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/CustomLightingSample.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/CustomMaterialPropertySample.png b/Packages/com.unity.shadergraph/Documentation~/images/CustomMaterialPropertySample.png deleted file mode 100644 index e7c464d8b2f..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/CustomMaterialPropertySample.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/FeatureExamplesSample.png b/Packages/com.unity.shadergraph/Documentation~/images/FeatureExamplesSample.png deleted file mode 100644 index b6f36a23cde..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/FeatureExamplesSample.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/Patterns_Page.png b/Packages/com.unity.shadergraph/Documentation~/images/Patterns_Page.png deleted file mode 100644 index 08f96da36ca..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/Patterns_Page.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/ProductionReadySample.png b/Packages/com.unity.shadergraph/Documentation~/images/ProductionReadySample.png deleted file mode 100644 index f0398ca9b45..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/ProductionReadySample.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/TerrainSample.png b/Packages/com.unity.shadergraph/Documentation~/images/TerrainSample.png deleted file mode 100644 index 9d64e775849..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/TerrainSample.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/UIToolsSample.png b/Packages/com.unity.shadergraph/Documentation~/images/UIToolsSample.png deleted file mode 100644 index 69dd1070535..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/UIToolsSample.png and /dev/null differ diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere.meta new file mode 100644 index 00000000000..3f3e129606d --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d29842589038e149ba1ffeb1b0f0637 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere.unity b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere.unity new file mode 100644 index 00000000000..500a477423a --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere.unity @@ -0,0 +1,5662 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &20744985 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 20744986} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &20744986 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 20744985} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 48} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 119766417} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &38817058 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 38817059} + - component: {fileID: 38817062} + - component: {fileID: 38817061} + - component: {fileID: 38817060} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &38817059 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 38817058} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1751710842} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &38817060 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 38817058} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &38817061 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 38817058} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &38817062 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 38817058} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &51177120 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 51177121} + - component: {fileID: 51177124} + - component: {fileID: 51177123} + - component: {fileID: 51177122} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &51177121 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51177120} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1673498670} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &51177122 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51177120} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &51177123 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51177120} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &51177124 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 51177120} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &69140481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 69140482} + m_Layer: 0 + m_Name: Camera / Rendering + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &69140482 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69140481} + serializedVersion: 2 + 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: 456064596} + - {fileID: 1220012488} + - {fileID: 2113215674} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &88990690 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 88990691} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &88990691 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 88990690} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 18} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2091792862} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &119766416 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 119766417} + - component: {fileID: 119766420} + - component: {fileID: 119766419} + - component: {fileID: 119766418} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &119766417 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 119766416} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 20744986} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &119766418 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 119766416} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &119766419 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 119766416} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &119766420 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 119766416} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &150132521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 150132522} + - component: {fileID: 150132525} + - component: {fileID: 150132524} + - component: {fileID: 150132523} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &150132522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150132521} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 300777359} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &150132523 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150132521} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &150132524 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150132521} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &150132525 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 150132521} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &224493314 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224493315} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &224493315 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 224493314} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 52} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1453444777} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &228281529 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 228281530} + - component: {fileID: 228281533} + - component: {fileID: 228281532} + - component: {fileID: 228281531} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &228281530 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228281529} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1428392244} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &228281531 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228281529} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &228281532 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228281529} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &228281533 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228281529} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &239415420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 239415421} + - component: {fileID: 239415424} + - component: {fileID: 239415423} + - component: {fileID: 239415422} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &239415421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239415420} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 989064773} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &239415422 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239415420} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &239415423 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239415420} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &239415424 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239415420} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &264109529 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 264109530} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &264109530 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 264109529} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 16} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 608823517} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &300777358 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 300777359} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &300777359 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 300777358} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 60} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 150132522} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &341159407 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 341159408} + - component: {fileID: 341159411} + - component: {fileID: 341159410} + - component: {fileID: 341159409} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &341159408 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 341159407} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1923184502} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &341159409 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 341159407} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &341159410 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 341159407} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &341159411 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 341159407} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &456064594 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 69140482} + m_Modifications: + - target: {fileID: 1132393308280272, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_Name + value: HDRP_Test_Camera + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalPosition.z + value: -10 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: field of view + value: 60 + objectReference: {fileID: 0} + - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: far clip plane + value: 1000 + objectReference: {fileID: 0} + - target: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: near clip plane + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: dithering + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: m_Version + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: xrRendering + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: antialiasing + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: clearColorMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: taaSharpenStrength + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: taaHistorySharpening + value: 0.35 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: volumeLayerMask.m_Bits + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114777190906822814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: m_RenderingPathCustomFrameSettings.bitDatas.data1 + value: 70005818916701 + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: waitFrames + value: 20 + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: renderPipelineAsset + value: + objectReference: {fileID: 11400000, guid: 1ae550b67e59833489777f00631a9e97, + type: 2} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: ImageComparisonSettings.TargetWidth + value: 400 + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: ImageComparisonSettings.TargetHeight + value: 400 + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: ImageComparisonSettings.UseBackBuffer + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: doBeforeTest.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: doBeforeTest.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: doBeforeTest.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 2113215673} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: doBeforeTest.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: doBeforeTest.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ShowCascades + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: doBeforeTest.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: EnableCascadeDisplay, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: doBeforeTest.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 114995348509370400, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: doBeforeTest.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 580412863073167814, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + propertyPath: renderer + value: + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 580412863073167814, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + m_RemovedGameObjects: + - {fileID: 6002938546587368868, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c07ace9ab142ca9469fa377877c2f1e7, type: 3} +--- !u!4 &456064596 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4209882255362944, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + m_PrefabInstance: {fileID: 456064594} + m_PrefabAsset: {fileID: 0} +--- !u!20 &456064597 stripped +Camera: + m_CorrespondingSourceObject: {fileID: 20109210616973140, guid: c07ace9ab142ca9469fa377877c2f1e7, + type: 3} + m_PrefabInstance: {fileID: 456064594} + m_PrefabAsset: {fileID: 0} +--- !u!1 &462454082 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 462454083} + - component: {fileID: 462454086} + - component: {fileID: 462454085} + - component: {fileID: 462454084} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &462454083 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 462454082} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1043607995} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &462454084 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 462454082} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &462454085 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 462454082} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &462454086 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 462454082} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &570395420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570395421} + - component: {fileID: 570395424} + - component: {fileID: 570395423} + - component: {fileID: 570395422} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &570395421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570395420} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1366389718} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &570395422 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570395420} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &570395423 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570395420} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &570395424 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570395420} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &608823516 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 608823517} + - component: {fileID: 608823520} + - component: {fileID: 608823519} + - component: {fileID: 608823518} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &608823517 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608823516} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 264109530} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &608823518 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608823516} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &608823519 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608823516} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &608823520 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608823516} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &632143030 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 632143031} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &632143031 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 632143030} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 40} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1569881054} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &638641849 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 638641850} + - component: {fileID: 638641853} + - component: {fileID: 638641852} + - component: {fileID: 638641851} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &638641850 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638641849} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1160633923} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &638641851 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638641849} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &638641852 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638641849} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &638641853 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 638641849} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &646490827 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 646490828} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &646490828 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 646490827} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 24} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1127414515} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &679448010 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 679448011} + - component: {fileID: 679448014} + - component: {fileID: 679448013} + - component: {fileID: 679448012} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &679448011 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 679448010} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 937315857} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &679448012 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 679448010} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &679448013 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 679448010} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &679448014 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 679448010} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &751244453 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 751244454} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &751244454 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 751244453} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 4} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1764518239} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &798448436 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 798448437} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &798448437 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 798448436} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 54} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1714695377} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &815336386 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 815336387} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &815336387 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 815336386} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 44} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1436034604} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &832393438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 832393439} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &832393439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832393438} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 56} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1274431266} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &937315856 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 937315857} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &937315857 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 937315856} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 8} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 679448011} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &989064772 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 989064773} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &989064773 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 989064772} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 38} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 239415421} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1016706979 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1016706983} + - component: {fileID: 1016706982} + - component: {fileID: 1016706981} + - component: {fileID: 1016706980} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!64 &1016706980 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016706979} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1016706981 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016706979} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 73c176f402d2c2f4d929aa5da7585d17, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1016706982 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016706979} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1016706983 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1016706979} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1227985667} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1022458992 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1022458993} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1022458993 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1022458992} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 36} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1961961045} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1038721780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1038721781} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1038721781 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1038721780} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 6} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1674432287} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1043607994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1043607995} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1043607995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043607994} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 34} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 462454083} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1047811025 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1047811026} + - component: {fileID: 1047811029} + - component: {fileID: 1047811028} + - component: {fileID: 1047811027} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1047811026 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1047811025} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1509973006} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1047811027 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1047811025} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1047811028 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1047811025} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1047811029 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1047811025} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1076233658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1076233659} + m_Layer: 0 + m_Name: Cubes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1076233659 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1076233658} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5, y: 0, z: -20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1332462551} + - {fileID: 1366389718} + - {fileID: 751244454} + - {fileID: 1038721781} + - {fileID: 937315857} + - {fileID: 1285704473} + - {fileID: 1673498670} + - {fileID: 1751710842} + - {fileID: 264109530} + - {fileID: 88990691} + - {fileID: 1160633923} + - {fileID: 1923184502} + - {fileID: 646490828} + - {fileID: 1187257051} + - {fileID: 1801574345} + - {fileID: 1936443708} + - {fileID: 1957664084} + - {fileID: 1043607995} + - {fileID: 1022458993} + - {fileID: 989064773} + - {fileID: 632143031} + - {fileID: 1236247998} + - {fileID: 815336387} + - {fileID: 1229659504} + - {fileID: 20744986} + - {fileID: 1605315652} + - {fileID: 224493315} + - {fileID: 798448437} + - {fileID: 832393439} + - {fileID: 1428392244} + - {fileID: 300777359} + - {fileID: 1509973006} + m_Father: {fileID: 1227985667} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1127414514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1127414515} + - component: {fileID: 1127414518} + - component: {fileID: 1127414517} + - component: {fileID: 1127414516} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1127414515 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127414514} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 646490828} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1127414516 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127414514} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1127414517 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127414514} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1127414518 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127414514} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1133147054 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1133147055} + - component: {fileID: 1133147058} + - component: {fileID: 1133147057} + - component: {fileID: 1133147056} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1133147055 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1133147054} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1957664084} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1133147056 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1133147054} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1133147057 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1133147054} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1133147058 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1133147054} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1144784660 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1144784663} + - component: {fileID: 1144784662} + - component: {fileID: 1144784661} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1144784661 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1144784660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} + m_Name: + m_EditorClassIdentifier: + m_PointlightHDType: 0 + m_SpotLightShape: 0 + m_AreaLightShape: 0 + m_EnableSpotReflector: 0 + m_LightUnit: 2 + m_LuxAtDistance: 1 + m_Intensity: 3.1415927 + m_InnerSpotPercent: -1 + m_ShapeWidth: -1 + m_ShapeHeight: -1 + m_AspectRatio: 1 + m_ShapeRadius: -1 + m_Version: 15 + m_ObsoleteShadowResolutionTier: 1 + m_ObsoleteUseShadowQualitySettings: 0 + m_ObsoleteCustomShadowResolution: 1024 + m_ObsoleteContactShadows: 0 + m_SpotIESCutoffPercent: 100 + m_LightDimmer: 1 + m_VolumetricDimmer: 1 + m_FadeDistance: 10000 + m_VolumetricFadeDistance: 10000 + m_AffectDiffuse: 1 + m_AffectSpecular: 1 + m_NonLightmappedOnly: 0 + m_SoftnessScale: 1 + m_UseCustomSpotLightShadowCone: 0 + m_CustomSpotLightShadowCone: 30 + m_MaxSmoothness: 0.99 + m_ApplyRangeAttenuation: 1 + m_DisplayAreaLightEmissiveMesh: 0 + m_AreaLightCookie: {fileID: 0} + m_IESPoint: {fileID: 0} + m_IESSpot: {fileID: 0} + m_IncludeForRayTracing: 1 + m_IncludeForPathTracing: 1 + m_AreaLightShadowCone: 120 + m_UseScreenSpaceShadows: 0 + m_InteractsWithSky: 1 + m_AngularDiameter: 0 + diameterMultiplerMode: 0 + diameterMultiplier: 1 + diameterOverride: 0.5 + celestialBodyShadingSource: 1 + sunLightOverride: {fileID: 0} + sunColor: {r: 1, g: 1, b: 1, a: 1} + sunIntensity: 130000 + moonPhase: 0.2 + moonPhaseRotation: 0 + earthshine: 1 + flareSize: 2 + flareTint: {r: 1, g: 1, b: 1, a: 1} + flareFalloff: 4 + flareMultiplier: 1 + surfaceTexture: {fileID: 0} + surfaceTint: {r: 1, g: 1, b: 1, a: 1} + m_Distance: 150000000 + m_UseRayTracedShadows: 0 + m_NumRayTracingSamples: 4 + m_FilterTracedShadow: 1 + m_FilterSizeTraced: 16 + m_SunLightConeAngle: 0.5 + m_SemiTransparentShadow: 0 + m_ColorShadow: 1 + m_DistanceBasedFiltering: 0 + m_EvsmExponent: 15 + m_EvsmLightLeakBias: 0 + m_EvsmVarianceBias: 0.00001 + m_EvsmBlurPasses: 0 + m_LightlayersMask: 1 + m_LinkShadowLayers: 1 + m_ShadowNearPlane: 0.1 + m_BlockerSampleCount: 24 + m_FilterSampleCount: 16 + m_MinFilterSize: 0.01 + m_DirLightPCSSBlockerSampleCount: 24 + m_DirLightPCSSFilterSampleCount: 16 + m_DirLightPCSSMaxPenumbraSize: 0.56 + m_DirLightPCSSMaxSamplingDistance: 0.5 + m_DirLightPCSSMinFilterSizeTexels: 1.5 + m_DirLightPCSSMinFilterMaxAngularDiameter: 10 + m_DirLightPCSSBlockerSearchAngularDiameter: 12 + m_DirLightPCSSBlockerSamplingClumpExponent: 2 + m_KernelSize: 5 + m_LightAngle: 1 + m_MaxDepthBias: 0.001 + m_ShadowResolution: + m_Override: 1024 + m_UseOverride: 1 + m_Level: 1 + m_ShadowDimmer: 1 + m_VolumetricShadowDimmer: 1 + m_ShadowFadeDistance: 10000 + m_UseContactShadow: + m_Override: 0 + m_UseOverride: 1 + m_Level: 0 + m_RayTracedContactShadow: 0 + m_ShadowTint: {r: 0, g: 0, b: 0, a: 1} + m_PenumbraTint: 0 + m_NormalBias: 0.75 + m_SlopeBias: 0.5 + m_ShadowUpdateMode: 0 + m_AlwaysDrawDynamicShadows: 0 + m_UpdateShadowOnLightMovement: 0 + m_CachedShadowTranslationThreshold: 0.01 + m_CachedShadowAngularThreshold: 0.5 + m_BarnDoorAngle: 90 + m_BarnDoorLength: 0.05 + m_preserveCachedShadow: 0 + m_OnDemandShadowRenderOnPlacement: 1 + m_ShadowCascadeRatios: + - 0.05 + - 0.2 + - 0.3 + m_ShadowCascadeBorders: + - 0.2 + - 0.2 + - 0.2 + - 0.2 + m_ShadowAlgorithm: 0 + m_ShadowVariant: 0 + m_ShadowPrecision: 0 + useOldInspector: 0 + useVolumetric: 1 + featuresFoldout: 1 + m_AreaLightEmissiveMeshShadowCastingMode: 0 + m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0 + m_AreaLightEmissiveMeshLayer: -1 +--- !u!108 &1144784662 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1144784660} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 0.9936724, b: 0.9764151, a: 1} + m_Intensity: 3.1415927 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 0 + m_CookieSize2D: {x: 0.5, y: 0.5} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 2 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 2 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 0 +--- !u!4 &1144784663 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1144784660} + serializedVersion: 2 + m_LocalRotation: {x: 0.38268343, y: -0, z: -0, w: 0.92387956} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1562456231} + m_LocalEulerAnglesHint: {x: 45, y: 0, z: 0} +--- !u!1 &1160633922 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1160633923} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1160633923 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1160633922} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 20} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 638641850} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1187257050 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1187257051} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1187257051 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1187257050} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 26} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1808479370} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1220012486 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1220012488} + - component: {fileID: 1220012487} + m_Layer: 0 + m_Name: SetupProjectionMatrix + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1220012487 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1220012486} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7ff19706ab489924ab6a2849f80a5099, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::SetupProjectionMatrix + m_camera: {fileID: 456064597} + m_projectionMatrix: + e00: 1.779739 + e01: 0 + e02: -0.6530213 + e03: 0 + e10: 0 + e11: 3.112113 + e12: 0.1979844 + e13: 0 + e20: 0 + e21: 0 + e22: -1.000131 + e23: -0.3271114 + e30: 0 + e31: 0 + e32: -1 + e33: 0 +--- !u!4 &1220012488 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1220012486} + serializedVersion: 2 + 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: 69140482} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1227985666 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1227985667} + m_Layer: 0 + m_Name: Geometry + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1227985667 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227985666} + serializedVersion: 2 + 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: 1016706983} + - {fileID: 1076233659} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1229659503 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1229659504} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1229659504 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1229659503} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 46} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1872816621} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1236247997 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1236247998} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1236247998 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1236247997} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 42} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1478388661} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1257541842 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1257541843} + - component: {fileID: 1257541846} + - component: {fileID: 1257541845} + - component: {fileID: 1257541844} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1257541843 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1257541842} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1605315652} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1257541844 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1257541842} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1257541845 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1257541842} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1257541846 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1257541842} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1274431265 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1274431266} + - component: {fileID: 1274431269} + - component: {fileID: 1274431268} + - component: {fileID: 1274431267} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1274431266 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274431265} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 832393439} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1274431267 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274431265} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1274431268 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274431265} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1274431269 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1274431265} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1285704472 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1285704473} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1285704473 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1285704472} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1669789734} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1332462550 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1332462551} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1332462551 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1332462550} + serializedVersion: 2 + 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: 1537050173} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1366389717 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1366389718} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1366389718 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366389717} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 570395421} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1379445293 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1379445295} + - component: {fileID: 1379445294} + m_Layer: 0 + m_Name: Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1379445294 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1379445293} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IsGlobal: 1 + priority: 0 + blendDistance: 0 + weight: 1 + sharedProfile: {fileID: 11400000, guid: e8e60b359687bb64bb70f919f68e0e8f, type: 2} +--- !u!4 &1379445295 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1379445293} + serializedVersion: 2 + 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: 1562456231} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1428392243 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1428392244} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1428392244 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1428392243} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 58} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 228281530} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1436034603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1436034604} + - component: {fileID: 1436034607} + - component: {fileID: 1436034606} + - component: {fileID: 1436034605} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1436034604 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1436034603} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 815336387} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1436034605 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1436034603} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1436034606 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1436034603} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1436034607 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1436034603} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1453444776 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1453444777} + - component: {fileID: 1453444780} + - component: {fileID: 1453444779} + - component: {fileID: 1453444778} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1453444777 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1453444776} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 224493315} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1453444778 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1453444776} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1453444779 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1453444776} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1453444780 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1453444776} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1478388660 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1478388661} + - component: {fileID: 1478388664} + - component: {fileID: 1478388663} + - component: {fileID: 1478388662} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1478388661 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1478388660} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1236247998} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1478388662 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1478388660} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1478388663 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1478388660} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1478388664 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1478388660} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1509973005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1509973006} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1509973006 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1509973005} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 62} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1047811026} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1537050172 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1537050173} + - component: {fileID: 1537050176} + - component: {fileID: 1537050175} + - component: {fileID: 1537050174} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1537050173 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537050172} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1332462551} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1537050174 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537050172} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1537050175 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537050172} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1537050176 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1537050172} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1562456230 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1562456231} + m_Layer: 0 + m_Name: Environment + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1562456231 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1562456230} + serializedVersion: 2 + 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: 1144784663} + - {fileID: 1379445295} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1569881053 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1569881054} + - component: {fileID: 1569881057} + - component: {fileID: 1569881056} + - component: {fileID: 1569881055} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1569881054 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569881053} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 632143031} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1569881055 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569881053} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1569881056 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569881053} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1569881057 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569881053} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1605315651 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1605315652} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1605315652 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1605315651} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 50} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1257541843} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1668076539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1668076540} + - component: {fileID: 1668076543} + - component: {fileID: 1668076542} + - component: {fileID: 1668076541} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1668076540 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1668076539} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1801574345} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1668076541 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1668076539} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1668076542 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1668076539} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1668076543 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1668076539} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1669789733 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1669789734} + - component: {fileID: 1669789737} + - component: {fileID: 1669789736} + - component: {fileID: 1669789735} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1669789734 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669789733} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1285704473} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1669789735 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669789733} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1669789736 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669789733} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1669789737 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1669789733} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1673498669 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1673498670} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1673498670 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1673498669} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 12} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 51177121} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1674432286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1674432287} + - component: {fileID: 1674432290} + - component: {fileID: 1674432289} + - component: {fileID: 1674432288} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1674432287 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1674432286} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1038721781} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1674432288 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1674432286} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1674432289 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1674432286} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1674432290 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1674432286} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1714695376 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1714695377} + - component: {fileID: 1714695380} + - component: {fileID: 1714695379} + - component: {fileID: 1714695378} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1714695377 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1714695376} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 798448437} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1714695378 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1714695376} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1714695379 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1714695376} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1714695380 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1714695376} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1751710841 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1751710842} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1751710842 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751710841} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 14} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 38817059} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1764518238 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1764518239} + - component: {fileID: 1764518242} + - component: {fileID: 1764518241} + - component: {fileID: 1764518240} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1764518239 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1764518238} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 751244454} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1764518240 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1764518238} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1764518241 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1764518238} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1764518242 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1764518238} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1801574344 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1801574345} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1801574345 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1801574344} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 28} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1668076540} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1808479369 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1808479370} + - component: {fileID: 1808479373} + - component: {fileID: 1808479372} + - component: {fileID: 1808479371} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1808479370 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808479369} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1187257051} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1808479371 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808479369} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1808479372 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808479369} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1808479373 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808479369} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1817021673 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1817021674} + - component: {fileID: 1817021677} + - component: {fileID: 1817021676} + - component: {fileID: 1817021675} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1817021674 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817021673} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1936443708} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1817021675 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817021673} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1817021676 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817021673} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1817021677 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1817021673} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1872816620 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1872816621} + - component: {fileID: 1872816624} + - component: {fileID: 1872816623} + - component: {fileID: 1872816622} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1872816621 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872816620} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1229659504} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1872816622 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872816620} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1872816623 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872816620} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1872816624 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1872816620} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1923184501 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1923184502} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1923184502 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1923184501} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 22} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 341159408} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1936443707 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1936443708} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1936443708 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1936443707} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 30} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1817021674} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1957664083 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1957664084} + m_Layer: 0 + m_Name: Cube(Clone) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1957664084 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1957664083} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 32} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1133147055} + m_Father: {fileID: 1076233659} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1961961044 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1961961045} + - component: {fileID: 1961961048} + - component: {fileID: 1961961047} + - component: {fileID: 1961961046} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1961961045 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1961961044} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1022458993} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1961961046 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1961961044} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1961961047 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1961961044} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1961961048 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1961961044} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2013410473 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2013410475} + - component: {fileID: 2013410474} + m_Layer: 0 + m_Name: StaticLightingSky + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2013410474 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2013410473} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 441482e8936e35048a1dffac814e3ef8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Profile: {fileID: 11400000, guid: 8ba92e2dd7f884a0f88b98fa2d235fe7, type: 2} + m_StaticLightingSkyUniqueID: 4 + m_StaticLightingCloudsUniqueID: 0 + m_StaticLightingVolumetricClouds: 0 + bounces: 1 +--- !u!4 &2013410475 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2013410473} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2091792861 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2091792862} + - component: {fileID: 2091792865} + - component: {fileID: 2091792864} + - component: {fileID: 2091792863} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2091792862 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091792861} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 5, z: 0} + m_LocalScale: {x: 1, y: 10, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 88990691} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &2091792863 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091792861} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &2091792864 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091792861} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a0db68e08b1cc4446b0afb1290fdec75, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2091792865 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2091792861} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2113215672 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2113215674} + - component: {fileID: 2113215673} + m_Layer: 0 + m_Name: DisplayCascadesScript + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2113215673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2113215672} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5bbca06831abb6248aaa7bb2d8515678, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &2113215674 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2113215672} + serializedVersion: 2 + 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: 69140482} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 2013410475} + - {fileID: 1227985667} + - {fileID: 1562456231} + - {fileID: 69140482} diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere.unity.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere.unity.meta new file mode 100644 index 00000000000..e0af08b7fec --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8124e5870f4fd4c779e7a5f994e84ad1 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_ConservativeEnclosingSphereHDRPAsset.asset b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_ConservativeEnclosingSphereHDRPAsset.asset new file mode 100644 index 00000000000..36385cc2b3b --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_ConservativeEnclosingSphereHDRPAsset.asset @@ -0,0 +1,560 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cf1dab834d4ec34195b920ea7bbf9ec, type: 3} + m_Name: 2326_ConservativeEnclosingSphereHDRPAsset + m_EditorClassIdentifier: Unity.RenderPipelines.HighDefinition.Runtime::UnityEngine.Rendering.HighDefinition.HDRenderPipelineAsset + m_Version: 26 + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteBakedOrCustomReflectionFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteRealtimeReflectionFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 + m_ObsoleteDefaultVolumeProfile: {fileID: 0} + m_ObsoleteDefaultLookDevProfile: {fileID: 0} + m_ObsoleteFrameSettingsMovedToDefaultSettings: + bitDatas: + data1: 0 + data2: 0 + lodBias: 0 + lodBiasMode: 0 + lodBiasQualityLevel: 0 + maximumLODLevel: 0 + maximumLODLevelMode: 0 + maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 0 + sssCustomDownsampleSteps: 0 + msaaMode: 0 + materialQuality: 0 + m_ObsoleteBakedOrCustomReflectionFrameSettingsMovedToDefaultSettings: + bitDatas: + data1: 0 + data2: 0 + lodBias: 0 + lodBiasMode: 0 + lodBiasQualityLevel: 0 + maximumLODLevel: 0 + maximumLODLevelMode: 0 + maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 0 + sssCustomDownsampleSteps: 0 + msaaMode: 0 + materialQuality: 0 + m_ObsoleteRealtimeReflectionFrameSettingsMovedToDefaultSettings: + bitDatas: + data1: 0 + data2: 0 + lodBias: 0 + lodBiasMode: 0 + lodBiasQualityLevel: 0 + maximumLODLevel: 0 + maximumLODLevelMode: 0 + maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 0 + sssCustomDownsampleSteps: 0 + msaaMode: 0 + materialQuality: 0 + m_ObsoleteBeforeTransparentCustomPostProcesses: [] + m_ObsoleteBeforePostProcessCustomPostProcesses: [] + m_ObsoleteAfterPostProcessCustomPostProcesses: [] + m_ObsoleteBeforeTAACustomPostProcesses: [] + m_ObsoleteShaderVariantLogLevel: 0 + m_ObsoleteLensAttenuation: 0 + m_ObsoleteDiffusionProfileSettingsList: [] + m_PrefilterUseLegacyLightmaps: 0 + m_PrefilterUseLightmapBicubicSampling: 0 + m_ShouldUseConservativeEnclosingSphere: 1 + m_RenderPipelineSettings: + supportShadowMask: 1 + supportSSR: 0 + supportSSRTransparent: 0 + supportSSAO: 1 + supportSSGI: 0 + supportSubsurfaceScattering: 1 + subsurfaceScatteringAttenuation: 1 + sssSampleBudget: + m_Values: 140000002800000050000000 + m_SchemaId: + m_Id: With3Levels + sssDownsampleSteps: + m_Values: 000000000000000000000000 + m_SchemaId: + m_Id: With3Levels + supportVolumetrics: 1 + supportVolumetricClouds: 0 + supportLightLayers: 0 + renderingLayerMaskBuffer: 0 + supportWater: 0 + waterSimulationResolution: 128 + supportWaterExclusion: 1 + supportWaterHorizontalDeformation: 0 + supportWaterDecals: 1 + waterDecalAtlasSize: 1024 + maximumWaterDecalCount: 48 + waterScriptInteractionsMode: 0 + waterFullCPUSimulation: 0 + waterCausticsMeshResolution: 256 + supportComputeThickness: 0 + computeThicknessResolution: 1 + computeThicknessLayerMask: + serializedVersion: 2 + m_Bits: 0 + supportDistortion: 1 + supportTransparentBackface: 1 + supportTransparentDepthPrepass: 1 + supportTransparentDepthPostpass: 1 + colorBufferFormat: 74 + depthBufferFormat: 0 + supportCustomPass: 1 + supportVariableRateShading: 1 + customBufferFormat: 8 + supportedLitShaderMode: 2 + planarReflectionResolution: + m_Values: 000100000004000000080000 + m_SchemaId: + m_Id: With3Levels + cubeReflectionResolution: + m_Values: 800000000001000000020000 + m_SchemaId: + m_Id: With3Levels + supportDecals: 1 + supportDecalLayers: 0 + supportSurfaceGradient: 1 + decalNormalBufferHP: 0 + supportHighQualityLineRendering: 0 + highQualityLineRenderingMemoryBudget: 128 + msaaSampleCount: 1 + supportMotionVectors: 1 + supportScreenSpaceLensFlare: 1 + supportDataDrivenLensFlare: 1 + supportDitheringCrossFade: 0 + supportRuntimeAOVAPI: 0 + supportTerrainHole: 0 + lightProbeSystem: 1 + oldLightProbeSystem: 0 + probeVolumeMemoryBudget: 1024 + supportProbeVolumeGPUStreaming: 0 + supportProbeVolumeDiskStreaming: 0 + probeVolumeSHBands: 1 + supportProbeVolumeScenarios: 0 + supportProbeVolumeScenarioBlending: 1 + probeVolumeBlendingMemoryBudget: 128 + supportRayTracing: 0 + supportVFXRayTracing: 0 + supportedRayTracingMode: 3 + lightLoopSettings: + cookieAtlasSize: 2048 + cookieFormat: 74 + cookieAtlasLastValidMip: 0 + cookieTexArraySize: 1 + planarReflectionAtlasSize: 0 + reflectionProbeCacheSize: 0 + reflectionCubemapSize: 0 + maxEnvLightsOnScreen: 0 + reflectionCacheCompressed: 0 + reflectionProbeFormat: 74 + reflectionProbeTexCacheSize: 4096 + reflectionProbeTexLastValidCubeMip: 3 + reflectionProbeTexLastValidPlanarMip: 0 + reflectionProbeDecreaseResToFit: 1 + skyReflectionSize: 256 + skyLightingOverrideLayerMask: + serializedVersion: 2 + m_Bits: 0 + supportFabricConvolution: 0 + maxDirectionalLightsOnScreen: 16 + maxPunctualLightsOnScreen: 512 + maxAreaLightsOnScreen: 64 + maxCubeReflectionOnScreen: 32 + maxPlanarReflectionOnScreen: 8 + maxDecalsOnScreen: 512 + maxLightsPerClusterCell: 8 + maxLocalVolumetricFogSize: 0 + maxLocalVolumetricFogOnScreen: 256 + hdShadowInitParams: + maxShadowRequests: 128 + directionalShadowsDepthBits: 32 + punctualShadowFilteringQuality: 1 + directionalShadowFilteringQuality: 1 + areaShadowFilteringQuality: 0 + punctualLightShadowAtlas: + shadowAtlasResolution: 4096 + shadowAtlasDepthBits: 32 + useDynamicViewportRescale: 1 + areaLightShadowAtlas: + shadowAtlasResolution: 4096 + shadowAtlasDepthBits: 32 + useDynamicViewportRescale: 1 + cachedPunctualLightShadowAtlas: 2048 + cachedAreaLightShadowAtlas: 1024 + allowDirectionalMixedCachedShadows: 0 + shadowResolutionDirectional: + m_Values: 00010000000200000004000000080000 + m_SchemaId: + m_Id: With4Levels + shadowResolutionPunctual: + m_Values: 00010000000200000004000000080000 + m_SchemaId: + m_Id: With4Levels + shadowResolutionArea: + m_Values: 00010000000200000004000000080000 + m_SchemaId: + m_Id: With4Levels + maxDirectionalShadowMapResolution: 2048 + maxPunctualShadowMapResolution: 2048 + maxAreaShadowMapResolution: 2048 + supportScreenSpaceShadows: 0 + supportContactShadows: 1 + maxScreenSpaceShadowSlots: 4 + screenSpaceShadowBufferFormat: 48 + decalSettings: + drawDistance: 1000 + atlasWidth: 4096 + atlasHeight: 4096 + transparentTextureResolution: + m_Values: 000100000002000000040000 + m_SchemaId: + m_Id: With3Levels + perChannelMask: 0 + postProcessSettings: + m_LutSize: 32 + lutFormat: 48 + bufferFormat: 74 + dynamicResolutionSettings: + enabled: 0 + useMipBias: 0 + advancedUpscalersByPriority: + advancedUpscalerNames: + - STP + DLSSPerfQualitySetting: 0 + DLSSInjectionPoint: 0 + TAAUInjectionPoint: 0 + STPInjectionPoint: 0 + defaultInjectionPoint: 2 + DLSSUseOptimalSettings: 1 + DLSSSharpness: 0.5 + DLSSRenderPresetForQuality: 0 + DLSSRenderPresetForBalanced: 0 + DLSSRenderPresetForPerformance: 0 + DLSSRenderPresetForUltraPerformance: 0 + DLSSRenderPresetForDLAA: 0 + FSR2EnableSharpness: 0 + FSR2Sharpness: 0 + FSR2UseOptimalSettings: 0 + FSR2QualitySetting: 0 + FSR2InjectionPoint: 0 + fsrOverrideSharpness: 0 + fsrSharpness: 0.92 + maxPercentage: 100 + minPercentage: 100 + dynResType: 1 + upsampleFilter: 1 + forceResolution: 0 + forcedPercentage: 100 + lowResTransparencyMinimumThreshold: 0 + rayTracingHalfResThreshold: 50 + lowResSSGIMinimumThreshold: 0 + lowResVolumetricCloudsMinimumThreshold: 50 + enableDLSS: 0 + lowresTransparentSettings: + enabled: 1 + checkerboardDepthBuffer: 1 + upsampleType: 1 + xrSettings: + singlePass: 1 + occlusionMesh: 1 + cameraJitter: 0 + allowMotionBlur: 0 + postProcessQualitySettings: + NearBlurSampleCount: 030000000500000008000000 + NearBlurMaxRadius: + - 2 + - 4 + - 7 + FarBlurSampleCount: 04000000070000000e000000 + FarBlurMaxRadius: + - 5 + - 8 + - 13 + DoFResolution: 040000000200000001000000 + DoFHighQualityFiltering: 000101 + DoFPhysicallyBased: 000000 + AdaptiveSamplingWeight: + - 0.5 + - 0.75 + - 2 + LimitManualRangeNearBlur: 000000 + MotionBlurSampleCount: 04000000080000000c000000 + BloomRes: 040000000200000002000000 + BloomHighQualityFiltering: 000101 + BloomHighQualityPrefiltering: 000001 + ChromaticAberrationMaxSamples: 03000000060000000c000000 + lightSettings: + useContactShadow: + m_Values: 000001 + m_SchemaId: + m_Id: With3Levels + maximumLODLevel: + m_Values: 000000000000000000000000 + m_SchemaId: + m_Id: With3Levels + lodBias: + m_Values: + - 1 + - 1 + - 1 + m_SchemaId: + m_Id: With3Levels + lightingQualitySettings: + AOStepCount: 040000000600000010000000 + AOFullRes: 000001 + AOMaximumRadiusPixels: 200000002800000050000000 + AOBilateralUpsample: 000101 + AODirectionCount: 010000000200000004000000 + ContactShadowSampleCount: 060000000a00000010000000 + SSRMaxRaySteps: 100000002000000040000000 + SSGIRaySteps: 200000004000000080000000 + SSGIDenoise: 010101 + SSGIHalfResDenoise: 010000 + SSGIDenoiserRadius: + - 0.75 + - 0.5 + - 0.5 + SSGISecondDenoise: 010101 + RTAORayLength: + - 0.5 + - 3 + - 20 + RTAOSampleCount: 010000000200000008000000 + RTAODenoise: 010101 + RTAODenoiserRadius: + - 0.25 + - 0.5 + - 0.65 + RTGIRayLength: + - 50 + - 50 + - 50 + RTGIFullResolution: 000001 + RTGIRaySteps: 200000003000000040000000 + RTGIDenoise: 010101 + RTGIHalfResDenoise: 010000 + RTGIDenoiserRadius: + - 1 + - 1 + - 1 + RTGISecondDenoise: 010101 + RTRMinSmoothness: + - 0.6 + - 0.4 + - 0 + RTRSmoothnessFadeStart: + - 0.7 + - 0.5 + - 0 + RTRRayLength: + - 50 + - 50 + - 50 + RTRFullResolution: 000001 + RTRRayMaxIterations: 200000003000000040000000 + RTRDenoise: 010101 + RTRDenoiserRadiusDimmer: + - 0.75 + - 0.75 + - 1 + RTRDenoiserAntiFlicker: + - 1 + - 1 + - 1 + Fog_ControlMode: 000000000000000000000000 + Fog_Budget: + - 0.166 + - 0.33 + - 0.666 + Fog_DepthRatio: + - 0.666 + - 0.666 + - 0.5 + gpuResidentDrawerSettings: + mode: 0 + smallMeshScreenPercentage: 0 + enableOcclusionCullingInCameras: 0 + useDepthPrepassForOccluders: 1 + m_ObsoleteLightLayerName0: + m_ObsoleteLightLayerName1: + m_ObsoleteLightLayerName2: + m_ObsoleteLightLayerName3: + m_ObsoleteLightLayerName4: + m_ObsoleteLightLayerName5: + m_ObsoleteLightLayerName6: + m_ObsoleteLightLayerName7: + m_ObsoleteDecalLayerName0: + m_ObsoleteDecalLayerName1: + m_ObsoleteDecalLayerName2: + m_ObsoleteDecalLayerName3: + m_ObsoleteDecalLayerName4: + m_ObsoleteDecalLayerName5: + m_ObsoleteDecalLayerName6: + m_ObsoleteDecalLayerName7: + m_ObsoleteSupportRuntimeDebugDisplay: 0 + allowShaderVariantStripping: 1 + enableSRPBatcher: 1 + availableMaterialQualityLevels: -1 + m_DefaultMaterialQualityLevel: 4 + diffusionProfileSettings: {fileID: 0} + m_VolumeProfile: {fileID: 0} + virtualTexturingSettings: + streamingCpuCacheSizeInMegaBytes: 256 + streamingMipPreloadTexturesPerFrame: 0 + streamingPreloadMipCount: 1 + streamingGpuCacheSettings: + - format: 0 + sizeInMegaBytes: 128 + m_CompositorCustomVolumeComponentsList: + m_InjectionPoint: 1 + m_CustomPostProcessTypesAsString: [] diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_ConservativeEnclosingSphereHDRPAsset.asset.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_ConservativeEnclosingSphereHDRPAsset.asset.meta new file mode 100644 index 00000000000..6bd75047a63 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_ConservativeEnclosingSphereHDRPAsset.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ae550b67e59833489777f00631a9e97 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_Volume.asset b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_Volume.asset new file mode 100644 index 00000000000..a392f469897 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_Volume.asset @@ -0,0 +1,60 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1061804307205530902 +MonoBehaviour: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7ddcec8a8eb2d684d833ac8f5d26aebd, type: 3} + m_Name: HDShadowSettings + m_EditorClassIdentifier: + active: 1 + interCascadeBorders: 1 + maxShadowDistance: + m_OverrideState: 1 + m_Value: 200 + directionalTransmissionMultiplier: + m_OverrideState: 0 + m_Value: 1 + cascadeShadowSplitCount: + m_OverrideState: 1 + m_Value: 3 + cascadeShadowSplit0: + m_OverrideState: 1 + m_Value: 0.05 + cascadeShadowSplit1: + m_OverrideState: 1 + m_Value: 0.15 + cascadeShadowSplit2: + m_OverrideState: 0 + m_Value: 0.32000002 + cascadeShadowBorder0: + m_OverrideState: 0 + m_Value: 0 + cascadeShadowBorder1: + m_OverrideState: 0 + m_Value: 0 + cascadeShadowBorder2: + m_OverrideState: 0 + m_Value: 0 + cascadeShadowBorder3: + m_OverrideState: 0 + m_Value: 0.5971643 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: 2326_Volume + m_EditorClassIdentifier: + components: + - {fileID: -1061804307205530902} diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_Volume.asset.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_Volume.asset.meta new file mode 100644 index 00000000000..c51c66ae577 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/2326_Volume.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8e60b359687bb64bb70f919f68e0e8f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/Cube.mat b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/Cube.mat new file mode 100644 index 00000000000..2e3578fa3e4 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/Cube.mat @@ -0,0 +1,276 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-2314307006900840880 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 13 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Cube + m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _DISABLE_SSR_TRANSPARENT + - _NORMALMAP_TANGENT_SPACE + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2225 + stringTagMap: {} + disabledShaderPasses: + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmissionMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaRemapMax: 1 + - _AlphaRemapMin: 0 + - _AlphaSrcBlend: 1 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DoubleSidedEnable: 0 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 1 + - _MetallicRemapMin: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _ObjectSpaceUVMapping: 0 + - _ObjectSpaceUVMappingEmissive: 0 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _RayTracing: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 9 + - _StencilWriteMaskGBuffer: 15 + - _StencilWriteMaskMV: 41 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransmissionMask: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.41585082, g: 0.8396226, b: 0.42451236, a: 1} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 0.4158508, g: 0.8396226, b: 0.42451233, a: 1} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/Cube.mat.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/Cube.mat.meta new file mode 100644 index 00000000000..ea2f1d44c3d --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/Cube.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a0db68e08b1cc4446b0afb1290fdec75 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/SetupProjectionMatrix.cs b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/SetupProjectionMatrix.cs new file mode 100644 index 00000000000..713cbdbe613 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/SetupProjectionMatrix.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +public class SetupProjectionMatrix : MonoBehaviour +{ + [SerializeField] private Camera m_camera; + [SerializeField] private Matrix4x4 m_projectionMatrix; + + private void Start() + { + m_camera.projectionMatrix = m_projectionMatrix; + } +} diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/SetupProjectionMatrix.cs.meta b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/SetupProjectionMatrix.cs.meta new file mode 100644 index 00000000000..7b43e449594 --- /dev/null +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2326_ConservativeEnclosingSphere/SetupProjectionMatrix.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7ff19706ab489924ab6a2849f80a5099 \ No newline at end of file diff --git a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Tests/HDRP_Graphics_Tests.cs b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Tests/HDRP_Graphics_Tests.cs index 97a51e54a6c..f0c5da0c5da 100644 --- a/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Tests/HDRP_Graphics_Tests.cs +++ b/Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Tests/HDRP_Graphics_Tests.cs @@ -379,6 +379,10 @@ public void SetUpContext() graphicsDeviceTypes: new[] { GraphicsDeviceType.Direct3D12, GraphicsDeviceType.Direct3D11, GraphicsDeviceType.Vulkan }, runtimePlatforms: new[] { RuntimePlatform.WindowsEditor, RuntimePlatform.WindowsPlayer } )] + [IgnoreGraphicsTest( + "4109_DRS-FSR2-AfterPost", + "Unstable: https://jira.unity3d.com/browse/UUM-138604" + )] [IgnoreGraphicsTest( "4110_DRS-FSR2-With-CustomPass", "Platform not supported", // FSR is DX12/DX11/Vulkan on PC-only @@ -407,6 +411,10 @@ public void SetUpContext() graphicsDeviceTypes: new[] { GraphicsDeviceType.Direct3D12, GraphicsDeviceType.Direct3D11, GraphicsDeviceType.Vulkan }, runtimePlatforms: new[] { RuntimePlatform.WindowsEditor, RuntimePlatform.WindowsPlayer } )] + [IgnoreGraphicsTest( + "4103_DRS-DLSS-AfterPost", + "Unstable: https://jira.unity3d.com/browse/UUM-137893" + )] [IgnoreGraphicsTest( "4111_DRS-DLSS-With-CustomPass", "Platform not supported", // DLSS is DX12/DX11/Vulkan on PC-only diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentDecorators.cs b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentDecorators.cs new file mode 100644 index 00000000000..95c23b8e41c --- /dev/null +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentDecorators.cs @@ -0,0 +1,18 @@ +using UnityEngine; +using UnityEngine.Rendering; + +namespace UnityEditor.Rendering.Tests +{ + [HideInInspector] + class VolumeComponentDecorators : VolumeComponent + { + [Tooltip("Increase to make the noise texture appear bigger and less")] + public FloatParameter _NoiseTileSize = new FloatParameter(25.0f); + + [InspectorName("Color")] + public ColorParameter _FogColor = new ColorParameter(Color.grey); + + [InspectorName("Size and occurrence"), Tooltip("Increase to make patches SMALLER, and frequent")] + public ClampedFloatParameter _HighNoiseSpaceFreq = new ClampedFloatParameter(0.1f, 0.1f, 1f); + } +} diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentDecorators.cs.meta b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentDecorators.cs.meta new file mode 100644 index 00000000000..d42961ea33c --- /dev/null +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentDecorators.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 74d25b75408549bba46eab8384cee0e7 +timeCreated: 1773675891 \ No newline at end of file diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentTests.cs b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentTests.cs index a91ca59de60..4803aa2dbb7 100644 --- a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentTests.cs +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentTests.cs @@ -310,19 +310,6 @@ public string[] AdditionalProperties(Type volumeComponentType) #region Decorators Handling Test - [HideInInspector] - class VolumeComponentDecorators : VolumeComponent - { - [Tooltip("Increase to make the noise texture appear bigger and less")] - public FloatParameter _NoiseTileSize = new FloatParameter(25.0f); - - [InspectorName("Color")] - public ColorParameter _FogColor = new ColorParameter(Color.grey); - - [InspectorName("Size and occurrence"), Tooltip("Increase to make patches SMALLER, and frequent")] - public ClampedFloatParameter _HighNoiseSpaceFreq = new ClampedFloatParameter(0.1f, 0.1f, 1f); - } - readonly (string displayName, string tooltip)[] k_ExpectedResults = { (string.Empty, "Increase to make the noise texture appear bigger and less"), diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileGlobalDefaultTests.cs b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileGlobalDefaultTests.cs new file mode 100644 index 00000000000..809bb1159ab --- /dev/null +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileGlobalDefaultTests.cs @@ -0,0 +1,329 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Tests; +using UnityEngine.TestTools; +using Object = UnityEngine.Object; + +namespace UnityEditor.Rendering.Tests +{ + [TestFixture] + public class VolumeProfileGlobalDefaultTests + { + VolumeManager m_VolumeManager; + List m_AssetsToDelete; + + readonly string m_AssetPath = $"Assets/{nameof(TestRenderPipelineAssetForVolume)}.asset"; + RenderPipelineAsset m_RenderPipelineAsset; + + [UnityOneTimeSetUp] + public IEnumerator OneTimeSetup() + { + m_RenderPipelineAsset = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(m_RenderPipelineAsset, m_AssetPath); + GraphicsSettings.defaultRenderPipeline = m_RenderPipelineAsset; + Assume.That(GraphicsSettings.currentRenderPipeline, Is.InstanceOf()); + + var camera = new GameObject("TestCamera").AddComponent(); + camera.Render(); + yield return null; + Object.DestroyImmediate(camera.gameObject); + Assume.That(RenderPipelineManager.currentPipeline, Is.InstanceOf()); + + m_VolumeManager = VolumeManager.instance; + Assume.That(m_VolumeManager, Is.Not.Null); + } + + [UnityOneTimeTearDown] + public IEnumerator OneTimeTearDown() + { + GraphicsSettings.defaultRenderPipeline = null; + AssetDatabase.DeleteAsset(m_AssetPath); + + Assume.That(m_VolumeManager, Is.Not.Null); + if (m_VolumeManager.isInitialized) + m_VolumeManager.Deinitialize(); + + yield return null; + } + + [SetUp] + public void SetUp() + { + if (m_VolumeManager.isInitialized) + m_VolumeManager.Deinitialize(); + + m_AssetsToDelete = new List(); + } + + [TearDown] + public void TearDown() + { + foreach (var assetPath in m_AssetsToDelete) + { + if (AssetDatabase.LoadAssetAtPath(assetPath) != null) + AssetDatabase.DeleteAsset(assetPath); + } + + m_AssetsToDelete.Clear(); + } + + VolumeProfile CreateProfileAsset(string name, params Type[] componentTypes) + { + string assetPath = $"Assets/{name}.asset"; + var profile = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(profile, assetPath); + + foreach (var type in componentTypes) + { + profile.Add(type); + } + + AssetDatabase.SaveAssets(); + m_AssetsToDelete.Add(assetPath); + return profile; + } + + [Test] + public void UpdateGlobalDefaultVolumeProfile_HandlesProfileSwitch() + { + // Create first profile with components 1 and 2 + var profile1 = CreateProfileAsset( + "DefaultProfile_Switch1", + typeof(CopyPasteTestComponent1), + typeof(CopyPasteTestComponent2) + ); + + // Initialize with first profile + m_VolumeManager.Initialize(profile1); + var initialTypes = m_VolumeManager.baseComponentTypeArray; + + // Create second profile with components 2 and 3 (different set) + var profile2 = CreateProfileAsset( + "DefaultProfile_Switch2", + typeof(CopyPasteTestComponent2), + typeof(CopyPasteTestComponent3) + ); + + // Switch to second profile + VolumeProfileUtils.UpdateGlobalDefaultVolumeProfile(profile2); + + // Verify VolumeManager updated correctly + Assert.IsTrue(m_VolumeManager.isInitialized); + var newTypes = m_VolumeManager.baseComponentTypeArray; + Assert.IsNotNull(newTypes); + + Assert.That(newTypes.Length, Is.EqualTo(initialTypes.Length)); + // Verify components are still properly sorted after switch + for (int i = 1; i < newTypes.Length; i++) + { + Assert.That(newTypes[i], Is.EqualTo(initialTypes[i]), + $"Types not sorted the same way after profile switch. This could break existing VolumeStack."); + } + } + + [Test] + public void UpdateGlobalDefaultVolumeProfile_VolumeManagerUpdateDoesNotThrow() + { + // Create and set default profile + var profile = CreateProfileAsset( + "DefaultProfile_NoThrow", + typeof(CopyPasteTestComponent1), + typeof(CopyPasteTestComponent2) + ); + + m_VolumeManager.Initialize(profile); + + // Create a camera for volume update + var cameraGO = new GameObject("TestCamera"); + var camera = cameraGO.AddComponent(); + LayerMask layerMask = 1; + + try + { + // This should not throw with the bug fixes + Assert.DoesNotThrow(() => + { + m_VolumeManager.Update(camera.transform, layerMask); + }, "VolumeManager.Update should not throw after setting global default profile"); + + // Verify stack is valid + Assert.IsNotNull(m_VolumeManager.stack); + } + finally + { + Object.DestroyImmediate(cameraGO); + } + } + + [Test] + public void UpdateGlobalDefaultVolumeProfile_MultipleUpdatesSameProfile() + { + // Create profile + var profile = CreateProfileAsset( + "DefaultProfile_MultiUpdate", + typeof(CopyPasteTestComponent1) + ); + + m_VolumeManager.Initialize(profile); + + // Update multiple times - should not cause issues + Assert.DoesNotThrow(() => + { + VolumeProfileUtils.UpdateGlobalDefaultVolumeProfile(profile); + VolumeProfileUtils.UpdateGlobalDefaultVolumeProfile(profile); + VolumeProfileUtils.UpdateGlobalDefaultVolumeProfile(profile); + }, "Multiple updates with same profile should not throw"); + + Assert.IsTrue(m_VolumeManager.isInitialized); + } + + [Test] + public void SwitchingProfiles_WithDifferentComponents_MaintainsStability() + { + var cameraGO = new GameObject("TestCamera"); + var camera = cameraGO.AddComponent(); + LayerMask layerMask = 1; + + try + { + // Profile A: Components 1, 2 + var profileA = CreateProfileAsset( + "ProfileA", + typeof(CopyPasteTestComponent1), + typeof(CopyPasteTestComponent2) + ); + + m_VolumeManager.Initialize(profileA); + m_VolumeManager.Update(camera.transform, layerMask); + + var typesA = m_VolumeManager.baseComponentTypeArray.ToList(); + Assume.That(typesA.Count, Is.GreaterThan(0)); + + // Profile B: Components 2, 3 (partial overlap) + var profileB = CreateProfileAsset( + "ProfileB", + typeof(CopyPasteTestComponent2), + typeof(CopyPasteTestComponent3) + ); + + VolumeProfileUtils.UpdateGlobalDefaultVolumeProfile(profileB); + + // Update should still work without errors + Assert.DoesNotThrow(() => + { + m_VolumeManager.Update(camera.transform, layerMask); + }, "Update after profile switch should not throw"); + + var typesB = m_VolumeManager.baseComponentTypeArray.ToList(); + Assume.That(typesB.Count, Is.GreaterThan(0)); + + // Profile C: Components 1, 3 (no overlap with B except potentially base types) + var profileC = CreateProfileAsset( + "ProfileC", + typeof(CopyPasteTestComponent1), + typeof(CopyPasteTestComponent3) + ); + + VolumeProfileUtils.UpdateGlobalDefaultVolumeProfile(profileC); + + // Update should still work + Assert.DoesNotThrow(() => + { + m_VolumeManager.Update(camera.transform, layerMask); + }, "Update after second profile switch should not throw"); + + // Back to Profile A + VolumeProfileUtils.UpdateGlobalDefaultVolumeProfile(profileA); + + Assert.DoesNotThrow(() => + { + m_VolumeManager.Update(camera.transform, layerMask); + }, "Update after switching back to original profile should not throw"); + + var typesAAfter = m_VolumeManager.baseComponentTypeArray; + Assert.IsNotNull(typesAAfter); + } + finally + { + Object.DestroyImmediate(cameraGO); + } + } + + [Test] + public void EnsureAllOverridesForDefaultProfile_HandlesComponentAddition() + { + // Create profile with one component + var profile = CreateProfileAsset( + "ProfileForEnsure", + typeof(CopyPasteTestComponent1) + ); + + int initialComponentCount = profile.components.Count; + + // Create a default value source with additional components + var defaultSource = CreateProfileAsset( + "DefaultSource", + typeof(CopyPasteTestComponent1), + typeof(CopyPasteTestComponent2), + typeof(CopyPasteTestComponent3) + ); + + // This should add missing components to the profile + VolumeProfileUtils.EnsureAllOverridesForDefaultProfile(profile, defaultSource); + + Assert.IsNotNull(profile.components); + Assert.Greater(profile.components.Count, initialComponentCount); + } + + [Test] + public void VolumeStack_RemainsValid_AfterProfileSwitch() + { + var cameraGO = new GameObject("TestCamera"); + var camera = cameraGO.AddComponent(); + LayerMask layerMask = 1; + + try + { + // Initial profile + var profile1 = CreateProfileAsset( + "StackValidProfile1", + typeof(CopyPasteTestComponent1) + ); + + m_VolumeManager.Initialize(profile1); + m_VolumeManager.Update(camera.transform, layerMask); + + var stack = m_VolumeManager.stack; + Assert.IsNotNull(stack); + + // Switch profile + var profile2 = CreateProfileAsset( + "StackValidProfile2", + typeof(CopyPasteTestComponent2) + ); + + VolumeProfileUtils.UpdateGlobalDefaultVolumeProfile(profile2); + m_VolumeManager.Update(camera.transform, layerMask); + + // Stack should still be valid + Assert.IsNotNull(m_VolumeManager.stack); + + // Should be able to update again without issues + Assert.DoesNotThrow(() => + { + m_VolumeManager.Update(camera.transform, layerMask); + m_VolumeManager.Update(camera.transform, layerMask); + }); + } + finally + { + Object.DestroyImmediate(cameraGO); + } + } + } +} diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileGlobalDefaultTests.cs.meta b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileGlobalDefaultTests.cs.meta new file mode 100644 index 00000000000..87d658e03fc --- /dev/null +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileGlobalDefaultTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f8e9c4d5b6a3f1e2d4c5a6b7e8f9a0b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileUtilsTests.cs b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileUtilsTests.cs new file mode 100644 index 00000000000..394030df80e --- /dev/null +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileUtilsTests.cs @@ -0,0 +1,331 @@ +using System; +using System.Linq; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Tests; + +namespace UnityEditor.Rendering.Tests +{ + [TestFixture] + public class VolumeProfileUtilsTests + { + #region CopyValuesToComponent Tests + + [Test] + public void CopyValuesToComponent_CopiesAllParameters_WhenCopyOnlyOverriddenParamsIsFalse() + { + using var componentScope1 = new VolumeComponentScope(out var source); + source.p1.value = 10f; + source.p1.overrideState = true; + source.p2.value = 20; + source.p2.overrideState = false; + + using var componentScope2 = new VolumeComponentScope(out var target); + target.p1.value = 0f; + target.p2.value = 0; + + VolumeProfileUtils.CopyValuesToComponent(source, target, false); + + Assert.AreEqual(10f, target.p1.value); + Assert.AreEqual(20, target.p2.value); + } + + [Test] + public void CopyValuesToComponent_CopiesOnlyOverriddenParameters_WhenCopyOnlyOverriddenParamsIsTrue() + { + using var componentScope1 = new VolumeComponentScope(out var source); + source.p1.value = 10f; + source.p1.overrideState = true; + source.p2.value = 20; + source.p2.overrideState = false; + + using var componentScope2 = new VolumeComponentScope(out var target); + target.p1.value = 0f; + target.p2.value = 0; + + VolumeProfileUtils.CopyValuesToComponent(source, target, true); + + Assert.AreEqual(10f, target.p1.value); + Assert.AreEqual(0, target.p2.value); + } + + [Test] + public void CopyValuesToComponent_HandlesNullTargetComponent_Gracefully() + { + var source = ScriptableObject.CreateInstance(); + source.p1.value = 10f; + + Assert.DoesNotThrow(() => + VolumeProfileUtils.CopyValuesToComponent(source, null, false)); + + ScriptableObject.DestroyImmediate(source); + } + + #endregion + + #region CreateNewComponent Tests + + [Test] + public void CreateNewComponent_CreatesComponentWithCorrectType() + { + var component = VolumeProfileUtils.CreateNewComponent(typeof(CopyPasteTestComponent1)); + + Assert.IsNotNull(component); + Assert.AreEqual(typeof(CopyPasteTestComponent1), component.GetType()); + + ScriptableObject.DestroyImmediate(component); + } + + [Test] + public void CreateNewComponent_SetsCorrectHideFlags() + { + var component = VolumeProfileUtils.CreateNewComponent(typeof(CopyPasteTestComponent1)); + + Assert.IsTrue((component.hideFlags & HideFlags.HideInInspector) != 0); + Assert.IsTrue((component.hideFlags & HideFlags.HideInHierarchy) != 0); + + ScriptableObject.DestroyImmediate(component); + } + + [Test] + public void CreateNewComponent_SetsCorrectName() + { + var component = VolumeProfileUtils.CreateNewComponent(typeof(CopyPasteTestComponent1)); + + Assert.AreEqual("CopyPasteTestComponent1", component.name); + + ScriptableObject.DestroyImmediate(component); + } + + #endregion + + #region EnsureAllOverridesForDefaultProfile Tests + + [Test] + public void EnsureAllOverridesForDefaultProfile_EnablesAllOverrideStates() + { + using var volumeProfileScope = new VolumeProfileScope(out var profile); + + var component = profile.Add(); + component.p1.overrideState = false; + component.p2.overrideState = false; + + VolumeProfileUtils.EnsureAllOverridesForDefaultProfile(profile); + + Assert.IsTrue(component.p1.overrideState); + Assert.IsTrue(component.p2.overrideState); + } + + [Test] + public void EnsureAllOverridesForDefaultProfile_ActivatesAllComponents() + { + using var volumeProfileScope = new VolumeProfileScope(out var profile); + + var component = profile.Add(); + component.active = false; + + VolumeProfileUtils.EnsureAllOverridesForDefaultProfile(profile); + + Assert.IsTrue(component.active); + } + + [Test] + public void EnsureAllOverridesForDefaultProfile_UsesDefaultValueSourceWhenProvided() + { + using var volumeProfileScope = new VolumeProfileScope(out var profile); + using var volumeProfileScope2 = new VolumeProfileScope(out var defaultValueSource, "DefaultTestProfile"); + + profile.Add(); + + var defaultComponent = defaultValueSource.Add(); + defaultComponent.p1.value = 999f; + defaultComponent.p1.overrideState = true; + + VolumeProfileUtils.EnsureAllOverridesForDefaultProfile(profile, defaultValueSource); + + Assert.IsTrue(profile.TryGet(out var resultComponent)); + Assert.AreEqual(999f, resultComponent.p1.value); + } + + [Test] + public void TryEnsureAllOverridesForDefaultProfile_ReturnsTrue_WhenChangesAreMade() + { + using var volumeProfileScope = new VolumeProfileScope(out var profile); + + var component = profile.Add(); + component.p1.overrideState = false; + + bool result = VolumeProfileUtils.TryEnsureAllOverridesForDefaultProfile(profile); + + Assert.IsTrue(result); + } + + [Test] + public void TryEnsureAllOverridesForDefaultProfile_ReturnsFalse_WhenNoChangesNeeded() + { + using var volumeProfileScope = new VolumeProfileScope(out var profile); + + VolumeProfileUtils.TryEnsureAllOverridesForDefaultProfile(profile); + + bool result = VolumeProfileUtils.TryEnsureAllOverridesForDefaultProfile(profile); + + Assert.IsFalse(result); + } + + #endregion + + #region SetComponentEditorsExpanded Tests + + [Test] + public void SetComponentEditorsExpanded_SetsAllEditorsToExpanded() + { + using var volumeProfileScope = new VolumeProfileScope(out var profile); + profile.Add(); + profile.Add(); + + var editors = profile.components + .Select(c => (VolumeComponentEditor)Editor.CreateEditor(c, typeof(VolumeComponentEditor))) + .ToList(); + + foreach (var editor in editors) + editor.expanded = false; + + VolumeProfileUtils.SetComponentEditorsExpanded(editors, true); + + foreach (var editor in editors) + Assert.IsTrue(editor.expanded); + + foreach (var editor in editors) + UnityEngine.Object.DestroyImmediate(editor); + } + + [Test] + public void SetComponentEditorsExpanded_SetsAllEditorsToCollapsed() + { + using var volumeProfileScope = new VolumeProfileScope(out var profile); + profile.Add(); + profile.Add(); + + var editors = profile.components + .Select(c => (VolumeComponentEditor)Editor.CreateEditor(c, typeof(VolumeComponentEditor))) + .ToList(); + + foreach (var editor in editors) + editor.expanded = true; + + VolumeProfileUtils.SetComponentEditorsExpanded(editors, false); + + foreach (var editor in editors) + Assert.IsFalse(editor.expanded); + + foreach (var editor in editors) + UnityEngine.Object.DestroyImmediate(editor); + } + + #endregion + + #region VolumeProfile Hashcode Tests + + [Test] + public void VolumeProfile_GetComponentListHashCode_IsStable() + { + using var volumeProfileScope = new VolumeProfileScope(out var profile); + + profile.Add(); + profile.Add(); + + // Get hash multiple times - should be consistent + int hash1 = profile.GetComponentListHashCode(); + int hash2 = profile.GetComponentListHashCode(); + int hash3 = profile.GetComponentListHashCode(); + + Assert.AreEqual(hash1, hash2, "Hash changed between calls"); + Assert.AreEqual(hash2, hash3, "Hash changed between calls"); + } + + [Test] + public void VolumeComponent_HashCode_DoesNotChangeWithParameterValues() + { + // This test ensures that VolumeComponent.GetHashCode() doesn't change + // when only parameter values change (not the structure). + using var componentScope1 = new VolumeComponentScope(out var component1); + using var componentScope2 = new VolumeComponentScope(out var component2); + + component1.p1.value = 100f; + component1.p2.value = 200; + + component2.p1.value = 999f; + component2.p2.value = 888; + + int initialHash1 = component1.GetHashCode(); + int initialHash2 = component2.GetHashCode(); + + component1.p1.value = 555f; + component2.p2.value = 333; + + int afterChangeHash1 = component1.GetHashCode(); + int afterChangeHash2 = component2.GetHashCode(); + + Assert.AreEqual(initialHash1, afterChangeHash1, + "Component hash should not change when only parameter values change"); + Assert.AreEqual(initialHash2, afterChangeHash2, + "Component hash should not change when only parameter values change"); + } + + [Test] + public void VolumeProfile_HashCode_DoesNotChangeWithParameterValues() + { + using var volumeProfileScope = new VolumeProfileScope(out var profile); + + var comp1 = profile.Add(); + comp1.p1.value = 100f; + + int initialHash = profile.GetHashCode(); + comp1.p1.value = 999f; + + int afterChangeHash = profile.GetHashCode(); + + Assert.AreEqual(initialHash, afterChangeHash, + "Profile hash should not change when only component parameter values change"); + } + + #endregion + + readonly struct VolumeComponentScope : IDisposable + where T : VolumeComponent + { + readonly T m_Component; + + public VolumeComponentScope(out T component) + { + component = ScriptableObject.CreateInstance(); + m_Component = component; + } + + public void Dispose() + { + ScriptableObject.DestroyImmediate(m_Component); + } + } + + readonly struct VolumeProfileScope : IDisposable + { + public readonly VolumeProfile profile; + readonly string m_AssetPath; + + public VolumeProfileScope(out VolumeProfile outProfile, string assetName = "TestProfile") + { + m_AssetPath = $"Assets/{assetName}.asset"; + profile = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(profile, m_AssetPath); + outProfile = profile; + } + + public void Dispose() + { + AssetDatabase.DeleteAsset(m_AssetPath); + } + } + } +} diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileUtilsTests.cs.meta b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileUtilsTests.cs.meta new file mode 100644 index 00000000000..69a620413f7 --- /dev/null +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeProfileUtilsTests.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b863824ddc854ed8b646ee9c09695f56 +timeCreated: 1773407021 \ No newline at end of file diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/ObsoleteVolumeComponent.cs b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/ObsoleteVolumeComponent.cs new file mode 100644 index 00000000000..7e75cda5a87 --- /dev/null +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/ObsoleteVolumeComponent.cs @@ -0,0 +1,10 @@ +using System; + +namespace UnityEngine.Rendering.Tests +{ + [Obsolete("Obsolete test component.", false)] + public class ObsoleteVolumeComponent : VolumeComponent + { + public FloatParameter p1 = new FloatParameter(0f); + } +} diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/ObsoleteVolumeComponent.cs.meta b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/ObsoleteVolumeComponent.cs.meta new file mode 100644 index 00000000000..3495ba460de --- /dev/null +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/ObsoleteVolumeComponent.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e2726922c6f74fc2844a2606044a7bb2 +timeCreated: 1773672100 \ No newline at end of file diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/TestRenderPipelineAssetForVolume.cs b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/TestRenderPipelineAssetForVolume.cs new file mode 100644 index 00000000000..fc054d4e3cf --- /dev/null +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/TestRenderPipelineAssetForVolume.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace UnityEngine.Rendering.Tests +{ + public class TestRenderPipelineAssetForVolume : RenderPipelineAsset + { + protected override RenderPipeline CreatePipeline() + { + return new TestRenderPipeline(); + } + } + + public class TestRenderPipeline : RenderPipeline { } +} diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/TestRenderPipelineAssetForVolume.cs.meta b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/TestRenderPipelineAssetForVolume.cs.meta new file mode 100644 index 00000000000..509cfdc6d2a --- /dev/null +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/TestRenderPipelineAssetForVolume.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 589466ff6b744ad7a0381063e386b1ad +timeCreated: 1773672437 \ No newline at end of file diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/VolumeManagerTests.cs b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/VolumeManagerTests.cs index bee767114bc..9e33e336709 100644 --- a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/VolumeManagerTests.cs +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Runtime/Volumes/VolumeManagerTests.cs @@ -209,15 +209,24 @@ public void DefaultProfilesAreAppliedToDefaultState() volumeManager.SetCustomDefaultProfiles(new List { m_VolumeProfile3 }); Assert.AreEqual(TestVolume.k_OverrideValue3, GetDefaultState().param.value); - + volumeManager.SetGlobalDefaultProfile(null); - Assert.IsNull(GetDefaultState()); // No global default profile - default state should be null even if quality and custom defaults are set, as global is the base for the default state + if (Application.isEditor) + Assert.AreEqual(TestVolume.k_OverrideValue3, GetDefaultState().param.value); + else + Assert.IsNull(GetDefaultState()); // No global default profile - default state should be null even if quality and custom defaults are set, as global is the base for the default state volumeManager.SetQualityDefaultProfile(null); - Assert.IsNull(GetDefaultState()); // No global default profile - default state should be null even if quality and custom defaults are set, as global is the base for the default state + if (Application.isEditor) + Assert.AreEqual(TestVolume.k_OverrideValue3, GetDefaultState().param.value); + else + Assert.IsNull(GetDefaultState()); // No global default profile - default state should be null even if quality and custom defaults are set, as global is the base for the default state volumeManager.SetCustomDefaultProfiles(null); - Assert.IsNull(GetDefaultState()); // No global default profile - default state should be null even if quality and custom defaults are set, as global is the base for the default state + if (Application.isEditor) + Assert.AreEqual(TestVolume.k_DefaultValue, GetDefaultState().param.value); + else + Assert.IsNull(GetDefaultState()); // No global default profile - default state should be null even if quality and custom defaults are set, as global is the base for the default state } [Test]