Skip to content

Commit 0ea8b7b

Browse files
author
Evergreen
committed
[Port] [6000.4] HDRP: Rendering Debugger - "Freeze Camera For Culling" dropdown was only showing None as an option.
1 parent 2990ff1 commit 0ea8b7b

2 files changed

Lines changed: 67 additions & 26 deletions

File tree

Packages/com.unity.render-pipelines.high-definition/Runtime/Debug/DebugDisplay.cs

Lines changed: 67 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -272,12 +272,6 @@ public partial class DebugDisplaySettings : IDebugData
272272
static GUIContent[] s_RenderingMipmapDebugMaterialTextureSlotStrings = null;
273273
static int[] s_RenderingMipmapDebugMaterialTextureSlotValues = null;
274274

275-
static List<GUIContent> s_CameraNames = new List<GUIContent>() { new("None") };
276-
static GUIContent[] s_CameraNamesStrings = { new ("No Visible Camera") };
277-
static int[] s_CameraNamesValues = { 0 };
278-
279-
static bool needsRefreshingCameraFreezeList = true;
280-
281275
#if ENABLE_NVIDIA && ENABLE_NVIDIA_MODULE
282276
internal UnityEngine.NVIDIA.DebugView nvidiaDebugView { get; } = new UnityEngine.NVIDIA.DebugView();
283277
#endif
@@ -339,8 +333,64 @@ public partial class DebugData
339333
public bool countRays = false;
340334
/// <summary>Display Show Lens Flare Data Driven Only.</summary>
341335
public bool showLensFlareDataDrivenOnly = false;
336+
337+
private static Camera[] GetAvailableDebuggableCameras()
338+
{
339+
using (ListPool<Camera>.Get(out var tmp))
340+
{
341+
342+
#if UNITY_EDITOR
343+
if (UnityEditor.SceneView.lastActiveSceneView != null)
344+
{
345+
var sceneCamera = UnityEditor.SceneView.lastActiveSceneView.camera;
346+
if (sceneCamera != null)
347+
tmp.Add(sceneCamera);
348+
}
349+
#endif
350+
351+
var cameraArray = new Camera[Camera.allCamerasCount];
352+
Camera.GetAllCameras(cameraArray);
353+
354+
foreach (var camera in cameraArray)
355+
{
356+
if (camera == null)
357+
continue;
358+
359+
if (camera.cameraType != CameraType.Preview && camera.cameraType != CameraType.Reflection)
360+
{
361+
if (camera.TryGetComponent<IAdditionalData>(out _))
362+
tmp.Add(camera);
363+
}
364+
}
365+
366+
return tmp.ToArray();
367+
}
368+
}
369+
342370
/// <summary>Index of the camera to freeze for visibility.</summary>
343-
public int debugCameraToFreeze = 0;
371+
public int debugCameraToFreeze
372+
{
373+
get
374+
{
375+
var cameras = GetAvailableDebuggableCameras();
376+
if (cameras == null || cameras.Length == 0 || selectedCameraToFreeze == null)
377+
return -1;
378+
379+
return Array.IndexOf(cameras, selectedCameraToFreeze);
380+
}
381+
set
382+
{
383+
var cameras = GetAvailableDebuggableCameras();
384+
if (value < 0 || value >= cameras.Length)
385+
selectedCameraToFreeze = null;
386+
else
387+
selectedCameraToFreeze = cameras[value];
388+
}
389+
}
390+
391+
/// <summary>The camera to freeze for visibility.</summary>
392+
public Camera selectedCameraToFreeze;
393+
344394
internal RTASDebugView rtasDebugView = RTASDebugView.Shadows;
345395
internal RTASDebugMode rtasDebugMode = RTASDebugMode.InstanceID;
346396
internal VolumetricCloudsDebug volumetricCloudDebug = VolumetricCloudsDebug.Lighting;
@@ -680,7 +730,7 @@ public ColorPickerDebugMode GetDebugColorPickerMode()
680730
/// <returns>True if camera visibility is frozen</returns>
681731
public bool IsCameraFreezeEnabled()
682732
{
683-
return data.debugCameraToFreeze != 0;
733+
return data.selectedCameraToFreeze != null;
684734
}
685735

686736
/// <summary>
@@ -690,7 +740,7 @@ public bool IsCameraFreezeEnabled()
690740
/// <returns>True if a specific camera is frozen for visibility.</returns>
691741
public bool IsCameraFrozen(Camera camera)
692742
{
693-
return IsCameraFreezeEnabled() && camera.name.Equals(s_CameraNamesStrings[data.debugCameraToFreeze].text);
743+
return IsCameraFreezeEnabled() && camera == data.selectedCameraToFreeze;
694744
}
695745

696746
/// <summary>
@@ -1974,7 +2024,14 @@ void RegisterRenderingDebug()
19742024
});
19752025
}
19762026

1977-
renderingSettings.children.Add(new DebugUI.EnumField { nameAndTooltip = RenderingStrings.FreezeCameraForCulling, getter = () => data.debugCameraToFreeze, setter = value => data.debugCameraToFreeze = value, enumNames = s_CameraNamesStrings, enumValues = s_CameraNamesValues, getIndex = () => data.debugCameraToFreezeEnumIndex, setIndex = value => data.debugCameraToFreezeEnumIndex = value });
2027+
var freezeCameraForCullingSelector = new DebugUI.CameraSelector()
2028+
{
2029+
nameAndTooltip = RenderingStrings.FreezeCameraForCulling,
2030+
getter = () => data.selectedCameraToFreeze,
2031+
setter = value => data.selectedCameraToFreeze = value as Camera
2032+
};
2033+
2034+
renderingSettings.children.Add(freezeCameraForCullingSelector);
19782035

19792036
renderingSettings.children.Add(new DebugUI.Container
19802037
{
@@ -2228,19 +2285,6 @@ internal void UpdateMaterials()
22282285
}
22292286
}
22302287

2231-
internal void UpdateCameraFreezeOptions()
2232-
{
2233-
if (needsRefreshingCameraFreezeList)
2234-
{
2235-
s_CameraNamesStrings = s_CameraNames.ToArray();
2236-
s_CameraNamesValues = Enumerable.Range(0, s_CameraNames.Count()).ToArray();
2237-
2238-
UnregisterRenderingDebug();
2239-
RegisterRenderingDebug();
2240-
needsRefreshingCameraFreezeList = false;
2241-
}
2242-
}
2243-
22442288
internal bool DebugHideSky(HDCamera hdCamera)
22452289
{
22462290
return (IsMatcapViewEnabled(hdCamera) ||

Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2754,9 +2754,6 @@ AOVRequestData aovRequest
27542754
}
27552755
else
27562756
{
2757-
#if DEVELOPMENT_BUILD || UNITY_EDITOR
2758-
m_DebugDisplaySettings.UpdateCameraFreezeOptions();
2759-
#endif
27602757
m_CurrentDebugDisplaySettings = m_DebugDisplaySettings;
27612758
}
27622759

0 commit comments

Comments
 (0)