Skip to content

Commit d6894e5

Browse files
authored
Merge pull request #8138 from Unity-Technologies/internal/master
Internal/master
2 parents 38adf82 + d17013e commit d6894e5

File tree

166 files changed

+8115
-2313
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

166 files changed

+8115
-2313
lines changed

Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBuildProcessor.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,11 @@ public override void PrepareForBuild(BuildPlayerContext buildPlayerContext)
150150
IncludeStreamableAsset(scenario.Value.cellOptionalDataAsset, basePath, useStreamingAsset);
151151
else
152152
StripStreambleAsset(scenario.Value.cellOptionalDataAsset);
153-
IncludeStreamableAsset(scenario.Value.cellProbeOcclusionDataAsset, basePath, useStreamingAsset);
153+
154+
if (bakingSet.bakedProbeOcclusion)
155+
IncludeStreamableAsset(scenario.Value.cellProbeOcclusionDataAsset, basePath, useStreamingAsset);
156+
else
157+
StripStreambleAsset(scenario.Value.cellProbeOcclusionDataAsset);
154158
}
155159

156160
s_BakingSetsProcessedLastBuild.Add(bakingSet);

Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeLightingTab.cs

+1-33
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ static class Styles
4848
public static readonly string msgEnableAll = "Some loaded Scenes are disabled by this Baking Set. These Scenes will not contribute to the generation of probe data.";
4949
public static readonly string msgUnloadOther = "Scene(s) not belonging to this Baking Set are currently loaded in the Hierarchy. This might result in incorrect lighting.";
5050
public static readonly string msgLoadForBake = "Some scene(s) in this Baking Set are not currently loaded in the Hierarchy. This might result in missing or incomplete lighting.";
51-
public static readonly string msgIncorrectBakingSet = "The currently loaded scenes do not match the assigned Baking Set. To resolve this, make sure to load the scenes that correspond to the assigned Baking Set, unload any scenes that don’t belong, and verify the scene setup before generating lighting to ensure everything bakes correctly.";
5251

5352
public const float statusLabelWidth = 80;
5453

@@ -222,18 +221,6 @@ public override void OnGUI()
222221
Initialize();
223222

224223
var prv = ProbeReferenceVolume.instance;
225-
// The CurrentBakingSet may change when you open an additional Scene with APV
226-
if (prv.currentBakingSet != activeSet)
227-
{
228-
if (prv.currentBakingSet == null)
229-
{
230-
m_SingleSceneMode = true;
231-
}
232-
else
233-
{
234-
OpenBakingSet(prv.currentBakingSet);
235-
}
236-
}
237224

238225
// In single scene mode, user can't control active set, so we automatically create a new one
239226
// in case the active scene doesn't have a baking set so that we can display baking settings
@@ -372,9 +359,8 @@ void BakingGUI()
372359
{
373360
if (newSet != null) { EditorUtility.SetDirty(newSet); newSet.singleSceneMode = false; }
374361
activeSet = newSet;
375-
362+
376363
ProbeReferenceVolume.instance.Clear();
377-
ProbeReferenceVolume.instance.SetActiveBakingSet(activeSet);
378364
}
379365

380366
if (activeSet != null)
@@ -497,24 +483,6 @@ void ShowWarnings()
497483
}
498484
}
499485

500-
if (activeSet == ProbeReferenceVolume.instance.currentBakingSet)
501-
{
502-
hasWarnings = true;
503-
foreach (var sceneDataList in ProbeReferenceVolume.instance.perSceneDataList)
504-
{
505-
if (sceneDataList.bakingSet == activeSet)
506-
{
507-
hasWarnings = false;
508-
break;
509-
}
510-
}
511-
512-
if (hasWarnings)
513-
{
514-
EditorGUILayout.HelpBox(Styles.msgIncorrectBakingSet, MessageType.Warning);
515-
}
516-
}
517-
518486
scenesForBake.Clear();
519487
scenesToUnload.Clear();
520488
scenesToEnable.Clear();
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
area: Graphics Optimization Systems
1+
area: GPU Resident Drawer

Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawer.cs

+8-122
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ private void UpdateSelection()
534534
rendererIDs[i] = renderers[i] ? renderers[i].GetInstanceID() : 0;
535535

