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); }
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()); }
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); }
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); }