41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
// Crest Water System
|
|
// Copyright © 2024 Wave Harmonic. All rights reserved.
|
|
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
namespace WaveHarmonic.Crest
|
|
{
|
|
partial class SurfaceRenderer
|
|
{
|
|
CommandBuffer _WaterLevelDepthBuffer;
|
|
|
|
void OnPreRenderWaterLevelDepthTexture(Camera camera)
|
|
{
|
|
if (camera.cameraType != CameraType.SceneView || camera != _Water.Viewer)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_WaterLevelDepthBuffer ??= new() { name = k_WaterLevelDepthTextureName };
|
|
_WaterLevelDepthBuffer.Clear();
|
|
|
|
ExecuteWaterLevelDepthTexture(camera, _WaterLevelDepthBuffer);
|
|
|
|
// Both forward and deferred.
|
|
camera.AddCommandBuffer(CameraEvent.BeforeDepthTexture, _WaterLevelDepthBuffer);
|
|
camera.AddCommandBuffer(CameraEvent.BeforeGBuffer, _WaterLevelDepthBuffer);
|
|
}
|
|
|
|
void OnPostRenderWaterLevelDepthTexture(Camera camera)
|
|
{
|
|
if (_WaterLevelDepthBuffer != null)
|
|
{
|
|
// Both forward and deferred.
|
|
camera.RemoveCommandBuffer(CameraEvent.BeforeDepthTexture, _WaterLevelDepthBuffer);
|
|
camera.RemoveCommandBuffer(CameraEvent.BeforeGBuffer, _WaterLevelDepthBuffer);
|
|
}
|
|
}
|
|
}
|
|
}
|