536536
m_Batcher.UpdateSelectedRenderers(rendererIDs);
537-
537+
538538
rendererIDs.Dispose();
539539

540540
Profiler.EndSample();
@@ -630,7 +630,7 @@ private void PostPostLateUpdate()
630630
UpdateSelection();
631631
m_IsSelectionDirty = false;
632632
}
633-
633+
634634
m_FrameUpdateNeeded = false;
635635
#endif
636636
}
@@ -830,14 +830,8 @@ private void ClassifyMaterials(NativeArray<int> materials, out NativeList<int> u
830830

831831
if (materials.Length > 0)
832832
{
833-
new ClassifyMaterialsJob
834-
{
835-
materialIDs = materials.AsReadOnly(),
836-
batchMaterialHash = m_Batcher.instanceCullingBatcher.batchMaterialHash.AsReadOnly(),
837-
unsupportedMaterialIDs = unsupportedMaterials,
838-
supportedMaterialIDs = supportedMaterials,
839-
supportedPackedMaterialDatas = supportedPackedMaterialDatas
840-
}.Run();
833+
GPUResidentDrawerBurst.ClassifyMaterials(materials, m_Batcher.instanceCullingBatcher.batchMaterialHash.AsReadOnly(),
834+
ref supportedMaterials, ref unsupportedMaterials, ref supportedPackedMaterialDatas);
841835
}
842836
}
843837

