Files
Fishing2/Assets/ThirdParty/LuxWater/Scripts/LuxWater_UnderwaterRenderingSlave.cs
2025-05-10 12:49:47 +08:00

65 lines
1.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
namespace LuxWater {
[RequireComponent(typeof(Camera))]
public class LuxWater_UnderwaterRenderingSlave : MonoBehaviour {
private LuxWater_UnderWaterRendering waterrendermanager;
private bool readyToGo = false;
private static CommandBuffer cb_MaskSlave;
private CameraEvent cameraEvent = CameraEvent.BeforeSkybox; // This works for both deferred an forward
public Camera cam;
void OnEnable () {
cam = GetComponent<Camera>();
cb_MaskSlave = new CommandBuffer();
cb_MaskSlave.name = "Lux Water: Underwater Mask Slave";
cam.AddCommandBuffer(cameraEvent, cb_MaskSlave);
// Get with LuxWater_UnderWaterRendering singleton using invoke just in order to get around script execution order problems
Invoke("GetWaterrendermanager", 0.0f);
}
void OnDisable () {
if(cb_MaskSlave != null && cam != null) {
cam.RemoveCommandBuffer(cameraEvent, cb_MaskSlave);
}
}
void GetWaterrendermanager() {
var manager = LuxWater_UnderWaterRendering.instance;
if (manager != null) {
waterrendermanager = manager;
readyToGo = true;
}
}
void OnPreCull () {
if (readyToGo) {
waterrendermanager.RenderWaterMask( cam, true, cb_MaskSlave );
}
}
[ImageEffectOpaque]
void OnRenderImage(RenderTexture src, RenderTexture dest) {
if (readyToGo) {
waterrendermanager.RenderUnderWater(src, dest, cam, true);
}
// We have to blit in any case - otherwise the screen will be black.
else {
Graphics.Blit(src, dest);
}
}
}
}