public void Read(BinaryReader reader, int segment) { for (int i = 0; i < entries.Length; i++) { var entry = entries[i]; if (entry.Segment == segment) { reader.BaseStream.Position = entry.Offset; m_SubPrograms[i] = new ShaderSubProgram(reader); } } }
public ShaderProgram(BinaryReader reader) { var subProgramsCapacity = reader.ReadInt32(); m_SubPrograms = new ShaderSubProgram[subProgramsCapacity]; for (int i = 0; i < subProgramsCapacity; i++) { reader.BaseStream.Position = 4 + i * 8; var offset = reader.ReadInt32(); reader.BaseStream.Position = offset; m_SubPrograms[i] = new ShaderSubProgram(reader); } }
public ShaderProgram(BinaryReader reader, int[] version) { var subProgramsCapacity = reader.ReadInt32(); m_SubPrograms = new ShaderSubProgram[subProgramsCapacity]; int entrySize; if (version[0] > 2019 || (version[0] == 2019 && version[1] >= 3)) //2019.3 and up { entrySize = 12; } else { entrySize = 8; } for (int i = 0; i < subProgramsCapacity; i++) { reader.BaseStream.Position = 4 + i * entrySize; var offset = reader.ReadInt32(); reader.BaseStream.Position = offset; m_SubPrograms[i] = new ShaderSubProgram(reader); } }