CommandBuffer事始め
ネットを検索したところ、あまりコマンドバッファについての記述が見つからなかったので、とりあえず簡単なのを書いてみた。
using UnityEngine.Rendering;
public class CommandBufferTest : MonoBehaviour {
Camera myCamera;
// Use this for initialization
void Start () {
myCamera = GetComponent< Camera >();
var cb = new CommandBuffer();
var mesh = new Mesh();
mesh.vertices = new Vector3{
new Vector3(-1,-1,0),
new Vector3(1,-1,0),
new Vector3(-1,1,0),
new Vector3(1,1,0)
};
mesh.SetIndices( new int{0,1,2,1,2,3}, MeshTopology.Triangles, 0 );
var mat = new Material( Shader.Find("Diffuse") );
cb.DrawMesh( mesh, Matrix4x4.identity, mat );
myCamera.AddCommandBuffer( CameraEvent.BeforeForwardOpaque, cb );
}
// Update is called once per frame
void Update () {
}
}
↑のScriptコンポーネントをカメラのGameObjectに貼り付けて動かすとこんな感じ↓
forwardRenderingの不透明描画の直前に4頂点2面のMeshを描いた。
もしかすると、深度を一番奥にして画面を覆う矩形を書くことで、
バッファクリアの負荷を下げることが出来るのかな??
気が向いたら試しますか。