57 lines
1.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|