Files
Fishing2/Packages/com.waveharmonic.crest/Runtime/Scripts/Volume/UnderwaterRenderer.Legacy.cs
2026-01-08 22:30:55 +08:00

57 lines
1.8 KiB
C#

// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
using UnityEngine;
using UnityEngine.Rendering;
namespace WaveHarmonic.Crest
{
partial class UnderwaterRenderer
{
bool _HasEffectCommandBuffersBeenRegistered;
void OnEnableLegacy()
{
SetupUnderwaterEffect();
RenderPipelineManager.activeRenderPipelineTypeChanged -= OnDisableLegacy;
RenderPipelineManager.activeRenderPipelineTypeChanged += OnDisableLegacy;
}
void OnDisableLegacy()
{
RenderPipelineManager.activeRenderPipelineTypeChanged -= OnDisableLegacy;
}
// Listening to OnPreCull. Camera must have underwater layer.
void OnBeforeLegacyRender(Camera camera)
{
if (ShouldRender(camera, Pass.Effect))
{
_Water.UpdateMatrices(camera);
_Water.OnBeginCameraOpaqueTexture(camera);
var @event = RenderBeforeTransparency ? CameraEvent.BeforeForwardAlpha : CameraEvent.AfterForwardAlpha;
camera.AddCommandBuffer(@event, _EffectCommandBuffer);
OnPreRenderUnderwaterEffect(camera);
_HasEffectCommandBuffersBeenRegistered = true;
}
}
void OnAfterLegacyRender(Camera camera)
{
if (_HasEffectCommandBuffersBeenRegistered)
{
var @event = RenderBeforeTransparency ? CameraEvent.BeforeForwardAlpha : CameraEvent.AfterForwardAlpha;
camera.RemoveCommandBuffer(@event, _EffectCommandBuffer);
_EffectCommandBuffer?.Clear();
}
_Water.OnEndCameraOpaqueTexture(camera);
_HasEffectCommandBuffersBeenRegistered = false;
}
}
}