Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
cf9e4d7
[Port] [6000.3] Deprecate com.unity.xr.interaction.subsystems package
svc-reach-platform-support Oct 1, 2025
51d7c51
[Port] [6000.3] [URP] Fixed SSAO precision issue on Mobile devices
svc-reach-platform-support Oct 1, 2025
47a2189
[Port] [6000.3] DOCG-7425 Add HDRP render graph docs
svc-reach-platform-support Oct 1, 2025
adcd9ce
[Port] [6000.3] Fix unselectable None option in Rendering Debugger > …
svc-reach-platform-support Oct 1, 2025
67ff3a5
[Port] [6000.3] docg-7282: Add Matrix Data types
svc-reach-platform-support Oct 1, 2025
9d72ddb
[Port] [6000.3] [VFX] Prevent the sticky note title from vanishing wh…
svc-reach-platform-support Oct 1, 2025
c4f7390
[Port] [6000.3] docg-7352: Fix World to Screen code
svc-reach-platform-support Oct 1, 2025
f5ff2c6
[Port] [6000.3] Fix Android glitch by using a different overload for …
svc-reach-platform-support Oct 1, 2025
1d1fcc1
[content automatically redacted] touching PlatformDependent folder
svc-reach-platform-support Oct 3, 2025
092b677
[Port] [6000.3] UUM-114563: Virtual Offset baking broken on AMD
svc-reach-platform-support Oct 3, 2025
309ee01
[Port] [6000.3] [SRP] Fix missing reference script error in RSUV Look…
svc-reach-platform-support Oct 3, 2025
992145c
[Port] [6000.3] [HDRP] Fixing script link in Water sample Cave scene
svc-reach-platform-support Oct 3, 2025
93febb9
[Port] [6000.3] UITk docs: Added docs for the UITK custom shader support
svc-reach-platform-support Oct 3, 2025
1f05fd6
[Port] [6000.3] Bind default shadowmap uniforms in skybox pass when u…
svc-reach-platform-support Oct 4, 2025
c17a5db
[Port] [6000.3] docg-7771: Reflection probe: new scene view overlays …
svc-reach-platform-support Oct 4, 2025
23a2dcf
[Port] [6000.3] Ensured that we don't attempt to unload an unsaved scene
svc-reach-platform-support Oct 4, 2025
ce27bb9
[Port] [6000.3] Document missing parameters in Shader Graph Property …
svc-reach-platform-support Oct 4, 2025
4134989
[Backport][6.3][UUM-102113] - Fixed Render Graph pass merging with VRS
axoloto Oct 4, 2025
c265c45
[Port] [6000.3] Fix for shadergraph compilation issues due to spacewarp
svc-reach-platform-support Oct 4, 2025
21c09d4
[Port] [6000.3] Redistribute Shader Graph doc's Get started section c…
svc-reach-platform-support Oct 4, 2025
8d21b63
[Port] [6000.3] Don't do packing as part of input extraction for APV
svc-reach-platform-support Oct 6, 2025
4b166ba
[Port] [6000.3] Modify resourceData MaxReaders MaxVersions int to an …
svc-reach-platform-support Oct 6, 2025
b0ce6cc
[Port] [6000.3] Fix blitter error when passing a default texture (Bla…
svc-reach-platform-support Oct 7, 2025
d2585ff
[Port] [6000.3] Fixed broken links
svc-reach-platform-support Oct 7, 2025
32caf57
[Port 6000.3] RenderGraph Mem Leak with RenderGraphCompilationCache
RoseHirigoyen Oct 8, 2025
26cf231
Backport: Fix shadergraph URP terrain subtarget when "material overri…
jonbro Oct 8, 2025
19b41d4
[Port] [6000.3] [UUM-115475][URP 2D][6000.4] Remove unsafe light pass…
svc-reach-platform-support Oct 8, 2025
83e58e3
[Port] [6000.3] Add RenderingUtils.ReAllocateHandleIfNeeded with Text…
svc-reach-platform-support Oct 8, 2025
d68d9b2
[Port] [6000.3] [Particles] Forcing identity in prevWorldMatrix
svc-reach-platform-support Oct 8, 2025
97e99b1
[Port] [6000.3] [HDRP] Fix graphics issue with PrecomputedAtmospheric…
svc-reach-platform-support Oct 8, 2025
00267a9
[Port] [6000.3] [IUpscaler] Remove custom options GUI attributes, use…
svc-reach-platform-support Oct 8, 2025
47944a8
[Port] [6000.3] Fix LookDev VolumeComponent deserialized at wrong tim…
svc-reach-platform-support Oct 8, 2025
e20b552
[Port] [6000.3] docg-7688: describe disable color tint in HDRP canvas…
svc-reach-platform-support Oct 8, 2025
84583d8
[Backport 6000.3] Added support for ScreenPosition in UITK Custom Sha…
ncerone-unity Oct 8, 2025
51420cb
[Port] [6000.3] [UUM-99152] Fix for Depth Priming not enabled in refl…
svc-reach-platform-support Oct 9, 2025
f1238a9
[Port] [6000.3] Fix wrong hasPassesAfterPostProcessing with wrong com…
svc-reach-platform-support Oct 9, 2025
78cd2fc
[Port] [6000.3] [VFX][Fix] Remove VFXEdgeDragInfo
svc-reach-platform-support Oct 9, 2025
a246dfa
[Port] [6000.3] Revert Vector operators
svc-reach-platform-support Oct 9, 2025
faabadd
[Backport][6.3][UUM-115209] - Extension of the NRP RG compiler cullin…
axoloto Oct 9, 2025
56ff30a
[Port] [6000.3] Fixed UUM-108024. Removed receivesHierarchyGeometryCh…
svc-reach-platform-support Oct 11, 2025
5e49b29
[Port] [6000.3] [VFX][Fix] Fix VFX blackboard losing selection when s…
svc-reach-platform-support Oct 13, 2025
f94eb7b
[Port] [6000.3] HQ lines fixes
svc-reach-platform-support Oct 13, 2025
b71de84
[Port] [6000.3] [VFX] Properly handle empty enum values and prevent i…
Oct 14, 2025
39e70a0
[Port] [6000.3] docg-7154: VFX Manual docs : Six-way lighting
Oct 14, 2025
329da70
[Backport 6.3] Update render graph samples to use the render graph he…
RoseHirigoyen Oct 15, 2025
c5e0f25
[Backport] Bugfixes + improvements to HDRP ReBLUR Denoiser (UUM-10370…
urasmus Oct 16, 2025
d28df3a
[Port to 6000.3] Converting the AssetType test project to a test package
alexh-huang Oct 18, 2025
352bd31
[Port] [6000.3] Document Shader Graph template browser
svc-reach-platform-support Oct 18, 2025
0181123
[Port] [6000.3] RenderGraph - Fix a crash on old IOS devices due to a…
Oct 20, 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 @@ -182,6 +182,35 @@ public sealed class DebugStateInt : DebugState<int> { }
[Serializable, DebugState(typeof(DebugUI.ObjectPopupField), typeof(DebugUI.CameraSelector), typeof(DebugUI.ObjectField))]
public sealed class DebugStateObject : DebugState<UnityEngine.Object>
{
[SerializeField] string m_UserData;

/// <inheritdoc/>
public override void SetValue(object value, DebugUI.IValueField field)
{
// DebugStateObject is used to serialize the selected camera reference in DebugUI.CameraSelector. For SceneView Camera this doesn't work because
// the camera is never saved and always recreated. So we use a special string to identify this case and restore the reference later.
if (field is DebugUI.CameraSelector && SceneView.lastActiveSceneView != null && (Camera)value == SceneView.lastActiveSceneView.camera)
{
m_UserData = "SceneViewCamera";
}
else
{
m_UserData = null;
}
base.SetValue(value, field);
}

/// <inheritdoc/>
public override object GetValue()
{
if (value == null && m_UserData != null && m_UserData == "SceneViewCamera" && SceneView.lastActiveSceneView != null && SceneView.lastActiveSceneView.camera != null)
{
value = SceneView.lastActiveSceneView.camera;
}

return base.GetValue();
}

/// <summary>
/// Returns the hash code of the Debug Item.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ class DefaultLightTransport : LightingBaker

public override void Initialize(bool bakeProbeOcclusion, NativeArray<Vector3> probePositions)
{
if (!InputExtraction.ExtractFromScene(out input))
if (!InputExtraction.ExtractFromScene(out input, true))
{
Debug.LogError("InputExtraction.ExtractFromScene failed.");
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public override void Initialize(ProbeVolumeBakingSet bakingSet, NativeArray<Vect
batchResult = new Vector3[k_MaxProbeCountPerBatch];

var computeBufferTarget = GraphicsBuffer.Target.CopyDestination | GraphicsBuffer.Target.CopySource
| GraphicsBuffer.Target.Structured | GraphicsBuffer.Target.Raw;
| GraphicsBuffer.Target.Structured;

// Create acceletation structure
m_AccelerationStructure = BuildAccelerationStructure(voSettings.collisionMask);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,7 @@ void ShowWarnings()
{
for (int i = 0; i < SceneManager.sceneCount; i++)
{
var scene = SceneManager.GetSceneAt(i);
Scene scene = SceneManager.GetSceneAt(i);
if (scene.isLoaded && ProbeVolumeBakingSet.GetBakingSetForScene(scene) != activeSet)
scenesToUnload.Add(scene);
}
Expand Down Expand Up @@ -467,7 +467,7 @@ void ShowWarnings()
if (scenesToUnload.All(s => !s.isDirty) || EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())
{
foreach (var scene in scenesToUnload)
EditorSceneManager.CloseScene(scene, false);
EditorSceneManager.CloseScene(scene, string.IsNullOrEmpty(scene.path)); // Remove the scene from the hierarchy iff it has never been saved.
}
break;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,21 +87,22 @@ void RayGenExecute(UnifiedRT::DispatchInfo dispatchInfo)
if (!hit.IsValid() || hit.isFrontFace)
{
validHits++;
continue;
}

float distanceDiff = hit.hitDistance - minDist;
if (distanceDiff < DISTANCE_THRESHOLD)
else if (hit.IsValid())
{
UnifiedRT::HitGeomAttributes attributes = UnifiedRT::FetchHitGeomAttributes(hit, UnifiedRT::kGeomAttribFaceNormal);
float dotSurface = dot(ray.direction, attributes.faceNormal);

// If new distance is smaller by at least kDistanceThreshold, or if ray is at least DOT_THRESHOLD more colinear with normal
if (distanceDiff < -DISTANCE_THRESHOLD || dotSurface - maxDotSurface > DOT_THRESHOLD)
float distanceDiff = hit.hitDistance - minDist;
if (distanceDiff < DISTANCE_THRESHOLD)
{
outDirection = ray.direction;
maxDotSurface = dotSurface;
minDist = hit.hitDistance;
UnifiedRT::HitGeomAttributes attributes = UnifiedRT::FetchHitGeomAttributes(hit, UnifiedRT::kGeomAttribFaceNormal);
float dotSurface = dot(ray.direction, attributes.faceNormal);

// If new distance is smaller by at least kDistanceThreshold, or if ray is at least DOT_THRESHOLD more colinear with normal
if (distanceDiff < -DISTANCE_THRESHOLD || dotSurface - maxDotSurface > DOT_THRESHOLD)
{
outDirection = ray.direction;
maxDotSurface = dotSurface;
minDist = hit.hitDistance;
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ public void CleanupRenderGraph()
m_RenderGraphTestPipeline.invalidContextForTesting = false;
// Cleaning all Render Graph resources and data structures
// Nothing remains, Render Graph in next test will start from scratch
m_RenderGraph.ForceCleanup();
m_RenderGraph.CleanupResourcesAndGraph();
}
}
}

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,167 @@
#if UNITY_EDITOR
#if ENABLE_UPSCALER_FRAMEWORK && ENABLE_NVIDIA && ENABLE_NVIDIA_MODULE
using UnityEditor;
using UnityEngine;
using UnityEngine.NVIDIA;

[CustomEditor(typeof(DLSSOptions))]
public class DLSSOptionsEditor : Editor
{
// Declare variables to hold each property
private SerializedProperty m_QualityMode;
private SerializedProperty m_FixedResolution;
private SerializedProperty m_PresetQuality;
private SerializedProperty m_PresetBalanced;
private SerializedProperty m_PresetPerformance;
private SerializedProperty m_PresetUltraPerformance;
private SerializedProperty m_PresetDLAA;
private void OnEnable()
{
// Find each property by its exact field name in DLSSOptions.cs
m_QualityMode = serializedObject.FindProperty("DLSSQualityMode");
m_FixedResolution = serializedObject.FindProperty("FixedResolutionMode");
m_PresetQuality = serializedObject.FindProperty("DLSSRenderPresetQuality");
m_PresetBalanced = serializedObject.FindProperty("DLSSRenderPresetBalanced");
m_PresetPerformance = serializedObject.FindProperty("DLSSRenderPresetPerformance");
m_PresetUltraPerformance = serializedObject.FindProperty("DLSSRenderPresetUltraPerformance");
m_PresetDLAA = serializedObject.FindProperty("DLSSRenderPresetDLAA");
}

#region STYLES
private static readonly string[] DLSSPerfQualityLabels =
{ // should follow enum value ordering in DLSSQuality enum
DLSSQuality.MaximumPerformance.ToString(),
DLSSQuality.Balanced.ToString(),
DLSSQuality.MaximumQuality.ToString(),
DLSSQuality.UltraPerformance.ToString(),
DLSSQuality.DLAA.ToString()
};
private static string[][] DLSSPresetOptionsForEachPerfQuality = PopulateDLSSQualityPresetLabels();
private static string[][] PopulateDLSSQualityPresetLabels()
{
int CountBits(uint bitMask) // System.Numerics.BitOperations not available
{
int count = 0;
while (bitMask > 0)
{
count += (bitMask & 1) > 0 ? 1 : 0;
bitMask >>= 1;
}
return count;
}

System.Array perfQualities = System.Enum.GetValues(typeof(DLSSQuality));
string[][] labels = new string[perfQualities.Length][];
foreach (DLSSQuality quality in perfQualities)
{
uint presetBitmask = GraphicsDevice.GetAvailableDLSSPresetsForQuality(quality);
int numPresets = CountBits(presetBitmask) + 1; // +1 for default option which is available to all quality enums
labels[(int)quality] = new string[numPresets];

int iWrite = 0;
System.Array presets = System.Enum.GetValues(typeof(DLSSPreset));
foreach (DLSSPreset preset in presets)
{
if (preset == DLSSPreset.Preset_Default)
{
labels[(int)quality][iWrite++] = "Default Preset";
continue;
}

if ((presetBitmask & (uint)preset) != 0)
{
string presetName = preset.ToString().Replace('_', ' ');
labels[(int)quality][iWrite++] = presetName + " - " + GraphicsDevice.GetDLSSPresetExplanation(preset);
}
}
}
return labels;
}

private static readonly GUIContent renderPresetsLabel = new GUIContent("Render Presets", "Selects an internal DLSS tuning profile. Presets adjust reconstruction behavior, trading off between sharpness, stability, and performance. Different presets may work better depending on scene content and motion.");
#endregion


// DLSSOptions contain DLSS presets for each quality mode.
// The presets available for each quality mode may be different from one another and change over time between DLSS releases.
// E.g. DLAAPreset = { F, J, K }
// BalancedPreset = { J, K }
// Instead of letting Unity default-render the GUI, we write our own inspector logic to enforce the preset value requirements.
void DrawPresetDropdown(ref SerializedProperty presetProp, DLSSQuality perfQuality)
{
// each DLSSQuality has a different set of DLSSPresets, represented by a bitmask.
uint presetBitmask = GraphicsDevice.GetAvailableDLSSPresetsForQuality(perfQuality);
bool propHasInvalidPresetValue = presetProp.uintValue != 0 && (presetBitmask & presetProp.uintValue) == 0;
if (propHasInvalidPresetValue)
{
Debug.LogWarningFormat("DLSS Preset {0} not found for quality setting {1}, resetting to default value.",
((DLSSPreset)presetProp.uintValue).ToString(),
perfQuality.ToString()
);
presetProp.uintValue = 0;
}

// We don't want to deal with List<DLSSPreset> & using bitmasks,
// so we need some bit ops to convert between GUI index <--> Preset value
int FindPresetGUIIndex(uint presetBitmask, uint presetValue)
{
int i = 0;
while (presetValue > 0)
{
i += (presetBitmask & 1) > 0 ? 1 : 0;
presetBitmask >>= 1;
presetValue >>= 1;
}
return i; // includes 0=default, goes like 1=preset_A, 2=preset_B ...
}
uint GUIIndexToPresetValue(uint presetBitmask, uint index)
{
// e.g. bitset: 100101 --> 3 bits set, supports 4 presets (0=default, +3 other presets).
// ^ i = 1 -> Preset A = 1
// ^ i = 2 -> Preset C = 4
// ^ i = 3 -> Preset F = 32
uint val = 0;
while (index > 0 && presetBitmask > 0)
{
if ((presetBitmask & 1) != 0)
--index;
presetBitmask >>= 1;
val = val == 0 ? 1 : (val << 1);
}
if (index != 0)
{
Debug.LogWarningFormat("DLSSPreset (index={0}) not found in the supported preset list (mask={1}), setting to default value.", index, presetBitmask);
return 0;
}
// Debug.LogFormat("Setting preset {0} : {1}", ((DLSSPreset)val).ToString(), val);
return val;
}

int presetIndex = FindPresetGUIIndex(presetBitmask, presetProp.uintValue);
int iNew = EditorGUILayout.Popup(DLSSPerfQualityLabels[(int)perfQuality], presetIndex, DLSSPresetOptionsForEachPerfQuality[(int)perfQuality]);
if (iNew != presetIndex)
presetProp.uintValue = GUIIndexToPresetValue(presetBitmask, (uint)iNew);
}
public override void OnInspectorGUI()
{
serializedObject.Update();

EditorGUILayout.PropertyField(m_QualityMode);
EditorGUILayout.PropertyField(m_FixedResolution);

EditorGUILayout.LabelField(renderPresetsLabel, EditorStyles.boldLabel);
++EditorGUI.indentLevel;

DrawPresetDropdown(ref m_PresetQuality, DLSSQuality.MaximumQuality);
DrawPresetDropdown(ref m_PresetBalanced, DLSSQuality.Balanced);
DrawPresetDropdown(ref m_PresetPerformance, DLSSQuality.MaximumPerformance);
DrawPresetDropdown(ref m_PresetUltraPerformance, DLSSQuality.UltraPerformance);
DrawPresetDropdown(ref m_PresetDLAA, DLSSQuality.DLAA);

--EditorGUI.indentLevel;

serializedObject.ApplyModifiedProperties();
}
}
#endif
#endif

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,20 @@
#if ENABLE_UPSCALER_FRAMEWORK
#if UNITY_EDITOR
using UnityEditor;

/// <summary>
/// This custom editor ensures that when drawing any UpscalerOptions object,
/// the default "Script" field is not shown. Applies to all derived options.
/// </summary>
[CustomEditor(typeof(UnityEngine.Rendering.UpscalerOptions), true)]
public class UpscalerOptionsEditor : Editor
{
public override void OnInspectorGUI()
{
// DrawDefaultInspector renders all serialized fields except for the "Script" field
// and any fields marked with [HideInInspector].
DrawDefaultInspector();
}
}
#endif
#endif

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,52 @@
#if ENABLE_UPSCALER_FRAMEWORK
#if UNITY_EDITOR
using System.Collections.Generic;
using UnityEditor;

namespace UnityEngine.Rendering
{
#nullable enable
/// <summary>
/// Manages the lifecycle of cached editors for UpscalerOptions ScriptableObjects.
/// </summary>
public class UpscalerOptionsEditorCache
{
private readonly Dictionary<ScriptableObject, Editor> m_EditorCache = new Dictionary<ScriptableObject, Editor>();

/// <summary>
/// Gets a cached editor for the given @options. If the editor is not
/// found in the cache, a new editor is created and then cached.
/// </summary>
public Editor? GetOrCreateEditor(ScriptableObject options)
{
if (options == null)
return null;

if (!m_EditorCache.TryGetValue(options, out var editor) || editor == null)
{
editor = Editor.CreateEditor(options);
m_EditorCache[options] = editor;
}

return editor;
}

/// <summary>
/// Destroys all cached editor instances.
/// Call this from the parent editor's OnDisable method.
/// </summary>
public void Cleanup()
{
foreach (var editor in m_EditorCache.Values)
{
if (editor != null)
Object.DestroyImmediate(editor);
}
m_EditorCache.Clear();
}
}

#nullable disable
}
#endif
#endif // ENABLE_UPSCALER_FRAMEWORK

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
Expand Up @@ -202,7 +202,8 @@ void RefreshEditors()
// Recreate editors for existing settings, if any
var components = asset.components;
for (int i = 0; i < components.Count; i++)
CreateEditor(components[i], m_ComponentsProperty.GetArrayElementAtIndex(i));
if (components[i] != null) //can happens if a component type is removed and opening old serialized data
CreateEditor(components[i], m_ComponentsProperty.GetArrayElementAtIndex(i));

m_CurrentHashCode = asset.GetComponentListHashCode();

Expand Down
Loading