using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
//[ExecuteInEditMode]
public class M_CMDBuffer2 : MonoBehaviour
{
CommandBuffer cmds;
public Material DiffuseMat;
public Camera cam;
public RenderTexture retss;
RenderTexture ret;
MeshRenderer renderer;
void Start()
{
}
private void OnEnable()
{
}
// Update is called once per frame
void Update()
{
}
void OnClearn(Camera cam) {
if(cmds!=null)
cam.RemoveAllCommandBuffers();
}
private void OnWillRenderObject()
{
cmds = new CommandBuffer();
cmds.name = "blitss";
renderer = this.GetComponent<MeshRenderer>();
int Temp = Shader.PropertyToID("_SoloTexture");
cmds.GetTemporaryRT(Temp, -1, -1, 0, FilterMode.Bilinear,RenderTextureFormat.RHalf);//作为深度传递的时候 一定要是RHalf的格式
if (cmds != null)
OnClearn(cam);
//ret = RenderTexture.GetTemporary(Screen.width, Screen.height, 16, RenderTextureFormat.ARGB32);
//cmds.SetRenderTarget(ret);
//cmds.ClearRenderTarget(true, true, Color.gray);
//cmds.DrawRenderer(renderer, DiffuseMat,0);
//retss = ret;
//Shader.SetGlobalTexture("_Textures", ret);
/*
cmds.Blit(BuiltinRenderTextureType.CurrentActive, Temp);
cmds.SetGlobalTexture("_Textures", Temp);
cam.AddCommandBuffer(CameraEvent.BeforeForwardOpaque, cmds);
*/
cmds.Blit(BuiltinRenderTextureType.Depth,Temp);
cmds.SetGlobalTexture("_Textures", Temp);
cam.AddCommandBuffer(CameraEvent.AfterSkybox, cmds);
}
private void OnPreRender()
{
Debug.Log("OnPreRender");
}
private void OnPostRender()
{
Debug.Log("OnPostRender");
}
}
CommandBuffer 自定义深度图获取
最新推荐文章于 2022-07-03 12:32:08 发布