From 8722a9920c1f6119bf6e769cba270e63097f8e25 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Thu, 23 May 2024 10:08:29 +0800 Subject: + astar project --- .../Drawing/AlineURPRenderPassFeature.cs | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/AlineURPRenderPassFeature.cs (limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/AlineURPRenderPassFeature.cs') diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/AlineURPRenderPassFeature.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/AlineURPRenderPassFeature.cs new file mode 100644 index 0000000..829aa3f --- /dev/null +++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Drawing/AlineURPRenderPassFeature.cs @@ -0,0 +1,88 @@ +#if MODULE_RENDER_PIPELINES_UNIVERSAL +using UnityEngine; +using UnityEngine.Rendering; +#if MODULE_RENDER_PIPELINES_UNIVERSAL_17_0_0_OR_NEWER +using UnityEngine.Rendering.RenderGraphModule; +#endif +using UnityEngine.Rendering.Universal; + +namespace Pathfinding.Drawing { + /// Custom Universal Render Pipeline Render Pass for ALINE + public class AlineURPRenderPassFeature : ScriptableRendererFeature { + /// Custom Universal Render Pipeline Render Pass for ALINE + public class AlineURPRenderPass : ScriptableRenderPass { + /// This method is called before executing the render pass +#if MODULE_RENDER_PIPELINES_UNIVERSAL_17_0_0_OR_NEWER + [System.Obsolete] +#endif + public override void Configure (CommandBuffer cmd, RenderTextureDescriptor cameraTextureDescriptor) { + } + +#if MODULE_RENDER_PIPELINES_UNIVERSAL_17_0_0_OR_NEWER + [System.Obsolete] +#endif + public override void Execute (ScriptableRenderContext context, ref RenderingData renderingData) { + DrawingManager.instance.ExecuteCustomRenderPass(context, renderingData.cameraData.camera); + } + + public AlineURPRenderPass() : base() { + profilingSampler = new ProfilingSampler("ALINE"); + } + +#if MODULE_RENDER_PIPELINES_UNIVERSAL_17_0_0_OR_NEWER + private class PassData { + public Camera camera; + } + + public override void RecordRenderGraph (RenderGraph renderGraph, ContextContainer frameData) { + var cameraData = frameData.Get(); + var resourceData = frameData.Get(); + + using (IRasterRenderGraphBuilder builder = renderGraph.AddRasterRenderPass("ALINE", out PassData passData, profilingSampler)) { + bool allowDisablingWireframe = false; + + if (Application.isEditor && (cameraData.cameraType & (CameraType.SceneView | CameraType.Preview)) != 0) { + // We need this to be able to disable wireframe rendering in the scene view + builder.AllowGlobalStateModification(true); + allowDisablingWireframe = true; + } + + builder.SetRenderAttachment(resourceData.activeColorTexture, 0); + builder.SetRenderAttachmentDepth(resourceData.activeDepthTexture); + passData.camera = cameraData.camera; + + builder.SetRenderFunc( + (PassData data, RasterGraphContext context) => { + DrawingManager.instance.ExecuteCustomRenderGraphPass(new DrawingData.CommandBufferWrapper { cmd2 = context.cmd, allowDisablingWireframe = allowDisablingWireframe }, data.camera); + } + ); + } + } +#endif + + public override void FrameCleanup (CommandBuffer cmd) { + } + } + + AlineURPRenderPass m_ScriptablePass; + + public override void Create () { + m_ScriptablePass = new AlineURPRenderPass(); + + // Configures where the render pass should be injected. + // URP's post processing actually happens in BeforeRenderingPostProcessing, not after BeforeRenderingPostProcessing as one would expect. + // Use BeforeRenderingPostProcessing-1 to ensure this pass gets executed before post processing effects. + m_ScriptablePass.renderPassEvent = RenderPassEvent.BeforeRenderingPostProcessing-1; + } + + /// This method is called when setting up the renderer once per-camera + public override void AddRenderPasses (ScriptableRenderer renderer, ref RenderingData renderingData) { + AddRenderPasses(renderer); + } + + public void AddRenderPasses (ScriptableRenderer renderer) { + renderer.EnqueuePass(m_ScriptablePass); + } + } +} +#endif -- cgit v1.1-26-g67d0