Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
702ab10
RenderGraph - Fix the FD issue by avoiding pooling of textures
YohannVaastUnity Dec 15, 2025
db22680
Fix lighting on HDRP Template
remi-chapelain Dec 16, 2025
cabe146
[ShaderGraph] Low hanging bug batch (12/25)
Dec 16, 2025
07f704e
Fixed Screen Space Lens Flare mip bias 0
eh-unity Dec 16, 2025
9f78d5e
Adjust the header name on the VRS Runtime Resources graphics settings
NetteVI Dec 16, 2025
9068529
Multiple spot light support in Surface Cache GI
urasmus Dec 16, 2025
7d80e12
[UUM-127274] [Switch 2] [HDRP] 011-HighQualityLines crashing
EmreDoganUnity Dec 17, 2025
6059150
[content automatically redacted] touching PlatformDependent folder
vincent-breysse Dec 17, 2025
3d484c7
Fix DLSS and FSR2 CustomPass Test Filtering UUM-130007
BenGraterUnity Dec 17, 2025
6656274
[Shader Graph] Fix for UUM-114439
FredMoreau Dec 17, 2025
40bd790
Fix MPPM asset database read only by setting vfx manager dirty
kpurcellunity Dec 17, 2025
4aade40
[VFX] Add the ability to filter and search in the common template window
julienamsellem Dec 17, 2025
52ebd84
Intermediate Pass Reduction [Q4 2025]
RSlysz Dec 17, 2025
e5950cd
[UUM-130317][6000.5] Add back sort at root
kennytann Dec 17, 2025
b3ade3d
Fixed ClearDispatchIndirect being passed incorrect group size.
EmreDoganUnity Dec 18, 2025
f8402fd
Removed old DebugLevel field from URP asset
kirill-titov-u Dec 18, 2025
043326d
RenderGraph - Fix a bug where the m_NonCulledPassIndicesForRasterPass…
YohannVaastUnity Dec 18, 2025
e0f573f
Point light support in Surface Cache
urasmus Dec 18, 2025
b0aae27
[content automatically redacted] touching PlatformDependent folder
Paulm-Unity Dec 18, 2025
ff69b7d
Shader Graph documentation bugfixes Dec 2025
markg-unity Dec 18, 2025
eff0b1c
Add test for outside pier HD Template
remi-chapelain Dec 19, 2025
4aef49e
[UUM-130660] Fix ShaderGraph's project settings' help box
april-roszkowski Dec 19, 2025
80d43a6
Fix shader warning in TraceTransparentRays.urtshader
YvainRaeymaekers Dec 19, 2025
3b39c14
GFXLIGHT-1789: Backport Async APV Baking
pigselated Dec 19, 2025
010e2c4
Switch/Switch2 - Improve SRPTest coverage for supported threading modes
juhomerj Dec 19, 2025
59d9107
[SRP] Fix Water SSR
remi-chapelain Dec 20, 2025
c2696ab
[Shader Graph] Toolbar Icons Fixes
FredMoreau Dec 20, 2025
14723e4
[GFXLIGHT-1755] Make LightBaker use standard radiometric units for it…
YvainRaeymaekers Dec 22, 2025
efc4066
[6000.5][URP 2D] Docs for Scriptable Renderer Feature 2D 6.4
kennytann Dec 23, 2025
426ad1a
[UUM-131297] Disable Unexpected_Failure_With_Missing_Type unstable test
AngelaDematte Dec 23, 2025
5300d19
Implement GetActiveSubsystem and DisplaySubsystemDefault. Deprecate X…
Tanya-Li-Unity Dec 23, 2025
5454b7c
Removed mathematics dependency for SRP Core package
kirill-titov-u Dec 24, 2025
a70ffd2
Fix VFX_URP build on Quest
theo-at-unity Jan 2, 2026
1bc3272
Add simple terrain support in Surface Cache
laylaarab Jan 5, 2026
d701629
[VFX] Fixed system border title multiline and other UI issues
julienamsellem Jan 5, 2026
a862a7c
Fix minor package sample issues
remi-chapelain Jan 6, 2026
0f1d475
Address uninitialized memory issue in Surface Cache
urasmus Jan 6, 2026
9a44aa1
Re-add reference from URP Editor assembly to Surface Cache Core assembly
urasmus Jan 6, 2026
32c9b34
[VFX] Release batch instance when disabled
gabrieldelacruz Jan 6, 2026
c6073c3
Revert fix for performance regression caused by incorrect Meta pass s…
laylaarab Jan 7, 2026
3a92ab6
[UUM-128839] Fix point light shadow artifact when soft shadows are en…
YvainRaeymaekers Jan 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,13 @@
"name": "Unity.RenderPipelines.Core.Editor.Shared",
"rootNamespace": "",
"references": [
"GUID:3eae0364be2026648bf74846acb8a731"
"GUID:3eae0364be2026648bf74846acb8a731",
"GUID:716365d8000d25e4c8621aa2d34a92fa",
"GUID:9149a3cbb036049f68e4e5b6388b9c85",
"GUID:c49c619b6af2be941af9bcbca2641964",
"GUID:df380645f10b7bc4b97d4f5eb6303d95",
"GUID:4fd6538c1c56b409fb53fdf0183170ec",
"GUID:214c0945bb158c940aada223f3223ee8"
],
"includePlatforms": [
"Editor"
Expand Down

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

Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
using UnityEditor;

namespace UnityEngine.Rendering
{
//@ This is a simple instance data viewer class used for instance data debugging.
//@ This could become a user facing tool in the future. Where the user could see the instance data in the GPU.
//@ It could show layouts, archetypes, components and instance data.
internal class GPUInstanceDataBufferViewer : EditorWindow
{
[SerializeField] private Vector2 m_ScrollPos;

public static void InitializeWindow()
{
GPUInstanceDataBufferViewer wnd = GetWindow<GPUInstanceDataBufferViewer>();
wnd.titleContent = new GUIContent("GPU Resident Instance Data Viewer");
}

public void OnGUI()
{
if (!GPUResidentDrawer.IsInitialized())
{
EditorGUILayout.LabelField("GPU Resident Drawer is not enabled in Render Pipeline Asset.");
return;
}

m_ScrollPos = EditorGUILayout.BeginScrollView(m_ScrollPos);

//@ This is usefully for internal GPU Resident Drawer debugging.

ref GPUArchetypeManager archetypeMgr = ref GPUResidentDrawer.GetGPUArchetypeManager().GetRef();
ref DefaultGPUComponents defaultGPUComponents = ref GPUResidentDrawer.GetDefaultGPUComponents();
var buffer = GPUResidentDrawer.GetInstanceDataBuffer();
var readback = GPUResidentDrawer.ReadbackInstanceDataBuffer<uint>();

EditorGUILayout.LabelField($"Archetypes Count: {buffer.layout.archetypes.Length}");

for (int i = 0; i < buffer.layout.archetypes.Length; ++i)
{
var archetype = buffer.layout.archetypes[i];
var archetypeDesc = archetypeMgr.GetArchetypeDesc(archetype);
EditorGUILayout.LabelField($"Archetype {i}, ID: {archetype.index}");
EditorGUILayout.LabelField("Components:");
for (int j = 0; j < archetypeDesc.components.Length; ++j)
{
var component = archetypeDesc.components[j];
var componentDesc = archetypeMgr.GetComponentDesc(component);

// Replace when Shader.PropertyIDToName API lands
//var componentName = Shader.PropertyIDToName(componentDesc.propertyID);
string componentName = "<unknown>";
EditorGUILayout.LabelField($"Component {j} - Name: {componentName}, ID: {component.index}");
}
}

for (int archIndex = 0; archIndex < buffer.layout.archetypes.Length; ++archIndex)
{
var archetype = buffer.layout.archetypes[archIndex];
var archetypeDesc = archetypeMgr.GetArchetypeDesc(archetype);

EditorGUILayout.LabelField($"====== Archetype {archetype} Instance Data ======");

var count = buffer.layout.instancesCount[archIndex];
for (int instanceIndex = 0; instanceIndex < count; ++instanceIndex)
{
GPUInstanceIndex gpuIndex = buffer.InstanceGPUHandleToGPUIndex(InstanceGPUHandle.Create(archetype, instanceIndex));
PackedMatrix objectToWorld = readback.LoadData<PackedMatrix>(defaultGPUComponents.objectToWorld, gpuIndex);
EditorGUILayout.LabelField($"Instance {instanceIndex}; GPU Index: {gpuIndex.index}; ObjectToWorld {objectToWorld}");
//@ Read and display more instance data here if needed...
}
}

readback.Dispose();

EditorGUILayout.EndScrollView();
}
}
}

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

Original file line number Diff line number Diff line change
@@ -1,36 +1,30 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.CompilerServices;
using UnityEditor.LightBaking;

namespace UnityEngine.Rendering
{
partial class AdaptiveProbeVolumes
{
// This class is used to (1) access the internal class UnityEditor.LightBaking.BakePipelineDriver and (2) provide a slightly higher level API.
private sealed class BakePipelineDriver : IDisposable
sealed class BakePipelineDriver : IDisposable
{
// Keep in sync with the enum BakePipeline::Run::StageName
public enum StageName : int
{
Initialized,
Preprocess,
Bake,
PostProcess,
AdditionalBake,
Done
}

private readonly object _bakePipelineDriver;
private readonly Type _bakePipelineDriverType;
readonly object m_BakePipelineDriver;
readonly Type m_BakePipelineDriverType;
readonly Type m_StageNameType;

internal BakePipelineDriver()
{
_bakePipelineDriverType = Type.GetType("UnityEditor.LightBaking.BakePipelineDriver, UnityEditor");
bool newed = _bakePipelineDriverType != null;
Debug.Assert(newed, "Unexpected, could not find the type UnityEditor.LightBaking.BakePipelineDriver");
_bakePipelineDriver = newed ? Activator.CreateInstance(_bakePipelineDriverType) : null;
Debug.Assert(_bakePipelineDriver != null, "Unexpected, could not new up a BakePipelineDriver");
Debug.Assert(UnityEditorInternal.InternalEditorUtility.CurrentThreadIsMainThread());

m_BakePipelineDriverType = Type.GetType("UnityEditor.LightBaking.BakePipelineDriver, UnityEditor");
Debug.Assert(m_BakePipelineDriverType != null, "Unexpected, could not find the type UnityEditor.LightBaking.BakePipelineDriver");
m_StageNameType = m_BakePipelineDriverType.GetNestedType("StageName", BindingFlags.NonPublic | BindingFlags.Public);
Debug.Assert(m_StageNameType is { IsEnum: true }, "Unexpected, could not find the nested enum StageName on BakePipelineDriver");
Debug.Assert(IsStageNameEnumConsistent(m_StageNameType), "Unexpected, StageName enum is not consistent with BakePipelineDriver.StageName enum");
m_BakePipelineDriver = Activator.CreateInstance(m_BakePipelineDriverType, nonPublic: true);
Debug.Assert(m_BakePipelineDriver != null, "Unexpected, could not new up a BakePipelineDriver");
}

internal void StartBake(bool enablePatching, ref float progress, ref StageName stage)
Expand All @@ -51,36 +45,78 @@ internal bool RunInProgress()
internal void Step(ref float progress, ref StageName stage) =>
Update(true, true, true, out progress, out stage);

private void SetEnableBakedLightmaps(bool enable) =>
void SetEnableBakedLightmaps(bool enable) =>
InvokeMethod(new object[] { enable }, out _);

private void SetEnablePatching(bool enable) =>
void SetEnablePatching(bool enable) =>
InvokeMethod(new object[] { enable }, out _);

private void Update(bool isOnDemandBakeInProgress, bool isOnDemandBakeAsync, bool shouldBeRunning,
void Update(bool isOnDemandBakeInProgress, bool isOnDemandBakeAsync, bool shouldBeRunning,
out float progress, out StageName stage)
{
object[] parameters = { isOnDemandBakeInProgress, isOnDemandBakeAsync, shouldBeRunning, -1.0f, -1 };
progress = -1.0f;
stage = StageName.Invalid;
object[] parameters = { isOnDemandBakeInProgress, isOnDemandBakeAsync, shouldBeRunning, progress,
Enum.ToObject(m_StageNameType, (int)stage) };
InvokeMethod(parameters, out _);
progress = (float)parameters[3];
stage = (StageName)parameters[4];
stage = (StageName)Convert.ToInt32(parameters[4]);
}

public void Dispose() =>
InvokeMethod(new object[] { }, out _);

private bool InvokeMethod(object[] parameters, out object result, [CallerMemberName] string methodName = "")
bool InvokeMethod(object[] parameters, out object result, [CallerMemberName] string methodName = "")
{
MethodInfo methodInfo = _bakePipelineDriverType.GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
MethodInfo methodInfo = m_BakePipelineDriverType.GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
bool gotMethod = methodInfo != null;
Debug.Assert(gotMethod, $"Unexpected, could not find {methodName} on BakePipelineDriver");
if (!gotMethod)
{
result = null;

result = methodInfo.Invoke(m_BakePipelineDriver, parameters);

return true;
}

// Keep this in sync with the enum in Editor\Src\GI\BakePipeline\BakePipeline.bindings.h
public enum StageName
{
Invalid = -1,
Initialized = 0,
Preprocess = 1,
PreprocessProbes = 2,
Bake = 3,
PostProcess = 4,
AdditionalBake = 5,
Done = 6
}

// If StageName is not kept in sync, this should return false
static bool IsStageNameEnumConsistent(Type otherType)
{
string[] ourNames = Enum.GetNames(typeof(StageName));
string[] otherNames = Enum.GetNames(otherType);

if (ourNames.Length != otherNames.Length)
return false;
}

result = methodInfo.Invoke(_bakePipelineDriver, parameters);
Array ourValues = Enum.GetValues(typeof(StageName));
Array otherValues = Enum.GetValues(otherType);

// Brute-force compare each local name against the external by lookup
for (int i = 0; i < ourNames.Length; i++)
{
string name = ourNames[i];

int otherIndex = Array.IndexOf(otherNames, name);
if (otherIndex < 0)
return false;

int ourVal = Convert.ToInt32(ourValues.GetValue(i));
int otherVal = Convert.ToInt32(otherValues.GetValue(otherIndex));

if (ourVal != otherVal)
return false;
}

return true;
}
Expand Down
Loading