Advertisement
Guest User

Untitled

a guest
Jan 19th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.36 KB | None | 0 0
  1. public static Texture2D MakeScreenshot(Camera camera, int width, int height)
  2. {
  3.     var screenshot = new Texture2D(width, height) {
  4.         filterMode = FilterMode.Point
  5.     };
  6.  
  7.     var previousRt = camera.targetTexture;
  8.     var screenshotRt = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.ARGB32);
  9.     screenshotRt.filterMode = FilterMode.Point;
  10.  
  11.     var buffers = camera.GetCommandBuffers(CameraEvent.AfterLighting); // TODO: Hack for avoiding HDR writing
  12.  
  13.     foreach (var buffer in buffers)
  14.         camera.RemoveCommandBuffer(CameraEvent.AfterLighting, buffer);
  15.  
  16.     camera.targetTexture = screenshotRt;
  17.     camera.Render();
  18.  
  19.     var screenshotRtTmp = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.ARGB32);
  20.     screenshotRtTmp.filterMode = FilterMode.Point;
  21.     GraphicHelper.TransformTexture(screenshotRt, new Color(0, 0, 0, 0), new Color(1, 1, 1, 0), screenshotRtTmp);
  22.     RenderTexture.active = screenshotRtTmp;
  23.     screenshot.ReadPixels(new Rect(0, 0, width, height), 0, 0);
  24.     screenshot.Apply();
  25.  
  26.     camera.targetTexture = previousRt;
  27.     RenderTexture.active = null;
  28.  
  29.     RenderTexture.ReleaseTemporary(screenshotRt);
  30.     RenderTexture.ReleaseTemporary(screenshotRtTmp);
  31.  
  32.     foreach (var buffer in buffers)
  33.         camera.AddCommandBuffer(CameraEvent.AfterLighting, buffer);
  34.  
  35.     return screenshot;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement