Ejemplo n.º 1
0
        private static IEnumerable <FileInfo> ExportJpgOptimized(FileInfo outputFile, UnityEngine.Texture2D texture, uint quality)
        {
            var outputFiles = new List <FileInfo>();

            // Export color as temporary png
            var tmpColorFile    = new FileInfo(Path.ChangeExtension(GetTemporaryFilePath(outputFile), "png"));
            var tmpColorTexture = Texture2DAsset.BlitTexture(texture, UnityEngine.TextureFormat.RGB24);

            WritePng(tmpColorFile, tmpColorTexture);

            // Export color as jpg
            outputFiles.Add(ConvertPngToJpgOptimized(outputFile, tmpColorFile, quality));

            // Export jpg alpha as png
            if (Texture2DAsset.HasAlpha(texture))
            {
                // Bake alpha into color channels
                var tmpAlphaFile    = new FileInfo(Path.ChangeExtension(GetTemporaryFilePath(outputFile), "png"));
                var tmpAlphaTexture = Texture2DAsset.BlitTexture(texture, UnityEngine.TextureFormat.RGBA32, alphaOnly: true);

                // Export alpha as temporary png
                WritePng(tmpAlphaFile, tmpAlphaTexture);

                // Convert to 8-bit grayscale png
                var outputAlphaFile = new FileInfo(Path.ChangeExtension(GetAlphaFilePath(outputFile), "png"));
                outputFiles.Add(ConvertPngTo8BitGrayscale(outputAlphaFile, tmpAlphaFile));
            }

            return(outputFiles);
        }
Ejemplo n.º 2
0
        private static IEnumerable <FileInfo> ExportPng(FileInfo outputFile, UnityEngine.Texture2D texture)
        {
            var format        = Texture2DAsset.HasAlpha(texture) ? UnityEngine.TextureFormat.RGBA32 : UnityEngine.TextureFormat.RGB24;
            var outputTexture = Texture2DAsset.BlitTexture(texture, format);

            return(WritePng(outputFile, outputTexture).AsEnumerable());
        }
Ejemplo n.º 3
0
        private static IEnumerable <FileInfo> ExportJpg(FileInfo outputFile, UnityEngine.Texture2D texture, uint quality)
        {
            var outputFiles = new List <FileInfo>();

            // Export color as jpg
            var outputColorTexture = Texture2DAsset.BlitTexture(texture, UnityEngine.TextureFormat.RGB24);

            outputFiles.Add(WriteJpg(outputFile, outputColorTexture, quality));

            // Export alpha as png
            if (Texture2DAsset.HasAlpha(texture))
            {
                // Bake alpha into color channels, then kill alpha channel
                var outputAlphaTexture = Texture2DAsset.BlitTexture(texture, UnityEngine.TextureFormat.RGBA32, alphaOnly: true);
                outputAlphaTexture = Texture2DAsset.BlitTexture(outputAlphaTexture, UnityEngine.TextureFormat.RGB24);

                // Export alpha as png
                var outputAlphaFile = new FileInfo(Path.ChangeExtension(GetAlphaFilePath(outputFile), "png"));
                outputFiles.Add(WritePng(outputAlphaFile, outputAlphaTexture));
            }

            return(outputFiles);
        }