- Home /
 
               Question by 
               Hylus · Sep 10, 2019 at 01:49 PM · 
                camerapost processingscreenshotpost-process-effectedge detection  
              
 
              Capture Screen with post effect
Hello. I search my problem but i don't find clear answer. I use Edge Detection and try to save result to render texture then save whole data to png file.
   private void CreateScreenShoot()
     {
         if (DataStorageBase.errorExists == true)
         {
             return;
         }
         TakeScreenshot?.Invoke(false);
 
 
         camera.targetTexture = renderTexture;
         camera.Render();
 
         // read pixels will read from the currently active render texture so make our offscreen 
         // render texture active and then read the pixels
         RenderTexture.active = renderTexture;
         screenShot.ReadPixels(rect, 0, 0);
 
         // reset active camera texture and render texture
         camera.targetTexture = null;
         RenderTexture.active = null;
 
       string filename = DataStorageBase.ChosenImage;
         SaveTexture(filename,screenShot, format);
 
         TakeScreenshot?.Invoke(true);
     }
 
   private static void SaveTexture(string filename, Texture2D screenShot, ImageFormat format)
     {
         // pull in our file header/data bytes for the specified image format (has to be done from main thread)
         byte[] fileHeader = null;
         byte[] fileData = null;
         if (format == ImageFormat.RAW)
         {
             fileData = screenShot.GetRawTextureData();
         }
         else if (format == ImageFormat.PNG)
         {
             fileData = screenShot.EncodeToPNG();
         }
         else if (format == ImageFormat.JPG)
         {
             fileData = screenShot.EncodeToJPG();
         }
         else // ppm
         {
             // create a file header for ppm formatted file
             string headerStr = string.Format("P6\n{0} {1}\n255\n", screenShot.width, screenShot.height);
             fileHeader = System.Text.Encoding.ASCII.GetBytes(headerStr);
             fileData = screenShot.GetRawTextureData();
         }
 
         int x =filename.LastIndexOf("\\");
         string name = filename.Substring(x+1);
         filename = Path.Combine(DataStorageBase.MiniatureDirectory, name.Replace("svg", "png"));//DataStorageBase.MiniaturesSavingExtension);
 
         // create new thread to save the image to file (only operation that can be done in background)
         new System.Threading.Thread(() =>
                                     {
                                         // create file and write optional header with image bytes
                                         var f = System.IO.File.Create(filename);
                                         if (fileHeader != null)
                                             f.Write(fileHeader, 0, fileHeader.Length);
                                         f.Write(fileData, 0, fileData.Length);
                                         f.Close();
                                     }).Start();
 
 
     }
But the problem is that i dont know how to transmit image from post process effect to camera target texture. Can anyone solve this problem and give me some advices?
               Comment
              
 
               
              Your answer
 
 
             Follow this Question
Related Questions
Post Processing stack - Volume effects have all the fields disabled. 1 Answer
HDRP Edge Detection FullScreen Custom Pass 0 Answers
Post Processing Layer does not have any effect 1 Answer
(Unity 2019.2) Post Processing errors with Deferred Rendering Path 1 Answer
How to change Focus Distance at run time? Using PostProcessing Depth of Field. 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
               
 
			 
                