コード例 #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);
        }
コード例 #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());
        }
コード例 #3
0
        public override Entity Import(IAssetImporter ctx, UnityEngine.Texture2D texture)
        {
            var entity = ctx.CreateEntity(typeof(Image2D), typeof(Image2DLoadFromFile), typeof(Image2DLoadFromFileImageFile));

            ctx.SetComponentData(entity, new Image2D()
            {
                disableSmoothing = texture.filterMode == UnityEngine.FilterMode.Point,
                imagePixelSize   = new Mathematics.float2(texture.width, texture.height),
                hasAlpha         = Texture2DAsset.HasAlpha(texture)
            });

            ctx.SetBufferFromString <Image2DLoadFromFileImageFile>(entity, "Data/" + texture.GetGuid().ToString("N"));

            return(entity);
        }
コード例 #4
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);
        }