ScreenPocket - 画面の隙間

Unityエンジニアの日々の雑記。たまにpython3、DirectX、PhotoshopScript(JavaScript)も触ります

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に貼り付けて動かすとこんな感じ↓

f:id:ScreenPocket:20150804013413p:plain

forwardRenderingの不透明描画の直前に4頂点2面のMeshを描いた。
もしかすると、深度を一番奥にして画面を覆う矩形を書くことで、
バッファクリアの負荷を下げることが出来るのかな??

気が向いたら試しますか。