From cca5a481846bc871adb44ce34456f108d27bf774 Mon Sep 17 00:00:00 2001 From: Aras Pranckevicius Date: Mon, 4 May 2020 15:33:23 +0300 Subject: [PATCH 1/2] Enable "Shaded Wireframe" scene view mode in HDRP & URP Will need graphics/srp/textured-wire codebase branch to work --- .../Runtime/RenderPipeline/SceneViewDrawMode.cs | 3 +-- .../Runtime/SceneViewDrawMode.cs | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/SceneViewDrawMode.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/SceneViewDrawMode.cs index 72613d64978..54dc70149db 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/SceneViewDrawMode.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/SceneViewDrawMode.cs @@ -8,8 +8,7 @@ class SceneViewDrawMode { static private bool RejectDrawMode(SceneView.CameraMode cameraMode) { - if (cameraMode.drawMode == DrawCameraMode.TexturedWire || - cameraMode.drawMode == DrawCameraMode.ShadowCascades || + if (cameraMode.drawMode == DrawCameraMode.ShadowCascades || cameraMode.drawMode == DrawCameraMode.RenderPaths || cameraMode.drawMode == DrawCameraMode.AlphaChannel || cameraMode.drawMode == DrawCameraMode.Overdraw || diff --git a/com.unity.render-pipelines.universal/Runtime/SceneViewDrawMode.cs b/com.unity.render-pipelines.universal/Runtime/SceneViewDrawMode.cs index 89a5c3ab0aa..c4f2400f101 100644 --- a/com.unity.render-pipelines.universal/Runtime/SceneViewDrawMode.cs +++ b/com.unity.render-pipelines.universal/Runtime/SceneViewDrawMode.cs @@ -7,8 +7,7 @@ internal static class SceneViewDrawMode { static bool RejectDrawMode(SceneView.CameraMode cameraMode) { - if (cameraMode.drawMode == DrawCameraMode.TexturedWire || - cameraMode.drawMode == DrawCameraMode.ShadowCascades || + if (cameraMode.drawMode == DrawCameraMode.ShadowCascades || cameraMode.drawMode == DrawCameraMode.RenderPaths || cameraMode.drawMode == DrawCameraMode.AlphaChannel || cameraMode.drawMode == DrawCameraMode.Overdraw || From d449210e075ec0a9f00be5ec7e72478e2cb20935 Mon Sep 17 00:00:00 2001 From: Aras Pranckevicius Date: Mon, 4 May 2020 16:58:42 +0300 Subject: [PATCH 2/2] Use new DrawWireOverlay API point to render wireframe This way it's not coupled to Gizmos rendering or not --- .../Runtime/RenderPipeline/HDRenderPipeline.cs | 15 +++++++++++++++ .../Runtime/ScriptableRenderer.cs | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs index ba05ca5c744..282308fae47 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs @@ -2595,6 +2595,9 @@ void Callback(CommandBuffer c, HDCamera cam) // We need to make sure the viewport is correctly set for the editor rendering. It might have been changed by debug overlay rendering just before. cmd.SetViewport(hdCamera.finalViewport); + if (camera.cameraType == CameraType.SceneView) + RenderWireOverlay(cmd, camera, renderContext); + // Render overlay Gizmos if (showGizmos) RenderGizmos(cmd, camera, renderContext, GizmoSubset.PostImageEffects); @@ -2912,6 +2915,18 @@ void RenderGizmos(CommandBuffer cmd, Camera camera, ScriptableRenderContext rend #endif } +#if UNITY_EDITOR + void RenderWireOverlay(CommandBuffer cmd, Camera camera, ScriptableRenderContext renderContext) + { + using (new ProfilingScope(cmd, ProfilingSampler.Get(HDProfileId.RenderWireFrame))) + { + renderContext.ExecuteCommandBuffer(cmd); + cmd.Clear(); + renderContext.DrawWireOverlay(camera); + } + } +#endif + static RendererListDesc CreateOpaqueRendererListDesc( CullingResults cull, Camera camera, diff --git a/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs b/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs index ab4a4f289c7..d1f86ab645d 100644 --- a/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs +++ b/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs @@ -430,6 +430,7 @@ public void Execute(ScriptableRenderContext context, ref RenderingData rendering EndXRRendering(context, renderingData, eyeIndex); } + DrawWireOverlay(context, camera); DrawGizmos(context, camera, GizmoSubset.PostImageEffects); InternalFinishRendering(context, cameraData.resolveFinalTarget); @@ -833,6 +834,14 @@ void DrawGizmos(ScriptableRenderContext context, Camera camera, GizmoSubset gizm #endif } + [Conditional("UNITY_EDITOR")] + void DrawWireOverlay(ScriptableRenderContext context, Camera camera) + { +#if UNITY_EDITOR + context.DrawWireOverlay(camera); +#endif + } + // Fill in render pass indices for each block. End index is startIndex + 1. void FillBlockRanges(NativeArray blockEventLimits, NativeArray blockRanges) {