diff --git a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentEditor.cs b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentEditor.cs index bb64826d8aa..1792269b435 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentEditor.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentEditor.cs @@ -279,13 +279,6 @@ internal void Init() var supportedOn = volumeComponentType.GetCustomAttribute(); m_LegacyPipelineTypes = supportedOn != null ? supportedOn.pipelineTypes : Array.Empty(); #pragma warning restore CS0618 - - EditorApplication.contextualPropertyMenu += OnPropertyContextMenu; - } - - void OnDestroy() - { - EditorApplication.contextualPropertyMenu -= OnPropertyContextMenu; } internal void DetermineVisibility(Type renderPipelineAssetType, Type renderPipelineType) @@ -393,23 +386,13 @@ internal void AddDefaultProfileContextMenuEntries( profile != null && defaultProfile != profile) { + menu.AddSeparator(string.Empty); menu.AddItem(EditorGUIUtility.TrTextContent($"Show Default Volume Profile"), false, () => Selection.activeObject = defaultProfile); menu.AddItem(EditorGUIUtility.TrTextContent($"Apply Values to Default Volume Profile"), false, copyAction); } } - void OnPropertyContextMenu(GenericMenu menu, SerializedProperty property) - { - if (property.serializedObject.targetObject != target) - return; - - var targetComponent = property.serializedObject.targetObject as VolumeComponent; - - AddDefaultProfileContextMenuEntries(menu, VolumeManager.instance.globalDefaultProfile, - () => VolumeProfileUtils.AssignValuesToProfile(VolumeManager.instance.globalDefaultProfile, targetComponent, property)); - } - /// /// Unity calls this method after drawing the header for each VolumeComponentEditor /// diff --git a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentListEditor.cs b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentListEditor.cs index 47734b62533..36eebd1b566 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentListEditor.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentListEditor.cs @@ -445,13 +445,14 @@ void OnContextClick(Vector2 position, VolumeComponentEditor targetEditor, int id if (!m_IsDefaultVolumeProfile) menu.AddItem(EditorGUIUtility.TrTextContent("Remove"), false, () => RemoveComponent(id)); - menu.AddSeparator(string.Empty); if (targetEditor.hasAdditionalProperties) + { + menu.AddSeparator(string.Empty); menu.AddAdvancedPropertiesBoolMenuItem(() => targetEditor.showAdditionalProperties, () => targetEditor.showAdditionalProperties ^= true); + } - menu.AddSeparator(string.Empty); targetEditor.AddDefaultProfileContextMenuEntries(menu, VolumeManager.instance.globalDefaultProfile, () => VolumeProfileUtils.CopyValuesToProfile(targetComponent, VolumeManager.instance.globalDefaultProfile)); diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/Debug/DebugDisplayGPUResidentDrawer.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/Debug/DebugDisplayGPUResidentDrawer.cs index 1df80681bf8..773befe1252 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/Debug/DebugDisplayGPUResidentDrawer.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/Debug/DebugDisplayGPUResidentDrawer.cs @@ -1,6 +1,9 @@ using System; using System.Collections.Generic; using Unity.Collections; +#if UNITY_EDITOR +using UnityEditor; +#endif using static UnityEngine.Rendering.DebugUI; using static UnityEngine.Rendering.DebugUI.Widget; @@ -106,6 +109,7 @@ private static InstanceOcclusionEventStats GetInstanceOcclusionEventStats(int pa else return new InstanceOcclusionEventStats(); } + static class Strings { public const string drawerSettingsContainerName = "GPU Resident Drawer Settings"; @@ -144,6 +148,7 @@ private static int GetInstanceOcclusionEventCount() { return GPUResidentDrawer.GetDebugStats()?.instanceOcclusionEventStats.Length ?? 0; } + private static DebugUI.Table.Row AddInstanceCullerViewDataRow(int viewIndex) { return new DebugUI.Table.Row @@ -154,9 +159,32 @@ private static DebugUI.Table.Row AddInstanceCullerViewDataRow(int viewIndex) children = { new DebugUI.Value { displayName = "View Type", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => GetInstanceCullerViewStats(viewIndex).viewType }, - new DebugUI.Value { displayName = "View Instance ID", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => GetInstanceCullerViewStats(viewIndex).viewInstanceID }, + new DebugUI.Value { displayName = "View Instance ID", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => + { + var viewStats = GetInstanceCullerViewStats(viewIndex); +#if UNITY_EDITOR + Object view = EditorUtility.InstanceIDToObject(viewStats.viewInstanceID); + if (view) + { + return $"{viewStats.viewInstanceID} ({view.name})"; + } +#endif + return viewStats.viewInstanceID; + } + }, new DebugUI.Value { displayName = "Split Index", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => GetInstanceCullerViewStats(viewIndex).splitIndex }, - new DebugUI.Value { displayName = "Visible Instances", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => GetInstanceCullerViewStats(viewIndex).visibleInstances }, + new DebugUI.Value { displayName = "Visible Instances CPU | GPU", tooltip = "Visible instances after CPU culling and after GPU culling.", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => + { + var viewStats = GetInstanceCullerViewStats(viewIndex); + return $"{viewStats.visibleInstancesOnCPU} | {viewStats.visibleInstancesOnGPU}"; + } + }, + new DebugUI.Value { displayName = "Visible Primitives CPU | GPU", tooltip = "Visible primitives after CPU culling and after GPU culling.", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => + { + var viewStats = GetInstanceCullerViewStats(viewIndex); + return $"{viewStats.visiblePrimitivesOnCPU} | {viewStats.visiblePrimitivesOnGPU}"; + } + }, new DebugUI.Value { displayName = "Draw Commands", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => GetInstanceCullerViewStats(viewIndex).drawCommands }, } }; @@ -182,6 +210,16 @@ private static object CulledInstancesString(in InstanceOcclusionEventStats stats return (stats.eventType == InstanceOcclusionEventType.OcclusionTest) ? stats.culledInstances : "-"; } + private static object VisiblePrimitivesString(in InstanceOcclusionEventStats stats) + { + return (stats.eventType == InstanceOcclusionEventType.OcclusionTest) ? stats.visiblePrimitives : "-"; + } + + private static object CulledPrimitivesString(in InstanceOcclusionEventStats stats) + { + return (stats.eventType == InstanceOcclusionEventType.OcclusionTest) ? stats.culledPrimitives : "-"; + } + private static DebugUI.Table.Row AddInstanceOcclusionPassDataRow(int eventIndex) { return new DebugUI.Table.Row @@ -191,13 +229,27 @@ private static DebugUI.Table.Row AddInstanceOcclusionPassDataRow(int eventIndex) isHiddenCallback = () => { return eventIndex >= GetInstanceOcclusionEventCount(); }, children = { - new DebugUI.Value { displayName = "View Instance ID", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => GetInstanceOcclusionEventStats(eventIndex).viewInstanceID }, + new DebugUI.Value { displayName = "View Instance ID", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => + { + var eventStats = GetInstanceOcclusionEventStats(eventIndex); +#if UNITY_EDITOR + Object view = EditorUtility.InstanceIDToObject(eventStats.viewInstanceID); + if (view) + { + return $"{eventStats.viewInstanceID} ({view.name})"; + } +#endif + return eventStats.viewInstanceID; + } + }, new DebugUI.Value { displayName = "Event Type", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => $"{GetInstanceOcclusionEventStats(eventIndex).eventType}" }, new DebugUI.Value { displayName = "Occluder Version", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => OccluderVersionString(GetInstanceOcclusionEventStats(eventIndex)) }, new DebugUI.Value { displayName = "Subview Mask", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => $"0x{GetInstanceOcclusionEventStats(eventIndex).subviewMask:X}" }, new DebugUI.Value { displayName = "Occlusion Test", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => $"{OcclusionTestString(GetInstanceOcclusionEventStats(eventIndex))}" }, new DebugUI.Value { displayName = "Visible Instances", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => VisibleInstancesString(GetInstanceOcclusionEventStats(eventIndex)) }, new DebugUI.Value { displayName = "Culled Instances", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => CulledInstancesString(GetInstanceOcclusionEventStats(eventIndex)) }, + new DebugUI.Value { displayName = "Visible Primitives", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => VisiblePrimitivesString(GetInstanceOcclusionEventStats(eventIndex)) }, + new DebugUI.Value { displayName = "Culled Primitives", refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => CulledPrimitivesString(GetInstanceOcclusionEventStats(eventIndex)) }, } }; } @@ -298,6 +350,104 @@ private void AddInstanceCullingStatsWidget(DebugDisplayGPUResidentDrawer data) } }); + instanceCullerStats.children.Add(new DebugUI.ValueTuple() + { + displayName = "Total Visible Instances (Cameras | Lights | Both)", + values = new[] + { + new DebugUI.Value { refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => + { + int totalGRDInstances = 0; + + for (int viewIndex = 0; viewIndex < GetInstanceCullerViewCount(); viewIndex++) + { + var viewStats = GetInstanceCullerViewStats(viewIndex); + if (viewStats.viewType == BatchCullingViewType.Camera) + totalGRDInstances += viewStats.visibleInstancesOnGPU; + } + return totalGRDInstances; + } + }, + new DebugUI.Value { refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => + { + int totalGRDInstances = 0; + + for (int viewIndex = 0; viewIndex < GetInstanceCullerViewCount(); viewIndex++) + { + var viewStats = GetInstanceCullerViewStats(viewIndex); + if (viewStats.viewType == BatchCullingViewType.Light) + totalGRDInstances += viewStats.visibleInstancesOnGPU; + } + return totalGRDInstances; + } + }, + new DebugUI.Value { refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => + { + int totalGRDInstances = 0; + + for (int viewIndex = 0; viewIndex < GetInstanceCullerViewCount(); viewIndex++) + { + var viewStats = GetInstanceCullerViewStats(viewIndex); + if (viewStats.viewType != BatchCullingViewType.Filtering + && viewStats.viewType != BatchCullingViewType.Picking + && viewStats.viewType != BatchCullingViewType.SelectionOutline) + totalGRDInstances += viewStats.visibleInstancesOnGPU; + } + return totalGRDInstances; + } + }, + } + }); + + instanceCullerStats.children.Add(new DebugUI.ValueTuple() + { + displayName = "Total Visible Primitives (Cameras | Lights | Both)", + values = new[] + { + new DebugUI.Value { refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => + { + int totalGRDPrimitives = 0; + + for (int viewIndex = 0; viewIndex < GetInstanceCullerViewCount(); viewIndex++) + { + var viewStats = GetInstanceCullerViewStats(viewIndex); + if (viewStats.viewType == BatchCullingViewType.Camera) + totalGRDPrimitives += viewStats.visiblePrimitivesOnGPU; + } + return totalGRDPrimitives; + } + }, + new DebugUI.Value { refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => + { + int totalGRDPrimitives = 0; + + for (int viewIndex = 0; viewIndex < GetInstanceCullerViewCount(); viewIndex++) + { + var viewStats = GetInstanceCullerViewStats(viewIndex); + if (viewStats.viewType == BatchCullingViewType.Light) + totalGRDPrimitives += viewStats.visiblePrimitivesOnGPU; + } + return totalGRDPrimitives; + } + }, + new DebugUI.Value { refreshRate = k_RefreshRate, formatString = k_FormatString, getter = () => + { + int totalGRDPrimitives = 0; + + for (int viewIndex = 0; viewIndex < GetInstanceCullerViewCount(); viewIndex++) + { + var viewStats = GetInstanceCullerViewStats(viewIndex); + if (viewStats.viewType != BatchCullingViewType.Filtering + && viewStats.viewType != BatchCullingViewType.Picking + && viewStats.viewType != BatchCullingViewType.SelectionOutline) + totalGRDPrimitives += viewStats.visiblePrimitivesOnGPU; + } + return totalGRDPrimitives; + } + }, + } + }); + DebugUI.Table viewTable = new DebugUI.Table { displayName = "", diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawer.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawer.cs index f539e195e91..22791454b0f 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawer.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawer.cs @@ -530,7 +530,7 @@ private void UpdateSelection() rendererIDs[i] = renderers[i] ? renderers[i].GetInstanceID() : 0; m_Batcher.UpdateSelectedRenderers(rendererIDs); - + rendererIDs.Dispose(); Profiler.EndSample(); @@ -620,7 +620,7 @@ private void PostPostLateUpdate() UpdateSelection(); m_IsSelectionDirty = false; } - + m_FrameUpdateNeeded = false; #endif } @@ -828,14 +828,8 @@ private void ClassifyMaterials(NativeArray materials, out NativeList u if (materials.Length > 0) { - new ClassifyMaterialsJob - { - materialIDs = materials.AsReadOnly(), - batchMaterialHash = m_Batcher.instanceCullingBatcher.batchMaterialHash.AsReadOnly(), - unsupportedMaterialIDs = unsupportedMaterials, - supportedMaterialIDs = supportedMaterials, - supportedPackedMaterialDatas = supportedPackedMaterialDatas - }.Run(); + GPUResidentDrawerBurst.ClassifyMaterials(materials, m_Batcher.instanceCullingBatcher.batchMaterialHash.AsReadOnly(), + ref supportedMaterials, ref unsupportedMaterials, ref supportedPackedMaterialDatas); } } @@ -845,13 +839,8 @@ private NativeList FindUnsupportedRenderers(NativeArray unsupportedMat if (unsupportedMaterials.Length > 0) { - new FindUnsupportedRenderersJob - { - unsupportedMaterials = unsupportedMaterials.AsReadOnly(), - materialIDArrays = m_BatchersContext.sharedInstanceData.materialIDArrays, - rendererGroups = m_BatchersContext.sharedInstanceData.rendererGroupIDs, - unsupportedRenderers = unsupportedRenderers, - }.Run(); + GPUResidentDrawerBurst.FindUnsupportedRenderers(unsupportedMaterials, m_BatchersContext.sharedInstanceData.materialIDArrays, + m_BatchersContext.sharedInstanceData.rendererGroupIDs, ref unsupportedRenderers); } return unsupportedRenderers; @@ -861,13 +850,8 @@ private NativeHashSet GetMaterialsWithChangedPackedMaterial(NativeArray filteredMaterials = new NativeHashSet(materials.Length, allocator); - new GetMaterialsWithChangedPackedMaterialJob - { - materialIDs = materials.AsReadOnly(), - packedMaterialDatas = packedMaterialDatas.AsReadOnly(), - packedMaterialHash = batcher.instanceCullingBatcher.packedMaterialHash.AsReadOnly(), - filteredMaterials = filteredMaterials - }.Run(); + GPUResidentDrawerBurst.GetMaterialsWithChangedPackedMaterial(materials, packedMaterialDatas, + batcher.instanceCullingBatcher.packedMaterialHash.AsReadOnly(), ref filteredMaterials); return filteredMaterials; } @@ -894,79 +878,6 @@ private NativeHashSet GetMaterialsWithChangedPackedMaterial(NativeArray.ReadOnly batchMaterialHash; - [ReadOnly] public NativeArray.ReadOnly materialIDs; - - public NativeList supportedMaterialIDs; - public NativeList unsupportedMaterialIDs; - public NativeList supportedPackedMaterialDatas; - - public void Execute() - { - var usedMaterialIDs = new NativeList(4, Allocator.TempJob); - - foreach (var materialID in materialIDs) - { - if (batchMaterialHash.ContainsKey(materialID)) - usedMaterialIDs.Add(materialID); - } - - if (usedMaterialIDs.IsEmpty) - { - usedMaterialIDs.Dispose(); - return; - } - - unsupportedMaterialIDs.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory); - supportedMaterialIDs.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory); - supportedPackedMaterialDatas.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory); - - int unsupportedMaterialCount = GPUDrivenProcessor.ClassifyMaterials(usedMaterialIDs.AsArray(), unsupportedMaterialIDs.AsArray(), supportedMaterialIDs.AsArray(), supportedPackedMaterialDatas.AsArray()); - - unsupportedMaterialIDs.Resize(unsupportedMaterialCount, NativeArrayOptions.ClearMemory); - supportedMaterialIDs.Resize(usedMaterialIDs.Length - unsupportedMaterialCount, NativeArrayOptions.ClearMemory); - supportedPackedMaterialDatas.Resize(supportedMaterialIDs.Length, NativeArrayOptions.ClearMemory); - - usedMaterialIDs.Dispose(); - } - } - - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] - private struct FindUnsupportedRenderersJob : IJob - { - [ReadOnly] public NativeArray.ReadOnly unsupportedMaterials; - [ReadOnly] public NativeArray.ReadOnly materialIDArrays; - [ReadOnly] public NativeArray.ReadOnly rendererGroups; - - public NativeList unsupportedRenderers; - - public unsafe void Execute() - { - if (unsupportedMaterials.Length == 0) - return; - - for (int arrayIndex = 0; arrayIndex < materialIDArrays.Length; arrayIndex++) - { - var materialIDs = materialIDArrays[arrayIndex]; - int rendererID = rendererGroups[arrayIndex]; - - for (int i = 0; i < materialIDs.Length; i++) - { - int materialID = materialIDs[i]; - - if (unsupportedMaterials.Contains(materialID)) - { - unsupportedRenderers.Add(rendererID); - break; - } - } - } - } - } - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] private unsafe struct FindRenderersFromMaterialOrMeshJob : IJobParallelForBatch { @@ -978,7 +889,7 @@ private unsafe struct FindRenderersFromMaterialOrMeshJob : IJobParallelForBatch [ReadOnly] public NativeArray.ReadOnly meshIDArray; [ReadOnly] public NativeArray.ReadOnly rendererGroupIDs; [ReadOnly] public NativeArray.ReadOnly sortedExcludeRendererIDs; - + [WriteOnly] public NativeList.ParallelWriter selectedRenderGroupsForMaterials; [WriteOnly] public NativeList.ParallelWriter selectedRenderGroupsForMeshes; @@ -1013,7 +924,7 @@ public void Execute(int startIndex, int count) } { var rendererMaterials = materialIDArrays[rendererIndex]; - + for (int materialIndex = 0; materialIndex < rendererMaterials.Length; materialIndex++) { var materialID = rendererMaterials[materialIndex]; @@ -1030,30 +941,5 @@ public void Execute(int startIndex, int count) selectedRenderGroupsForMeshes.AddRangeNoResize(renderersToAddForMeshesPtr, renderersToAddForMeshes.Length); } } - - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] - private struct GetMaterialsWithChangedPackedMaterialJob : IJob - { - [ReadOnly] public NativeArray.ReadOnly materialIDs; - [ReadOnly] public NativeArray.ReadOnly packedMaterialDatas; - [ReadOnly] public NativeParallelHashMap.ReadOnly packedMaterialHash; - - [WriteOnly] public NativeHashSet filteredMaterials; - - public void Execute() - { - for (int index = 0; index < materialIDs.Length ; index++) - { - var materialID = materialIDs[index]; - var newPackedMaterialData = packedMaterialDatas[index]; - - // Has its packed material changed? If the material isn't in the packed material cache, consider the material has changed. - if (packedMaterialHash.TryGetValue(materialID, out var packedMaterial) && packedMaterial.Equals(newPackedMaterialData)) - continue; - - filteredMaterials.Add(materialID); - } - } - } } } diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerBurst.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerBurst.cs new file mode 100644 index 00000000000..ddb0db8c566 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerBurst.cs @@ -0,0 +1,80 @@ +using Unity.Collections; +using UnityEngine.Rendering; +using Unity.Burst; + +namespace UnityEngine.Rendering +{ + [BurstCompile] + internal static class GPUResidentDrawerBurst + { + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static void ClassifyMaterials(in NativeArray materialIDs, in NativeParallelHashMap.ReadOnly batchMaterialHash, + ref NativeList supportedMaterialIDs, ref NativeList unsupportedMaterialIDs, ref NativeList supportedPackedMaterialDatas) + { + var usedMaterialIDs = new NativeList(4, Allocator.Temp); + + foreach (var materialID in materialIDs) + { + if (batchMaterialHash.ContainsKey(materialID)) + usedMaterialIDs.Add(materialID); + } + + if (usedMaterialIDs.IsEmpty) + { + usedMaterialIDs.Dispose(); + return; + } + + unsupportedMaterialIDs.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory); + supportedMaterialIDs.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory); + supportedPackedMaterialDatas.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory); + + int unsupportedMaterialCount = GPUDrivenProcessor.ClassifyMaterials(usedMaterialIDs.AsArray(), unsupportedMaterialIDs.AsArray(), supportedMaterialIDs.AsArray(), supportedPackedMaterialDatas.AsArray()); + + unsupportedMaterialIDs.Resize(unsupportedMaterialCount, NativeArrayOptions.ClearMemory); + supportedMaterialIDs.Resize(usedMaterialIDs.Length - unsupportedMaterialCount, NativeArrayOptions.ClearMemory); + supportedPackedMaterialDatas.Resize(supportedMaterialIDs.Length, NativeArrayOptions.ClearMemory); + + usedMaterialIDs.Dispose(); + } + + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static void FindUnsupportedRenderers(in NativeArray unsupportedMaterials, in NativeArray.ReadOnly materialIDArrays, in NativeArray.ReadOnly rendererGroups, + ref NativeList unsupportedRenderers) + { + for (int arrayIndex = 0; arrayIndex < materialIDArrays.Length; arrayIndex++) + { + var materialIDs = materialIDArrays[arrayIndex]; + int rendererID = rendererGroups[arrayIndex]; + + for (int i = 0; i < materialIDs.Length; i++) + { + int materialID = materialIDs[i]; + + if (unsupportedMaterials.Contains(materialID)) + { + unsupportedRenderers.Add(rendererID); + break; + } + } + } + } + + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static void GetMaterialsWithChangedPackedMaterial(in NativeArray materialIDs, in NativeArray packedMaterialDatas, + in NativeParallelHashMap.ReadOnly packedMaterialHash, ref NativeHashSet filteredMaterials) + { + for (int index = 0; index < materialIDs.Length ; index++) + { + var materialID = materialIDs[index]; + var newPackedMaterialData = packedMaterialDatas[index]; + + // Has its packed material changed? If the material isn't in the packed material cache, consider the material has changed. + if (packedMaterialHash.TryGetValue(materialID, out var packedMaterial) && packedMaterial.Equals(newPackedMaterialData)) + continue; + + filteredMaterials.Add(materialID); + } + } + } +} diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerBurst.cs.meta b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerBurst.cs.meta new file mode 100644 index 00000000000..ececc7dd30e --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerBurst.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2f50a3b1f0997d342837e27ab3b95e6f \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerDebug.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerDebug.cs index 15d05fb04cf..36102b9af21 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerDebug.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerDebug.cs @@ -10,7 +10,10 @@ internal struct InstanceCullerViewStats public BatchCullingViewType viewType; public int viewInstanceID; public int splitIndex; - public int visibleInstances; + public int visibleInstancesOnCPU; + public int visibleInstancesOnGPU; + public int visiblePrimitivesOnCPU; + public int visiblePrimitivesOnGPU; public int drawCommands; } @@ -29,6 +32,8 @@ internal struct InstanceOcclusionEventStats public OcclusionTest occlusionTest; public int visibleInstances; public int culledInstances; + public int visiblePrimitives; + public int culledPrimitives; } internal struct DebugOccluderStats @@ -55,6 +60,48 @@ public DebugRendererBatcherStats() occluderStats = new NativeList(Allocator.Persistent); } + public void FinalizeInstanceCullerViewStats() + { + // For each view, update the on GPU instance and primitive counts. The final rendered primitive and + // instance count can be found at the last pass of all the occlusion passes. + for (int viewIndex = 0; viewIndex < instanceCullerStats.Length; viewIndex++) + { + InstanceCullerViewStats cullerStats = instanceCullerStats[viewIndex]; + InstanceOcclusionEventStats lastOcclusionEventStats = GetLastInstanceOcclusionEventStatsForView(viewIndex); + + if (lastOcclusionEventStats.viewInstanceID == cullerStats.viewInstanceID) + { + // The Min test is because the SelectionOutline view (and probably picking as well) share the same viewInstanceID with + // the scene camera for instance, so we pick up the camera's occlusion event. And we can't have more instances on GPU than we had on CPU. + cullerStats.visibleInstancesOnGPU = Math.Min(lastOcclusionEventStats.visibleInstances, cullerStats.visibleInstancesOnCPU); + cullerStats.visiblePrimitivesOnGPU = Math.Min(lastOcclusionEventStats.visiblePrimitives, cullerStats.visiblePrimitivesOnCPU); + } + else + { + // There was no occlusion culling for this view, so reuse the same counts as on the CPU. + cullerStats.visibleInstancesOnGPU = cullerStats.visibleInstancesOnCPU; + cullerStats.visiblePrimitivesOnGPU = cullerStats.visiblePrimitivesOnCPU; + } + + instanceCullerStats[viewIndex] = cullerStats; + } + } + + private InstanceOcclusionEventStats GetLastInstanceOcclusionEventStatsForView(int viewIndex) + { + if (viewIndex < instanceCullerStats.Length) + { + int viewInstanceID = instanceCullerStats[viewIndex].viewInstanceID; + for (int passIndex = instanceOcclusionEventStats.Length - 1; passIndex >= 0; passIndex--) + { + if (instanceOcclusionEventStats[passIndex].viewInstanceID == viewInstanceID) + return instanceOcclusionEventStats[passIndex]; + } + } + + return new InstanceOcclusionEventStats(); + } + public void Dispose() { if (instanceCullerStats.IsCreated) diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCuller.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCuller.cs index a980a3e23fb..1c2066490ee 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCuller.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCuller.cs @@ -429,7 +429,21 @@ bool IsInstanceFlipped(int rendererIndex) return instanceData.localToWorldIsFlippedBits.Get(instanceIndex); } - unsafe public void Execute(int batchIndex) + + static int GetPrimitiveCount(int indexCount, MeshTopology topology, bool nativeQuads) + { + switch (topology) + { + case MeshTopology.Triangles: return indexCount / 3; + case MeshTopology.Quads: return nativeQuads ? (indexCount / 4) : (indexCount / 4 * 2); + case MeshTopology.Lines: return indexCount / 2; + case MeshTopology.LineStrip: return (indexCount >= 1) ? (indexCount - 1) : 0; + case MeshTopology.Points: return indexCount; + default: Debug.Assert(false, "unknown primitive type"); return 0; + } + } + + public void Execute(int batchIndex) { // figure out how many combinations of views/features we need to partition by int configCount = binningConfig.visibilityConfigCount; @@ -529,7 +543,12 @@ unsafe public void Execute(int batchIndex) int visibleCount = visibleCountPerView[viewIndex]; if (visibleCount > 0) + { + int primitiveCount = GetPrimitiveCount((int)drawBatch.procInfo.indexCount, drawBatch.procInfo.topology, false); + Interlocked.Add(ref UnsafeUtility.AsRef(counterPtr + (int)InstanceCullerSplitDebugCounter.VisibleInstances), visibleCount); + Interlocked.Add(ref UnsafeUtility.AsRef(counterPtr + (int)InstanceCullerSplitDebugCounter.VisiblePrimitives), visibleCount * primitiveCount); + } } } } @@ -854,7 +873,7 @@ unsafe public void Execute(int batchIndex) firstIndex = drawBatch.procInfo.firstIndex, baseVertex = drawBatch.procInfo.baseVertex, firstInstanceGlobalIndex = (uint)instanceInfoGlobalIndex, - maxInstanceCount = (uint)visibleInstanceCount, + maxInstanceCountAndTopology = ((uint)visibleInstanceCount << 3) | (uint)drawBatch.procInfo.topology, }; output.indirectDrawCommands[drawCommandOffset] = new BatchDrawCommandIndirect { @@ -1215,6 +1234,7 @@ public void Execute(int instanceIndex) internal enum InstanceCullerSplitDebugCounter { VisibleInstances, + VisiblePrimitives, DrawCommands, Count, } @@ -1293,7 +1313,10 @@ public void MoveToDebugStatsAndClear(DebugRendererBatcherStats debugStats) viewType = info.viewType, viewInstanceID = info.viewInstanceID, splitIndex = info.splitIndex, - visibleInstances = m_Counters[counterBase + (int)InstanceCullerSplitDebugCounter.VisibleInstances], + visibleInstancesOnCPU = m_Counters[counterBase + (int)InstanceCullerSplitDebugCounter.VisibleInstances], + visibleInstancesOnGPU = 0, // Unknown at this point, will be filled in later + visiblePrimitivesOnCPU = m_Counters[counterBase + (int)InstanceCullerSplitDebugCounter.VisiblePrimitives], + visiblePrimitivesOnGPU = 0, // Unknown at this point, will be filled in later drawCommands = m_Counters[counterBase + (int)InstanceCullerSplitDebugCounter.DrawCommands], }); } @@ -1442,8 +1465,10 @@ public void MoveToDebugStatsAndClear(DebugRendererBatcherStats debugStats) } int counterBase = index * (int)InstanceOcclusionTestDebugCounter.Count; - int occludedCounter = m_LatestCounters[counterBase + (int)InstanceOcclusionTestDebugCounter.Occluded]; - int notOccludedCounter = m_LatestCounters[counterBase + (int)InstanceOcclusionTestDebugCounter.NotOccluded]; + int instancesOccludedCounter = m_LatestCounters[counterBase + (int)InstanceOcclusionTestDebugCounter.InstancesOccluded]; + int instancesNotOccludedCounter = m_LatestCounters[counterBase + (int)InstanceOcclusionTestDebugCounter.InstancesNotOccluded]; + int primitivesOccludedCounter = m_LatestCounters[counterBase + (int)InstanceOcclusionTestDebugCounter.PrimitivesOccluded]; + int primitivesNotOccludedCounter = m_LatestCounters[counterBase + (int)InstanceOcclusionTestDebugCounter.PrimitivesNotOccluded]; debugStats.instanceOcclusionEventStats.Add(new InstanceOcclusionEventStats { @@ -1452,8 +1477,10 @@ public void MoveToDebugStatsAndClear(DebugRendererBatcherStats debugStats) occluderVersion = occluderVersion, subviewMask = info.subviewMask, occlusionTest = info.occlusionTest, - visibleInstances = notOccludedCounter, - culledInstances = occludedCounter, + visibleInstances = instancesNotOccludedCounter, + culledInstances = instancesOccludedCounter, + visiblePrimitives = primitivesNotOccludedCounter, + culledPrimitives = primitivesOccludedCounter, }); } } @@ -1531,25 +1558,6 @@ internal void Init(GPUResidentDrawerResources resources, DebugRendererBatcherSta m_CommandBuffer.name = "EnsureValidOcclusionTestResults"; } - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] - private unsafe struct SetupCullingJobInput : IJob - { - public float lodBias; - [NativeDisableUnsafePtrRestriction] public BatchCullingContext* context; - [NativeDisableUnsafePtrRestriction] public ReceiverPlanes* receiverPlanes; - [NativeDisableUnsafePtrRestriction] public ReceiverSphereCuller* receiverSphereCuller; - [NativeDisableUnsafePtrRestriction] public FrustumPlaneCuller* frustumPlaneCuller; - [NativeDisableUnsafePtrRestriction] public float* screenRelativeMetric; - - public void Execute() - { - *receiverPlanes = ReceiverPlanes.Create(*context, Allocator.TempJob); - *receiverSphereCuller = ReceiverSphereCuller.Create(*context, Allocator.TempJob); - *frustumPlaneCuller = FrustumPlaneCuller.Create(*context, receiverPlanes->planes.AsArray(), *receiverSphereCuller, Allocator.TempJob); - *screenRelativeMetric = LODGroupRenderingUtils.CalculateScreenRelativeMetric(context->lodParameters, lodBias); - } - } - private unsafe JobHandle CreateFrustumCullingJob( in BatchCullingContext cc, in CPUInstanceData.ReadOnly instanceData, @@ -1561,7 +1569,7 @@ private unsafe JobHandle CreateFrustumCullingJob( NativeArray rendererVisibilityMasks, NativeArray rendererCrossFadeValues) { - Assert.IsTrue(cc.cullingSplits.Length <= 6, "InstanceCullingBatcher supports up to 6 culling splits."); + Assert.IsTrue(cc.cullingSplits.Length <= 6, "InstanceCuller supports up to 6 culling splits."); ReceiverPlanes receiverPlanes; ReceiverSphereCuller receiverSphereCuller; @@ -1570,16 +1578,8 @@ private unsafe JobHandle CreateFrustumCullingJob( fixed (BatchCullingContext* contextPtr = &cc) { - new SetupCullingJobInput() - { - lodBias = QualitySettings.lodBias, - context = contextPtr, - frustumPlaneCuller = &frustumPlaneCuller, - receiverPlanes = &receiverPlanes, - receiverSphereCuller = &receiverSphereCuller, - screenRelativeMetric = &screenRelativeMetric, - - }.Run(); + InstanceCullerBurst.SetupCullingJobInput(QualitySettings.lodBias, contextPtr, &receiverPlanes, &receiverSphereCuller, + &frustumPlaneCuller, &screenRelativeMetric); } if (occlusionCullingCommon != null) @@ -2296,6 +2296,7 @@ private void FlushDebugCounters() { m_SplitDebugArray.MoveToDebugStatsAndClear(m_DebugStats); m_OcclusionEventDebugArray.MoveToDebugStatsAndClear(m_DebugStats); + m_DebugStats.FinalizeInstanceCullerViewStats(); } } diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullerBurst.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullerBurst.cs new file mode 100644 index 00000000000..d123762dfd3 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullerBurst.cs @@ -0,0 +1,19 @@ +using Unity.Collections; +using Unity.Burst; + +namespace UnityEngine.Rendering +{ + [BurstCompile] + internal static class InstanceCullerBurst + { + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static unsafe void SetupCullingJobInput(float lodBias, BatchCullingContext* context, ReceiverPlanes* receiverPlanes, + ReceiverSphereCuller* receiverSphereCuller, FrustumPlaneCuller* frustumPlaneCuller, float* screenRelativeMetric) + { + *receiverPlanes = ReceiverPlanes.Create(*context, Allocator.TempJob); + *receiverSphereCuller = ReceiverSphereCuller.Create(*context, Allocator.TempJob); + *frustumPlaneCuller = FrustumPlaneCuller.Create(*context, receiverPlanes->planes.AsArray(), *receiverSphereCuller, Allocator.TempJob); + *screenRelativeMetric = LODGroupRenderingUtils.CalculateScreenRelativeMetric(context->lodParameters, lodBias); + } + } +} diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullerBurst.cs.meta b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullerBurst.cs.meta new file mode 100644 index 00000000000..dc1b8acb849 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullerBurst.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 99f3de5decfa27b47a4ab725fc059f50 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullingBatcher.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullingBatcher.cs index 75378aee01c..3c74fa93ab8 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullingBatcher.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullingBatcher.cs @@ -358,6 +358,7 @@ public unsafe void Execute() } [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + internal struct UpdatePackedMaterialDataCacheJob : IJob { [ReadOnly] public NativeArray.ReadOnly materialIDs; @@ -384,245 +385,6 @@ public void Execute() } } - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] - internal struct CreateDrawBatchesJob : IJob - { - [ReadOnly] public bool implicitInstanceIndices; - [ReadOnly] public NativeArray instances; - [ReadOnly] public GPUDrivenRendererGroupData rendererData; - [ReadOnly] public NativeParallelHashMap.ReadOnly batchMeshHash; - [ReadOnly] public NativeParallelHashMap.ReadOnly batchMaterialHash; - [ReadOnly] public NativeParallelHashMap.ReadOnly packedMaterialDataHash; - - public NativeParallelHashMap rangeHash; - public NativeList drawRanges; - public NativeParallelHashMap batchHash; - public NativeList drawBatches; - - [WriteOnly] public NativeList drawInstances; - - private ref DrawRange EditDrawRange(in RangeKey key) - { - int drawRangeIndex; - - if (!rangeHash.TryGetValue(key, out drawRangeIndex)) - { - var drawRange = new DrawRange { key = key, drawCount = 0, drawOffset = 0 }; - drawRangeIndex = drawRanges.Length; - rangeHash.Add(key, drawRangeIndex); - drawRanges.Add(drawRange); - } - - ref DrawRange data = ref drawRanges.ElementAt(drawRangeIndex); - Assert.IsTrue(data.key.Equals(key)); - - return ref data; - } - - private ref DrawBatch EditDrawBatch(in DrawKey key, in SubMeshDescriptor subMeshDescriptor) - { - var procInfo = new MeshProceduralInfo(); - procInfo.topology = subMeshDescriptor.topology; - procInfo.baseVertex = (uint)subMeshDescriptor.baseVertex; - procInfo.firstIndex = (uint)subMeshDescriptor.indexStart; - procInfo.indexCount = (uint)subMeshDescriptor.indexCount; - - int drawBatchIndex; - - if (!batchHash.TryGetValue(key, out drawBatchIndex)) - { - var drawBatch = new DrawBatch() { key = key, instanceCount = 0, instanceOffset = 0, procInfo = procInfo }; - drawBatchIndex = drawBatches.Length; - batchHash.Add(key, drawBatchIndex); - drawBatches.Add(drawBatch); - } - - ref DrawBatch data = ref drawBatches.ElementAt(drawBatchIndex); - Assert.IsTrue(data.key.Equals(key)); - - return ref data; - } - - public void ProcessRenderer(int i) - { - var meshIndex = rendererData.meshIndex[i]; - var meshID = rendererData.meshID[meshIndex]; - var submeshCount = rendererData.subMeshCount[meshIndex]; - var subMeshDescOffset = rendererData.subMeshDescOffset[meshIndex]; - var batchMeshID = batchMeshHash[meshID]; - var rendererGroupID = rendererData.rendererGroupID[i]; - var startSubMesh = rendererData.subMeshStartIndex[i]; - var gameObjectLayer = rendererData.gameObjectLayer[i]; - var renderingLayerMask = rendererData.renderingLayerMask[i]; - var materialsOffset = rendererData.materialsOffset[i]; - var materialsCount = rendererData.materialsCount[i]; - var lightmapIndex = rendererData.lightmapIndex[i]; - var packedRendererData = rendererData.packedRendererData[i]; - var rendererPriority = rendererData.rendererPriority[i]; - - int instanceCount; - int instanceOffset; - - if (implicitInstanceIndices) - { - instanceCount = 1; - instanceOffset = i; - } - else - { - instanceCount = rendererData.instancesCount[i]; - instanceOffset = rendererData.instancesOffset[i]; - } - - if (instanceCount == 0) - return; - - const int kLightmapIndexMask = 0xffff; - const int kLightmapIndexInfluenceOnly = 0xfffe; - - var overridenComponents = InstanceComponentGroup.Default; - - // Add per-instance wind parameters - if(packedRendererData.hasTree) - overridenComponents |= InstanceComponentGroup.Wind; - - var lmIndexMasked = lightmapIndex & kLightmapIndexMask; - - // Object doesn't have a valid lightmap Index, -> uses probes for lighting - if (lmIndexMasked >= kLightmapIndexInfluenceOnly) - { - // Only add the component when needed to store blended results (shader will use the ambient probe when not present) - if (packedRendererData.lightProbeUsage == LightProbeUsage.BlendProbes) - overridenComponents |= InstanceComponentGroup.LightProbe; - } - else - { - // Add per-instance lightmap parameters - overridenComponents |= InstanceComponentGroup.Lightmap; - } - - // Scan all materials once to retrieve whether this renderer is indirect-compatible or not (and store it in the RangeKey). - Span packedMaterialDatas = stackalloc GPUDrivenPackedMaterialData[materialsCount]; - - var supportsIndirect = true; - for (int matIndex = 0; matIndex < materialsCount; ++matIndex) - { - if (matIndex >= submeshCount) - { - Debug.LogWarning("Material count in the shared material list is higher than sub mesh count for the mesh. Object may be corrupted."); - continue; - } - - var materialIndex = rendererData.materialIndex[materialsOffset + matIndex]; - GPUDrivenPackedMaterialData packedMaterialData; - - if (rendererData.packedMaterialData.Length > 0) - { - packedMaterialData = rendererData.packedMaterialData[materialIndex]; - } - else - { - var materialID = rendererData.materialID[materialIndex]; - bool isFound = packedMaterialDataHash.TryGetValue(materialID, out packedMaterialData); - Assert.IsTrue(isFound, "Packed material data not found."); - } - supportsIndirect &= packedMaterialData.isIndirectSupported; - - packedMaterialDatas[matIndex] = packedMaterialData; - } - - var rangeKey = new RangeKey - { - layer = (byte)gameObjectLayer, - renderingLayerMask = renderingLayerMask, - motionMode = packedRendererData.motionVecGenMode, - shadowCastingMode = packedRendererData.shadowCastingMode, - staticShadowCaster = packedRendererData.staticShadowCaster, - rendererPriority = rendererPriority, - supportsIndirect = supportsIndirect - }; - - ref DrawRange drawRange = ref EditDrawRange(rangeKey); - - for (int matIndex = 0; matIndex < materialsCount; ++matIndex) - { - if (matIndex >= submeshCount) - { - Debug.LogWarning("Material count in the shared material list is higher than sub mesh count for the mesh. Object may be corrupted."); - continue; - } - - var materialIndex = rendererData.materialIndex[materialsOffset + matIndex]; - var materialID = rendererData.materialID[materialIndex]; - var packedMaterialData = packedMaterialDatas[matIndex]; - - if (materialID == 0) - { - Debug.LogWarning("Material in the shared materials list is null. Object will be partially rendered."); - continue; - } - - batchMaterialHash.TryGetValue(materialID, out BatchMaterialID batchMaterialID); - - // We always provide crossfade value packed in instance index. We don't use None even if there is no LOD to not split the batch. - var flags = BatchDrawCommandFlags.LODCrossFadeValuePacked; - - // Let the engine know if we've opted out of lightmap texture arrays - flags |= BatchDrawCommandFlags.UseLegacyLightmapsKeyword; - - // assume that a custom motion vectors pass contains deformation motion, so should always output motion vectors - // (otherwise this flag is set dynamically during culling only when the transform is changing) - if (packedMaterialData.isMotionVectorsPassEnabled) - flags |= BatchDrawCommandFlags.HasMotion; - - if (packedMaterialData.isTransparent) - flags |= BatchDrawCommandFlags.HasSortingPosition; - - { - var submeshIndex = startSubMesh + matIndex; - var subMeshDesc = rendererData.subMeshDesc[subMeshDescOffset + submeshIndex]; - - var drawKey = new DrawKey - { - materialID = batchMaterialID, - meshID = batchMeshID, - submeshIndex = submeshIndex, - flags = flags, - transparentInstanceId = packedMaterialData.isTransparent ? rendererGroupID : 0, - range = rangeKey, - overridenComponents = (uint)overridenComponents, - // When we've opted out of lightmap texture arrays, we - // need to pass in a valid lightmap index. The engine - // uses this index for sorting and for breaking the - // batch when lightmaps change across draw calls, and - // for binding the correct light map. - lightmapIndex = lightmapIndex - }; - - ref DrawBatch drawBatch = ref EditDrawBatch(drawKey, subMeshDesc); - - if (drawBatch.instanceCount == 0) - ++drawRange.drawCount; - - drawBatch.instanceCount += instanceCount; - - for (int j = 0; j < instanceCount; ++j) - { - var instanceIndex = instanceOffset + j; - InstanceHandle instance = instances[instanceIndex]; - drawInstances.Add(new DrawInstance { key = drawKey, instanceIndex = instance.index }); - } - } - } - } - - public void Execute() - { - for (int i = 0; i < rendererData.rendererGroupID.Length; ++i) - ProcessRenderer(i); - } - } - internal class CPUDrawInstanceData { public NativeList drawInstances => m_DrawInstances; @@ -720,23 +482,16 @@ public void RebuildDrawListsIfNeeded() internalDrawIndex.Dispose(); } - public unsafe void DestroyDrawInstanceIndices(NativeArray drawInstanceIndicesToDestroy) + public void DestroyDrawInstanceIndices(NativeArray drawInstanceIndicesToDestroy) { Profiler.BeginSample("DestroyDrawInstanceIndices.ParallelSort"); drawInstanceIndicesToDestroy.ParallelSort().Complete(); Profiler.EndSample(); - var removeDrawInstanceIndicesJob = new RemoveDrawInstanceIndicesJob - { - drawInstanceIndices = drawInstanceIndicesToDestroy, - drawInstances = m_DrawInstances, - drawBatches = m_DrawBatches, - drawRanges = m_DrawRanges, - batchHash = m_BatchHash, - rangeHash = m_RangeHash - }; - - removeDrawInstanceIndicesJob.Run(); + Profiler.BeginSample("DestroyDrawInstanceIndices.RemoveDrawInstanceIndices"); + InstanceCullingBatcherBurst.RemoveDrawInstanceIndices(drawInstanceIndicesToDestroy, ref m_DrawInstances, ref m_RangeHash, + ref m_BatchHash, ref m_DrawRanges, ref m_DrawBatches); + Profiler.EndSample(); } public unsafe void DestroyDrawInstances(NativeArray destroyedInstances) @@ -1150,20 +905,14 @@ public void BuildBatch( RegisterBatchMeshes(rendererData.meshID); } - new CreateDrawBatchesJob - { - implicitInstanceIndices = rendererData.instancesCount.Length == 0, - instances = instances, - rendererData = rendererData, - batchMeshHash = m_BatchMeshHash.AsReadOnly(), - batchMaterialHash = m_BatchMaterialHash.AsReadOnly(), - packedMaterialDataHash = m_PackedMaterialHash.AsReadOnly(), - rangeHash = m_DrawInstanceData.rangeHash, - drawRanges = m_DrawInstanceData.drawRanges, - batchHash = m_DrawInstanceData.batchHash, - drawBatches = m_DrawInstanceData.drawBatches, - drawInstances = m_DrawInstanceData.drawInstances - }.Run(); + var rangeHash = m_DrawInstanceData.rangeHash; + var drawRanges = m_DrawInstanceData.drawRanges; + var batchHash = m_DrawInstanceData.batchHash; + var drawBatches = m_DrawInstanceData.drawBatches; + var drawInstances = m_DrawInstanceData.drawInstances; + + InstanceCullingBatcherBurst.CreateDrawBatches(rendererData.instancesCount.Length == 0, instances, rendererData, + m_BatchMeshHash, m_BatchMaterialHash, m_PackedMaterialHash, ref rangeHash, ref drawRanges, ref batchHash, ref drawBatches, ref drawInstances); m_DrawInstanceData.NeedsRebuild(); UpdateInstanceDataBufferLayoutVersion(); diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullingBatcherBurst.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullingBatcherBurst.cs new file mode 100644 index 00000000000..0c7041101f7 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullingBatcherBurst.cs @@ -0,0 +1,302 @@ +using System; +using Unity.Collections; +using Unity.Burst; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Jobs; +using Unity.Mathematics; +using UnityEngine.Assertions; + +namespace UnityEngine.Rendering +{ + [BurstCompile] + internal static class InstanceCullingBatcherBurst + { + private static void RemoveDrawRange(in RangeKey key, ref NativeParallelHashMap rangeHash, ref NativeList drawRanges) + { + int drawRangeIndex = rangeHash[key]; + + ref DrawRange lastDrawRange = ref drawRanges.ElementAt(drawRanges.Length - 1); + rangeHash[lastDrawRange.key] = drawRangeIndex; + + rangeHash.Remove(key); + drawRanges.RemoveAtSwapBack(drawRangeIndex); + } + + private static void RemoveDrawBatch(in DrawKey key, ref NativeList drawRanges, ref NativeParallelHashMap rangeHash, + ref NativeParallelHashMap batchHash, ref NativeList drawBatches) + { + int drawBatchIndex = batchHash[key]; + + int drawRangeIndex = rangeHash[key.range]; + ref DrawRange drawRange = ref drawRanges.ElementAt(drawRangeIndex); + + Assert.IsTrue(drawRange.drawCount > 0); + + if (--drawRange.drawCount == 0) + RemoveDrawRange(drawRange.key, ref rangeHash, ref drawRanges); + + ref DrawBatch lastDrawBatch = ref drawBatches.ElementAt(drawBatches.Length - 1); + batchHash[lastDrawBatch.key] = drawBatchIndex; + + batchHash.Remove(key); + drawBatches.RemoveAtSwapBack(drawBatchIndex); + } + + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static unsafe void RemoveDrawInstanceIndices(in NativeArray drawInstanceIndices, ref NativeList drawInstances, ref NativeParallelHashMap rangeHash, + ref NativeParallelHashMap batchHash, ref NativeList drawRanges, ref NativeList drawBatches) + { + var drawInstancesPtr = (DrawInstance*)drawInstances.GetUnsafePtr(); + var drawInstancesNewBack = drawInstances.Length - 1; + + for (int indexRev = drawInstanceIndices.Length - 1; indexRev >= 0; --indexRev) + { + int indexToRemove = drawInstanceIndices[indexRev]; + DrawInstance* drawInstance = drawInstancesPtr + indexToRemove; + + int drawBatchIndex = batchHash[drawInstance->key]; + ref DrawBatch drawBatch = ref drawBatches.ElementAt(drawBatchIndex); + + Assert.IsTrue(drawBatch.instanceCount > 0); + + if (--drawBatch.instanceCount == 0) + RemoveDrawBatch(drawBatch.key, ref drawRanges, ref rangeHash, ref batchHash, ref drawBatches); + + UnsafeUtility.MemCpy(drawInstance, drawInstancesPtr + drawInstancesNewBack--, sizeof(DrawInstance)); + } + + drawInstances.ResizeUninitialized(drawInstancesNewBack + 1); + } + + private static ref DrawRange EditDrawRange(in RangeKey key, NativeParallelHashMap rangeHash, NativeList drawRanges) + { + int drawRangeIndex; + + if (!rangeHash.TryGetValue(key, out drawRangeIndex)) + { + var drawRange = new DrawRange { key = key, drawCount = 0, drawOffset = 0 }; + drawRangeIndex = drawRanges.Length; + rangeHash.Add(key, drawRangeIndex); + drawRanges.Add(drawRange); + } + + ref DrawRange data = ref drawRanges.ElementAt(drawRangeIndex); + Assert.IsTrue(data.key.Equals(key)); + + return ref data; + } + + private static ref DrawBatch EditDrawBatch(in DrawKey key, in SubMeshDescriptor subMeshDescriptor, NativeParallelHashMap batchHash, NativeList drawBatches) + { + var procInfo = new MeshProceduralInfo(); + procInfo.topology = subMeshDescriptor.topology; + procInfo.baseVertex = (uint)subMeshDescriptor.baseVertex; + procInfo.firstIndex = (uint)subMeshDescriptor.indexStart; + procInfo.indexCount = (uint)subMeshDescriptor.indexCount; + + int drawBatchIndex; + + if (!batchHash.TryGetValue(key, out drawBatchIndex)) + { + var drawBatch = new DrawBatch() { key = key, instanceCount = 0, instanceOffset = 0, procInfo = procInfo }; + drawBatchIndex = drawBatches.Length; + batchHash.Add(key, drawBatchIndex); + drawBatches.Add(drawBatch); + } + + ref DrawBatch data = ref drawBatches.ElementAt(drawBatchIndex); + Assert.IsTrue(data.key.Equals(key)); + + return ref data; + } + + private static void ProcessRenderer(int i, bool implicitInstanceIndices, in GPUDrivenRendererGroupData rendererData, + NativeParallelHashMap batchMeshHash, NativeParallelHashMap packedMaterialDataHash, + NativeParallelHashMap batchMaterialHash, NativeArray instances, NativeList drawInstances, + NativeParallelHashMap rangeHash, NativeList drawRanges, NativeParallelHashMap batchHash, + NativeList drawBatches) + { + var meshIndex = rendererData.meshIndex[i]; + var meshID = rendererData.meshID[meshIndex]; + var submeshCount = rendererData.subMeshCount[meshIndex]; + var subMeshDescOffset = rendererData.subMeshDescOffset[meshIndex]; + var batchMeshID = batchMeshHash[meshID]; + var rendererGroupID = rendererData.rendererGroupID[i]; + var startSubMesh = rendererData.subMeshStartIndex[i]; + var gameObjectLayer = rendererData.gameObjectLayer[i]; + var renderingLayerMask = rendererData.renderingLayerMask[i]; + var materialsOffset = rendererData.materialsOffset[i]; + var materialsCount = rendererData.materialsCount[i]; + var lightmapIndex = rendererData.lightmapIndex[i]; + var packedRendererData = rendererData.packedRendererData[i]; + var rendererPriority = rendererData.rendererPriority[i]; + + int instanceCount; + int instanceOffset; + + if (implicitInstanceIndices) + { + instanceCount = 1; + instanceOffset = i; + } + else + { + instanceCount = rendererData.instancesCount[i]; + instanceOffset = rendererData.instancesOffset[i]; + } + + if (instanceCount == 0) + return; + + const int kLightmapIndexMask = 0xffff; + const int kLightmapIndexInfluenceOnly = 0xfffe; + + var overridenComponents = InstanceComponentGroup.Default; + + // Add per-instance wind parameters + if(packedRendererData.hasTree) + overridenComponents |= InstanceComponentGroup.Wind; + + var lmIndexMasked = lightmapIndex & kLightmapIndexMask; + + // Object doesn't have a valid lightmap Index, -> uses probes for lighting + if (lmIndexMasked >= kLightmapIndexInfluenceOnly) + { + // Only add the component when needed to store blended results (shader will use the ambient probe when not present) + if (packedRendererData.lightProbeUsage == LightProbeUsage.BlendProbes) + overridenComponents |= InstanceComponentGroup.LightProbe; + } + else + { + // Add per-instance lightmap parameters + overridenComponents |= InstanceComponentGroup.Lightmap; + } + + // Scan all materials once to retrieve whether this renderer is indirect-compatible or not (and store it in the RangeKey). + Span packedMaterialDatas = stackalloc GPUDrivenPackedMaterialData[materialsCount]; + + var supportsIndirect = true; + for (int matIndex = 0; matIndex < materialsCount; ++matIndex) + { + if (matIndex >= submeshCount) + { + Debug.LogWarning("Material count in the shared material list is higher than sub mesh count for the mesh. Object may be corrupted."); + continue; + } + + var materialIndex = rendererData.materialIndex[materialsOffset + matIndex]; + GPUDrivenPackedMaterialData packedMaterialData; + + if (rendererData.packedMaterialData.Length > 0) + { + packedMaterialData = rendererData.packedMaterialData[materialIndex]; + } + else + { + var materialID = rendererData.materialID[materialIndex]; + bool isFound = packedMaterialDataHash.TryGetValue(materialID, out packedMaterialData); + Assert.IsTrue(isFound, "Packed material data not found."); + } + supportsIndirect &= packedMaterialData.isIndirectSupported; + + packedMaterialDatas[matIndex] = packedMaterialData; + } + + var rangeKey = new RangeKey + { + layer = (byte)gameObjectLayer, + renderingLayerMask = renderingLayerMask, + motionMode = packedRendererData.motionVecGenMode, + shadowCastingMode = packedRendererData.shadowCastingMode, + staticShadowCaster = packedRendererData.staticShadowCaster, + rendererPriority = rendererPriority, + supportsIndirect = supportsIndirect + }; + + ref DrawRange drawRange = ref EditDrawRange(rangeKey, rangeHash, drawRanges); + + for (int matIndex = 0; matIndex < materialsCount; ++matIndex) + { + if (matIndex >= submeshCount) + { + Debug.LogWarning("Material count in the shared material list is higher than sub mesh count for the mesh. Object may be corrupted."); + continue; + } + + var materialIndex = rendererData.materialIndex[materialsOffset + matIndex]; + var materialID = rendererData.materialID[materialIndex]; + var packedMaterialData = packedMaterialDatas[matIndex]; + + if (materialID == 0) + { + Debug.LogWarning("Material in the shared materials list is null. Object will be partially rendered."); + continue; + } + + batchMaterialHash.TryGetValue(materialID, out BatchMaterialID batchMaterialID); + + // We always provide crossfade value packed in instance index. We don't use None even if there is no LOD to not split the batch. + var flags = BatchDrawCommandFlags.LODCrossFadeValuePacked; + + // Let the engine know if we've opted out of lightmap texture arrays + flags |= BatchDrawCommandFlags.UseLegacyLightmapsKeyword; + + // assume that a custom motion vectors pass contains deformation motion, so should always output motion vectors + // (otherwise this flag is set dynamically during culling only when the transform is changing) + if (packedMaterialData.isMotionVectorsPassEnabled) + flags |= BatchDrawCommandFlags.HasMotion; + + if (packedMaterialData.isTransparent) + flags |= BatchDrawCommandFlags.HasSortingPosition; + + { + var submeshIndex = startSubMesh + matIndex; + var subMeshDesc = rendererData.subMeshDesc[subMeshDescOffset + submeshIndex]; + + var drawKey = new DrawKey + { + materialID = batchMaterialID, + meshID = batchMeshID, + submeshIndex = submeshIndex, + flags = flags, + transparentInstanceId = packedMaterialData.isTransparent ? rendererGroupID : 0, + range = rangeKey, + overridenComponents = (uint)overridenComponents, + // When we've opted out of lightmap texture arrays, we + // need to pass in a valid lightmap index. The engine + // uses this index for sorting and for breaking the + // batch when lightmaps change across draw calls, and + // for binding the correct light map. + lightmapIndex = lightmapIndex + }; + + ref DrawBatch drawBatch = ref EditDrawBatch(drawKey, subMeshDesc, batchHash, drawBatches); + + if (drawBatch.instanceCount == 0) + ++drawRange.drawCount; + + drawBatch.instanceCount += instanceCount; + + for (int j = 0; j < instanceCount; ++j) + { + var instanceIndex = instanceOffset + j; + InstanceHandle instance = instances[instanceIndex]; + drawInstances.Add(new DrawInstance { key = drawKey, instanceIndex = instance.index }); + } + } + } + } + + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static void CreateDrawBatches(bool implicitInstanceIndices, in NativeArray instances, in GPUDrivenRendererGroupData rendererData, + in NativeParallelHashMap batchMeshHash, in NativeParallelHashMap batchMaterialHash, + in NativeParallelHashMap packedMaterialDataHash, + ref NativeParallelHashMap rangeHash, ref NativeList drawRanges, ref NativeParallelHashMap batchHash, ref NativeList drawBatches, + ref NativeList drawInstances) + { + for (int i = 0; i < rendererData.rendererGroupID.Length; ++i) + ProcessRenderer(i, implicitInstanceIndices, rendererData, batchMeshHash, packedMaterialDataHash, batchMaterialHash, instances, + drawInstances, rangeHash, drawRanges, batchHash, drawBatches); + } + } +} diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullingBatcherBurst.cs.meta b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullingBatcherBurst.cs.meta new file mode 100644 index 00000000000..1b344d835a7 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceCullingBatcherBurst.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 07b72b6a7afa9b448b3103bb66d57ca0 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystem.Jobs.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystem.Jobs.cs index 27c3fd30ed1..5de08a63be5 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystem.Jobs.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystem.Jobs.cs @@ -482,213 +482,6 @@ public void Execute(int chunk_index) } } - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] - private struct ReallocateInstancesJob : IJob - { - [ReadOnly] public bool implicitInstanceIndices; - [ReadOnly] public NativeArray rendererGroupIDs; - [ReadOnly] public NativeArray packedRendererData; - [ReadOnly] public NativeArray instanceOffsets; - [ReadOnly] public NativeArray instanceCounts; - - public InstanceAllocators instanceAllocators; - public CPUInstanceData instanceData; - public CPUSharedInstanceData sharedInstanceData; - public NativeArray instances; - public NativeParallelMultiHashMap rendererGroupInstanceMultiHash; - - public void Execute() - { - for (int i = 0; i < rendererGroupIDs.Length; ++i) - { - var rendererGroupID = rendererGroupIDs[i]; - var hasTree = packedRendererData[i].hasTree; - - int instanceCount; - int instanceOffset; - - if (implicitInstanceIndices) - { - instanceCount = 1; - instanceOffset = i; - } - else - { - instanceCount = instanceCounts[i]; - instanceOffset = instanceOffsets[i]; - } - - SharedInstanceHandle sharedInstance; - - if (rendererGroupInstanceMultiHash.TryGetFirstValue(rendererGroupID, out var instance, out var it)) - { - sharedInstance = instanceData.Get_SharedInstance(instance); - - int currentInstancesCount = sharedInstanceData.Get_RefCount(sharedInstance); - int instancesToFreeCount = currentInstancesCount - instanceCount; - - if (instancesToFreeCount > 0) - { - bool success = true; - int freedInstancesCount = 0; - - for (int j = 0; j < instanceCount; ++j) - success = rendererGroupInstanceMultiHash.TryGetNextValue(out instance, ref it); - - Assert.IsTrue(success); - - while (success) - { - instanceData.Remove(instance); - instanceAllocators.FreeInstance(instance); - - rendererGroupInstanceMultiHash.Remove(it); - ++freedInstancesCount; - success = rendererGroupInstanceMultiHash.TryGetNextValue(out instance, ref it); - } - - Assert.AreEqual(instancesToFreeCount, freedInstancesCount); - } - } - else - { - sharedInstance = instanceAllocators.AllocateSharedInstance(); - sharedInstanceData.AddNoGrow(sharedInstance); - } - - if (instanceCount > 0) - { - sharedInstanceData.Set_RefCount(sharedInstance, instanceCount); - - for (int j = 0; j < instanceCount; ++j) - { - int instanceIndex = instanceOffset + j; - - if (instances[instanceIndex].valid) - continue; - - InstanceHandle newInstance; - - if (!hasTree) - newInstance = instanceAllocators.AllocateInstance(InstanceType.MeshRenderer); - else - newInstance = instanceAllocators.AllocateInstance(InstanceType.SpeedTree); - - instanceData.AddNoGrow(newInstance); - int index = instanceData.InstanceToIndex(newInstance); - instanceData.sharedInstances[index] = sharedInstance; - instanceData.movedInCurrentFrameBits.Set(index, false); - instanceData.movedInPreviousFrameBits.Set(index, false); - instanceData.visibleInPreviousFrameBits.Set(index, false); - - rendererGroupInstanceMultiHash.Add(rendererGroupID, newInstance); - instances[instanceIndex] = newInstance; - } - } - else - { - sharedInstanceData.Remove(sharedInstance); - instanceAllocators.FreeSharedInstance(sharedInstance); - } - } - } - } - - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] - private struct FreeInstancesJob : IJob - { - [ReadOnly] public NativeArray instances; - - public InstanceAllocators instanceAllocators; - public CPUInstanceData instanceData; - public CPUSharedInstanceData sharedInstanceData; - public NativeParallelMultiHashMap rendererGroupInstanceMultiHash; - - public void Execute() - { - foreach (var instance in instances) - { - if (!instanceData.IsValidInstance(instance)) - continue; - - int instanceIndex = instanceData.InstanceToIndex(instance); - SharedInstanceHandle sharedInstance = instanceData.sharedInstances[instanceIndex]; - int sharedInstanceIndex = sharedInstanceData.SharedInstanceToIndex(sharedInstance); - int refCount = sharedInstanceData.refCounts[sharedInstanceIndex]; - var rendererGroupID = sharedInstanceData.rendererGroupIDs[sharedInstanceIndex]; - - Assert.IsTrue(refCount > 0); - - if (refCount > 1) - { - sharedInstanceData.refCounts[sharedInstanceIndex] = refCount - 1; - } - else - { - sharedInstanceData.Remove(sharedInstance); - instanceAllocators.FreeSharedInstance(sharedInstance); - } - - instanceData.Remove(instance); - instanceAllocators.FreeInstance(instance); - - //@ This will have quadratic cost. Optimize later. - for (bool success = rendererGroupInstanceMultiHash.TryGetFirstValue(rendererGroupID, out var i, out var it); success;) - { - if (instance.Equals(i)) - { - rendererGroupInstanceMultiHash.Remove(it); - break; - } - success = rendererGroupInstanceMultiHash.TryGetNextValue(out i, ref it); - } - } - } - } - - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] - private struct FreeRendererGroupInstancesJob : IJob - { - [ReadOnly] public NativeArray rendererGroupsID; - - public InstanceAllocators instanceAllocators; - public CPUInstanceData instanceData; - public CPUSharedInstanceData sharedInstanceData; - public NativeParallelMultiHashMap rendererGroupInstanceMultiHash; - - public void Execute() - { - foreach (var rendererGroupID in rendererGroupsID) - { - for (bool success = rendererGroupInstanceMultiHash.TryGetFirstValue(rendererGroupID, out var instance, out var it); success;) - { - SharedInstanceHandle sharedInstance = instanceData.Get_SharedInstance(instance); - int sharedInstanceIndex = sharedInstanceData.SharedInstanceToIndex(sharedInstance); - int refCount = sharedInstanceData.refCounts[sharedInstanceIndex]; - - Assert.IsTrue(refCount > 0); - - if (refCount > 1) - { - sharedInstanceData.refCounts[sharedInstanceIndex] = refCount - 1; - } - else - { - sharedInstanceData.Remove(sharedInstance); - instanceAllocators.FreeSharedInstance(sharedInstance); - } - - instanceData.Remove(instance); - instanceAllocators.FreeInstance(instance); - - success = rendererGroupInstanceMultiHash.TryGetNextValue(out instance, ref it); - } - - rendererGroupInstanceMultiHash.Remove(rendererGroupID); - } - } - } - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] private unsafe struct UpdateRendererInstancesJob : IJobParallelFor { diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystem.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystem.cs index 9ed79f922ae..1649aeec519 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystem.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystem.cs @@ -475,24 +475,21 @@ public unsafe void ReallocateAndGetInstances(in GPUDrivenRendererGroupData rende m_InstanceData.EnsureFreeInstances(newInstancesCount); m_SharedInstanceData.EnsureFreeInstances(newSharedInstancesCount); - new ReallocateInstancesJob { implicitInstanceIndices = implicitInstanceIndices, rendererGroupInstanceMultiHash = m_RendererGroupInstanceMultiHash, - instanceAllocators = m_InstanceAllocators, sharedInstanceData = m_SharedInstanceData, instanceData = m_InstanceData, - rendererGroupIDs = rendererData.rendererGroupID, packedRendererData = rendererData.packedRendererData, instanceOffsets = rendererData.instancesOffset, - instanceCounts = rendererData.instancesCount, instances = instances }.Run(); + InstanceDataSystemBurst.ReallocateInstances(implicitInstanceIndices, rendererData.rendererGroupID, rendererData.packedRendererData, + rendererData.instancesOffset, rendererData.instancesCount, ref m_InstanceAllocators, ref m_InstanceData, + ref m_SharedInstanceData, ref instances, ref m_RendererGroupInstanceMultiHash); } public void FreeRendererGroupInstances(NativeArray rendererGroupsID) { - new FreeRendererGroupInstancesJob { rendererGroupInstanceMultiHash = m_RendererGroupInstanceMultiHash, - instanceAllocators = m_InstanceAllocators, sharedInstanceData = m_SharedInstanceData, instanceData = m_InstanceData, - rendererGroupsID = rendererGroupsID }.Run(); + InstanceDataSystemBurst.FreeRendererGroupInstances(rendererGroupsID.AsReadOnly(), ref m_InstanceAllocators, ref m_InstanceData, + ref m_SharedInstanceData, ref m_RendererGroupInstanceMultiHash); } public void FreeInstances(NativeArray instances) { - new FreeInstancesJob { rendererGroupInstanceMultiHash = m_RendererGroupInstanceMultiHash, - instanceAllocators = m_InstanceAllocators, sharedInstanceData = m_SharedInstanceData, instanceData = m_InstanceData, - instances = instances }.Run(); + InstanceDataSystemBurst.FreeInstances(instances.AsReadOnly(), ref m_InstanceAllocators, ref m_InstanceData, + ref m_SharedInstanceData, ref m_RendererGroupInstanceMultiHash); } public JobHandle ScheduleUpdateInstanceDataJob(NativeArray instances, in GPUDrivenRendererGroupData rendererData, NativeParallelHashMap lodGroupDataMap) diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystemBurst.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystemBurst.cs new file mode 100644 index 00000000000..617cac7f6e7 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystemBurst.cs @@ -0,0 +1,190 @@ +using Unity.Collections; +using Unity.Burst; +using UnityEngine.Assertions; + +namespace UnityEngine.Rendering +{ + [BurstCompile] + internal static class InstanceDataSystemBurst + { + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static void ReallocateInstances(bool implicitInstanceIndices, in NativeArray rendererGroupIDs, in NativeArray packedRendererData, + in NativeArray instanceOffsets, in NativeArray instanceCounts, ref InstanceAllocators instanceAllocators, ref CPUInstanceData instanceData, + ref CPUSharedInstanceData sharedInstanceData, ref NativeArray instances, + ref NativeParallelMultiHashMap rendererGroupInstanceMultiHash) + { + for (int i = 0; i < rendererGroupIDs.Length; ++i) + { + var rendererGroupID = rendererGroupIDs[i]; + var hasTree = packedRendererData[i].hasTree; + + int instanceCount; + int instanceOffset; + + if (implicitInstanceIndices) + { + instanceCount = 1; + instanceOffset = i; + } + else + { + instanceCount = instanceCounts[i]; + instanceOffset = instanceOffsets[i]; + } + + SharedInstanceHandle sharedInstance; + + if (rendererGroupInstanceMultiHash.TryGetFirstValue(rendererGroupID, out var instance, out var it)) + { + sharedInstance = instanceData.Get_SharedInstance(instance); + + int currentInstancesCount = sharedInstanceData.Get_RefCount(sharedInstance); + int instancesToFreeCount = currentInstancesCount - instanceCount; + + if (instancesToFreeCount > 0) + { + bool success = true; + int freedInstancesCount = 0; + + for (int j = 0; j < instanceCount; ++j) + success = rendererGroupInstanceMultiHash.TryGetNextValue(out instance, ref it); + + Assert.IsTrue(success); + + while (success) + { + var idx = instanceData.InstanceToIndex(instance); + instanceData.Remove(instance); + instanceAllocators.FreeInstance(instance); + + rendererGroupInstanceMultiHash.Remove(it); + ++freedInstancesCount; + success = rendererGroupInstanceMultiHash.TryGetNextValue(out instance, ref it); + } + + Assert.AreEqual(instancesToFreeCount, freedInstancesCount); + } + } + else + { + sharedInstance = instanceAllocators.AllocateSharedInstance(); + sharedInstanceData.AddNoGrow(sharedInstance); + } + + if (instanceCount > 0) + { + sharedInstanceData.Set_RefCount(sharedInstance, instanceCount); + + for (int j = 0; j < instanceCount; ++j) + { + int instanceIndex = instanceOffset + j; + + if (instances[instanceIndex].valid) + continue; + + InstanceHandle newInstance; + + if (!hasTree) + newInstance = instanceAllocators.AllocateInstance(InstanceType.MeshRenderer); + else + newInstance = instanceAllocators.AllocateInstance(InstanceType.SpeedTree); + + instanceData.AddNoGrow(newInstance); + int index = instanceData.InstanceToIndex(newInstance); + instanceData.sharedInstances[index] = sharedInstance; + instanceData.movedInCurrentFrameBits.Set(index, false); + instanceData.movedInPreviousFrameBits.Set(index, false); + instanceData.visibleInPreviousFrameBits.Set(index, false); + + rendererGroupInstanceMultiHash.Add(rendererGroupID, newInstance); + instances[instanceIndex] = newInstance; + } + } + else + { + sharedInstanceData.Remove(sharedInstance); + instanceAllocators.FreeSharedInstance(sharedInstance); + } + } + } + + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static void FreeRendererGroupInstances(in NativeArray.ReadOnly rendererGroupsID, ref InstanceAllocators instanceAllocators, ref CPUInstanceData instanceData, + ref CPUSharedInstanceData sharedInstanceData, ref NativeParallelMultiHashMap rendererGroupInstanceMultiHash) + { + foreach (var rendererGroupID in rendererGroupsID) + { + for (bool success = rendererGroupInstanceMultiHash.TryGetFirstValue(rendererGroupID, out var instance, out var it); success;) + { + SharedInstanceHandle sharedInstance = instanceData.Get_SharedInstance(instance); + int sharedInstanceIndex = sharedInstanceData.SharedInstanceToIndex(sharedInstance); + int refCount = sharedInstanceData.refCounts[sharedInstanceIndex]; + + Assert.IsTrue(refCount > 0); + + if (refCount > 1) + { + sharedInstanceData.refCounts[sharedInstanceIndex] = refCount - 1; + } + else + { + sharedInstanceData.Remove(sharedInstance); + instanceAllocators.FreeSharedInstance(sharedInstance); + } + + var idx = instanceData.InstanceToIndex(instance); + instanceData.Remove(instance); + instanceAllocators.FreeInstance(instance); + + success = rendererGroupInstanceMultiHash.TryGetNextValue(out instance, ref it); + } + + rendererGroupInstanceMultiHash.Remove(rendererGroupID); + } + } + + + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static void FreeInstances(in NativeArray.ReadOnly instances, ref InstanceAllocators instanceAllocators, ref CPUInstanceData instanceData, + ref CPUSharedInstanceData sharedInstanceData, ref NativeParallelMultiHashMap rendererGroupInstanceMultiHash) + { + foreach (var instance in instances) + { + if (!instanceData.IsValidInstance(instance)) + continue; + + int instanceIndex = instanceData.InstanceToIndex(instance); + SharedInstanceHandle sharedInstance = instanceData.sharedInstances[instanceIndex]; + int sharedInstanceIndex = sharedInstanceData.SharedInstanceToIndex(sharedInstance); + int refCount = sharedInstanceData.refCounts[sharedInstanceIndex]; + var rendererGroupID = sharedInstanceData.rendererGroupIDs[sharedInstanceIndex]; + + Assert.IsTrue(refCount > 0); + + if (refCount > 1) + { + sharedInstanceData.refCounts[sharedInstanceIndex] = refCount - 1; + } + else + { + sharedInstanceData.Remove(sharedInstance); + instanceAllocators.FreeSharedInstance(sharedInstance); + } + + instanceData.Remove(instance); + instanceAllocators.FreeInstance(instance); + + //@ This will have quadratic cost. Optimize later. + for (bool success = rendererGroupInstanceMultiHash.TryGetFirstValue(rendererGroupID, out var i, out var it); success;) + { + if (instance.Equals(i)) + { + rendererGroupInstanceMultiHash.Remove(it); + break; + } + success = rendererGroupInstanceMultiHash.TryGetNextValue(out i, ref it); + } + } + } + } +} diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystemBurst.cs.meta b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystemBurst.cs.meta new file mode 100644 index 00000000000..8613808fb3e --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceData/InstanceDataSystemBurst.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 302f596d55264be4ba359e52ec407766 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceOcclusionCuller.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceOcclusionCuller.cs index 6bc76a174c9..66adf030165 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceOcclusionCuller.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceOcclusionCuller.cs @@ -74,8 +74,10 @@ public void UseForOccluderUpdate(IBaseRenderGraphBuilder builder) [GenerateHLSL(needAccessors = false)] internal enum InstanceOcclusionTestDebugCounter { - Occluded, - NotOccluded, + InstancesOccluded, + InstancesNotOccluded, + PrimitivesOccluded, + PrimitivesNotOccluded, Count, } @@ -93,7 +95,7 @@ internal struct IndirectDrawInfo public uint firstIndex; public uint baseVertex; public uint firstInstanceGlobalIndex; - public uint maxInstanceCount; + public uint maxInstanceCountAndTopology; // [31:3]=max_instance_count, [2:0]=topology } internal struct IndirectBufferAllocInfo @@ -280,7 +282,7 @@ private void AllocateTexturesIfNecessary(bool debugOverlayEnabled) occluderDepthPyramid = RTHandles.Alloc( occluderDepthPyramidSize.x, occluderDepthPyramidSize.y, format: GraphicsFormat.R32_SFloat, - dimension: TextureDimension.Tex2D, + dimension: TextureDimension.Tex2D, filterMode: FilterMode.Point, wrapMode: TextureWrapMode.Clamp, enableRandomWrite: true, diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceOcclusionCuller.cs.hlsl b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceOcclusionCuller.cs.hlsl index f9aab8a061f..832151f2e95 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceOcclusionCuller.cs.hlsl +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/InstanceOcclusionCuller.cs.hlsl @@ -7,9 +7,11 @@ // // UnityEngine.Rendering.InstanceOcclusionTestDebugCounter: static fields // -#define INSTANCEOCCLUSIONTESTDEBUGCOUNTER_OCCLUDED (0) -#define INSTANCEOCCLUSIONTESTDEBUGCOUNTER_NOT_OCCLUDED (1) -#define INSTANCEOCCLUSIONTESTDEBUGCOUNTER_COUNT (2) +#define INSTANCEOCCLUSIONTESTDEBUGCOUNTER_INSTANCES_OCCLUDED (0) +#define INSTANCEOCCLUSIONTESTDEBUGCOUNTER_INSTANCES_NOT_OCCLUDED (1) +#define INSTANCEOCCLUSIONTESTDEBUGCOUNTER_PRIMITIVES_OCCLUDED (2) +#define INSTANCEOCCLUSIONTESTDEBUGCOUNTER_PRIMITIVES_NOT_OCCLUDED (3) +#define INSTANCEOCCLUSIONTESTDEBUGCOUNTER_COUNT (4) // Generated from UnityEngine.Rendering.IndirectDrawInfo // PackingRules = Exact @@ -19,7 +21,7 @@ struct IndirectDrawInfo uint firstIndex; uint baseVertex; uint firstInstanceGlobalIndex; - uint maxInstanceCount; + uint maxInstanceCountAndTopology; }; // Generated from UnityEngine.Rendering.IndirectInstanceInfo diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPool.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPool.cs index 42705f501e6..b9e47a3b1f7 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPool.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPool.cs @@ -86,52 +86,6 @@ public unsafe void Execute(int index) } } - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] - internal unsafe struct AllocateOrGetLODGroupDataInstancesJob : IJob - { - [ReadOnly] public NativeArray lodGroupsID; - - public NativeList lodGroupsData; - public NativeList lodGroupCullingData; - public NativeParallelHashMap lodGroupDataHash; - public NativeList freeLODGroupDataHandles; - - [WriteOnly] public NativeArray lodGroupInstances; - - [NativeDisableUnsafePtrRestriction] public int* previousRendererCount; - - public void Execute() - { - int freeHandlesCount = freeLODGroupDataHandles.Length; - int lodDataLength = lodGroupsData.Length; - - for (int i = 0; i < lodGroupsID.Length; ++i) - { - int lodGroupID = lodGroupsID[i]; - - if (!lodGroupDataHash.TryGetValue(lodGroupID, out var lodGroupInstance)) - { - if (freeHandlesCount == 0) - lodGroupInstance = new GPUInstanceIndex() { index = lodDataLength++ }; - else - lodGroupInstance = freeLODGroupDataHandles[--freeHandlesCount]; - - lodGroupDataHash.TryAdd(lodGroupID, lodGroupInstance); - } - else - { - *previousRendererCount += lodGroupsData.ElementAt(lodGroupInstance.index).rendererCount; - } - - lodGroupInstances[i] = lodGroupInstance; - } - - freeLODGroupDataHandles.ResizeUninitialized(freeHandlesCount); - lodGroupsData.ResizeUninitialized(lodDataLength); - lodGroupCullingData.ResizeUninitialized(lodDataLength); - } - } - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] internal unsafe struct UpdateLODGroupDataJob : IJobParallelFor { @@ -219,38 +173,6 @@ public void Execute(int index) } } - [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] - internal unsafe struct FreeLODGroupDataJob : IJob - { - [ReadOnly] public NativeArray destroyedLODGroupsID; - - public NativeList lodGroupsData; - public NativeParallelHashMap lodGroupDataHash; - public NativeList freeLODGroupDataHandles; - - [NativeDisableUnsafePtrRestriction] public int* removedRendererCount; - - public void Execute() - { - foreach (int lodGroupID in destroyedLODGroupsID) - { - if (lodGroupDataHash.TryGetValue(lodGroupID, out var lodGroupInstance)) - { - Assert.IsTrue(lodGroupInstance.valid); - - lodGroupDataHash.Remove(lodGroupID); - freeLODGroupDataHandles.Add(lodGroupInstance); - - ref LODGroupData lodGroupData = ref lodGroupsData.ElementAt(lodGroupInstance.index); - Assert.IsTrue(lodGroupData.valid); - - *removedRendererCount += lodGroupData.rendererCount; - lodGroupData.valid = false; - } - } - } - } - internal class LODGroupDataPool : IDisposable { private NativeList m_LODGroupData; @@ -329,18 +251,9 @@ public unsafe void UpdateLODGroupData(in GPUDrivenLODGroupData inputData) var lodGroupInstances = new NativeArray(inputData.lodGroupID.Length, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); - int previousRendererCount = 0; - - new AllocateOrGetLODGroupDataInstancesJob - { - lodGroupsID = inputData.lodGroupID, - lodGroupsData = m_LODGroupData, - lodGroupCullingData = m_LODGroupCullingData, - lodGroupDataHash = m_LODGroupDataHash, - freeLODGroupDataHandles = m_FreeLODGroupDataHandles, - lodGroupInstances = lodGroupInstances, - previousRendererCount = &previousRendererCount - }.Run(); + int previousRendererCount = LODGroupDataPoolBurst.AllocateOrGetLODGroupDataInstances(inputData.lodGroupID, + ref m_LODGroupData, ref m_LODGroupCullingData, + ref m_LODGroupDataHash, ref m_FreeLODGroupDataHandles, ref lodGroupInstances); m_CrossfadedRendererCount -= previousRendererCount; Assert.IsTrue(m_CrossfadedRendererCount >= 0); @@ -367,21 +280,12 @@ public unsafe void UpdateLODGroupData(in GPUDrivenLODGroupData inputData) lodGroupInstances.Dispose(); } - public unsafe void FreeLODGroupData(NativeArray destroyedLODGroupsID) + public void FreeLODGroupData(NativeArray destroyedLODGroupsID) { if (destroyedLODGroupsID.Length == 0) return; - int removedRendererCount = 0; - - new FreeLODGroupDataJob - { - destroyedLODGroupsID = destroyedLODGroupsID, - lodGroupsData = m_LODGroupData, - lodGroupDataHash = m_LODGroupDataHash, - freeLODGroupDataHandles = m_FreeLODGroupDataHandles, - removedRendererCount = &removedRendererCount - }.Run(); + int removedRendererCount = LODGroupDataPoolBurst.FreeLODGroupData(destroyedLODGroupsID, ref m_LODGroupData, ref m_LODGroupDataHash, ref m_FreeLODGroupDataHandles); m_CrossfadedRendererCount -= removedRendererCount; Assert.IsTrue(m_CrossfadedRendererCount >= 0); diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPoolBurst.cs b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPoolBurst.cs new file mode 100644 index 00000000000..efe0342a9fe --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPoolBurst.cs @@ -0,0 +1,72 @@ +using Unity.Collections; +using Unity.Burst; +using UnityEngine.Assertions; + +namespace UnityEngine.Rendering +{ + [BurstCompile] + internal static class LODGroupDataPoolBurst + { + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static int FreeLODGroupData(in NativeArray destroyedLODGroupsID, ref NativeList lodGroupsData, + ref NativeParallelHashMap lodGroupDataHash, ref NativeList freeLODGroupDataHandles) + { + int removedRendererCount = 0; + + foreach (int lodGroupID in destroyedLODGroupsID) + { + if (lodGroupDataHash.TryGetValue(lodGroupID, out var lodGroupInstance)) + { + Assert.IsTrue(lodGroupInstance.valid); + + lodGroupDataHash.Remove(lodGroupID); + freeLODGroupDataHandles.Add(lodGroupInstance); + + ref LODGroupData lodGroupData = ref lodGroupsData.ElementAt(lodGroupInstance.index); + Assert.IsTrue(lodGroupData.valid); + + removedRendererCount += lodGroupData.rendererCount; + lodGroupData.valid = false; + } + } + + return removedRendererCount; + } + + [BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)] + public static int AllocateOrGetLODGroupDataInstances(in NativeArray lodGroupsID, ref NativeList lodGroupsData, ref NativeList lodGroupCullingData, + ref NativeParallelHashMap lodGroupDataHash, ref NativeList freeLODGroupDataHandles, ref NativeArray lodGroupInstances) + { + int freeHandlesCount = freeLODGroupDataHandles.Length; + int lodDataLength = lodGroupsData.Length; + int previousRendererCount = 0; + + for (int i = 0; i < lodGroupsID.Length; ++i) + { + int lodGroupID = lodGroupsID[i]; + + if (!lodGroupDataHash.TryGetValue(lodGroupID, out var lodGroupInstance)) + { + if (freeHandlesCount == 0) + lodGroupInstance = new GPUInstanceIndex() { index = lodDataLength++ }; + else + lodGroupInstance = freeLODGroupDataHandles[--freeHandlesCount]; + + lodGroupDataHash.TryAdd(lodGroupID, lodGroupInstance); + } + else + { + previousRendererCount += lodGroupsData.ElementAt(lodGroupInstance.index).rendererCount; + } + + lodGroupInstances[i] = lodGroupInstance; + } + + freeLODGroupDataHandles.ResizeUninitialized(freeHandlesCount); + lodGroupsData.ResizeUninitialized(lodDataLength); + lodGroupCullingData.ResizeUninitialized(lodDataLength); + + return previousRendererCount; + } + } +} diff --git a/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPoolBurst.cs.meta b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPoolBurst.cs.meta new file mode 100644 index 00000000000..6e2ab16b7ac --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/LODGroupDataPoolBurst.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ad57195e4230c9344a64d902de871991 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs index 71906191fb2..6ece01ffb8a 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeReferenceVolume.cs @@ -1685,6 +1685,9 @@ internal bool EnsureCurrentBakingSet(ProbeVolumeBakingSet bakingSet) //Ensure that all currently loaded scenes belong to the same set. foreach (var data in perSceneDataList) { + if (UnityEditor.SceneManagement.EditorSceneManager.IsPreviewScene(data.gameObject.scene)) + continue; // Ignore preview scenes - they are needed to make closed subscenes work + var set = ProbeVolumeBakingSet.GetBakingSetForScene(data.gameObject.scene); if (set != bakingSet) return false; diff --git a/Packages/com.unity.render-pipelines.core/Runtime/PostProcessing/LensFlareDataSRP.cs b/Packages/com.unity.render-pipelines.core/Runtime/PostProcessing/LensFlareDataSRP.cs index 675b9c52409..4eeb6e738b7 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/PostProcessing/LensFlareDataSRP.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/PostProcessing/LensFlareDataSRP.cs @@ -1,4 +1,3 @@ -using NUnit.Framework; using UnityEngine.Serialization; namespace UnityEngine.Rendering diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs index da5e67545ab..11166a9be4c 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs @@ -731,6 +731,25 @@ public TextureHandle CreateTexture(TextureHandle texture) return m_Resources.CreateTexture(m_Resources.GetTextureResourceDesc(texture.handle)); } + /// + /// Create a new Render Graph Texture resource using the descriptor from another texture. + /// + /// + /// This API cannot be called during the Render Graph execution, please call it outside of SetRenderFunc(). + /// + /// Texture from which the descriptor should be used. + /// The destination texture name. + /// Texture needs to be cleared on first use. + /// A new TextureHandle. + public TextureHandle CreateTexture(TextureHandle texture, string name, bool clear = false) + { + var destinationDesc = GetTextureDesc(texture); + destinationDesc.name = name; + destinationDesc.clearBuffer = clear; + + return m_Resources.CreateTexture(destinationDesc); + } + /// /// Create a new Render Graph Texture if the passed handle is invalid and use said handle as output. /// If the passed handle is valid, no texture is created. diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderPipelineResources/GPUDriven/InstanceOcclusionCullingKernels.compute b/Packages/com.unity.render-pipelines.core/Runtime/RenderPipelineResources/GPUDriven/InstanceOcclusionCullingKernels.compute index 883bfe6c3c1..fd055762f53 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderPipelineResources/GPUDriven/InstanceOcclusionCullingKernels.compute +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderPipelineResources/GPUDriven/InstanceOcclusionCullingKernels.compute @@ -61,7 +61,7 @@ SphereBound LoadInstanceBoundingSphere(uint instanceID) { float4 data = asfloat(_InstanceDataBuffer.Load4(_BoundingSphereInstanceDataAddress + instanceID * 16)); SphereBound b; - b.center = data.xyz; + b.center = data.xyz; b.radius = data.w; return b; } @@ -105,7 +105,7 @@ void CopyInstances(uint dispatchIdx : SV_DispatchThreadID) uint argsBase = DRAW_ARGS_INDEX(dispatchIdx); _DrawArgs[argsBase + 0] = drawInfo.indexCount; // IndirectDrawIndexedArgs.indexCountPerInstance - _DrawArgs[argsBase + 1] = drawInfo.maxInstanceCount << _InstanceMultiplierShift; // IndirectDrawIndexedArgs.instanceCount + _DrawArgs[argsBase + 1] = (drawInfo.maxInstanceCountAndTopology >> 3) << _InstanceMultiplierShift; // IndirectDrawIndexedArgs.instanceCount _DrawArgs[argsBase + 2] = drawInfo.firstIndex; // IndirectDrawIndexedArgs.startIndex _DrawArgs[argsBase + 3] = drawInfo.baseVertex; // IndirectDrawIndexedArgs.baseVertexIndex _DrawArgs[argsBase + 4] = 0; // IndirectDrawIndexedArgs.startInstance @@ -120,6 +120,19 @@ void CopyInstances(uint dispatchIdx : SV_DispatchThreadID) } } +uint GetPrimitiveCount(uint indexCount, uint topology, bool nativeQuads) +{ + switch (topology) + { + case /*MeshTopology.Triangles*/ 0: return indexCount / 3; + case /*MeshTopology.Quads*/ 2: return nativeQuads ? (indexCount / 4) : (indexCount / 4 * 2); + case /*MeshTopology.Lines*/ 3: return indexCount / 2; + case /*MeshTopology.LineStrip*/ 4: return (indexCount >= 1) ? (indexCount - 1) : 0; + case /*MeshTopology.Points*/ 5: return indexCount; + default: return 0; + } +} + [numthreads(64,1,1)] void CullInstances(uint instanceInfoOffset : SV_DispatchThreadID) { @@ -157,7 +170,7 @@ void CullInstances(uint instanceInfoOffset : SV_DispatchThreadID) isOccludedInAll = false; } isVisible = !isOccludedInAll; - + #ifdef OCCLUSION_FIRST_PASS // if we failed the occlusion check, then add to the list for the second pass if (!isVisible) @@ -173,8 +186,16 @@ void CullInstances(uint instanceInfoOffset : SV_DispatchThreadID) if (_DebugCounterIndex >= 0) { // TODO: sum each within wave, first thread in wave issues atomic add to memory - int counterIndex = isVisible ? INSTANCEOCCLUSIONTESTDEBUGCOUNTER_NOT_OCCLUDED : INSTANCEOCCLUSIONTESTDEBUGCOUNTER_OCCLUDED; + int counterIndex = isVisible ? INSTANCEOCCLUSIONTESTDEBUGCOUNTER_INSTANCES_NOT_OCCLUDED : INSTANCEOCCLUSIONTESTDEBUGCOUNTER_INSTANCES_OCCLUDED; InterlockedAdd(_OcclusionDebugCounters[_DebugCounterIndex*INSTANCEOCCLUSIONTESTDEBUGCOUNTER_COUNT + counterIndex], 1); + + IndirectDrawInfo drawInfo = LoadDrawInfo(drawOffset); + uint argsBase = DRAW_ARGS_INDEX(drawOffset); + uint indexCount = _DrawArgs[argsBase + 0]; // IndirectDrawIndexedArgs.indexCountPerInstance + uint topology = drawInfo.maxInstanceCountAndTopology & 7; + uint primitiveCount = GetPrimitiveCount(indexCount, topology, false); + counterIndex = isVisible ? INSTANCEOCCLUSIONTESTDEBUGCOUNTER_PRIMITIVES_NOT_OCCLUDED : INSTANCEOCCLUSIONTESTDEBUGCOUNTER_PRIMITIVES_OCCLUDED; + InterlockedAdd(_OcclusionDebugCounters[_DebugCounterIndex*INSTANCEOCCLUSIONTESTDEBUGCOUNTER_COUNT + counterIndex], primitiveCount); } if (isVisible) 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 7f14300b2fa..656fac7a6ce 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRPass.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRPass.cs @@ -22,6 +22,7 @@ public struct XRPassCreateInfo internal int cullingPassId; internal bool copyDepth; internal bool hasMotionVectorPass; + internal bool spaceWarpRightHandedNDC; #if ENABLE_VR && ENABLE_XR_MODULE internal UnityEngine.XR.XRDisplaySubsystem.XRRenderPass xrSdkRenderPass; @@ -103,6 +104,22 @@ public bool supportsFoveatedRendering /// public bool hasMotionVectorPass { get; private set; } + /// + /// Reports which NDC convention the render pipeline should use when calculating motion vectors. + /// if true, motion vector data must use the right-handed NDC space. If false motion vector data + /// must use the left-handed NDC space. + /// + /// + /// The render pipeline must write motion vector data to the . + /// + /// > [!NOTE] + /// > The OpenXR specification doesn't specify which coordinate space convention to use for the + /// > motion vector data. Unity only supports SpaceWarp when using the Vulkan graphics API, which uses the right-handed convention for normalized device coordinates, but + /// > devices still can choose either convention for motion data when the + /// > application is using the Vulkan graphics API. + /// + public bool spaceWarpRightHandedNDC { get; private set; } + /// /// If true, is the first pass of a xr camera /// @@ -466,6 +483,7 @@ public void InitBase(XRPassCreateInfo createInfo) motionVectorRenderTarget = new RenderTargetIdentifier(createInfo.motionVectorRenderTarget, 0, CubemapFace.Unknown, -1); motionVectorRenderTargetDesc = createInfo.motionVectorRenderTargetDesc; hasMotionVectorPass = createInfo.hasMotionVectorPass; + spaceWarpRightHandedNDC = createInfo.spaceWarpRightHandedNDC; m_OcclusionMesh.SetMaterial(createInfo.occlusionMeshMaterial); occlusionMeshScale = createInfo.occlusionMeshScale; foveatedRenderingInfo = createInfo.foveatedRenderingInfo; 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 08eb90074a3..9149701953f 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/XR/XRSystem.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/XR/XRSystem.cs @@ -484,6 +484,7 @@ static XRPassCreateInfo BuildPass(XRDisplaySubsystem.XRRenderPass xrRenderPass, multipassId = layout.GetActivePasses().Count, cullingPassId = xrRenderPass.cullingPassIndex, copyDepth = xrRenderPass.shouldFillOutDepth, + spaceWarpRightHandedNDC = xrRenderPass.spaceWarpRightHandedNDC, xrSdkRenderPass = xrRenderPass }; diff --git a/Packages/com.unity.render-pipelines.core/Tests/Runtime/Threading/FunctionTests.cs b/Packages/com.unity.render-pipelines.core/Tests/Runtime/Threading/FunctionTests.cs index 302bd474a9b..d3a193ec809 100644 --- a/Packages/com.unity.render-pipelines.core/Tests/Runtime/Threading/FunctionTests.cs +++ b/Packages/com.unity.render-pipelines.core/Tests/Runtime/Threading/FunctionTests.cs @@ -171,6 +171,7 @@ private void ValidateDeviceComputeGroupSize(int requiredComputeGroupSizeX) } [Test] + [Ignore("Unstable: https://jira.unity3d.com/browse/UUM-111743")] public void WaveTest([Values]Kernel kernel, [Values]WaveSizeKeyword waveSizeKeyword) { int groupSize = (int)GroupSizeKeyword.GROUP_SIZE_128; @@ -209,6 +210,7 @@ public void WaveTest([Values]Kernel kernel, [Values]WaveSizeKeyword waveSizeKeyw } [Test] + [Ignore("Unstable: https://jira.unity3d.com/browse/UUM-111749")] public void GroupTest([Values]Kernel kernel, [Values]GroupSizeKeyword groupSizeKeyword) { int groupSize = (int)groupSizeKeyword; diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/AOVs.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/AOVs.md index 658e5b8c006..32f3c233859 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/AOVs.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/AOVs.md @@ -8,7 +8,7 @@ Here is an example of three AOVs, containing from left to right the Albedo, Norm In HDRP, you can access and configure AOVs in the following ways: - Using the [HDRP Compositor tool](graphics-compositor.md). -- Using the [Unity Recorder](https://docs.unity3d.com/Packages/com.unity.recorder@latest/index.html) and the [AOV Recorder](https://docs.unity3d.com/Packages/com.unity.aovrecorder@latest/index.html) packages. +- Using the [Unity Recorder](https://docs.unity3d.com/Packages/com.unity.recorder@latest/index.html) package. - Using the scripting API to set up a custom AOV request in any HDRP Camera in your Scene. The first two options offer a limited selection of AOVs in their User Interface, while the third option allows for much more flexibility on what data an HDRP Camera can output. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ambient-Occlusion.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ambient-Occlusion.md index 5041f03942a..c6b4f3172e9 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ambient-Occlusion.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ambient-Occlusion.md @@ -16,7 +16,7 @@ When you create the Texture, you must apply it to a Material. To do this, you mu ## Properties -The ambient occlusion properties are in the **Surface Inputs** drop-down of your Shader. +The ambient occlusion properties are located in the **Mask Map** section of the **Surface Inputs** foldout of your material's **Inspector** window. | Property | Description | | ------------------------------- | ------------------------------------------------------------ | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/AxF-material-inspector-reference.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/AxF-material-inspector-reference.md index af9f6c3db17..e43a69edf2b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/AxF-material-inspector-reference.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/AxF-material-inspector-reference.md @@ -2,7 +2,7 @@ The AxF Shader allows you to render X-Rite AxF materials in the High Definition Render Pipeline (HDRP). AxF is a standardized format that allows for the exchange of material appearance data. The production of an AxF file typically involves an authoring suite that includes real-world material measurements from which it can produce various textures and model properties. -To translate AxF file data into Material properties and data that HDRP's AxF Shader can understand and render, Unity uses the **AxF Importer** package. You are not required to use the importer and can instead use the Inspector to assign values yourself. However, the AxF Shader is specifically designed to work with data the AxF Importer translates from AxF files. Unity currently does not provide a method to author certain Assets that AxF Materials rely on to accurately portray the real-world material they represent. This means that, if you create the AxF Material manually, you may not be able to reproduce certain results available from an imported AxF file. +To translate AxF file data into Material properties and data that HDRP's AxF Shader can understand and render, you can use a custom AxF Importer. Unity's Industry Partner Advisors (available only for Unity Industry or ISS customers) can also deliver the unsupported **AxF Importer package** upon request. You are not required to use the importer and can instead use the Inspector to assign values yourself. However, the AxF Shader is specifically designed to work with data the AxF Importer translates from AxF files. Unity currently does not provide a method to author certain Assets that AxF Materials rely on to accurately portray the real-world material they represent. This means that, if you create the AxF Material manually, you may not be able to reproduce certain results available from an imported AxF file. ## Importing and Creating an AxF Material diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Troubleshooting.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Troubleshooting.md index bb7db6db2ca..b7d0e880a02 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Troubleshooting.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Custom-Pass-Troubleshooting.md @@ -50,7 +50,7 @@ The following conditions can cause particles in the scene to face the wrong dire - The particle system is only visible in a Custom Pass. - There is no override implemented for`AggregateCullingParameters`. -Unity calculates the orientation of the particles in the Built-in Particle System when it executes `AggregateCullingParameters` during the culling step. This means if there is no override, HRDP doesn't render it properly. +Unity calculates the orientation of the particles in the Built-in Particle System when it executes `AggregateCullingParameters` during the culling step. This means if there is no override, HDRP doesn't render it properly. ## Decals aren't visible diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Dynamic-Resolution.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Dynamic-Resolution.md index 3dff1f036d5..4d4f9a99557 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Dynamic-Resolution.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Dynamic-Resolution.md @@ -19,11 +19,13 @@ HDRP always uses a software method to upscale the result. The method HDRP uses i To use dynamic resolution in your Project, you must enable dynamic resolution in your [HDRP Asset](HDRP-Asset.md) and then enable it for each [Camera](hdrp-camera-component-reference.md) you want to use it with. To do this: -1. In the Inspector for your HDRP Asset, go to **Rendering** **> Dynamic Resolution** and enable the **Enable** checkbox. For information on how to customize the rest of the HDRP Asset’s global dynamic resolution properties, see the dynamic resolution section of the [HDRP Asset documentation](HDRP-Asset.md#DynamicResolution). -2. For every [Camera](hdrp-camera-component-reference.md) you want to perform dynamic resolution, go to the **General** section and enable **Allow Dynamic Resolution**. -3. Add a HD Dynamic Resolution component. +1. In the Inspector for your HDRP Asset, go to **Rendering** > **Dynamic Resolution** and enable the **Enable** checkbox. For information on how to customize the rest of the HDRP Asset’s global dynamic resolution properties, see the dynamic resolution section of the [HDRP Asset documentation](HDRP-Asset.md#DynamicResolution). -For information about the HD Dynamic Resolution component properties refer to [HD Dynamic Resolution component properties](reference-dynamic-resolution.md). +2. For each [Camera](hdrp-camera-component-reference.md) you want to perform dynamic resolution, go to the **Rendering** section of the Camera's Inspector and enable the **Allow Dynamic Resolution** checkbox. + +3. Add a **HD Dynamic Resolution** component to any GameObject in your scene. Adding this component once in the scene is sufficient, as it globally manages dynamic resolution settings. + +For information about the HD Dynamic Resolution component properties, refer to [HD Dynamic Resolution component properties](reference-dynamic-resolution.md). ## Custom dynamic resolution diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDR-Output.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDR-Output.md index 66ff54a9c7a..b02f7127c5c 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDR-Output.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDR-Output.md @@ -13,7 +13,7 @@ To activate HDR output, navigate to **Project Settings > Player** > **Other Sett > **Note**: Only enable **Use HDR Display Output** if you need the main display to use HDR Output. -HDR Output will be active only in Game View and in Player. Currently the feature is not working on DirectX 11 on PC, please use DirectX 12 to make use of it. +HDR Output is only active in the Player when using DirectX 11, and both in the Player and Game View when using DirectX 12. ## HDR tonemapping in HDRP @@ -91,5 +91,3 @@ HDRP only supports HDR Output on the following platforms: * HDRP Supported Devices that use Metal * Consoles * XR devices with HDR support - -> **Note**: DirectX 11 only supports HDR Output in the Player, it does not support HDR Output in the Editor. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Asset.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Asset.md index 0b99edacdd1..5a4c789fdf3 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Asset.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Asset.md @@ -2,52 +2,70 @@ The High Definition Render Pipeline (HDRP) Asset controls the global rendering settings of your Project and creates an instance of the render pipeline. -Unity only allocates memory and builds shader variants for features you enable in the HDRP Asset. This means that you can disable features your project does not use to save memory. Since certain features require shader variants or other resources when Unity builds your project, you can only enable and disable features at edit time. However, it is possible to toggle the rendering of particular features at runtime, just not using the HDRP Asset. Instead, [Frame-Settings](Frame-Settings.md) control the features that cameras in the scene render. Frame Settings can only toggle features that are enabled in the HDRP Asset; they cannot enable features that are disabled. +Unity only allocates memory and builds shader variants for features you enable in the HDRP Asset. This means that you can disable features your project doesn't use to save memory. Because certain features require shader variants or other resources when Unity builds your project, you can only enable and disable features at edit time. However, it's possible to toggle the rendering of particular features at runtime, just not using the HDRP Asset. Instead, [Frame-Settings](Frame-Settings.md) control the features that cameras in the scene render. Frame Settings can only toggle features that are enabled in the HDRP Asset; they can't enable features that are disabled. ## Rendering -| **Property** | **Sub-property** | **Description** | +| **Property** | **Subproperty** | **Description** | |-|-|-| -| **Color Buffer Format** || The format of the color buffer that HDRP uses for rendering. Using R16G16B16A16 instead of R11G11B10 doubles the memory usage, but helps avoid banding. R16G16B16A16 is also required for [Alpha-Output](Alpha-Output.md). | -| **Lit Shader Mode** || Use the drop-down to choose which mode HDRP uses for the [Lit Shader](lit-material.md).
• **Forward Only**: forces HDRP to only use forward rendering for Lit Shaders.
• **Deferred Only**: forces HDRP to use deferred rendering for Lit Shaders (HDRP still renders advanced Materials using forward rendering).
• **Both**: allows the Camera to use deferred and forward rendering.

Select **Both** to allow you to switch between forward and deferred rendering for Lit Shaders at runtime per Camera. Selecting a specific mode reduces build time and Shader memory because HDRP requires less Shader variants, but it is not possible to switch from one mode to the other at runtime. | -| **- Multisample Anti-aliasing Quality** || Use the drop-down to set the number of samples HDRP uses for multisample anti-aliasing (MSAA). The larger the sample count, the better the quality. Select **None** to disable MSAA.
This property is only visible when **Lit Shader Mode** is set to **Forward Only** or **Both**. | -| **Motion Vectors** || Enable the checkbox to enable motion vector support in HDRP. HDRP uses motion vectors for effects like screen space reflection (SSR) and motion blur. When disabled, motion blur has no effect and HDRP calculates SSR with lower quality. | -| **Runtime Debug Display** || Enable the checkbox to enable HDRP to use debug modes from the [Rendering Debugger](use-the-rendering-debugger.md) at runtime. Disable the checkbox to reduce build time and shader memory. This disables all property override options, all lighting debug modes, and all material property debug modes except GBuffer debug. | -| **Runtime AOV API** || Enable the checkbox to enable HDRP able to use the AOV API (rendering of material properties and lighting modes) at runtime. Disable this checkbox to reduce build time and shader memory. This disables all material properties and lighting modes. | | -| **Terrain Hole** || Enable the checkbox to enable suppot for [Terrain Holes](https://docs.unity3d.com/2019.3/Documentation/Manual/terrain-PaintHoles.html) in HDRP. If you do not enable this, Terrain Holes are not visible in your Scene. | -| **Transparent Backface** || Enable the checkbox to enable support for transparent back-face render passes in HDRP. If your Unity Project does not need to make a transparent back-face pass, disable this checkbox to reduce build time. | -| **Transparent Depth Prepass** || Enable the checkbox to enable support for transparent depth render prepasses in HDRP. If your Unity Project does not need to make a transparent depth prepass, disable this checkbox to reduce build time. | -| **Transparent Depth Postpass** || Enable the checkbox to enable support for transparent depth render postpasses in HDRP. If your Unity Project does not make use of a transparent depth postpass, disable this checkbox to reduce build time. | -| **Custom Pass** || Enable the checkbox to enable support for [custom passes](Custom-Pass.md) in HDRP. If your Unity Project does not use custom passes, disable this checkbox to save memory. | -| - **Custom Buffer Format** || Specify the texture format for the custom buffer. If you experience banding issues due to your custom passes, you can change it to either `R11G11B10` if you don't need alpha, or `R16G16B16A16` if you do need alpha. | -| **Realtime Raytracing (Preview)** || Enable the checkbox to enable HDRP realtime ray tracing (Preview). It requires ray tracing-compatible hardware. For more information, refer to [Ray Tracing Getting Started](Ray-Tracing-Getting-Started.md). | -| **Visual Effects Ray Tracing (Preview)** || Enable the checkbox to enable support for ray tracing with Visual Effects in HDRP. **Realtime Raytracing (Preview)** must be enabled. | -| **Supported Ray Tracing Mode (Preview)** || Select the supported modes for ray tracing effects (**Performance**, **Quality**, or **Both**). For more information, refer to [Ray Tracing Getting Started](Ray-Tracing-Getting-Started.md). | -| - **LOD Bias** || Set the value that Cameras use to calculate their LOD bias. The Camera uses this value differently depending on the **LOD Bias Mode** you select. | -| - **Maximum LOD Level** || Set the value that Cameras use to calculate their maximum level of detail. The Camera uses this value differently depending on the **Maximum LOD Level Mode** you select. | -| **GPU Resident Drawer**||The GPU Resident Drawer automatically uses the [`BatchRendererGroup`](https://docs.unity3d.com/Manual/batch-renderer-group.html) API to draw GameObjects with GPU instancing. Refer to [Use the GPU Resident Drawer](gpu-resident-drawer.md) for more information.

  • **Disabled**: Unity doesn't automatically draw GameObjects with GPU instancing.
  • **Instanced Drawing**: Unity automatically draws GameObjects with GPU instancing.
| -|| **Small-Mesh Screen-Percentage** | Set the screen percentage Unity uses to cull small GameObjects, to speed up rendering. Unity culls GameObjects that fill less of the screen than this value. This setting might not work if you use your own [Level of Detail (LOD) meshes](https://docs.unity3d.com/Manual/LevelOfDetail.html). Set the value to 0 to stop Unity culling small GameObjects.

To prevent Unity culling an individual GameObject that covers less screen space than this value, go to the **Inspector** window for the GameObject and add a **Disallow Small Mesh Culling** component. | -|| **GPU Occlusion Culling** | Enable Unity using the GPU instead of the CPU to exclude GameObjects from rendering when they're hidden behind other GameObjects. Refer to [Use GPU occlusion culling](gpu-culling.md) for more information. | +| **Color Buffer Format** | N/A | The format of the color buffer that HDRP uses for rendering. Using R16G16B16A16 instead of R11G11B10 doubles the memory usage, but helps avoid banding. R16G16B16A16 is also required for [Alpha-Output](Alpha-Output.md). | +| **Lit Shader Mode** | N/A | Use the drop-down to choose which mode HDRP uses for the [Lit Shader](lit-material.md).
• **Forward Only**: forces HDRP to only use forward rendering for Lit Shaders.
• **Deferred Only**: forces HDRP to use deferred rendering for Lit Shaders (HDRP still renders advanced Materials using forward rendering).
• **Both**: allows the Camera to use deferred and forward rendering.

Select **Both** to allow you to switch between forward and deferred rendering for Lit Shaders at runtime per Camera. Selecting a specific mode reduces build time and Shader memory because HDRP requires less Shader variants, but it's not possible to switch from one mode to the other at runtime. | +| N/A | **Multisample Anti-aliasing Quality** | Use the drop-down to set the number of samples HDRP uses for multisample anti-aliasing (MSAA). The larger the sample count, the better the quality. Select **None** to disable MSAA.
This property is only visible when **Lit Shader Mode** is set to **Forward Only** or **Both**. | +| **Motion Vectors** | N/A | Enable the checkbox to enable motion vector support in HDRP. HDRP uses motion vectors for effects like screen space reflection (SSR) and motion blur. When disabled, motion blur has no effect and HDRP calculates SSR with lower quality. | +| **Runtime Debug Display** | N/A | Enable the checkbox to enable HDRP to use debug modes from the [Rendering Debugger](use-the-rendering-debugger.md) at runtime. Disable the checkbox to reduce build time and shader memory. This disables all property override options, all lighting debug modes, and all material property debug modes except GBuffer debug. | +| **Runtime AOV API** | N/A | Enable the checkbox to enable HDRP able to use the AOV API (rendering of material properties and lighting modes) at runtime. Disable this checkbox to reduce build time and shader memory. This disables all material properties and lighting modes. | +| **Terrain Hole** | N/A | Enable the checkbox to enable support for [Terrain Holes](https://docs.unity3d.com/2019.3/Documentation/Manual/terrain-PaintHoles.html) in HDRP. If you don't enable this, Terrain Holes aren't visible in your Scene. | +| **Transparent Backface** | N/A | Enable the checkbox to enable support for transparent back-face render passes in HDRP. If your Unity Project doesn't need to make a transparent back-face pass, disable this checkbox to reduce build time. | +| **Transparent Depth Prepass** | N/A | Enable the checkbox to enable support for transparent depth render prepasses in HDRP. If your Unity Project doesn't need to make a transparent depth prepass, disable this checkbox to reduce build time. | +| **Transparent Depth Postpass** | N/A | Enable the checkbox to enable support for transparent depth render postpasses in HDRP. If your Unity Project doesn't make use of a transparent depth postpass, disable this checkbox to reduce build time. | +| **Custom Pass** | N/A | Enable the checkbox to enable support for [custom passes](Custom-Pass.md) in HDRP. If your Unity Project doesn't use custom passes, disable this checkbox to save memory. | +| - **Custom Buffer Format** | N/A | Specify the texture format for the custom buffer. If you experience banding issues due to your custom passes, you can change it to either `R11G11B10` if you don't need alpha, or `R16G16B16A16` if you do need alpha. | +| **Realtime Raytracing (Preview)** | N/A | Enable the checkbox to enable HDRP realtime ray tracing (Preview). It requires ray tracing-compatible hardware. For more information, refer to [Ray Tracing Getting Started](Ray-Tracing-Getting-Started.md). | +| **Visual Effects Ray Tracing (Preview)** | N/A | Enable the checkbox to enable support for ray tracing with Visual Effects in HDRP. **Realtime Raytracing (Preview)** must be enabled. | +| **Supported Ray Tracing Mode (Preview)** | N/A | Select the supported modes for ray tracing effects (**Performance**, **Quality**, or **Both**). For more information, refer to [Ray Tracing Getting Started](Ray-Tracing-Getting-Started.md). | +| - **LOD Bias** | N/A | Set the value that Cameras use to calculate their LOD bias. The Camera uses this value differently depending on the **LOD Bias Mode** you select. | +| - **Maximum LOD Level** | N/A | Set the value that Cameras use to calculate their maximum level of detail. The Camera uses this value differently depending on the **Maximum LOD Level Mode** you select. | +| **GPU Resident Drawer** | N/A | The GPU Resident Drawer automatically uses the [`BatchRendererGroup`](https://docs.unity3d.com/Manual/batch-renderer-group.html) API to draw GameObjects with GPU instancing. Refer to [Use the GPU Resident Drawer](gpu-resident-drawer.md) for more information.

  • **Disabled**: Unity doesn't automatically draw GameObjects with GPU instancing.
  • **Instanced Drawing**: Unity automatically draws GameObjects with GPU instancing.
| +| N/A | **Small-Mesh Screen-Percentage** | Set the screen percentage Unity uses to cull small GameObjects, to speed up rendering. Unity culls GameObjects that fill less of the screen than this value. This setting might not work if you use your own [Level of Detail (LOD) meshes](https://docs.unity3d.com/Manual/LevelOfDetail.html). Set the value to 0 to stop Unity culling small GameObjects.

To prevent Unity culling an individual GameObject that covers less screen space than this value, go to the **Inspector** window for the GameObject and add a **Disallow Small Mesh Culling** component. | +| N/A | **GPU Occlusion Culling** | Enable Unity using the GPU instead of the CPU to exclude GameObjects from rendering when they're hidden behind other GameObjects. Refer to [Use GPU occlusion culling](gpu-culling.md) for more information. | ### Decals -These settings control the draw distance and resolution of the decals atlas that HDRP uses when it renders decals projected onto transparent surfaces. +Enable the checkbox to make HDRP support decals in your Unity Project. -| **Property** | **Description** | -| -------------------------------------------- | ------------------------------------------------------------ | -| **Enable** | Enable the checkbox to make HDRP support decals in your Unity Project. | -| **- Draw Distance** | The maximum distance from the Camera at which Unity draws Decals. | -| **- Atlas Width** | The Decal Atlas width. This atlas stores all decals that project onto transparent surfaces. | -| **- Atlas Height** | The Decal Atlas height. This atlas stores all decals that project onto transparent surfaces. | -| ***- Transparent Texture Resolution Tiers*** | Set the resolution that transparent textures take up within the decal atlas. The same resolution is used for all textures of a material (base color, normal, mask). | -| **- Low** | Set the transparent texture resolution to this quality. DecalProjectors with their **Transparent Texture Resolution** set to **Low** use this resolution for their textures in the decal atlas. | -| **- Medium** | Set the transparent texture resolution to this quality. DecalProjectors with their **Transparent Texture Resolution** set to **Medium** use this resolution for their textures in the decal atlas. | -| **- High** | Set the transparent texture resolution to this quality. DecalProjectors with their **Transparent Texture Resolution** set to **High** use this resolution for their textures in the decal atlas. | -| **- Metal and Ambient Occlusion properties** | Enable the checkbox to allow decals to affect metallic and ambient occlusion Material properties. Enabling this feature has a performance impact. | -| **- Maximum Clustered Decals on Screen** | The maximum number of clustered decals that can affect transparent GameObjects on screen. Clustered decals refer to a list of decals that HDRP uses when it renders transparent GameObjects. | -| **- Layers** | Enable the checkbox to allow decals to only affect specific layers.| +These settings control the various decal parameters like draw distance and activation of decal layers. + + + +#### Transparent surfaces + +This table lists the available global settings for decals in HDRP that apply specifically to transparent surfaces and describes their functions. + +They allow configuration of the atlas that HDRP uses when it renders decals projected onto transparent surfaces. + +| **Property** | **Description** | +|--------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Atlas Width** | The Decal Atlas width. This atlas stores all decals that project onto transparent surfaces. | +| **Atlas Height** | The Decal Atlas height. This atlas stores all decals that project onto transparent surfaces. | +| **Transparent Texture Resolution Tiers** | Set the resolution that transparent textures take up within the decal atlas. The same resolution is used for all textures of a material (base color, normal, mask). | +| **Low** | Set the transparent texture resolution to this quality. Decal Projectors with their **Transparent Texture Resolution** set to **Low** use this resolution for their textures in the decal atlas. | +| **Medium** | Set the transparent texture resolution to this quality. Decal Projectors with their **Transparent Texture Resolution** set to **Medium** use this resolution for their textures in the decal atlas. | +| **High** | Set the transparent texture resolution to this quality. Decal Projectors with their **Transparent Texture Resolution** set to **High** use this resolution for their textures in the decal atlas. | +| **Maximum Clustered Decals on Screen** | The maximum number of clustered decals that can affect transparent GameObjects on screen. Clustered decals refer to a list of decals that HDRP uses when it renders transparent GameObjects. | + + + +#### Opaque surfaces + +This table lists the available global settings for decals in HDRP that apply specifically to opaque surfaces and describes their functions. + +| **Property** | **Description** | +|--------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Draw Distance** | The maximum distance from the Camera at which Unity draws Decals. | +| **Metal and Ambient Occlusion properties** | Enable the checkbox to allow decals to affect metallic and ambient occlusion Material properties. Enabling this feature has a performance impact. | +| **Layers** | Enable the checkbox to allow decals to only affect specific layers. | ### Dynamic Resolution @@ -81,7 +99,7 @@ The following properties are available only if you add **DLSS** to **Advanced Up |-|-| | **DLSS Mode** | Sets whether DLSS prioritizes quality or performance. The options are:
  • **Maximum Quality**
  • **Balanced**
  • **Maximum Performance**
  • **Ultra Performance**
| | **DLSS Injection Point** | Sets when DLSS runs in the rendering pipeline. For more information, refer to [Injection points dropdown](#injection-points). | -| **DLSS Use Optimal Settings** | Enables DLSS controlling screen percentage automatically. | +| **DLSS Use Optimal Settings** | Enables DLSS to control screen percentage automatically. | #### FSR2 settings @@ -120,7 +138,7 @@ The following property is available only if you add **STP** to **Advanced Upscal | **Property** | **Description** | | -------------- | ------------------------------------------------------------ | | **Enable** | Enable the checkbox to sample the thickness of GameObjects to use in a shader graph material. For more information, refer to [Sample and use material thickness](Compute-Thickness.md). | -| **Resolution** | Set the resolution of a material’s thickness:
•**Quarter**: Renders the thickness at quarter the current screen resolution.
•**Half**: Renders the thickness at half the current screen resolution. This resolution is the best balance of detail and performance.
•**Full**: Renders the thickness at full screen resolution. | +| **Resolution** | Set the resolution of a material’s thickness:
•**Quarter**: Renders the thickness at a quarter of the current screen resolution.
•**Half**: Renders the thickness at half the current screen resolution. This resolution is the best balance of detail and performance.
•**Full**: Renders the thickness at full screen resolution. | | **Layer Mask** | Select one or more layers to compute the thickness of. | @@ -138,18 +156,17 @@ The following property is available only if you add **STP** to **Advanced Upscal ### Light Probe Lighting Use these settings in the **Quality** > **HDRP** menu to configure [Adaptive Probe Volumes](probevolumes.md). -| **Property** | **Sub-property** | **Description** | -|-|-|-| -| **Light Probe System** ||
  • **Light Probe Groups (Legacy)**: Use the same [Light Probe Group system](https://docs.unity3d.com/Manual/class-LightProbeGroup.html) as the Built-In Render Pipeline.
  • **Adaptive Probe Volumes**: Use [Adaptive Probe Volumes](probevolumes.md).
| -|| **Memory Budget** | Limits the width and height of the textures that store baked Global Illumination data, which determines the amount of memory Unity sets aside to store baked Adaptive Probe Volume data. These textures have a fixed depth.
Options:
  • **Memory Budget Low**
  • **Memory Budget Medium**
  • **Memory Budget High**
| -|| **SH Bands** | Determines the [spherical harmonics (SH) bands](https://docs.unity3d.com/Manual/LightProbes-TechnicalInformation.html) Unity uses to store probe data. L2 provides more precise results, but uses more system resources.
Options:
  • **Spherical Harmonics L1**
  • **Spherical Harmonics L2**
| -| **Lighting Scenarios** || Enable to use Lighting Scenarios. Refer to [Bake different lighting setups using Lighting Scenarios](probevolumes-bakedifferentlightingsetups.md) for more information. | -|| **Scenario Blending** | Enable blending between different Lighting Scenarios. This uses more memory and makes rendering slower. | -|| **Scenario Blending Memory Budget** | Limits the width and height of the textures that Unity uses to blend between Lighting Scenarios. This determines the amount of memory Unity sets aside to store Lighting Scenario blending data, and store data while doing the blending operation. These textures have a fixed depth.
Options:
• **Memory Budget Low**
• **Memory Budget Medium**
• **Memory Budget High** | -| **Enable GPU Streaming** || Enable to stream Adaptive Probe Volume data from CPU memory to GPU memory at runtime. Refer to [Streaming Adaptive Probe Volumes](probevolumes-streaming.md) for more information. | -| **Enable Disk Streaming** || Enable to stream Adaptive Probe Volume data from disk to CPU memory at runtime. [Streaming Adaptive Probe Volumes](probevolumes-streaming.md) for more information. | -| **Estimated GPU Memory Cost** || Indicates the amount of texture data used by Adaptive Probe Volumes in your project. This includes textures used both for Global Illumination and Lighting Scenario blending. | - +| **Property** | **Subproperty** | **Description** | +|---------------------------|-------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Light Probe System** | N/A |
  • **Light Probe Groups (Legacy)**: Use the same [Light Probe Group system](https://docs.unity3d.com/Manual/class-LightProbeGroup.html) as the Built-In Render Pipeline.
  • **Adaptive Probe Volumes**: Use [Adaptive Probe Volumes](probevolumes.md).
| +| N/A | **Memory Budget** | Limits the width and height of the textures that store baked Global Illumination data, which determines the amount of memory Unity sets aside to store baked Adaptive Probe Volume data. These textures have a fixed depth.
Options:
  • **Memory Budget Low**
  • **Memory Budget Medium**
  • **Memory Budget High**
| +| N/A | **SH Bands** | Determines the [spherical harmonics (SH) bands](https://docs.unity3d.com/Manual/LightProbes-TechnicalInformation.html) Unity uses to store probe data. L2 provides more precise results, but uses more system resources.
Options:
  • **Spherical Harmonics L1**
  • **Spherical Harmonics L2**
| +| **Lighting Scenarios** | N/A | Enable to use Lighting Scenarios. Refer to [Bake different lighting setups using Lighting Scenarios](probevolumes-bakedifferentlightingsetups.md) for more information. | +| N/A | **Scenario Blending** | Enable blending between different Lighting Scenarios. This uses more memory and makes rendering slower. | +| N/A | **Scenario Blending Memory Budget** | Limits the width and height of the textures that Unity uses to blend between Lighting Scenarios. This determines the amount of memory Unity sets aside to store Lighting Scenario blending data, and store data while doing the blending operation. These textures have a fixed depth.
Options:
• **Memory Budget Low**
• **Memory Budget Medium**
• **Memory Budget High** | +| **Enable GPU Streaming** | N/A | Enable to stream Adaptive Probe Volume data from CPU memory to GPU memory at runtime. Refer to [Streaming Adaptive Probe Volumes](probevolumes-streaming.md) for more information. | +| **Enable Disk Streaming** | N/A | Enable to stream Adaptive Probe Volume data from disk to CPU memory at runtime. [Streaming Adaptive Probe Volumes](probevolumes-streaming.md) for more information. | +| **Estimated GPU Memory Cost** | N/A | Indicates the amount of texture data used by Adaptive Probe Volumes in your project. This includes textures used both for Global Illumination and Lighting Scenario blending. | ### Cookies Use the Cookie settings to configure the maximum resolution of the atlas and it's format. A bigger resolution means that you can have more cookies on screen at one time or use bigger cookies texture in general. Increasing for format will allow you to handle HDR cookies and have better precision at the cost of memory. @@ -157,33 +174,33 @@ Use the Cookie settings to configure the maximum resolution of the atlas and it' | **Property** | **Description** | | ---------------------- | ------------------------------------------------------------ | | **2D Atlas Size** | Use the drop-down to select the maximum size for 2D cookie atlas. HDRP uses 2D cookies for Directional, Spot Lights and Area Lights. | -| **2D Atlas Last Valid Mip** | Adds padding to prevent area light cookie border to be cut but can blur the texture a lot if too high values are used. Generally the default value (0) works well in most cases. | +| **2D Atlas Last Valid Mip** | Adds padding to prevent area light cookie border from being cut but can blur the texture a lot if too high values are used. Generally the default value (0) works well in most cases. | | **Cookie Format** | The format of the cookies that HDRP will use, using R16G16B16A16 instead of R11G11B10 will double the memory usage but help you to avoid banding and adds the support for EXR cookies. | ### Reflections Use the Reflection settings to configure the max number and resolution of the probes and whether Unity should compress the Reflection Probe cache or not. The Reflection Probe cache is runtime memory that HDRP reserves for Reflection Probes. The cache is a first in, first out list that stores the currently visible Reflection Probes. -| **Property** | **Description** | -| ---------------------------------------- | ------------------------------------------------------------ | -| **Screen Space Reflection** | Enable the checkbox to make HDRP support [screen space reflection](https://docs.unity3d.com/Manual/PostProcessing-ScreenSpaceReflection.html). SSR is a technique for calculating reflections by reusing screen space data. | -| **- Transparent** | Enable the checkbox to make HDRP support [screen space reflection](https://docs.unity3d.com/Manual/PostProcessing-ScreenSpaceReflection.html) on transparent materials. This feature requires the transparent depth render prepasses to be enabled on the HDRP asset.| -| **Reflection and Planar Probes Format** | Color format used for reflection and planar probes. | -| **Compress Baked Reflection Probes** | Compress baked [Reflection Probe](Reflection-Probe.md) data, which conserves disk space. | -| **Reflection 2D Atlas Size** | Select a resolution for the cube and planar probe atlases to define the quantity of reflection probes you can render simultaneously, and their resolution. | -| **Reflection 2D Atlas Last Valid Cube Mip** | Add padding to hide sharp seams in Reflection Probe cube mip data. Values above 3 can blur the probe texture too much. | -| **Reflection 2D Atlas Last Valid Planar Mip** | Add padding to hide sharp seams in Reflection Probe planar mip data. Values above 0 can blur the probe texture too much. | -| ***Cube Resolution Tiers*** | | -| **- L** | Define the lowest possible resolution for cube Reflection Probes in this project. | -| **- M** | Define the medium resolution for cube Reflection Probes in this project. | -| **- H** | Define the highest possible resolution for cube Reflection Probes in this project. | -| ***Planar Resolution Tiers*** | | -| **- L** | Define the lowest possible resolution for planar Reflection Probes in this project. | -| **- M** | Define the medium resolution for planar Reflection Probes in this project. | -| **- H** | Define the highest possible resolution for planar Reflection Probes in this project. | -| **Max Cube Reflection On Screen** | The maximum number of cube reflections on screen at once. | -| **Max Planar Reflection On Screen** | The maximum number of planar reflections on screen at once. | -| **Decrease Reflection Probe Resolution To Fit** | Decrease the Planar and Reflection Probe resolution in the reflection 2D atlas if this texture doesn't fit in the atlas. | +| **Property** | **Subproperty** | **Description** | +|-------------------------------------------------|---|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Screen Space Reflection** | N/A | Enable the checkbox to make HDRP support [screen space reflection](https://docs.unity3d.com/Manual/PostProcessing-ScreenSpaceReflection.html). SSR is a technique for calculating reflections by reusing screen space data. | +| N/A | **Transparent** | Enable the checkbox to make HDRP support [screen space reflection](https://docs.unity3d.com/Manual/PostProcessing-ScreenSpaceReflection.html) on transparent materials. This feature requires the transparent depth render prepasses to be enabled on the HDRP asset. | +| **Reflection and Planar Probes Format** | N/A | Color format used for reflection and planar probes. | +| **Compress Baked Reflection Probes** | N/A | Compress baked [Reflection Probe](Reflection-Probe.md) data, which conserves disk space. | +| **Reflection 2D Atlas Size** | N/A | Select a resolution for the cube and planar probe atlases to define the quantity of reflection probes you can render simultaneously, and their resolution. | +| **Reflection 2D Atlas Last Valid Cube Mip** | N/A | Add padding to hide sharp seams in Reflection Probe cube mip data. Values above 3 can blur the probe texture too much. | +| **Reflection 2D Atlas Last Valid Planar Mip** | N/A | Add padding to hide sharp seams in Reflection Probe planar mip data. Values above 0 can blur the probe texture too much. | +| **Cube Resolution Tiers** | N/A | N/A | +| N/A | **L** | Define the lowest possible resolution for cube Reflection Probes in this project. | +| N/A | **M** | Define the medium resolution for cube Reflection Probes in this project. | +| N/A | **H** | Define the highest possible resolution for cube Reflection Probes in this project. | +| **Planar Resolution Tiers** | N/A | | +| N/A | **L** | Define the lowest possible resolution for planar Reflection Probes in this project. | +| N/A | **M** | Define the medium resolution for planar Reflection Probes in this project. | +| N/A | **H** | Define the highest possible resolution for planar Reflection Probes in this project. | +| **Max Cube Reflection On Screen** | N/A | The maximum number of cube reflections on screen at once. | +| **Max Planar Reflection On Screen** | N/A | The maximum number of planar reflections on screen at once. | +| **Decrease Reflection Probe Resolution To Fit** | N/A | Decrease the Planar and Reflection Probe resolution in the reflection 2D atlas if this texture doesn't fit in the atlas. | @@ -221,16 +238,15 @@ The three sections here are: - **Punctual Light Shadows** - **Area Light Shadows** -They all share the same properties, except **Directional Light Shadows** which does not include **Resolution** or **Dynamic Rescale** and **Cached Shadow Atlas Resolution**. +They all share the same properties, except **Directional Light Shadows** which doesn't include **Resolution** or **Dynamic Rescale** and **Cached Shadow Atlas Resolution**. -| **Property** | **Description** | +| **Light Atlas property** | **Description** | | ------------------- | ------------------------------------------------------------ | -| ***Light Atlas*** | | | **Resolution** | Use the drop-down to select the resolution of the shadow atlas. | | **Precision** | Use the drop-down to select the precision of the shadow map. This sets the bit depth of each pixel of the shadow map. **16 bit** is faster and uses less memory at the expense of precision. | | **Dynamic Rescale** | Enable the checkbox to allow HDRP to rescale the shadow atlas if all the shadows on the screen don't currently fit onto it. | -| ***Shadow Resolution Tiers*** | | +| **Shadow Resolution Tiers** | **Description** | | ---------------------------------- | ------------------------------------------------------------ | | **L** | Set the resolution of shadows set to this quality. Light's with their **Resolution** set to **Low** use this resolution for their shadows. | | **M** | Set the resolution of shadows set to this quality. Light's with their **Resolution** set to **Medium** use this resolution for their shadows. | @@ -283,12 +299,12 @@ Use these settings to enable or disable settings relating to lighting in HDRP. ## Material -| **Property** | **Description** | -| ------------------------------- | ------------------------------------------------------------ | -| **Distortion** | Enable the checkbox to make HDRP support distortion. If your Unity Project does not use distortion, disable this checkbox to reduce build time. | -| **Subsurface Scattering** | Enable the checkbox to make HDRP support subsurface scattering (SSS). SSS describes light penetration of the surface of a translucent object | -| **- High Quality** | Enable the checkbox to increase the SSS Sample Count and enable high quality subsurface scattering. Increasing the sample count greatly increases the performance cost of the Subsurface Scattering effect. | -| **Fabric BSDF Convolution** | By default, Fabric Materials reuse the Reflection Probes that HDRP calculates for the Lit Shader (GGX BRDF). Enable the checkbox to make HDRP calculate another version of each Reflection Probe for the Fabric Shader, creating more accurate lighting effects. This increases the resource intensity because HDRP must condition two Reflection Probes instead of one. It also reduces the number of visible Reflection Probes in the current view by half because the size of the cache that stores Reflection Probe data does not change and must now store both versions of each Reflection Probe. | +| **Property** | **Subproperty** | **Description** | +|-----------------------------|---|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Distortion** | N/A | Enable the checkbox to make HDRP support distortion. If your Unity Project doesn't use distortion, disable this checkbox to reduce build time. | +| **Subsurface Scattering** | N/A | Enable the checkbox to make HDRP support subsurface scattering (SSS). SSS describes light penetration of the surface of a translucent object | +| N/A | **High Quality** | Enable the checkbox to increase the SSS Sample Count and enable high quality subsurface scattering. Increasing the sample count greatly increases the performance cost of the Subsurface Scattering effect. | +| **Fabric BSDF Convolution** | N/A | By default, Fabric Materials reuse the Reflection Probes that HDRP calculates for the Lit Shader (GGX BRDF). Enable the checkbox to make HDRP calculate another version of each Reflection Probe for the Fabric Shader, creating more accurate lighting effects. This increases the resource intensity because HDRP must condition two Reflection Probes instead of one. It also reduces the number of visible Reflection Probes in the current view by half because the size of the cache that stores Reflection Probe data doesn't change and must now store both versions of each Reflection Probe. | ## Post-processing @@ -307,5 +323,5 @@ These settings define the quality levels (low, medium, high) related to post pro | ----------------------- | --------------------------------------------------------------- | | **CPU Cache Size** | Amount of CPU memory (in MB) that can be allocated by the Streaming Virtual Texturing system to cache texture data. | | **GPU Cache Size per Format** | Amount of GPU memory (in MB) that can be allocated per format by the Streaming Virtual Texturing system to cache texture data. The value assigned to None is used for all unspecified formats. | -| **Preload Textures Per Frame** | The number of textures Unity tries to preload their least detailed mipmap levels (least being 128x128) into GPU memory per frame. Use this to avoid texture pop-in. The range is 0 through 1024. The default is 0, which disables preloading. | -| **Preload Mip Count** | The number of mipmap levels to preload. The range is 1 through 9. The default is 1, which preloads only the highest mipmap level with the smallest size (128x128 pixels, the size of a Streaming Virtual Texturing tile). | +| **Preload Textures Per Frame** | The number of textures Unity tries to preload their least detailed mipmap levels (least being 128×128) into GPU memory per frame. Use this to avoid texture pop-in. The range is 0 through 1024. The default is 0, which disables preloading. | +| **Preload Mip Count** | The number of mipmap levels to preload. The range is 1 through 9. The default is 1, which preloads only the highest mipmap level with the smallest size (128×128 pixels, the size of a Streaming Virtual Texturing tile). | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Features.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Features.md index a94887282ba..e5811fdd08b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Features.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/HDRP-Features.md @@ -674,7 +674,7 @@ HDRP provides an API you can use to [modify materials from script](modify-materi ### Lighting architecture -HDRP uses a hybrid tile and cluster renderer for [forward and deferred rendering](Forward-And-Deferred-Rendering.md) of opaque and transparent GameObjects. This creates a local light list to allow HDRP to render a high number of Lights. Use the forward renderer to light more complex Materials, such as those that use subsurface scattering or are anisotropic. Use the deferred renderer to increase the processing speed of lighting for common Materials, such as standard Lit or Unlit Materials. For more information on HDRP's lighting architecture, including an explanation of tile and cluster rendering, see the [lighting pipeline documentation](https://docs.unity3d.com/Manual/BestPracticeLightingPipelines). +HDRP uses a hybrid tile and cluster renderer for [forward and deferred rendering](Forward-And-Deferred-Rendering.md) of opaque and transparent GameObjects. This creates a local light list to allow HDRP to render a high number of Lights. Use the forward renderer to light more complex Materials, such as those that use subsurface scattering or are anisotropic. Use the deferred renderer to increase the processing speed of lighting for common Materials, such as standard Lit or Unlit Materials. For more information on HDRP's lighting architecture, including an explanation of tile and cluster rendering, see the [lighting pipeline documentation](https://docs.unity3d.com/Manual/BestPracticeLightingPipelines.html). #### Light count limit diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/fog-color-black.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/fog-color-black.jpg new file mode 100644 index 00000000000..aa43aa46974 Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/fog-color-black.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/fog-color-sky-color.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/fog-color-sky-color.jpg new file mode 100644 index 00000000000..7927b47ae1a Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/fog-color-sky-color.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/introduction-to-water-decals.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/introduction-to-water-decals.jpg new file mode 100644 index 00000000000..648d029ed4f Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/introduction-to-water-decals.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/profile_diffuse_power-2.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/profile_diffuse_power-2.jpg index 4c822c17376..6986a138bca 100644 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/profile_diffuse_power-2.jpg and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/profile_diffuse_power-2.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/profile_diffuse_power.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/profile_diffuse_power.jpg index cce0e7a0f47..e8f0f147a95 100644 Binary files a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/profile_diffuse_power.jpg and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/profile_diffuse_power.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot__directional_shadow_fallback_0.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot__directional_shadow_fallback_0.jpg new file mode 100644 index 00000000000..a58ac6c9d62 Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot__directional_shadow_fallback_0.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot__directional_shadow_fallback_1.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot__directional_shadow_fallback_1.jpg new file mode 100644 index 00000000000..cfeee4477e0 Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot__directional_shadow_fallback_1.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_ambient-probe-dimmer-0.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_ambient-probe-dimmer-0.jpg new file mode 100644 index 00000000000..c9a1e165f80 Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_ambient-probe-dimmer-0.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_ambient-probe-dimmer-1.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_ambient-probe-dimmer-1.jpg new file mode 100644 index 00000000000..1ecce9c3f9c Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_ambient-probe-dimmer-1.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_indirect_specular_reflection_probe_off.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_indirect_specular_reflection_probe_off.jpg new file mode 100644 index 00000000000..2dbf2e456a8 Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_indirect_specular_reflection_probe_off.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_indirect_specular_reflection_probe_on.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_indirect_specular_reflection_probe_on.jpg new file mode 100644 index 00000000000..457cf1ad0ad Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_indirect_specular_reflection_probe_on.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_shadow_culling_off.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_shadow_culling_off.jpg new file mode 100644 index 00000000000..754b09e7748 Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_shadow_culling_off.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_shadow_culling_on.jpg b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_shadow_culling_on.jpg new file mode 100644 index 00000000000..c822d26049e Binary files /dev/null and b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Images/ray_tracing_troubleshoot_apartment_shadow_culling_on.jpg differ diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Mask-Map-and-Detail-Map.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Mask-Map-and-Detail-Map.md index d60fc914659..89dbf2e33f1 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Mask-Map-and-Detail-Map.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Mask-Map-and-Detail-Map.md @@ -19,6 +19,9 @@ The mask map contains four grayscale textures, one in each color channel. The de | **Blue** | Detail mask | | **Alpha** | Smoothness | + +**Note:** The detail mask texture allows you to control where the detail texture is applied on your model. Use a value of `1` to display the detail texture and a value of `0` to mask it. For instance, if your model has skin pores, you might mask the lips and eyebrows to prevent the pores from appearing in those areas. + To create a mask map, create a linear composited map in a photo editor, using the channels as described in the table above. The following example image demonstrates the individual components of a full mask map. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Debug.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Debug.md index d737beb33ba..19905b29040 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Debug.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Debug.md @@ -6,67 +6,25 @@ The High Definition Render Pipeline (HDRP) includes the [Rendering Debugger wind 2. Select the **Lighting** panel. 3. Use the **Fullscreen Debug Mode** drop-down menu to select which ray tracing effect to debug. -![](Images/RayTracingLightCluster1.png) +![Light Cluster Debug Mode: The color shows the number of lights in each cell of the cluster.](Images/RayTracingLightCluster1.png) -**Light Cluster [Debug Mode](Ray-Tracing-Debug.md#debug-modes)**: The color shows the number of lights in each cell of the cluster. +**Light Cluster Debug Mode**: The color shows the number of lights in each cell of the cluster. -![](Images/RayTracingDebugRTAS.png) +![Ray Tracing Acceleration Structure Debug Mode: This debug mode displays the GameObjects HDRP uses to compute specific ray traced effects.](Images/RayTracingDebugRTAS.png) -**Ray Tracing Acceleration Structure [Debug Mode](Ray-Tracing-Debug.md#debug-modes)**: This debug mode displays the GameObjects HDRP uses to compute specific ray traced effects. +**Ray Tracing Acceleration Structure Debug Mode**: This debug mode displays the GameObjects HDRP uses to compute specific ray traced effects. ## Debug modes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Fullscreen Debug ModeDescription
Screen Space Ambient OcclusionWhen Ray-Traced Ambient Occlusion is active, this displays the screen space buffer that holds the ambient occlusion.
Screen Space ReflectionWhen Ray-Traced Reflections are active, this displays the ray-traced reflections.
Transparent Screen Space ReflectionWhen Ray-Traced Reflections are active, this displays the ray-traced reflections on transparent objects.
Contact ShadowsWhen Ray-Traced Contact Shadows are active, this displays the ray-traced contact shadows.
Screen Space ShadowsWhen screen space shadows are active, this displays the set of screen space shadows. If you select this option, Unity exposes the Screen Space Shadow Index slider that allows you to change the currently active shadows. Area lights shadows take two channels.
Screen Space Global IlluminationWhen Ray-Traced Global Illumination is active, this displays a screen space buffer that holds the indirect diffuse lighting.
Recursive Ray-TracingWhen Recursive Ray Tracing is active, this displays the pixels that have been evaluated using the effect.
Ray-Traced Subsurface ScatteringWhen Ray-Traced Subsurface Scattering is active, this displays the subsurface lighting value for the pixels that have been evaluated using the technique.
Light ClusterThis displays the light cluster with the color that varies by the number of the lights in each cell. The red color indicates that the number of lights is over 12 or equal to the maximum number of lights per cell.
Light CategoryUse the drop-down to visualize the number of the lights in the selected light catetgory.
Ray Tracing Acceleration StructureThis mode displays the GameObjects included in the ray tracing acceleration structure for the following effects:
  • Shadows
  • Ambient Occlusion
  • Global Illumination
  • Reflections
  • Recursive Rendering
  • Path Tracer
HDRP only builds the acceleration structure when you activate the effect you select in this mode, otherwise the debug view is black.
This mode has the following visualization options:
  • InstanceID: Assigns a color randomly based on the GameObject's InstanceID.
  • PrimitiveID: Assigns a color randomly based on the GameObject's PrimitiveID.
+| **Fullscreen Debug Mode** | **Description** | +|---|---| +| **Screen Space Ambient Occlusion** | When Ray-Traced Ambient Occlusion is active, this displays the screen space buffer that holds the ambient occlusion. | +| **Screen Space Reflection** | When Ray-Traced Reflections are active, this displays the ray-traced reflections. | +| **Transparent Screen Space Reflection** | When Ray-Traced Reflections are active, this displays the ray-traced reflections on transparent objects. | +| **Contact Shadows** | When Ray-Traced Contact Shadows are active, this displays the ray-traced contact shadows. | +| **Screen Space Shadows** | When screen space shadows are active, this displays the set of screen space shadows. If you select this option, Unity exposes the Screen Space Shadow Index slider that allows you to change the currently active shadows. Area lights shadows take two channels. | +| **Screen Space Global Illumination** | When Ray-Traced Global Illumination is active, this displays a screen space buffer that holds the indirect diffuse lighting. | +| **Recursive Ray-Tracing** | When Recursive Ray Tracing is active, this displays the pixels that have been evaluated using the effect. | +| **Ray-Traced Subsurface Scattering** | When Ray-Traced Subsurface Scattering is active, this displays the subsurface lighting value for the pixels that have been evaluated using the technique. | +| **Light Cluster** | This displays the light cluster with the color that varies by the number of the lights in each cell. The red color indicates that the number of lights is over 12 or equal to the maximum number of lights per cell.
  • **Light Category**: Use the drop-down to visualize the number of the lights in the selected light category.
| +| **Ray Tracing Acceleration Structure** | This mode displays the GameObjects included in the ray tracing acceleration structure for the following effects:
  • Shadows
  • Ambient Occlusion
  • Global Illumination
  • Reflections
  • Recursive Rendering
  • Path Tracer
HDRP only builds the acceleration structure when you activate the effect you select in this mode, otherwise the debug view is black. This mode has the following visualization options:
  • InstanceID: Assigns a color randomly based on the GameObject's InstanceID.
  • PrimitiveID: Assigns a color randomly based on the GameObject's PrimitiveID.
| diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Getting-Started.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Getting-Started.md index 37c06fce599..10f60932e6b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Getting-Started.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Ray-Tracing-Getting-Started.md @@ -44,15 +44,19 @@ To set up ray tracing manually, you need to: #### Upgrade to DirectX 12 -HDRP enables DirextX12 by default. To enable DirectX 12 manually: +In Unity 6, DirectX 12 is enabled by default. -1. Open the Project Settings window (menu: **Edit** > **Project Settings**), then select the **Player** tab. -2. Select the **Other Settings** drop-down, and in the **Rendering** section, disable Auto Graphics API for Windows. This exposes the Graphics APIs for Windows section. -3. In the **Graphics APIs for Windows** section, click the plus (**+**) button and select **Direct3d12**. -4. Unity uses Direct3d11 by default. To make Unity use Direct3d12, move **Direct3d12 (Experimental)** to the top of the list. -5. To apply the changes, you may need to restart the Unity Editor. If a window prompt appears telling you to restart the Editor, click **Restart Editor** in the window. +To enable DirectX 12 manually: -The Unity Editor window should now include the <DX12> tag in the title bar. +1. Go to **Edit** > **Project Settings** > **Player** > **Other Settings**. + +1. In the **Rendering** section, disable **Auto Graphics API for Windows**. + + This exposes the Graphics APIs for Windows section. + +1. Make sure **Direct3D12** is at the top of the list. + + If you made any changes to the rendering settings, you might be prompted to restart the Unity Editor. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Shadows-in-HDRP.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Shadows-in-HDRP.md index 3488bc431bb..b8332193f6e 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/Shadows-in-HDRP.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/Shadows-in-HDRP.md @@ -37,6 +37,8 @@ To enable this feature: HDRP renders all real-time shadows for a frame using a shadow map atlas for all [punctual light](Glossary.md#PunctualLight) shadows, an atlas for area lights and another one for Directional Light shadows. +HDRP also renders separate shadow atlases for cached shadows. For more information, refer to [Update shadows less frequently](shadow-update-mode.md). + Set the size of these atlases in your Unity Project’s [HDRP Asset](HDRP-Asset.md). The atlas size determines the maximum resolution of shadows in your Scene. For example, the default size of an atlas is 4096 x 4096, which can fit: @@ -44,19 +46,6 @@ For example, the default size of an atlas is 4096 x 4096, which can fit: - Sixteen shadow maps of 1024 x 1024 pixels. - Two shadow maps of 2048 x 2048 plus four shadow maps of 1024 x 1024 plus eight shadow maps of 512 x 512 plus 32 shadow maps of 256 x 256. -### Preserve shadow atlas placement - -If you disable a Light or change its **Update Mode** to **Every Frame**, the cached shadow manager unreserves the Light's shadow map's space in the cached shadow atlas and HDRP begins to render the Light's shadow map to the normal shadow atlases every frame. If the cached shadow manager needs to allocate space on the atlas for another Light, it can overwrite the space currently taken up by the original Light's shadow map. - -If you want to temporarily set a Light's **Update Mode** to **Every Frame** and want to set it back to **On Enable** or **On Demand** later, you can preserve the Light's shadow map placement in its atlas. This is useful, for example, if you want HDRP to cache a far away Light's shadow map, but update it every frame when it gets close to the [Camera](hdrp-camera-component-reference.md). To do this: - -1. Select a Light in your scene to view it in the Inspector window. -2. Go to **HDAdditionalLightData** and open the More menu (⋮) -3. Select **Edit Script** -4. Enable **preserveCachedShadow** and set it to **True**. HDRP preserves the Light's shadow map's space in its shadow atlas. - -**Note**: Even if you enable **preserveCachedShadow**, if you destroy the Light, it loses its placement in the shadow atlas. - ### Control the maximum number of shadows on screen In addition to the atlases, you can also set the maximum number of shadow maps HDRP can render in a single frame. To do this, open your Unity Project’s HDRP Asset, navigate to the **Shadows** section, and enter a **Max Shadows on Screen** value. If the number of shadow maps on screen is higher than this limit, HDRP doesn't render them. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/System-Requirements.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/System-Requirements.md index 495c8368f44..cc6eb578bbb 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/System-Requirements.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/System-Requirements.md @@ -30,7 +30,7 @@ This section describes the HDRP package’s target platform requirements. For pl For more information, see [System requirements for Unity](https://docs.unity3d.com/Manual/system-requirements.html). -HRDP is compatible with the following platforms: +HDRP is compatible with the following platforms: - Windows and Windows Store, with DirectX 11 or DirectX 12 and Shader Model 5.0 - Sony diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md index c40f8d4ecd5..d871c375859 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md @@ -112,6 +112,7 @@ * [Path tracing limitations](path-tracing-limitations.md) * [Ray Tracing Settings](Ray-Tracing-Settings.md) * [Ray tracing hardware requirements](raytracing-requirements.md) + * [Troubleshoot ray tracing issues](raytracing-troubleshooting.md) * [Volumetric lighting](lighting-volumetric.md) * [Enable and configure volumtetric lights](Volumetric-Lighting.md) * [Screen space lens flare](shared/lens-flare/Override-Screen-Space-Lens-Flare.md) @@ -193,6 +194,7 @@ * [Create realistic clouds (volumetric clouds)](create-realistic-clouds-volumetric-clouds.md) * [Create simple clouds (Cloud Layer)](create-simple-clouds-cloud-layer.md) * [Create custom cloud effects](create-custom-cloud-effects.md) + * [Troubleshooting Volumetric Clouds rendering issues](troubleshooting-volumetric-clouds-rendering-issues.md) * [Fog](fog.md) * [Understand fog](Understand-Fog.md) * [Create a global fog effect](create-a-global-fog-effect.md) @@ -207,6 +209,7 @@ * [Quality and performance decisions](water-quality-and-performance-decisions.md) * [Water Override for Volumes](water-the-water-system-volume-override.md) * [Water surface fluctuations](water-decals-masking-landing.md) + * [Water decals](introduction-to-water-decals.md) * [Enable mask and current water decals](enable-mask-and-current-water-decals.md) * [Configure swell, agitation, or ripples](add-swell-agitation-or-ripples.md) * [Simulating currents with water decals](simulating-currents-with-water-decals.md) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/clouds.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/clouds.md index 9d0d30130c5..1c0bac613c7 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/clouds.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/clouds.md @@ -8,3 +8,6 @@ The High Definition Render Pipeline (HDRP) includes two cloud solutions that you | [Create realistic clouds (volumetric clouds)](create-realistic-clouds-volumetric-clouds.md) | Use a Volumetric Clouds Volume Override to create interactable clouds that can render shadows, and receive fog and volumetric light. | | [Create simple clouds (Cloud Layer)](create-simple-clouds-cloud-layer.md) | Use a Cloud Layer Volume Override to create a simple representation of clouds using a 2D texture rendered on top of the sky. | | [Create custom cloud effects](create-custom-cloud-effects.md) | Create your own custom clouds with their own properties and shaders, while still keeping the clouds consistent with HDRP's lighting pipeline. | +| [Troubleshooting Volumetric Clouds rendering issues](troubleshooting-volumetric-clouds-rendering-issues.md) | Prevent far-away clouds from disappearing when the camera moves along the y-axis, especially when traversing the clouds. | + +* diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/decal-material-inspector-reference.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/decal-material-inspector-reference.md index 65b1846ef88..5f7db91cb3e 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/decal-material-inspector-reference.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/decal-material-inspector-reference.md @@ -10,53 +10,53 @@ Refer to [Decals](decals.md) for more information. ### Surface Options -These properties allow you to set the affected attributes of the Material the decal is project onto when HDRP renders it into the Scene. +View and edit these properties to affect the attributes of the material the decal is projected onto when HDRP renders it into the scene. -| **Property** | **Description** | -| ------------------------------- | ------------------------------------------------------------ | -| **Affect BaseColor** | Enable the checkbox to make this decal use the **baseColor** properties. Otherwise the decal has no baseColor effect. Regardless of whether you enable or disable this property, HDRP still uses the alpha channel of the base color as an opacity for the other properties. | -| **Affect Normal** | Enable the checkbox to make the decal use the **normal** property. Otherwise, the decal does not modify the normals of the receiving Material. | -| **Affect Metal** | Enable the checkbox to make the decal use the metallic property of its **Mask Map**. Otherwise the decal has no metallic effect. Uses the red channel of the **Mask Map**.
This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals). | -| **Affect Ambient Occlusion** | Enable the checkbox to make the decal use the ambient occlusion property of its **Mask Map**. Otherwise the decal has no ambient occlusion effect. Uses the green channel of the **Mask Map**.
This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals). | -| **Affect Smoothness** | Enable the checkbox to make the decal use the smoothness property of its **Mask Map**. Otherwise the decal has no smoothness effect. Uses the alpha channel of the **Mask Map**.
| -| **Affect Emissive** | Enable the checkbox to make this decal emissive. When enabled, this Material appears self-illuminated and acts as a visible source of light. This property does not work with transparent receiving Materials. Emissive decals always give an additive positive contribution. This property does not affect the existing emissive properties of the Materials assigned to a GameObject. | +| **Property** | **Description** | +|------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Affect BaseColor** | Enable the checkbox to make this decal use the **baseColor** properties. Otherwise the decal has no baseColor effect. Regardless of whether you enable or disable this property, HDRP still uses the alpha channel of the base color as an opacity for the other properties.

Applies to both opaque and transparent surfaces. | +| **Affect Normal** | Enable the checkbox to make the decal use the **normal** property. Otherwise, the decal does not modify the normals of the receiving Material.

Applies to both opaque and transparent surfaces. | +| **Affect Metal** | Enable the checkbox to make the decal use the metallic property of its **Mask Map**. Otherwise the decal has no metallic effect. Uses the red channel of the **Mask Map**.

This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals).

Applies to opaque surfaces only. | +| **Affect Ambient Occlusion** | Enable the checkbox to make the decal use the ambient occlusion property of its **Mask Map**. Otherwise the decal has no ambient occlusion effect. Uses the green channel of the **Mask Map**.

This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals).

Applies to opaque surfaces only. | +| **Affect Smoothness** | Enable the checkbox to make the decal use the smoothness property of its **Mask Map**. Otherwise the decal has no smoothness effect. Uses the alpha channel of the **Mask Map**.

Applies to both opaque and transparent surfaces. | +| **Affect Emissive** | Enable the checkbox to make this decal emissive. When enabled, this Material appears self-illuminated and acts as a visible source of light. This property does not work with transparent receiving Materials. Emissive decals always give an additive positive contribution. This property does not affect the existing emissive properties of the Materials assigned to a GameObject.

Applies to opaque surfaces only. | ### Surface Inputs These properties allow you to set the inputs that affect the behavior of the decal when HDRP renders it into the Scene. -| **Property** | **Description** | -| ------------------------------- | ------------------------------------------------------------ | -| **Base Map / Opacity** | Allows you to specify a Texture for the decal as well as modify the decal’s base color and opacity. | -| **Normal Map** | A map that modifies the normal property of the Material the decal projects onto. If no normal is provided, a default normal poting up in tangent space is used. | -| **Normal Opacity channel** | Use this drop-down to select the source of normal map opacity. You can select either **Base Color Map Alpha**, **Mask Map Blue** or **Mask Opacity**:
• **Base Color Map Alpha**: Uses the alpha channel of the **Base Map**’s color picker as opacity.
• **Mask Map Blue**: Uses the blue channel of the **Mask Map** as opacity.
• **Opacity Mask**: Uses the Mask Opacity. | -| **Mask Map** | Assign a [channel-packed Texture](Glossary.md#ChannelPacking) with the following Material maps in its RGBA channels.
• **Red**: Stores the metallic map.
• **Green**: Stores the ambient occlusion map.
• **Blue**: Stores the opacity mask map.
• **Alpha**: Stores the smoothness map.
For more information on channel-packed Textures and the mask map, see [mask map](Mask-Map-and-Detail-Map.md#MaskMap). | -| **Metallic** | Use the slider to set the strength of the metallic effect of the decal. Choose a value from 0 and 1 where 0 means no effect and 1 means full effect.
This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals). | -| **Ambient Occlusion** | Use the slider to set the strength of the ambient occlusion effect of the decal.
This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals). | -| **Smoothness** | Use the slider to set the strength of the smoothness of the decal. | -| **Metallic Remapping** | Remaps the metallic values from the **Mask Map** to the range you specify. Rather than [clamping](https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html) values to the new range, it condenses the original range down to the new range uniformly.
This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals). | -| **AO Remapping** | Remaps the ambient occlusion values from the **Mask Map** to the range you specify. Rather than [clamping](https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html) values to the new range, it condenses the original range down to the new range uniformly.
This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals). | -| **Smoothness Remapping** | Remaps the smoothness values from the **Mask Map** to the range you specify. Rather than [clamping](https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html) values to the new range, it condenses the original range down to the new range uniformly. | -| **Mask Opacity channel** | Use this drop-down to select the source of the **Mask Map** opacity. You can select either **Base Color Map Alpha**, **Mask Map Blue** or **Mask Opacity**:
• **Base Color Map Alpha**: Uses the alpha channel of the **Base Map**’s color picker as opacity.
• **Mask Map Blue**: Uses the blue channel of the **Mask Map** as opacity.
• **Opacity Mask**: Uses the Mask Opacity. | -| **Scale Mask Map Blue Channel** | Use the slider to set the multiplier for the opacity (blue channel of the **Mask Map**). A value of 0 means no effect and a value of 1 means full effect. | -| **Mask opacity** | Use the slider to set the opacity value to use for Mettalic, Ambient Occlusion and Smoothness if **Mask Opacity channel** is setup to Mask Opacity. A value of 0 means no effect and a value of 1 means full effect. | -| **Global Opacity** | Use the slider to set the opacity of the decal. The lower the value, the more transparent the decal. The opacity combine with all the other opacity control. | -| **Use Emission Intensity** | Enable the checkbox to use a separate LDR color and intensity value to set the emission color for this Material. Disable this checkbox to only use an HDR color to handle the color and emission color intensity. | -| **Emission Map** | Assign a Texture that this Material uses for emission. You can also use the color picker to select a color that HDRP multiplies by the Texture. If you do not set an emission texture then HDRP only uses the HDR color to calculate the final emissive color of the Material. You can set the intensity of the HDR color within the HDR color picker. | -| **Emission Intensity** | Set the overall strength of the emission effect for this Material. Use the drop-down to select one of the following [physical light units](Physical-Light-Units.md) to use for intensity:
• [Luminance](Physical-Light-Units.md#Nits)
• [EV100](Physical-Light-Units.md#EV)
This property only appears when you enable the **Use Emission Intensity** checkbox. | +| **Property** | **Description** | +|---------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Base Map / Opacity** | Allows you to specify a Texture for the decal as well as modify the decal’s base color and opacity.

Applies to both opaque and transparent surfaces. | +| **Normal Map** | A map that modifies the normal property of the Material the decal projects onto. If no normal is provided, a default normal poting up in tangent space is used.

Applies to both opaque and transparent surfaces. | +| **Normal Opacity channel** | Use this drop-down to select the source of normal map opacity. You can select either **Base Color Map Alpha**, **Mask Map Blue** or **Mask Opacity**:

• **Base Color Map Alpha**: Uses the alpha channel of the **Base Map**’s color picker as opacity.

• **Mask Map Blue**: Uses the blue channel of the **Mask Map** as opacity.

• **Opacity Mask**: Uses the Mask Opacity.

Applies to both opaque and transparent surfaces. | +| **Mask Map** | Assign a [channel-packed Texture](Glossary.md#ChannelPacking) with the following Material maps in its RGBA channels.

• **Red**: Stores the metallic map.

• **Green**: Stores the ambient occlusion map.

• **Blue**: Stores the opacity mask map.

• **Alpha**: Stores the smoothness map.

For more information on channel-packed Textures and the mask map, see [mask map](Mask-Map-and-Detail-Map.md#MaskMap).

Applies to opaque surfaces only. | +| **Metallic** | Use the slider to set the strength of the metallic effect of the decal. Choose a value from 0 and 1 where 0 means no effect and 1 means full effect.

This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals).

Applies to opaque surfaces only. | +| **Ambient Occlusion** | Use the slider to set the strength of the ambient occlusion effect of the decal.

This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals).

Applies to opaque surfaces only. | +| **Smoothness** | Use the slider to set the strength of the smoothness of the decal.

Applies to both opaque and transparent surfaces. | +| **Metallic Remapping** | Remaps the metallic values from the **Mask Map** to the range you specify. Rather than [clamping](https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html) values to the new range, it condenses the original range down to the new range uniformly.

This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals).

Applies to opaque surfaces only. | +| **AO Remapping** | Remaps the ambient occlusion values from the **Mask Map** to the range you specify. Rather than [clamping](https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html) values to the new range, it condenses the original range down to the new range uniformly.

This property only appears when you enable the **Metal and Ambient Occlusion properties** checkbox in your [HDRP Asset](HDRP-Asset.md#Decals).

Applies to opaque surfaces only. | +| **Smoothness Remapping** | Remaps the smoothness values from the **Mask Map** to the range you specify. Rather than [clamping](https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html) values to the new range, it condenses the original range down to the new range uniformly.

Applies to both opaque and transparent surfaces. | +| **Mask Opacity channel** | Use this drop-down to select the source of the **Mask Map** opacity. You can select either **Base Color Map Alpha**, **Mask Map Blue** or **Mask Opacity**:

• **Base Color Map Alpha**: Uses the alpha channel of the **Base Map**’s color picker as opacity.

• **Mask Map Blue**: Uses the blue channel of the **Mask Map** as opacity.

• **Opacity Mask**: Uses the Mask Opacity.

Applies to both opaque and transparent surfaces. | +| **Scale Mask Map Blue Channel** | Use the slider to set the multiplier for the opacity (blue channel of the **Mask Map**). A value of 0 means no effect and a value of 1 means full effect.

Applies to both opaque and transparent surfaces. | +| **Mask opacity** | Use the slider to set the opacity value to use for Mettalic, Ambient Occlusion and Smoothness if **Mask Opacity channel** is setup to Mask Opacity. A value of 0 means no effect and a value of 1 means full effect.

Applies to both opaque and transparent surfaces. | +| **Global Opacity** | Use the slider to set the opacity of the decal. The lower the value, the more transparent the decal. The opacity combine with all the other opacity control.

Applies to both opaque and transparent surfaces. | +| **Use Emission Intensity** | Enable the checkbox to use a separate LDR color and intensity value to set the emission color for this Material. Disable this checkbox to only use an HDR color to handle the color and emission color intensity.

Applies to opaque surfaces only. | +| **Emission Map** | Assign a Texture that this Material uses for emission. You can also use the color picker to select a color that HDRP multiplies by the Texture. If you do not set an emission texture then HDRP only uses the HDR color to calculate the final emissive color of the Material. You can set the intensity of the HDR color within the HDR color picker.

Applies to opaque surfaces only. | +| **Emission Intensity** | Set the overall strength of the emission effect for this Material. Use the drop-down to select one of the following [physical light units](Physical-Light-Units.md) to use for intensity:

• [Luminance](Physical-Light-Units.md#Nits)

• [EV100](Physical-Light-Units.md#EV)

This property only appears when you enable the **Use Emission Intensity** checkbox.

Applies to opaque surfaces only. | ### Sorting Inputs These properties allow you to change the rendering behavior of the decal. -| **Property** | **Description** | -| -------------------------- | ------------------------------------------------------------ | -| **Draw Order** | Controls the order in which HDRP draws decals in the Scene. HDRP draws decals with lower values first, so it draws decals with a higher draw order value on top of those with lower values. This feature works for decals projected on opaque and transparent surfaces. Additionally, if you have multiple Decal Materials with the same **Draw Order**, the order HDRP renders them in depends on the order you create the Materials. HDRP renders Decal Materials you create first before those you create later with the same **Draw Order**, or Materials that you load first from an AssetBundle.
To control the order of Mesh decals using the same Material, you should set the priority value on the MeshRenderer of the Mesh decals. | -| **Mesh Decal Bias Type** | Determines the type of bias that HDRP applies to the decal’s Mesh to stop it from overlapping with other Meshes. The options are:
• **Depth Bias**: Applies a bias to the final depth value,
• **View Bias**: Applies a world-space bias (in meters) alongside the view vector. | -| **- Mesh Decal View Bias** | A world-space bias (in meters) that HDRP applies to the decal’s Mesh to stop it from overlapping with other Meshes along the view vector. A positive value draws the decal in front of any overlapping Mesh, while a negative value offsets the decal and draws it behind. This property only affects decal Materials directly attached to GameObjects with a Mesh Renderer, so Decal Projectors do not use this property. This property is only visible if **Mesh Decal Bias Type** is set to **View Bias**. | -| **Mesh Decal Depth Bias** | A depth bias that HDRP applies to the decal’s Mesh to stop it from overlapping with other Meshes. A negative value draws the decal in front of any overlapping Mesh, while a positive value offsets the decal and draw it behind. This property only affects decal Materials directly attached to GameObjects with a Mesh Renderer, so Decal Projectors do not use this property. This property is only visible if **Mesh Decal Bias Type** is set to **Depth Bias**. | +| **Property** | **Description** | +|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Draw Order** | Controls the order in which HDRP draws decals in the Scene. HDRP draws decals with lower values first, so it draws decals with a higher draw order value on top of those with lower values. This feature works for decals projected on opaque and transparent surfaces. Additionally, if you have multiple Decal Materials with the same **Draw Order**, the order HDRP renders them in depends on the order you create the Materials. HDRP renders Decal Materials you create first before those you create later with the same **Draw Order**, or Materials that you load first from an AssetBundle.

To control the order of Mesh decals using the same Material, you should set the priority value on the MeshRenderer of the Mesh decals.

Applies to both opaque and transparent surfaces. | +| **Mesh Decal Bias Type** | Determines the type of bias that HDRP applies to the decal’s Mesh to stop it from overlapping with other Meshes. The options are:

• **Depth Bias**: Applies a bias to the final depth value,

• **View Bias**: Applies a world-space bias (in meters) alongside the view vector.

Applies to both opaque and transparent surfaces. | +| **Mesh Decal View Bias** | A world-space bias (in meters) that HDRP applies to the decal’s Mesh to stop it from overlapping with other Meshes along the view vector. A positive value draws the decal in front of any overlapping Mesh, while a negative value offsets the decal and draws it behind. This property only affects decal Materials directly attached to GameObjects with a Mesh Renderer, so Decal Projectors do not use this property. This property is only visible if **Mesh Decal Bias Type** is set to **View Bias**.

Applies to both opaque and transparent surfaces. | +| **Mesh Decal Depth Bias** | A depth bias that HDRP applies to the decal’s Mesh to stop it from overlapping with other Meshes. A negative value draws the decal in front of any overlapping Mesh, while a positive value offsets the decal and draw it behind. This property only affects decal Materials directly attached to GameObjects with a Mesh Renderer, so Decal Projectors do not use this property. This property is only visible if **Mesh Decal Bias Type** is set to **Depth Bias**.

Applies to both opaque and transparent surfaces. | ### HDRP Asset properties -You can edit global settings that apply to all decals in your Scene in your Unity Project’s HDRP Asset. For information on these properties, see the [**Decals** section of the HDRP Asset documentation](HDRP-Asset.md#Decals). +You can edit global settings that apply to all decals in your Scene in your Unity Project’s HDRP Asset. For information on these properties, refer to the [**Decals** section of the HDRP Asset documentation](HDRP-Asset.md#Decals). diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/diffusion-profile-reference.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/diffusion-profile-reference.md index 035615c337e..43049f16107 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/diffusion-profile-reference.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/diffusion-profile-reference.md @@ -43,8 +43,8 @@ The following image shows the effect of dual lobes on a human face model, with * The following image shows the effect of increasing **Diffuse Shading Power** on a human face model. - - + +
Drag the slider to compare the images. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/hair-master-stack-reference.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/hair-master-stack-reference.md index dce190bad1e..e52b79bb39a 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/hair-master-stack-reference.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/hair-master-stack-reference.md @@ -151,9 +151,9 @@ This Master Stack material type adds all its Vertex Blocks to the Vertex Context ### Fragment Context -#### Default +Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add the following blocks to the Fragment Context. -When you create a new Hair Master Stack, the Fragment Context contains the following Blocks by default: +# Approximate hair Material Type @@ -164,25 +164,28 @@ When you create a new Hair Master Stack, the Fragment Context contains the follo [!include[](snippets/shader-graph-blocks/base-color.md)] -[!include[](snippets/shader-graph-blocks/normal-tangent-space.md)] +[!include[](snippets/shader-graph-blocks/specular-tint.md)] +[!include[](snippets/shader-graph-blocks/secondary-specular-tint.md)] [!include[](snippets/shader-graph-blocks/bent-normal.md)] +[!include[](snippets/shader-graph-blocks/secondary-specular-shift.md)] +[!include[](snippets/shader-graph-blocks/specular-shift.md)] [!include[](snippets/shader-graph-blocks/hair-strand-direction.md)] -[!include[](snippets/shader-graph-blocks/transmittance.md)] -[!include[](snippets/shader-graph-blocks/rim-transmission-intensity.md)] -[!include[](snippets/shader-graph-blocks/smoothness.md)] +[!include[](snippets/shader-graph-blocks/secondary-smoothness.md)] [!include[](snippets/shader-graph-blocks/ambient-occlusion.md)] +[!include[](snippets/shader-graph-blocks/smoothness.md)] [!include[](snippets/shader-graph-blocks/alpha.md)] -[!include[](snippets/shader-graph-blocks/specular-tint.md)] -[!include[](snippets/shader-graph-blocks/specular-shift.md)] -[!include[](snippets/shader-graph-blocks/secondary-specular-tint.md)] -[!include[](snippets/shader-graph-blocks/secondary-specular-shift.md)] [!include[](snippets/shader-graph-blocks/emission.md)] +[!include[](snippets/shader-graph-blocks/alpha-clip-threshold.md)] +[!include[](snippets/shader-graph-blocks/alpha-clip-threshold-shadow.md)] +[!include[](snippets/shader-graph-blocks/depth-offset.md)] +[!include[](snippets/shader-graph-blocks/normal-tangent-space.md)] +[!include[](snippets/shader-graph-blocks/alpha-clip-threshold-depth-prepass.md)] +[!include[](snippets/shader-graph-blocks/transmittance.md)] +[!include[](snippets/shader-graph-blocks/rim-transmission-intensity.md)]
-#### Relevant - -Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add the following blocks to the Fragment Context: +# Physical Material Type @@ -192,22 +195,20 @@ Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add -[!include[](snippets/shader-graph-blocks/alpha-clip-threshold.md)] -[!include[](snippets/shader-graph-blocks/alpha-clip-threshold-depth-postpass.md)] -[!include[](snippets/shader-graph-blocks/alpha-clip-threshold-depth-prepass.md)] -[!include[](snippets/shader-graph-blocks/alpha-clip-threshold-shadow.md)] -[!include[](snippets/shader-graph-blocks/baked-back-gi.md)] -[!include[](snippets/shader-graph-blocks/baked-gi.md)] -[!include[](snippets/shader-graph-blocks/depth-offset.md)] -[!include[](snippets/shader-graph-blocks/normal-object-space.md)] -[!include[](snippets/shader-graph-blocks/normal-world-space.md)] -[!include[](snippets/shader-graph-blocks/specular-aa-screen-space-variance.md)] -[!include[](snippets/shader-graph-blocks/specular-aa-threshold.md)] -[!include[](snippets/shader-graph-blocks/specular-occlusion.md)] +[!include[](snippets/shader-graph-blocks/base-color.md)] +[!include[](snippets/shader-graph-blocks/bent-normal.md)] +[!include[](snippets/shader-graph-blocks/hair-strand-direction.md)] +[!include[](snippets/shader-graph-blocks/ambient-occlusion.md)] +[!include[](snippets/shader-graph-blocks/smoothness.md)] +[!include[](snippets/shader-graph-blocks/emission.md)] +[!include[](snippets/shader-graph-blocks/normal-tangent-space.md)] +[!include[](snippets/shader-graph-blocks/alpha.md)] [!include[](snippets/shader-graph-blocks/smoothness-radial.md)] [!include[](snippets/shader-graph-blocks/cuticle-angle.md)] -[!include[](snippets/shader-graph-blocks/strand-count-probe.md)] -[!include[](snippets/shader-graph-blocks/strand-shadow-bias.md)] +[!include[](snippets/shader-graph-blocks/alpha-clip-threshold.md)] +[!include[](snippets/shader-graph-blocks/depth-offset.md)] +[!include[](snippets/shader-graph-blocks/alpha-clip-threshold-shadow.md)] +[!include[](snippets/shader-graph-blocks/alpha-clip-threshold-depth-prepass.md)]
Default Value
diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/introduction-to-water-decals.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/introduction-to-water-decals.md new file mode 100644 index 00000000000..a6b669f9b1a --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/introduction-to-water-decals.md @@ -0,0 +1,14 @@ +# Water decals + +To create foam, deformation, or water currents, you can use a water decal. Water decals add localized water effects to a specific region in a 3D scene. This region is anchored in world space to a GameObject transform or, by default, to the camera. Use water decals to easily replicate effects across multiple regions, such as around islands or shorelines, without re-authoring textures. + +For example, you can use water decals to add foam, attenuate swell, fine-tune currents, or create shoreline waves around an island. Then, you can replicate this setup by duplicating the decals to apply the same localized effects to another island, without re-authoring textures. + +![Example: Water decal features applied to a region in a 3D-rendered scene of an island surrounded by the sea. Multiple water decals add deformation, foam, and currents around the island. Simulation and foam masks reduce water effects in specific regions.](Images/introduction-to-water-decals.jpg) + +Example: Water decal features applied to a region in a 3D-rendered scene of an island surrounded by the sea. Multiple water decals add deformation, foam, and currents around the island. Simulation and foam masks reduce water effects in specific regions. + +## Additional Resources + +- [Decals](decals.md) +- [Enable mask and current water decals](enable-mask-and-current-water-decals.md) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/raytracing-troubleshooting.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/raytracing-troubleshooting.md new file mode 100644 index 00000000000..6e79d2e5e05 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/raytracing-troubleshooting.md @@ -0,0 +1,233 @@ +# Troubleshooting HDRP DXR/real-time ray tracing lighting + +Incorrect lighting, such as missing shadows or lighting leaks, can occur if the camera's field of view, shadow map configurations, or light clusters don't align properly with the scene's geometry. The causes of these issues can be the following: + +- Shadows from directional or punctual lights can be missing if the camera's frustum is misaligned or too narrow, and doesn't cover the shadow map area. + +- Lighting leaks and insufficient light contributions can occur in scenes with closed environments, improper probe placement, or incorrect fallback settings. + + > [!NOTE] + > For each rasterized pixel, the lighting comes from at least five distinct sources: + > * Bullet text. + > * Directional (global) lights and their shadows + > * Direct local lights (point, spot, area) and their shadows + > * Indirect specular lighting: + > * Screen Space Reflection (SSR)/Ray Traced Reflection (RTR) + > * Planar reflection + > * Reflection probes + > * Sky cubemap + +- Indirect diffuse lighting: + + - Screen Space Global Illumination (SSGI)/Ray-Traced Global Illumination (RTGI) + + - Adaptive Probe Volumes (APV) + + - Light probe groups + + - Lightmaps + + - Ambient probes + +- Fog + +## Fix missing shadows from directional lights + +### Symptoms + +You might notice the following symptoms when shadows from directional lights are missing: + +- Shadows from directional lights don't appear, even though the light source is visible. + +- Certain areas of the scene appear overly bright without proper shading or occlusion. + +- The lighting feels flat or unrealistic, especially in large outdoor scenes with sunlight. + + + + + + +### Cause + +Shadows cast by directional light don't render if the camera's field of view (frustum) is narrower than the cascade shadow map's coverage area. + +### Resolution + +To fix missing shadows from directional lights, adjust the **Directional Shadow Fallback Intensity** in the [Ray Tracing settings](reference-ray-tracing-settings.html). This setting allows HDRP to apply a fallback shadow value to points in the scene geometry where rays from the camera intersect objects but fall outside the coverage area of the shadow map. Depending on your setup, use 0.0 (in shadow) or 1.0 (fully lit) as the fallback shadow value. + +## Fix missing shadows from punctual lights + +### Symptoms + +The following symptoms indicate missing shadows from punctual lights: + +- Shadows from point lights or spot lights are missing, causing illuminated objects to look as though they're lit from all directions. + +- Scenes appear washed out or lack depth, particularly when using small, concentrated light sources. + +- Light leaks occur in areas where shadows are meant to be cast by nearby objects. + + + + + + +### Cause + +Shadows cast by punctual lights don't render if the camera's field of view (frustum) is narrower than the cascade shadow map's coverage area. + +### Resolution + +To fix missing shadows from punctual lights, enable **Extend Shadow Culling** in the [Ray Tracing settings](reference-ray-tracing-settings.html). + +Extended shadow culling provides the following benefits: + +- The [extended frustum culling region](reference-ray-tracing-settings.html#extended-culling) includes more objects in the shadow maps, even if their shadows don't affect pixels inside the frustum. + +- Extended frustum culling doesn't increase the size of the cascade shadow map (only for directional lights). + +However, extended shadow culling increases memory use and computational load. + +## Fix insufficient local light contributions + +### Symptoms + +If local lights, such as point or area lights, aren't contributing properly to the scene, you might observe the following: + +- Local lights seem too dim or fail to light nearby objects properly. + +- Certain objects appear unlit or underlit despite being close to a light source. + +- Ray-traced global illumination (RTGI) or RTR lighting doesn't seem to take local lights into account. + +### Cause + +The [light cluster's](Ray-Tracing-Light-Cluster.html) configuration can cause issues with the impact of direct local lights on real-time ray tracing (RTR) and ray-traced global illumination (RTGI). + +### Resolution + +To fix insufficient local light contributions, diagnose the issue in the [Rendering Debugger window](use-the-rendering-debugger.md). + +- If the number of lights in each cell exceeds the default limit, reduce the number of lights in **Edit** > **Project Settings** > **Quality** > **HDRP** > **Lights**. + +- If lights outside the camera range aren't contributing as expected, enlarge the camera cluster range in the volume's **Inspector** window under **Override** > **Ray Tracing** > **Light Cluster**. + +## Fix indirect specular light leaks + +### Symptoms + +The following symptoms might occur when an indirect specular light leaks: + +- Reflections, especially on glossy or metallic surfaces, are either missing or overly bright, as though they reflect the sky or environment instead of the intended object. + +- Unrealistic or random bright spots appear on surfaces with specular highlights, especially in interior scenes. + +- Reflections seem disconnected from nearby objects or appear out of place. + + + + + + +### Cause + +Common causes for indirect specular light leaks include the absence of reflection probes and incorrect fallback settings in the last bounce of screen-space reflections (SSR) and real-time ray tracing (RTR). + +### Resolution + +To fix indirect specular light leaks, add reflection probes and configure the **Ray Miss** and **Last Bounce** settings in the volume's Inspector window under **Override** > **Lighting** > **Screen Space Reflection** > **Tracing** > **Ray Tracing**. + +## Fix lighting leaks that occur when the sky lights the scene + +### Symptoms + +You might encounter the following issues when the sky lights the scene: + +- Bright light leaks from outside or from the sky into enclosed interiors, particularly in areas with no windows or other direct openings. + +- Overexposed or unnaturally bright spots appear on surfaces in closed spaces, even when no visible light sources are present. + +- Lighting feels uneven, with areas illuminated by the sky despite being fully enclosed. + +### Cause + +When the camera is in a closed environment, and no data is sampled from reflection probes at a ray intersection, the sky becomes the only light source. + +### Resolution + +To fix lighting leaks that occur when the sky lights the scene, create, place, and bake reflection probes, or use real-time reflection probes. + +- In the **Last Bounce** dropdown menu, select **Reflection Probes** or **None**. + +- Even in **Quality** mode and with more than the default number of bounces, you must specify a valid source of indirect specular light for the last bounce. + +## Fix indirect diffuse light leaks + +### Symptoms + +The following symptoms can indicate indirect diffuse light leaks: + +- Diffuse lighting appears to seep through walls or barriers, creating bright patches in areas meant to be shaded. + +- Areas in closed environments are lit by ambient or external light sources, producing an unrealistic lighting effect. + +- Objects near walls or other occlusions might appear brighter than intended, disrupting the desired lighting mood. + + + + + + +### Cause + +Common causes of indirect diffuse light leaks include improper use of ambient probes, deprecated light probes, and lightmaps in real-time ray tracing (RTR). + +### Resolution + +To fix indirect diffuse light leaks, follow one or both of these steps: + +- Adjust the **Ambient Probe Dimmer** in the Inspector window under **Override** > **Lighting** > **Screen Space Global Illumination** > **Tracing** > **Ray Tracing**. + +- Bake probes via adaptive probe volumes. + +## Fix fog light leaks + +### Symptoms + +Fog light leaks have the following symptoms: + +- Interior scenes have a tinted or colored fog effect that seems unnatural or overly bright, especially in areas with no visible sky. + +- The color of the fog in enclosed spaces appears inconsistent with the intended lighting setup, creating a disjointed visual effect. + +- Fog might seem to have a glowing or leaking effect, as though it's illuminated by a non-existent light source from outside. + + + + + + +### Cause + +Setting the fog color mode to **Sky Color** can cause unintended tinting in closed interiors. + +### Resolution + +To fix fog light leaks, set the fog's color to a constant black in closed environments. In the Sky and Fog Global Volume's Inspector window, select **Color mode** > **Constant color**, check the **Color box**, and select black in the color wheel. Bake probes via adaptive probe volumes. + +## Additional resources + +- [Unity ray tracing guide](Ray-Tracing-Getting-Started.html) + +- [Ray tracing settings](Ray-Tracing-Settings.html) + +- [Ray-traced global illumination](Ray-Traced-Global-Illumination.html) + +- [Ray-traced reflections](Ray-Traced-Reflections.html) + +- [Understand reflection in HDRP](reflection-understand.html) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/reference-light-component.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/reference-light-component.md index 1881ce43013..140e8df499b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/reference-light-component.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/reference-light-component.md @@ -152,7 +152,7 @@ These settings define the volumetric behavior of this Light. Alter these setting | ----------------- | ------------------------------------------------------------ | | **Enable** | Enable the checkbox to simulate light scattering through volumetric fog. Enabling this property allows you to edit the **Multiplier** and **Shadow Dimmer** properties. | | **Multiplier** | Sets the intensity of the volumetric lighting effect of this Light. | -| **Shadow Dimmer** | Dims the volumetric fog effect of this Light. Set this property to 0 to make the volumetric scattering compute faster. | +| **Shadow Dimmer** | Dims the volumetric shadows the light casts. If you set this property to zero, Unity no longer samples the shadow map to create volumetric shadows, which might reduce the performance impact. | @@ -172,7 +172,7 @@ This section is only available in Realtime or Mixed light **Mode**. | **Property** | **Description** | | -------------------------- | ------------------------------------------------------------ | | **Enable** | Enable the checkbox to let this Light cast shadows. | -| **Update Mode** | Use the drop-down to select the mode that HDRP uses to determine when to update a shadow map.
For information on the modes available, see the [Shadows in HDRP documentation](shadow-update-mode.md). | +| **Update Mode** | Determines how often HDRP updates the shadow map for the Light. The options are:
  • Every Frame: Updates the shadow maps for the Light every frame. This is the default value.
  • On Enable: Updates the shadow maps for the Light only when you enable the GameObject.
  • On Demand: Updates the shadow maps for the Light only when you call the [`HDAdditionalLightData.RequestShadowMapRendering`](xref:UnityEngine.Rendering.HighDefinition.HDAdditionalLightData.RequestShadowMapRendering) API to update them.
For more information, refer to [Update shadows less frequently](shadow-update-mode.md). | | **Resolution** | Set the resolution of this Light’s shadow maps. Use the drop-down to select which quality mode to derive the resolution from. If you don't enable **Use Quality Settings**, or you select **Custom**, set the resolution, measured in pixels, in the input field.
A higher resolution increases the fidelity of shadows at the cost of GPU performance and memory usage, so if you experience any performance issues, try using a lower value. Shadows can be turned off by setting the resolution to 0. | | **Near Plane** | The distance, in meters, from the Light that GameObjects begin to cast shadows. | | **Shadowmask Mode** | Defines how the shadowmask behaves for this Light. For detailed information on each **Shadowmask Mode**, see the documentation on [Shadowmasks](Lighting-Mode-Shadowmask.md). This property is only visible if you tet the **Mode**, under [General](#general), to **Mixed**. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-multiframe-recording-api.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-multiframe-recording-api.md index 1fd0cc4c2d6..e85abc2ad18 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-multiframe-recording-api.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/rendering-multiframe-recording-api.md @@ -1,6 +1,17 @@ # Use the multiframe rendering API -Use the multiframe rendering API to record frames that HDRP accumulates. The multiframe rendering API contains the following calls: +Use the multiframe rendering API to record frames that HDRP accumulates. + +## Limitations + +The multi-frame rendering API internally changes the `Time.timeScale` of the Scene. This means that: + +- You can't have different accumulation motion blur parameters per camera. +- Projects that already modify this parameter per frame aren't be compatible with this feature. + +## Multiframe rendering API calls + +The multiframe rendering API contains the following calls: - `BeginRecording`: Call this when you want to start a multi-frame render. - `PrepareNewSubFrame`: Call this before rendering a new subframe. @@ -14,11 +25,4 @@ The only call that takes any parameters is **BeginRecording**. Here is an explan | **ShutterInterval** | The amount of time the shutter is open between two subsequent frames. A value of **0** results in an instant shutter (no motion blur). A value of **1** means there is no (time) gap between two subsequent frames. | | **ShutterProfile** | An animation curve that specifies the shutter position during the shutter interval. Alternatively, you can also provide the time the shutter was fully open; and when the shutter begins closing. | -Before calling the accumulation API, the application should also set the desired `Time.captureDeltaTime`. Refer to [Combine animations in a script](rendering-combine-animation-sequences-in-script) for an example. - -## Limitations - -The multi-frame rendering API internally changes the `Time.timeScale` of the Scene. This means that: - -- You can't have different accumulation motion blur parameters per camera. -- Projects that already modify this parameter per frame aren't be compatible with this feature. +Before calling the accumulation API, the application should also set the desired `Time.captureDeltaTime`. The example script below demonstrates how to use these API calls. \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/shadow-update-mode.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/shadow-update-mode.md index 786b1acf20a..cd3e78b107b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/shadow-update-mode.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/shadow-update-mode.md @@ -1,41 +1,55 @@ -## Set a shadow update mode +# Update shadows less frequently -You can use **Update Mode** to specify the calculation method HDRP uses to update a [Light](Light-Component.md)'s shadow maps. The following Update Modes are available: +By default, the High Definition Render Pipline (HDRP) calculates the shadow map of a Light every frame. To improve performance, reduce how often HDRP updates the shadow map. -| **Update Mode** | **Description** | -| --------------- | ------------------------------------------------------------ | -| **Every Frame** | HDRP updates the shadow maps for the light every frame. | -| **On Enable** | HDRP updates the shadow maps for the light whenever you enable the GameObject. | -| **On Demand** | HDRP updates the shadow maps for the light every time you request them. To do this, call the RequestShadowMapRendering() method in the Light's HDAdditionalLightData component. | +## Reduce shadow map updates -The High Definition Render Pipeline (HDRP) uses shadow caching to increase performance by only updating the shadow maps for [Lights](Light-Component.md) when it's necessary. HDRP has shadow atlases for punctual, area, and directional Lights, and separate shadow atlases specifically for cached punctual and cached area Lights. For cached directional Lights, they use the same atlas as normal directional Lights. +Follow these steps: -When a Light that caches its shadows renders its shadow map for the first time, HDRP registers it with the cached shadow manager which assigns the shadow map to a cached shadow atlas. For directional Lights, HDRP uses the same shadow atlas for cached and non-cached directional Lights. +1. Select a Light in your Scene. +1. In the Inspector window, in the **Shadows** section, set **Update Mode** to **On Enable** or **On Demand**. -A Light's **Update Mode** determines whether HDRP caches its shadow map: + - **On Enable**: Updates the shadow map only when the Light is enabled. + - **On Demand**: Updates the shadow map only when you use an API to update the shadows manually. -- If you set a Light's **Update Mode** to **OnEnable** or **OnDemand**, HDRP caches the Light's shadow map. -- If you set a Light's **Update Mode** to **Every Frame**, HDRP doesn't cache the Light's shadow map. +In these modes, HDRP caches the shadow map when the shadows update, and uses the cached version between updates. -If you set the Light's **Update Mode** to **OnDemand**, you can manually request HDRP to update the Light's shadow map. To do this: +Point Lights and Area Lights have their own shadow atlas for cached shadows. Directional Lights store cached shadows in the same shadow atlas as non-cached Directional Lights. For more information about shadow atlases, refer to [Control shadow resolution and quality](Shadows-in-HDRP.md). -1. Select a Light in your scene to view it in the Inspector window. -2. Go to **HDAdditionalLightData** and open the More menu (⋮). -3. Select **Edit Script**. -4. Call the `RequestShadowMapRendering` function in the script. +## Updates shadows manually -If the Light has multiple shadows (for example, multiple cascades of a directional light), you can request the update of a specific sub-shadow. To do this, use the `RequestSubShadowMapRendering(shadowIndex)` function. +If you set the **Update Mode** of the Light to **On Demand**, follow these steps to update the shadows: -When you set **Update Mode** to **OnDemand** HDRP renders the shadow maps `OnEnable` for the first time, or when first registered with the system by default. You can change this using the `onDemandShadowRenderOnPlacement` property. If you set this property to false, HDRP doesn't render the shadows until you call `RequestShadowMapRendering` or `RequestSubShadowMapRendering(shadowIndex)`. +1. In the Inspector window for the Light, go to **HDAdditionalLightData** and open the **More** (⋮) menu. +1. Select **Edit Script**. +1. Call the `RequestShadowMapRendering` API in the script when you want to update the shadows. -For a Light that caches its shadows, if you disable it or set its **Update Mode** to **Every Frame**, HDRP can preserve the Light's shadow map's place in the cached shadow atlas. This means that, if you enable the Light again, HDRP doesn't need to re-render the shadow map or place it into a shadow atlas. For information on how to make a Light preserve its shadow map's place in the cached shadow atlas, see [Preserving shadow atlas placement](Shadows-in-HDRP.md#preserve-shadow-atlas-placement). +HDRP also updates the shadows when you first enable [Contact Shadows](Override-Contact-Shadows.md). -As a shortcut for a common case, HDRP offers an option to automatically trigger an update when either the position or rotation of a light changes above a certain threshold. To enable this option: +If you set a Directional Light to **On Demand**, update shadows frequently so they stay up-to-date with the camera position. Otherwise you might see visual artifacts. -1. Select a Light in your Scene to view it in the Inspector window. -2. Go to **Light** > **Shadows** and set **Update Mode** to **On Enable** -3. Enable **Update on light movement**. +For more information about customizing which shadows HDRP updates and when, refer to the [`HDAdditionalLightData`](xref:UnityEngine.Rendering.HighDefinition.HDAdditionalLightData) API. -You can customize the threshold that HDRP uses to determine how much a light needs to move or rotate to trigger an update. To do this, use the properties: `cachedShadowTranslationUpdateThreshold` and `cachedShadowAngleUpdateThreshold` properties on the Light's **HDAdditionalLightData** component. +## Update shadows when the Light moves -**Note**: Point lights ignore the angle differences when determining if they need to perform an update in this mode. \ No newline at end of file +To update the shadow map only when the position or rotation of the Light changes, follow these steps: + +1. Set **Update Mode** to **On Enable**. +1. Enable **Update on light movement**. + +To customize how much a light needs to move or rotate to trigger an update, use the [`cachedShadowAngleUpdateThreshold`](xref:UnityEngine.Rendering.HighDefinition.HDAdditionalLightData.cachedShadowAngleUpdateThreshold) and [`cachedShadowTranslationUpdateThreshold`](xref:UnityEngine.Rendering.HighDefinition.HDAdditionalLightData.cachedShadowTranslationUpdateThreshold) APIs. + +**Note**: Point Lights ignore `cachedShadowAngleUpdateThreshold`. + +## Preserve cached shadows + +To preserve a cached shadow map when you disable a Light or set its **Update Mode** back to **Every Frame**, edit your script to set the [`UnityEngine.Rendering.HighDefinition.HDAdditionalLightData.preserveCachedShadow`](HighDefinition.HDAdditionalLightData.preserveCachedShadow) property to `true`. + +HDRP keeps the shadow map in the shadow atlas, so it doesn't need to re-render the shadow map or place it into a shadow atlas again. This is useful if, for example, you want HDRP to cache the shadow map of a distant Light, but update the shadow map every frame when the Light gets closer to the camera. + +**Note**: If you destroy the Light, HDRP no longer preserves its shadow map in the shadow atlas. + +## Additional resources + +- [Realtime shadows](Realtime-Shadows.md) +- [Contact Shadows](Override-Contact-Shadows.md) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/stp/stp-upscaler.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/stp/stp-upscaler.md index 1db366b1a29..213587849d0 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/stp/stp-upscaler.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/stp/stp-upscaler.md @@ -28,7 +28,7 @@ To enable STP in the High Definition Render Pipeline (HDRP), do the following: 2. In the Inspector, go to **Rendering** > **Dynamic Resolution** and select **Enable**. -2. In the list **Advanced Upsaclers by Priority**, click the **+** button and select **STP** to add it to the list. +2. In the list **Advanced Upscalers by Priority**, click the **+** button and select **STP** to add it to the list. 3. Set **Dynamic Resolution Type** to **Hardware**. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/troubleshooting-volumetric-clouds-rendering-issues.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/troubleshooting-volumetric-clouds-rendering-issues.md new file mode 100644 index 00000000000..a2d60158e32 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/troubleshooting-volumetric-clouds-rendering-issues.md @@ -0,0 +1,23 @@ +# Troubleshooting Volumetric Clouds rendering issues + +Prevent far-away clouds from disappearing when the camera moves along the y-axis, especially when traversing the clouds. + +## Symptoms + +Far-away clouds disappear as the camera moves along the y-axis when the **Rendering Space** is set to **World**. + +## Cause + +To enhance performance, the default number of steps used to evaluate the clouds' transmittance is low. This causes the clouds further away to disappear as the camera moves along the y-axis. + +**Note:** In Unity 6, the default rendering space was changed to **World**, making this issue more noticeable than in Unity 2022 LTS, where **Camera** was the default setting. + +## Resolution + +To prevent far-away clouds from disappearing, increase the **Num Primary Steps** value in the **Quality** section of the **Volumetric Clouds** override. + +**Important:** A high **Num Primary Steps** value can hinder performance. Adjust this setting with caution. + +## Additional resources + +- [Create realistic clouds (volumetric clouds)](create-realistic-clouds-volumetric-clouds.md) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/understand-decals.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/understand-decals.md index e95871efd55..a6c1c006b1f 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/understand-decals.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/understand-decals.md @@ -5,32 +5,38 @@ The High Definition Render Pipeline (HDRP) includes the following ways to create - Use a Decal Mesh and manually position the decal. - Use the [Decal Projector](decal-projector-reference.md) component to project the decal. -To use these methods, you need to create a decal Material. A decal Material is a Material that uses the Decal Shader or Decal Master Stack. You can then place or project your decal Material into a Scene. +To use these methods, you need to create a decal material. A decal material is a material that uses the Decal Shader or Decal Master Stack. You can then place or project your decal material into a Scene. ![Rocky ground with two dark iridescent oil patches.](Images/HDRPFeatures-DecalShader.png) Refer to [Use decals](use-decals.md) for more information. +## How Unity organises decals + +For [decals applied to opaque surfaces](HDRP-Asset.md#decalopaque), HDRP uses a [decal atlas](HDRP-Asset.md#Decals) to store and manage decal textures. A decal atlas is a texture resource that combines multiple opaque decal textures into one. HDRP shares this resource across general opaque decal types in the scene. + +For [decals applied to transparent surfaces](HDRP-Asset.md#decaltransparent) (such as water or glass), HDRP uses clustered structures to store and manage decal textures. HDRP doesn't use decal atlases for transparent surfaces. + ## Decal Projector -When the Decal Projector component projects decals into the Scene, they interact with the Scene’s lighting and wrap around Meshes. You can use thousands of decals in your Scene simultaneously because HDRP instances them. This means that the rendering process is not resource intensive as long as the decals use the same Material. +When the Decal Projector component projects decals into the Scene, they interact with the Scene’s lighting and wrap around Meshes. You can use thousands of decals in your Scene simultaneously because HDRP instances them. This means that the rendering process isn't resource intensive as long as the decals use the same material. -The Decal Projector also supports [Decal Layers](use-decals.md#decal-layers) which means you can control which Materials receive decals on a Layer by Layer basis. +The Decal Projector also supports [Decal Layers](use-decals.md#decal-layers) which means you can control which materials receive decals on a Layer by Layer basis. -![A stony forest floor in the Scene view, with a rectanglar area represnting a Decal Projector above a reflective puddle.](Images/DecalProjector1.png) +![A stony forest floor in the Scene view, with a rectangular area representing a Decal Projector above a reflective puddle.](Images/DecalProjector1.png) ## Limitations -- A Decal Projector can only affect transparent Materials when you use the [Decal Shader](decal-material-inspector-reference.md). +- A Decal Projector can only affect transparent materials when you use the [Decal Shader](decal-material-inspector-reference.md). -- The Decal Shader does not support emissive on Transparent Materials and does support Decal Layers. +- The Decal Shader doesn't support emissive on transparent materials and does support Decal Layers. -- Decal Meshes can only affect opaque Materials with either a [Decal Shader](decal-material-inspector-reference.md) or a [Decal Master Stack](decal-master-stack-reference.md). +- Decal Meshes can only affect opaque materials with either a [Decal Shader](decal-material-inspector-reference.md) or a [Decal Master Stack](decal-master-stack-reference.md). -- Decal Meshes do not support Decal Layers. +- Decal Meshes don't support Decal Layers. -### Migration of data previous to Unity 2020.2 +### Migration of data before Unity 2020.2 -When you convert a project from 2020.2, Mesh renderers and Terrain do not receive any decals by default. +When you convert a project from 2020.2, Mesh renderers and Terrain don't receive any decals by default. This is because, before Unity 2020.2, the default value for the **Rendering Layer Mask** for new Mesh Renderers and Terrain doesn't include Decal Layer flags. diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-decals-masking-landing.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-decals-masking-landing.md index 4e0e4575a4c..a77db2bc129 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-decals-masking-landing.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-decals-masking-landing.md @@ -6,12 +6,13 @@ You can add fluctuations such as swell, agitation, or ripples to the whole of a You can also add detailed visual effects to localized water areas with water decals, a type of shader graph nodes. -| **Page** | **Description** | -|---------------------------------------------------------------------------------------|-----------------------------------------------------------------------------| -| [Enable mask and current water decals](enable-mask-and-current-water-decals.md) | Mask and current water decals are disabled by default. | -| [Configure swell, agitation, or ripples with a water mask](add-swell-agitation-or-ripples.md) | Configure swell, agitation, or ripples across the water surface. | -| [Simulate currents with a water decal](simulating-currents-with-water-decals.md) | Simulate water currents by projecting textures. | -| [Simulate ripples with masks](simulating-foam-or-ripples-with-masks.md) | Create effects like ripples. | -| [Check waves and ripples](add-caustics-and-foam-and-check-waves-and-ripples.md) | Check or retrieve information about the displacement of the water surface. | -| [Float objects on a water surface](float-objects-on-a-water-surface.md) | Add buoyancy to the water simulation. | -| [Align objects to the water surface using normals](align-objects-to-water-surface-using-normals.md) | Make objects follow the curvature of the water in real time. | +| **Page** | **Description** | +|-----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| +| [Introduction to water decals](introduction-to-water-decals.md) | Use mask and current water decals to apply water effects. | +| [Enable mask and current water decals](enable-mask-and-current-water-decals.md) | Create water effects with mask and current water decals in your project. | +| [Configure swell, agitation, or ripples with a water mask](add-swell-agitation-or-ripples.md) | Configure swell, agitation, or ripples across the water surface. | +| [Simulate currents with a water decal](simulating-currents-with-water-decals.md) | Simulate water currents by projecting textures. | +| [Simulate ripples with masks](simulating-foam-or-ripples-with-masks.md) | Create effects like ripples. | +| [Check waves and ripples](add-caustics-and-foam-and-check-waves-and-ripples.md) | Check or retrieve information about the displacement of the water surface. | +| [Float objects on a water surface](float-objects-on-a-water-surface.md) | Add buoyancy to the water simulation. | +| [Align objects to the water surface using normals](align-objects-to-water-surface-using-normals.md) | Make objects follow the curvature of the water in real time. | diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-underwater-view.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-underwater-view.md index 8f8dd0807a9..a8730635e64 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-underwater-view.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-underwater-view.md @@ -1,6 +1,10 @@ # Underwater view -Underwater is rendered as a fullscreen postprocess effect. It uses either a simple analytic formula to estimate light absorption by the water volume, or if volumetric fog is enabled, it will be included in the vbuffer and rendered using volumetric lighting, supporting god rays and light shafts from shadows. +The underwater view is rendered as a full-screen post-processing effect. The view is rendered in one of the following ways: + +* Using a simple analytic formula to estimate light absorption by the water volume. + +* If volumetric fog is enabled, the underwater view is included in the volumetric buffer and rendered using volumetric lighting, supporting light shafts and light shafts from shadows. ## Define the underwater area @@ -20,18 +24,18 @@ To set the area of the underwater view for an ocean, follow these steps: # Water line -When the camera is at the limit of the water surface, the underwater view adds a boundary when transitioning from below to above the water's surface. +When the camera is at the limit of the water's surface, the underwater view adds a boundary when transitioning from below to above the water's surface. ![A view at the same level of a water surface. A clear boundary separates the fluctuating water surface above and the black below.](Images/water-waterline-raw.png) -Additionaly, to customize even more the water line, you can sample the generated underwater buffer in a [Custom Pass](Custom-Pass.md) by using the [HD Sample Buffer](https://docs.unity3d.com/Packages/com.unity.shadergraph@latest/index.html?subfolder=/manual/HD-Sample-Buffer-Node.html) node from the Shader Graph using the "IsUnderwater" option from the Source Buffer dropdown. +To customize the water line even more, you can sample the generated underwater buffer in a [Custom Pass](Custom-Pass.md) by using the [HD Sample Buffer](https://docs.unity3d.com/Packages/com.unity.shadergraph@latest/index.html?subfolder=/manual/HD-Sample-Buffer-Node.html) node from the Shader Graph using the **IsUnderwater** option from the Source Buffer dropdown. -See the Waterline scene in the [HDRP Water samples](HDRP-Sample-Content.md#water-samples) for more details. +Refer to the Waterline scene in the [HDRP Water samples](HDRP-Sample-Content.md#water-samples) for more details. ## Limitations -* When using a custom mesh, underwater will not behave as expected if mesh is not at 0, or if the mesh isn't flat. -* The **Receive Fog** option on transparent materials will also disable underwater. This can be useful to disable absorption on objects when using excluder underwater (like a porthole in the hold of a boat), or simply as an optimization when it is known that fog will not affect the object color. +* When using a custom mesh, underwater doesn't behave as expected if the mesh's Y position isn't at 0, or if the mesh isn't flat. +* The **Receive Fog** option on transparent materials also disables underwater. This can be useful to disable absorption on objects when using excluder underwater (like a porthole in the hold of a boat), or as an optimization when you know that fog doesn't affect the object's color. # Additional resources * [Settings and properties related to the water system](settings-and-properties-related-to-the-water-system.md) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-use-the-water-system-in-your-project.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-use-the-water-system-in-your-project.md index d3064798f95..703f2948f7c 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-use-the-water-system-in-your-project.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/water-use-the-water-system-in-your-project.md @@ -36,7 +36,7 @@ Open **Game Object** > **Water Surface** and select a surface type. You can also use a [Water shader graph](settings-and-properties-related-to-the-water-system.md) to create a Water material. ### Adjust Scene view Effects options -If water surface movement lags and stutters in the Scene view, open the Effects menu in the [View Options](https://docs.unity3d.com/2023.1/Documentation/Manual/ViewModes.html) toolbar and enable the **Always Refresh** option. +If water surface movement lags and stutters in the Scene view, open the Effects menu in the [View Options](https://docs.unity3d.com/Manual/ViewModes.html) toolbar and enable the **Always Refresh** option. ## Configuration examples You can adjust the properties to simulate the appearance of a calm or stormy day, clean or dirty water. Here are a few examples of the kinds of adjustments you might make to simulate different water conditions. diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/FogVolumePropertyBlock.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/FogVolumePropertyBlock.cs index 1400885baf9..fd745434799 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/FogVolumePropertyBlock.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/FogVolumePropertyBlock.cs @@ -20,6 +20,7 @@ internal class Styles public static GUIContent blendMode = new GUIContent("Blend Mode", "Determines how the fog volume will blend with other fogs in the scene."); public static GUIContent singleScatteringAlbedo = new GUIContent("Single Scattering Albedo", "The color this fog scatters light to."); public static GUIContent fogDistance = new GUIContent("Fog Distance", "Density at the base of the fog. Determines how far you can see through the fog in meters."); + public static GUIContent debugSymbolsText = new GUIContent("Debug Symbols", "When enabled, HDRP activates d3d11 debug symbols for this Shader."); } protected override string title => "Fog Volume Options"; @@ -35,6 +36,9 @@ protected override void CreatePropertyGUI() // AddProperty(Styles.singleScatteringAlbedo, () => fogData.singleScatteringAlbedo, (newValue) => fogData.singleScatteringAlbedo = newValue); // AddProperty(Styles.fogDistance, () => fogData.fogDistance, (newValue) => fogData.fogDistance = newValue); AddProperty(Styles.blendMode, () => fogData.blendMode, (newValue) => fogData.blendMode = newValue); + + if (Unsupported.IsDeveloperMode()) + AddProperty(Styles.debugSymbolsText, () => systemData.debugSymbols, (newValue) => systemData.debugSymbols = newValue); } } } diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/FogVolumeSubTarget.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/FogVolumeSubTarget.cs index 5d10995ee62..3b5279bbe55 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/FogVolumeSubTarget.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/FogVolumeSubTarget.cs @@ -172,7 +172,7 @@ PassCollection GetVoxelizePasses() { // Definition displayName = HDShaderPassNames.s_FogVolumeVoxelizeStr, - referenceName = "SHADERPASS_FOGVOLUME_VOXELIZATION", + referenceName = "SHADERPASS_FOG_VOLUME_VOXELIZATION", lightMode = HDShaderPassNames.s_FogVolumeVoxelizeStr, useInPreview = false, @@ -200,7 +200,7 @@ PassDescriptor ShaderGraphPreviewPass() { // Definition displayName = "ShaderGraphPreview", - referenceName = "SHADERPASS_FOGVOLUME_PREVIEW", + referenceName = "SHADERPASS_FOG_VOLUME_PREVIEW", lightMode = "ShaderGraphPreview", useInPreview = true, @@ -228,7 +228,7 @@ PassDescriptor ShaderGraphOverdrawDebugPass() { // Definition displayName = HDShaderPassNames.s_VolumetricFogVFXOverdrawDebugStr, - referenceName = "SHADERPASS_FOGVOLUME_OVERDRAW_DEBUG", + referenceName = "SHADERPASS_FOG_VOLUME_OVERDRAW_DEBUG", lightMode = HDShaderPassNames.s_VolumetricFogVFXOverdrawDebugStr, useInPreview = true, @@ -308,6 +308,7 @@ static class FogVolumeIncludes const string kPacking = "Packages/com.unity.render-pipelines.core/ShaderLibrary/Packing.hlsl"; const string kColor = "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"; const string kFunctions = "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl"; + const string kVoxelizationTransforms = "Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/VoxelizationTransforms.hlsl"; const string kVoxelizePass = "Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/ShaderPassVoxelize.hlsl"; const string kPreviewPass = "Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/ShaderPassPreview.hlsl"; const string kOverdrawPass = "Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/OverdrawDebug.hlsl"; @@ -318,6 +319,7 @@ static class FogVolumeIncludes { kColor, IncludeLocation.Pregraph }, { kFunctions, IncludeLocation.Pregraph }, { CoreIncludes.MinimalCorePregraph }, + { kVoxelizationTransforms, IncludeLocation.Pregraph }, { kVoxelizePass, IncludeLocation.Postgraph }, }; diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/OverdrawDebug.hlsl b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/OverdrawDebug.hlsl index 7e079bfa8b5..24b54722674 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/OverdrawDebug.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/OverdrawDebug.hlsl @@ -1,4 +1,4 @@ -#if SHADERPASS != SHADERPASS_FOGVOLUME_OVERDRAW_DEBUG +#if SHADERPASS != SHADERPASS_FOG_VOLUME_OVERDRAW_DEBUG #error SHADERPASS_is_not_correctly_define #endif diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/ShaderPassPreview.hlsl b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/ShaderPassPreview.hlsl index bd90a161800..cc785e80220 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/ShaderPassPreview.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/ShaderPassPreview.hlsl @@ -1,4 +1,4 @@ -#if SHADERPASS != SHADERPASS_FOGVOLUME_PREVIEW +#if SHADERPASS != SHADERPASS_FOG_VOLUME_PREVIEW #error SHADERPASS_is_not_correctly_define #endif diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/ShaderPassVoxelize.hlsl b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/ShaderPassVoxelize.hlsl index 2f0ab60c9bd..3f5e933cfe8 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/ShaderPassVoxelize.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/ShaderPassVoxelize.hlsl @@ -1,4 +1,4 @@ -#if SHADERPASS != SHADERPASS_FOGVOLUME_VOXELIZATION +#if SHADERPASS != SHADERPASS_FOG_VOLUME_VOXELIZATION #error SHADERPASS_is_not_correctly_define #endif @@ -91,14 +91,13 @@ VertexToFragment Vert(uint instanceId : INSTANCEID_SEMANTIC, uint vertexId : VER return output; } -FragInputs BuildFragInputs(VertexToFragment v2f, float3 voxelPositionOS, float3 voxelClipSpace) +FragInputs BuildFragInputs(VertexToFragment v2f, float3 voxelPositionWS, float3 voxelClipSpace) { FragInputs output; ZERO_INITIALIZE(FragInputs, output); - float3 positionWS = mul(UNITY_MATRIX_M, float4(voxelPositionOS, 1)).xyz; output.positionSS = v2f.positionCS; - output.positionRWS = output.positionPredisplacementRWS = positionWS; + output.positionRWS = output.positionPredisplacementRWS = voxelPositionWS; output.positionPixel = uint2(v2f.positionCS.xy); output.texCoord0 = float4(saturate(voxelClipSpace * 0.5 + 0.5), 0); output.tangentToWorld = k_identity3x3; @@ -140,9 +139,11 @@ void Frag(VertexToFragment v2f, out float4 outColor : SV_Target0) float3 rayoriginWS = GetCurrentViewPosition(); float3 voxelCenterWS = rayoriginWS + sliceDistance * raycenterDirWS; + // Build rotation matrix from normalized OBB axes to transform the world space position float3x3 obbFrame = float3x3(_VolumetricMaterialObbRight.xyz, _VolumetricMaterialObbUp.xyz, cross(_VolumetricMaterialObbRight.xyz, _VolumetricMaterialObbUp.xyz)); - float3 voxelCenterBS = mul(voxelCenterWS - _VolumetricMaterialObbCenter.xyz + _WorldSpaceCameraPos.xyz, transpose(obbFrame)); + // Rotate world position around the center of the local fog OBB + float3 voxelCenterBS = mul(GetAbsolutePositionWS(voxelCenterWS - _VolumetricMaterialObbCenter.xyz), transpose(obbFrame)); float3 voxelCenterCS = (voxelCenterBS * rcp(_VolumetricMaterialObbExtents.xyz)); // Still need to clip pixels outside of the box because of the froxel buffer shape @@ -150,7 +151,7 @@ void Frag(VertexToFragment v2f, out float4 outColor : SV_Target0) if (!overlap) clip(-1); - FragInputs fragInputs = BuildFragInputs(v2f, voxelCenterBS, voxelCenterCS); + FragInputs fragInputs = BuildFragInputs(v2f, voxelCenterWS, voxelCenterCS); GetVolumeData(fragInputs, v2f.viewDirectionWS, albedo, extinction); // Accumulate volume parameters diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/VoxelizationTransforms.hlsl b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/VoxelizationTransforms.hlsl new file mode 100644 index 00000000000..44ad1219d86 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/VoxelizationTransforms.hlsl @@ -0,0 +1,36 @@ +#pragma once + +#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/HDRenderPipeline.VolumetricLighting.cs.hlsl" + +// Overrides the transform functions that would use object matrices in the fog as they are not available due to the indirect draw +// Instead we can re-build the object matrix from the OBB of the fog object + +float4x4 BuildWorldToObjectMatrixFromLocalFogOBB() +{ + float3x3 rotation = float3x3( + _VolumetricMaterialObbRight.xyz, + _VolumetricMaterialObbUp.xyz, + cross(_VolumetricMaterialObbRight.xyz, _VolumetricMaterialObbUp.xyz) + ); + + // inverse rotation + rotation = transpose(rotation); + + // inverse translation + float3 inverseTranslation = -(mul(_VolumetricMaterialObbCenter.xyz, rotation)); + + // Build matrix + float4x4 objectMatrix = 0; + objectMatrix._m00_m10_m20 = rotation[0]; + objectMatrix._m01_m11_m21 = rotation[1]; + objectMatrix._m02_m12_m22 = rotation[2]; + objectMatrix._m03_m13_m23_m33 = float4(inverseTranslation, 1); + + return objectMatrix; +} + +float3 TransformWorldToObjectFog(float3 positionRWS) +{ + float3 posWS = GetAbsolutePositionWS(positionRWS); + return mul(BuildWorldToObjectMatrixFromLocalFogOBB(), float4(posWS, 1)).xyz; +} diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/VoxelizationTransforms.hlsl.meta b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/VoxelizationTransforms.hlsl.meta new file mode 100644 index 00000000000..33154246ccb --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/FogVolume/ShaderGraph/VoxelizationTransforms.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 623770b432f006f49af1b65f726bf86f +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Pixel.template.hlsl b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Pixel.template.hlsl index 070670340ec..11bb670afc7 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Pixel.template.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Pixel.template.hlsl @@ -25,12 +25,20 @@ SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, $SurfaceDescriptionInputs.TangentSpaceViewDirection: float3x3 tangentSpaceTransform = float3x3(output.WorldSpaceTangent,output.WorldSpaceBiTangent,output.WorldSpaceNormal); $SurfaceDescriptionInputs.TangentSpaceViewDirection: output.TangentSpaceViewDirection = TransformWorldToTangent(output.WorldSpaceViewDirection, tangentSpaceTransform); $SurfaceDescriptionInputs.WorldSpacePosition: output.WorldSpacePosition = input.positionRWS; +#if SHADERPASS != SHADERPASS_FOG_VOLUME_VOXELIZATION $SurfaceDescriptionInputs.ObjectSpacePosition: output.ObjectSpacePosition = TransformWorldToObject(input.positionRWS); +#else + $SurfaceDescriptionInputs.ObjectSpacePosition: output.ObjectSpacePosition = TransformWorldToObjectFog(input.positionRWS); +#endif $SurfaceDescriptionInputs.ViewSpacePosition: output.ViewSpacePosition = TransformWorldToView(input.positionRWS); $SurfaceDescriptionInputs.TangentSpacePosition: output.TangentSpacePosition = float3(0.0f, 0.0f, 0.0f); $SurfaceDescriptionInputs.AbsoluteWorldSpacePosition: output.AbsoluteWorldSpacePosition = GetAbsolutePositionWS(input.positionRWS); $SurfaceDescriptionInputs.WorldSpacePositionPredisplacement: output.WorldSpacePositionPredisplacement = input.positionPredisplacementRWS; +#if SHADERPASS != SHADERPASS_FOG_VOLUME_VOXELIZATION $SurfaceDescriptionInputs.ObjectSpacePositionPredisplacement: output.ObjectSpacePositionPredisplacement = TransformWorldToObject(input.positionPredisplacementRWS); +#else + $SurfaceDescriptionInputs.ObjectSpacePositionPredisplacement: output.ObjectSpacePositionPredisplacement = TransformWorldToObjectFog(input.positionPredisplacementRWS); +#endif $SurfaceDescriptionInputs.ViewSpacePositionPredisplacement: output.ViewSpacePositionPredisplacement = TransformWorldToView(input.positionPredisplacementRWS); $SurfaceDescriptionInputs.TangentSpacePositionPredisplacement: output.TangentSpacePositionPredisplacement = float3(0.0f, 0.0f, 0.0f); $SurfaceDescriptionInputs.AbsoluteWorldSpacePositionPredisplacement: output.AbsoluteWorldSpacePositionPredisplacement = GetAbsolutePositionWS(input.positionPredisplacementRWS); diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Debug.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Debug.cs index 049bc962cbf..57d787cacf9 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Debug.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.Debug.cs @@ -1482,6 +1482,7 @@ class DebugViewMaterialData public bool decalsEnabled; public BufferHandle perVoxelOffset; + public BufferHandle lightList; public DBufferOutput dbuffer; public GBufferOutput gbuffer; public TextureHandle depthBuffer; @@ -1564,6 +1565,8 @@ TextureHandle RenderDebugViewMaterial(RenderGraph renderGraph, CullingResults cu passData.decalsEnabled = (hdCamera.frameSettings.IsEnabled(FrameSettingsField.Decals)) && (DecalSystem.m_DecalDatasCount > 0); passData.perVoxelOffset = builder.ReadBuffer(lightLists.perVoxelOffset); + + passData.lightList = builder.ReadBuffer(lightLists.lightList); passData.dbuffer = ReadDBuffer(dbuffer, builder); passData.clearColorTexture = Compositor.CompositionManager.GetClearTextureForStackedCamera(hdCamera); // returns null if is not a stacked camera @@ -1583,6 +1586,9 @@ TextureHandle RenderDebugViewMaterial(RenderGraph renderGraph, CullingResults cu BindDefaultTexturesLightingBuffers(context.defaultResources, context.cmd); + if (data.lightList.IsValid()) + context.cmd.SetGlobalBuffer(HDShaderIDs.g_vLightListTile, data.lightList); + BindDBufferGlobalData(data.dbuffer, context); DrawOpaqueRendererList(context, data.frameSettings, data.opaqueRendererList); 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 ceeb2bf8d1e..1f6222409b7 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 @@ -45,8 +45,7 @@ void RecordRenderGraph(RenderRequest renderRequest, // Caution: We require sun light here as some skies use the sun light to render, it means that UpdateSkyEnvironment must be called after PrepareLightsForGPU. // TODO: Try to arrange code so we can trigger this call earlier and use async compute here to run sky convolution during other passes (once we move convolution shader to compute). - if (!m_CurrentDebugDisplaySettings.IsMatcapViewEnabled(hdCamera)) - m_SkyManager.UpdateEnvironment(m_RenderGraph, hdCamera, GetMainLight(), m_CurrentDebugDisplaySettings); + m_SkyManager.UpdateEnvironment(m_RenderGraph, hdCamera, GetMainLight(), m_CurrentDebugDisplaySettings); // We need to initialize the MipChainInfo here, so it will be available to any render graph pass that wants to use it during setup // Be careful, ComputePackedMipChainInfo needs the render texture size and not the viewport size. Otherwise it would compute the wrong size. diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs index 3cd5604cfa9..d1ccc6be1d1 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs @@ -34,5 +34,8 @@ enum ShaderPass Constant, FullScreenDebug, PBRSky, + FogVolumePreview, + FogVolumeVoxelization, + FogVolumeOverdrawDebug, } } diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl index 8ff52388a7d..ee5aadc6da9 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl @@ -35,6 +35,9 @@ #define SHADERPASS_CONSTANT (25) #define SHADERPASS_FULL_SCREEN_DEBUG (26) #define SHADERPASS_PBRSKY (27) +#define SHADERPASS_FOG_VOLUME_PREVIEW (28) +#define SHADERPASS_FOG_VOLUME_VOXELIZATION (29) +#define SHADERPASS_FOG_VOLUME_OVERDRAW_DEBUG (30) #endif diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs index 81a7a6a9ffd..68f538841b7 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs @@ -1230,41 +1230,49 @@ public void UpdateEnvironment(RenderGraph renderGraph, HDCamera hdCamera, Light m_CurrentDebugDisplaySettings = debugSettings; m_CurrentSunLight = sunLight; - SkyAmbientMode ambientMode = hdCamera.volumeStack.GetComponent().skyAmbientMode.value; + if (debugSettings.IsMatcapViewEnabled(hdCamera)) + { + HDRenderPipeline.SetGlobalTexture(renderGraph, HDShaderIDs._SkyTexture, m_BlackCubemapArray); + HDRenderPipeline.SetGlobalBuffer(renderGraph, HDShaderIDs._AmbientProbeData, m_BlackAmbientProbeBuffer); + } + else + { + SkyAmbientMode ambientMode = hdCamera.volumeStack.GetComponent().skyAmbientMode.value; - UpdateEnvironment(renderGraph, hdCamera, hdCamera.lightingSky, sunLight, m_UpdateRequired, ambientMode == SkyAmbientMode.Dynamic, false, ambientMode); + UpdateEnvironment(renderGraph, hdCamera, hdCamera.lightingSky, sunLight, m_UpdateRequired, ambientMode == SkyAmbientMode.Dynamic, false, ambientMode); - // Preview camera will have a different sun, therefore the hash for the static lighting sky will change and force a recomputation - // because we only maintain one static sky. Since we don't care that the static lighting may be a bit different in the preview we never recompute - // and we use the one from the main camera. - bool forceStaticUpdate = false; - m_ActiveStaticSky = m_StaticLightingSkies.GetValueOrDefault(SceneManager.GetActiveScene().GetHashCode(), null); + // Preview camera will have a different sun, therefore the hash for the static lighting sky will change and force a recomputation + // because we only maintain one static sky. Since we don't care that the static lighting may be a bit different in the preview we never recompute + // and we use the one from the main camera. + bool forceStaticUpdate = false; + m_ActiveStaticSky = m_StaticLightingSkies.GetValueOrDefault(SceneManager.GetActiveScene().GetHashCode(), null); #if UNITY_EDITOR - // In the editor, we might need the static sky ready for baking lightmaps/lightprobes regardless of the current ambient mode so we force it to update in this case if it's not been computed yet.. - // We always force an update of the static sky when we're in scene view mode. Previous behaviour was to prevent forced updates if the hash of the static sky was non-null, but this was preventing - // the lightmapper from updating in response to changes in environment. See GFXGI-237 for a better description of this issue. + // In the editor, we might need the static sky ready for baking lightmaps/lightprobes regardless of the current ambient mode so we force it to update in this case if it's not been computed yet.. + // We always force an update of the static sky when we're in scene view mode. Previous behaviour was to prevent forced updates if the hash of the static sky was non-null, but this was preventing + // the lightmapper from updating in response to changes in environment. See GFXGI-237 for a better description of this issue. - forceStaticUpdate = hdCamera.camera.cameraType == CameraType.SceneView; + forceStaticUpdate = hdCamera.camera.cameraType == CameraType.SceneView; #endif - if ((ambientMode == SkyAmbientMode.Static || forceStaticUpdate) && hdCamera.camera.cameraType != CameraType.Preview) - { - if (m_ActiveStaticSky != null) + if ((ambientMode == SkyAmbientMode.Static || forceStaticUpdate) && hdCamera.camera.cameraType != CameraType.Preview) { - m_StaticLightingSky.skySettings = m_ActiveStaticSky.skySettings; - m_StaticLightingSky.cloudSettings = m_ActiveStaticSky.cloudSettings; - m_StaticLightingSky.volumetricClouds = m_ActiveStaticSky.volumetricClouds; + if (m_ActiveStaticSky != null) + { + m_StaticLightingSky.skySettings = m_ActiveStaticSky.skySettings; + m_StaticLightingSky.cloudSettings = m_ActiveStaticSky.cloudSettings; + m_StaticLightingSky.volumetricClouds = m_ActiveStaticSky.volumetricClouds; + } + UpdateEnvironment(renderGraph, hdCamera, m_StaticLightingSky, sunLight, m_StaticSkyUpdateRequired || m_UpdateRequired, true, true, SkyAmbientMode.Static); + m_StaticSkyUpdateRequired = false; } - UpdateEnvironment(renderGraph, hdCamera, m_StaticLightingSky, sunLight, m_StaticSkyUpdateRequired || m_UpdateRequired, true, true, SkyAmbientMode.Static); - m_StaticSkyUpdateRequired = false; - } - m_UpdateRequired = false; + m_UpdateRequired = false; - SetGlobalSkyData(renderGraph, hdCamera.lightingSky, m_BuiltinParameters); + SetGlobalSkyData(renderGraph, hdCamera.lightingSky, m_BuiltinParameters); - // Keep global setter for now. We should probably remove it and set it explicitly where needed like any other resource. As is it breaks resource lifetime contract with render graph. - HDRenderPipeline.SetGlobalTexture(renderGraph, HDShaderIDs._SkyTexture, GetReflectionTexture(hdCamera.lightingSky)); - HDRenderPipeline.SetGlobalBuffer(renderGraph, HDShaderIDs._AmbientProbeData, GetDiffuseAmbientProbeBuffer(hdCamera)); + // Keep global setter for now. We should probably remove it and set it explicitly where needed like any other resource. As is it breaks resource lifetime contract with render graph. + HDRenderPipeline.SetGlobalTexture(renderGraph, HDShaderIDs._SkyTexture, GetReflectionTexture(hdCamera.lightingSky)); + HDRenderPipeline.SetGlobalBuffer(renderGraph, HDShaderIDs._AmbientProbeData, GetDiffuseAmbientProbeBuffer(hdCamera)); + } } static void UpdateBuiltinParameters(ref BuiltinSkyParameters builtinParameters, SkyUpdateContext skyContext, HDCamera hdCamera, Light sunLight, DebugDisplaySettings debugSettings) diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/Shadows/ShadowCaster2DEditor.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/Shadows/ShadowCaster2DEditor.cs index 57459f42989..b220620fe8d 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/Shadows/ShadowCaster2DEditor.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/Shadows/ShadowCaster2DEditor.cs @@ -131,7 +131,8 @@ public override void OnInspectorGUI() else if (EditorToolManager.IsActiveTool()) ToolManager.RestorePreviousTool(); - EditorGUILayout.PropertyField(m_ShadowShape2DProvider, Styles.shadowShape2DProvider, true); + if(m_ShadowShape2DProvider != null) + EditorGUILayout.PropertyField(m_ShadowShape2DProvider, Styles.shadowShape2DProvider, true); serializedObject.ApplyModifiedProperties(); } diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/Shadows/ShadowProvider/ShadowShape2DProvider_ProperyDrawer.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/Shadows/ShadowProvider/ShadowShape2DProvider_ProperyDrawer.cs index f7744662b62..e6b3fa4d411 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/Shadows/ShadowProvider/ShadowShape2DProvider_ProperyDrawer.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/Shadows/ShadowProvider/ShadowShape2DProvider_ProperyDrawer.cs @@ -25,7 +25,13 @@ bool IsChildVisible(Type parentType, SerializedProperty child) void ProcessChildren(SerializedProperty parentProperty, ProcessChild onProcessChild) { + if (parentProperty == null) + return; + var enumerator = parentProperty.GetEnumerator(); + if (enumerator.Current == null) + return; + object parentObj = parentProperty.managedReferenceValue; Type parentType = parentObj.GetType(); diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Converter/RenderPipelineConvertersEditor.cs b/Packages/com.unity.render-pipelines.universal/Editor/Converter/RenderPipelineConvertersEditor.cs index 566461cc826..77661f9c172 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/Converter/RenderPipelineConvertersEditor.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/Converter/RenderPipelineConvertersEditor.cs @@ -2,17 +2,17 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using System.Text; using UnityEditor.SceneManagement; -using UnityEngine; using UnityEditor.Search; using UnityEditor.UIElements; -using UnityEngine.UIElements; +using UnityEngine; using UnityEngine.Assertions; using UnityEngine.Rendering; using UnityEngine.SceneManagement; +using UnityEngine.UIElements; using UnityEditor.Rendering.Analytics; - namespace UnityEditor.Rendering.Universal { // Status for each row item to say in which state they are in. @@ -62,6 +62,11 @@ class ConverterState public bool isActiveAndEnabled => isEnabled && isActive; public bool requiresInitialization => !isInitialized && isActiveAndEnabled; + + public override string ToString() + { + return $"Warnings: {warnings} - Errors: {errors} - Ok: {success} - Total: {items?.Count ?? 0}"; + } } [Serializable] @@ -874,10 +879,22 @@ void AddToContextMenu(ContextualMenuPopulateEvent evt, int coreConverterIndex) ConvertIndex(coreConverterIndex, (int)ve.userData); // Refreshing the list to show the new state m_ConverterSelectedVE.Q("converterItems").Rebuild(); + LogConverterResult(coreConverterIndex); }, isActive ? DropdownMenuAction.AlwaysEnabled : DropdownMenuAction.AlwaysDisabled); } + void LogConverterResult(int coreConverterIndex) + { + var converterState = m_ConverterStates[coreConverterIndex]; + if (converterState.items.Count() > 0) + { + var sb = new StringBuilder($"Conversion results for item: {m_CoreConvertersList[coreConverterIndex].name}:{Environment.NewLine}"); + sb.AppendLine(converterState.ToString()); + Debug.Log(sb); + } + } + void UpdateInfo(int stateIndex, RunItemContext ctx) { if (ctx.didFail) @@ -955,6 +972,8 @@ void Convert(ClickEvent evt) } } + LogConverterResult(index); + contextInfo.Add(converterInfo); m_CoreConvertersList[index].OnPostRun(); AssetDatabase.SaveAssets(); @@ -967,7 +986,7 @@ void Convert(ClickEvent evt) EditorSceneManager.OpenScene(currentScenePath); } - RecreateUI(); + RecreateUI(); GraphicsToolUsageAnalytic.ActionPerformed(nameof(Convert), contextInfo.ToNestedColumn()); } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawNormal2DPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawNormal2DPass.cs index a0f2a550f28..9955ebd94bc 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawNormal2DPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawNormal2DPass.cs @@ -52,6 +52,13 @@ public void Render(RenderGraph graph, ContextContainer frameData, Renderer2DData builder.SetRenderAttachment(universal2DResourceData.normalsTexture[batchIndex], 0); + // Depth needed for sprite mask stencil or z test for 3d meshes + if (rendererData.useDepthStencilBuffer) + { + var depth = universal2DResourceData.normalsDepth.IsValid() ? universal2DResourceData.normalsDepth : commonResourceData.activeDepthTexture; + builder.SetRenderAttachmentDepth(depth); + } + var param = new RendererListParams(renderingData.cullResults, drawSettings, filterSettings); passData.rendererList = graph.CreateRendererList(param); builder.UseRendererList(passData.rendererList); 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 be408724a08..6c92f097b81 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 @@ -152,9 +152,15 @@ public void Render(RenderGraph graph, ContextContainer frameData, Renderer2DData builder.UseTexture(passData.lightTextures[i]); } + if (rendererData.useCameraSortingLayerTexture) + builder.UseTexture(universal2DResourceData.cameraSortingLayerTexture); + + // Set color and depth attachments builder.SetRenderAttachment(commonResourceData.activeColorTexture, 0); - builder.SetRenderAttachmentDepth(commonResourceData.activeDepthTexture); - builder.AllowPassCulling(false); + + if (rendererData.useDepthStencilBuffer) + builder.SetRenderAttachmentDepth(commonResourceData.activeDepthTexture); + builder.AllowGlobalStateModification(true); // Post set global light textures for next renderer pass 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 9e07bd31e51..52828576529 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 @@ -377,6 +377,20 @@ void CreateCameraNormalsTextures(RenderGraph renderGraph, RenderTextureDescripto for (int i = 0; i < resourceData.normalsTexture.Length; ++i) resourceData.normalsTexture[i] = UniversalRenderer.CreateRenderGraphTexture(renderGraph, desc, "_NormalMap", true, RendererLighting.k_NormalClearColor); + if (m_Renderer2DData.useDepthStencilBuffer) + { + // Normals pass can reuse active depth if same dimensions, if not create a new depth texture + if (descriptor.width != width || descriptor.height != height) + { + var normalsDepthDesc = new RenderTextureDescriptor(width, height); + normalsDepthDesc.graphicsFormat = GraphicsFormat.None; + normalsDepthDesc.autoGenerateMips = false; + normalsDepthDesc.msaaSamples = descriptor.msaaSamples; + normalsDepthDesc.depthStencilFormat = k_DepthStencilFormat; + + resourceData.normalsDepth = UniversalRenderer.CreateRenderGraphTexture(renderGraph, normalsDepthDesc, "_NormalDepth", false, FilterMode.Bilinear); + } + } } void CreateLightTextures(RenderGraph renderGraph, int width, int height) @@ -437,8 +451,9 @@ void CreateCameraSortingLayerTexture(RenderGraph renderGraph, RenderTextureDescr bool RequiresDepthCopyPass(UniversalCameraData cameraData) { var renderPassInputs = GetRenderPassInputs(cameraData); + bool requiresDepthTexture = cameraData.requiresDepthTexture || renderPassInputs.requiresDepthTexture; bool cameraHasPostProcessingWithDepth = cameraData.postProcessEnabled && m_PostProcessPasses.isCreated && cameraData.postProcessingRequiresDepthTexture; - bool requiresDepthCopyPass = (cameraHasPostProcessingWithDepth || renderPassInputs.requiresDepthTexture) && m_CreateDepthTexture; + bool requiresDepthCopyPass = (cameraHasPostProcessingWithDepth || requiresDepthTexture) && m_CreateDepthTexture; return requiresDepthCopyPass; } @@ -696,15 +711,15 @@ private void OnAfterRendering(RenderGraph renderGraph) if (isTargetBackbuffer) { - commonResourceData.activeColorID = UniversalResourceData.ActiveID.BackBuffer; - commonResourceData.activeDepthID = UniversalResourceData.ActiveID.BackBuffer; + commonResourceData.activeColorID = ActiveID.BackBuffer; + commonResourceData.activeDepthID = ActiveID.BackBuffer; } } - var finalColorHandle = commonResourceData.activeColorTexture; - RecordCustomRenderGraphPasses(renderGraph, RenderPassEvent2D.AfterRenderingPostProcessing); + var finalColorHandle = commonResourceData.activeColorTexture; + // Do PixelPerfect upscaling when using the Stretch Fill option if (requirePixelPerfectUpscale) { @@ -720,8 +735,10 @@ private void OnAfterRendering(RenderGraph renderGraph) { postProcessPass.RenderFinalPassRenderGraph(renderGraph, frameData, in finalColorHandle, commonResourceData.overlayUITexture, in finalBlitTarget, needsColorEncoding); - commonResourceData.activeColorID = UniversalResourceData.ActiveID.BackBuffer; - commonResourceData.activeDepthID = UniversalResourceData.ActiveID.BackBuffer; + finalColorHandle = finalBlitTarget; + + commonResourceData.activeColorID = ActiveID.BackBuffer; + commonResourceData.activeDepthID = ActiveID.BackBuffer; } // If post-processing then we already resolved to camera target while doing post. diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/Universal2DResourceData.cs b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/Universal2DResourceData.cs index 9d859c5dd94..da8fa938434 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/Universal2DResourceData.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/Universal2DResourceData.cs @@ -42,6 +42,13 @@ internal TextureHandle[] normalsTexture } private TextureHandle[] _cameraNormalsTexture = new TextureHandle[0]; + internal TextureHandle normalsDepth + { + get => CheckAndGetTextureHandle(ref _normalsDepth); + set => CheckAndSetTextureHandle(ref _normalsDepth, value); + } + private TextureHandle _normalsDepth; + internal TextureHandle[][] shadowTextures { get => CheckAndGetTextureHandle(ref _shadowTextures); @@ -73,6 +80,7 @@ internal TextureHandle cameraSortingLayerTexture /// public override void Reset() { + _normalsDepth = TextureHandle.nullHandle; _shadowDepth = TextureHandle.nullHandle; _upscaleTexture = TextureHandle.nullHandle; _cameraSortingLayerTexture = TextureHandle.nullHandle; diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPassRenderGraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPassRenderGraph.cs index 72fff7b2ce6..a6a19591ab2 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPassRenderGraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPassRenderGraph.cs @@ -933,7 +933,7 @@ private void RenderTemporalAA(RenderGraph renderGraph, UniversalResourceData res #region STP - private const string _UpscaledColorTargetName = "_UpscaledColorTarget"; + private const string _UpscaledColorTargetName = "_CameraColorUpscaledSTP"; private void RenderSTP(RenderGraph renderGraph, UniversalResourceData resourceData, UniversalCameraData cameraData, ref TextureHandle source, out TextureHandle destination) { @@ -1275,7 +1275,7 @@ private class LensFlareScreenSpacePassData internal int downsample; } - public TextureHandle RenderLensFlareScreenSpace(RenderGraph renderGraph, Camera camera, in TextureHandle destination, TextureHandle originalBloomTexture, TextureHandle screenSpaceLensFlareBloomMipTexture, bool enableXR) + public TextureHandle RenderLensFlareScreenSpace(RenderGraph renderGraph, Camera camera, in TextureHandle destination, TextureHandle originalBloomTexture, TextureHandle screenSpaceLensFlareBloomMipTexture, bool enableXR, bool sameInputOutputTex) { var downsample = (int) m_LensFlareScreenSpace.resolution.value; @@ -1300,7 +1300,8 @@ public TextureHandle RenderLensFlareScreenSpace(RenderGraph renderGraph, Camera passData.screenSpaceLensFlareBloomMipTexture = screenSpaceLensFlareBloomMipTexture; builder.UseTexture(screenSpaceLensFlareBloomMipTexture, AccessFlags.ReadWrite); passData.originalBloomTexture = originalBloomTexture; - builder.UseTexture(originalBloomTexture, AccessFlags.ReadWrite); + if(!sameInputOutputTex) + builder.UseTexture(originalBloomTexture, AccessFlags.ReadWrite); passData.sourceDescriptor = m_Descriptor; passData.camera = camera; passData.material = m_Materials.lensFlareScreenSpace; @@ -2090,7 +2091,8 @@ public void RenderPostProcessingRenderGraph(RenderGraph renderGraph, ContextCont if (useLensFlareScreenSpace) { int maxBloomMip = Mathf.Clamp(m_LensFlareScreenSpace.bloomMip.value, 0, m_Bloom.maxIterations.value/2); - BloomTexture = RenderLensFlareScreenSpace(renderGraph, cameraData.camera, in currentSource, _BloomMipUp[0], _BloomMipUp[maxBloomMip], cameraData.xr.enabled); + bool sameInputOutputTex = maxBloomMip == 0; + BloomTexture = RenderLensFlareScreenSpace(renderGraph, cameraData.camera, in currentSource, _BloomMipUp[0], _BloomMipUp[maxBloomMip], cameraData.xr.enabled, sameInputOutputTex); } UberPostSetupBloomPass(renderGraph, in BloomTexture, m_Materials.uber); diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScreenSpaceAmbientOcclusionPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScreenSpaceAmbientOcclusionPass.cs index c1fa74c62bb..8dfa054dfdb 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScreenSpaceAmbientOcclusionPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScreenSpaceAmbientOcclusionPass.cs @@ -356,6 +356,13 @@ public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer // Declare input textures builder.UseTexture(passData.AOTexture, AccessFlags.ReadWrite); + // TODO: Refactor to eliminate the need for 'UseTexture'. + // Currently required only because 'PostProcessUtils.SetSourceSize' allocates an RTHandle, + // which expects a valid graphicsResource. Without this call, 'cameraColor.graphicsResource' + // may be null if it wasn't initialized in an earlier pass (e.g., DrawOpaque). + if (resourceData.cameraColor.IsValid()) + builder.UseTexture(resourceData.cameraColor, AccessFlags.Read); + if (passData.BlurQuality != ScreenSpaceAmbientOcclusionSettings.BlurQualityOptions.Low) builder.UseTexture(passData.blurTexture, AccessFlags.ReadWrite); diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/XRDepthMotionPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/XRDepthMotionPass.cs index 5c5405862bc..7f618132a14 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/XRDepthMotionPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/XRDepthMotionPass.cs @@ -11,11 +11,13 @@ namespace UnityEngine.Rendering.Universal public class XRDepthMotionPass : ScriptableRenderPass { private static readonly ShaderTagId k_MotionOnlyShaderTagId = new ShaderTagId("XRMotionVectors"); + private static readonly int k_SpaceWarpNDCModifier = Shader.PropertyToID("_SpaceWarpNDCModifier"); private PassData m_PassData; private RTHandle m_XRMotionVectorColor; private TextureHandle xrMotionVectorColor; private RTHandle m_XRMotionVectorDepth; private TextureHandle xrMotionVectorDepth; + private bool m_XRSpaceWarpRightHandedNDC; /// /// Creates a new XRDepthMotionPass instance. @@ -156,6 +158,8 @@ private void ImportXRMotionColorAndDepth(RenderGraph renderGraph, UniversalCamer xrMotionVectorColor = renderGraph.ImportTexture(m_XRMotionVectorColor, importInfo, importMotionColorParams); xrMotionVectorDepth = renderGraph.ImportTexture(m_XRMotionVectorDepth, importInfoDepth, importMotionDepthParams); + + m_XRSpaceWarpRightHandedNDC = cameraData.xr.spaceWarpRightHandedNDC; } #region Recording @@ -208,6 +212,10 @@ internal void Render(RenderGraph renderGraph, ContextContainer frameData) context.cmd.SetGlobalMatrixArray(ShaderPropertyId.previousViewProjectionNoJitterStereo, data.previousViewProjectionStereo); context.cmd.SetGlobalMatrixArray(ShaderPropertyId.viewProjectionNoJitterStereo, data.viewProjectionStereo); + // SpaceWarp is only available on Vulkan, so these values are always true. This is to support 2 versions of spacewarp + // One expects OpenGL NDC space motion vectors, the other expects Vulkan NDC space + context.cmd.SetGlobalFloat(k_SpaceWarpNDCModifier, m_XRSpaceWarpRightHandedNDC ? -1.0f : 1.0f); + // Object Motion for both static and dynamic objects, fill stencil for mv filled pixels. context.cmd.DrawRendererList(passData.objMotionRendererList); diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs index cfee97c99a7..b8fe89bd1f1 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs @@ -170,13 +170,8 @@ public sealed partial class UniversalRenderer { null, null }; - private static RTHandle[] m_RenderGraphUpscaledCameraColorHandles = new RTHandle[] - { - null, null - }; private static RTHandle m_RenderGraphCameraDepthHandle; private static int m_CurrentColorHandle = 0; - private static bool m_UseUpscaledColorHandle = false; private static RTHandle m_RenderGraphDebugTextureHandle; @@ -184,9 +179,13 @@ private RTHandle currentRenderGraphCameraColorHandle { get { - // Select between the pre-upscale and post-upscale color handle sets based on the current upscaling state - return m_UseUpscaledColorHandle ? m_RenderGraphUpscaledCameraColorHandles[m_CurrentColorHandle] - : m_RenderGraphCameraColorHandles[m_CurrentColorHandle]; + Debug.Assert(m_CurrentColorHandle >= 0, + "currentRenderGraphCameraColorHandle should not be accessed in single camera mode."); + + if (m_CurrentColorHandle < 0) + return null; + + return m_RenderGraphCameraColorHandles[m_CurrentColorHandle]; } } @@ -195,6 +194,12 @@ private RTHandle nextRenderGraphCameraColorHandle { get { + Debug.Assert(m_CurrentColorHandle >= 0, + "nextRenderGraphCameraColorHandle should not be accessed in single camera mode."); + + if (m_CurrentColorHandle < 0) + return null; + m_CurrentColorHandle = (m_CurrentColorHandle + 1) % 2; return currentRenderGraphCameraColorHandle; } @@ -212,8 +217,6 @@ private void CleanupRenderGraphResources() { m_RenderGraphCameraColorHandles[0]?.Release(); m_RenderGraphCameraColorHandles[1]?.Release(); - m_RenderGraphUpscaledCameraColorHandles[0]?.Release(); - m_RenderGraphUpscaledCameraColorHandles[1]?.Release(); m_RenderGraphCameraDepthHandle?.Release(); m_RenderGraphDebugTextureHandle?.Release(); @@ -252,7 +255,7 @@ public static TextureHandle CreateRenderGraphTexture(RenderGraph renderGraph, Re } internal static TextureHandle CreateRenderGraphTexture(RenderGraph renderGraph, RenderTextureDescriptor desc, string name, bool clear, Color color, - FilterMode filterMode = FilterMode.Point, TextureWrapMode wrapMode = TextureWrapMode.Clamp) + FilterMode filterMode = FilterMode.Point, TextureWrapMode wrapMode = TextureWrapMode.Clamp, bool discardOnLastUse = false) { TextureDesc rgDesc = new TextureDesc(desc.width, desc.height); rgDesc.dimension = desc.dimension; @@ -268,6 +271,8 @@ internal static TextureHandle CreateRenderGraphTexture(RenderGraph renderGraph, rgDesc.wrapMode = wrapMode; rgDesc.useDynamicScale = desc.useDynamicScale; rgDesc.useDynamicScaleExplicit = desc.useDynamicScaleExplicit; + rgDesc.discardBuffer = discardOnLastUse; + rgDesc.vrUsage = desc.vrUsage; return renderGraph.CreateTexture(rgDesc); } @@ -337,8 +342,10 @@ private void UpdateCameraHistory(UniversalCameraData cameraData) const string _CameraTargetAttachmentAName = "_CameraTargetAttachmentA"; const string _CameraTargetAttachmentBName = "_CameraTargetAttachmentB"; - const string _CameraUpscaledTargetAttachmentAName = "_CameraUpscaledTargetAttachmentA"; - const string _CameraUpscaledTargetAttachmentBName = "_CameraUpscaledTargetAttachmentB"; + const string _SingleCameraTargetAttachmentName = "_CameraTargetAttachment"; + const string _CameraDepthAttachmentName = "_CameraDepthAttachment"; + const string _CameraColorUpscaled = "_CameraColorUpscaled"; + const string _CameraColorAfterPostProcessingName = "_CameraColorAfterPostProcessing"; void CreateRenderGraphCameraRenderTargets(RenderGraph renderGraph, bool isCameraTargetOffscreenDepth) { @@ -384,16 +391,6 @@ void CreateRenderGraphCameraRenderTargets(RenderGraph renderGraph, bool isCamera } } - ImportResourceParams importColorParams = new ImportResourceParams(); - importColorParams.clearOnFirstUse = clearColor; // && cameraData.camera.clearFlags != CameraClearFlags.Nothing; - importColorParams.clearColor = cameraBackgroundColor; - importColorParams.discardOnLastUse = false; - - ImportResourceParams importDepthParams = new ImportResourceParams(); - importDepthParams.clearOnFirstUse = clearDepth; - importDepthParams.clearColor = cameraBackgroundColor; - importDepthParams.discardOnLastUse = false; - #if ENABLE_VR && ENABLE_XR_MODULE if (cameraData.xr.enabled) { @@ -564,35 +561,35 @@ void CreateRenderGraphCameraRenderTargets(RenderGraph renderGraph, bool isCamera cameraTargetDescriptor.autoGenerateMips = false; cameraTargetDescriptor.depthStencilFormat = GraphicsFormat.None; - RenderingUtils.ReAllocateHandleIfNeeded(ref m_RenderGraphCameraColorHandles[0], cameraTargetDescriptor, FilterMode.Bilinear, TextureWrapMode.Clamp, name: _CameraTargetAttachmentAName); - RenderingUtils.ReAllocateHandleIfNeeded(ref m_RenderGraphCameraColorHandles[1], cameraTargetDescriptor, FilterMode.Bilinear, TextureWrapMode.Clamp, name: _CameraTargetAttachmentBName); - - // Make sure that the base camera always starts rendering to the ColorAttachmentA for deterministic frame results. - // Not doing so makes the targets look different every frame, causing the frame debugger to flash, and making debugging harder. - if (cameraData.renderType == CameraRenderType.Base) + // When there's a single camera setup, there's no need to do the double buffer technique with attachment A/B, in order to save memory allocation + // and simplify the workflow by using a RenderGraph texture directly. + var isSingleCamera = cameraData.resolveFinalTarget && cameraData.renderType == CameraRenderType.Base; + if (isSingleCamera) { - m_CurrentColorHandle = 0; + resourceData.cameraColor = CreateRenderGraphTexture(renderGraph, cameraTargetDescriptor, _SingleCameraTargetAttachmentName, clearColor, cameraBackgroundColor, FilterMode.Bilinear, discardOnLastUse: cameraData.resolveFinalTarget); - // Base camera rendering always starts with a pre-upscale size color target - // If upscaling happens during the frame, we'll switch to the post-upscale color target size and any overlay camera that renders on top should inherit the upscaled size - m_UseUpscaledColorHandle = false; + m_CurrentColorHandle = -1; } - - importColorParams.discardOnLastUse = lastCameraInTheStack; - resourceData.cameraColor = renderGraph.ImportTexture(currentRenderGraphCameraColorHandle, importColorParams); - resourceData.activeColorID = UniversalResourceData.ActiveID.Camera; - - // If STP is enabled, we'll be upscaling the rendered frame during the post processing logic. - // Once upscaling occurs, we must use different set of color handles that reflect the upscaled size. - if (cameraData.IsSTPEnabled()) + else { - var upscaledTargetDesc = cameraTargetDescriptor; - upscaledTargetDesc.width = cameraData.pixelWidth; - upscaledTargetDesc.height = cameraData.pixelHeight; + RenderingUtils.ReAllocateHandleIfNeeded(ref m_RenderGraphCameraColorHandles[0], cameraTargetDescriptor, FilterMode.Bilinear, TextureWrapMode.Clamp, name: _CameraTargetAttachmentAName); + RenderingUtils.ReAllocateHandleIfNeeded(ref m_RenderGraphCameraColorHandles[1], cameraTargetDescriptor, FilterMode.Bilinear, TextureWrapMode.Clamp, name: _CameraTargetAttachmentBName); - RenderingUtils.ReAllocateHandleIfNeeded(ref m_RenderGraphUpscaledCameraColorHandles[0], upscaledTargetDesc, FilterMode.Point, TextureWrapMode.Clamp, name: _CameraUpscaledTargetAttachmentAName); - RenderingUtils.ReAllocateHandleIfNeeded(ref m_RenderGraphUpscaledCameraColorHandles[1], upscaledTargetDesc, FilterMode.Point, TextureWrapMode.Clamp, name: _CameraUpscaledTargetAttachmentBName); + // Make sure that the base camera always starts rendering to the ColorAttachmentA for deterministic frame results. + // Not doing so makes the targets look different every frame, causing the frame debugger to flash, and making debugging harder. + if (cameraData.renderType == CameraRenderType.Base) + { + m_CurrentColorHandle = 0; + } + + ImportResourceParams importColorParams = new ImportResourceParams(); + importColorParams.clearOnFirstUse = clearColor; + importColorParams.clearColor = cameraBackgroundColor; + importColorParams.discardOnLastUse = cameraData.resolveFinalTarget; // Last camera in stack + resourceData.cameraColor = renderGraph.ImportTexture(currentRenderGraphCameraColorHandle, importColorParams); } + + resourceData.activeColorID = UniversalResourceData.ActiveID.Camera; } else { @@ -621,9 +618,12 @@ void CreateRenderGraphCameraRenderTargets(RenderGraph renderGraph, bool isCamera depthDescriptor.graphicsFormat = GraphicsFormat.None; depthDescriptor.depthStencilFormat = cameraDepthAttachmentFormat; - RenderingUtils.ReAllocateHandleIfNeeded(ref m_RenderGraphCameraDepthHandle, depthDescriptor, FilterMode.Point, TextureWrapMode.Clamp, name: "_CameraDepthAttachment"); + RenderingUtils.ReAllocateHandleIfNeeded(ref m_RenderGraphCameraDepthHandle, depthDescriptor, FilterMode.Point, TextureWrapMode.Clamp, name: _CameraDepthAttachmentName); - importDepthParams.discardOnLastUse = lastCameraInTheStack; + ImportResourceParams importDepthParams = new ImportResourceParams(); + importDepthParams.clearOnFirstUse = clearDepth; + importDepthParams.clearColor = cameraBackgroundColor; + importDepthParams.discardOnLastUse = lastCameraInTheStack; // Last camera in stack #if UNITY_EDITOR // scene filtering will reuse "camera" depth from the normal pass for the "filter highlight" effect if (cameraData.isSceneViewCamera && CoreUtils.IsSceneFilteringEnabled()) @@ -868,6 +868,7 @@ private void OnOffscreenDepthTextureRendering(RenderGraph renderGraph, Scriptabl m_RenderTransparentForwardPass.Render(renderGraph, frameData, TextureHandle.nullHandle, resourceData.backBufferDepth, TextureHandle.nullHandle, TextureHandle.nullHandle, uint.MaxValue); RecordCustomRenderGraphPasses(renderGraph, RenderPassEvent.AfterRenderingTransparents, RenderPassEvent.AfterRendering); } + private void OnBeforeRendering(RenderGraph renderGraph) { UniversalResourceData resourceData = frameData.Get(); @@ -1434,7 +1435,6 @@ private void OnAfterRendering(RenderGraph renderGraph) RecordCustomRenderGraphPasses(renderGraph, RenderPassEvent.BeforeRenderingPostProcessing); - bool cameraTargetResolved = false; bool applyPostProcessing = ShouldApplyPostProcessing(cameraData.postProcessEnabled); // There's at least a camera in the camera stack that applies post-processing bool anyPostProcessing = postProcessingData.isEnabled && m_PostProcessPasses.isCreated; @@ -1483,27 +1483,53 @@ private void OnAfterRendering(RenderGraph renderGraph) TextureHandle overlayUITexture = resourceData.overlayUITexture; bool isTargetBackbuffer = (cameraData.resolveFinalTarget && !applyFinalPostProcessing && !hasPassesAfterPostProcessing); - // if the postprocessing pass is trying to read and write to the same CameraColor target, we need to swap so it writes to a different target, - // since reading a pass attachment is not possible. Normally this would be possible using temporary RenderGraph managed textures. - // The reason why in this case we need to use "external" RTHandles is to preserve the results for camera stacking. - // TODO RENDERGRAPH: Once all cameras will run in a single RenderGraph we can just use temporary RenderGraph textures as intermediate buffer. - if (!isTargetBackbuffer) + + TextureHandle target; + if (isTargetBackbuffer) + { + target = backbuffer; + } + else { ImportResourceParams importColorParams = new ImportResourceParams(); importColorParams.clearOnFirstUse = true; importColorParams.clearColor = Color.black; importColorParams.discardOnLastUse = cameraData.resolveFinalTarget; // check if last camera in the stack - // When STP is enabled, we must switch to the upscaled set of color handles before the next color handle value is queried. This ensures - // that the post processing output is rendered to a properly sized target. Any rendering performed beyond this point will also use the upscaled targets. if (cameraData.IsSTPEnabled()) - m_UseUpscaledColorHandle = true; + { + // STP is disabled when using camera stacking. In any case, we don't use persistent textures here so we need to make sure there is no next camera in the stack (should always be true). + Debug.Assert(cameraData.resolveFinalTarget); - resourceData.cameraColor = renderGraph.ImportTexture(nextRenderGraphCameraColorHandle, importColorParams); - } + var desc = resourceData.cameraColor.GetDescriptor(renderGraph); - // Desired target for post-processing pass. - var target = isTargetBackbuffer ? backbuffer : resourceData.cameraColor; + static void MakeCompatible(ref TextureDesc desc) + { + desc.msaaSamples = MSAASamples.None; + desc.useMipMap = false; + desc.autoGenerateMips = false; + desc.anisoLevel = 0; + desc.discardBuffer = false; + } + MakeCompatible(ref desc); + + desc.width = cameraData.pixelWidth; + desc.height = cameraData.pixelHeight; + desc.name = _CameraColorUpscaled; + + resourceData.cameraColor = renderGraph.CreateTexture(desc); + } + else + { + var isSingleCamera = cameraData.resolveFinalTarget && cameraData.renderType == CameraRenderType.Base; + + resourceData.cameraColor = (isSingleCamera) + ? renderGraph.CreateTexture(activeColor, _CameraColorAfterPostProcessingName) + : renderGraph.ImportTexture(nextRenderGraphCameraColorHandle, importColorParams); + } + + target = resourceData.cameraColor; + } // but we may actually render to an intermediate texture if debug views are enabled. // In that case, DebugHandler will eventually blit DebugScreenTexture into AfterPostProcessColor. @@ -1556,7 +1582,7 @@ private void OnAfterRendering(RenderGraph renderGraph) m_CapturePass.RecordRenderGraph(renderGraph, frameData); } - cameraTargetResolved = + bool cameraTargetResolved = // final PP always blit to camera target applyFinalPostProcessing || // no final PP but we have PP stack. In that case it blit unless there are render pass after PP diff --git a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/MotionVectorsCommon.hlsl b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/MotionVectorsCommon.hlsl index 7962df86b4b..4ecbcd9fb9d 100644 --- a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/MotionVectorsCommon.hlsl +++ b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/MotionVectorsCommon.hlsl @@ -3,6 +3,8 @@ #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" +float _SpaceWarpNDCModifier; + // 6000.0 Deprecated. This is for backwards compatibility. Remove in the future. void ApplyMotionVectorZBias(inout float4 positionCS) { @@ -63,6 +65,10 @@ float3 CalcAswNdcMotionVectorFromCsPositions(float4 posCS, float4 prevPosCS) // Calculate forward velocity velocity = (posNDC.xyz - prevPosNDC.xyz); + #if UNITY_UV_STARTS_AT_TOP + velocity.y = velocity.y * _SpaceWarpNDCModifier; + #endif + return velocity; } #endif diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Sprite-Lit-Default.shader b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Sprite-Lit-Default.shader index 706bf061e95..c131a618303 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Sprite-Lit-Default.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Sprite-Lit-Default.shader @@ -132,8 +132,6 @@ Shader "Universal Render Pipeline/2D/Sprite-Lit-Default" Pass { - ZWrite Off - Tags { "LightMode" = "NormalsRendering"} HLSLPROGRAM @@ -152,6 +150,7 @@ Shader "Universal Render Pipeline/2D/Sprite-Lit-Default" float3 positionOS : POSITION; float4 color : COLOR; float2 uv : TEXCOORD0; + float3 normal : NORMAL; float4 tangent : TANGENT; UNITY_SKINNED_VERTEX_INPUTS UNITY_VERTEX_INPUT_INSTANCE_ID @@ -190,7 +189,7 @@ Shader "Universal Render Pipeline/2D/Sprite-Lit-Default" o.positionCS = TransformObjectToHClip(attributes.positionOS); o.uv = attributes.uv; o.color = attributes.color * _Color * unity_SpriteColor; - o.normalWS = -GetViewForwardDir(); + o.normalWS = TransformObjectToWorldDir(attributes.normal); o.tangentWS = TransformObjectToWorldDir(attributes.tangent.xyz); o.bitangentWS = cross(o.normalWS, o.tangentWS) * attributes.tangent.w; return o; diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMotionVector.shader b/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMotionVector.shader index 66dca551c20..8c1842f7636 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMotionVector.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/XR/XRMotionVector.shader @@ -34,6 +34,10 @@ Shader "Hidden/Universal Render Pipeline/XR/XRMotionVector" // Includes #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + // ------------------------------------- + // Constants + float _SpaceWarpNDCModifier; + // ------------------------------------- // Structs struct Attributes @@ -45,7 +49,8 @@ Shader "Hidden/Universal Render Pipeline/XR/XRMotionVector" struct Varyings { float4 position : SV_POSITION; - float3 posWS : TEXCOORD0; + float4 posCS : TEXCOORD0; + float4 prevPosCS : TEXCOORD1; UNITY_VERTEX_OUTPUT_STEREO }; @@ -57,13 +62,16 @@ Shader "Hidden/Universal Render Pipeline/XR/XRMotionVector" UNITY_SETUP_INSTANCE_ID(input); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); - output.position = GetFullScreenTriangleVertexPosition(input.vertexID); - - float depth = 1 - UNITY_NEAR_CLIP_VALUE; - output.position.z = depth; + output.position = GetFullScreenTriangleVertexPosition(input.vertexID, 1 - UNITY_NEAR_CLIP_VALUE); // Reconstruct world position - output.posWS = ComputeWorldSpacePosition(output.position.xy, depth, UNITY_MATRIX_I_VP); + // We can use the clip space as is because contrary to the convention mentioned in Common.hlsl (RP Core), + // this clip space is already Y-up + float3 posWS = ComputeWorldSpacePosition(output.position, UNITY_MATRIX_I_VP); + + // Multiply with current and previous non-jittered view projection + output.posCS = mul(_NonJitteredViewProjMatrix, float4(posWS, 1.0)); + output.prevPosCS = mul(_PrevViewProjMatrix, float4(posWS, 1.0)); return output; } @@ -74,18 +82,18 @@ Shader "Hidden/Universal Render Pipeline/XR/XRMotionVector" { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); - // Multiply with current and previous non-jittered view projection - float4 posCS = mul(_NonJitteredViewProjMatrix, float4(input.posWS.xyz, 1.0)); - float4 prevPosCS = mul(_PrevViewProjMatrix, float4(input.posWS.xyz, 1.0)); - // Non-uniform raster needs to keep the posNDC values in float to avoid additional conversions // since uv remap functions use floats - float3 posNDC = posCS.xyz * rcp(posCS.w); - float3 prevPosNDC = prevPosCS.xyz * rcp(prevPosCS.w); + float3 posNDC = input.posCS.xyz * rcp(input.posCS.w); + float3 prevPosNDC = input.prevPosCS.xyz * rcp(input.prevPosCS.w); // Calculate forward velocity float3 velocity = (posNDC - prevPosNDC); + #if UNITY_UV_STARTS_AT_TOP + velocity.y = velocity.y * _SpaceWarpNDCModifier; + #endif + return float4(velocity.xyz, 0); } ENDHLSL diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/NoLeaksOnEnterLeavePlaymode.cs b/Packages/com.unity.render-pipelines.universal/Tests/Editor/NoLeaksOnEnterLeavePlaymode.cs index 82a53e5ba95..e70e76510d5 100644 --- a/Packages/com.unity.render-pipelines.universal/Tests/Editor/NoLeaksOnEnterLeavePlaymode.cs +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/NoLeaksOnEnterLeavePlaymode.cs @@ -104,12 +104,24 @@ public IEnumerator NoResourceLeaks() var newTextures = Resources.FindObjectsOfTypeAll(typeof(Texture)); string[] materialBlackList = { + // Debug materials "Hidden/Universal/HDRDebugView", "Hidden/Universal Render Pipeline/Debug/DebugReplacement", - "Roboto Mono - Regular Material", // Font leaks - "Inter - Regular Material" // https://jira.unity3d.com/browse/UUM-28555 - }; + // Fonts are intentionally preserved in the editor for performance reasons. + "Apple Color Emoji - Regular Material", + "Arial - Regular Material", + "Arial Unicode MS - Regular Material", + "Helvetica Neue - Regular Material", + "Inter - Regular Material", // UUM-28555 + "Malgun Gothic - Regular Material", + "Microsoft Sans Serif - Regular Material", + "Microsoft YaHei - Regular Material", + "MS Gothic - Regular Material", + "Nirmala UI - Regular Material", + "Roboto Mono - Regular Material", + "Segoe UI Emoji - Regular Material" + }; var oldMaterialNames = materialNames.Split(";"); var materialsPerNameOld = CountResources(oldMaterialNames); var newMaterialNames = newMats.Select(m => m.name).ToArray(); @@ -126,8 +138,18 @@ public IEnumerator NoResourceLeaks() CompareResourceLists(meshesPerNameOld, meshesPerNameNew, meshBlackList); string[] textureBlackList = { - "Inter - Regular Atlas", // more fonts leakage :-\ - "Roboto Mono - Regular Atlas", // more fonts leakage :-\ + "Apple Color Emoji - Regular Atlas", + "Arial - Regular Atlas", + "Arial Unicode MS - Regular Atlas", + "Helvetica Neue - Regular Atlas", + "Inter - Regular Atlas", + "Malgun Gothic - Regular Atlas", + "Microsoft Sans Serif - Regular Atlas", + "Microsoft YaHei - Regular Atlas", + "MS Gothic - Regular Atlas", + "Nirmala UI - Regular Atlas", + "Roboto Mono - Regular Atlas", + "Segoe UI Emoji - Regular Atlas" }; var oldTextureNames = textureNames.Split(";"); diff --git a/Packages/com.unity.shadergraph/Documentation~/Artistic-Nodes.md b/Packages/com.unity.shadergraph/Documentation~/Artistic-Nodes.md index e072a2aea4e..5ec28680436 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Artistic-Nodes.md +++ b/Packages/com.unity.shadergraph/Documentation~/Artistic-Nodes.md @@ -5,16 +5,16 @@ |[Channel Mixer](Channel-Mixer-Node.md)| [Contrast](Contrast-Node.md) | |:---------:|:---------:| -|![Image](images/ChannelMixerNodeThumb.png)|![](images/ContrastNodeThumb.png)| +|![A node-based visual interface with a Channel Mixer block connected to a 3-component vector input labeled X 0, Y 0, Z 0, where only the red (R) channel is fully enabled (set to 1) while green (G) and blue (B) are set to 0, resulting in an output that isolates the red channel.](images/ChannelMixerNodeThumb.png)|![A node-based setup featuring a Contrast block connected to two inputs: a 3-component vector input set to (0, 0, 0) and a single contrast value set to 1, resulting in an output where no visible contrast is applied due to the black input vector.](images/ContrastNodeThumb.png)| |Controls the amount each of the channels of input In contribute to each of the output channels.|Adjusts the contrast of input In by the amount of input Contrast.| |[**Hue**](Hue-Node.md)|[**Invert Colors**](Invert-Colors-Node.md)| -|![Image](images/HueNodeThumb.png)|![Image](images/InvertColorsNodeThumb.png)| +|![A Hue block. A (0,0,0) Vector3 is connected to the In(3) slot and the 0 scalar value is connected to the Offset(1) slot. No value is connected to the Out(3) slot. The Degrees option is selected in the Range area.](images/HueNodeThumb.png)|![An Invert Colors block. A 0 scalar is connected to the In(1) slot. No value is connected to the Out (1) slot. A Red checkbox is unselected. The Green, Blue, and Alpha checkboxes are grayed out.](images/InvertColorsNodeThumb.png)| |Offsets the hue of input In by the amount of input Offset.|Inverts the colors of input In on a per channel basis.| |[**Replace Color**](Replace-Color-Node.md)|[**Saturation**](Saturation-Node.md)| -|![Image](images/ReplaceColorNodeThumb.png)|![Image](images/SaturationNodeThumb.png)| +|![A Replace Color block. A (0,0,0) Vector3 is connected to the In(3) slot and 0 scalar values are connected to the Range(1) and Fuzziness(1) slots. Empty values are connected to the From (3) and To(3) slots. No value is connected to the Out(3) slot.](images/ReplaceColorNodeThumb.png)|![A Saturation block. A (0,0,0) Vector3 is connected to the In(3) slot and a 0 scalar value is connected to the Saturation(1) slot. No value is connected to the Out(3) slot.](images/SaturationNodeThumb.png)| |Replaces values in input In equal to input From to the value of input To.|Adjusts the saturation of input In by the amount of input Saturation.| |[**White Balance**](White-Balance-Node.md)|| -|![Image](images/WhiteBalanceNodeThumb.png)|| +|![A White Balance block. A (0,0,0) Vector3 is connected to the In(3) slot and 0 scalar values are connected to the Temperature(1) and Tint(1) slots. No value is connected to the Out(3) slot.](images/WhiteBalanceNodeThumb.png)|| |Adjusts the temperature and tint of input In by the amount of inputs Temperature and Tint respectively.|| @@ -23,7 +23,7 @@ |[Blend](Blend-Node.md)| |:---------:| -|![Image](images/BlendNodeThumb.png)| +|![A Blend block. A 0 scalar value is connected to the Base(1), Blend(1), and Opacity(1) slots. No value is connected to the Out(1) slot. The Overlay option is selected in the Mode area.](images/BlendNodeThumb.png)| |Blends the value of input Blend onto input Base using the blending mode defined by parameter Mode.| @@ -32,7 +32,7 @@ |[Dither](Dither-Node.md)| |:---------:| -|![Image](images/DitherNodeThumb.png)| +|![](images/DitherNodeThumb.png)| |Dither is an intentional form of noise used to randomize quantization error. It is used to prevent large-scale patterns such as color banding in images..| @@ -42,7 +42,7 @@ |[Channel Mask](Channel-Mask-Node.md)| [Color Mask](Color-Mask-Node.md) | |:---------:|:---------:| -|![Image](images/ChannelMaskNodeThumb.png)|![](images/ColorMaskNodeThumb.png)| +|![](images/ChannelMaskNodeThumb.png)|![](images/ColorMaskNodeThumb.png)| |Masks values of input In on channels selected in dropdown Channels.|Creates a mask from values in input In equal to input Mask Color.| @@ -52,10 +52,10 @@ |[Normal Blend](Normal-Blend-Node.md)| [Normal From Height](Normal-From-Height-Node.md) | |:---------:|:---------:| -|![Image](images/NormalBlendNodeThumb.png)|![](images/NormalFromHeightNodeThumb.png)| +|![](images/NormalBlendNodeThumb.png)|![](images/NormalFromHeightNodeThumb.png)| |Blends two normal maps defined by inputs A and B together.|Creates a normal map from a height map defined by input Texture.| |[**Normal Strength**](Normal-Strength-Node.md)|[**Normal Unpack**](Normal-Unpack-Node.md)| -|![Image](images/NormalStrengthNodeThumb.png)|![Image](images/NormalUnpackNodeThumb.png)| +|![](images/NormalStrengthNodeThumb.png)|![](images/NormalUnpackNodeThumb.png)| |Adjusts the strength of the normal map defined by input In by the amount of input Strength.|Unpacks a normal map defined by input In.| @@ -65,5 +65,5 @@ | [Colorspace Conversion](Colorspace-Conversion-Node.md) | | :----------------------------------------------------------: | -| ![Image](images/ColorspaceConversionNodeThumb.png) | +| ![](images/ColorspaceConversionNodeThumb.png) | | Returns the result of converting the value of input In from one colorspace space to another. | diff --git a/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md b/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md index c5204fe4826..27ff10003e5 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md +++ b/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md @@ -4,8 +4,6 @@ Shader Graph can display colors on nodes in your graph to improve readability. This feature uses **Color Modes** to change which colors to display in the graph. Use the **Color Mode:** drop-down menu in the top right corner of the [Shader Graph Window](Shader-Graph-Window.md) to change the **Color Modes**. -![](images/Shader-Graph-Toolbar.png) - ## Modes | Name | Description | @@ -20,19 +18,19 @@ Shader Graph can display colors on nodes in your graph to improve readability. T This mode displays colors on the nodes based on their category. See the [Node Library](Node-Library.md) to learn about the different categories available. -![](images/Color-Mode-Category.png) +![A screenshot of Unity's Shader Graph in Category Color Mode, where each node is color-coded based on its function. Artistic nodes appear in orange, #DB773B, channel-related nodes in green, #97D13D, input nodes in red, #CB3022, math operations in blue, #4B92F3, procedural elements in purple, #9C4FFF, utility nodes in gray, #AEAEAE, and UV-related nodes in teal, #08D78B.](images/Color-Mode-Category.png) The table below lists current categories and their corresponding colors. -| Name | Color | Hex Value | -|:-----------|:---------------------------------------------------------|:----------| -| Artistic | ![#DB773B](https://placehold.it/15/DB773B/000000?text=+) | #DB773B | -| Channel | ![#97D13D](https://placehold.it/15/97D13D/000000?text=+) | #97D13D | -| Input | ![#CB3022](https://placehold.it/15/CB3022/000000?text=+) | #CB3022 | -| Math | ![#4B92F3](https://placehold.it/15/4B92F3/000000?text=+) | #4B92F3 | -| Procedural | ![#9C4FFF](https://placehold.it/15/9C4FFF/000000?text=+) | #9C4FFF | -| Utility | ![#AEAEAE](https://placehold.it/15/AEAEAE/000000?text=+) | #AEAEAE | -| UV | ![#08D78B](https://placehold.it/15/08D78B/000000?text=+) | #08D78B | +| Name | Color Hex Value | +|:-----------|:----------------| +| Artistic | #DB773B | +| Channel | #97D13D | +| Input | #CB3022 | +| Math | #4B92F3 | +| Procedural | #9C4FFF | +| Utility | #AEAEAE | +| UV | #08D78B | **Note:** [Sub Graph](Sub-Graph.md) nodes in a main [Shader Graph](index.md) fall in the Utility category. If you select **Category** mode, all Sub Graphs use the Utility color. @@ -51,7 +49,6 @@ To set a custom color for a node, right-click on the target node to bring up the | Change... |Brings up a color picker menu and lets you set your own custom color on the node. | | Reset | Removes the currently selected color and sets it to the default gray. | -![](images/Color-Mode-User-Defined.png) ## Overriding Default Colors diff --git a/Packages/com.unity.shadergraph/Documentation~/Custom-Function-Node.md b/Packages/com.unity.shadergraph/Documentation~/Custom-Function-Node.md index e03495397c8..eaf8ff0b83c 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Custom-Function-Node.md +++ b/Packages/com.unity.shadergraph/Documentation~/Custom-Function-Node.md @@ -18,11 +18,11 @@ In the [Graph Inspector](Internal-Inspector.md), open the **Node Settings** to a | Menu Item | Description | |:----------|:------------| | Inputs | A [Custom Port Menu](Custom-Port-Menu.md) that defines the node's input ports. | -| Outputs | A [Custom Port Menu](Custom-Port-Menu.md) that defines the node's input ports. | +| Outputs | A [Custom Port Menu](Custom-Port-Menu.md) that defines the node's output ports. | | Type | A function type selector. Choose File to reference an external file or string to directly input functions to the node. | | Name | Part of the name this custom function has in the final generated code. Suffixed by the function type ` _half ` or ` _float `. | -| Source | An asset field to reference the external HLSL include file. **Only available in `File` mode**. | -| Body | A text box where you enter HLSL code. **Only available in `String` mode**. | +| Source | An asset field to reference the external HLSL include file with the `.hlsl` extension. **Available only in `File` mode**. | +| Body | A text box where you enter HLSL code. **Available only in `String` mode**. | ### Defining the Function via string If you select `String` mode, the graph generates the shader function. The `Name` field defines the name of the generated function, and the `Body` field defines the contents of the generated function. Unity handles the arguments, braces, and indent scope automatically. In `String` mode you may use the token `$precision` instead of `half` or `float` in the `Body` field. Unity replaces this with the correct type, based on that node's precision, when the node is processed. @@ -58,7 +58,7 @@ void MyFunction_float(float3 A, float B, out float3 Out) #endif //MYHLSLINCLUDE_INCLUDED ``` -`File` mode allows for more flexbility with custom functions in a graph. You can define uniform variables outside of the function scope, as shown here with a matrix. +`File` mode allows for more flexibility with custom functions in a graph. You can define uniform variables outside the function scope, as shown here with a matrix. ``` //UNITY_SHADER_NO_UPGRADE diff --git a/Packages/com.unity.shadergraph/Documentation~/Custom-Render-Texture-Example.md b/Packages/com.unity.shadergraph/Documentation~/Custom-Render-Texture-Example.md index 993a03c5b3c..1492a0e3c3b 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Custom-Render-Texture-Example.md +++ b/Packages/com.unity.shadergraph/Documentation~/Custom-Render-Texture-Example.md @@ -2,7 +2,9 @@ This example demonstrates how to set up a Shader Graph for Custom Render Texture shaders to create a self-healing deformation effect that could be used for snow, sand, etc. -![](images/CustomRenderTexture-Animation.gif) + + + For this effect, we need a Render Texture that contains the pixels we want to displace. This Render Texture is displayed at the top left corner of the preceding image. It was directly assigned to a camera that renders the objects in red above the UV plane. @@ -12,16 +14,40 @@ For this effect, we need a Render Texture that contains the pixels we want to di 2. Create a new **Custom Render Texture** as follows: - Select **Create** > **Rendering** > **Custom Render Texture**. - - Configure the parameters to match the following image. + - Configure the parameters to match the following settings: + - **Dimension**: 2D + - **Size**: 1024 x 1024 + - **Anti-aliasing**: None + - **Enable Compatible Format**: selected + - **Color Format**: R32_SFLOAT + - **Depth Stencil Format**: None + - **Mipmap**: not selected + - **Dynamic Scaling**: not selected + - **Random Write**: not selected + - **Wrap Mode**: Clamp + - **Filter Mode**: Bilinear + - **Aniso Level**: 0 + - **Material**: SnowHeightmapUpdate **Note**: The material in the **Material** field was created. + - **Shader Pass**: + - **Initialization Mode**: OnDemand + - **Source**: Texture and Color + - **Color**: select a color + - **Texture**: None (Texture) + - **Update Mode**: Realtime + - **Period**: 0 + - **Double Buffered**: selected + - **Wrap Update Zones**: not selected + - **Update Zone Space**: Normalized + - **Update Zones**: list empty -![](images/CustomRenderTextureInspector.png) +![The Custom Render Texture inspector as it looks with the preceding settings.](images/CustomRenderTextureInspector.png) -This Shader Graph reads the output of the Camera Render Texture, as well as the Self texture, then adds them and lerps the result so that it tends towards 0 over time. You should end up with something similar to the following: +The following Shader Graph reads the output of the Camera Render Texture, as well as the Self texture, then adds them and lerps the result so that it tends towards 0 over time. -![](images/CustomRenderTextureShaderGraph.png) +![The graph that is described in the preceding text.](images/CustomRenderTextureShaderGraph.png) -4. Finally you need to assign the **Custom Render Texture** to a material that can deform the geometry (tessellation or pixel displacement). +3. Finally you need to assign the **Custom Render Texture** to a material that can deform the geometry (tessellation or pixel displacement). ## New ShaderGraph Nodes for Custom Render Textures diff --git a/Packages/com.unity.shadergraph/Documentation~/Input-Nodes.md b/Packages/com.unity.shadergraph/Documentation~/Input-Nodes.md index f6ee64ffb26..a2a42b9442a 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Input-Nodes.md +++ b/Packages/com.unity.shadergraph/Documentation~/Input-Nodes.md @@ -4,38 +4,40 @@ |[Boolean](Boolean-Node.md)|[Color](Color-Node.md)| |:--------:|:------:| -|![Image](images/BooleanNodeThumb.png)|![](images/ColorNodeThumb.png)| +|![A flow diagram with a labeled node titled "Boolean" and an output labeled "out(B)". The output is connected via an arrow pointing outward, indicating the result of a Boolean operation.](images/BooleanNodeThumb.png)|![A diagram featuring a single element labeled **"Boolean"** with an output connection marked **"out(B)"**. An arrow extends from this output, indicating the flow of a Boolean value from the node. The design implies a logic or data flow representation centered around Boolean values. +](images/ColorNodeThumb.png)| | Defines a constant Boolean value in the shader. | Defines a constant Vector 4 value in the shader using a Color field. | |[**Constant**](Constant-Node.md)|[**Integer**](Integer-Node.md)| -|![Image](images/ConstantNodeThumb.png)|![Image](images/IntegerNodeThumb.png)| +|![A diagram with a node labeled "Constant" and an output labeled "Out(1)". Below it, the symbol "PI" is displayed, with a downward arrow pointing toward it. ](images/ConstantNodeThumb.png)|![A node labeled "Integer" with an output labeled "out(1)". Next to it is the number 0, indicating that the node outputs the integer value zero.](images/IntegerNodeThumb.png)| |Defines a Float of a mathematical constant value in the shader.|Defines a constant Float value in the shader using an Integer field.| |[**Slider**](Slider-Node.md)|[**Time**](Time-Node.md)| -|![Image](images/SliderNodeThumb.png)|![Image](images/TimeNodeThumb.png)| +|![A slider control with an output labeled "out(1)". Below the slider, there is a range indicated by Min 0 on the left and Max 1 on the right. The current slider value is shown as 0, suggesting it is set at the minimum end of the range.](images/SliderNodeThumb.png)|![A node labeled Time with multiple outputs, each named and connected as follows: Time(1), Sine Time(1), Cosine Time(1), Delta Time(1), Smooth Delta(1).](images/TimeNodeThumb.png)| |Defines a constant Float value in the shader using a Slider field.|Provides access to various Time parameters in the shader.| |[**Float**](Float.md)|[**Vector 2**](Vector-2-Node.md)| -|![Image](images/Vector1NodeThumb.png)|![Image](images/Vector2NodeThumb.png)| +|![A Vector node with a label for the X component set to 0. There is a connection marked X(1) leading to an output labeled out(1). An arrow extends from the output, indicating the flow of this vector’s X value through the system.](images/Vector1NodeThumb.png)|![a Vector 2 node with two components: X set to 0, connected via X(1) to an output labeled out(2), Y set to 0, connected via Y(1). Arrows indicate the flow of these two values from their respective outputs.](images/Vector2NodeThumb.png)| |Defines a Float value in the shader.|Defines a Vector 2 value in the shader.| |[**Vector 3**](Vector-3-Node.md)|[**Vector 4**](Vector-4-Node.md)| -|![Image](images/Vector3NodeThumb.png)|![Image](images/Vector4NodeThumb.png)| +|![A Vector 3 node with three components: X set to 0, connected via X(1) to an output labeled out(3), Y set to 0, connected via Y(1), Z set to 0, connected via Z(1); Each component has arrows indicating the flow of these values, representing a three-dimensional vector output.](images/Vector3NodeThumb.png)|![A Vector 4 node with four components: X set to 0, connected via X(1) to an output labeled Out(4), Y set to 0, connected via Y(1), Z set to 0, connected via Z(1), W set to 0, connected via W(1). Each component is linked with arrows, showing the flow of these four values representing a four-dimensional vector output.](images/Vector4NodeThumb.png)| |Defines a Vector 3 value in the shader.|Defines a Vector 4 value in the shader.| ## Geometry |[Bitangent Vector](Bitangent-Vector-Node.md)|[Normal Vector](Normal-Vector-Node.md)| |:--------:|:------:| -|[![Image](images/BitangentVectorNodeThumb.png)](Combine-Node)|![](images/NormalVectorNodeThumb.png)| +|[![A Bitangent Vector node with an output labeled out(3). Below the label, there are two options or modes indicated: Space and World, with an arrow pointing down toward World. This suggests the vector can be interpreted or output in different coordinate spaces, with the current selection being World space.](images/BitangentVectorNodeThumb.png)](Combine-Node)|![A Normal Vector node with an output labeled Out(3). Below it, there are two options: Space and World, with an arrow pointing downward toward World. This indicates the vector can be output in different coordinate spaces, currently set to World space.](images/NormalVectorNodeThumb.png)| | Provides access to the mesh vertex or fragment's Bitangent Vector. | Provides access to the mesh vertex or fragment's Normal Vector. | |[**Position**](Position-Node.md)|[**Screen Position**](Screen-Position-Node.md)| -|![Image](images/PositionNodeThumb.png)|![Image](images/ScreenPositionNodeThumb.png)| +|![A Position node with an output labeled Out(3). Below it, there are two options: Space and World, with a downward arrow pointing at World. This indicates the position value can be represented in different coordinate spaces, currently set to World space.](images/PositionNodeThumb.png)|![A Position node with an output labeled Out(3). Beneath it, there are two selectable options: Space and World, with an arrow indicating the selection is set to World space. This suggests the position value is provided relative to the world coordinate system.](images/ScreenPositionNodeThumb.png)| |Provides access to the mesh vertex or fragment's Position.|Provides access to the mesh vertex or fragment's Screen Position.| |[**Tangent Vector**](Tangent-Vector-Node.md)|[**UV**](UV-Node.md)| -|![Image](images/TangentVectorNodeThumb.png)|![Image](images/UVNodeThumb.png)| +|![A Tangent Vector node with an output labeled Out(3). Below it, two options are listed: Space and World, with an arrow pointing downward toward World. This indicates the vector can be output in different coordinate spaces, currently set to World space.](images/TangentVectorNodeThumb.png)|![A Tangent Vector node with an output labeled Out(3). Below it, two options are listed: Space and World, with an arrow pointing downward toward World. This indicates the vector can be output in different coordinate spaces, currently set to World space. +](images/UVNodeThumb.png)| |Provides access to the mesh vertex or fragment's Tangent Vector.|Provides access to the mesh vertex or fragment's UV coordinates.| |[**Vertex Color**](Vertex-Color-Node.md)|[**View Direction**](View-Direction-Node.md)| -|![Image](images/VertexColorNodeThumb.png)|![Image](images/ViewDirectionNodeThumb.png)| +|![a Vertex Color node with an output labeled Out(4). An arrow extends from the output, indicating the flow of a four-component color value, typically representing RGBA data.](images/VertexColorNodeThumb.png)|![A View Direction node with an output labeled Out(3). Below it, two options are shown: Space and World, with a downward arrow pointing to World, indicating the current coordinate space for the view direction vector.](images/ViewDirectionNodeThumb.png)| |Provides access to the mesh vertex or fragment's Vertex Color value.|Provides access to the mesh vertex or fragment's View Direction vector.| |[**Vertex ID**](Vertex-ID-Node.md)| -|![Image](images/VertexIDNodeThumb.png)| +|![A Vertex ID node with an output labeled out(1).](images/VertexIDNodeThumb.png)| |Provides access to the mesh vertex or fragment's Vertex ID value.| @@ -43,33 +45,39 @@ |[Blackbody](Blackbody-Node.md)|[Gradient](Gradient-Node.md)| |:--------:|:------:| -|![Image](images/BlackbodyNodeThumb.png)|![Image](images/GradientNodeThumb.png)| +|![A node labeled Tempnat with an output labeled out(3). An arrow points outward from the output.](images/BlackbodyNodeThumb.png)|![a Gradient node with an output labeled out(G). An arrow extends from the output.](images/GradientNodeThumb.png)| | Samples a radiation based gradient from temperature input (in Kelvin). | Defines a constant Gradient in the shader. | |[Sample Gradient](Sample-Gradient-Node.md)| -|![](images/SampleGradientNodeThumb.png)| +|![A Sample Gradient node with two main elements: An input labeled Gradient, an output labeled out(4). There is also an input labeled X set to 0, connected via Time(1).](images/SampleGradientNodeThumb.png)| | Samples a Gradient given the input of Time. | ## Matrix |[Matrix 2x2](Matrix-2x2-Node.md)|[Matrix 3x3](Matrix-3x3-Node.md)| |:--------:|:------:| -|![Image](images/Matrix2x2NodeThumb.png)|![](images/Matrix3x3NodeThumb.png)| +|![A Matrix 2x2 node with an output labeled Out(2x2). The matrix elements are all set to 0, arranged in a 2-by-2 grid.](images/Matrix2x2NodeThumb.png)|![A Matrix 3x3 node with an output labeled Out(3x3). The matrix is displayed as a 3-by-3 grid with all elements set to 0.](images/Matrix3x3NodeThumb.png)| | Defines a constant Matrix 2x2 value in the shader. | Defines a constant Matrix 3x3 value in the shader. | |[**Matrix 4x4**](Matrix-4x4-Node.md)|[**Transformation Matrix**](Transformation-Matrix-Node.md)| -|![Image](images/Matrix4x4NodeThumb.png)|![Image](images/TransformationMatrixNodeThumb.png)| +|![A Matrix 4x4 node with an output labeled Out(4x4). The matrix is displayed as a 4-by-4 grid with all elements set to 0.](images/Matrix4x4NodeThumb.png)|![ A Transformation Matrix node with an output labeled Out(4x4). Below it, there is a dropdown or selection labeled Model with a downward arrow.](images/TransformationMatrixNodeThumb.png)| |Defines a constant Matrix 4x4 value in the shader.|Defines a constant Matrix 4x4 value for a default Unity Transformation Matrix in the shader.| ## Mesh Deformation | [Compute Deformation Node](Compute-Deformation-Node) | [Linear Blend Skinning Node](Linear-Blend-Skinning-Node) | | :----------------------------------------------------------- | :----------------------------------------------------------- | -| ![Image](images/ComputeDeformationNodeThumb.png) | ![Image](images/LinearBlendSkinningNodeThumb.png) | +| ![A Compute Deformation node with three outputs: Deformed Position, Deformed Normal, Deformed Tangent.](images/ComputeDeformationNodeThumb.png) | ![A Linear Blend Skinning node with three pairs of inputs and outputs: Vertex Position(3) input connected to Skinned Position(3) output, Vertex Normal(3) input connected to Skinned Normal(3) output, Vertex Tangent(3) input connected to Skinned Tangent(3) output.](images/LinearBlendSkinningNodeThumb.png) | | Passes compute deformed vertex data to a vertex shader. Only works with the [Entities Graphics package](https://docs.unity3d.com/Packages/com.unity.entities.graphics@latest/). | Applies Linear Blend Vertex Skinning. Only works with the [Entities Graphics package](https://docs.unity3d.com/Packages/com.unity.entities.graphics@latest/). | +## Sprite Deformation +| [Sprite Skinning Node](Sprite-Skinning-Node) | +| :----------------------------------------------------------- | +| ![A Linear Blend Skinning node with three pairs of inputs and outputs, each handling 3-component vectors: Vertex Position(3) connected to Skinned Position(3) output, Vertex Normal(3) connected to Skinned Normal(3) output, Vertex Tangent(3) connected to Skinned Tangent(3) output.](images/SpriteSkinningNodeThumb.png) | +| Applies Vertex Skinning on Sprites. Only works with the [2D Animation](https://docs.unity3d.com/Packages/com.unity.2d.animation@latest/). | + ## PBR | [**Dielectric Specular**](Dielectric-Specular-Node.md) | [**Metal Reflectance**](Metal-Reflectance-Node.md) | | :----------------------------------------------------------: | :----------------------------------------------------------: | -| ![Image](images/DielectricSpecularNodeThumb.png) | ![](images/MetalReflectanceNodeThumb.png) | +| ![A Dielectric Specular node with an output labeled Out(1). Below it, there are settings including: Material with an option labeled Common and a dropdown arrow, Range set to LJ 0.5, IOR (Index of Refraction) set to 1.](images/DielectricSpecularNodeThumb.png) | ![A Metal Reflectance node with an output labeled out(3). Below it, there is a Material option set to Iron with a dropdown arrow.](images/MetalReflectanceNodeThumb.png) | | Returns a Dielectric Specular F0 value for a physically based material. | Returns a Metal Reflectance value for a physically based material. | @@ -77,42 +85,42 @@ |[Ambient](Ambient-Node.md)|[Camera](Camera-Node.md)| |:--------:|:------:| -|![Image](images/AmbientNodeThumb.png)|![](images/CameraNodeThumb.png)| +|![An Ambient node with three outputs: Color/Sky(3), Equator(3), Ground(3).](images/AmbientNodeThumb.png)|![A Camera node with multiple outputs: Position(3), Direction(3), Orthographic(1), Near Plane(1), Far Plane(1), Z Buffer Sign(1), Width(1), Height(1).](images/CameraNodeThumb.png)| | Provides access to the Scene's Ambient color values. | Provides access to various parameters of the current Camera. | |[**Fog**](Fog-Node.md)|[**Baked GI**](Baked-GI-Node.md)| -|![Image](images/FogNodeThumb.png)|| +|![A Fog node with: An input labeled Object Space Position(3), outputs labeled Color(4) and Density(1).](images/FogNodeThumb.png)|| |Provides access to the Scene's Fog parameters.|Provides access to the Baked GI values at the vertex or fragment's position.| |[**Object**](Object-Node.md)|[**Reflection Probe**](Reflection-Probe-Node.md)| -|![Image](images/ObjectNodeThumb.png)|![Image](images/ReflectionProbeNodeThumb.png)| +|![An Object node with two outputs: Position(3), Scale(3).](images/ObjectNodeThumb.png)|![A Reflection Probe node with several elements: An input labeled Object Space View Dir(3) connected to an output labeled Out(3), an input labeled Object Space Normal(3), an input labeled X set to 0, connected via LOD(1)](images/ReflectionProbeNodeThumb.png).| |Provides access to various parameters of the Object.|Provides access to the nearest Reflection Probe to the object.| |[**Scene Color**](Scene-Color-Node.md)|[**Scene Depth**](Scene-Depth-Node.md)| -|![Image](images/SceneColorNodeThumb.png)|![Image](images/SceneDepthNodeThumb.png)| +|![A Scene Color node with: An input labeled Default, an output labeled Out(4).](images/SceneColorNodeThumb.png)|![A Scene Depth node with: An input labeled Default UV(4), an output labeled out(1), a setting or option labeled Sampling Linear 01.](images/SceneDepthNodeThumb.png)| |Provides access to the current Camera's color buffer.|Provides access to the current Camera's depth buffer.| |[**Screen**](Screen-Node.md)|[**Eye Index**](Eye-Index-Node.md)| -|![Image](images/ScreenNodeThumb.png)|![Image](images/EyeIndexNodeThumb.png)| +|![A Screen node with two outputs: Width(1), Height(1).](images/ScreenNodeThumb.png)|![An Eye Index node with an output labeled Out(1).](images/EyeIndexNodeThumb.png)| |Provides access to parameters of the screen.|Provides access to the Eye Index when stereo rendering.| ## Texture |[**Cubemap Asset**](Cubemap-Asset-Node.md)|[**Sample Cubemap**](Sample-Cubemap-Node.md)| |:--------:|:------:| -|[![Image](images/CubemapAssetNodeThumb.png)](Combine-Node)|![](images/SampleCubemapNodeThumb.png)| +|[![A Cubemap Asset node with an output labeled out(C). Below it, there is a dropdown or selector displaying None (Cubemap).](images/CubemapAssetNodeThumb.png)](Combine-Node)|![A Sample Cubemap node with: An input labeled None (Cubemap), an input labeled World Space connected to pijr(3), an input labeled x set to 0, connected to LoD(1), an output labeled Out(4).](images/SampleCubemapNodeThumb.png)| | Defines a constant Cubemap Asset for use in the shader. | Samples a Cubemap and returns a Vector 4 color value for use in the shader. | |[**Sample Reflected Cubemap Node**](Sample-Reflected-Cubemap-Node.md)|[**Sample Texture 2D**](Sample-Texture-2D-Node.md)| -|![Image](images/SampleReflectedCubemapThumb.png)|![Image](images/SampleTexture2DNodeThumb.png)| +|![A Sample Cubemap node with several inputs and an output: An input labeled None (Cubemap) connected to Cube(C), inputs labeled Object Space ViewDir(3) and Object Space Normal(3), an input labeled Sampler(SS), an input labeled X set to 0, connected to LOD(1), an output labeled Out(4).](images/SampleReflectedCubemapThumb.png)|![A Sample Texture 2D node with: An input labeled None (Texture) connected to Texture(T2), an input labeled UV(2), an input labeled Sampler(SS), multiple outputs labeled RGBA(4), R(1), G(1), B(1), and A(1), two dropdown options: Type set to Default, and Space set to Tangent.](images/SampleTexture2DNodeThumb.png)| |Samples a Cubemap with reflected vector and returns a Vector 4 color value for use in the shader.|Samples a Texture 2D and returns a color value for use in the shader.| |[**Sample Texture 2D Array**](Sample-Texture-2D-Array-Node.md)|[**Sample Texture 2D LOD**](Sample-Texture-2D-LOD-Node.md)| -|![Image](images/SampleTexture2DArrayNodeThumb.png)|![Image](images/SampleTexture2DLODNodeThumb.png)| +|![A Sample Texture 2D Array node with: An input labeled None (Texture) connected to Texture Array (T2A), an input labeled X set to 0, connected to Index(1), an input labeled UV connected to UV(2), an input labeled Sampler(SS), multiple outputs labeled RGBA(4), R(1), G(1), B(1), and A(1).](images/SampleTexture2DArrayNodeThumb.png)|![A Sample Texture 2D LOD node with: An input labeled None (Texture) connected to Texture(T2), an input labeled UV(2), an input labeled Sampler(SS), an input labeled X set to 0, connected to LOD(1), multiple outputs labeled RGBA(4), R(1), G(1), B(1), and A(1), two dropdown options: Type set to Default, and Space set to Tangent.](images/SampleTexture2DLODNodeThumb.png)| |Samples a Texture 2D Array at an Index and returns a color value for use in the shader.|Samples a Texture 2D at a specific LOD and returns a color value for use in the shader.| |[**Sample Texture 3D**](Sample-Texture-3D-Node.md)| [**Sample Virtual Texture**](Sample-Virtual-Texture-Node.md) | -|![Image](images/SampleTexture3DNodeThumb.png)| ![image](images/SampleVirtualTextureNodeThumb.png) | +|![A Sample Texture 3D node with: An input labeled None (Texture) connected to Texture(T3), inputs labeled X 0, Y 0, Z 0 combined as UV(3), an input labeled Sampler(SS), an output labeled Out(4).](images/SampleTexture3DNodeThumb.png)| ![A Sample Virtual Texture node with: An input labeled UV(2), an input labeled VT(VT) connected to Virtual Texture (VT), four outputs labeled Out(4), Out2(4), Out3(4), and Out4(4).](images/SampleVirtualTextureNodeThumb.png) | |Samples a Texture 3D and returns a color value for use in the shader.| Samples a Virtual Texture and returns color values for use in the shader.| |[**Sampler State**](Sampler-State-Node.md)|[**Texture Size**](Texture-Size-Node.md)| -|![Image](images/SamplerStateNodeThumb.png)|![Image](images/TexelSizeNodeThumb.png) | +|![A Sampler State node with an output labeled Out(SS). Below it are settings including: Filter set to Linear, Wrap set to Repeat.](images/SamplerStateNodeThumb.png)|![A Texture Size node with: An input labeled None (Texture) connected to Texture(T2), outputs labeled Width(1), Height(1), Texel Width(1), and Texel Height(1).](images/TexelSizeNodeThumb.png) | |Defines a Sampler State for sampling textures.|Returns the Width and Height of the texel size of Texture 2D input.| |[**Texture 2D Array Asset**](Texture-2D-Array-Asset-Node.md)|[**Texture 2D Asset**](Texture-2D-Asset-Node.md)| -|![Image](images/Texture2DArrayAssetNodeThumb.png)|![Image](images/Texture2DAssetNodeThumb.png)| +|![A Texture 2D Array Asset node with an output labeled Out(T2A). Below it, there is a dropdown or selector displaying None (Texture 2D Array).](images/Texture2DArrayAssetNodeThumb.png)|![A Texture 2D Asset node with an output labeled Out(T2). Below it, there is a dropdown or selector displaying None (Texture).](images/Texture2DAssetNodeThumb.png)| |Defines a constant Texture 2D Array Asset for use in the shader.|Defines a constant Texture 2D Asset for use in the shader.| |[**Texture 3D Asset**](Texture-3D-Asset-Node.md)| | -|![Image](images/Texture3DAssetNodeThumb.png)| | +|![A Texture 3D Asset node with an output labeled Out(T3). Below it, there is a dropdown or selector displaying None (Texture 3D).](images/Texture3DAssetNodeThumb.png)| | |Defines a constant Texture 3D Asset for use in the shader.| | diff --git a/Packages/com.unity.shadergraph/Documentation~/Keywords.md b/Packages/com.unity.shadergraph/Documentation~/Keywords.md index f4af27cd164..981514f50bd 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Keywords.md +++ b/Packages/com.unity.shadergraph/Documentation~/Keywords.md @@ -27,14 +27,13 @@ Although some fields are specific to certain types of Keywords, all Keywords hav | **Reference Name** | String | The internal name for the Keyword in the shader.

If you overwrite the Reference Name parameter, take note of the following:
  • Keyword Reference Names are always in full capitals, so Unity converts all lowercase letters to uppercase.
  • If the Reference Name contains any characters that HLSL does not support, Unity replaces those characters with underscores.
  • Right-click on a Reference Name, and select **Reset Reference** to revert to the default Reference Name.
    • | | **Definition** | Enum | Sets how the Keyword is defined in the shader. Determines when to compile keyword variants.

      There are three available options:
      • **Shader Feature**: Unity only compiles keyword variants when a Material selects the relevant option. For this option to be available in the Player, a Material selecting it must exist at build-time.
      • **Multi Compile**: Pre-compiles all the variant possibilities. This is slower and uses more memory, but allows the option to be dynamically switched in the Player.
      • **Predefined**: The render pipeline defines this keyword and controls the settings for it.
        • | | **Scope** | Enum | Sets the scope at which to define the Keyword.

          The following options are available:
          • **Global Keywords**: Defines Keyword for the entire project, and it counts towards the global keyword limit.
          • **Local Keywords**: Defines Keyword for only one shader, which has its own local keyword limit.
            • When you use Predefined Keywords, Unity disables this field. | -| **Stages** | | Set the stage the keyword applies to.

              The following options are available:
              • **All** - Applies this keyword to all shader stages.
              • **Vertex** - Applies this keyword to the vertex stage.
              • **Fragment** - Applies this keyword to the fragment stage.
                • | +| **Stages** | N/A | Set the stage the keyword applies to.

                  The following options are available:
                  • **All** - Applies this keyword to all shader stages.
                  • **Vertex** - Applies this keyword to the vertex stage.
                  • **Fragment** - Applies this keyword to the fragment stage.
                    • | ## Boolean Keywords Boolean Keywords are either on or off. This results in two shader variants. Unity exposes Boolean Keywords in the Material Inspector if the Exposed parameter is set to is true. To enable the keyword from a script, use EnableKeyword on the keyword's Reference name. DisableKeyword disables the keyword. To learn more about Boolean Keywords, see [Shader variants and keywords](https://docs.unity3d.com/Manual/SL-MultipleProgramVariants.html). -![](images/keywords_boolean.png) ### Type-specific parameters @@ -54,8 +53,6 @@ Special characters such as ( ) or ! @ are not valid in the **Entry Name** of an When you define an Enum Keyword, Shader Graph displays labels for each state consisting of a sanitized version of the Enum's **Entry Name** appended to the main **Reference** name. When controlling a keyword via script with a, Material.EnableKeyword or Shader.EnableKeyword function, enter the state label in the format {REFERENCE}_{REFERENCESUFFIX}. For example, if your reference name is MYENUM and the desired entry is OPTION1, then you would call Material.EnableKeyword("MYENUM_OPTION1"). When you select an option, this disables the other options. -![](images/keywords_enum.png) - ### Type-specific parameters In addition to the common parameters listed above, Enum Keywords have the following additional parameters. @@ -78,4 +75,3 @@ In an HDRP project, you can find the current quality level in the Material secti MaterialQualityUtilities.SetGlobalShaderKeywords( MaterialQuality.High ); ``` -![](images/keywords_built-in.png) diff --git a/Packages/com.unity.shadergraph/Documentation~/Length-Node.md b/Packages/com.unity.shadergraph/Documentation~/Length-Node.md index e252eabe696..f691d539fc3 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Length-Node.md +++ b/Packages/com.unity.shadergraph/Documentation~/Length-Node.md @@ -6,11 +6,11 @@ Returns the length of input **In**. This is also known as magnitude. A vector's The length of a **Vector 2** can be calculated as: -![](images/LengthNodePage02.png) +![The square root of x squared plus y squared.](images/LengthNodePage02.png) Where *x* and *y* are the components of the input vector. Length can be calculated for other dimension vectors by adding or removing components. -![](images/LengthNodePage03.png) +![The square root of (x squared plus y squared plus z squared).](images/LengthNodePage03.png) And so on. diff --git a/Packages/com.unity.shadergraph/Documentation~/Log-Node.md b/Packages/com.unity.shadergraph/Documentation~/Log-Node.md index 588e994db92..0d5b38c5410 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Log-Node.md +++ b/Packages/com.unity.shadergraph/Documentation~/Log-Node.md @@ -6,7 +6,7 @@ Returns the logarithm of input **In**. **Log** is the inverse operation to the [ For example, the result of a base-2 **Exponential** using an input value of 3 is 8. -![](images/LogNodePage02.png) +![Two raised to the power of three = 2 x 2 x 2 = eight.](images/LogNodePage02.png) Therefore the result of a base-2 **Log** using an input value of 8 is 3. diff --git a/Packages/com.unity.shadergraph/Documentation~/Parallax-Occlusion-Mapping-Node.md b/Packages/com.unity.shadergraph/Documentation~/Parallax-Occlusion-Mapping-Node.md index 716d9333501..6a3d9c7e835 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Parallax-Occlusion-Mapping-Node.md +++ b/Packages/com.unity.shadergraph/Documentation~/Parallax-Occlusion-Mapping-Node.md @@ -8,8 +8,6 @@ If you receive a texture sampling error while using this node in a graph that in When you assign the same Texture2D to a POM node and a Sample Texture 2D node, you need to avoid transforming the UV coordinates twice. To prevent this, connect the Split Texture Transform node’s **Texture Only** port to the Sample Texture 2D Node’s **UV** port. -![](images/ParallaxOcclusionMappingThumb.png) - ## Ports | Name | **Direction** | Type | Description | diff --git a/Packages/com.unity.shadergraph/Documentation~/Procedural-Nodes.md b/Packages/com.unity.shadergraph/Documentation~/Procedural-Nodes.md index 590932b5412..b775066dd53 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Procedural-Nodes.md +++ b/Packages/com.unity.shadergraph/Documentation~/Procedural-Nodes.md @@ -2,28 +2,28 @@ | [Checkerboard](Checkerboard-Node.md) | | :-----------| -| ![Image](images/CheckerboardNodeThumb.png) | +| ![A Checkerboard node. A UV0 value is connected to the UV(2) slot. A dark-gray value is connected to the Color A(3) slot. A light gray value is connected to the Color B(3) slot. A (1,1) Vector 2 is connected to the Frequency(2) slot. No value is connected to the Out(3) slot. A 2 by 2 checkerboard is displayed in the lower part of the node.](images/CheckerboardNodeThumb.png) | | Generates a checkerboard of alternating colors between inputs Color A and Color B based on input UV. | ## Noise | [Gradient Noise](Gradient-Noise-Node.md) | [Simple Noise](Simple-Noise-Node.md) | | :------------------------ | :---------------------------- | -| ![Image](images/GradientNoiseNodeThumb.png) | ![Image](images/SimpleNoiseNodeThumb.png) | +| ![A Gradient Noise node. A UV0 value is connected to the UV(2) slot. A 10 scalar is attached to the Scale(1) slot. No value is connected to the Out(1) slot. A textured, abstract grayscale pattern that resembles soft, cloudy noise is displayed in the lower part of the node.](images/GradientNoiseNodeThumb.png) | ![A Simple Noise node. A UV0 value is connected to the UV(2) slot. A 500 scalar is attached to the Scale(1) slot. No value is connected to the Out(1) slot. A TV static pattern is displayed in the lower part of the node.](images/SimpleNoiseNodeThumb.png) | | Generates a gradient, or Perlin, noise based on input UV. | Generates a simple, or Value, noise based on input UV. | | [**Voronoi**](Voronoi-Node) | | -| ![Image](images/VoronoiNodeThumb.png) || +| ![A Voronoi node. A UV0 value is connected to the UV(2) slot. A 2 scalar is attached to the Angle Offset(1) slot. A 5 scalar is attached to the Cell Density(1) slot. No value is connected to the Out(1) slot or the Cells(1) slot. A pattern of cells is displayed in the lower part of the node.](images/VoronoiNodeThumb.png) || |Generates a Voronoi, or Worley, noise based on input UV. || ## Shape | [Ellipse](Ellipse-Node.md) | [Polygon](Polygon-Node.md) | | :----------------------------------------------------------- | :----------------------------------------------------------- | -| ![Image](images/EllipseNodeThumb.png) | ![Image](images/PolygonNodeThumb.png) | +| ![An Ellipse node. A UV0 value is connected to the UV(2) slot. 0.5 scalars are atttached to the Width(1) and Height(1) slots. No value is connected to the Out(1) slot. A solid white disk is displayed in the lower part of the node.](images/EllipseNodeThumb.png) | ![A Polygon node. A UV0 value is connected to the UV(2) slot. A 6 scalar is attached to the Sides(1) slot. 0.5 scalars are atttached to the Width(1) and Height(1) slots. No value is connected to the Out(1) slot. A solid white hexagon is displayed in the lower part of the node.](images/PolygonNodeThumb.png) | | Generates an ellipse shape based on input UV at the size specified by inputs Width and Height. | Generates a regular polygon shape based on input UV at the size specified by inputs Width and Height. The polygon's amount of sides is determined by input Sides. | | [**Rectangle**](Rectangle-Node.md) | [**Rounded Rectangle**](Rounded-Rectangle-Node.md) | -| ![Image](images/RectangleNodeThumb.png) | ![Image](images/RoundedRectangleNodeThumb.png) | +| ![A Rectangle node. A UV0 value is connected to the UV(2) slot. A 0.5 scalar is attached to the Width(1) slot. A 0.5 scalar is attached to the Height(1) slot. No value is connected to the Out(1) slot. The Fastest option is selected in a drop-down. A solid white square is displayed in the lower part of the node.](images/RectangleNodeThumb.png) | ![A Rounded Rectangle node. A UV0 value is connected to the UV(2) slot. 0.5 scalars are attached to the Width(1), Height(1), and Radius(1) slots. No value is connected to the Out(1) slot. A solid white rounded square is displayed in the lower part of the node.](images/RoundedRectangleNodeThumb.png) | | Generates a rectangle shape based on input UV at the size specified by inputs Width and Height. | Generates a rounded rectangle shape based on input UV at the size specified by inputs Width and Height. The input Radius defines the radius of each corner. | -| [Rounded Polygon](Rounded-Polygon-Node.md) || -|![](images/RoundedPolygonNodeThumb.png) || +| [](Rounded-Polygon-Node.md) || +|![A Rounded Polygon node. A UV0 value is connected to the UV(2) slot. 0.5 scalars are atttached to the Width(1) and Height(1) slots. A 5 scalar is attached to the Sides(1) slot. A 0.3 scalar is attached to the Roudness(1) slot. No value is connected to the Out(1) slot. A solid white rounded pentagon is displayed in the lower part of the node.](images/RoundedPolygonNodeThumb.png) || | Generates a rounded polygon shape based on input UV at the size specified by inputs Width and Height. The input Sides specifies the number of sides, and the input Roundness defines the roundness of each corner. || diff --git a/Packages/com.unity.shadergraph/Documentation~/Sample-Texture-2D-Node.md b/Packages/com.unity.shadergraph/Documentation~/Sample-Texture-2D-Node.md index aade64504b2..74287e70811 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Sample-Texture-2D-Node.md +++ b/Packages/com.unity.shadergraph/Documentation~/Sample-Texture-2D-Node.md @@ -2,7 +2,7 @@ The Sample Texture 2D node samples a **Texture 2D** asset and returns a **Vector 4** color value. You can specify the **UV** coordinates for a texture sample and use a [Sampler State node](Sampler-State-Node.md) to define a specific Sampler State. -A Sample Texture 2D node can also sample a normal map. For more information, see the [Controls](#controls) section, or [Normal map (Bump mapping)](https://docs.unity3d.com/Manual/StandardShaderMaterialParameterNormalMap.html) in the Unity User manual. +A Sample Texture 2D node can also sample a normal map. For more information, refer to the [Controls](#controls) section, or [Normal map (Bump mapping)](https://docs.unity3d.com/Manual/StandardShaderMaterialParameterNormalMap.html) in the Unity User manual. [!include[nodes-sample-errors](./snippets/sample-nodes/nodes-sample-errors.md)] @@ -36,43 +36,14 @@ The Sample Texture 2D [!include[nodes-inputs](./snippets/nodes-inputs.md)] The Sample Texture 2D [!include[nodes-controls](./snippets/nodes-controls.md)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      NameTypeDescription
                      TypeDropdownSelect whether the texture is a Texture asset or a normal map.
                      DefaultThe texture is a Texture asset.
                      NormalThe texture is a normal map.
                      SpaceDropdownWhen the node's Type is Normal to use a texture as a normal map, choose the Space for the normal map.
                      TangentUse a Tangent normal map whenever the mesh for a geometry needs to deform or change, such as when animating a character. With Tangent Space, the normal map's normals are relative to the existing vertex normals of any geometry rendered with your Shader Graph. Your Shader Graph only adjusts the vertex normals and not override them.
                      ObjectUse an Object normal map whenever the mesh for a geometry is static and doesn't deform. With Object Space, the normal map's normals are explicit and override the normals of any geometry rendered with your Shader Graph. Because a static mesh's normals never change, an Object normal map also maintains consistent lighting across different levels of detail (LODs).
                      For more information about normal maps, see Normal map (Bump mapping) in the User manual.
                      +| **Name** | **Type** | **Subtype** | **Description** | +|----------|--------------|-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Type** | **Dropdown** | N/A | Select whether the texture is a Texture asset or a normal map. | +| N/A | N/A | **Default** | The texture is a Texture asset. | +| N/A | N/A | **Normal** | The texture is a normal map. | +| Space | Dropdown | N/A | Select whether the texture is a Texture asset or a normal map. | +| N/A | N/A | **Tangent** | Use a Tangent normal map whenever the mesh for a geometry needs to deform or change, such as when animating a character. With Tangent Space, the normal map's normals are relative to the existing vertex normals of any geometry rendered with your Shader Graph. Your Shader Graph only adjusts the vertex normals and not override them. | +| N/A | N/A | **Object** | Use an Object normal map whenever the mesh for a geometry is static and doesn't deform. With Object Space, the normal map's normals are explicit and override the normals of any geometry rendered with your Shader Graph. Because a static mesh's normals never change, an Object normal map also maintains consistent lighting across different levels of detail (LODs).
                      For more information about normal maps, refer to Normal map (Bump mapping) in the User manual. | ## Additional node settings diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders-Examples.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders-Examples.md index 54bd2f1a785..bd941929dc3 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders-Examples.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders-Examples.md @@ -73,7 +73,7 @@ Library Subgraph Nodes used in this sample: - Vignette ## Buttons -![](images/UITools-buttons.png) +![User interface component with three distinct buttons labeled Button and a circular person icon. From left to right: a blue capsule-shaped button, a circular person icon, a dark blue rhombus button, and a green rounded rectangle button. ](images/UITools-buttons.png) These examples show how to create buttons of various visual styles. Each button has exposed parameters that control the button’s visual states - selected, pressed, and active. In the example scene, you can take a look at how these material parameters are connected to the button’s state events to drive the appearance of the button. Many shape elements of the buttons use the AntiAliasing node which converts SDFs and gradients to perfectly anti-aliased shapes, regardless of scale or camera position. For more details on how to accomplish this, refer to [How to create a resolution-independent shape](Shader-Graph-Sample-UGUI-Shaders-How-tos-Res-indepenent.md). @@ -120,7 +120,8 @@ Library Subgraph Nodes used in this sample: - AntiAliasing ## Indicators -![](images/UITools-meters2.png) +![From left to right: A rounded, 3D capsule split into orange and black halves, a circular icon featuring a person symbol, framed by a blue arc, a transparent sphere partially filled with glowing red liquid, a gradient progress bar fading from pink to purple and blue.](images/UITools-meters2.png) + These UI elements indicate things to the player visually such as health level, ammo count, shield power, etc. All of them have an exposed material parameter called “Health” that drives the level of the meter. Using a script, you can connect this parameter to any value in your project to indicate its level to the player. ### AquaMeter @@ -172,7 +173,7 @@ Library Subgraph Nodes used in this sample: - HistogramScan ## Progress Bars -![](images/UITools-meters.png) +![From left to right: A circular segmented ring with a gradient transitioning from orange and brown to dark purple; a gradient bar smoothly blending from dark purple through pink, orange, yellow, to light gray; a spinner with circular segments fading from light to dark to simulate motion; and another spinner featuring green dots forming an incomplete curved circle, with larger dots clustered at the bottom-right and smaller ones tapering toward the top-left.](images/UITools-meters.png) ### FancyLoading This is a circle that’s made of circles. Each circle starts large and then gets smaller over time and the effect is offset so it happens in a wave pattern. The larger circle pattern also appears to move and change perspective over time as if it were tilting around in a 3D space. These effects are all achieved by chaining together various nodes from the Subgraph Library. @@ -219,4 +220,4 @@ Library Subgraph Nodes used in this sample: - LinearTime - GridTiles - Pill -- AntiAliasing \ No newline at end of file +- AntiAliasing diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders-Subgraph-nodes.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders-Subgraph-nodes.md index 3c9b56c5c8b..9cc889071b6 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders-Subgraph-nodes.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Sample-UGUI-Shaders-Subgraph-nodes.md @@ -12,7 +12,7 @@ The subgraphs are broken into the following categories: - **SDFs** - Signed Distance Field shapes are the basis for UI elements. The value of each pixel in an SDF represents the distance to the edge of the shape. You can use the SDF data to create resolution-independent shapes that are either sharp or blurry. Shapes in the set include circle, hexagon, pill, rectangle, star, and triangle. This collection also contains operators for combining SDF shapes. - **Time** - These nodes output time in various forms - looping, mirroredm, sine wave, etc. - **UV** - These nodes manipulate UV coordinates including move, scale, tilt, mirror, invert, and more. Shapes and elements can be transformed by adjusting their UV coordinates with these nodes. - ![](images/UITools-subgraphs.png) + ![A collection of graphical nodes within a node-based visual editor, grouped into labeled sections—Gradients, Helpers, Patterns, SDFs, Time, and UV. Each node features preview images and labeled inputs/outputs, handling elements like color, shape, noise, and UV manipulation.](images/UITools-subgraphs.png) ## Inputs @@ -348,4 +348,4 @@ Usage Examples: Distorts the UV coordinates in a wave pattern. The strength and size of the waves can be controlled with the Amplitude and Frequency inputs. Usage Example: -- Examples/Indicators/FantasyMeter \ No newline at end of file +- Examples/Indicators/FantasyMeter 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 38627e6fd2c..da576e96f05 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,5 +1,5 @@ # UGUI Shaders -![](images/UIToolsSample.png) +![The Shader Graph UGUI Shaders: A collection of Shader Graph subgraphs that serve as building blocks for building user interface elements.](images/UIToolsSample.png) 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. @@ -32,4 +32,4 @@ We have two main objectives with this sample set: * [How to create a resolution-independent shape](Shader-Graph-Sample-UGUI-Shaders-How-tos-Res-indepenent.md) * [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) \ No newline at end of file +* [Notes on performance](Shader-Graph-Sample-UGUI-Shaders-Notes-on-performance.md) diff --git a/Packages/com.unity.shadergraph/Documentation~/Sub-graph.md b/Packages/com.unity.shadergraph/Documentation~/Sub-graph.md index dd26fd69036..889ad561e06 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Sub-graph.md +++ b/Packages/com.unity.shadergraph/Documentation~/Sub-graph.md @@ -11,8 +11,6 @@ For information about the components of a Sub Graph, see [Sub Graph Asset](Sub-g ## Output Node -![](images/SubGraph-Output-Node.png) - The Output Node defines the output ports of a [Sub Graph Node](Sub-graph-Node.md) when you reference the Sub Graph from inside another graph. To add and remove ports, use the [Custom Port Menu](Custom-Port-Menu.md) in the **Node Settings** tab of the [Graph Inspector](Internal-Inspector.md) by clicking on the Sub Graph Output node. The preview used for Sub Graphs is determined by the first port of the Output Node. Valid [Data Types](Data-Types.md) for the first port are `Float`, `Vector 2`, `Vector 3`, `Vector 4`, `Matrix2`, `Matrix3`, `Matrix4`, and `Boolean`. Any other data type will produce an error in the preview shader and the Sub Graph will become invalid. diff --git a/Packages/com.unity.shadergraph/Documentation~/images/Color-Mode-User-Defined.png b/Packages/com.unity.shadergraph/Documentation~/images/Color-Mode-User-Defined.png deleted file mode 100644 index 6c35e6ebbb8..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/Color-Mode-User-Defined.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/CustomRenderTexture-Animation.gif b/Packages/com.unity.shadergraph/Documentation~/images/CustomRenderTexture-Animation.gif deleted file mode 100644 index 89b82aa1f1c..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/CustomRenderTexture-Animation.gif and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/CustomRenderTexture-Animation.mp4 b/Packages/com.unity.shadergraph/Documentation~/images/CustomRenderTexture-Animation.mp4 new file mode 100644 index 00000000000..d47f196e231 Binary files /dev/null and b/Packages/com.unity.shadergraph/Documentation~/images/CustomRenderTexture-Animation.mp4 differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/CustomRenderTextureInspector.png b/Packages/com.unity.shadergraph/Documentation~/images/CustomRenderTextureInspector.png deleted file mode 100644 index 12ef1a0e482..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/CustomRenderTextureInspector.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/Shader-Graph-Toolbar.png b/Packages/com.unity.shadergraph/Documentation~/images/Shader-Graph-Toolbar.png deleted file mode 100644 index 4c28c556b94..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/Shader-Graph-Toolbar.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/SubGraph-Output-Node.png b/Packages/com.unity.shadergraph/Documentation~/images/SubGraph-Output-Node.png deleted file mode 100644 index aac5d0f35e6..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/SubGraph-Output-Node.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/keywords_boolean.png b/Packages/com.unity.shadergraph/Documentation~/images/keywords_boolean.png deleted file mode 100644 index deec8c5ac46..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/keywords_boolean.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/images/keywords_built-in.png b/Packages/com.unity.shadergraph/Documentation~/images/keywords_built-in.png deleted file mode 100644 index 9292e5b197e..00000000000 Binary files a/Packages/com.unity.shadergraph/Documentation~/images/keywords_built-in.png and /dev/null differ diff --git a/Packages/com.unity.shadergraph/Documentation~/snippets/nodes-compatibility-all.md b/Packages/com.unity.shadergraph/Documentation~/snippets/nodes-compatibility-all.md index f7f0082a610..20382777710 100644 --- a/Packages/com.unity.shadergraph/Documentation~/snippets/nodes-compatibility-all.md +++ b/Packages/com.unity.shadergraph/Documentation~/snippets/nodes-compatibility-all.md @@ -4,19 +4,6 @@ title: nodes-compatibility-all node is supported on the following render pipelines: - - - - - - - - - - - - - - - -
                      Built-In Render PipelineUniversal Render Pipeline (URP)High Definition Render Pipeline (HDRP)
                      YesYesYes
                      +| Built-In Render Pipeline | Universal Render Pipeline (URP) | High Definition Render Pipeline (HDRP) | +|--------------------------|---------------------------------|----------------------------------------| +| Yes | Yes | Yes | diff --git a/Packages/com.unity.shadergraph/Documentation~/snippets/sample-nodes/nodes-sample-mip-bias-sample-mode-table.md b/Packages/com.unity.shadergraph/Documentation~/snippets/sample-nodes/nodes-sample-mip-bias-sample-mode-table.md index 83261725ce8..1eb6b4a365e 100644 --- a/Packages/com.unity.shadergraph/Documentation~/snippets/sample-nodes/nodes-sample-mip-bias-sample-mode-table.md +++ b/Packages/com.unity.shadergraph/Documentation~/snippets/sample-nodes/nodes-sample-mip-bias-sample-mode-table.md @@ -2,48 +2,13 @@ title: nodes-sample-mip-bias-sample-mode-table.md --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      NameTypeDescription
                      Use Global Mip BiasToggleEnable Use Global Mip Bias to use the render pipeline's Global Mip Bias. This bias adjusts the percentage of texture information taken from a specific mip when sampling. For more information on mip bias, see Mipmaps introduction in the Unity User Manual.
                      EnabledShader Graph uses the render pipeline's Global Mip Bias to adjust the texture information taken when sampling.
                      DisabledShader Graph doesn't use the render pipeline's Global Mip Bias to adjust texture information when sampling.
                      Mip Sampling ModeDropdownChoose the sampling mode to use to calculate the mip level of the texture.
                      StandardThe render pipeline calculates and automatically selects the mip for the texture.
                      LODThe render pipeline lets you set an explicit mip for the texture on the node. The texture will always use this mip, regardless of the DDX or DDY calculations between pixels. Set the Mip Sampling Mode to LOD to connect the node to a Block node in the Vertex Context. For more information on Block nodes and Contexts, see Master Stack.
                      GradientThe render pipeline lets you set the DDX and DDY values to use for its mip calculation, instead of using the values calculated from the texture's UV coordinates. For more information on DDX and DDY values, see Mipmaps introduction in the User Manual.
                      BiasThe render pipeline lets you set a bias to adjust the calculated mip for a texture up or down. Negative values bias the mip to a higher resolution. Positive values bias the mip to a lower resolution. The render pipeline can add this value to the value of the Global Mip Bias, or use this value instead of its Global Mip Bias. For more information on mip bias, see Mipmaps introduction in the User Manual.
                      +| **Name** | **Type** | **Option** | **Description** | +|-------------------------|----------|--------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Use Global Mip Bias** | Toggle | N/A | Enable Use Global Mip Bias to use the render pipeline's Global Mip Bias. This bias adjusts the percentage of texture information taken from a specific mip when sampling. For more information on mip bias, refer to Mipmaps introduction in the Unity User Manual. | +| N/A | N/A | **Enabled** | Shader Graph uses the render pipeline's Global Mip Bias to adjust the texture information taken when sampling. | +| N/A | N/A | **Disabled** | Shader Graph doesn't use the render pipeline's Global Mip Bias to adjust texture information when sampling. | +| **Mip Sampling Mode** | Dropdown | N/A | Choose the sampling mode to use to calculate the mip level of the texture. | +| N/A | N/A | **Standard** | The render pipeline calculates and automatically selects the mip for the texture. | +| N/A | N/A | **LOD** | The render pipeline lets you set an explicit mip for the texture on the node. The texture will always use this mip, regardless of the DDX or DDY calculations between pixels. Set the Mip Sampling Mode to LOD to connect the node to a Block node in the Vertex Context. For more information on Block nodes and Contexts, refer to Master Stack. | +| N/A | N/A | **Gradient** | The render pipeline lets you set the DDX and DDY values to use for its mip calculation, instead of using the values calculated from the texture's UV coordinates. For more information on DDX and DDY values, refer to Mipmaps introduction in the User Manual. | +| N/A | N/A | **Bias** | The render pipeline lets you set a bias to adjust the calculated mip for a texture up or down. Negative values bias the mip to a higher resolution. Positive values bias the mip to a lower resolution. The render pipeline can add this value to the value of the Global Mip Bias, or use this value instead of its Global Mip Bias. For more information on mip bias, refer to Mipmaps introduction in the User Manual. | diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-Collision-LandingPage.md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-Collision-LandingPage.md index a412b49a17d..f74a87b1b73 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Block-Collision-LandingPage.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-Collision-LandingPage.md @@ -6,6 +6,8 @@ Explore the properties of Collision Blocks to configure how particles collide wi |-|-| | [Collision Shape](Block-CollisionShape.md) | Explore the properties of the Collision Shape Block. | | [Collision Depth Buffer](Block-CollideWithDepthBuffer.md) | Explore the properties of the Collision Depth Buffer Block. | +| [Kill Shape](Block-KillShape.md) | Explore the properties of the Kill Shape Block. | +| [Trigger Shape](Block-TriggerShape.md) | Explore the properties of the Trigger Shape Block. | ## Additional resources diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-CollisionShape.md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-CollisionShape.md index 8bc2cf06bf2..2031c731e20 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Block-CollisionShape.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-CollisionShape.md @@ -6,6 +6,11 @@ The Collision Shape Block defines a shape that particles collide with. ![A cascade of particles falls onto the upper surface of a cube and cascades down the side.](Images/Block-CollideWithAABoxMain.png) ![A car-shaped signed distance field made up of particles.](Images/Block-CollideWithSDFMain.png) + +If you change the **Behavior** property of the block, the Block changes to the following: + +- A [Kill Shape Block](Block-KillShape.md) if you set **Behavior** to **Kill**. +- A [Trigger Shape Block](Block-TriggerShape.md) if you set **Behavior** to **None**. ## Block compatibility @@ -20,7 +25,7 @@ To add a Collision Shape Block to your graph, [open the menu for adding a graph | **Property** | **Type** | **Description** | |-|-|-| -| **Shape** | Enum | Sets the shape for particles to collide with. For more information, refer to the [**Shape dropdown**](#shape-dropdown) section. | +| **Shape** | Enum | Sets the shape for particles to collide with. For more information, refer to the [Shape dropdown](#shape-dropdown) section. | | **Mode** | Enum | Specifies how particles interact with the collider. The options are:
                      • Solid: Stops particles entering the collider. If you set Shape to Plane, particles collide with the plane when they travel away from the normal of the plane.
                      • Inverted: Stops particles leaving the shape volume. If you set Shape to Plane, particles collide with the plane when they travel in the same direction as the normal of the plane.
                      | | **Radius Mode** | Enum | Sets the collision radius of the particles. The options are:
                      • None: Sets the collision radius to zero.
                      • From Size: Sets the collision radius for each particle to its individual size.
                      • Custom: Sets the collision radius to the value of **Radius** in the [Block properties](#block-properties).
                      | | **Collision Attributes** | Enum | Specifies whether Unity stores data in the collision attributes of particles. The options are:
                      • No Write: Doesn't write or store collision attributes.
                      • Write Punctual Contact only: Updates the collision attribute only when a specific, single-point collision occurs. This prevents Unity updating the collision attributes repeatedly when a particle slides along a collision shape. To increase or decrease how much a particle needs to bounce off a shape to cause a collision response, enable **Override Bounce Threshold** in the Inspector window.
                      • Write Always: Updates the collision attribute every time a collision occurs.
                      | @@ -32,7 +37,7 @@ To add a Collision Shape Block to your graph, [open the menu for adding a graph | **Shape** | **Description** | |-|-| | **Sphere**| Sets the collision shape as a spherical volume. | -| **Oriented Box** | Sets the collision shape as an axis-aligned box volume. | +| **Oriented Box** | Sets the collision shape as a box volume. | | **Cone**| Sets the collision shape as truncated cone volume.| | **Plane** | Sets the collision shape as a flat plane with infinite length and width. | | **Signed Distance Field** | Sets the collision shape as a signed distance field (SDF), so you can create precise complex collision with an existing asset. To generate a signed distance field asset, use the [SDF Bake Tool](sdf-bake-tool.md) or an external digital content creation (DCC) tool. | @@ -42,7 +47,7 @@ To add a Collision Shape Block to your graph, [open the menu for adding a graph | **Input** | **Type** | **Description**| |-|-|-| | **Sphere**| [Sphere](Type-Sphere.md) | Sets the sphere that particles collide with. This property is available only if you set **Shape** to **Sphere**. | -| **Box** | [AABox](Type-AABox.md) | Sets the axis-aligned box that particles collide with. This property is available only if you set **Shape** to **Box**. | +| **Box** | [OrientedBox](Type-OrientedBox.md) | Sets the box that particles collide with. This property is available only if you set **Shape** to **Box**. | | **Cone**| [Cone](Type-Cone.md) | Sets the cone that particles collide with. This property is available only if you set **Shape** to **Cone**. | | **Plane** | [Plane](Type-Plane.md) | Sets the plane that particles collide with. This property is available only if you set **Shape** to **Plane**. | | **Distance Field**| Signed distance field | Sets the signed distance field (SDF) that particles collide with. This property is available only if you set **Shape** to **Signed Distance Field**. | @@ -58,6 +63,6 @@ To add a Collision Shape Block to your graph, [open the menu for adding a graph | **Property** | **Type** | **Description** | |-|-|-| -| **Behavior** | Enum | Specifies how particles behave when they collide with the shape. The options are:
                      • None: Doesn't create a collision response. To detect when particles enter or leave the shape, use a Trigger Event On Collide Block.
                      • Collision: Causes particles to bounce off the shape.
                      • Kill: Destroys a particle when it collides with the shape.
                      | +| **Behavior** | Enum | Specifies how particles behave when they collide with the shape. The options are:
                      • None: Changes the Block to a Trigger Shape Block, so particles don't bounce off the shape.
                      • Collision: Causes particles to bounce off the shape. This is the default in a Collision Shape Block.
                      • Kill: Changes the Block to a [Kill Shape Block](Block-KillShape.md), so particles are destroyed when they collide with the shape.
                      | | **Write Rough Normal** | Boolean | When enabled, Unity writes the version of the normal with roughness applied to the Collision Event Normal attribute. | | **Override Bounce Threshold** | Boolean | Makes the **Bounce Speed Threshold** setting available in the Block properties. | diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-FlipbookPlayer.md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-FlipbookPlayer.md index 491c750650a..f37ad385940 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Block-FlipbookPlayer.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-FlipbookPlayer.md @@ -6,7 +6,7 @@ The **Flipbook Player** Block creates animated particles using flipbook textures Flipbook textures are texture sheets that consist of multiple smaller sub-images. To produce an animation, Unity steps through the sub-images in a particular order. -![](Images/Block-FlipbookPlayerExampleLHS.png)![img](Images/Block-FlipbookPlayerExampleRHS.gif) +![Cloud-shaped blocks representing stages in a sprite sheet.](Images/Block-FlipbookPlayerExampleLHS.png) To generate a Flipbook, use external digital content creation tools. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-KillShape.md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-KillShape.md new file mode 100644 index 00000000000..5cd2cce008f --- /dev/null +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-KillShape.md @@ -0,0 +1,55 @@ +# Kill Shape Block reference + +The Kill Shape Block defines a shape that destroys particles that collide with it. The Block destroys particles by setting their `alive` attribute to `false`. + +If you change the **Behavior** property of the block, the Block changes to the following: + +- A [Collision Shape Block](Block-CollisionShape.md) if you set **Behavior** to **Collision**. +- A [Trigger Shape Block](Block-TriggerShape.md) if you set **Behavior** to **None**. + +## Block compatibility + +You can add the Kill Shape Block to the following Contexts: + +- [Initialize](Context-Initialize.md) +- [Update](Context-Update.md) + +To add a Kill Shape Block to your graph, open the graph element menu as described in [Adding graph elements](VisualEffectGraphWindow.md#adding-graph-elements) then select **Collision** > **Kill Shape**. + +## Block settings + +| **Property** | **Type** | **Description** | +|-|-|-| +| **Shape** | Enum | Sets the shape for particles to collide with. For more information, refer to the [Shape dropdown](#shape-dropdown) section. | +| **Mode** | Enum | Specifies how particles interact with the collider. The options are:
                      • Solid: Destroys particles when they enter the shape. If you set Shape to Plane, particles collide with the plane when they travel away from the normal of the plane.
                      • Inverted: Destroys particles when they leave the shape. If you set Shape to Plane, particles collide with the plane when they travel in the same direction as the normal of the plane.
                      | +| **Radius Mode** | Enum | Sets the collision radius of the particles. The options are:
                      • None: Sets the collision radius to zero.
                      • From Size: Sets the collision radius for each particle to its individual size.
                      • Custom: Sets the collision radius to the value of **Radius** in the [Block properties](#block-properties).
                      | +| **Collision Attributes** | Enum | Specifies whether Unity stores data in the collision attributes of particles. The options are:
                      • No Write: Doesn't write or store collision attributes.
                      • Write Punctual Contact only: Updates the collision attribute only when a specific, single-point collision occurs. This setting has no effect in a Kill Shape Block.
                      • Write Always: Updates the collision attribute every time a collision occurs.
                      | + + +### Shape dropdown + +| **Shape** | **Description** | +|-|-| +| **Sphere**| Sets the collision shape as a spherical volume. | +| **Oriented Box** | Sets the collision shape as a box volume. | +| **Cone**| Sets the collision shape as truncated cone volume.| +| **Plane** | Sets the collision shape as a flat plane with infinite length and width. | +| **Signed Distance Field** | Sets the collision shape as a signed distance field (SDF), so you can create precise complex collision with an existing asset. To generate a signed distance field asset, use the [SDF Bake Tool](sdf-bake-tool.md) or an external digital content creation (DCC) tool. | + +## Block properties + +| **Input** | **Type** | **Description**| +|-|-|-| +| **Sphere**| [Sphere](Type-Sphere.md) | Sets the sphere that particles collide with. This property is available only if you set **Shape** to **Sphere**. | +| **Box** | [OrientedBox](Type-OrientedBox.md) | Sets the box that particles collide with. This property is available only if you set **Shape** to **Box**. | +| **Cone**| [Cone](Type-Cone.md) | Sets the cone that particles collide with. This property is available only if you set **Shape** to **Cone**. | +| **Plane** | [Plane](Type-Plane.md) | Sets the plane that particles collide with. This property is available only if you set **Shape** to **Plane**. | +| **Distance Field**| Signed distance field | Sets the signed distance field (SDF) that particles collide with. This property is available only if you set **Shape** to **Signed Distance Field**. | +| **Field Transform** | [Transform](Type-Transform.md) | Sets the position, size, and rotation of the **Distance Field**. This property is available only if you set **Shape** to **Signed Distance Field**. | +| **Radius**| Float | Sets the collision radius of the particles. This property is available only if you set **Radius Mode** to **Custom**. | + +## Inspector window properties + +| **Property** | **Type** | **Description** | +|-|-|-| +| **Behavior** | Enum | Specifies how particles behave when they collide with the shape. The options are:
                      • None: Changes the Block to a Trigger Shape Block, so particles don't bounce off the shape.
                      • Collision: Changes the Block to a [Collision Shape Block](Block-CollisionShape.md), so particles bounce off the shape.
                      • Kill: Destroys a particle when it collides with the shape. This is the default in a Kill Shape Block.
                      | diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Block-TriggerShape.md b/Packages/com.unity.visualeffectgraph/Documentation~/Block-TriggerShape.md new file mode 100644 index 00000000000..5eaf5600069 --- /dev/null +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Block-TriggerShape.md @@ -0,0 +1,55 @@ +# Trigger Shape Block reference + +The Trigger Shape Block defines a shape that detects particle collisions without physically interacting with the particles. Instead of blocking or altering particle movement, it triggers specific events when particles collide with it. You can use this block in combination with a [Trigger Event Block](Block-Trigger-Event.md) set to **Collide** mode to spawn child particles or perform other actions. + +If you change the **Behavior** property of the block, the Block changes to the following: + +- A [Collision Shape Block](Block-CollisionShape.md) if you set **Behavior** to **Collision**. +- A [Kill Shape Block](Block-KillShape.md) if you set **Behavior** to **Kill**. + +## Block compatibility + +You can add the Trigger Shape Block to the following Contexts: + +- [Initialize](Context-Initialize.md) +- [Update](Context-Update.md) + +To add a Trigger Shape Block to your graph, [open the menu for adding a graph element](VisualEffectGraphWindow.md#adding-graph-elements) then select **Collision** > **Trigger Shape**. + +## Block settings + +| **Property** | **Type** | **Description** | +|-|-|-| +| **Shape** | Enum | Sets the shape for particles to collide with. For more information, refer to the [Shape dropdown](#shape-dropdown) section. | +| **Mode** | Enum | Specifies how particles interact with the collider. The options are:
                      • Solid: Destroys particles when they enter the shape. If you set Shape to Plane, particles collide with the plane when they travel away from the normal of the plane.
                      • Inverted: Destroys particles when they leave the shape. If you set Shape to Plane, particles collide with the plane when they travel in the same direction as the normal of the plane.
                      | +| **Radius Mode** | Enum | Sets the collision radius of the particles. The options are:
                      • None: Sets the collision radius to zero.
                      • From Size: Sets the collision radius for each particle to its individual size.
                      • Custom: Sets the collision radius to the value of **Radius** in the [Block properties](#block-properties).
                      | +| **Collision Attributes** | Enum | Specifies whether Unity stores data in the collision attributes of particles. The options are:
                      • No Write: Doesn't write or store collision attributes.
                      • Write Punctual Contact only: Updates the collision attribute only when a specific, single-point collision occurs. This setting has no effect in a Trigger Shape Block.
                      • Write Always: Updates the collision attribute every time a collision occurs.
                      | + + +### Shape dropdown + +| **Shape** | **Description** | +|-|-| +| **Sphere**| Sets the collision shape as a spherical volume. | +| **Oriented Box** | Sets the collision shape as a box volume. | +| **Cone**| Sets the collision shape as truncated cone volume.| +| **Plane** | Sets the collision shape as a flat plane with infinite length and width. | +| **Signed Distance Field** | Sets the collision shape as a signed distance field (SDF), so you can create precise complex collision with an existing asset. To generate a signed distance field asset, use the [SDF Bake Tool](sdf-bake-tool.md) or an external digital content creation (DCC) tool. | + +## Block properties + +| **Input** | **Type** | **Description**| +|-|-|-| +| **Sphere**| [Sphere](Type-Sphere.md) | Sets the sphere that particles collide with. This property is available only if you set **Shape** to **Sphere**. | +| **Box** | [OrientedBox](Type-OrientedBox.md) | Sets the box that particles collide with. This property is available only if you set **Shape** to **Box**. | +| **Cone**| [Cone](Type-Cone.md) | Sets the cone that particles collide with. This property is available only if you set **Shape** to **Cone**. | +| **Plane** | [Plane](Type-Plane.md) | Sets the plane that particles collide with. This property is available only if you set **Shape** to **Plane**. | +| **Distance Field**| Signed distance field | Sets the signed distance field (SDF) that particles collide with. This property is available only if you set **Shape** to **Signed Distance Field**. | +| **Field Transform** | [Transform](Type-Transform.md) | Sets the position, size, and rotation of the **Distance Field**. This property is available only if you set **Shape** to **Signed Distance Field**. | +| **Radius**| Float | Sets the collision radius of the particles. This property is available only if you set **Radius Mode** to **Custom**. | + +## Inspector window properties + +| **Property** | **Type** | **Description** | +|-|-|-| +| **Behavior** | Enum | Specifies how particles behave when they collide with the shape. The options are:
                      • None: Changes the Block to a Trigger Shape Block, so particles don't bounce off the shape.
                      • Collision: Changes the Block to a [Collision Shape Block](Block-CollisionShape.md), so particles bounce off the shape.
                      • Kill: Destroys a particle when it collides with the shape.
                      | diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PerlinCurlNoise.md b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PerlinCurlNoise.md index 5d520110a21..41840f8b97f 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PerlinCurlNoise.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Operator-PerlinCurlNoise.md @@ -28,4 +28,4 @@ A good use case for Curl Noise is emulating fluid or gas simulation, without hav | **Output** | **Type** | **Description** | | ---------- | -------- | ---------------------------------------------- | -| **Noise** | Float | The noise value at the coordinate you specify. | +| **Noise** | Float, Vector2, or Vector3 | The noise value at the coordinate you specify. | diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/Reference-Attributes.md b/Packages/com.unity.visualeffectgraph/Documentation~/Reference-Attributes.md index 97d3e90a608..bc43c2fb643 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/Reference-Attributes.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/Reference-Attributes.md @@ -57,6 +57,18 @@ System Attributes provide information about system values. These attributes are | `spawnCount` | float | A `SpawnEvent` attribute that describes how many particles were spawned this frame. You can use `spawnCount` as a [Source Attribute](Attributes.md) in a Spawn context. `spawnCount` is a floating point number so that Unity can accumulate a relative `spawnCount` at the spawn context stage in the [Constant Rate](Block-ConstantRate.md) block.| 0.0 | | `spawnTime` | float | A SpawnEvent attribute available as Source Attribute in Spawn Contexts, that contains a Spawn Context internal time (when exported using a [Set Spawn Time](Block-SetSpawnTime.md) Spawn Block) | 0.0 | | `particleIndexInStrip` | uint | The index in the Particle Strip Ring Buffer where is located this element. | 0 | + +### Collision Attributes + +Collision Attributes provide information about collisions between the outer shape of a particle and a surface. These attributes are available as **Read Only**, which means you can only read them using the `Get ` Operator. + +| Name | Type | Description | +|--------------------------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `collisionEventCount` | uint | Outputs the number of times a particle has hit a surface since it was spawned. | +| `collisionEventNormal` | Vector3 | Outputs the surface normal at the point of impact at this frame. Outputs (0,0,0) if no collision occurs.

                      To generate random normal values to simulate collision with a [rough surface](Block-CollisionShape.md), enable **Rough Normal** in the Collision Shape block and **Write Rough Normal** in the Collision Shape block's Inspector window, outputs the unrandomized normal. | +| `collisionEventPosition` | Vector3 | Outputs the coordinates of the point where the particle hits the surface at this frame. Outputs (0,0,0) if no collision occurs. | +| `hasCollisionEvent` | bool | Outputs `true` when the particle hits a surface. Only available in the [Update](Context-Update.md) context. | + ## Attribute Usage and Implicit Behavior Some attributes combinations are used in various implicit cases during simulation and rendering. Here is a list of the usages and an explanation of their relationships. diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/TableOfContents.md b/Packages/com.unity.visualeffectgraph/Documentation~/TableOfContents.md index 265cf862e93..06fada19853 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/TableOfContents.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/TableOfContents.md @@ -86,6 +86,8 @@ * [Collision](Block-Collision-LandingPage.md) * [Collision Shape](Block-CollisionShape.md) * [Collision Depth Buffer](Block-CollideWithDepthBuffer.md) + * [Kill Shape](Block-KillShape.md) + * [Trigger Shape](Block-TriggerShape.md) * Flipbook * [Flipbook Player](Block-FlipbookPlayer.md) * Force @@ -101,9 +103,6 @@ * Implicit * [Integration : Update Position](Block-UpdatePosition.md) * [Integration : Update Rotation](Block-UpdateRotation.md) - * Kill - * [Kill (AABox)](Block-Kill(AABox).md) - * [Kill (Sphere)](Block-Kill(Sphere).md) * Orientation * [Connect Target](Block-ConnectTarget.md) * [Orient](Block-Orient.md) diff --git a/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectComponent.md b/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectComponent.md index 267766be856..06eb1be13ba 100644 --- a/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectComponent.md +++ b/Packages/com.unity.visualeffectgraph/Documentation~/VisualEffectComponent.md @@ -1,6 +1,6 @@ # Visual Effect (Component) -The Visual Effect Component creates an instance of a Visual Effect in the scene, based on a Visual Effect Graph Asset. It controls how the effect plays, renders and let the user customize the instance by editing [Exposed Properties](Blackboard.md#creating-properties). +The Visual Effect Component creates an instance of a Visual Effect in the scene, based on a Visual Effect Graph Asset. It controls how the effect plays, renders and let the user customize the instance by editing [Exposed Properties](Blackboard.md). ## How to create a Visual Effect diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/ProjectSettings/ProjectSettings.asset b/Tests/SRPTests/Projects/SRP_SmokeTest/ProjectSettings/ProjectSettings.asset index e0b7625f630..cf34fd7e928 100644 --- a/Tests/SRPTests/Projects/SRP_SmokeTest/ProjectSettings/ProjectSettings.asset +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/ProjectSettings/ProjectSettings.asset @@ -656,7 +656,7 @@ PlayerSettings: PS4: 1 PS5: 1 QNX: 1 - ReservedCFE: 1 + Switch2: 1 VisionOS: 1 WebGL: 1 Windows Store Apps: 1 diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/TestFilters/TestCaseFilters.asset b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/TestFilters/TestCaseFilters.asset index 1d32eb775fd..f2b678283af 100644 --- a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/TestFilters/TestCaseFilters.asset +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/TestFilters/TestCaseFilters.asset @@ -175,3 +175,13 @@ MonoBehaviour: XrSdk: StereoModes: 0 Reason: Test is unstable + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: ef89632b434b9c644a88f827ec7b029d, type: 3} + ColorSpace: -1 + BuildPlatform: 19 + GraphicsDevice: 2 + Architecture: 0 + XrSdk: + StereoModes: 0 + Reason: Test is unstable diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/CommonAssets/UniversalRPAsset.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/CommonAssets/UniversalRPAsset.asset index 429bcb4545c..a5549566925 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/CommonAssets/UniversalRPAsset.asset +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/CommonAssets/UniversalRPAsset.asset @@ -27,8 +27,8 @@ MonoBehaviour: - {fileID: 11400000, guid: ab4527fe9ad5ef949bffe9447fabcfa2, type: 2} - {fileID: 11400000, guid: 01e79ba8f42c808448b7542939affccb, type: 2} m_DefaultRendererIndex: 2 - m_RequireDepthTexture: 1 - m_RequireOpaqueTexture: 1 + m_RequireDepthTexture: 0 + m_RequireOpaqueTexture: 0 m_OpaqueDownsampling: 1 m_SupportsTerrainHoles: 1 m_SupportsHDR: 1 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh.meta new file mode 100644 index 00000000000..9b4776a993d --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 93c9f7ca2b9fedb42a0efcf218c9c946 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh.unity b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh.unity new file mode 100644 index 00000000000..398789dc120 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh.unity @@ -0,0 +1,461 @@ +%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: 3 + 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: 0 + 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: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 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 &652049016 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 652049019} + - component: {fileID: 652049018} + - component: {fileID: 652049017} + - component: {fileID: 652049020} + - component: {fileID: 652049021} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &652049017 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 652049016} + m_Enabled: 1 +--- !u!20 &652049018 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 652049016} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &652049019 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 652049016} + 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: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &652049020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 652049016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalCameraData + m_RenderShadows: 0 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: 2 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 + m_Version: 2 +--- !u!114 &652049021 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 652049016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} + m_Name: + m_EditorClassIdentifier: UniversalGraphicsTests::UniversalGraphicsTestSettings + ImageComparisonSettings: + TargetWidth: 512 + TargetHeight: 512 + TargetMSAASamples: 1 + PerPixelCorrectnessThreshold: 0.001 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 + RMSEThreshold: 0 + AverageCorrectnessThreshold: 0.005 + IncorrectPixelsThreshold: 0.0000038146973 + UseHDR: 0 + UseBackBuffer: 0 + ImageResolution: 0 + ActiveImageTests: 1 + ActivePixelTests: 7 + WaitFrames: 0 + XRCompatible: 0 + gpuDrivenCompatible: 1 + CheckMemoryAllocation: 1 + renderBackendCompatibility: 2 + SetBackBufferResolution: 0 +--- !u!1001 &1737688778 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3676411556188011445, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_Name + value: Player + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalScale.x + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalScale.y + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.17 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalPosition.y + value: -1.61 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4089589904225066195, guid: 9b40ed50f44de45b19eb4780897e047c, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 9b40ed50f44de45b19eb4780897e047c, type: 3} +--- !u!1 &1989874459 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1989874461} + - component: {fileID: 1989874460} + m_Layer: 0 + m_Name: Light 2D + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1989874460 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989874459} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.2D.Runtime::UnityEngine.Rendering.Universal.Light2D + m_ComponentVersion: 2 + m_LightType: 3 + m_BlendStyleIndex: 0 + m_FalloffIntensity: 0.5 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_LightVolumeIntensity: 1 + m_LightVolumeEnabled: 0 + m_ApplyToSortingLayers: eb0feddf00000000e980ef06 + m_LightCookieSprite: {fileID: 0} + m_DeprecatedPointLightCookieSprite: {fileID: 0} + m_LightOrder: 0 + m_AlphaBlendOnOverlap: 0 + m_OverlapOperation: 0 + m_NormalMapDistance: 3 + m_NormalMapQuality: 1 + m_UseNormalMap: 0 + m_ShadowsEnabled: 0 + m_ShadowIntensity: 0.75 + m_ShadowSoftness: 0.3 + m_ShadowSoftnessFalloffIntensity: 0.5 + m_ShadowVolumeIntensityEnabled: 0 + m_ShadowVolumeIntensity: 0.75 + m_LocalBounds: + m_Center: {x: 0, y: -0.00000011920929, z: 0} + m_Extent: {x: 0.9985302, y: 0.99853027, z: 0} + m_PointLightInnerAngle: 360 + m_PointLightOuterAngle: 360 + m_PointLightInnerRadius: 0 + m_PointLightOuterRadius: 4.9685483 + m_ShapeLightParametricSides: 5 + m_ShapeLightParametricAngleOffset: 0 + m_ShapeLightParametricRadius: 1 + m_ShapeLightFalloffSize: 0.5 + m_ShapeLightFalloffOffset: {x: 0, y: 0} + m_ShapePath: + - {x: -0.5, y: -0.5, z: 0} + - {x: 0.5, y: -0.5, z: 0} + - {x: 0.5, y: 0.5, z: 0} + - {x: -0.5, y: 0.5, z: 0} +--- !u!4 &1989874461 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989874459} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.5, 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!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 652049019} + - {fileID: 1989874461} + - {fileID: 1737688778} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh.unity.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh.unity.meta new file mode 100644 index 00000000000..67b9804a3e1 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a40f7e9e6439a67448a877b18b865e20 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit.meta new file mode 100644 index 00000000000..fbfe1c12cb0 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 45da8204a76d98c4db79358de08206fe +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/CTRL_Rabbit.controller b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/CTRL_Rabbit.controller new file mode 100644 index 00000000000..21261b6d72e --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/CTRL_Rabbit.controller @@ -0,0 +1,359 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1107 &-9128674337006444690 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1386550815491730113} + m_Position: {x: 410, y: 210, z: 0} + - serializedVersion: 1 + m_State: {fileID: 6634100124105693670} + m_Position: {x: 410, y: 120, z: 0} + - serializedVersion: 1 + m_State: {fileID: 7035327779463598656} + m_Position: {x: 410, y: 310, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 6634100124105693670} +--- !u!1101 &-8891521440388725937 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 3 + m_ConditionEvent: linearVelocityX + m_EventTreshold: 1 + - m_ConditionMode: 4 + m_ConditionEvent: moveValueX + m_EventTreshold: -0.2 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1386550815491730113} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &-7464871240678240807 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 4 + m_ConditionEvent: linearVelocityX + m_EventTreshold: 1 + - m_ConditionMode: 3 + m_ConditionEvent: moveValueX + m_EventTreshold: -0.2 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 6634100124105693670} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.55357146 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &-2259264521369673422 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 3 + m_ConditionEvent: linearVelocityX + m_EventTreshold: 1 + - m_ConditionMode: 3 + m_ConditionEvent: moveValueX + m_EventTreshold: 0.2 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1386550815491730113} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 2 + m_OrderedInterruption: 0 + m_CanTransitionToSelf: 1 +--- !u!1101 &-2090918365273008557 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 4 + m_ConditionEvent: linearVelocityX + m_EventTreshold: 1 + - m_ConditionMode: 4 + m_ConditionEvent: moveValueX + m_EventTreshold: 0.2 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 6634100124105693670} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 2 + m_OrderedInterruption: 0 + m_CanTransitionToSelf: 1 +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CTRL_Rabbit + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: linearVelocityX + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: moveValueX + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: linearVelocityY + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: isGrounded + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: hasLanded + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: -9128674337006444690} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1101 &278033246825605514 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 3 + m_ConditionEvent: linearVelocityX + m_EventTreshold: 11 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 7035327779463598656} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 6 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 3 + m_OrderedInterruption: 0 + m_CanTransitionToSelf: 1 +--- !u!1102 &1386550815491730113 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: run + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -2090918365273008557} + - {fileID: -7464871240678240807} + - {fileID: 278033246825605514} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 6189153785341448634} + m_Tag: + m_SpeedParameter: linearVelocityX + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1101 &4127658399013601447 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 4 + m_ConditionEvent: linearVelocityX + m_EventTreshold: 11 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1386550815491730113} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!206 &6189153785341448634 +BlendTree: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Blend Tree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: -8489698727061325761, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + m_Threshold: 6 + m_Position: {x: 0, y: 0} + m_TimeScale: 0.5 + m_CycleOffset: 0 + m_DirectBlendParameter: linearVelocityX + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: -8489698727061325761, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + m_Threshold: 12 + m_Position: {x: 0, y: 0} + m_TimeScale: 2 + m_CycleOffset: 0 + m_DirectBlendParameter: linearVelocityX + m_Mirror: 0 + m_BlendParameter: linearVelocityX + m_BlendParameterY: linearVelocityX + m_MinThreshold: 6 + m_MaxThreshold: 12 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 0 +--- !u!1102 &6634100124105693670 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Idle + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: -2259264521369673422} + - {fileID: -8891521440388725937} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 2122646230122354891, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &7035327779463598656 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: fastrun + m_Speed: 3 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 4127658399013601447} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: f6d46f454455e4c37bdd0da21aa6e0df, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/CTRL_Rabbit.controller.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/CTRL_Rabbit.controller.meta new file mode 100644 index 00000000000..dd6df3f4443 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/CTRL_Rabbit.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d7b1e5c4ab7f4bc7bc7abf2aa661718 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/FBX_Rabbit.fbx b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/FBX_Rabbit.fbx new file mode 100644 index 00000000000..2f38b9c13ee Binary files /dev/null and b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/FBX_Rabbit.fbx differ diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/FBX_Rabbit.fbx.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/FBX_Rabbit.fbx.meta new file mode 100644 index 00000000000..28978f91c2d --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/FBX_Rabbit.fbx.meta @@ -0,0 +1,764 @@ +fileFormatVersion: 2 +guid: 44c140d2f39da44cf99ca658382e0a55 +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.2 + animationPositionError: 0.2 + animationScaleError: 0.2 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: + - serializedVersion: 16 + name: Idle + takeName: Idle + internalID: 2122646230122354891 + firstFrame: 0 + lastFrame: 1 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 0 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 1 + - path: Backpack + weight: 0 + - path: Backpack_Nozzles + weight: 0 + - path: Body + weight: 0 + - path: Boots_B + weight: 0 + - path: Eyebrows_01 + weight: 0 + - path: Eyebrows_02 + weight: 0 + - path: Eyes + weight: 0 + - path: Hair + weight: 0 + - path: Hands + weight: 0 + - path: Head + weight: 0 + - path: Rabbit + weight: 0 + - path: Rabbit/mixamorig:Hips + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:LeftUpLeg + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:LeftUpLeg/mixamorig:LeftLeg + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:LeftUpLeg/mixamorig:LeftLeg/mixamorig:LeftFoot + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:LeftUpLeg/mixamorig:LeftLeg/mixamorig:LeftFoot/mixamorig:LeftToeBase + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:RightUpLeg + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:RightUpLeg/mixamorig:RightLeg + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:RightUpLeg/mixamorig:RightLeg/mixamorig:RightFoot + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:RightUpLeg/mixamorig:RightLeg/mixamorig:RightFoot/mixamorig:RightToeBase + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1 + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2 + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/Backpack + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:LeftShoulder + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:LeftShoulder/mixamorig:LeftArm + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:LeftShoulder/mixamorig:LeftArm/mixamorig:LeftForeArm + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:LeftShoulder/mixamorig:LeftArm/mixamorig:LeftForeArm/mixamorig:LeftHand + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/LeftEar001 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/LeftEar001/LeftEar002 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/LeftEar001/LeftEar002/LeftEar003 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/RightEar001 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/RightEar001/RightEar002 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/RightEar001/RightEar002/RightEar003 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:RightShoulder + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:RightShoulder/mixamorig:RightArm + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:RightShoulder/mixamorig:RightArm/mixamorig:RightForeArm + weight: 0 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:RightShoulder/mixamorig:RightArm/mixamorig:RightForeArm/mixamorig:RightHand + weight: 0 + - path: Wrists + weight: 0 + maskType: 1 + maskSource: {fileID: 31900000, guid: 9dcd42cf671244650b14c02d5cf01331, type: 2} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: run + takeName: run + internalID: -8489698727061325761 + firstFrame: 0 + lastFrame: 14 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 0 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: [] + maskType: 3 + maskSource: {instanceID: 0} + additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: fastrun + takeName: fastrun + internalID: -8379789864099615198 + firstFrame: 0 + lastFrame: 14 + wrapMode: 0 + orientationOffsetY: 0 + level: 0 + cycleOffset: 0 + loop: 0 + hasAdditiveReferencePose: 0 + loopTime: 1 + loopBlend: 0 + loopBlendOrientation: 0 + loopBlendPositionY: 0 + loopBlendPositionXZ: 0 + keepOriginalOrientation: 0 + keepOriginalPositionY: 1 + keepOriginalPositionXZ: 0 + heightFromFeet: 0 + mirror: 0 + bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 + curves: [] + events: [] + transformMask: + - path: + weight: 1 + - path: Backpack + weight: 0 + - path: Backpack_Nozzles + weight: 0 + - path: Body + weight: 0 + - path: Boots_B + weight: 0 + - path: Eyebrows_01 + weight: 0 + - path: Eyebrows_02 + weight: 0 + - path: Eyes + weight: 0 + - path: Hair + weight: 0 + - path: Hands + weight: 0 + - path: Head + weight: 0 + - path: Rabbit + weight: 1 + - path: Rabbit/mixamorig:Hips + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:LeftUpLeg + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:LeftUpLeg/mixamorig:LeftLeg + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:LeftUpLeg/mixamorig:LeftLeg/mixamorig:LeftFoot + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:LeftUpLeg/mixamorig:LeftLeg/mixamorig:LeftFoot/mixamorig:LeftToeBase + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:RightUpLeg + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:RightUpLeg/mixamorig:RightLeg + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:RightUpLeg/mixamorig:RightLeg/mixamorig:RightFoot + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:RightUpLeg/mixamorig:RightLeg/mixamorig:RightFoot/mixamorig:RightToeBase + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/Backpack + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:LeftShoulder + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:LeftShoulder/mixamorig:LeftArm + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:LeftShoulder/mixamorig:LeftArm/mixamorig:LeftForeArm + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:LeftShoulder/mixamorig:LeftArm/mixamorig:LeftForeArm/mixamorig:LeftHand + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/LeftEar001 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/LeftEar001/LeftEar002 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/LeftEar001/LeftEar002/LeftEar003 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/RightEar001 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/RightEar001/RightEar002 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/RightEar001/RightEar002/RightEar003 + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:RightShoulder + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:RightShoulder/mixamorig:RightArm + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:RightShoulder/mixamorig:RightArm/mixamorig:RightForeArm + weight: 1 + - path: Rabbit/mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:RightShoulder/mixamorig:RightArm/mixamorig:RightForeArm/mixamorig:RightHand + weight: 1 + - path: Wrists + weight: 0 + maskType: 1 + maskSource: {fileID: 31900000, guid: 9dcd42cf671244650b14c02d5cf01331, type: 2} + additiveReferencePoseFrame: 0 + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: + - boneName: mixamorig:Hips + humanName: Hips + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:LeftUpLeg + humanName: LeftUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:RightUpLeg + humanName: RightUpperLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:LeftLeg + humanName: LeftLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:RightLeg + humanName: RightLowerLeg + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:LeftFoot + humanName: LeftFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:RightFoot + humanName: RightFoot + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:Spine + humanName: Spine + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:Spine1 + humanName: Chest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:Neck + humanName: Neck + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:Head + humanName: Head + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:LeftShoulder + humanName: LeftShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:RightShoulder + humanName: RightShoulder + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:LeftArm + humanName: LeftUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:RightArm + humanName: RightUpperArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:LeftForeArm + humanName: LeftLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:RightForeArm + humanName: RightLowerArm + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:LeftHand + humanName: LeftHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:RightHand + humanName: RightHand + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:LeftToeBase + humanName: LeftToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:RightToeBase + humanName: RightToes + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: LeftEar001 + humanName: LeftEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: RightEar001 + humanName: RightEye + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + - boneName: mixamorig:Spine2 + humanName: UpperChest + limit: + min: {x: 0, y: 0, z: 0} + max: {x: 0, y: 0, z: 0} + value: {x: 0, y: 0, z: 0} + length: 0 + modified: 0 + skeleton: + - name: rabbit_anim_v10(Clone) + parentName: + position: {x: 0, y: 0, z: 0} + rotation: {x: 0, y: 0, z: 0, w: 1} + scale: {x: 1, y: 1, z: 1} + - name: Backpack + parentName: rabbit_anim_v10(Clone) + position: {x: 0.0000000059604637, y: -0.000000008940697, z: -0.0000000065565096} + rotation: {x: -0.7071068, y: -0.0000000025288112, z: 6.322031e-10, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: Backpack_Nozzles + parentName: rabbit_anim_v10(Clone) + position: {x: -0.00000000834465, y: 0.00000002503395, z: 0.0000000035762766} + rotation: {x: -0.7071068, y: -0.000000001896608, z: 0.0000000010536713, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: Body + parentName: rabbit_anim_v10(Clone) + position: {x: -0.00000000488013, y: 3.7252784e-10, z: -0.000000014840625} + rotation: {x: -0.7071069, y: -2.2802109e-10, z: -7.0217315e-10, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: Boots_B + parentName: rabbit_anim_v10(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: Eyebrows_01 + parentName: rabbit_anim_v10(Clone) + position: {x: -0.000000007152557, y: -0.0000000023841857, z: 1.80001e-16} + rotation: {x: -0.7071069, y: -0.000000002528811, z: -0.0000000016858732, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: Eyebrows_02 + parentName: rabbit_anim_v10(Clone) + position: {x: -0.000000007152557, y: -0.0000000023841857, z: 1.80001e-16} + rotation: {x: -0.7071069, y: -0.000000002528811, z: -0.0000000016858732, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: Eyes + parentName: rabbit_anim_v10(Clone) + position: {x: -0, y: 2.011668e-24, z: 2.6645352e-17} + rotation: {x: -0.7071069, y: 0, z: 0, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: Hair + parentName: rabbit_anim_v10(Clone) + position: {x: -0, y: 2.011668e-24, z: 0.010083692} + rotation: {x: -0.7071069, y: 0, z: 0, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: Hands + parentName: rabbit_anim_v10(Clone) + position: {x: -0.0000000023841857, y: -0.00000003695488, z: -0.000000004768369} + rotation: {x: -0.7071068, y: -0.0000000025288114, z: -0.0000000016858736, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: Head + parentName: rabbit_anim_v10(Clone) + position: {x: -0, y: 2.011668e-24, z: 2.6645352e-17} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: Rabbit + parentName: rabbit_anim_v10(Clone) + position: {x: -0, y: 0, z: 0} + rotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + - name: mixamorig:Hips + parentName: Rabbit + position: {x: -0, y: -0.0007138718, z: 0.0053605023} + rotation: {x: 0.7071068, y: -2.2476864e-16, z: -1.236691e-16, w: 0.7071068} + scale: {x: 1, y: 0.999999, z: 0.999999} + - name: mixamorig:Spine + parentName: mixamorig:Hips + position: {x: -0, y: 0.00061817694, z: -0.00006996304} + rotation: {x: -0.05631858, y: 3.361716e-16, z: 3.5019727e-17, w: 0.9984129} + scale: {x: 1, y: 1.0000007, z: 1.0000008} + - name: mixamorig:Spine1 + parentName: mixamorig:Spine + position: {x: -0, y: 0.00072580954, z: 0} + rotation: {x: -0, y: -1.4654946e-16, z: 2.220442e-17, w: 1} + scale: {x: 1, y: 0.9999996, z: 1.0000008} + - name: mixamorig:Spine2 + parentName: mixamorig:Spine1 + position: {x: -0, y: 0.0008294986, z: -1.11758706e-10} + rotation: {x: 0.00000008568168, y: -2.4424896e-16, z: 1.5543101e-17, w: 1} + scale: {x: 1, y: 1.0000002, z: 0.9999991} + - name: mixamorig:Neck + parentName: mixamorig:Spine2 + position: {x: -0, y: 0.00093318406, z: -3.352761e-10} + rotation: {x: 0.056318495, y: 6.045532e-17, z: -3.4327496e-17, w: 0.9984129} + scale: {x: 1, y: 1.0000005, z: 1.0000006} + - name: mixamorig:Head + parentName: mixamorig:Neck + position: {x: -0, y: 0.0010773271, z: 0.00011345998} + rotation: {x: -0, y: -6.3310377e-18, z: -3.1655133e-17, w: 1} + scale: {x: 1, y: 0.9999996, z: 0.9999997} + - name: LeftEar001 + parentName: mixamorig:Head + position: {x: -0.0018344461, y: 0.0042284727, z: -0.00002301221} + rotation: {x: 0.0034912522, y: 0.0006513381, z: 0.18337764, w: 0.9830361} + scale: {x: 1.0000005, y: 0.99999905, z: 1.0000005} + - name: LeftEar002 + parentName: LeftEar001 + position: {x: -6.667201e-10, y: 0.0023699026, z: 3.958121e-11} + rotation: {x: 0.074103646, y: 0.002695725, z: 0.03308256, w: 0.996698} + scale: {x: 1.0000008, y: 0.9999999, z: 0.9999987} + - name: LeftEar003 + parentName: LeftEar002 + position: {x: 9.733067e-10, y: 0.002064757, z: -2.2351741e-10} + rotation: {x: 0.015027462, y: 0.019120868, z: 0.11095591, w: 0.99352777} + scale: {x: 1.0000011, y: 0.9999985, z: 1.0000002} + - name: RightEar001 + parentName: mixamorig:Head + position: {x: 0.0018344461, y: 0.0042284727, z: -0.00002301221} + rotation: {x: 0.0034912522, y: -0.0006513232, z: -0.18337764, w: 0.9830361} + scale: {x: 1.0000005, y: 0.99999905, z: 1.0000005} + - name: RightEar002 + parentName: RightEar001 + position: {x: 6.667201e-10, y: 0.0023699026, z: 3.958121e-11} + rotation: {x: 0.07410365, y: -0.0026957395, z: -0.03308256, w: 0.996698} + scale: {x: 1.0000008, y: 1.0000004, z: 0.9999987} + - name: RightEar003 + parentName: RightEar002 + position: {x: -9.733067e-10, y: 0.002064757, z: -2.2351741e-10} + rotation: {x: 0.015027409, y: -0.01912088, z: -0.11095588, w: 0.99352777} + scale: {x: 1.0000013, y: 0.9999981, z: 1.0000005} + - name: mixamorig:LeftShoulder + parentName: mixamorig:Spine2 + position: {x: -0.00057579397, y: 0.000735465, z: -0.000014474392} + rotation: {x: 0.6394079, y: -0.4486662, z: -0.5023089, w: -0.37086636} + scale: {x: 1.0000012, y: 1.0000006, z: 1.000002} + - name: mixamorig:LeftArm + parentName: mixamorig:LeftShoulder + position: {x: -1.8626451e-11, y: 0.0012208619, z: 0.0000000010337681} + rotation: {x: 0.14419025, y: -0.14440307, z: 0.018866062, w: 0.9787753} + scale: {x: 1.0000008, y: 1.000002, z: 1.000002} + - name: mixamorig:LeftForeArm + parentName: mixamorig:LeftArm + position: {x: -2.3283063e-11, y: 0.0010506014, z: 4.5401974e-11} + rotation: {x: -0.019260434, y: 0.019336713, z: -0.0038297898, w: -0.99962026} + scale: {x: 0.99999946, y: 0.999999, z: 1.0000013} + - name: mixamorig:LeftHand + parentName: mixamorig:LeftForeArm + position: {x: 1.6880221e-11, y: 0.0011181678, z: 3.0551744e-10} + rotation: {x: 0.10270812, y: -0.10322092, z: -0.058400493, w: -0.98761624} + scale: {x: 1.0000029, y: 1.0000061, z: 1.000002} + - name: mixamorig:RightShoulder + parentName: mixamorig:Spine2 + position: {x: 0.00057579397, y: 0.0007372318, z: -0.000030080526} + rotation: {x: 0.64327663, y: 0.44293115, z: 0.49588814, w: -0.37960798} + scale: {x: 1.0000013, y: 1.0000021, z: 1.0000025} + - name: mixamorig:RightArm + parentName: mixamorig:RightShoulder + position: {x: -2.2351741e-10, y: 0.0012208633, z: 1.8626451e-11} + rotation: {x: 0.13788214, y: 0.14567886, z: -0.052859686, w: 0.97824955} + scale: {x: 1.0000018, y: 1.0000052, z: 1.0000048} + - name: mixamorig:RightForeArm + parentName: mixamorig:RightArm + position: {x: 2.7939677e-11, y: 0.0010515008, z: -9.19681e-11} + rotation: {x: -0.019723399, y: -0.019699423, z: -0.021324428, w: -0.999384} + scale: {x: 1.0000033, y: 1.0000021, z: 1.0000038} + - name: mixamorig:RightHand + parentName: mixamorig:RightForeArm + position: {x: 1.9354046e-11, y: 0.0011181596, z: -2.9976945e-11} + rotation: {x: 0.1043845, y: 0.10424298, z: 0.054710582, w: -0.9875445} + scale: {x: 1.0000017, y: 1, z: 1} + - name: Backpack + parentName: mixamorig:Spine2 + position: {x: -0, y: 0.001329199, z: -0.0012951373} + rotation: {x: 0.98493725, y: 0.0000000206128, z: -0.00000011741408, w: -0.17291227} + scale: {x: 1, y: 1.0000014, z: 1.0000037} + - name: mixamorig:LeftUpLeg + parentName: mixamorig:Hips + position: {x: -0.0009081132, y: -0.00034410364, z: 0.000020872718} + rotation: {x: 0.9935876, y: -0.073111065, z: -0.07311364, w: 0.04574898} + scale: {x: 1.0000032, y: 1.0000031, z: 1.0000072} + - name: mixamorig:LeftLeg + parentName: mixamorig:LeftUpLeg + position: {x: -5.5879353e-11, y: 0.0015827664, z: -3.7252902e-11} + rotation: {x: 0.12207742, y: -0.036362983, z: 0.015986113, w: 0.9917254} + scale: {x: 1.0000001, y: 1.0000076, z: 1.0000075} + - name: mixamorig:LeftFoot + parentName: mixamorig:LeftLeg + position: {x: 1.5832484e-10, y: 0.0014095445, z: 1.0710209e-10} + rotation: {x: -0.4111093, y: -0.10903086, z: 0.21705276, w: 0.8786294} + scale: {x: 1.0000018, y: 1.000011, z: 0.99999744} + - name: mixamorig:LeftToeBase + parentName: mixamorig:LeftFoot + position: {x: -3.9115547e-10, y: 0.0031651233, z: -8.381903e-11} + rotation: {x: -0.1464972, y: 0.8502455, z: -0.30187503, w: -0.40557688} + scale: {x: 1.0000122, y: 0.999989, z: 1.0000051} + - name: mixamorig:RightUpLeg + parentName: mixamorig:Hips + position: {x: 0.0009081132, y: -0.00034410364, z: 0.000042083255} + rotation: {x: 0.9936909, y: 0.072985455, z: 0.07298285, w: 0.04387635} + scale: {x: 0.9999959, y: 1.000005, z: 1.0000024} + - name: mixamorig:RightLeg + parentName: mixamorig:RightUpLeg + position: {x: -1.6763806e-10, y: 0.0015821694, z: 0} + rotation: {x: 0.13493322, y: 0.035670385, z: -0.013671693, w: 0.990118} + scale: {x: 0.9999999, y: 1.0000045, z: 1.0000051} + - name: mixamorig:RightFoot + parentName: mixamorig:RightLeg + position: {x: 1.5832484e-10, y: 0.0014158015, z: 2.561137e-11} + rotation: {x: -0.42383468, y: 0.10714267, z: -0.22147484, w: 0.87168425} + scale: {x: 0.9999992, y: 0.99999607, z: 1.0000099} + - name: mixamorig:RightToeBase + parentName: mixamorig:RightFoot + position: {x: -1.862645e-10, y: 0.003167097, z: -2.3283063e-11} + rotation: {x: 0.1439293, y: 0.85055643, z: -0.30284113, w: 0.40512395} + scale: {x: 1.000036, y: 1.0000112, z: 0.99996454} + - name: Wrists + parentName: rabbit_anim_v10(Clone) + position: {x: -0.000000007152557, y: -0.0000000023841857, z: 1.80001e-16} + rotation: {x: -0.7071069, y: -0.000000002528811, z: -0.0000000016858732, w: 0.7071067} + scale: {x: 100, y: 100, z: 100} + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 1 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 3 + humanoidOversampling: 1 + avatarSetup: 1 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MAT_rabbit.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MAT_rabbit.mat new file mode 100644 index 00000000000..9a37d94186b --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MAT_rabbit.mat @@ -0,0 +1,95 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-5978559468002789555 +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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: MAT_rabbit + m_Shader: {fileID: 4800000, guid: e260cfa7296ee7642b167f1eb5be5023, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _ZWRITE_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - Base_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Normal_Map: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AmbientOcclusion: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 9f9f3017d358d44ccb736a7bd6592786, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: d17e49d624142453c8a863e0ac64900b, type: 3} + 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: + - Normal_Blend: 0.5 + - _DecalMeshBiasType: 0 + - _DecalMeshDepthBias: 0 + - _DecalMeshViewBias: 0 + - _DrawOrder: 0 + - _EnableExternalAlpha: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Flip: {r: 1, g: 1, b: 1, a: 1} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MAT_rabbit.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MAT_rabbit.mat.meta new file mode 100644 index 00000000000..fe317236811 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MAT_rabbit.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a166853b72a73457083eadd61644515d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MATrabbit 1.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MATrabbit 1.mat new file mode 100644 index 00000000000..892b1a9750b --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MATrabbit 1.mat @@ -0,0 +1,151 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: MATrabbit 1 + m_Shader: {fileID: 4800000, guid: e260cfa7296ee7642b167f1eb5be5023, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _ZWRITE_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - Texture2D_157F2F46: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - Texture2D_62A554C2: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AmbientOcclusion: + m_Texture: {fileID: 2800000, guid: 539fd2274b23049d48993a6b1d8a10d3, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 106c5cc4c76c646dea6d654713640294, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 2800000, guid: 1ad007c25893a4418ba1f09c7a8146eb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Texture2D: + 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: + - PixelSnap: 0 + - Vector1_55a8b126390543389171a7d049051d70: 0 + - Vector1_6eb44c5d2e6b4dbb93ad63ff27fda2b9: 0 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnableExternalAlpha: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - Color_af230b329c8c495b83c610ab1c4228f3: {r: 4, g: 4, b: 4, a: 1} + - Vector2_4594D2F0: {r: 1, g: 1, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _Flip: {r: 1, g: 1, b: 1, a: 1} + - _LightDirection: {r: 3.36, g: 1.72, b: -1.35, a: 0} + - _RendererColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &9131573936083971337 +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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MATrabbit 1.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MATrabbit 1.mat.meta new file mode 100644 index 00000000000..d705ebc5dc8 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/MATrabbit 1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 139e40328161f419cbb87a46bbe05c4b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/Prefab_rabbit.prefab b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/Prefab_rabbit.prefab new file mode 100644 index 00000000000..c42bf72dd85 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/Prefab_rabbit.prefab @@ -0,0 +1,174 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &6994157565141698803 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalPosition.x + value: 1.966412 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalPosition.y + value: -0.85328794 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.w + value: 0.04421809 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.y + value: 0.9990219 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -545.069 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8531248215242998404, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a166853b72a73457083eadd61644515d, type: 2} + - target: {fileID: -7823293702887809713, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a166853b72a73457083eadd61644515d, type: 2} + - target: {fileID: -4865184698720328861, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.w + value: 0.704138 + objectReference: {fileID: 0} + - target: {fileID: -4865184698720328861, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.x + value: -0.70413816 + objectReference: {fileID: 0} + - target: {fileID: -4865184698720328861, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.y + value: -0.06472729 + objectReference: {fileID: 0} + - target: {fileID: -4865184698720328861, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.z + value: -0.06472726 + objectReference: {fileID: 0} + - target: {fileID: -4865184698720328861, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -90 + objectReference: {fileID: 0} + - target: {fileID: -4865184698720328861, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: -10.504 + objectReference: {fileID: 0} + - target: {fileID: -4085134581463511685, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a166853b72a73457083eadd61644515d, type: 2} + - target: {fileID: -3051815954447469673, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -2641288237696090860, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 139e40328161f419cbb87a46bbe05c4b, type: 2} + - target: {fileID: -10312625975758130, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 139e40328161f419cbb87a46bbe05c4b, type: 2} + - target: {fileID: 257682520821521101, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a166853b72a73457083eadd61644515d, type: 2} + - target: {fileID: 579163500693744052, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a166853b72a73457083eadd61644515d, type: 2} + - target: {fileID: 919132149155446097, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_Name + value: Prefab_rabbit + objectReference: {fileID: 0} + - target: {fileID: 1630794972795428178, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a166853b72a73457083eadd61644515d, type: 2} + - target: {fileID: 1991958964433702829, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 139e40328161f419cbb87a46bbe05c4b, type: 2} + - target: {fileID: 3169268832049026677, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.w + value: 0.70710266 + objectReference: {fileID: 0} + - target: {fileID: 3169268832049026677, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.x + value: -0.70710284 + objectReference: {fileID: 0} + - target: {fileID: 3169268832049026677, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.y + value: 0.0024045703 + objectReference: {fileID: 0} + - target: {fileID: 3169268832049026677, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalRotation.z + value: 0.0024045554 + objectReference: {fileID: 0} + - target: {fileID: 3169268832049026677, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -90 + objectReference: {fileID: 0} + - target: {fileID: 3169268832049026677, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0.39 + objectReference: {fileID: 0} + - target: {fileID: 4767898868398730723, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5074512353664290214, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a166853b72a73457083eadd61644515d, type: 2} + - target: {fileID: 8662617239381368188, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 139e40328161f419cbb87a46bbe05c4b, type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: + - {fileID: 116856396125860179, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: 6366284564623985538, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: -8469776780753482551, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: -405469744395231964, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: -6015716753734748851, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: 65702495048144492, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: 7974319562004025660, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: 8513859187771203891, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: -6425071276462417290, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: 3131173972596537370, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: 5089554664908748266, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: -6047770818520962776, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: -3287953760327315157, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: -8700617353114198275, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + - {fileID: -7355372455135308335, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 44c140d2f39da44cf99ca658382e0a55, type: 3} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/Prefab_rabbit.prefab.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/Prefab_rabbit.prefab.meta new file mode 100644 index 00000000000..0c0cc360c3f --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/Prefab_rabbit.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e277024fb90a14f01bcf8eff8a7ae2ca +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures.meta new file mode 100644 index 00000000000..623b584abec --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d89a3a2fc1d27984ab580f69d0597fd0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap.png b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap.png new file mode 100644 index 00000000000..58b95172711 Binary files /dev/null and b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap.png differ diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap.png.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap.png.meta new file mode 100644 index 00000000000..b4716166215 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap.png.meta @@ -0,0 +1,142 @@ +fileFormatVersion: 2 +guid: d17e49d624142453c8a863e0ac64900b +TextureImporter: + internalIDToNameTable: + - first: + 213: -5434094310243622409 + second: NormalMap_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: NormalMap_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 4096 + height: 4096 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 7f125f114083694b0800000000000000 + internalID: -5434094310243622409 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap2.png b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap2.png new file mode 100644 index 00000000000..e43a5631f8b Binary files /dev/null and b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap2.png differ diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap2.png.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap2.png.meta new file mode 100644 index 00000000000..b0000108cb0 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/NormalMap2.png.meta @@ -0,0 +1,142 @@ +fileFormatVersion: 2 +guid: 1ad007c25893a4418ba1f09c7a8146eb +TextureImporter: + internalIDToNameTable: + - first: + 213: -2477330374845486119 + second: NormalMap2_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: NormalMap2_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 4096 + height: 4096 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 9dbac084621ce9dd0800000000000000 + internalID: -2477330374845486119 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat Base Color.png b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat Base Color.png new file mode 100644 index 00000000000..30e1a59a46e Binary files /dev/null and b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat Base Color.png differ diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat Base Color.png.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat Base Color.png.meta new file mode 100644 index 00000000000..c9e4bc550ff --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat Base Color.png.meta @@ -0,0 +1,208 @@ +fileFormatVersion: 2 +guid: 9f9f3017d358d44ccb736a7bd6592786 +TextureImporter: + internalIDToNameTable: + - first: + 213: -4901453384409387735 + second: baseMat Base Color_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: CloudRendering + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: GameCoreXboxOne + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: GameCoreScarlett + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: baseMat Base Color_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 4096 + height: 4096 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 92d642bad1a8afbb0800000000000000 + internalID: -4901453384409387735 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + baseMat Base Color_0: -4901453384409387735 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat.001 Base Color.png b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat.001 Base Color.png new file mode 100644 index 00000000000..3b51cba108f Binary files /dev/null and b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat.001 Base Color.png differ diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat.001 Base Color.png.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat.001 Base Color.png.meta new file mode 100644 index 00000000000..5669b70fb99 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/Rabbit/textures/baseMat.001 Base Color.png.meta @@ -0,0 +1,208 @@ +fileFormatVersion: 2 +guid: 106c5cc4c76c646dea6d654713640294 +TextureImporter: + internalIDToNameTable: + - first: + 213: -7393405560883144865 + second: baseMat.001 Base Color_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: CloudRendering + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: GameCoreXboxOne + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: GameCoreScarlett + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: baseMat.001 Base Color_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 4096 + height: 4096 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: f57992770d8556990800000000000000 + internalID: -7393405560883144865 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + baseMat.001 Base Color_0: -7393405560883144865 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/prefabs.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/prefabs.meta new file mode 100644 index 00000000000..40a1775275b --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cbb0c2241d67a0547a4e6c12ebdacd7a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/prefabs/Player.prefab b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/prefabs/Player.prefab new file mode 100644 index 00000000000..cb0b633d9b6 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/prefabs/Player.prefab @@ -0,0 +1,366 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3676411556188011445 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4089589904225066195} + m_Layer: 0 + m_Name: Player + m_TagString: Player + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4089589904225066195 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3676411556188011445} + 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: 2451548672782375468} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5088153130046533475 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5802010322089642880} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5802010322089642880 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5088153130046533475} + 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: 162702002513768937} + m_Father: {fileID: 2451548672782375468} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7154526518983292843 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2451548672782375468} + m_Layer: 0 + m_Name: ModelHolder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2451548672782375468 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7154526518983292843} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0.3420201, z: 0, w: 0.9396927} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5802010322089642880} + m_Father: {fileID: 4089589904225066195} + m_LocalEulerAnglesHint: {x: 0, y: -40, z: 0} +--- !u!1001 &7266712863267315441 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 5802010322089642880} + m_Modifications: + - target: {fileID: 2588373538745142972, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 139e40328161f419cbb87a46bbe05c4b, type: 2} + - target: {fileID: 3493289824497005922, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_Controller + value: + objectReference: {fileID: 9100000, guid: 2d7b1e5c4ab7f4bc7bc7abf2aa661718, type: 2} + - target: {fileID: 3493289824497005922, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_ApplyRootMotion + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3837926544611883733, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4454815228538954372, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 139e40328161f419cbb87a46bbe05c4b, type: 2} + - target: {fileID: 4694871494070160037, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a166853b72a73457083eadd61644515d, type: 2} + - target: {fileID: 5873819048351268437, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: a166853b72a73457083eadd61644515d, type: 2} + - target: {fileID: 6770068498251534610, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 139e40328161f419cbb87a46bbe05c4b, type: 2} + - target: {fileID: 6938047261547499960, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -19.444933 + objectReference: {fileID: 0} + - target: {fileID: 6938047261547499960, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -179.99998 + objectReference: {fileID: 0} + - target: {fileID: 6938047261547499960, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 179.99998 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalScale.x + value: 1.4224392 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalScale.y + value: 1.4224392 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalScale.z + value: 1.4224392 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalPosition.y + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalRotation.w + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalRotation.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7913199402811717026, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + propertyPath: m_Name + value: Prefab_rabbit + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 2766357319078520933, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + insertIndex: -1 + addedObject: {fileID: 7735187074982730714} + - targetCorrespondingSourceObject: {fileID: 4830898078375414683, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + insertIndex: -1 + addedObject: {fileID: 6792582408273345432} + - targetCorrespondingSourceObject: {fileID: 122407450279352721, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + insertIndex: -1 + addedObject: {fileID: 2088253541290387654} + - targetCorrespondingSourceObject: {fileID: 7170282566175304951, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + insertIndex: -1 + addedObject: {fileID: 6874618301287306084} + - targetCorrespondingSourceObject: {fileID: 5184409598782005531, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + insertIndex: -1 + addedObject: {fileID: 4408175828972516724} + - targetCorrespondingSourceObject: {fileID: 6684387207265406333, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + insertIndex: -1 + addedObject: {fileID: 8808322202932438128} + m_SourcePrefab: {fileID: 100100000, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} +--- !u!4 &162702002513768937 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7393367160705036056, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + m_PrefabInstance: {fileID: 7266712863267315441} + m_PrefabAsset: {fileID: 0} +--- !u!1 &529589499924148742 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7170282566175304951, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + m_PrefabInstance: {fileID: 7266712863267315441} + m_PrefabAsset: {fileID: 0} +--- !u!114 &6874618301287306084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 529589499924148742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ccc2b9cce089845138ffc162ca0cbb22, type: 3} + m_Name: + m_EditorClassIdentifier: + springForce: 80 + damping: 7 + maxAngle: 183.7 + velocityThreshold: 0.05 + responsiveness: 7.43 +--- !u!1 &2533896937519300586 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5184409598782005531, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + m_PrefabInstance: {fileID: 7266712863267315441} + m_PrefabAsset: {fileID: 0} +--- !u!114 &4408175828972516724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2533896937519300586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ccc2b9cce089845138ffc162ca0cbb22, type: 3} + m_Name: + m_EditorClassIdentifier: + springForce: 80 + damping: 7 + maxAngle: 183.7 + velocityThreshold: 0.05 + responsiveness: 7.43 +--- !u!1 &2869427295756506474 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4830898078375414683, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + m_PrefabInstance: {fileID: 7266712863267315441} + m_PrefabAsset: {fileID: 0} +--- !u!114 &6792582408273345432 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2869427295756506474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ccc2b9cce089845138ffc162ca0cbb22, type: 3} + m_Name: + m_EditorClassIdentifier: + springForce: 80 + damping: 7 + maxAngle: 183.7 + velocityThreshold: 0.05 + responsiveness: 7.43 +--- !u!1 &4042889303845966732 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6684387207265406333, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + m_PrefabInstance: {fileID: 7266712863267315441} + m_PrefabAsset: {fileID: 0} +--- !u!114 &8808322202932438128 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4042889303845966732} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ccc2b9cce089845138ffc162ca0cbb22, type: 3} + m_Name: + m_EditorClassIdentifier: + springForce: 80 + damping: 7 + maxAngle: 183.7 + velocityThreshold: 0.05 + responsiveness: 7.43 +--- !u!1 &4808893917694359188 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2766357319078520933, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + m_PrefabInstance: {fileID: 7266712863267315441} + m_PrefabAsset: {fileID: 0} +--- !u!114 &7735187074982730714 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4808893917694359188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ccc2b9cce089845138ffc162ca0cbb22, type: 3} + m_Name: + m_EditorClassIdentifier: + springForce: 80 + damping: 7 + maxAngle: 183.7 + velocityThreshold: 0.05 + responsiveness: 7.43 +--- !u!1 &7307772317500458848 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 122407450279352721, guid: e277024fb90a14f01bcf8eff8a7ae2ca, type: 3} + m_PrefabInstance: {fileID: 7266712863267315441} + m_PrefabAsset: {fileID: 0} +--- !u!114 &2088253541290387654 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7307772317500458848} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ccc2b9cce089845138ffc162ca0cbb22, type: 3} + m_Name: + m_EditorClassIdentifier: + springForce: 80 + damping: 7 + maxAngle: 183.7 + velocityThreshold: 0.05 + responsiveness: 7.43 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/prefabs/Player.prefab.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/prefabs/Player.prefab.meta new file mode 100644 index 00000000000..c699820ad56 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/065_2D_Lights_SkinMesh/prefabs/Player.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9b40ed50f44de45b19eb4780897e047c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction.meta new file mode 100644 index 00000000000..4961fe72b73 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 985274935fdbf774abf66ef609fc7583 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction.unity b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction.unity index ad0f76ecc65..045b17eb249 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction.unity +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction.unity @@ -279,7 +279,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &105777675 +--- !u!1 &47282883 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -287,38 +287,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 105777676} - - component: {fileID: 105777678} - - component: {fileID: 105777677} + - component: {fileID: 47282884} + - component: {fileID: 47282886} + - component: {fileID: 47282885} m_Layer: 0 - m_Name: Chunk - None 3 + m_Name: Chunk - Shader - VisibleInMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &105777676 +--- !u!4 &47282884 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 105777675} + m_GameObject: {fileID: 47282883} 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: 214346214} + m_Father: {fileID: 864839693} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &105777677 +--- !u!483693784 &47282885 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 105777675} + m_GameObject: {fileID: 47282883} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -337,7 +337,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -356,9 +356,9 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 8 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -366,17 +366,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &105777678 + m_MaskInteraction: 1 +--- !u!1839735485 &47282886 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 105777675} + m_GameObject: {fileID: 47282883} m_Enabled: 1 m_Tiles: - - first: {x: -3, y: 3, z: 0} + - first: {x: -11, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -418,8 +418,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -439,7 +439,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &150661153 +--- !u!1 &76593865 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -447,38 +447,128 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 150661154} - - component: {fileID: 150661156} - - component: {fileID: 150661155} + - component: {fileID: 76593867} + - component: {fileID: 76593866} m_Layer: 0 - m_Name: SRP - VisibleInMask 3 + m_Name: SpriteMask Shader m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &150661154 +--- !u!212 &76593866 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 76593865} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 1024265d4663d5840bab44e9ea802ee1, 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: 0 + 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_Sprite: {fileID: 21300000, guid: 1c1bbc2babac652448e1539458ad2d21, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &76593867 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 150661153} + m_GameObject: {fileID: 76593865} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 8, y: -2.5, z: 0} + m_LocalScale: {x: 20, y: 3, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &78305444 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 78305445} + - component: {fileID: 78305447} + - component: {fileID: 78305446} + m_Layer: 0 + m_Name: Chunk - Shader - None + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &78305445 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 78305444} 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: 1565511678} + m_Father: {fileID: 205137524} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &150661155 +--- !u!483693784 &78305446 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 150661153} + m_GameObject: {fileID: 78305444} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -497,7 +587,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -518,25 +608,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 27 + m_SortingOrder: 1 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &150661156 + m_MaskInteraction: 0 +--- !u!1839735485 &78305447 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 150661153} + m_GameObject: {fileID: 78305444} m_Enabled: 1 m_Tiles: - - first: {x: -4, y: 3, z: 0} + - first: {x: -10, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -578,8 +668,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -599,7 +689,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &151928560 +--- !u!1 &105322933 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -607,38 +697,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 151928561} - - component: {fileID: 151928563} - - component: {fileID: 151928562} + - component: {fileID: 105322934} + - component: {fileID: 105322936} + - component: {fileID: 105322935} m_Layer: 0 - m_Name: SRP - VisibleInMask + m_Name: Chunk - Shader - VisibleOutofMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &151928561 +--- !u!4 &105322934 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 151928560} + m_GameObject: {fileID: 105322933} 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: 300172612} + m_Father: {fileID: 205137524} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &151928562 +--- !u!483693784 &105322935 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 151928560} + m_GameObject: {fileID: 105322933} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -657,7 +747,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -676,27 +766,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 20 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 6 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &151928563 + m_MaskInteraction: 2 +--- !u!1839735485 &105322936 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 151928560} + m_GameObject: {fileID: 105322933} m_Enabled: 1 m_Tiles: - - first: {x: -11, y: 3, z: 0} + - first: {x: -5, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -738,8 +828,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -759,7 +849,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &189917553 +--- !u!1 &105777675 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -767,23 +857,23 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 189917554} - - component: {fileID: 189917556} - - component: {fileID: 189917555} + - component: {fileID: 105777676} + - component: {fileID: 105777678} + - component: {fileID: 105777677} m_Layer: 0 - m_Name: Chunk - VisibleOutofMask 3 + m_Name: Chunk - None 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &189917554 +--- !u!4 &105777676 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 189917553} + m_GameObject: {fileID: 105777675} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -792,13 +882,13 @@ Transform: m_Children: [] m_Father: {fileID: 214346214} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &189917555 +--- !u!483693784 &105777677 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 189917553} + m_GameObject: {fileID: 105777675} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -838,7 +928,7 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 6 + m_SortingOrder: 8 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -846,17 +936,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 2 ---- !u!1839735485 &189917556 + m_MaskInteraction: 0 +--- !u!1839735485 &105777678 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 189917553} + m_GameObject: {fileID: 105777675} m_Enabled: 1 m_Tiles: - - first: {x: -5, y: 3, z: 0} + - first: {x: -3, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -898,8 +988,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -9, y: 0, z: 0} - m_Size: {x: 9, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -919,60 +1009,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &214346212 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 214346214} - - component: {fileID: 214346213} - m_Layer: 0 - m_Name: Grid - Masked - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!156049354 &214346213 -Grid: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 214346212} - m_Enabled: 1 - m_CellSize: {x: 1, y: 1, z: 0} - m_CellGap: {x: 0, y: 0, z: 0} - m_CellLayout: 0 - m_CellSwizzle: 0 ---- !u!4 &214346214 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 214346212} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 9, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 498093949} - - {fileID: 346258722} - - {fileID: 691802665} - - {fileID: 765619341} - - {fileID: 1141486180} - - {fileID: 845277303} - - {fileID: 189917554} - - {fileID: 1206244587} - - {fileID: 105777676} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &232875264 +--- !u!1 &150661153 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -980,23 +1017,23 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 232875265} - - component: {fileID: 232875267} - - component: {fileID: 232875266} + - component: {fileID: 150661154} + - component: {fileID: 150661156} + - component: {fileID: 150661155} m_Layer: 0 - m_Name: SRP - None + m_Name: SRP - VisibleInMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &232875265 +--- !u!4 &150661154 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 232875264} + m_GameObject: {fileID: 150661153} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -1005,13 +1042,13 @@ Transform: m_Children: [] m_Father: {fileID: 1565511678} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &232875266 +--- !u!483693784 &150661155 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 232875264} + m_GameObject: {fileID: 150661153} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -1051,7 +1088,7 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 21 + m_SortingOrder: 27 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -1059,17 +1096,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 2 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &232875267 + m_MaskInteraction: 1 +--- !u!1839735485 &150661156 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 232875264} + m_GameObject: {fileID: 150661153} m_Enabled: 1 m_Tiles: - - first: {x: -10, y: 3, z: 0} + - first: {x: -4, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -1111,8 +1148,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -1132,7 +1169,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &251715405 +--- !u!1 &151928560 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1140,38 +1177,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 251715406} - - component: {fileID: 251715408} - - component: {fileID: 251715407} + - component: {fileID: 151928561} + - component: {fileID: 151928563} + - component: {fileID: 151928562} m_Layer: 0 - m_Name: Chunk - VisibleInMask 3 + m_Name: SRP - VisibleInMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &251715406 +--- !u!4 &151928561 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 251715405} + m_GameObject: {fileID: 151928560} 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: 1178893847} + m_Father: {fileID: 300172612} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &251715407 +--- !u!483693784 &151928562 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 251715405} + m_GameObject: {fileID: 151928560} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -1211,25 +1248,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 7 + m_SortingOrder: 20 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 0 + m_Mode: 2 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 1 ---- !u!1839735485 &251715408 +--- !u!1839735485 &151928563 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 251715405} + m_GameObject: {fileID: 151928560} m_Enabled: 1 m_Tiles: - - first: {x: -4, y: 3, z: 0} + - first: {x: -11, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -1292,7 +1329,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &275741666 +--- !u!1 &189917553 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1300,38 +1337,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 275741667} - - component: {fileID: 275741669} - - component: {fileID: 275741668} + - component: {fileID: 189917554} + - component: {fileID: 189917556} + - component: {fileID: 189917555} m_Layer: 0 - m_Name: Chunk - None 3 + m_Name: Chunk - VisibleOutofMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &275741667 +--- !u!4 &189917554 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 275741666} + m_GameObject: {fileID: 189917553} 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: 1178893847} + m_Father: {fileID: 214346214} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &275741668 +--- !u!483693784 &189917555 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 275741666} + m_GameObject: {fileID: 189917553} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -1369,9 +1406,9 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 8 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 6 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -1379,17 +1416,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &275741669 + m_MaskInteraction: 2 +--- !u!1839735485 &189917556 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 275741666} + m_GameObject: {fileID: 189917553} m_Enabled: 1 m_Tiles: - - first: {x: -3, y: 3, z: 0} + - first: {x: -5, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -1431,8 +1468,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -1452,7 +1489,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &300172610 +--- !u!1 &205137522 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1460,52 +1497,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 300172612} - - component: {fileID: 300172611} + - component: {fileID: 205137524} + - component: {fileID: 205137523} m_Layer: 0 - m_Name: Grid + m_Name: Grid - Masked m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!156049354 &300172611 +--- !u!156049354 &205137523 Grid: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 300172610} + m_GameObject: {fileID: 205137522} m_Enabled: 1 m_CellSize: {x: 1, y: 1, z: 0} m_CellGap: {x: 0, y: 0, z: 0} m_CellLayout: 0 m_CellSwizzle: 0 ---- !u!4 &300172612 +--- !u!4 &205137524 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 300172610} + m_GameObject: {fileID: 205137522} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 9, y: -6, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 151928561} - - {fileID: 1005097838} - - {fileID: 1826794934} - - {fileID: 1604267346} - - {fileID: 916491935} - - {fileID: 917257771} - - {fileID: 1283665430} - - {fileID: 1039568809} - - {fileID: 1193809356} + - {fileID: 476499348} + - {fileID: 78305445} + - {fileID: 1112152107} + - {fileID: 2088643746} + - {fileID: 1654606196} + - {fileID: 1528018618} + - {fileID: 105322934} + - {fileID: 1200307848} + - {fileID: 1836751354} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &310092825 +--- !u!1 &214346212 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1513,38 +1550,91 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 310092826} - - component: {fileID: 310092828} - - component: {fileID: 310092827} + - component: {fileID: 214346214} + - component: {fileID: 214346213} m_Layer: 0 - m_Name: Individual - None 3 + m_Name: Grid - Masked m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &310092826 +--- !u!156049354 &214346213 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 214346212} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!4 &214346214 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 310092825} + m_GameObject: {fileID: 214346212} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 9, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 498093949} + - {fileID: 346258722} + - {fileID: 691802665} + - {fileID: 765619341} + - {fileID: 1141486180} + - {fileID: 845277303} + - {fileID: 189917554} + - {fileID: 1206244587} + - {fileID: 105777676} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &232875264 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 232875265} + - component: {fileID: 232875267} + - component: {fileID: 232875266} + m_Layer: 0 + m_Name: SRP - None + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &232875265 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 232875264} 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: 1892672332} + m_Father: {fileID: 1565511678} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &310092827 +--- !u!483693784 &232875266 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 310092825} + m_GameObject: {fileID: 232875264} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -1584,25 +1674,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 18 + m_SortingOrder: 21 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 2 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 0 ---- !u!1839735485 &310092828 +--- !u!1839735485 &232875267 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 310092825} + m_GameObject: {fileID: 232875264} m_Enabled: 1 m_Tiles: - - first: {x: -3, y: 3, z: 0} + - first: {x: -10, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -1665,7 +1755,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &337721037 +--- !u!1 &251715405 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1673,38 +1763,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 337721038} - - component: {fileID: 337721040} - - component: {fileID: 337721039} + - component: {fileID: 251715406} + - component: {fileID: 251715408} + - component: {fileID: 251715407} m_Layer: 0 - m_Name: Individual - VisibleInMask 2 + m_Name: Chunk - VisibleInMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &337721038 +--- !u!4 &251715406 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 337721037} + m_GameObject: {fileID: 251715405} 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: 1892672332} + m_Father: {fileID: 1178893847} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &337721039 +--- !u!483693784 &251715407 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 337721037} + m_GameObject: {fileID: 251715405} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -1742,27 +1832,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 15 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 7 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 0 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 1 ---- !u!1839735485 &337721040 +--- !u!1839735485 &251715408 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 337721037} + m_GameObject: {fileID: 251715405} m_Enabled: 1 m_Tiles: - - first: {x: -6, y: 3, z: 0} + - first: {x: -4, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -1825,7 +1915,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &338958899 +--- !u!1 &275741666 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1833,38 +1923,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 338958900} - - component: {fileID: 338958902} - - component: {fileID: 338958901} + - component: {fileID: 275741667} + - component: {fileID: 275741669} + - component: {fileID: 275741668} m_Layer: 0 - m_Name: Individual - VisibleInMask 3 + m_Name: Chunk - None 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &338958900 +--- !u!4 &275741667 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 338958899} + m_GameObject: {fileID: 275741666} 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: 1892672332} + m_Father: {fileID: 1178893847} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &338958901 +--- !u!483693784 &275741668 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 338958899} + m_GameObject: {fileID: 275741666} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -1902,27 +1992,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 17 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 8 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &338958902 + m_MaskInteraction: 0 +--- !u!1839735485 &275741669 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 338958899} + m_GameObject: {fileID: 275741666} m_Enabled: 1 m_Tiles: - - first: {x: -4, y: 3, z: 0} + - first: {x: -3, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -1964,8 +2054,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -1985,7 +2075,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &346258721 +--- !u!1 &300172610 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1993,38 +2083,91 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 346258722} - - component: {fileID: 346258724} - - component: {fileID: 346258723} + - component: {fileID: 300172612} + - component: {fileID: 300172611} m_Layer: 0 - m_Name: Chunk - None + m_Name: Grid m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &346258722 +--- !u!156049354 &300172611 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 300172610} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!4 &300172612 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 346258721} + m_GameObject: {fileID: 300172610} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 151928561} + - {fileID: 1005097838} + - {fileID: 1826794934} + - {fileID: 1604267346} + - {fileID: 916491935} + - {fileID: 917257771} + - {fileID: 1283665430} + - {fileID: 1039568809} + - {fileID: 1193809356} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &310092825 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 310092826} + - component: {fileID: 310092828} + - component: {fileID: 310092827} + m_Layer: 0 + m_Name: Individual - None 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &310092826 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 310092825} 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: 214346214} + m_Father: {fileID: 1892672332} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &346258723 +--- !u!483693784 &310092827 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 346258721} + m_GameObject: {fileID: 310092825} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2064,25 +2207,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 1 + m_SortingOrder: 18 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 0 + m_Mode: 1 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 0 ---- !u!1839735485 &346258724 +--- !u!1839735485 &310092828 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 346258721} + m_GameObject: {fileID: 310092825} m_Enabled: 1 m_Tiles: - - first: {x: -10, y: 3, z: 0} + - first: {x: -3, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -2145,7 +2288,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &375823832 +--- !u!1 &337721037 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2153,38 +2296,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 375823833} - - component: {fileID: 375823835} - - component: {fileID: 375823834} + - component: {fileID: 337721038} + - component: {fileID: 337721040} + - component: {fileID: 337721039} m_Layer: 0 - m_Name: Individual - None + m_Name: Individual - VisibleInMask 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &375823833 +--- !u!4 &337721038 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 375823832} + m_GameObject: {fileID: 337721037} 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: 1004531377} + m_Father: {fileID: 1892672332} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &375823834 +--- !u!483693784 &337721039 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 375823832} + m_GameObject: {fileID: 337721037} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2222,9 +2365,9 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 11 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 15 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -2232,17 +2375,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 1 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &375823835 + m_MaskInteraction: 1 +--- !u!1839735485 &337721040 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 375823832} + m_GameObject: {fileID: 337721037} m_Enabled: 1 m_Tiles: - - first: {x: -10, y: 3, z: 0} + - first: {x: -6, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -2284,8 +2427,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -2305,7 +2448,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &404659909 +--- !u!1 &338958899 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2313,38 +2456,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 404659910} - - component: {fileID: 404659912} - - component: {fileID: 404659911} + - component: {fileID: 338958900} + - component: {fileID: 338958902} + - component: {fileID: 338958901} m_Layer: 0 - m_Name: Individual - VisibleOutofMask + m_Name: Individual - VisibleInMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &404659910 +--- !u!4 &338958900 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 404659909} + m_GameObject: {fileID: 338958899} 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: 1004531377} + m_Father: {fileID: 1892672332} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &404659911 +--- !u!483693784 &338958901 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 404659909} + m_GameObject: {fileID: 338958899} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2382,9 +2525,9 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 12 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 17 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -2392,17 +2535,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 1 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 2 ---- !u!1839735485 &404659912 + m_MaskInteraction: 1 +--- !u!1839735485 &338958902 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 404659909} + m_GameObject: {fileID: 338958899} m_Enabled: 1 m_Tiles: - - first: {x: -9, y: 3, z: 0} + - first: {x: -4, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -2444,8 +2587,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -9, y: 0, z: 0} - m_Size: {x: 9, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -2465,7 +2608,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &461063003 +--- !u!1 &346258721 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2473,38 +2616,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 461063004} - - component: {fileID: 461063006} - - component: {fileID: 461063005} + - component: {fileID: 346258722} + - component: {fileID: 346258724} + - component: {fileID: 346258723} m_Layer: 0 - m_Name: Individual - VisibleOutofMask 3 + m_Name: Chunk - None m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &461063004 +--- !u!4 &346258722 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 461063003} + m_GameObject: {fileID: 346258721} 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: 1892672332} + m_Father: {fileID: 214346214} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &461063005 +--- !u!483693784 &346258723 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 461063003} + m_GameObject: {fileID: 346258721} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2544,25 +2687,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 16 + m_SortingOrder: 1 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 2 ---- !u!1839735485 &461063006 + m_MaskInteraction: 0 +--- !u!1839735485 &346258724 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 461063003} + m_GameObject: {fileID: 346258721} m_Enabled: 1 m_Tiles: - - first: {x: -5, y: 3, z: 0} + - first: {x: -10, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -2604,8 +2747,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -9, y: 0, z: 0} - m_Size: {x: 9, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -2625,7 +2768,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &498093948 +--- !u!1 &375823832 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2633,38 +2776,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 498093949} - - component: {fileID: 498093951} - - component: {fileID: 498093950} + - component: {fileID: 375823833} + - component: {fileID: 375823835} + - component: {fileID: 375823834} m_Layer: 0 - m_Name: Chunk - VisibleInMask + m_Name: Individual - None m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &498093949 +--- !u!4 &375823833 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 498093948} + m_GameObject: {fileID: 375823832} 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: 214346214} + m_Father: {fileID: 1004531377} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &498093950 +--- !u!483693784 &375823834 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 498093948} + m_GameObject: {fileID: 375823832} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2702,27 +2845,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 11 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 0 + m_Mode: 1 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &498093951 + m_MaskInteraction: 0 +--- !u!1839735485 &375823835 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 498093948} + m_GameObject: {fileID: 375823832} m_Enabled: 1 m_Tiles: - - first: {x: -11, y: 3, z: 0} + - first: {x: -10, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -2764,8 +2907,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -2785,7 +2928,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &551400981 +--- !u!1 &404659909 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2793,128 +2936,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 551400983} - - component: {fileID: 551400982} + - component: {fileID: 404659910} + - component: {fileID: 404659912} + - component: {fileID: 404659911} m_Layer: 0 - m_Name: SpriteMask + m_Name: Individual - VisibleOutofMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!331 &551400982 -SpriteMask: +--- !u!4 &404659910 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 551400981} - 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: 0 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_ForceMeshLod: -1 - m_MeshLodSelectionBias: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, 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_Sprite: {fileID: 21300000, guid: 8e160a2a620644cd6afef9119dad1093, type: 3} - m_MaskAlphaCutoff: 0.2 - m_FrontSortingLayerID: 0 - m_BackSortingLayerID: 0 - m_FrontSortingLayer: 0 - m_BackSortingLayer: 0 - m_FrontSortingOrder: 0 - m_BackSortingOrder: 0 - m_IsCustomRangeActive: 0 - m_SpriteSortPoint: 0 - m_MaskSource: 0 ---- !u!4 &551400983 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 551400981} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 8.675, 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 &662210485 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 662210486} - - component: {fileID: 662210488} - - component: {fileID: 662210487} - m_Layer: 0 - m_Name: Chunk - VisibleOutofMask 3 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &662210486 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 662210485} + m_GameObject: {fileID: 404659909} 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: 1178893847} + m_Father: {fileID: 1004531377} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &662210487 +--- !u!483693784 &404659911 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 662210485} + m_GameObject: {fileID: 404659909} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2954,25 +3007,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 6 + m_SortingOrder: 12 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 0 + m_Mode: 1 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 2 ---- !u!1839735485 &662210488 +--- !u!1839735485 &404659912 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 662210485} + m_GameObject: {fileID: 404659909} m_Enabled: 1 m_Tiles: - - first: {x: -5, y: 3, z: 0} + - first: {x: -9, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -3035,7 +3088,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &667235944 +--- !u!1 &461063003 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3043,38 +3096,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 667235945} - - component: {fileID: 667235947} - - component: {fileID: 667235946} + - component: {fileID: 461063004} + - component: {fileID: 461063006} + - component: {fileID: 461063005} m_Layer: 0 - m_Name: Individual - VisibleInMask 2 + m_Name: Individual - VisibleOutofMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &667235945 +--- !u!4 &461063004 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 667235944} + m_GameObject: {fileID: 461063003} 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: 1004531377} + m_Father: {fileID: 1892672332} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &667235946 +--- !u!483693784 &461063005 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 667235944} + m_GameObject: {fileID: 461063003} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3112,9 +3165,9 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 15 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 16 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -3122,17 +3175,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 1 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &667235947 + m_MaskInteraction: 2 +--- !u!1839735485 &461063006 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 667235944} + m_GameObject: {fileID: 461063003} m_Enabled: 1 m_Tiles: - - first: {x: -6, y: 3, z: 0} + - first: {x: -5, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -3174,8 +3227,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -3195,7 +3248,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &669558725 +--- !u!1 &476499347 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3203,38 +3256,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 669558726} - - component: {fileID: 669558728} - - component: {fileID: 669558727} + - component: {fileID: 476499348} + - component: {fileID: 476499350} + - component: {fileID: 476499349} m_Layer: 0 - m_Name: SRP - VisibleOutofMask + m_Name: Chunk - Shader - VisibleInMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &669558726 +--- !u!4 &476499348 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 669558725} + m_GameObject: {fileID: 476499347} 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: 1565511678} + m_Father: {fileID: 205137524} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &669558727 +--- !u!483693784 &476499349 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 669558725} + m_GameObject: {fileID: 476499347} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3253,7 +3306,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3274,25 +3327,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 22 + m_SortingOrder: 0 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 2 ---- !u!1839735485 &669558728 + m_MaskInteraction: 1 +--- !u!1839735485 &476499350 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 669558725} + m_GameObject: {fileID: 476499347} m_Enabled: 1 m_Tiles: - - first: {x: -9, y: 3, z: 0} + - first: {x: -11, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -3334,8 +3387,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -9, y: 0, z: 0} - m_Size: {x: 9, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -3355,7 +3408,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &691802664 +--- !u!1 &498093948 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3363,23 +3416,23 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 691802665} - - component: {fileID: 691802667} - - component: {fileID: 691802666} + - component: {fileID: 498093949} + - component: {fileID: 498093951} + - component: {fileID: 498093950} m_Layer: 0 - m_Name: Chunk - VisibleOutofMask + m_Name: Chunk - VisibleInMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &691802665 +--- !u!4 &498093949 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 691802664} + m_GameObject: {fileID: 498093948} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -3388,13 +3441,13 @@ Transform: m_Children: [] m_Father: {fileID: 214346214} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &691802666 +--- !u!483693784 &498093950 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 691802664} + m_GameObject: {fileID: 498093948} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3434,7 +3487,7 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 2 + m_SortingOrder: 0 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -3442,17 +3495,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 2 ---- !u!1839735485 &691802667 + m_MaskInteraction: 1 +--- !u!1839735485 &498093951 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 691802664} + m_GameObject: {fileID: 498093948} m_Enabled: 1 m_Tiles: - - first: {x: -9, y: 3, z: 0} + - first: {x: -11, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -3494,8 +3547,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -9, y: 0, z: 0} - m_Size: {x: 9, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -3515,7 +3568,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &765619340 +--- !u!1 &551400981 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3523,46 +3576,30 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 765619341} - - component: {fileID: 765619343} - - component: {fileID: 765619342} + - component: {fileID: 551400983} + - component: {fileID: 551400982} m_Layer: 0 - m_Name: Chunk - None 2 + m_Name: SpriteMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &765619341 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 765619340} - 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: 214346214} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &765619342 -TilemapRenderer: +--- !u!331 &551400982 +SpriteMask: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 765619340} + m_GameObject: {fileID: 551400981} m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_RayTracingMode: 0 m_RayTraceProcedural: 0 m_RayTracingAccelStructBuildFlagsOverride: 0 @@ -3573,7 +3610,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3586,96 +3623,42 @@ TilemapRenderer: m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 0 + m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 3 - m_ChunkSize: {x: 32, y: 32, z: 32} - m_ChunkCullingBounds: {x: 0, y: 0, z: 0} - m_MaxChunkCount: 16 - m_MaxFrameAge: 16 - m_SortOrder: 0 - m_Mode: 0 - m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &765619343 -Tilemap: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 765619340} - m_Enabled: 1 - m_Tiles: - - first: {x: -8, y: 3, z: 0} - second: - serializedVersion: 2 - m_TileIndex: 0 - m_TileSpriteIndex: 0 - m_TileMatrixIndex: 0 - m_TileColorIndex: 0 - m_TileObjectToInstantiateIndex: 65535 - dummyAlignment: 0 - m_AllTileFlags: 1073741825 - m_AnimatedTiles: {} - m_TileAssetArray: - - m_RefCount: 1 - m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} - m_TileSpriteArray: - - m_RefCount: 1 - m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} - m_TileMatrixArray: - - m_RefCount: 1 - m_Data: - 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_TileColorArray: - - m_RefCount: 1 - m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} - m_TileObjectToInstantiateArray: [] - m_AnimationFrameRate: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} - m_TileAnchor: {x: 0.5, y: 0.5, z: 0} - m_TileOrientation: 0 - m_TileOrientationMatrix: - 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 ---- !u!1 &776243399 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 8e160a2a620644cd6afef9119dad1093, type: 3} + m_MaskAlphaCutoff: 0.2 + m_FrontSortingLayerID: 0 + m_BackSortingLayerID: 0 + m_FrontSortingLayer: 0 + m_BackSortingLayer: 0 + m_FrontSortingOrder: 0 + m_BackSortingOrder: 0 + m_IsCustomRangeActive: 0 + m_SpriteSortPoint: 0 + m_MaskSource: 0 +--- !u!4 &551400983 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 551400981} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 8.675, y: 5.5, 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 &662210485 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3683,38 +3666,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 776243400} - - component: {fileID: 776243402} - - component: {fileID: 776243401} + - component: {fileID: 662210486} + - component: {fileID: 662210488} + - component: {fileID: 662210487} m_Layer: 0 - m_Name: Individual - VisibleOutofMask + m_Name: Chunk - VisibleOutofMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &776243400 +--- !u!4 &662210486 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 776243399} + m_GameObject: {fileID: 662210485} 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: 1892672332} + m_Father: {fileID: 1178893847} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &776243401 +--- !u!483693784 &662210487 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 776243399} + m_GameObject: {fileID: 662210485} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3752,27 +3735,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 12 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 6 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 0 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 2 ---- !u!1839735485 &776243402 +--- !u!1839735485 &662210488 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 776243399} + m_GameObject: {fileID: 662210485} m_Enabled: 1 m_Tiles: - - first: {x: -9, y: 3, z: 0} + - first: {x: -5, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -3835,7 +3818,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &845277302 +--- !u!1 &667235944 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3843,38 +3826,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 845277303} - - component: {fileID: 845277305} - - component: {fileID: 845277304} + - component: {fileID: 667235945} + - component: {fileID: 667235947} + - component: {fileID: 667235946} m_Layer: 0 - m_Name: Chunk - VisibleInMask 2 + m_Name: Individual - VisibleInMask 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &845277303 +--- !u!4 &667235945 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 845277302} + m_GameObject: {fileID: 667235944} 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: 214346214} + m_Father: {fileID: 1004531377} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &845277304 +--- !u!483693784 &667235946 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 845277302} + m_GameObject: {fileID: 667235944} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3912,24 +3895,24 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 5 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 15 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 0 + m_Mode: 1 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 1 ---- !u!1839735485 &845277305 +--- !u!1839735485 &667235947 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 845277302} + m_GameObject: {fileID: 667235944} m_Enabled: 1 m_Tiles: - first: {x: -6, y: 3, z: 0} @@ -3995,7 +3978,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &869160092 +--- !u!1 &669558725 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4003,38 +3986,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 869160093} - - component: {fileID: 869160095} - - component: {fileID: 869160094} + - component: {fileID: 669558726} + - component: {fileID: 669558728} + - component: {fileID: 669558727} m_Layer: 0 - m_Name: Individual - None + m_Name: SRP - VisibleOutofMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &869160093 +--- !u!4 &669558726 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 869160092} + m_GameObject: {fileID: 669558725} 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: 1892672332} + m_Father: {fileID: 1565511678} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &869160094 +--- !u!483693784 &669558727 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 869160092} + m_GameObject: {fileID: 669558725} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4074,25 +4057,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 11 + m_SortingOrder: 22 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 2 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &869160095 + m_MaskInteraction: 2 +--- !u!1839735485 &669558728 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 869160092} + m_GameObject: {fileID: 669558725} m_Enabled: 1 m_Tiles: - - first: {x: -10, y: 3, z: 0} + - first: {x: -9, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -4134,8 +4117,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -4155,7 +4138,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &894406764 +--- !u!1 &691802664 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4163,9 +4146,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 894406765} - - component: {fileID: 894406767} - - component: {fileID: 894406766} + - component: {fileID: 691802665} + - component: {fileID: 691802667} + - component: {fileID: 691802666} m_Layer: 0 m_Name: Chunk - VisibleOutofMask m_TagString: Untagged @@ -4173,28 +4156,28 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &894406765 +--- !u!4 &691802665 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894406764} + m_GameObject: {fileID: 691802664} 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: 1178893847} + m_Father: {fileID: 214346214} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &894406766 +--- !u!483693784 &691802666 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894406764} + m_GameObject: {fileID: 691802664} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4232,8 +4215,8 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 m_SortingOrder: 2 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} @@ -4243,13 +4226,13 @@ TilemapRenderer: m_Mode: 0 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 2 ---- !u!1839735485 &894406767 +--- !u!1839735485 &691802667 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894406764} + m_GameObject: {fileID: 691802664} m_Enabled: 1 m_Tiles: - first: {x: -9, y: 3, z: 0} @@ -4315,7 +4298,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &913442844 +--- !u!1 &765619340 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4323,38 +4306,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 913442845} - - component: {fileID: 913442847} - - component: {fileID: 913442846} + - component: {fileID: 765619341} + - component: {fileID: 765619343} + - component: {fileID: 765619342} m_Layer: 0 - m_Name: SRP - None 2 + m_Name: Chunk - None 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &913442845 +--- !u!4 &765619341 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 913442844} + m_GameObject: {fileID: 765619340} 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: 1565511678} + m_Father: {fileID: 214346214} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &913442846 +--- !u!483693784 &765619342 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 913442844} + m_GameObject: {fileID: 765619340} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4394,22 +4377,22 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 23 + m_SortingOrder: 3 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 0 ---- !u!1839735485 &913442847 +--- !u!1839735485 &765619343 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 913442844} + m_GameObject: {fileID: 765619340} m_Enabled: 1 m_Tiles: - first: {x: -8, y: 3, z: 0} @@ -4475,7 +4458,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &916491934 +--- !u!1 &776243399 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4483,38 +4466,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 916491935} - - component: {fileID: 916491937} - - component: {fileID: 916491936} - m_Layer: 0 - m_Name: SRP - VisibleOutofMask 2 + - component: {fileID: 776243400} + - component: {fileID: 776243402} + - component: {fileID: 776243401} + m_Layer: 0 + m_Name: Individual - VisibleOutofMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &916491935 +--- !u!4 &776243400 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 916491934} + m_GameObject: {fileID: 776243399} 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: 300172612} + m_Father: {fileID: 1892672332} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &916491936 +--- !u!483693784 &776243401 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 916491934} + m_GameObject: {fileID: 776243399} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4552,27 +4535,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 24 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 12 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 1 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 2 ---- !u!1839735485 &916491937 +--- !u!1839735485 &776243402 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 916491934} + m_GameObject: {fileID: 776243399} m_Enabled: 1 m_Tiles: - - first: {x: -7, y: 3, z: 0} + - first: {x: -9, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -4635,7 +4618,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &917257770 +--- !u!1 &845277302 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4643,38 +4626,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 917257771} - - component: {fileID: 917257773} - - component: {fileID: 917257772} + - component: {fileID: 845277303} + - component: {fileID: 845277305} + - component: {fileID: 845277304} m_Layer: 0 - m_Name: SRP - VisibleInMask 2 + m_Name: Chunk - VisibleInMask 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &917257771 +--- !u!4 &845277303 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 917257770} + m_GameObject: {fileID: 845277302} 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: 300172612} + m_Father: {fileID: 214346214} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &917257772 +--- !u!483693784 &845277304 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 917257770} + m_GameObject: {fileID: 845277302} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4712,24 +4695,24 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 25 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 5 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 1 ---- !u!1839735485 &917257773 +--- !u!1839735485 &845277305 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 917257770} + m_GameObject: {fileID: 845277302} m_Enabled: 1 m_Tiles: - first: {x: -6, y: 3, z: 0} @@ -4795,7 +4778,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &961739749 +--- !u!1 &864839691 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4803,170 +4786,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 961739753} - - component: {fileID: 961739752} - - component: {fileID: 961739751} - - component: {fileID: 961739750} - - component: {fileID: 961739754} + - component: {fileID: 864839693} + - component: {fileID: 864839692} m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + m_Name: Grid + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &961739750 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 961739749} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_RenderShadows: 1 - m_RequiresDepthTextureOption: 2 - m_RequiresOpaqueTextureOption: 2 - m_CameraType: 0 - m_Cameras: [] - m_RendererIndex: -1 - m_VolumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - m_VolumeTrigger: {fileID: 0} - m_VolumeFrameworkUpdateModeOption: 2 - m_RenderPostProcessing: 0 - m_Antialiasing: 0 - m_AntialiasingQuality: 2 - m_StopNaN: 0 - m_Dithering: 0 - m_ClearDepth: 1 - m_AllowXRRendering: 1 - m_AllowHDROutput: 1 - m_UseScreenCoordOverride: 0 - m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} - m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} - m_RequiresDepthTexture: 0 - m_RequiresColorTexture: 0 - m_TaaSettings: - m_Quality: 3 - m_FrameInfluence: 0.1 - m_JitterScale: 1 - m_MipBias: 0 - m_VarianceClampScale: 0.9 - m_ContrastAdaptiveSharpening: 0 - m_Version: 2 ---- !u!81 &961739751 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 961739749} - m_Enabled: 1 ---- !u!20 &961739752 -Camera: +--- !u!156049354 &864839692 +Grid: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 961739749} + m_GameObject: {fileID: 864839691} m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 2 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_FocusDistance: 10 - m_FocalLength: 50 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 1 - orthographic size: 6 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &961739753 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!4 &864839693 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 961739749} + m_GameObject: {fileID: 864839691} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5, y: 1, z: -10} + m_LocalPosition: {x: 0, y: -6, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 47282884} + - {fileID: 1593276511} + - {fileID: 1104107610} + - {fileID: 1762039872} + - {fileID: 1734833073} + - {fileID: 1797162802} + - {fileID: 990018667} + - {fileID: 1760346236} + - {fileID: 1058434175} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &961739754 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 961739749} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} - m_Name: - m_EditorClassIdentifier: - ImageComparisonSettings: - TargetWidth: 1280 - TargetHeight: 720 - TargetMSAASamples: 1 - PerPixelCorrectnessThreshold: 0.001 - PerPixelGammaThreshold: 0.003921569 - PerPixelAlphaThreshold: 0.003921569 - RMSEThreshold: 0 - AverageCorrectnessThreshold: 0.005 - IncorrectPixelsThreshold: 0.0000038146973 - UseHDR: 0 - UseBackBuffer: 0 - ImageResolution: 2 - ActiveImageTests: 1 - ActivePixelTests: -1 - WaitFrames: 0 - XRCompatible: 0 - gpuDrivenCompatible: 1 - CheckMemoryAllocation: 0 - renderBackendCompatibility: 2 - SetBackBufferResolution: 0 ---- !u!1 &986076899 +--- !u!1 &869160092 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4974,38 +4839,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 986076900} - - component: {fileID: 986076902} - - component: {fileID: 986076901} + - component: {fileID: 869160093} + - component: {fileID: 869160095} + - component: {fileID: 869160094} m_Layer: 0 - m_Name: Chunk - VisibleInMask 2 + m_Name: Individual - None m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &986076900 +--- !u!4 &869160093 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 986076899} + m_GameObject: {fileID: 869160092} 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: 1178893847} + m_Father: {fileID: 1892672332} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &986076901 +--- !u!483693784 &869160094 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 986076899} + m_GameObject: {fileID: 869160092} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -5043,27 +4908,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 5 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 11 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 0 + m_Mode: 1 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &986076902 + m_MaskInteraction: 0 +--- !u!1839735485 &869160095 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 986076899} + m_GameObject: {fileID: 869160092} m_Enabled: 1 m_Tiles: - - first: {x: -6, y: 3, z: 0} + - first: {x: -10, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -5105,8 +4970,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -5126,7 +4991,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1004531375 +--- !u!1 &894406764 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5134,52 +4999,3156 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1004531377} - - component: {fileID: 1004531376} + - component: {fileID: 894406765} + - component: {fileID: 894406767} + - component: {fileID: 894406766} m_Layer: 0 - m_Name: Grid + m_Name: Chunk - VisibleOutofMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!156049354 &1004531376 -Grid: +--- !u!4 &894406765 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1004531375} + m_GameObject: {fileID: 894406764} + 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: 1178893847} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &894406766 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894406764} m_Enabled: 1 - m_CellSize: {x: 1, y: 1, z: 0} - m_CellGap: {x: 0, y: 0, z: 0} - m_CellLayout: 0 - m_CellSwizzle: 0 ---- !u!4 &1004531377 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + 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: 2 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 2 +--- !u!1839735485 &894406767 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894406764} + m_Enabled: 1 + m_Tiles: + - first: {x: -9, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &913442844 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 913442845} + - component: {fileID: 913442847} + - component: {fileID: 913442846} + m_Layer: 0 + m_Name: SRP - None 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &913442845 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1004531375} + m_GameObject: {fileID: 913442844} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -2, z: 0} + 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: 1671714893} - - {fileID: 375823833} - - {fileID: 404659910} - - {fileID: 1559275875} - - {fileID: 1144401961} - - {fileID: 667235945} - - {fileID: 1519488781} - - {fileID: 1758990594} - - {fileID: 4449893} - m_Father: {fileID: 0} + m_Children: [] + m_Father: {fileID: 1565511678} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1005097837 +--- !u!483693784 &913442846 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913442844} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 23 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 2 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1839735485 &913442847 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913442844} + m_Enabled: 1 + m_Tiles: + - first: {x: -8, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &916491934 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 916491935} + - component: {fileID: 916491937} + - component: {fileID: 916491936} + m_Layer: 0 + m_Name: SRP - VisibleOutofMask 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &916491935 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916491934} + 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: 300172612} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &916491936 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916491934} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + 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: 24 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 2 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 2 +--- !u!1839735485 &916491937 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 916491934} + m_Enabled: 1 + m_Tiles: + - first: {x: -7, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &917257770 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 917257771} + - component: {fileID: 917257773} + - component: {fileID: 917257772} + m_Layer: 0 + m_Name: SRP - VisibleInMask 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &917257771 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917257770} + 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: 300172612} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &917257772 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917257770} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + 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: 25 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 2 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 1 +--- !u!1839735485 &917257773 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917257770} + m_Enabled: 1 + m_Tiles: + - first: {x: -6, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &961739749 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 961739753} + - component: {fileID: 961739752} + - component: {fileID: 961739751} + - component: {fileID: 961739750} + - component: {fileID: 961739754} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &961739750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 + m_Version: 2 +--- !u!81 &961739751 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_Enabled: 1 +--- !u!20 &961739752 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 6 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &961739753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.5, y: 1, z: -10} + 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!114 &961739754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961739749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} + m_Name: + m_EditorClassIdentifier: + ImageComparisonSettings: + TargetWidth: 1280 + TargetHeight: 720 + TargetMSAASamples: 1 + PerPixelCorrectnessThreshold: 0.001 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 + RMSEThreshold: 0 + AverageCorrectnessThreshold: 0.005 + IncorrectPixelsThreshold: 0.0000038146973 + UseHDR: 0 + UseBackBuffer: 0 + ImageResolution: 2 + ActiveImageTests: 1 + ActivePixelTests: -1 + WaitFrames: 0 + XRCompatible: 0 + gpuDrivenCompatible: 1 + CheckMemoryAllocation: 0 + renderBackendCompatibility: 2 + SetBackBufferResolution: 0 +--- !u!1 &986076899 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 986076900} + - component: {fileID: 986076902} + - component: {fileID: 986076901} + m_Layer: 0 + m_Name: Chunk - VisibleInMask 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &986076900 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 986076899} + 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: 1178893847} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &986076901 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 986076899} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + 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: 5 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 1 +--- !u!1839735485 &986076902 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 986076899} + m_Enabled: 1 + m_Tiles: + - first: {x: -6, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &990018666 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 990018667} + - component: {fileID: 990018669} + - component: {fileID: 990018668} + m_Layer: 0 + m_Name: Chunk - Shader - VisibleOutofMask 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &990018667 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990018666} + 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: 864839693} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &990018668 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990018666} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, 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: 0 + 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: 6 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 2 +--- !u!1839735485 &990018669 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990018666} + m_Enabled: 1 + m_Tiles: + - first: {x: -5, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1004531375 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1004531377} + - component: {fileID: 1004531376} + m_Layer: 0 + m_Name: Grid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!156049354 &1004531376 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1004531375} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!4 &1004531377 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1004531375} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1671714893} + - {fileID: 375823833} + - {fileID: 404659910} + - {fileID: 1559275875} + - {fileID: 1144401961} + - {fileID: 667235945} + - {fileID: 1519488781} + - {fileID: 1758990594} + - {fileID: 4449893} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1005097837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1005097838} + - component: {fileID: 1005097840} + - component: {fileID: 1005097839} + m_Layer: 0 + m_Name: SRP - None + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1005097838 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005097837} + 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: 300172612} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1005097839 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005097837} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + 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: 21 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 2 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1839735485 &1005097840 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1005097837} + m_Enabled: 1 + m_Tiles: + - first: {x: -10, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1035381096 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1035381097} + - component: {fileID: 1035381099} + - component: {fileID: 1035381098} + m_Layer: 0 + m_Name: Chunk - None + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1035381097 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381096} + 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: 1178893847} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1035381098 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381096} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + 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: 1 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1839735485 &1035381099 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381096} + m_Enabled: 1 + m_Tiles: + - first: {x: -10, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1039568808 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1039568809} + - component: {fileID: 1039568811} + - component: {fileID: 1039568810} + m_Layer: 0 + m_Name: SRP - VisibleInMask 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1039568809 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1039568808} + 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: 300172612} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1039568810 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1039568808} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + 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: 27 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 2 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 1 +--- !u!1839735485 &1039568811 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1039568808} + m_Enabled: 1 + m_Tiles: + - first: {x: -4, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1058434174 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1058434175} + - component: {fileID: 1058434177} + - component: {fileID: 1058434176} + m_Layer: 0 + m_Name: Chunk - Shader - None 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1058434175 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058434174} + 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: 864839693} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1058434176 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058434174} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, 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: 0 + 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: 8 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1839735485 &1058434177 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1058434174} + m_Enabled: 1 + m_Tiles: + - first: {x: -3, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1074892090 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1074892091} + - component: {fileID: 1074892093} + - component: {fileID: 1074892092} + m_Layer: 0 + m_Name: Individual - VisibleInMask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1074892091 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1074892090} + 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: 1892672332} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1074892092 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1074892090} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 10 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 1 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 1 +--- !u!1839735485 &1074892093 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1074892090} + m_Enabled: 1 + m_Tiles: + - first: {x: -11, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1104107609 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1104107610} + - component: {fileID: 1104107612} + - component: {fileID: 1104107611} + m_Layer: 0 + m_Name: Chunk - Shader - VisibleOutofMask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1104107610 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1104107609} + 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: 864839693} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1104107611 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1104107609} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, 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: 0 + 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: 2 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 2 +--- !u!1839735485 &1104107612 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1104107609} + m_Enabled: 1 + m_Tiles: + - first: {x: -9, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1112152106 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1112152107} + - component: {fileID: 1112152109} + - component: {fileID: 1112152108} + m_Layer: 0 + m_Name: Chunk - Shader - VisibleOutofMask + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1112152107 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1112152106} + 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: 205137524} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1112152108 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1112152106} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 2 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 2 +--- !u!1839735485 &1112152109 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1112152106} + m_Enabled: 1 + m_Tiles: + - first: {x: -9, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1141486179 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1141486180} + - component: {fileID: 1141486182} + - component: {fileID: 1141486181} + m_Layer: 0 + m_Name: Chunk - VisibleOutofMask 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1141486180 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141486179} + 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: 214346214} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1141486181 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141486179} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 4 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 2 +--- !u!1839735485 &1141486182 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1141486179} + m_Enabled: 1 + m_Tiles: + - first: {x: -7, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1144401960 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1144401961} + - component: {fileID: 1144401963} + - component: {fileID: 1144401962} + m_Layer: 0 + m_Name: Individual - VisibleOutofMask 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1144401961 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1144401960} + 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: 1004531377} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1144401962 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1144401960} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + 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: 14 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 1 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 2 +--- !u!1839735485 &1144401963 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1144401960} + m_Enabled: 1 + m_Tiles: + - first: {x: -7, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1171950133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1171950134} + - component: {fileID: 1171950136} + - component: {fileID: 1171950135} + m_Layer: 0 + m_Name: SRP - VisibleOutofMask 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1171950134 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1171950133} + 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: 1565511678} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1171950135 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1171950133} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 26 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 2 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 2 +--- !u!1839735485 &1171950136 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1171950133} + m_Enabled: 1 + m_Tiles: + - first: {x: -5, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1178893845 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1178893847} + - component: {fileID: 1178893846} + m_Layer: 0 + m_Name: Grid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!156049354 &1178893846 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178893845} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!4 &1178893847 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178893845} + 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: 2077023562} + - {fileID: 1035381097} + - {fileID: 894406765} + - {fileID: 1953022102} + - {fileID: 1455562697} + - {fileID: 986076900} + - {fileID: 662210486} + - {fileID: 251715406} + - {fileID: 275741667} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1193809355 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1193809356} + - component: {fileID: 1193809358} + - component: {fileID: 1193809357} + m_Layer: 0 + m_Name: SRP - None 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1193809356 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1193809355} + 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: 300172612} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1193809357 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1193809355} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 0 + 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: 28 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 2 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1839735485 &1193809358 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1193809355} + m_Enabled: 1 + m_Tiles: + - first: {x: -3, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1200307847 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1200307848} + - component: {fileID: 1200307850} + - component: {fileID: 1200307849} + m_Layer: 0 + m_Name: Chunk - Shader - VisibleInMask 3 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1200307848 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1200307847} + 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: 205137524} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1200307849 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1200307847} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 7 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 1 +--- !u!1839735485 &1200307850 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1200307847} + m_Enabled: 1 + m_Tiles: + - first: {x: -4, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 +--- !u!1 &1206244586 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5187,38 +8156,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1005097838} - - component: {fileID: 1005097840} - - component: {fileID: 1005097839} + - component: {fileID: 1206244587} + - component: {fileID: 1206244589} + - component: {fileID: 1206244588} m_Layer: 0 - m_Name: SRP - None + m_Name: Chunk - VisibleInMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1005097838 +--- !u!4 &1206244587 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1005097837} + m_GameObject: {fileID: 1206244586} 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: 300172612} + m_Father: {fileID: 214346214} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1005097839 +--- !u!483693784 &1206244588 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1005097837} + m_GameObject: {fileID: 1206244586} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -5256,27 +8225,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 21 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 7 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &1005097840 + m_MaskInteraction: 1 +--- !u!1839735485 &1206244589 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1005097837} + m_GameObject: {fileID: 1206244586} m_Enabled: 1 m_Tiles: - - first: {x: -10, y: 3, z: 0} + - first: {x: -4, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -5318,8 +8287,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -5339,7 +8308,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1035381096 +--- !u!1 &1283665429 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5347,38 +8316,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1035381097} - - component: {fileID: 1035381099} - - component: {fileID: 1035381098} + - component: {fileID: 1283665430} + - component: {fileID: 1283665432} + - component: {fileID: 1283665431} m_Layer: 0 - m_Name: Chunk - None + m_Name: SRP - VisibleOutofMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1035381097 +--- !u!4 &1283665430 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035381096} + m_GameObject: {fileID: 1283665429} 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: 1178893847} + m_Father: {fileID: 300172612} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1035381098 +--- !u!483693784 &1283665431 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035381096} + m_GameObject: {fileID: 1283665429} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -5418,25 +8387,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 1 + m_SortingOrder: 26 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 0 + m_Mode: 2 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &1035381099 + m_MaskInteraction: 2 +--- !u!1839735485 &1283665432 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035381096} + m_GameObject: {fileID: 1283665429} m_Enabled: 1 m_Tiles: - - first: {x: -10, y: 3, z: 0} + - first: {x: -5, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -5478,8 +8447,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -5499,7 +8468,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1039568808 +--- !u!1 &1378598772 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5507,38 +8476,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1039568809} - - component: {fileID: 1039568811} - - component: {fileID: 1039568810} + - component: {fileID: 1378598773} + - component: {fileID: 1378598775} + - component: {fileID: 1378598774} m_Layer: 0 - m_Name: SRP - VisibleInMask 3 + m_Name: SRP - None 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1039568809 +--- !u!4 &1378598773 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1039568808} + m_GameObject: {fileID: 1378598772} 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: 300172612} + m_Father: {fileID: 1565511678} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1039568810 +--- !u!483693784 &1378598774 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1039568808} + m_GameObject: {fileID: 1378598772} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -5576,9 +8545,9 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 27 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 28 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -5586,17 +8555,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 2 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &1039568811 + m_MaskInteraction: 0 +--- !u!1839735485 &1378598775 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1039568808} + m_GameObject: {fileID: 1378598772} m_Enabled: 1 m_Tiles: - - first: {x: -4, y: 3, z: 0} + - first: {x: -3, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -5638,8 +8607,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -5659,7 +8628,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1074892090 +--- !u!1 &1448817525 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5667,38 +8636,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1074892091} - - component: {fileID: 1074892093} - - component: {fileID: 1074892092} + - component: {fileID: 1448817526} + - component: {fileID: 1448817528} + - component: {fileID: 1448817527} m_Layer: 0 - m_Name: Individual - VisibleInMask + m_Name: SRP - VisibleInMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1074892091 +--- !u!4 &1448817526 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1074892090} + m_GameObject: {fileID: 1448817525} 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: 1892672332} + m_Father: {fileID: 1565511678} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1074892092 +--- !u!483693784 &1448817527 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1074892090} + m_GameObject: {fileID: 1448817525} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -5738,22 +8707,22 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 10 + m_SortingOrder: 20 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 2 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 1 ---- !u!1839735485 &1074892093 +--- !u!1839735485 &1448817528 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1074892090} + m_GameObject: {fileID: 1448817525} m_Enabled: 1 m_Tiles: - first: {x: -11, y: 3, z: 0} @@ -5819,7 +8788,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1141486179 +--- !u!1 &1455562696 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5827,9 +8796,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1141486180} - - component: {fileID: 1141486182} - - component: {fileID: 1141486181} + - component: {fileID: 1455562697} + - component: {fileID: 1455562699} + - component: {fileID: 1455562698} m_Layer: 0 m_Name: Chunk - VisibleOutofMask 2 m_TagString: Untagged @@ -5837,28 +8806,28 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1141486180 +--- !u!4 &1455562697 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1141486179} + m_GameObject: {fileID: 1455562696} 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: 214346214} + m_Father: {fileID: 1178893847} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1141486181 +--- !u!483693784 &1455562698 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1141486179} + m_GameObject: {fileID: 1455562696} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -5896,8 +8865,8 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 m_SortingOrder: 4 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} @@ -5907,13 +8876,13 @@ TilemapRenderer: m_Mode: 0 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 2 ---- !u!1839735485 &1141486182 +--- !u!1839735485 &1455562699 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1141486179} + m_GameObject: {fileID: 1455562696} m_Enabled: 1 m_Tiles: - first: {x: -7, y: 3, z: 0} @@ -5979,7 +8948,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1144401960 +--- !u!1 &1519488780 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5987,23 +8956,23 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1144401961} - - component: {fileID: 1144401963} - - component: {fileID: 1144401962} + - component: {fileID: 1519488781} + - component: {fileID: 1519488783} + - component: {fileID: 1519488782} m_Layer: 0 - m_Name: Individual - VisibleOutofMask 2 + m_Name: Individual - VisibleOutofMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1144401961 +--- !u!4 &1519488781 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1144401960} + m_GameObject: {fileID: 1519488780} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -6012,13 +8981,13 @@ Transform: m_Children: [] m_Father: {fileID: 1004531377} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1144401962 +--- !u!483693784 &1519488782 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1144401960} + m_GameObject: {fileID: 1519488780} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6058,7 +9027,7 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 14 + m_SortingOrder: 16 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -6067,16 +9036,16 @@ TilemapRenderer: m_Mode: 1 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 2 ---- !u!1839735485 &1144401963 +--- !u!1839735485 &1519488783 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1144401960} + m_GameObject: {fileID: 1519488780} m_Enabled: 1 m_Tiles: - - first: {x: -7, y: 3, z: 0} + - first: {x: -5, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -6139,7 +9108,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1171950133 +--- !u!1 &1528018617 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6147,38 +9116,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1171950134} - - component: {fileID: 1171950136} - - component: {fileID: 1171950135} + - component: {fileID: 1528018618} + - component: {fileID: 1528018620} + - component: {fileID: 1528018619} m_Layer: 0 - m_Name: SRP - VisibleOutofMask 3 + m_Name: Chunk - Shader - VisibleInMask 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1171950134 +--- !u!4 &1528018618 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1171950133} + m_GameObject: {fileID: 1528018617} 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: 1565511678} + m_Father: {fileID: 205137524} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1171950135 +--- !u!483693784 &1528018619 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1171950133} + m_GameObject: {fileID: 1528018617} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6197,7 +9166,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6218,25 +9187,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 26 + m_SortingOrder: 5 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 2 ---- !u!1839735485 &1171950136 + m_MaskInteraction: 1 +--- !u!1839735485 &1528018620 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1171950133} + m_GameObject: {fileID: 1528018617} m_Enabled: 1 m_Tiles: - - first: {x: -5, y: 3, z: 0} + - first: {x: -6, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -6278,8 +9247,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -9, y: 0, z: 0} - m_Size: {x: 9, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -6299,60 +9268,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1178893845 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1178893847} - - component: {fileID: 1178893846} - m_Layer: 0 - m_Name: Grid - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!156049354 &1178893846 -Grid: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1178893845} - m_Enabled: 1 - m_CellSize: {x: 1, y: 1, z: 0} - m_CellGap: {x: 0, y: 0, z: 0} - m_CellLayout: 0 - m_CellSwizzle: 0 ---- !u!4 &1178893847 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1178893845} - 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: 2077023562} - - {fileID: 1035381097} - - {fileID: 894406765} - - {fileID: 1953022102} - - {fileID: 1455562697} - - {fileID: 986076900} - - {fileID: 662210486} - - {fileID: 251715406} - - {fileID: 275741667} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1193809355 +--- !u!1 &1530200892 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6360,38 +9276,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1193809356} - - component: {fileID: 1193809358} - - component: {fileID: 1193809357} + - component: {fileID: 1530200893} + - component: {fileID: 1530200895} + - component: {fileID: 1530200894} m_Layer: 0 - m_Name: SRP - None 3 + m_Name: Individual - VisibleOutofMask 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1193809356 +--- !u!4 &1530200893 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1193809355} + m_GameObject: {fileID: 1530200892} 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: 300172612} + m_Father: {fileID: 1892672332} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1193809357 +--- !u!483693784 &1530200894 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1193809355} + m_GameObject: {fileID: 1530200892} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6429,27 +9345,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 28 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 14 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 1 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &1193809358 + m_MaskInteraction: 2 +--- !u!1839735485 &1530200895 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1193809355} + m_GameObject: {fileID: 1530200892} m_Enabled: 1 m_Tiles: - - first: {x: -3, y: 3, z: 0} + - first: {x: -7, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -6491,8 +9407,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -6512,7 +9428,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1206244586 +--- !u!1 &1559275874 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6520,38 +9436,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1206244587} - - component: {fileID: 1206244589} - - component: {fileID: 1206244588} + - component: {fileID: 1559275875} + - component: {fileID: 1559275877} + - component: {fileID: 1559275876} m_Layer: 0 - m_Name: Chunk - VisibleInMask 3 + m_Name: Individual - None 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1206244587 +--- !u!4 &1559275875 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1206244586} + m_GameObject: {fileID: 1559275874} 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: 214346214} + m_Father: {fileID: 1004531377} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1206244588 +--- !u!483693784 &1559275876 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1206244586} + m_GameObject: {fileID: 1559275874} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6589,27 +9505,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 7 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 13 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 0 + m_Mode: 1 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &1206244589 + m_MaskInteraction: 0 +--- !u!1839735485 &1559275877 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1206244586} + m_GameObject: {fileID: 1559275874} m_Enabled: 1 m_Tiles: - - first: {x: -4, y: 3, z: 0} + - first: {x: -8, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -6651,8 +9567,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -6672,7 +9588,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1283665429 +--- !u!1 &1565511676 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6680,38 +9596,91 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1283665430} - - component: {fileID: 1283665432} - - component: {fileID: 1283665431} + - component: {fileID: 1565511678} + - component: {fileID: 1565511677} m_Layer: 0 - m_Name: SRP - VisibleOutofMask 3 + m_Name: Grid - Masked m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1283665430 +--- !u!156049354 &1565511677 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1565511676} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!4 &1565511678 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1283665429} + m_GameObject: {fileID: 1565511676} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 9, y: -4, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1448817526} + - {fileID: 232875265} + - {fileID: 669558726} + - {fileID: 913442845} + - {fileID: 1771462384} + - {fileID: 1724484958} + - {fileID: 1171950134} + - {fileID: 150661154} + - {fileID: 1378598773} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1593276510 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1593276511} + - component: {fileID: 1593276513} + - component: {fileID: 1593276512} + m_Layer: 0 + m_Name: Chunk - Shader - None + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1593276511 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1593276510} 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: 300172612} + m_Father: {fileID: 864839693} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1283665431 +--- !u!483693784 &1593276512 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1283665429} + m_GameObject: {fileID: 1593276510} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6730,7 +9699,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6751,25 +9720,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 26 + m_SortingOrder: 1 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 2 ---- !u!1839735485 &1283665432 + m_MaskInteraction: 0 +--- !u!1839735485 &1593276513 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1283665429} + m_GameObject: {fileID: 1593276510} m_Enabled: 1 m_Tiles: - - first: {x: -5, y: 3, z: 0} + - first: {x: -10, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -6811,8 +9780,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -9, y: 0, z: 0} - m_Size: {x: 9, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -6832,7 +9801,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1378598772 +--- !u!1 &1604267345 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6840,38 +9809,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1378598773} - - component: {fileID: 1378598775} - - component: {fileID: 1378598774} + - component: {fileID: 1604267346} + - component: {fileID: 1604267348} + - component: {fileID: 1604267347} m_Layer: 0 - m_Name: SRP - None 3 + m_Name: SRP - None 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1378598773 +--- !u!4 &1604267346 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1378598772} + m_GameObject: {fileID: 1604267345} 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: 1565511678} + m_Father: {fileID: 300172612} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1378598774 +--- !u!483693784 &1604267347 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1378598772} + m_GameObject: {fileID: 1604267345} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6909,9 +9878,9 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 28 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 23 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -6920,16 +9889,16 @@ TilemapRenderer: m_Mode: 2 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 0 ---- !u!1839735485 &1378598775 +--- !u!1839735485 &1604267348 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1378598772} + m_GameObject: {fileID: 1604267345} m_Enabled: 1 m_Tiles: - - first: {x: -3, y: 3, z: 0} + - first: {x: -8, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -6992,7 +9961,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1448817525 +--- !u!1 &1654606195 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7000,38 +9969,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1448817526} - - component: {fileID: 1448817528} - - component: {fileID: 1448817527} + - component: {fileID: 1654606196} + - component: {fileID: 1654606198} + - component: {fileID: 1654606197} m_Layer: 0 - m_Name: SRP - VisibleInMask + m_Name: Chunk - Shader - VisibleOutofMask 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1448817526 +--- !u!4 &1654606196 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1448817525} + m_GameObject: {fileID: 1654606195} 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: 1565511678} + m_Father: {fileID: 205137524} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1448817527 +--- !u!483693784 &1654606197 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1448817525} + m_GameObject: {fileID: 1654606195} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -7050,7 +10019,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7071,25 +10040,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 20 + m_SortingOrder: 4 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &1448817528 + m_MaskInteraction: 2 +--- !u!1839735485 &1654606198 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1448817525} + m_GameObject: {fileID: 1654606195} m_Enabled: 1 m_Tiles: - - first: {x: -11, y: 3, z: 0} + - first: {x: -7, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -7131,8 +10100,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -7152,7 +10121,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1455562696 +--- !u!1 &1671714892 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7160,38 +10129,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1455562697} - - component: {fileID: 1455562699} - - component: {fileID: 1455562698} + - component: {fileID: 1671714893} + - component: {fileID: 1671714895} + - component: {fileID: 1671714894} m_Layer: 0 - m_Name: Chunk - VisibleOutofMask 2 + m_Name: Individual - VisibleInMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1455562697 +--- !u!4 &1671714893 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1455562696} + m_GameObject: {fileID: 1671714892} 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: 1178893847} + m_Father: {fileID: 1004531377} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1455562698 +--- !u!483693784 &1671714894 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1455562696} + m_GameObject: {fileID: 1671714892} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -7231,25 +10200,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 4 + m_SortingOrder: 10 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 0 + m_Mode: 1 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 2 ---- !u!1839735485 &1455562699 + m_MaskInteraction: 1 +--- !u!1839735485 &1671714895 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1455562696} + m_GameObject: {fileID: 1671714892} m_Enabled: 1 m_Tiles: - - first: {x: -7, y: 3, z: 0} + - first: {x: -11, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -7291,8 +10260,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -9, y: 0, z: 0} - m_Size: {x: 9, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -7312,7 +10281,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1519488780 +--- !u!1 &1724484957 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7320,38 +10289,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1519488781} - - component: {fileID: 1519488783} - - component: {fileID: 1519488782} + - component: {fileID: 1724484958} + - component: {fileID: 1724484960} + - component: {fileID: 1724484959} m_Layer: 0 - m_Name: Individual - VisibleOutofMask 3 + m_Name: SRP - VisibleInMask 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1519488781 +--- !u!4 &1724484958 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1519488780} + m_GameObject: {fileID: 1724484957} 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: 1004531377} + m_Father: {fileID: 1565511678} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1519488782 +--- !u!483693784 &1724484959 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1519488780} + m_GameObject: {fileID: 1724484957} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -7389,27 +10358,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 16 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 25 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 2 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 2 ---- !u!1839735485 &1519488783 + m_MaskInteraction: 1 +--- !u!1839735485 &1724484960 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1519488780} + m_GameObject: {fileID: 1724484957} m_Enabled: 1 m_Tiles: - - first: {x: -5, y: 3, z: 0} + - first: {x: -6, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -7451,8 +10420,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -9, y: 0, z: 0} - m_Size: {x: 9, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -7472,7 +10441,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1530200892 +--- !u!1 &1734833072 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7480,38 +10449,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1530200893} - - component: {fileID: 1530200895} - - component: {fileID: 1530200894} + - component: {fileID: 1734833073} + - component: {fileID: 1734833075} + - component: {fileID: 1734833074} m_Layer: 0 - m_Name: Individual - VisibleOutofMask 2 + m_Name: Chunk - Shader - VisibleOutofMask 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1530200893 +--- !u!4 &1734833073 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1530200892} + m_GameObject: {fileID: 1734833072} 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: 1892672332} + m_Father: {fileID: 864839693} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1530200894 +--- !u!483693784 &1734833074 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1530200892} + m_GameObject: {fileID: 1734833072} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -7530,7 +10499,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7549,24 +10518,24 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 14 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 4 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 0 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 2 ---- !u!1839735485 &1530200895 +--- !u!1839735485 &1734833075 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1530200892} + m_GameObject: {fileID: 1734833072} m_Enabled: 1 m_Tiles: - first: {x: -7, y: 3, z: 0} @@ -7632,7 +10601,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1559275874 +--- !u!1 &1758990593 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7640,23 +10609,23 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1559275875} - - component: {fileID: 1559275877} - - component: {fileID: 1559275876} + - component: {fileID: 1758990594} + - component: {fileID: 1758990596} + - component: {fileID: 1758990595} m_Layer: 0 - m_Name: Individual - None 2 + m_Name: Individual - VisibleInMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1559275875 +--- !u!4 &1758990594 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1559275874} + m_GameObject: {fileID: 1758990593} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -7665,13 +10634,13 @@ Transform: m_Children: [] m_Father: {fileID: 1004531377} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1559275876 +--- !u!483693784 &1758990595 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1559275874} + m_GameObject: {fileID: 1758990593} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -7711,7 +10680,7 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 13 + m_SortingOrder: 17 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -7719,17 +10688,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 1 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &1559275877 + m_MaskInteraction: 1 +--- !u!1839735485 &1758990596 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1559275874} + m_GameObject: {fileID: 1758990593} m_Enabled: 1 m_Tiles: - - first: {x: -8, y: 3, z: 0} + - first: {x: -4, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -7771,8 +10740,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -7792,60 +10761,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1565511676 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1565511678} - - component: {fileID: 1565511677} - m_Layer: 0 - m_Name: Grid - Masked - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!156049354 &1565511677 -Grid: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1565511676} - m_Enabled: 1 - m_CellSize: {x: 1, y: 1, z: 0} - m_CellGap: {x: 0, y: 0, z: 0} - m_CellLayout: 0 - m_CellSwizzle: 0 ---- !u!4 &1565511678 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1565511676} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 9, y: -4, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1448817526} - - {fileID: 232875265} - - {fileID: 669558726} - - {fileID: 913442845} - - {fileID: 1771462384} - - {fileID: 1724484958} - - {fileID: 1171950134} - - {fileID: 150661154} - - {fileID: 1378598773} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1604267345 +--- !u!1 &1760346235 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7853,38 +10769,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1604267346} - - component: {fileID: 1604267348} - - component: {fileID: 1604267347} + - component: {fileID: 1760346236} + - component: {fileID: 1760346238} + - component: {fileID: 1760346237} m_Layer: 0 - m_Name: SRP - None 2 + m_Name: Chunk - Shader - VisibleInMask 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1604267346 +--- !u!4 &1760346236 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1604267345} + m_GameObject: {fileID: 1760346235} 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: 300172612} + m_Father: {fileID: 864839693} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1604267347 +--- !u!483693784 &1760346237 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1604267345} + m_GameObject: {fileID: 1760346235} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -7903,7 +10819,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7924,25 +10840,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 23 + m_SortingOrder: 7 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 0 ---- !u!1839735485 &1604267348 + m_MaskInteraction: 1 +--- !u!1839735485 &1760346238 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1604267345} + m_GameObject: {fileID: 1760346235} m_Enabled: 1 m_Tiles: - - first: {x: -8, y: 3, z: 0} + - first: {x: -4, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -7984,8 +10900,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -10, y: 0, z: 0} - m_Size: {x: 10, y: 4, z: 1} + m_Origin: {x: -11, y: 0, z: 0} + m_Size: {x: 11, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -8005,7 +10921,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1671714892 +--- !u!1 &1762039871 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8013,38 +10929,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1671714893} - - component: {fileID: 1671714895} - - component: {fileID: 1671714894} + - component: {fileID: 1762039872} + - component: {fileID: 1762039874} + - component: {fileID: 1762039873} m_Layer: 0 - m_Name: Individual - VisibleInMask + m_Name: Chunk - Shader - None 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1671714893 +--- !u!4 &1762039872 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1671714892} + m_GameObject: {fileID: 1762039871} 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: 1004531377} + m_Father: {fileID: 864839693} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1671714894 +--- !u!483693784 &1762039873 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1671714892} + m_GameObject: {fileID: 1762039871} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -8063,7 +10979,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8084,25 +11000,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 10 + m_SortingOrder: 3 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &1671714895 + m_MaskInteraction: 0 +--- !u!1839735485 &1762039874 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1671714892} + m_GameObject: {fileID: 1762039871} m_Enabled: 1 m_Tiles: - - first: {x: -11, y: 3, z: 0} + - first: {x: -8, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -8144,8 +11060,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -8165,31 +11081,31 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1724484957 +--- !u!1 &1771462383 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1724484958} - - component: {fileID: 1724484960} - - component: {fileID: 1724484959} + serializedVersion: 6 + m_Component: + - component: {fileID: 1771462384} + - component: {fileID: 1771462386} + - component: {fileID: 1771462385} m_Layer: 0 - m_Name: SRP - VisibleInMask 2 + m_Name: SRP - VisibleOutofMask 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1724484958 +--- !u!4 &1771462384 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1724484957} + m_GameObject: {fileID: 1771462383} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -8198,13 +11114,13 @@ Transform: m_Children: [] m_Father: {fileID: 1565511678} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1724484959 +--- !u!483693784 &1771462385 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1724484957} + m_GameObject: {fileID: 1771462383} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -8244,7 +11160,7 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 116359401 m_SortingLayer: 1 - m_SortingOrder: 25 + m_SortingOrder: 24 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -8252,17 +11168,17 @@ TilemapRenderer: m_SortOrder: 0 m_Mode: 2 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 1 ---- !u!1839735485 &1724484960 + m_MaskInteraction: 2 +--- !u!1839735485 &1771462386 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1724484957} + m_GameObject: {fileID: 1771462383} m_Enabled: 1 m_Tiles: - - first: {x: -6, y: 3, z: 0} + - first: {x: -7, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -8304,8 +11220,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -11, y: 0, z: 0} - m_Size: {x: 11, y: 4, z: 1} + m_Origin: {x: -9, y: 0, z: 0} + m_Size: {x: 9, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -8325,7 +11241,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1758990593 +--- !u!1 &1797162801 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8333,38 +11249,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1758990594} - - component: {fileID: 1758990596} - - component: {fileID: 1758990595} + - component: {fileID: 1797162802} + - component: {fileID: 1797162804} + - component: {fileID: 1797162803} m_Layer: 0 - m_Name: Individual - VisibleInMask 3 + m_Name: Chunk - Shader - VisibleInMask 2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1758990594 +--- !u!4 &1797162802 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1758990593} + m_GameObject: {fileID: 1797162801} 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: 1004531377} + m_Father: {fileID: 864839693} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1758990595 +--- !u!483693784 &1797162803 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1758990593} + m_GameObject: {fileID: 1797162801} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -8383,7 +11299,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8404,25 +11320,25 @@ TilemapRenderer: m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 17 + m_SortingOrder: 5 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 1 + m_Mode: 0 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 1 ---- !u!1839735485 &1758990596 +--- !u!1839735485 &1797162804 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1758990593} + m_GameObject: {fileID: 1797162801} m_Enabled: 1 m_Tiles: - - first: {x: -4, y: 3, z: 0} + - first: {x: -6, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -8485,7 +11401,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1771462383 +--- !u!1 &1826794933 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8493,38 +11409,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1771462384} - - component: {fileID: 1771462386} - - component: {fileID: 1771462385} + - component: {fileID: 1826794934} + - component: {fileID: 1826794936} + - component: {fileID: 1826794935} m_Layer: 0 - m_Name: SRP - VisibleOutofMask 2 + m_Name: SRP - VisibleOutofMask m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1771462384 +--- !u!4 &1826794934 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1771462383} + m_GameObject: {fileID: 1826794933} 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: 1565511678} + m_Father: {fileID: 300172612} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1771462385 +--- !u!483693784 &1826794935 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1771462383} + m_GameObject: {fileID: 1826794933} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -8562,9 +11478,9 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 116359401 - m_SortingLayer: 1 - m_SortingOrder: 24 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 22 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 @@ -8573,16 +11489,16 @@ TilemapRenderer: m_Mode: 2 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 2 ---- !u!1839735485 &1771462386 +--- !u!1839735485 &1826794936 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1771462383} + m_GameObject: {fileID: 1826794933} m_Enabled: 1 m_Tiles: - - first: {x: -7, y: 3, z: 0} + - first: {x: -9, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -8645,7 +11561,7 @@ Tilemap: e31: 0 e32: 0 e33: 1 ---- !u!1 &1826794933 +--- !u!1 &1836751353 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8653,38 +11569,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1826794934} - - component: {fileID: 1826794936} - - component: {fileID: 1826794935} + - component: {fileID: 1836751354} + - component: {fileID: 1836751356} + - component: {fileID: 1836751355} m_Layer: 0 - m_Name: SRP - VisibleOutofMask + m_Name: Chunk - Shader - None 3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1826794934 +--- !u!4 &1836751354 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1826794933} + m_GameObject: {fileID: 1836751353} 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: 300172612} + m_Father: {fileID: 205137524} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!483693784 &1826794935 +--- !u!483693784 &1836751355 TilemapRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1826794933} + m_GameObject: {fileID: 1836751353} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -8703,7 +11619,7 @@ TilemapRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8722,27 +11638,27 @@ TilemapRenderer: m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 22 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 8 m_ChunkSize: {x: 32, y: 32, z: 32} m_ChunkCullingBounds: {x: 0, y: 0, z: 0} m_MaxChunkCount: 16 m_MaxFrameAge: 16 m_SortOrder: 0 - m_Mode: 2 + m_Mode: 0 m_DetectChunkCullingBounds: 0 - m_MaskInteraction: 2 ---- !u!1839735485 &1826794936 + m_MaskInteraction: 0 +--- !u!1839735485 &1836751356 Tilemap: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1826794933} + m_GameObject: {fileID: 1836751353} m_Enabled: 1 m_Tiles: - - first: {x: -9, y: 3, z: 0} + - first: {x: -3, y: 3, z: 0} second: serializedVersion: 2 m_TileIndex: 0 @@ -8784,8 +11700,8 @@ Tilemap: m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: -9, y: 0, z: 0} - m_Size: {x: 9, y: 4, z: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: @@ -9338,6 +12254,166 @@ Tilemap: e31: 0 e32: 0 e33: 1 +--- !u!1 &2088643745 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2088643746} + - component: {fileID: 2088643748} + - component: {fileID: 2088643747} + m_Layer: 0 + m_Name: Chunk - Shader - None 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2088643746 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2088643745} + 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: 205137524} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &2088643747 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2088643745} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 978bb63e0ef6dca4ca9b8da87c3f7f75, 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 116359401 + m_SortingLayer: 1 + m_SortingOrder: 3 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1839735485 &2088643748 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2088643745} + m_Enabled: 1 + m_Tiles: + - first: {x: -8, y: 3, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 0 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + m_AnimatedTiles: {} + m_TileAssetArray: + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 898ab856ab374ef428ab13e10c948a0d, type: 2} + m_TileSpriteArray: + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 0a451cb9697c39044815bbd2d048826c, type: 3} + m_TileMatrixArray: + - m_RefCount: 1 + m_Data: + 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_TileColorArray: + - m_RefCount: 1 + m_Data: {r: 0.94482756, g: 1, b: 0, a: 1} + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: -10, y: 0, z: 0} + m_Size: {x: 10, y: 4, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + 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 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 @@ -9346,7 +12422,10 @@ SceneRoots: - {fileID: 1178893847} - {fileID: 1004531377} - {fileID: 300172612} + - {fileID: 864839693} - {fileID: 214346214} - {fileID: 1892672332} - {fileID: 1565511678} + - {fileID: 205137524} - {fileID: 551400983} + - {fileID: 76593867} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.mat new file mode 100644 index 00000000000..e9ac9bc5969 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: 088_TilemapRenderer_Mask + m_Shader: {fileID: 4800000, guid: 780a6e243c11fd14dbb3055ebe02941b, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + 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} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.mat.meta new file mode 100644 index 00000000000..03f83609389 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1024265d4663d5840bab44e9ea802ee1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.shader b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.shader new file mode 100644 index 00000000000..872ffb4c9aa --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.shader @@ -0,0 +1,53 @@ +Shader "088/Mask" +{ + Properties + { + _MainTex("Base RGBA", 2D) = "white" {} + } + + SubShader + { + Tags { "RenderType" = "Opaque" "Queue"="Transparent-10"} + ZWrite Off + ZTest Always + Fog { Mode Off } + Lighting Off + Cull Off + + Pass + { + Stencil { + Ref 1 + WriteMask 1 + Comp Always + Pass Replace + } + ColorMask 0 + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata { + float4 vertex : POSITION; + }; + + struct v2f { + float4 pos : SV_POSITION; + }; + + v2f vert(appdata v) { + v2f o; + o.pos = UnityObjectToClipPos(v.vertex); + return o; + } + + fixed4 frag(v2f i) : SV_Target { + return fixed4(0,0,0,0); + } + ENDCG + } + } +} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.shader.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.shader.meta new file mode 100644 index 00000000000..f2bf748dd87 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Mask.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 780a6e243c11fd14dbb3055ebe02941b +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.mat b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.mat new file mode 100644 index 00000000000..e8e01da0fd9 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: 088_TilemapRenderer_Masked + m_Shader: {fileID: 4800000, guid: e3f127579f692074abe997d4619f18fb, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + 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} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.mat.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.mat.meta new file mode 100644 index 00000000000..520cdd1013e --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 978bb63e0ef6dca4ca9b8da87c3f7f75 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.shader b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.shader new file mode 100644 index 00000000000..22b1e2ddf6e --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.shader @@ -0,0 +1,222 @@ +Shader "088/Masked" +{ + Properties + { + _MainTex ("Sprite Texture", 2D) = "white" {} + + // Legacy properties. They're here so that materials using this shader can gracefully fallback to the legacy sprite shader. + [HideInInspector] _Color ("Tint", Color) = (1,1,1,1) + [HideInInspector] PixelSnap ("Pixel snap", Float) = 0 + [HideInInspector] _RendererColor ("RendererColor", Color) = (1,1,1,1) + [HideInInspector] _AlphaTex ("External Alpha", 2D) = "white" {} + [HideInInspector] _EnableExternalAlpha ("Enable External Alpha", Float) = 0 + } + + SubShader + { + Tags {"Queue" = "Transparent" "RenderType" = "Transparent" "RenderPipeline" = "UniversalPipeline" } + + Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha + Cull Off + ZWrite Off + + Pass + { + Tags { "LightMode" = "Universal2D" } + + Stencil { + Ref 1 + ReadMask 1 + Comp NotEqual + Pass Keep + } + + HLSLPROGRAM + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Core2D.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" + #if defined(DEBUG_DISPLAY) + #include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/InputData2D.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/SurfaceData2D.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging2D.hlsl" + #endif + + #pragma vertex UnlitVertex + #pragma fragment UnlitFragment + + // GPU Instancing + #pragma multi_compile_instancing + #pragma multi_compile _ DEBUG_DISPLAY SKINNED_SPRITE + + struct Attributes + { + float3 positionOS : POSITION; + float4 color : COLOR; + float2 uv : TEXCOORD0; + UNITY_SKINNED_VERTEX_INPUTS + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + half4 color : COLOR; + float2 uv : TEXCOORD0; + #if defined(DEBUG_DISPLAY) + float3 positionWS : TEXCOORD2; + #endif + UNITY_VERTEX_OUTPUT_STEREO + }; + + TEXTURE2D(_MainTex); + SAMPLER(sampler_MainTex); + UNITY_TEXTURE_STREAMING_DEBUG_VARS_FOR_TEX(_MainTex); + + // NOTE: Do not ifdef the properties here as SRP batcher can not handle different layouts. + CBUFFER_START(UnityPerMaterial) + half4 _Color; + CBUFFER_END + + Varyings UnlitVertex(Attributes v) + { + Varyings o = (Varyings)0; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + UNITY_SKINNED_VERTEX_COMPUTE(v); + + SetUpSpriteInstanceProperties(); + v.positionOS = UnityFlipSprite(v.positionOS, unity_SpriteProps.xy); + o.positionCS = TransformObjectToHClip(v.positionOS); + #if defined(DEBUG_DISPLAY) + o.positionWS = TransformObjectToWorld(v.positionOS); + #endif + o.uv = v.uv; + o.color = v.color * _Color * unity_SpriteColor; + return o; + } + + half4 UnlitFragment(Varyings i) : SV_Target + { + float4 mainTex = i.color * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv); + + #if defined(DEBUG_DISPLAY) + SurfaceData2D surfaceData; + InputData2D inputData; + half4 debugColor = 0; + + InitializeSurfaceData(mainTex.rgb, mainTex.a, surfaceData); + InitializeInputData(i.uv, inputData); + SETUP_DEBUG_TEXTURE_DATA_2D_NO_TS(inputData, i.positionWS, i.positionCS, _MainTex); + + if(CanDebugOverrideOutputColor(surfaceData, inputData, debugColor)) + { + return debugColor; + } + #endif + + return mainTex; + } + ENDHLSL + } + + Pass + { + Tags { "LightMode" = "UniversalForward" "Queue"="Transparent" "RenderType"="Transparent"} + + Stencil { + Ref 1 + ReadMask 1 + Comp NotEqual + Pass Keep + } + + HLSLPROGRAM + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Core2D.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DebugMipmapStreamingMacros.hlsl" + #if defined(DEBUG_DISPLAY) + #include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/InputData2D.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/SurfaceData2D.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging2D.hlsl" + #endif + + #pragma vertex UnlitVertex + #pragma fragment UnlitFragment + + // GPU Instancing + #pragma multi_compile_instancing + #pragma multi_compile _ SKINNED_SPRITE + #pragma multi_compile_fragment _ DEBUG_DISPLAY + + struct Attributes + { + float3 positionOS : POSITION; + float4 color : COLOR; + float2 uv : TEXCOORD0; + UNITY_SKINNED_VERTEX_INPUTS + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + float4 color : COLOR; + float2 uv : TEXCOORD0; + #if defined(DEBUG_DISPLAY) + float3 positionWS : TEXCOORD2; + #endif + UNITY_VERTEX_OUTPUT_STEREO + }; + + TEXTURE2D(_MainTex); + SAMPLER(sampler_MainTex); + UNITY_TEXTURE_STREAMING_DEBUG_VARS_FOR_TEX(_MainTex); + + // NOTE: Do not ifdef the properties here as SRP batcher can not handle different layouts. + CBUFFER_START( UnityPerMaterial ) + half4 _Color; + CBUFFER_END + + Varyings UnlitVertex(Attributes attributes) + { + Varyings o = (Varyings)0; + UNITY_SETUP_INSTANCE_ID(attributes); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + UNITY_SKINNED_VERTEX_COMPUTE(attributes); + + SetUpSpriteInstanceProperties(); + attributes.positionOS = UnityFlipSprite(attributes.positionOS, unity_SpriteProps.xy); + o.positionCS = TransformObjectToHClip(attributes.positionOS); + #if defined(DEBUG_DISPLAY) + o.positionWS = TransformObjectToWorld(attributes.positionOS); + #endif + o.uv = attributes.uv; + o.color = attributes.color * _Color * unity_SpriteColor; + return o; + } + + float4 UnlitFragment(Varyings i) : SV_Target + { + float4 mainTex = i.color * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv); + + #if defined(DEBUG_DISPLAY) + SurfaceData2D surfaceData; + InputData2D inputData; + half4 debugColor = 0; + + InitializeSurfaceData(mainTex.rgb, mainTex.a, surfaceData); + InitializeInputData(i.uv, inputData); + SETUP_DEBUG_TEXTURE_DATA_2D_NO_TS(inputData, i.positionWS, i.positionCS, _MainTex); + + if(CanDebugOverrideOutputColor(surfaceData, inputData, debugColor)) + { + return debugColor; + } + #endif + + return mainTex; + } + ENDHLSL + } + } +} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.shader.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.shader.meta new file mode 100644 index 00000000000..5b6b1fda5d8 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_2D/Assets/Scenes/088_TilemapRenderer_MaskInteraction/088_TilemapRenderer_Masked.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e3f127579f692074abe997d4619f18fb +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Test/TestFilters/TestCaseFilters.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Test/TestFilters/TestCaseFilters.asset index a6230ac9719..698d8309ea6 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Test/TestFilters/TestCaseFilters.asset +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Test/TestFilters/TestCaseFilters.asset @@ -466,6 +466,16 @@ MonoBehaviour: XrSdk: StereoModes: 0 Reason: Not supported on OpenGL + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: 7fd0aa748aac54e47a22af71a33c7af3, type: 3} + ColorSpace: -1 + BuildPlatform: -2 + GraphicsDevice: 18 + Architecture: 4 + XrSdk: + StereoModes: 0 + Reason: UUM-109556 - FilteredScene: {fileID: 0} FilteredScenes: - {fileID: 102900000, guid: 7fd0aa748aac54e47a22af71a33c7af3, type: 3} @@ -715,6 +725,16 @@ MonoBehaviour: XrSdk: StereoModes: 0 Reason: Alembic package is desktop only + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: 828958c3149de6e41b3aa7de89b12419, type: 3} + ColorSpace: -1 + BuildPlatform: 45 + GraphicsDevice: 4 + Architecture: 0 + XrSdk: + StereoModes: 0 + Reason: Alembic package is desktop only - FilteredScene: {fileID: 0} FilteredScenes: - {fileID: 102900000, guid: 828958c3149de6e41b3aa7de89b12419, type: 3} @@ -725,6 +745,17 @@ MonoBehaviour: XrSdk: StereoModes: 0 Reason: Alembic package is desktop only + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: 06d3d04c77b97ba40969b415bc9a25dd, type: 3} + - {fileID: 102900000, guid: 81446d3c9a10ff94a873a19e2d8804e9, type: 3} + ColorSpace: -1 + BuildPlatform: 20 + GraphicsDevice: 28 + Architecture: 0 + XrSdk: + StereoModes: 0 + Reason: No support in webgpu - FilteredScene: {fileID: 0} FilteredScenes: - {fileID: 102900000, guid: 443214b3f73466742a19acf21b430d0d, type: 3} @@ -758,6 +789,26 @@ MonoBehaviour: XrSdk: StereoModes: 0 Reason: UUM-57780 + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: 87ee64df2c957224ab067a27a80ea7af, type: 3} + ColorSpace: -1 + BuildPlatform: 38 + GraphicsDevice: 4 + Architecture: 0 + XrSdk: + StereoModes: 0 + Reason: UUM-91474 + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: 79411c8112bdd64429adcd528baacf32, type: 3} + ColorSpace: -1 + BuildPlatform: 38 + GraphicsDevice: 4 + Architecture: 0 + XrSdk: + StereoModes: 0 + Reason: UUM-91474 - FilteredScene: {fileID: 0} FilteredScenes: - {fileID: 102900000, guid: 646226f38a4201047a6572d1cb8a620c, type: 3} @@ -778,6 +829,36 @@ MonoBehaviour: XrSdk: StereoModes: 0 Reason: UUM-57771 + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: 6e1d9c84fb9f1004798f6be12f277f09, type: 3} + ColorSpace: -1 + BuildPlatform: 38 + GraphicsDevice: 4 + Architecture: 0 + XrSdk: + StereoModes: 0 + Reason: UUM-91474 + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: f07beec5ff4e7744383242b8ed2eefff, type: 3} + ColorSpace: -1 + BuildPlatform: 38 + GraphicsDevice: 4 + Architecture: 0 + XrSdk: + StereoModes: 0 + Reason: UUM-91474 + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: bb5aa41014ad2014eb5b3dbd7d7e6463, type: 3} + ColorSpace: -1 + BuildPlatform: 9 + GraphicsDevice: 16 + Architecture: 2 + XrSdk: + StereoModes: 0 + Reason: UUM-85648 - FilteredScene: {fileID: 0} FilteredScenes: - {fileID: 102900000, guid: bb5aa41014ad2014eb5b3dbd7d7e6463, type: 3} @@ -1132,6 +1213,16 @@ MonoBehaviour: XrSdk: StereoModes: 0 Reason: UUM-53003 + - FilteredScene: {fileID: 0} + FilteredScenes: + - {fileID: 102900000, guid: 5e57a94eeee3964488362ad6cab7cfb2, type: 3} + ColorSpace: -1 + BuildPlatform: 38 + GraphicsDevice: 4 + Architecture: 0 + XrSdk: + StereoModes: 0 + Reason: UUM-91474 - FilteredScene: {fileID: 0} FilteredScenes: - {fileID: 102900000, guid: 5e57a94eeee3964488362ad6cab7cfb2, type: 3} @@ -1144,52 +1235,51 @@ MonoBehaviour: Reason: UUM-63904 - FilteredScene: {fileID: 0} FilteredScenes: - - {fileID: 102900000, guid: 233f6d76572eee0439080cc4973b42ee, type: 3} + - {fileID: 102900000, guid: c721071fe72436c4aa76a3f438915b6d, type: 3} ColorSpace: -1 - BuildPlatform: 20 + BuildPlatform: 38 GraphicsDevice: 4 Architecture: 0 XrSdk: StereoModes: 0 - Reason: No support GLES3 + Reason: UUM-91474 - FilteredScene: {fileID: 0} FilteredScenes: - - {fileID: 102900000, guid: 81446d3c9a10ff94a873a19e2d8804e9, type: 3} - - {fileID: 102900000, guid: 06d3d04c77b97ba40969b415bc9a25dd, type: 3} + - {fileID: 102900000, guid: afbffcf7f306ba14d8324a9c21880d38, type: 3} ColorSpace: -1 - BuildPlatform: 20 - GraphicsDevice: 28 + BuildPlatform: 38 + GraphicsDevice: 4 Architecture: 0 XrSdk: StereoModes: 0 - Reason: No support in webgpu + Reason: UUM-91474 - FilteredScene: {fileID: 0} FilteredScenes: - - {fileID: 102900000, guid: bb5aa41014ad2014eb5b3dbd7d7e6463, type: 3} + - {fileID: 102900000, guid: 162856843a0b75c47a760c58d9d38e1b, type: 3} ColorSpace: -1 - BuildPlatform: 9 - GraphicsDevice: 16 - Architecture: 2 + BuildPlatform: 38 + GraphicsDevice: 4 + Architecture: 0 XrSdk: StereoModes: 0 - Reason: UUM-85648 + Reason: UUM-91474 - FilteredScene: {fileID: 0} FilteredScenes: - - {fileID: 102900000, guid: 828958c3149de6e41b3aa7de89b12419, type: 3} + - {fileID: 102900000, guid: 24f9bd7e4ee841d41a5cf4538052774c, type: 3} ColorSpace: -1 - BuildPlatform: 45 + BuildPlatform: 38 GraphicsDevice: 4 Architecture: 0 XrSdk: StereoModes: 0 - Reason: Alembic package is desktop only + Reason: UUM-91474 - FilteredScene: {fileID: 0} FilteredScenes: - - {fileID: 102900000, guid: 7fd0aa748aac54e47a22af71a33c7af3, type: 3} + - {fileID: 102900000, guid: 233f6d76572eee0439080cc4973b42ee, type: 3} ColorSpace: -1 - BuildPlatform: -2 - GraphicsDevice: 18 - Architecture: 4 + BuildPlatform: 20 + GraphicsDevice: 4 + Architecture: 0 XrSdk: StereoModes: 0 - Reason: UUM-109556 + Reason: No support GLES3