This commit is contained in:
zhangjiajia
2026-05-06 16:56:59 +08:00
parent 575626d3e1
commit 81ffaaeca6
1373 changed files with 145920 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
// 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;
}
}
}