Files
Fishing2/Packages/com.waveharmonic.crest/Runtime/Scripts/Volume/UnderwaterEffectPassURP.RenderGraph.cs
2026-03-05 00:14:42 +08:00

123 lines
4.3 KiB
C#

// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
#if d_UnityURP
#if UNITY_6000_0_OR_NEWER
using UnityEngine.Rendering;
using UnityEngine.Rendering.RenderGraphModule;
using UnityEngine.Rendering.Universal;
namespace WaveHarmonic.Crest
{
partial class UnderwaterEffectPassURP
{
readonly RenderGraphHelper.PassData _PassData = new();
public override void RecordRenderGraph(RenderGraph graph, ContextContainer frame)
{
using (var builder = graph.AddUnsafePass<RenderGraphHelper.PassData>(k_Name, out var data))
{
data.Init(frame, builder);
builder.AllowPassCulling(false);
builder.SetRenderFunc<RenderGraphHelper.PassData>((data, context) =>
{
var buffer = CommandBufferHelpers.GetNativeCommandBuffer(context.cmd);
OnSetup(buffer, data);
Execute(context.GetRenderContext(), buffer, data);
});
}
}
[System.Obsolete]
public override void OnCameraSetup(CommandBuffer buffer, ref RenderingData data)
{
_PassData.Init(data.GetFrameData());
}
[System.Obsolete]
public override void Execute(ScriptableRenderContext context, ref RenderingData data)
{
_PassData.Init(data.GetFrameData());
var buffer = CommandBufferPool.Get(k_Name);
OnSetup(buffer, _PassData);
Execute(context, buffer, _PassData);
context.ExecuteCommandBuffer(buffer);
CommandBufferPool.Release(buffer);
}
}
partial class CopyDepthBufferPassURP
{
class PassData
{
#pragma warning disable IDE1006 // Naming Styles
public UniversalCameraData cameraData;
public RenderGraphHelper.Handle colorTargetHandle;
public RenderGraphHelper.Handle depthTargetHandle;
#pragma warning restore IDE1006 // Naming Styles
public void Init(ContextContainer frameData, IUnsafeRenderGraphBuilder builder = null)
{
var resources = frameData.Get<UniversalResourceData>();
cameraData = frameData.Get<UniversalCameraData>();
if (builder == null)
{
#pragma warning disable CS0618 // Type or member is obsolete
colorTargetHandle = cameraData.renderer.cameraColorTargetHandle;
depthTargetHandle = cameraData.renderer.cameraDepthTargetHandle;
#pragma warning restore CS0618 // Type or member is obsolete
}
else
{
// We need reset render targets to these before the next pass, but we do not read
// or write to the color target.
colorTargetHandle = resources.activeColorTexture;
depthTargetHandle = resources.activeDepthTexture;
builder.UseTexture(depthTargetHandle, AccessFlags.ReadWrite);
}
}
}
readonly PassData _PassData = new();
public override void RecordRenderGraph(RenderGraph graph, ContextContainer frame)
{
using (var builder = graph.AddUnsafePass<PassData>(k_Name, out var data))
{
data.Init(frame, builder);
builder.AllowPassCulling(false);
builder.SetRenderFunc<PassData>((data, context) =>
{
var buffer = CommandBufferHelpers.GetNativeCommandBuffer(context.cmd);
OnSetup(buffer, data);
Execute(context.GetRenderContext(), buffer, data);
});
}
}
[System.Obsolete]
public override void OnCameraSetup(CommandBuffer buffer, ref RenderingData data)
{
_PassData.Init(data.GetFrameData());
}
[System.Obsolete]
public override void Execute(ScriptableRenderContext context, ref RenderingData data)
{
_PassData.Init(data.GetFrameData());
var buffer = CommandBufferPool.Get(k_Name);
OnSetup(buffer, _PassData);
Execute(context, buffer, _PassData);
context.ExecuteCommandBuffer(buffer);
CommandBufferPool.Release(buffer);
}
}
}
#endif // UNITY_6000_0_OR_NEWER
#endif // d_UnityURP