Skip to content

Internal/master #8138

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
Apr 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
2a53e8a
[UUM-100007] Shadows from Shadow Caster 2D using 2D Colliders show in…
unity-cchu Apr 2, 2025
50a1d31
[UUM-100776] [6000.2] Fix Pixel Perfect error in rendergraph 2d
kennytann Apr 2, 2025
ce0e2b3
UUM-86099 Imported texture not cleared on first use
RoseHirigoyen Apr 3, 2025
4a4db1e
UUM-98558 GBuffers should be created before injection point
RoseHirigoyen Apr 3, 2025
1b0d07f
[2d] IN-97875 Editor crashes on PrepareSpriteTilingData when exiting …
venkify Apr 3, 2025
6fefc61
Fix editor console error - Missing APV data asset
UnityAlexHarkness Apr 3, 2025
bddec32
DOCG-6799 DOCG- 6812 Sky occlusion docs updates
markg-unity Apr 3, 2025
4dbf116
Fix Markdown table
ocarrere Apr 3, 2025
dde9428
UUM101193 - Using Burst static methods instead of Burst IJob.Run in G…
olivierprat Apr 3, 2025
988c0fd
Fixed a "[APV] Can no longer switch baking set mode"
nanho-lee Apr 3, 2025
2a2bda1
UUM-76696: Fix terrain detail instancing under DX11
zeroyao Apr 3, 2025
28176a2
[UUM-97647] Fix for Null Exception in a Shadow Shape Editor
unity-cchu Apr 4, 2025
ed06366
URP Render Graph - Move AfterRendering injection point
YohannVaastUnity Apr 4, 2025
773a737
Graphics/SRP/Fix Subpass Attachments Indices when adding a depth atta…
axoloto Apr 4, 2025
1a0e17f
Update LookDevVolumeProfileSettings.cs
RSlysz Apr 4, 2025
4dec0e2
DOCG-6857: Fix markdown markup in list
ocarrere Apr 4, 2025
9e820d4
[2d] Fix (Case 98140) Fix case where Canvas Image artefacts appear wh…
venkify Apr 4, 2025
f3fb4ed
various buginfo & code owner updates
arnaudcarre Apr 4, 2025
e4b22bb
[VFX] Make common code for template window in GraphView
julienamsellem Apr 4, 2025
4df2012
[VFX/SG] Handle Correctly null SRP
PaulDemeulenaere Apr 5, 2025
7d422e0
Move Test Filters from Yamato Definitions to Ignore Attributes
giorgospetkakis Apr 5, 2025
8d5c735
DOCG-6860 Quickfix TOC to link to page
Sam-Unity Apr 5, 2025
820dc41
[ShaderGraph] Allow nested keyword definitions to generate properly i…
Apr 5, 2025
94b4d40
Fix overblown sky on some hw.
eh-unity Apr 5, 2025
574fc83
[UUM-100205] Fix exception when changing SG variant limit under certa…
dhsavell Apr 5, 2025
70abd7b
DOCG-6696: Changed the displayName attributes in package.json manifes…
oleks-k Apr 5, 2025
a5b74c4
[UUM-76080] Fix additional SG Node Reference graphs being dirtied on …
dhsavell Apr 5, 2025
d17013e
[UUM-98657] Fix missing SG icons during initial asset name entry
dhsavell Apr 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,11 @@ public override void PrepareForBuild(BuildPlayerContext buildPlayerContext)
IncludeStreamableAsset(scenario.Value.cellOptionalDataAsset, basePath, useStreamingAsset);
else
StripStreambleAsset(scenario.Value.cellOptionalDataAsset);
IncludeStreamableAsset(scenario.Value.cellProbeOcclusionDataAsset, basePath, useStreamingAsset);

if (bakingSet.bakedProbeOcclusion)
IncludeStreamableAsset(scenario.Value.cellProbeOcclusionDataAsset, basePath, useStreamingAsset);
else
StripStreambleAsset(scenario.Value.cellProbeOcclusionDataAsset);
}

s_BakingSetsProcessedLastBuild.Add(bakingSet);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ static class Styles
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.";
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.";
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.";
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.";

public const float statusLabelWidth = 80;

Expand Down Expand Up @@ -222,18 +221,6 @@ public override void OnGUI()
Initialize();

var prv = ProbeReferenceVolume.instance;
// The CurrentBakingSet may change when you open an additional Scene with APV
if (prv.currentBakingSet != activeSet)
{
if (prv.currentBakingSet == null)
{
m_SingleSceneMode = true;
}
else
{
OpenBakingSet(prv.currentBakingSet);
}
}

