Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/LuxWater/LuxWater_UnderwaterRenderingSlave.cs
2026-03-04 10:03:45 +08:00

68 lines
1.4 KiB
C#

using UnityEngine;
using UnityEngine.Rendering;
namespace LuxWater
{
[RequireComponent(typeof(Camera))]
public class LuxWater_UnderwaterRenderingSlave : MonoBehaviour
{
private LuxWater_UnderWaterRendering waterrendermanager;
private bool readyToGo;
private static CommandBuffer cb_MaskSlave;
private CameraEvent cameraEvent = CameraEvent.BeforeSkybox;
public Camera cam;
private void OnEnable()
{
cam = GetComponent<Camera>();
cb_MaskSlave = new CommandBuffer();
cb_MaskSlave.name = "Lux Water: Underwater Mask Slave";
cam.AddCommandBuffer(cameraEvent, cb_MaskSlave);
Invoke("GetWaterrendermanager", 0f);
}
private void OnDisable()
{
if (cb_MaskSlave != null && cam != null)
{
cam.RemoveCommandBuffer(cameraEvent, cb_MaskSlave);
}
}
private void GetWaterrendermanager()
{
LuxWater_UnderWaterRendering instance = LuxWater_UnderWaterRendering.instance;
if (instance != null)
{
waterrendermanager = instance;
readyToGo = true;
}
}
private void OnPreCull()
{
if (readyToGo)
{
waterrendermanager.RenderWaterMask(cam, SecondaryCameraRendering: true, cb_MaskSlave);
}
}
[ImageEffectOpaque]
private void OnRenderImage(RenderTexture src, RenderTexture dest)
{
if (readyToGo)
{
waterrendermanager.RenderUnderWater(src, dest, cam, SecondaryCameraRendering: true);
}
else
{
Graphics.Blit(src, dest);
}
}
}
}