Skip to content

Commit e3e5d66

Browse files
Charles-H-UnityEvergreen
authored andcommitted
Graphics/bugfix/gizmo to unsafe pass
1 parent 8e65cb3 commit e3e5d66

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,8 @@ internal void SetupRenderGraphCameraProperties(RenderGraph renderGraph, bool isT
10011001
private class DrawGizmosPassData
10021002
{
10031003
public RendererListHandle gizmoRenderList;
1004+
public TextureHandle color;
1005+
public TextureHandle depth;
10041006
};
10051007

10061008
/// <summary>
@@ -1018,20 +1020,25 @@ internal void DrawRenderGraphGizmos(RenderGraph renderGraph, ContextContainer fr
10181020
if (!Handles.ShouldRenderGizmos() || cameraData.camera.sceneViewFilterMode == Camera.SceneViewFilterMode.ShowFiltered)
10191021
return;
10201022

1021-
using (var builder = renderGraph.AddRasterRenderPass<DrawGizmosPassData>("Draw Gizmos Pass", out var passData,
1023+
// We cannot draw gizmo rendererlists from an raster pass as the gizmo rendering triggers the MonoBehaviour.OnDrawGizmos or MonoBehaviour.OnDrawGizmosSelected callbacks that could run arbitrary graphics code
1024+
// like SetRenderTarget, texture and resource loading, ...
1025+
using (var builder = renderGraph.AddUnsafePass<DrawGizmosPassData>("Draw Gizmos Pass", out var passData,
10221026
Profiling.drawGizmos))
10231027
{
1024-
builder.SetRenderAttachment(color, 0, AccessFlags.Write);
1025-
builder.SetRenderAttachmentDepth(depth, AccessFlags.ReadWrite);
1028+
builder.UseTexture(color, AccessFlags.Write);
1029+
builder.UseTexture(depth, AccessFlags.ReadWrite);
10261030

10271031
passData.gizmoRenderList = renderGraph.CreateGizmoRendererList(cameraData.camera, gizmoSubset);
1032+
passData.color = color;
1033+
passData.depth = depth;
10281034
builder.UseRendererList(passData.gizmoRenderList);
10291035
builder.AllowPassCulling(false);
10301036

1031-
builder.SetRenderFunc((DrawGizmosPassData data, RasterGraphContext rgContext) =>
1037+
builder.SetRenderFunc((DrawGizmosPassData data, UnsafeGraphContext rgContext) =>
10321038
{
10331039
using (new ProfilingScope(rgContext.cmd, Profiling.drawGizmos))
10341040
{
1041+
rgContext.cmd.SetRenderTarget(data.color, data.depth);
10351042
rgContext.cmd.DrawRendererList(data.gizmoRenderList);
10361043
}
10371044
});

0 commit comments

Comments
 (0)