Esempio n. 1
0
        public static uint ToFourCC(this CRNFormat format)
        {
            switch (format)
            {
            case CRNFormat.DXT1:
                return(FourCC('D', 'X', 'T', '1'));

            case CRNFormat.DXT3:
                return(FourCC('D', 'X', 'T', '3'));

            case CRNFormat.DXT5:
                return(FourCC('D', 'X', 'T', '5'));

            case CRNFormat.DXN_XY:
                return(FourCC('A', '2', 'X', 'Y'));

            case CRNFormat.DXN_YX:
                return(FourCC('A', 'T', 'I', '2'));

            case CRNFormat.DXT5A:
                return(FourCC('A', 'T', 'I', '1'));

            case CRNFormat.DXT5_CCxY:
                return(FourCC('C', 'C', 'x', 'Y'));

            case CRNFormat.DXT5_xGxR:
                return(FourCC('x', 'G', 'x', 'R'));

            case CRNFormat.DXT5_xGBR:
                return(FourCC('x', 'G', 'B', 'R'));

            case CRNFormat.DXT5_AGBR:
                return(FourCC('A', 'G', 'B', 'R'));

            case CRNFormat.ETC1:
                return(FourCC('E', 'T', 'C', '1'));

            case CRNFormat.ETC2:
                return(FourCC('E', 'T', 'C', '2'));

            case CRNFormat.ETC2A:
                return(FourCC('E', 'T', '2', 'A'));

            case CRNFormat.ETC1S:
                return(FourCC('E', 'T', '1', 'S'));

            case CRNFormat.ETC2AS:
                return(FourCC('E', '2', 'A', 'S'));

            default:
                break;
            }
            return(0);
        }
Esempio n. 2
0
        public CRNTextureImporter(byte[] data)
        {
            var  converter = new EndianBitConverter();
            uint sig       = converter.ToUInt16(data, 0);

            if (sig != SigValue)
            {
                converter.InvertEndian = true;
                sig = converter.ToUInt16(data, 0);
                if (sig != SigValue)
                {
                    throw new Exception("Invalid CRN Texture.");
                }
            }

            HeaderSize = converter.ToUInt16(data, 2);
            CRC16      = converter.ToUInt16(data, 4);
            DataSize   = converter.ToUInt32(data, 6);
            DataCRC16  = converter.ToUInt16(data, 10);

            Width  = converter.ToUInt16(data, 12);
            Height = converter.ToUInt16(data, 14);
            Levels = data[16];
            Faces  = data[17];
            Format = (CRNFormat)data[18];
            Flags  = (CRNHeaderFlags)converter.ToUInt16(data, 19);

            UserData0 = converter.ToUInt32(data, 25);
            UserData1 = converter.ToUInt32(data, 29);

            byte[]    dxtData = unitils.UnityCRN.Transcode(data);
            Texture2D tex; // Bad, prefer direct conversion instead of using Texture2D

            if (ImageConversion.LoadDDSImage(dxtData, out tex))
            {
                RawTextureData = tex.GetRawTextureData();
            }
        }