52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
[ExecuteInEditMode]
|
|
public class CopyMainCameraDepth : MonoBehaviour
|
|
{
|
|
public Material waterMat;
|
|
|
|
public RenderTexture m_CamDepth;
|
|
|
|
private CommandBuffer m_CmdDepthGrab;
|
|
|
|
private Material m_DepthGrabMat;
|
|
|
|
private int m_pixelWidth;
|
|
|
|
private int m_pixelHeight;
|
|
|
|
private void Start()
|
|
{
|
|
m_DepthGrabMat = new Material(Shader.Find("SkyMaster/iOS_Depth_Grab"));
|
|
m_CmdDepthGrab = new CommandBuffer();
|
|
Camera.main.AddCommandBuffer(CameraEvent.BeforeImageEffectsOpaque, m_CmdDepthGrab);
|
|
Camera.main.depthTextureMode |= DepthTextureMode.Depth;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (m_CmdDepthGrab == null)
|
|
{
|
|
m_DepthGrabMat = new Material(Shader.Find("SkyMaster/iOS_Depth_Grab"));
|
|
m_CmdDepthGrab = new CommandBuffer();
|
|
Camera.main.AddCommandBuffer(CameraEvent.BeforeImageEffectsOpaque, m_CmdDepthGrab);
|
|
Camera.main.depthTextureMode |= DepthTextureMode.Depth;
|
|
}
|
|
if (m_CamDepth == null || !m_CamDepth.IsCreated() || Camera.main.pixelWidth != m_pixelWidth || Camera.main.pixelHeight != m_pixelHeight)
|
|
{
|
|
m_pixelWidth = Camera.main.pixelWidth;
|
|
m_pixelHeight = Camera.main.pixelHeight;
|
|
m_CamDepth = new RenderTexture(m_pixelWidth, m_pixelHeight, 0, RenderTextureFormat.RFloat);
|
|
m_CamDepth.Create();
|
|
if (waterMat != null)
|
|
{
|
|
waterMat.SetTexture("_camDepthTex", m_CamDepth);
|
|
}
|
|
}
|
|
m_CmdDepthGrab.Clear();
|
|
m_CmdDepthGrab.name = "Grab depth";
|
|
m_CmdDepthGrab.Blit(m_CamDepth, m_CamDepth, m_DepthGrabMat);
|
|
}
|
|
}
|