示例#1
0
    private void InitRenderer()
    {
        m_Rasterizer = new Rasterizer(Screen.width, Screen.height);
        m_Models     = new List <BufferMeshMap>();

        m_Camera = GetComponent <Camera>();

        // Generate Resources
        m_BlitMaterial       = new Material(Shader.Find("RasterUtility/Blit"));
        m_FullScreenTriangle = new Mesh();
        // Drawing a big triangle is faster than drawing a quad.
        m_FullScreenTriangle.SetVertices(new List <Vector3>()
        {
            new Vector3(-1, -1, 0),
            new Vector3(-1, 3, 0),
            new Vector3(3, -1, 0)
        });
        m_FullScreenTriangle.SetUVs(0, new List <Vector2>()
        {
            new Vector2(0, 0),
            new Vector2(0, 2),
            new Vector2(2, 0)
        });
        m_FullScreenTriangle.SetIndices(new[] { 0, 1, 2 }, MeshTopology.Triangles, 0, false);
        m_FullScreenTriangle.UploadMeshData(false);

        // Init CommandBuffer
        m_Cmd = new CommandBuffer()
        {
            name = "RasterCmd"
        };
        m_Cmd.SetGlobalTexture("_MainTex", m_Rasterizer.GetOutputTexture());
        m_Cmd.DrawMesh(m_FullScreenTriangle, Matrix4x4.identity, m_BlitMaterial);
        m_Camera.AddCommandBuffer(CameraEvent.AfterEverything, m_Cmd);
    }