Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
463da42
[Port] [6000.3] docg-7322: Clarify Keyword node behavior
svc-reach-platform-support Nov 14, 2025
c52a36b
[Port] [6000.3] [URP] [XR] Fixed transient textures dynamic scaling w…
svc-reach-platform-support Nov 14, 2025
27e0847
[Port] [6000.3] DOCG-7161 - Update VFX Graph reference content about …
svc-reach-platform-support Nov 14, 2025
4b72486
[Port] [6000.3] UUM-120684 : Fixed Scene Visibility toggle button not…
svc-reach-platform-support Nov 18, 2025
01e3c4f
[Port] [6000.3] Clean up the Shader Graph docs landing page
svc-reach-platform-support Nov 20, 2025
fa32e15
[Port] [6000.3] [UUM-126809] Save renderPipelineAsset before build
Nov 21, 2025
58daf62
[UUM-115234] Fix for Shadow Caster 2D shadows partially disappear in …
unity-cchu Nov 21, 2025
82aa528
[Port] [6000.3] Work around HLSLcc miscompilation on Metal in APV ble…
svc-reach-platform-support Nov 21, 2025
6c27599
[Port] [6000.3] Shader Graph : new nodes' preview state preference
svc-reach-platform-support Nov 21, 2025
59646af
[Port] [6000.3] [VFX] Override unity_SpriteProps with default value
svc-reach-platform-support Nov 21, 2025
b531eea
[Port] [6000.3] Fix UUM-83569: Ray Tracing in HDRP does not work with…
svc-reach-platform-support Nov 21, 2025
ac6d387
[Port] [6000.3] Fixed disable light settings
svc-reach-platform-support Nov 21, 2025
04e9aac
[Port] [6000.3] Fix for incorrect buffer size when switching XR On/Off
svc-reach-platform-support Nov 21, 2025
a2e1cd0
[Port] [6000.3] [APV] Loading a baking set using the Load Baking Set …
svc-reach-platform-support Nov 21, 2025
9d7c6ef
[Port] [6000.3] [UUM-126295] Fix for issues with with sprite mask int…
svc-reach-platform-support Nov 21, 2025
aeccd81
[Port] [6000.3] [HDRP][DLSS] fix debug view nullref exception on build
svc-reach-platform-support Nov 21, 2025
f1bdc9c
[Port] [6000.3] [VFX] Fix "Open VFX Graph Samples project on Github" …
svc-reach-platform-support Nov 21, 2025
dfd5e00
[Port] [6000.3] [VFX] Beautify point cache title
svc-reach-platform-support Nov 21, 2025
8b68cb5
[6.3] Migrate remaining SRP templates
theo-at-unity Nov 24, 2025
ce1364e
[Port] [6000.3] docg-6776: clarify Custom Function uniform usage and …
svc-reach-platform-support Nov 26, 2025
e07c497
[Port] [6000.3] [UUM-97985] Fix HDRP FPTL and Cluster artifacts when …
svc-reach-platform-support Nov 27, 2025
51ea1c5
[Port] [6000.3] docg-7325: Specify that Shader Graph doesn't support …
svc-reach-platform-support Nov 27, 2025
f9bc950
[Port] [6000.3] [Port] [6000.0] RenderGraph - Fix "Cannot return loca…
svc-reach-platform-support Nov 28, 2025
b0b2451
[Port] [6000.3] docg-7297: Clarify explicit LOD behavior in Sample Te…
svc-reach-platform-support Nov 28, 2025
6f9431c
[Port] [6000.3] docg-7795: Reference page for HDRP Six Way Shader Graph
svc-reach-platform-support Nov 28, 2025
1089fdf
[Port] [6000.3] 2D: Fix the warning log that says missing the [Serial…
svc-reach-platform-support Dec 1, 2025
3e0d304
[Port] [6000.3] Fix for UUM-119990
svc-reach-platform-support Dec 1, 2025
e9f9a42
[Port] [6000.3] [HDRP] Fix for missing shader variant error when area…
svc-reach-platform-support Dec 1, 2025
0cacd5a
[Port] [6000.3] [UUM-104008][URP 2D] Fix LIght2D toggle UI
svc-reach-platform-support Dec 1, 2025
9d282d2
[Port] [6000.3] [UUM-87566] Change SS UI within SRP in HDR output to …
mseonkim-unity Dec 1, 2025
93b6555
[Port] [6000.3] UUM-128460: Fix incorrect warning when going to play …
svc-reach-platform-support Dec 1, 2025
2c7b86d
[Port] [6000.3] Fix UUM-115985 Lens Flare (SRP) component missing doc…
svc-reach-platform-support Dec 1, 2025
26fc38b
[Port] [6000.3] [UUM-125723] Fix for URP broken inspector
svc-reach-platform-support Dec 1, 2025
351f44a
[Port] [6000.3] [SRP] Fix RSUV Sample
svc-reach-platform-support Dec 1, 2025
ec6de81
[Port] [6000.3] [UUM-126022] Fix the Screen Space Overlay UI renderin…
svc-reach-platform-support Dec 1, 2025
c12a70e
[Port] [6000.3] [HDRP][FSR2] fix quality camera override not respecti…
svc-reach-platform-support Dec 2, 2025
7b65a9f
[Port] [6000.3] docg-8135: Reorder Node Library ToC to mirror Shader …
ocarrere Dec 2, 2025
076c476
[Port] [6000.3] UUM-98082 - Fixed GPU Crash when disabling ZBinning w…
svc-reach-platform-support Dec 3, 2025
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 @@ -361,6 +361,7 @@ void BakingGUI()
activeSet = newSet;

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

if (activeSet != null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2614,6 +2614,7 @@ private void OnEndSceneViewCameraRendering()

public void UpdateFrame(int cameraCount)
{
DisposeSceneViewHiddenBits();
DisposeCompactVisibilityMasks();
if (cameraCount > m_LODParamsToCameraID.Capacity)
m_LODParamsToCameraID.Capacity = cameraCount;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,13 @@ struct APVResources

struct APVResourcesRW
{
#ifdef SHADER_API_METAL
// We need to use float4 on Metal, since HLSLcc will generate invalid MSL otherwise.
// See https://jira.unity3d.com/browse/UUM-127198
RWTexture3D<float4> L0_L1Rx;
#else
RWTexture3D<half4> L0_L1Rx;
#endif
RWTexture3D<unorm float4> L1G_L1Ry;
RWTexture3D<unorm float4> L1B_L1Rz;
RWTexture3D<unorm float4> L2_0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,13 @@ Texture3D<float4> _State1_L0_L1Rx;
Texture3D<float4> _State1_L1G_L1Ry;
Texture3D<float4> _State1_L1B_L1Rz;

#ifdef SHADER_API_METAL
// We need to use float4 on Metal, since HLSLcc will generate invalid MSL otherwise.
// See https://jira.unity3d.com/browse/UUM-127198
RWTexture3D<float4> _Out_L0_L1Rx;
#else
RWTexture3D<half4> _Out_L0_L1Rx;
#endif
RWTexture3D<unorm float4> _Out_L1G_L1Ry;
RWTexture3D<unorm float4> _Out_L1B_L1Rz;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@
#pragma multi_compile_local _ PROBE_VOLUMES_SKY_SHADING_DIRECTION
#pragma multi_compile_local _ PROBE_VOLUMES_PROBE_OCCLUSION

#ifdef SHADER_API_METAL
// We need to use float4 on Metal, since HLSLcc will generate invalid MSL otherwise.
// See https://jira.unity3d.com/browse/UUM-127198
RWTexture3D<float4> _Out_L0_L1Rx;
#else
RWTexture3D<half4> _Out_L0_L1Rx;
#endif
RWTexture3D<unorm float4> _Out_L1G_L1Ry;
RWTexture3D<unorm float4> _Out_L1B_L1Rz;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ namespace UnityEngine.Rendering
/// </summary>
[ExecuteAlways]
[AddComponentMenu("Rendering/Lens Flare (SRP)")]
[CurrentPipelineHelpURL("shared/lens-flare/lens-flare-component")]
public sealed class LensFlareComponentSRP : MonoBehaviour
{
[SerializeField]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1076,7 +1076,7 @@ void DetectMemoryLessResources()
foreach (ref readonly var nativePass in contextData.NativePasses)
{
// Loop over all created resources by this nrp
var graphPasses = nativePass.GraphPasses(contextData);
var graphPasses = nativePass.GraphPasses(contextData, out var actualPasses);
foreach (ref readonly var subPass in graphPasses)
{
foreach (ref readonly var createdRes in subPass.FirstUsedResources(contextData))
Expand Down Expand Up @@ -1118,6 +1118,8 @@ void DetectMemoryLessResources()
}
}
}
if (actualPasses.IsCreated)
actualPasses.Dispose();
}
}
}
Expand Down Expand Up @@ -1168,7 +1170,8 @@ private bool ExecuteInitializeResource(InternalRenderGraphContext rgContext, Ren
if (pass.mergeState == PassMergeState.Begin || pass.mergeState == PassMergeState.None)
{
ref var nativePass = ref contextData.nativePassData.ElementAt(pass.nativePassIndex);
foreach (ref readonly var subPass in nativePass.GraphPasses(contextData))
var graphPasses = nativePass.GraphPasses(contextData, out var actualPasses);
foreach (ref readonly var subPass in graphPasses)
{
foreach (ref readonly var res in subPass.FirstUsedResources(contextData))
{
Expand Down Expand Up @@ -1204,6 +1207,8 @@ private bool ExecuteInitializeResource(InternalRenderGraphContext rgContext, Ren
}
}
}
if (actualPasses.IsCreated)
actualPasses.Dispose();
}
}
// Other passes just create them at the beginning of the individual pass
Expand Down Expand Up @@ -1689,28 +1694,24 @@ internal unsafe void ExecuteBeginRenderPass(InternalRenderGraphContext rgContext
currBeginAttachment = new AttachmentDescriptor(renderTargetInfo.format);

// Set up the RT pointers
if (attachments[i].memoryless == false)
var rtHandle = resources.GetTexture(currAttachmentHandle.index);

//HACK: Always set the loadstore target even if StoreAction == DontCare or Resolve
//and LoadAction == Clear or DontCare
//in these cases you could argue setting the loadStoreTarget to NULL and only set the resolveTarget
//but this confuses the backend (on vulkan) and in general is not how the lower level APIs tend to work.
//because of the RenderTexture duality where we always bundle store+resolve targets as one RTex
//it does become impossible to have a memoryless loadStore texture with a memoryfull resolve
//but that is why we mark this as a hack and future work to fix.
//The proper (and planned) solution would be to move away from the render texture duality.
RenderTargetIdentifier rtidAllSlices = rtHandle;
currBeginAttachment.loadStoreTarget = new RenderTargetIdentifier(rtidAllSlices, attachments[i].mipLevel, CubemapFace.Unknown, attachments[i].depthSlice);

if (attachments[i].storeAction == RenderBufferStoreAction.Resolve ||
attachments[i].storeAction == RenderBufferStoreAction.StoreAndResolve)
{
var rtHandle = resources.GetTexture(currAttachmentHandle.index);

//HACK: Always set the loadstore target even if StoreAction == DontCare or Resolve
//and LoadAction == Clear or DontCare
//in these cases you could argue setting the loadStoreTarget to NULL and only set the resolveTarget
//but this confuses the backend (on vulkan) and in general is not how the lower level APIs tend to work.
//because of the RenderTexture duality where we always bundle store+resolve targets as one RTex
//it does become impossible to have a memoryless loadStore texture with a memoryfull resolve
//but that is why we mark this as a hack and future work to fix.
//The proper (and planned) solution would be to move away from the render texture duality.
RenderTargetIdentifier rtidAllSlices = rtHandle;
currBeginAttachment.loadStoreTarget = new RenderTargetIdentifier(rtidAllSlices, attachments[i].mipLevel, CubemapFace.Unknown, attachments[i].depthSlice);

if (attachments[i].storeAction == RenderBufferStoreAction.Resolve ||
attachments[i].storeAction == RenderBufferStoreAction.StoreAndResolve)
{
currBeginAttachment.resolveTarget = rtHandle;
}
currBeginAttachment.resolveTarget = rtHandle;
}
// In the memoryless case it's valid to not set both loadStoreTarget/and resolveTarget as the backend will allocate a transient one

currBeginAttachment.loadAction = attachments[i].loadAction;
currBeginAttachment.storeAction = attachments[i].storeAction;
Expand Down Expand Up @@ -1830,7 +1831,8 @@ private void ExecuteDestroyResource(InternalRenderGraphContext rgContext, Render
if (pass.mergeState == PassMergeState.End || pass.mergeState == PassMergeState.None)
{
ref var nativePass = ref contextData.nativePassData.ElementAt(pass.nativePassIndex);
foreach (ref readonly var subPass in nativePass.GraphPasses(contextData))
var graphPasses = nativePass.GraphPasses(contextData, out var actualPasses);
foreach (ref readonly var subPass in graphPasses)
{
foreach (ref readonly var res in subPass.LastUsedResources(contextData))
{
Expand All @@ -1841,6 +1843,8 @@ private void ExecuteDestroyResource(InternalRenderGraphContext rgContext, Render
}
}
}
if (actualPasses.IsCreated)
actualPasses.Dispose();
}
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -781,15 +781,16 @@ public readonly bool IsValid()
}

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public readonly ReadOnlySpan<PassData> GraphPasses(CompilerContextData ctx)
public readonly ReadOnlySpan<PassData> GraphPasses(CompilerContextData ctx, out NativeArray<PassData> actualPasses)
{
// When there's no pass being culled, we can directly return a Span of the Native List
if (lastGraphPass - firstGraphPass + 1 == numGraphPasses)
{
actualPasses = default;
return ctx.passData.MakeReadOnlySpan(firstGraphPass, numGraphPasses);
}

var actualPasses =
actualPasses =
new NativeArray<PassData>(numGraphPasses, Allocator.Temp,
NativeArrayOptions.UninitializedMemory);

Expand All @@ -808,10 +809,14 @@ public readonly ReadOnlySpan<PassData> GraphPasses(CompilerContextData ctx)
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public readonly void GetGraphPassNames(CompilerContextData ctx, DynamicArray<Name> dest)
{
foreach (ref readonly var pass in GraphPasses(ctx))
var span = GraphPasses(ctx, out var actualPasses);
foreach (ref readonly var pass in span)
{
dest.Add(pass.GetName(ctx));
}

if (actualPasses.IsCreated)
actualPasses.Dispose();
}

static bool CanMergeMSAASamples(ref NativePassData nativePass, ref PassData passToMerge)
Expand Down Expand Up @@ -953,7 +958,7 @@ public static PassBreakAudit CanMerge(CompilerContextData contextData, int activ
// Temporary cache of sampled textures in current Native Render Pass for conflict detection against fragments
using (HashSetPool<int>.Get(out var tempSampledTextures))
{
var graphPasses = nativePass.GraphPasses(contextData);
var graphPasses = nativePass.GraphPasses(contextData, out var actualPasses);
foreach (ref readonly var graphPass in graphPasses)
{
if (graphPass.numSampledOnlyRaster > 0) // Skip passes with no sampled textures
Expand All @@ -965,6 +970,9 @@ public static PassBreakAudit CanMerge(CompilerContextData contextData, int activ
}
}

if (actualPasses.IsCreated)
actualPasses.Dispose();

foreach (ref readonly var fragment in passToMerge.Fragments(contextData))
{
bool alreadyAttached = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1951,6 +1951,37 @@ public static DepthBits GetDefaultDepthBufferBits()
#endif
}

/// <summary>
/// Indicates whether the combined camera viewports fully cover the screen area.
/// </summary>
/// <param name="cameras">List of cameras to render.</param>
/// <returns>True if the combined camera viewports fully cover the screen area.</returns>
public static bool IsScreenFullyCoveredByCameras(List<Camera> cameras)
{
if (cameras == null || cameras.Count == 0)
return false;

bool isScreenFullyCovered = false;
using (ListPool<Rect>.Get(out var cameraRects))
{
// We don't need to exclude stacked cameras for the input camera list because the overlay camera have the same viewport with its base camera.
foreach (var camera in cameras)
{
if (camera.targetTexture != null || camera.cameraType != CameraType.Game)
continue;

// Skip test if any viewport is full-screen
if (Mathf.Approximately(camera.rect.xMin, 0f) && Mathf.Approximately(camera.rect.yMin, 0f) && camera.rect.width >= Screen.width && camera.rect.height >= Screen.height)
return true;

cameraRects.Add(camera.rect);
}
isScreenFullyCovered = Mathf.Approximately(SweepLineRectUtils.CalculateRectUnionArea(cameraRects), 1f);
}

return isScreenFullyCovered;
}

#if UNITY_EDITOR
/// <summary>
/// Populates null fields or collection elements in a target object from a source object of the same type.
Expand Down
Loading