64 lines
1.6 KiB
C#
64 lines
1.6 KiB
C#
// Crest Water System
|
|
// Copyright © 2024 Wave Harmonic. All rights reserved.
|
|
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
namespace WaveHarmonic.Crest
|
|
{
|
|
sealed class MaskRendererBIRP : MaskRenderer
|
|
{
|
|
CommandBuffer _Commands;
|
|
|
|
public MaskRendererBIRP(WaterRenderer water) : base(water) { }
|
|
|
|
public override void Enable()
|
|
{
|
|
base.Enable();
|
|
Allocate();
|
|
}
|
|
|
|
|
|
public override void OnBeginCameraRendering(Camera camera)
|
|
{
|
|
if (!ShouldExecute(camera))
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
_Commands ??= new()
|
|
{
|
|
name = UnderwaterRenderer.k_DrawMask,
|
|
};
|
|
|
|
_Water.UpdateMatrices(camera);
|
|
|
|
var descriptor = Rendering.BIRP.GetCameraTargetDescriptor(camera);
|
|
descriptor.useDynamicScale = camera.allowDynamicResolution;
|
|
|
|
Allocate();
|
|
|
|
ReAllocate(descriptor);
|
|
Execute(camera, _Commands);
|
|
|
|
// Handles both forward and deferred.
|
|
camera.AddCommandBuffer(CameraEvent.BeforeGBuffer, _Commands);
|
|
camera.AddCommandBuffer(CameraEvent.BeforeDepthTexture, _Commands);
|
|
}
|
|
|
|
public override void OnEndCameraRendering(Camera camera)
|
|
{
|
|
if (_Commands == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
camera.RemoveCommandBuffer(CameraEvent.BeforeGBuffer, _Commands);
|
|
camera.RemoveCommandBuffer(CameraEvent.BeforeDepthTexture, _Commands);
|
|
|
|
_Commands.Clear();
|
|
}
|
|
}
|
|
}
|