标签:ons 简单 ring splay sys ndis style foreach indicator
unity官方的教程:https://blogs.unity3d.com/cn/2015/02/06/extending-unity-5-rendering-pipeline-command-buffers/
文章底部附带了一个demo工程
用官方例子改了改,作为测试脚本
using UnityEngine; using UnityEngine.Rendering; using System.Collections; using System.Collections.Generic; public class Test : MonoBehaviour { public Mesh testMesh; public Material testMaterial; Dictionary<Camera, CommandBuffer> m_Cameras = new Dictionary<Camera, CommandBuffer>(); void OnDisable() { foreach (var cam in m_Cameras) { if (cam.Key) { cam.Key.RemoveCommandBuffer(CameraEvent.BeforeLighting, cam.Value); } } } void LateUpdate() { var act = gameObject.activeInHierarchy && enabled; if (!act) { OnDisable(); return; } var cam = Camera.current; if (!cam) return; CommandBuffer buf = null; if (m_Cameras.ContainsKey(cam)) { buf = m_Cameras[cam]; buf.Clear(); } else { buf = new CommandBuffer(); buf.name = "Test Command Buffer"; m_Cameras[cam] = buf; cam.AddCommandBuffer(CameraEvent.AfterFinalPass, buf); } buf.DrawMesh(testMesh, Matrix4x4.TRS(Camera.main.transform.position + Camera.main.transform.forward * 4f, Quaternion.identity, Vector3.one), testMaterial); } }
脚本很简单,在finalpass之后绘制一个mesh
CommandBuffer支持延迟渲染和正向渲染,但需要注意如果在正向渲染中用了CameraEvent.AfterGBuffer之类的延迟渲染事件,会不起作用。
Unity的FrameDebug可以对CommandBuffer进行调试
有空再完善
标签:ons 简单 ring splay sys ndis style foreach indicator
原文地址:http://www.cnblogs.com/hont/p/6351405.html