카메라 오브젝트에 이거 붙여줘, 


using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.Rendering;


public class Depth : MonoBehaviour

{

    public Camera cam;

    public CommandBuffer cmd;

    public List<MeshRenderer> renderers;

    public Material depthWriteMat;


    public RenderTexture depthTex;



    private void Start()

    {

        cmd = new CommandBuffer();

        cam.AddCommandBuffer(CameraEvent.AfterDepthTexture, cmd);

    }

    void Render()

    {

        if (depthTex != null) depthTex.Release();


        depthTex = RenderTexture.GetTemporary(cam.pixelWidth, cam.pixelHeight, 16, RenderTextureFormat.Depth);

        cmd.SetRenderTarget(depthTex);

        cmd.ClearRenderTarget(true, false, Color.black);

        foreach (var mr in renderers)

        {

            cmd.DrawRenderer(mr, depthWriteMat);

        }


        Shader.SetGlobalTexture("_CameraDepthTexture", depthTex);

    }

    private void OnPostRender()

    {

        Shader.SetGlobalTexture("_CameraDepthTexture", depthTex);

    }



    private void Update()

    {

        Render();

    }

}


renderers에 모든 메쉬 렌더러 넣어주면 될거야


depthWriteMat 머테리얼에 들어가는 쉐이더는 그냥 이거


Shader "Custom/DepthWrite"

{

    SubShader

    {

        Tags { "RenderType"="Opaque" }

Pass

{

ZWrite On

ColorMask 0

}

    }

}