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