// In single scene mode, user can't control active set, so we automatically create a new one
// in case the active scene doesn't have a baking set so that we can display baking settings
Expand Down Expand Up @@ -372,9 +359,8 @@ void BakingGUI()
{
if (newSet != null) { EditorUtility.SetDirty(newSet); newSet.singleSceneMode = false; }
activeSet = newSet;

ProbeReferenceVolume.instance.Clear();
ProbeReferenceVolume.instance.SetActiveBakingSet(activeSet);
}

if (activeSet != null)
Expand Down Expand Up @@ -497,24 +483,6 @@ void ShowWarnings()
}
}

if (activeSet == ProbeReferenceVolume.instance.currentBakingSet)
{
hasWarnings = true;
foreach (var sceneDataList in ProbeReferenceVolume.instance.perSceneDataList)
{
if (sceneDataList.bakingSet == activeSet)
{
hasWarnings = false;
break;
}
}

if (hasWarnings)
{
EditorGUILayout.HelpBox(Styles.msgIncorrectBakingSet, MessageType.Warning);
}
}

scenesForBake.Clear();
scenesToUnload.Clear();
scenesToEnable.Clear();
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
area: Graphics Optimization Systems
area: GPU Resident Drawer
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ private void UpdateSelection()
rendererIDs[i] = renderers[i] ? renderers[i].GetInstanceID() : 0;

m_Batcher.UpdateSelectedRenderers(rendererIDs);

rendererIDs.Dispose();

Profiler.EndSample();
Expand Down Expand Up @@ -630,7 +630,7 @@ private void PostPostLateUpdate()
UpdateSelection();
m_IsSelectionDirty = false;
}

m_FrameUpdateNeeded = false;
#endif
}
Expand Down Expand Up @@ -830,14 +830,8 @@ private void ClassifyMaterials(NativeArray<int> materials, out NativeList<int> 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);
}
}

Expand All @@ -847,13 +841,8 @@ private NativeList<int> FindUnsupportedRenderers(NativeArray<int> 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;
Expand All @@ -863,13 +852,8 @@ private NativeHashSet<int> GetMaterialsWithChangedPackedMaterial(NativeArray<int
{
NativeHashSet<int> filteredMaterials = new NativeHashSet<int>(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;
}
Expand All @@ -892,79 +876,6 @@ private NativeList<int> FindRenderersFromMaterials(NativeArray<int> sortedExclud
return renderers;
}

[BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)]
private struct ClassifyMaterialsJob : IJob
{
[ReadOnly] public NativeParallelHashMap<int, BatchMaterialID>.ReadOnly batchMaterialHash;
[ReadOnly] public NativeArray<int>.ReadOnly materialIDs;

public NativeList<int> supportedMaterialIDs;
public NativeList<int> unsupportedMaterialIDs;
public NativeList<GPUDrivenPackedMaterialData> supportedPackedMaterialDatas;

public void Execute()
{
var usedMaterialIDs = new NativeList<int>(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<int>.ReadOnly unsupportedMaterials;
[ReadOnly] public NativeArray<SmallIntegerArray>.ReadOnly materialIDArrays;
[ReadOnly] public NativeArray<int>.ReadOnly rendererGroups;

public NativeList<int> 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 FindRenderersFromMaterialJob : IJobParallelForBatch
{
Expand Down Expand Up @@ -1008,30 +919,5 @@ public void Execute(int startIndex, int count)
selectedRenderGroups.AddRangeNoResize(renderersToAddPtr, renderersToAdd.Length);
}
}

[BurstCompile(DisableSafetyChecks = true, OptimizeFor = OptimizeFor.Performance)]
private struct GetMaterialsWithChangedPackedMaterialJob : IJob
{
[ReadOnly] public NativeArray<int>.ReadOnly materialIDs;
[ReadOnly] public NativeArray<GPUDrivenPackedMaterialData>.ReadOnly packedMaterialDatas;
[ReadOnly] public NativeParallelHashMap<int, GPUDrivenPackedMaterialData>.ReadOnly packedMaterialHash;

[WriteOnly] public NativeHashSet<int> 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);
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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<int> materialIDs, in NativeParallelHashMap<int, BatchMaterialID>.ReadOnly batchMaterialHash,
ref NativeList<int> supportedMaterialIDs, ref NativeList<int> unsupportedMaterialIDs, ref NativeList<GPUDrivenPackedMaterialData> supportedPackedMaterialDatas)
{
var usedMaterialIDs = new NativeList<int>(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<int> unsupportedMaterials, in NativeArray<SmallIntegerArray>.ReadOnly materialIDArrays, in NativeArray<int>.ReadOnly rendererGroups,
ref NativeList<int> 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<int> materialIDs, in NativeArray<GPUDrivenPackedMaterialData> packedMaterialDatas,
in NativeParallelHashMap<int, GPUDrivenPackedMaterialData>.ReadOnly packedMaterialHash, ref NativeHashSet<int> 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);
}
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading