//Gets the raw byte data and splits off uneeded parts
        static byte[] GetShaderData(BfshaLibrary.ShaderCodeData shaderData)
        {
            var data = ((BfshaLibrary.ShaderCodeDataBinary)shaderData).BinaryData;

            byte[] data1 = data[1].ToArray();

            return(ByteUtils.SubArray(data1, 48, (uint)data1.Length - 48));
        }
        static byte[] GetConstants(BfshaLibrary.ShaderCodeData shaderData)
        {
            var data = ((BfshaLibrary.ShaderCodeDataBinary)shaderData).BinaryData;

            //Bnsh has 2 shader code sections. The first section has block info for constants
            using (var reader = new Toolbox.Core.IO.FileReader(data[0])) {
                reader.SeekBegin(1776);
                ulong ofsUnk                 = reader.ReadUInt64();
                uint  lenByteCode            = reader.ReadUInt32();
                uint  lenConstData           = reader.ReadUInt32();
                uint  ofsConstBlockDataStart = reader.ReadUInt32();
                uint  ofsConstBlockDataEnd   = reader.ReadUInt32();
                return(GetConstantsFromCode(data[1], ofsConstBlockDataStart, lenConstData));
            }
        }