void OnRenderImage(RenderTexture source, RenderTexture destination) { Graphics.Blit(source, (RenderTexture)null); if (_asyncImageSaver == null) { return; } var rgbRt = _asyncImageSaver.GetTemporaryRenderTexture(_segmentedImageSetup.ImageWidth, _segmentedImageSetup.ImageHeight, source.depth, GraphicsFormat.R8G8B8A8_SRGB); Graphics.Blit(source, rgbRt); var depthRT = _asyncImageSaver.GetTemporaryRenderTexture(_segmentedImageSetup.ImageWidth, _segmentedImageSetup.ImageHeight, source.depth, GraphicsFormat.R8G8B8A8_SRGB); Graphics.Blit(source, depthRT, _segmentedImageSetup.DepthRenderMaterial); _asyncImageSaver.SetRgbAndDepthRenderTexture(rgbRt, depthRT); }
void OnPostRender() { if (_asyncImageSaver == null) { return; } // Draw full Screen Quad var outputRenderTexture = _asyncImageSaver.GetTemporaryRenderTexture(_segmentedImageSetup.ImageWidth, _segmentedImageSetup.ImageHeight, 24, GraphicsFormat.R8G8B8A8_SRGB); var previousRenderTarget = RenderTexture.active; RenderTexture.active = outputRenderTexture; GL.Clear(true, true, new Color(0, 0, 0, 0)); GL.PushMatrix(); _segmentedImageSetup.SegmentedOutputMaterial.SetPass(0); GL.LoadOrtho(); GL.Begin(GL.QUADS); // Quad GL.TexCoord2(0, 0); GL.Vertex3(0f, 0f, 0); GL.TexCoord2(0, 1); GL.Vertex3(0f, 1f, 0); GL.TexCoord2(1, 1); GL.Vertex3(1f, 1f, 0); GL.TexCoord2(1, 0); GL.Vertex3(1f, 0f, 0); GL.End(); GL.PopMatrix(); _asyncImageSaver.SetSegmentedRenderTexture(outputRenderTexture); RenderTexture.active = previousRenderTarget; }