static List <TeximpNet.Surface> GenerateMipmapsRGBA(string input, MipmapMethod mipm) { List <TeximpNet.Surface> mips = new List <TeximpNet.Surface>(); var surface = TeximpNet.Surface.LoadFromFile(input); surface.ConvertTo(TeximpNet.ImageConversion.To32Bits); surface.GenerateMipMaps(mips, (TeximpNet.ImageFilter)mipm); return(mips); }
public static List <LUtfNode> TGAMipmaps(string input, MipmapMethod mipm, bool flip) { var raw = ReadFile(input, flip); var mips = Crunch.GenerateMipmaps(raw.Data, raw.Width, raw.Height, (CrnglueMipmaps)mipm); var nodes = new List <LUtfNode>(mips.Count); for (int i = 0; i < mips.Count; i++) { var n = new LUtfNode { Name = "MIP" + i, Data = TargaRGBA(mips[i].Bytes, mips[i].Width, mips[i].Height) }; nodes.Add(n); } return(nodes); }
public static byte[] CreateDDS(string input, DDSFormat format, MipmapMethod mipm, bool slow, bool flip) { LoadLibraries(); using (var stream = new MemoryStream()) { using (var compress = new Compressor()) { compress.Input.GenerateMipmaps = false; List <TeximpNet.Surface> toDispose = null; if (mipm == MipmapMethod.None) { using (var surface = TeximpNet.Surface.LoadFromFile(input)) { if (flip) { surface.FlipVertically(); } compress.Input.SetData(surface); } } else { var mips = GenerateMipmapsRGBA(input, mipm, flip); compress.Input.SetTextureLayout(TextureType.Texture2D, mips[0].Width, mips[0].Height); for (int i = 0; i < mips.Count; i++) { compress.Input.SetMipmapData(mips[i], i); } toDispose = mips; } compress.Compression.Format = (CompressionFormat)format; compress.Compression.Quality = slow ? CompressionQuality.Production : CompressionQuality.Normal; compress.Compression.SetBGRAPixelFormat(); compress.Process(stream); if (toDispose != null) { foreach (var sfc in toDispose) { sfc.Dispose(); } } } return(stream.ToArray()); } }
public static unsafe List <LUtfNode> TGAMipmaps(string input, MipmapMethod mipm) { LoadLibraries(); var nodes = new List <LUtfNode>(); var mips = GenerateMipmapsRGBA(input, mipm); for (int i = 0; i < mips.Count; i++) { using (var stream = new MemoryStream()) { mips[i].SaveToStream(TeximpNet.ImageFormat.TARGA, stream); var n = new LUtfNode() { Name = "MIP" + i, Data = stream.ToArray() }; nodes.Add(n); mips[i].Dispose(); } } return(nodes); }
public static byte[] CreateDDS(string input, DDSFormat format, MipmapMethod mipm, bool slow, bool flip) { var raw = ReadFile(input, flip); return(Crunch.CompressDDS(raw.Data, raw.Width, raw.Height, (CrnglueFormat)format, (CrnglueMipmaps)mipm, slow)); }