public Texture FromBitMap(byte[] data, TextureImporterSettings settings) { Texture tex = new Texture(); tex.Height = (uint)settings.TexHeight; tex.Width = (uint)settings.TexWidth; tex.Format = Format; tex.Name = settings.TexName; tex.Path = ""; tex.TextureData = new List <List <byte[]> >(); if (settings.MipCount == 0) { settings.MipCount = 1; } ChannelType[] channels = TextureData.SetChannelsByFormat(settings.Format); tex.ChannelRed = channels[0]; tex.ChannelGreen = channels[1]; tex.ChannelBlue = channels[2]; tex.ChannelAlpha = channels[3]; tex.sparseBinding = settings.sparseBinding; tex.sparseResidency = settings.sparseResidency; tex.AccessFlags = settings.AccessFlags; tex.ArrayLength = settings.arrayLength; tex.MipCount = settings.MipCount; tex.Depth = settings.Depth; tex.Dim = settings.Dim; tex.Flags = settings.Flags; tex.TileMode = settings.TileMode; tex.textureLayout = settings.TextureLayout; tex.textureLayout2 = settings.TextureLayout2; tex.Swizzle = settings.Swizzle; tex.SurfaceDim = settings.SurfaceDim; tex.SampleCount = settings.SampleCount; tex.Regs = settings.Regs; tex.Pitch = settings.Pitch; tex.MipOffsets = new long[tex.MipCount]; List <byte[]> arrayFaces = new List <byte[]>(); if (tex.ArrayLength > 1) { arrayFaces = DDS.GetArrayFaces(data, tex.ArrayLength); } else { arrayFaces.Add(data); } for (int i = 0; i < tex.ArrayLength; i++) { List <byte[]> mipmaps = SwizzleSurfaceMipMaps(tex, arrayFaces[i], tex.TileMode); tex.TextureData.Add(mipmaps); byte[] test = Combine(mipmaps); tex.TextureData[i][0] = test; } return(tex); }
public void LoadDDS(string FileName, byte[] FileData = null) { TexName = STGenericTexture.SetNameFromPath(FileName); DDS dds = new DDS(); if (FileData != null) { dds.Load(new FileReader(new MemoryStream(FileData))); } else { dds.Load(new FileReader(FileName)); } MipCount = dds.header.mipmapCount; TexWidth = dds.header.width; TexHeight = dds.header.height; var surfaces = DDS.GetArrayFaces(dds, dds.ArrayCount); RedComp = dds.RedChannel; GreenComp = dds.GreenChannel; BlueComp = dds.BlueChannel; AlphaComp = dds.AlphaChannel; foreach (var surface in surfaces) { DataBlockOutput.Add(Utils.CombineByteArray(surface.mipmaps.ToArray())); } Format = dds.Format; }
public override byte[] GetImageData(int ArrayLevel = 0, int MipLevel = 0, int DepthLevel = 0) { if (!Runtime.NUTEXBSettings.IsSwizzled) { return(DDS.GetArrayFaces(this, ImageData, ArrayCount)[ArrayLevel].mipmaps[MipLevel]); } return(TegraX1Swizzle.GetImageData(this, ImageData, ArrayLevel, MipLevel, DepthLevel, 1)); }
public override byte[] GetImageData(int ArrayLevel = 0, int MipLevel = 0, int DepthLevel = 0) { if (!IsSwizzled) { return(DDS.GetArrayFaces(this, ImageData, 1)[ArrayLevel].mipmaps[0]); } return(TegraX1Swizzle.GetImageData(this, ImageData, ArrayLevel, MipLevel, DepthLevel, 1)); }
public override byte[] GetImageData(int ArrayLevel = 0, int MipLevel = 0, int DepthLevel = 0) { if (Alignment == 0) { return(DDS.GetArrayFaces(this, ImageData, ArrayCount)[ArrayLevel].mipmaps[MipLevel]); } return(TegraX1Swizzle.GetImageData(this, ImageData, ArrayLevel, MipLevel, DepthLevel, 1)); }