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); }