} //number of shaders in the section public void Read(BinaryReader br) { Name = FxcFile.ReadString(br); //usually "NULL" Unk1Byte = br.ReadByte(); Unk2Byte = br.ReadByte(); Unk3Uint = br.ReadUInt32(); }
public void Read(BinaryReader br) { u003 = br.ReadUInt32(); //176, 16 //256 us001 = br.ReadUInt16(); //6, 5 us002 = br.ReadUInt16(); //6, 12 us003 = br.ReadUInt16(); //6, 5 us004 = br.ReadUInt16(); //6, 5 us005 = br.ReadUInt16(); //6, 5 us006 = br.ReadUInt16(); //6, 5 Name = FxcFile.ReadString(br); // <fxc name> _locals //"rage_matrices", "misc_globals", "lighting_globals", "more_stuff" Jenkins.Ensure(Name); //why not :P }
public void Read(BinaryReader br) { Name = FxcFile.ReadString(br); //"draw", "deferred_draw", etc.. PassCount = br.ReadByte(); // if (PassCount > 0) { Passes = new FxcPass[PassCount]; for (int i = 0; i < PassCount; i++) { FxcPass p = new FxcPass(); p.Read(br); Passes[i] = p; } } }
public void Read(BinaryReader br) { Name = FxcFile.ReadString(br); Type = br.ReadByte(); switch (Type) { case 0: Value = br.ReadUInt32(); break; case 1: Value = br.ReadSingle(); break; case 2: Value = FxcFile.ReadString(br); break; default: break; } }
public void Read(BinaryReader br) { b0 = br.ReadByte(); //5 b1 = br.ReadByte(); //0,1 b2 = br.ReadByte(); //19 //17 b3 = br.ReadByte(); //2 //27 Name1 = FxcFile.ReadString(br); Name2 = FxcFile.ReadString(br); b4 = br.ReadByte(); //32 b5 = br.ReadByte(); // b6 = br.ReadByte(); // b7 = br.ReadByte(); // CBufferName = br.ReadUInt32(); //hash ParamCount = br.ReadByte(); //1 if (ParamCount > 0) { List <FxcVariableParam> parms = new List <FxcVariableParam>(); for (int i = 0; i < ParamCount; i++) { FxcVariableParam parm = new FxcVariableParam(); parm.Read(br); parms.Add(parm); } Params = parms.ToArray(); } ValueCount = br.ReadByte(); if (ValueCount > 0) { Values = new float[ValueCount]; for (int i = 0; i < ValueCount; i++) { Values[i] = br.ReadSingle(); //TODO: how to know what types to use? } } #region debug validation switch (b0) { case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 11: case 14: case 17: case 20: break; case 15: case 18: case 19: case 21: case 22: break; default: break; } switch (b1) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 8: case 12: case 254: case 255: break; case 14: case 16: case 24: case 40: case 117: break; default: break; } switch (CBufferName) { case 2165770756: case 3458315595: case 1059338858: case 3779850771: case 2988188919: case 713939274: case 3369176576: case 1927486087: case 4135739982: case 1032736383: case 3084860475: case 3844532749: case 3635751376: case 2172777116: case 4255900365: case 2725372071: case 3661207622: case 4213364555: case 1519748817: case 118958736: case 2397841684: case 1340365912: case 2531859994: case 0: break; case 482774302: case 2300268537: case 2714887816: case 2049538169: case 1316881611: case 3367312321: case 4017086211: case 3743503190: case 938670440: case 2782027784: case 2865440919: case 2384984532: case 486482914: case 3162602184: case 1834530379: case 1554708878: case 1142002603: case 3049310097: case 764124013: case 2526104914: case 1561144077: case 970248680: case 3899781660: case 1853474951: case 2224880237: case 3766848419: case 2718810031: case 115655537: case 4224116138: case 3572088685: case 1438660507: case 4092686193: case 871214106: case 2121263542: case 3502503908: case 586499600: case 4046148196: case 2999112456: case 2355014976: case 579364910: case 2193272593: case 1641847936: case 1286180849: case 3291504934: case 278397346: case 3346871633: case 4091106477: case 832855465: case 3616072140: case 3977262900: case 2062541604: case 950211059: case 2380663322: case 2783177544: case 1100625170: case 1279142172: case 1004646027: case 2092585241: case 4165560568: case 2651790209: case 3453406875: case 488789527: case 3375019131: case 519785780: case 729415208: case 556501613: case 2829744882: case 1778702372: case 2564407213: case 3291498326: case 1275817784: case 962813362: case 2020034807: case 2017746823: case 1237102223: case 4029270406: case 673228990: case 201854132: case 1866965008: case 957783816: case 2522030664: case 1910375705: case 2656344872: break; default: break; } switch (b3) { case 0: case 1: case 2: case 3: case 10: case 11: case 17: case 19: case 27: case 34: break; case 6: case 16: case 26: case 32: case 33: case 35: case 39: case 49: case 51: break; default: break; } #endregion }
public bool Read(BinaryReader br, bool exbyteflag, bool vsgsps) { Offset = br.BaseStream.Position; Name = FxcFile.ReadString(br); if (Name.Length == 0) { Name = FxcFile.ReadString(br); //why (seems to be GS only) exbyteflag = true; } Params = FxcFile.ReadStringArray(br); byte bufferCount = br.ReadByte(); var buffers = new List <FxcShaderBufferRef>(); for (int e = 0; e < bufferCount; e++) { FxcShaderBufferRef ext = new FxcShaderBufferRef(); ext.Name = FxcFile.ReadString(br); ext.Unk0Ushort = br.ReadUInt16(); buffers.Add(ext); } Buffers = buffers.ToArray(); byte exbyte = 0; if (exbyteflag) { exbyte = br.ReadByte(); //not sure what this is used for... if ((exbyte != 0)) { } } uint datalength = br.ReadUInt32(); if (datalength > 0) { uint magic_dxbc = br.ReadUInt32(); if (magic_dxbc != 1128421444) //"DXBC" - directx bytecode header { LastError += "Unexpected data found at DXBC header...\r\n"; return(false); //didn't find the DXBC header... abort! } br.BaseStream.Position -= 4; //wind back because dx needs that header ByteCode = br.ReadBytes((int)datalength); if (vsgsps) { VersionMajor = br.ReadByte(); //4,5 //appears to be shader model version VersionMinor = br.ReadByte(); //perhaps shader minor version } //try //{ // ByteCodeObj = new ShaderBytecode(ByteCode); // ShaderProfile = ByteCodeObj.GetVersion(); // switch (ShaderProfile.Version) // { // case ShaderVersion.VertexShader: // case ShaderVersion.PixelShader: // case ShaderVersion.GeometryShader: // VersionMajor = br.ReadByte();//4,5 //appears to be shader model version // VersionMinor = br.ReadByte(); //perhaps shader minor version // break; // default: // VersionMajor = (byte)ShaderProfile.Major; // VersionMinor = (byte)ShaderProfile.Minor; // break; // } // //do disassembly last, so any errors won't cause the file read to break // Disassembly = ByteCodeObj.Disassemble(); //} //catch (Exception ex) //{ // LastError += ex.ToString() + "\r\n"; // return false; //} } else { } return(true); }