From ccaa589e5a4ebf6d8e701c2efd098ee73d8118a7 Mon Sep 17 00:00:00 2001 From: Marcel Wiessler Date: Wed, 8 Nov 2023 10:36:59 +0100 Subject: [PATCH] Add support for exr texture export in correct format previously it was exported with exr extension but actually encoded as PNG regardless --- .../Scripts/SceneExporter/ExporterTextures.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Runtime/Scripts/SceneExporter/ExporterTextures.cs b/Runtime/Scripts/SceneExporter/ExporterTextures.cs index 3e5a402a1..d15a0658e 100644 --- a/Runtime/Scripts/SceneExporter/ExporterTextures.cs +++ b/Runtime/Scripts/SceneExporter/ExporterTextures.cs @@ -124,11 +124,26 @@ private void WriteRenderTextureToDiskAndRelease(RenderTexture destRenderTexture, { RenderTexture.active = destRenderTexture; - var exportTexture = new Texture2D(destRenderTexture.width, destRenderTexture.height, TextureFormat.ARGB32, false, linear); + TextureFormat format = TextureFormat.ARGB32; + if (outputPath.EndsWith(".exr")) format = TextureFormat.RGBAFloat; + + var exportTexture = new Texture2D(destRenderTexture.width, destRenderTexture.height, format, false, linear); exportTexture.ReadPixels(new Rect(0, 0, destRenderTexture.width, destRenderTexture.height), 0, 0); exportTexture.Apply(); - var binaryData = outputPath.EndsWith(".jpg") ? exportTexture.EncodeToJPG(settings.DefaultJpegQuality) : exportTexture.EncodeToPNG(); + byte[] binaryData; + if(outputPath.EndsWith(".jpg")) + binaryData = exportTexture.EncodeToJPG(settings.DefaultJpegQuality); + else if(outputPath.EndsWith(".png")) + binaryData = exportTexture.EncodeToPNG(); + else if (outputPath.EndsWith(".exr")) + binaryData = exportTexture.EncodeToEXR(Texture2D.EXRFlags.CompressZIP); + else + { + Debug.LogError("Unsupported file extension: " + outputPath, destRenderTexture); + binaryData = exportTexture.EncodeToPNG(); + } + File.WriteAllBytes(outputPath, binaryData); RenderTexture.ReleaseTemporary(destRenderTexture);