@@ -847,13 +841,8 @@ private NativeList<int> FindUnsupportedRenderers(NativeArray<int> unsupportedMat
847841

848842
if (unsupportedMaterials.Length > 0)
849843
{
850-
new FindUnsupportedRenderersJob
851-
{
852-
unsupportedMaterials = unsupportedMaterials.AsReadOnly(),
853-
materialIDArrays = m_BatchersContext.sharedInstanceData.materialIDArrays,
854-
rendererGroups = m_BatchersContext.sharedInstanceData.rendererGroupIDs,
855-
unsupportedRenderers = unsupportedRenderers,
856-
}.Run();
844+
GPUResidentDrawerBurst.FindUnsupportedRenderers(unsupportedMaterials, m_BatchersContext.sharedInstanceData.materialIDArrays,
845+
m_BatchersContext.sharedInstanceData.rendererGroupIDs, ref unsupportedRenderers);
857846
}
858847

859848
return unsupportedRenderers;
@@ -863,13 +852,8 @@ private NativeHashSet<int> GetMaterialsWithChangedPackedMaterial(NativeArray<int
863852
{
864853
NativeHashSet<int> filteredMaterials = new NativeHashSet<int>(materials.Length, allocator);
865854

866-
new GetMaterialsWithChangedPackedMaterialJob
867-
{
868-
materialIDs = materials.AsReadOnly(),
869-
packedMaterialDatas = packedMaterialDatas.AsReadOnly(),
870-
packedMaterialHash = batcher.instanceCullingBatcher.packedMaterialHash.AsReadOnly(),
871-
filteredMaterials = filteredMaterials
872-
}.Run();
855+
GPUResidentDrawerBurst.GetMaterialsWithChangedPackedMaterial(materials, packedMaterialDatas,
856+
batcher.instanceCullingBatcher.packedMaterialHash.AsReadOnly(), ref filteredMaterials);
873857

874858
return filteredMaterials;
875859
}
@@ -892,79 +876,6 @@ private NativeList<int> FindRenderersFromMaterials(NativeArray<int> sortedExclud
892876
return renderers;
893877
}
894878

895-
[BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)]
896-
private struct ClassifyMaterialsJob : IJob
897-
{
898-
[ReadOnly] public NativeParallelHashMap<int, BatchMaterialID>.ReadOnly batchMaterialHash;
899-
[ReadOnly] public NativeArray<int>.ReadOnly materialIDs;
900-
901-
public NativeList<int> supportedMaterialIDs;
902-
public NativeList<int> unsupportedMaterialIDs;
903-
public NativeList<GPUDrivenPackedMaterialData> supportedPackedMaterialDatas;
904-
905-
public void Execute()
906-
{
907-
var usedMaterialIDs = new NativeList<int>(4, Allocator.TempJob);
908-
909-
foreach (var materialID in materialIDs)
910-
{
911-
if (batchMaterialHash.ContainsKey(materialID))
912-
usedMaterialIDs.Add(materialID);
913-
}
914-
915-
if (usedMaterialIDs.IsEmpty)
916-
{
917-
usedMaterialIDs.Dispose();
918-
return;
919-
}
920-
921-
unsupportedMaterialIDs.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory);
922-
supportedMaterialIDs.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory);
923-
supportedPackedMaterialDatas.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory);
924-
925-
int unsupportedMaterialCount = GPUDrivenProcessor.ClassifyMaterials(usedMaterialIDs.AsArray(), unsupportedMaterialIDs.AsArray(), supportedMaterialIDs.AsArray(), supportedPackedMaterialDatas.AsArray());
926-
927-
unsupportedMaterialIDs.Resize(unsupportedMaterialCount, NativeArrayOptions.ClearMemory);
928-
supportedMaterialIDs.Resize(usedMaterialIDs.Length - unsupportedMaterialCount, NativeArrayOptions.ClearMemory);
929-
supportedPackedMaterialDatas.Resize(supportedMaterialIDs.Length, NativeArrayOptions.ClearMemory);
930-
931-
usedMaterialIDs.Dispose();
932-
}
933-
}
934-
935-
[BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)]
936-
private struct FindUnsupportedRenderersJob : IJob
937-
{
938-
[ReadOnly] public NativeArray<int>.ReadOnly unsupportedMaterials;
939-
[ReadOnly] public NativeArray<SmallIntegerArray>.ReadOnly materialIDArrays;
940-
[ReadOnly] public NativeArray<int>.ReadOnly rendererGroups;
941-
942-
public NativeList<int> unsupportedRenderers;
943-
944-
public unsafe void Execute()
945-
{
946-
if (unsupportedMaterials.Length == 0)
947-
return;
948-
949-
for (int arrayIndex = 0; arrayIndex < materialIDArrays.Length; arrayIndex++)
950-
{
951-
var materialIDs = materialIDArrays[arrayIndex];
952-
int rendererID = rendererGroups[arrayIndex];
953-
954-
for (int i = 0; i < materialIDs.Length; i++)
955-
{
956-
int materialID = materialIDs[i];
957-
958-
if (unsupportedMaterials.Contains(materialID))
959-
{
960-
unsupportedRenderers.Add(rendererID);
961-
break;
962-
}
963-
}
964-
}
965-
}
966-
}
967-
968879
[BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)]
969880
private unsafe struct FindRenderersFromMaterialJob : IJobParallelForBatch
970881
{
@@ -1008,30 +919,5 @@ public void Execute(int startIndex, int count)
1008919
selectedRenderGroups.AddRangeNoResize(renderersToAddPtr, renderersToAdd.Length);
1009920
}
1010921
}
1011-
1012-
[BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)]
1013-
private struct GetMaterialsWithChangedPackedMaterialJob : IJob
1014-
{
1015-
[ReadOnly] public NativeArray<int>.ReadOnly materialIDs;
1016-
[ReadOnly] public NativeArray<GPUDrivenPackedMaterialData>.ReadOnly packedMaterialDatas;
1017-
[ReadOnly] public NativeParallelHashMap<int, GPUDrivenPackedMaterialData>.ReadOnly packedMaterialHash;
1018-
1019-
[WriteOnly] public NativeHashSet<int> filteredMaterials;
1020-
1021-
public void Execute()
1022-
{
1023-
for (int index = 0; index < materialIDs.Length ; index++)
1024-
{
1025-
var materialID = materialIDs[index];
1026-
var newPackedMaterialData = packedMaterialDatas[index];
1027-
1028-
// Has its packed material changed? If the material isn't in the packed material cache, consider the material has changed.
1029-
if (packedMaterialHash.TryGetValue(materialID, out var packedMaterial) && packedMaterial.Equals(newPackedMaterialData))
1030-
continue;
1031-
1032-
filteredMaterials.Add(materialID);
1033-
}
1034-
}
1035-
}
1036922
}
1037923
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
using Unity.Collections;
2+
using UnityEngine.Rendering;
3+
using Unity.Burst;
4+
5+
namespace UnityEngine.Rendering
6+
{
7+
[BurstCompile]
8+
internal static class GPUResidentDrawerBurst
9+
{
10+
[BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)]
11+
public static void ClassifyMaterials(in NativeArray<int> materialIDs, in NativeParallelHashMap<int, BatchMaterialID>.ReadOnly batchMaterialHash,
12+
ref NativeList<int> supportedMaterialIDs, ref NativeList<int> unsupportedMaterialIDs, ref NativeList<GPUDrivenPackedMaterialData> supportedPackedMaterialDatas)
13+
{
14+
var usedMaterialIDs = new NativeList<int>(4, Allocator.Temp);
15+
16+
foreach (var materialID in materialIDs)
17+
{
18+
if (batchMaterialHash.ContainsKey(materialID))
19+
usedMaterialIDs.Add(materialID);
20+
}
21+
22+
if (usedMaterialIDs.IsEmpty)
23+
{
24+
usedMaterialIDs.Dispose();
25+
return;
26+
}
27+
28+
unsupportedMaterialIDs.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory);
29+
supportedMaterialIDs.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory);
30+
supportedPackedMaterialDatas.Resize(usedMaterialIDs.Length, NativeArrayOptions.UninitializedMemory);
31+
32+
int unsupportedMaterialCount = GPUDrivenProcessor.ClassifyMaterials(usedMaterialIDs.AsArray(), unsupportedMaterialIDs.AsArray(), supportedMaterialIDs.AsArray(), supportedPackedMaterialDatas.AsArray());
33+
34+
unsupportedMaterialIDs.Resize(unsupportedMaterialCount, NativeArrayOptions.ClearMemory);
35+
supportedMaterialIDs.Resize(usedMaterialIDs.Length - unsupportedMaterialCount, NativeArrayOptions.ClearMemory);
36+
supportedPackedMaterialDatas.Resize(supportedMaterialIDs.Length, NativeArrayOptions.ClearMemory);
37+
38+
usedMaterialIDs.Dispose();
39+
}
40+
41+
[BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)]
42+
public static void FindUnsupportedRenderers(in NativeArray<int> unsupportedMaterials, in NativeArray<SmallIntegerArray>.ReadOnly materialIDArrays, in NativeArray<int>.ReadOnly rendererGroups,
43+
ref NativeList<int> unsupportedRenderers)
44+
{
45+
for (int arrayIndex = 0; arrayIndex < materialIDArrays.Length; arrayIndex++)
46+
{
47+
var materialIDs = materialIDArrays[arrayIndex];
48+
int rendererID = rendererGroups[arrayIndex];
49+
50+
for (int i = 0; i < materialIDs.Length; i++)
51+
{
52+
int materialID = materialIDs[i];
53+
54+
if (unsupportedMaterials.Contains(materialID))
55+
{
56+
unsupportedRenderers.Add(rendererID);
57+
break;
58+
}
59+
}
60+
}
61+
}
62+
63+
[BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)]
64+
public static void GetMaterialsWithChangedPackedMaterial(in NativeArray<int> materialIDs, in NativeArray<GPUDrivenPackedMaterialData> packedMaterialDatas,
65+
in NativeParallelHashMap<int, GPUDrivenPackedMaterialData>.ReadOnly packedMaterialHash, ref NativeHashSet<int> filteredMaterials)
66+
{
67+
for (int index = 0; index < materialIDs.Length ; index++)
68+
{
69+
var materialID = materialIDs[index];
70+
var newPackedMaterialData = packedMaterialDatas[index];
71+
72+
// Has its packed material changed? If the material isn't in the packed material cache, consider the material has changed.
73+
if (packedMaterialHash.TryGetValue(materialID, out var packedMaterial) && packedMaterial.Equals(newPackedMaterialData))
74+
continue;
75+
76+
filteredMaterials.Add(materialID);
77+
}
78+
}
79+
}
80+
}

Packages/com.unity.render-pipelines.core/Runtime/GPUDriven/GPUResidentDrawerBurst.cs.meta

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)