// 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 SampleShadowsURP : ScriptableRenderPass { class PassData { #pragma warning disable IDE1006 // Naming Styles public UniversalCameraData cameraData; public UniversalLightData lightData; public CullingResults cullResults; #pragma warning restore IDE1006 // Naming Styles public void Init(ContextContainer frameData, IUnsafeRenderGraphBuilder builder = null) { cameraData = frameData.Get(); lightData = frameData.Get(); cullResults = frameData.Get().cullResults; } } readonly PassData _PassData = new(); public override void RecordRenderGraph(RenderGraph graph, ContextContainer frame) { using (var builder = graph.AddUnsafePass(WaterRenderer.k_DrawLodData, out var data)) { data.Init(frame, builder); builder.AllowPassCulling(false); builder.SetRenderFunc((data, context) => { var buffer = CommandBufferHelpers.GetNativeCommandBuffer(context.cmd); Execute(context.GetRenderContext(), buffer, data); }); } } #if URP_COMPATIBILITY_MODE [System.Obsolete] public override void Execute(ScriptableRenderContext context, ref RenderingData data) { _PassData.Init(data.GetFrameData()); var buffer = CommandBufferPool.Get(WaterRenderer.k_DrawLodData); Execute(context, buffer, _PassData); context.ExecuteCommandBuffer(buffer); CommandBufferPool.Release(buffer); } #endif } } #endif // UNITY_6000_0_OR_NEWER #endif // d_UnityURP