From b2027441b954618a69b6310be5227b732ffef00d Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Sat, 18 Feb 2023 17:01:47 -0800 Subject: [PATCH] Initial CMaterialInstanceResource --- CGraphicsModel.bt | 512 +---------------------------------- CMaterialInstanceResource.bt | 28 ++ NGraphicsMaterial.bt | 509 ++++++++++++++++++++++++++++++++++ Run.bt | 4 + 4 files changed, 542 insertions(+), 511 deletions(-) create mode 100644 CMaterialInstanceResource.bt create mode 100644 NGraphicsMaterial.bt diff --git a/CGraphicsModel.bt b/CGraphicsModel.bt index 0f08dad..d069dd2 100644 --- a/CGraphicsModel.bt +++ b/CGraphicsModel.bt @@ -4,6 +4,7 @@ #include "CEvalSystem.bt" #include "CVector4i.bt" #include "CRenderOctree.bt" +#include "NGraphicsMaterial.bt" struct SModelAnimatedUVData { CEvalSystem evalSystem; @@ -92,517 +93,6 @@ struct SWorldModelHeader { uchar unk; }; -enum EMaterialDataId -{ - DATA_ID_DEBUG = 0, - // TXTR data IDs - DATA_ID_CBUF = 1, - DATA_ID_ZBUF = 2, - DATA_ID_GBUF = 3, - DATA_ID_GFLG = 4, - DATA_ID_OPCT = 5, - DATA_ID_DIFT = 6, - DATA_ID_ICAN = 7, - DATA_ID_SINC = 8, - DATA_ID_NMAP = 9, - DATA_ID_MNMP = 10, - DATA_ID_REFL = 11, - DATA_ID_REFS = 12, - DATA_ID_REFV = 13, - DATA_ID_SPCT = 14, - DATA_ID_LIBD = 15, - DATA_ID_LIBS = 16, - DATA_ID_FOGR = 17, - DATA_ID_INDI = 18, - DATA_ID_OTMP = 19, - DATA_ID_CGMP = 20, - DATA_ID_OGMP = 21, - DATA_ID_VAND = 22, - DATA_ID_BLAT = 23, - DATA_ID_BCLR = 24, - DATA_ID_METL = 25, - DATA_ID_TCH0 = 26, - DATA_ID_TCH1 = 27, - DATA_ID_TCH2 = 28, - DATA_ID_TCH3 = 29, - DATA_ID_TCH4 = 30, - DATA_ID_TCH5 = 31, - // COLR data IDs - DATA_ID_DIFC = 32, - DATA_ID_SHRC = 33, - DATA_ID_SPCC = 34, - DATA_ID_ICNC = 35, - DATA_ID_ICMC = 36, - DATA_ID_ODAT = 37, - DATA_ID_MDCI = 38, - DATA_ID_MDOI = 39, - DATA_ID_LODC = 40, - DATA_ID_LODP = 41, - DATA_ID_VANP = 42, - DATA_ID_BLAL = 43, - DATA_ID_BLCM = 44, - DATA_ID_INDP = 45, - DATA_ID_PVLO = 46, - DATA_ID_PSXT = 47, - DATA_ID_PTAI = 48, - DATA_ID_PCMD = 49, - DATA_ID_BSAO = 50, - DATA_ID_CCH0 = 51, - DATA_ID_CCH1 = 52, - DATA_ID_CCH2 = 53, - DATA_ID_CCH3 = 54, - DATA_ID_CCH4 = 55, - DATA_ID_CCH5 = 56, - DATA_ID_CCH6 = 57, - DATA_ID_BKLT = 58, - DATA_ID_BKLB = 59, - DATA_ID_BKLA = 60, - DATA_ID_BKGL = 61, - DATA_ID_DYIN = 62, - DATA_ID_CLP0 = 63, - DATA_ID_HOTP = 64, - // INT1 data IDs - DATA_ID_SHID = 65, - DATA_ID_GBFF = 66, - DATA_ID_PMOD = 67, - DATA_ID_PFLG = 68, - DATA_ID_BLPI = 69, - DATA_ID_ICH0 = 70, - DATA_ID_ICH1 = 71, - DATA_ID_ICH2 = 72, - // INT4 data IDs - DATA_ID_AUVI = 73, - DATA_ID_ECH0 = 74, - // SCLR data IDs - DATA_ID_OPCS = 75, - DATA_ID_SPCP = 76, - DATA_ID_INDS = 77, - DATA_ID_BLSM = 78, - DATA_ID_LITS = 79, - DATA_ID_MDOE = 80, - DATA_ID_VANF = 81, - DATA_ID_OTHS = 82, - DATA_ID_PZSO = 83, - DATA_ID_RCH0 = 84, - DATA_ID_RCH1 = 85, - DATA_ID_RCH2 = 86, - // MAT4 data IDs - DATA_ID_PXFM = 87, - DATA_ID_MCH0 = 88, - // CPLX data IDs - DATA_ID_BCRL = 89, // texture_layered - DATA_ID_MTLL = 90, // texture_layered - DATA_ID_NRML = 91, // texture_layered - DATA_ID_SHDD = 92, - DATA_ID_SKIN = 93, - DATA_ID_DIMD = 94, - DATA_ID_LIT = 95, - DATA_ID_ALLD = 96, - DATA_ID_DLLD = 97, - DATA_ID_CLLD = 98, - DATA_ID_AUXF = 99, - DATA_ID_WIND = 100, - DATA_ID_WATR = 101, - DATA_ID_DFXS = 102, - DATA_ID_DFXN = 103, - DATA_ID_MCDD = 104, - DATA_ID_CAUS = 105, - DATA_ID_BLPD = 106, - DATA_ID_BLPT = 107, - DATA_ID_FOGS = 108, - DATA_ID_VOLF = 109, - DATA_ID_VFXB = 110, - DATA_ID_VFXD = 111, - DATA_ID_REFP = 112, - DATA_ID_RAIN = 113, - DATA_ID_XCH0 = 114, - DATA_ID_XCH1 = 115, -}; - -// NMaterialFeatures::is_debug_material_data_id -byte IsDebugMaterialDataId(EMaterialDataId id) { - return id == DATA_ID_DEBUG; -} - -// NMaterialFeatures::is_texture_material_data_id -byte IsTextureMaterialDataId(EMaterialDataId id) { - return id >= DATA_ID_CBUF && id <= DATA_ID_TCH5; -} - -// NMaterialFeatures::is_float4_material_data_id -byte IsFloat4MaterialDataId(EMaterialDataId id) { - return id >= DATA_ID_DIFC && id <= DATA_ID_HOTP; -} - -// NMaterialFeatures::is_int_material_data_id -byte IsIntMaterialDataId(EMaterialDataId id) { - return id >= DATA_ID_SHID && id <= DATA_ID_ICH2; -} - -// NMaterialFeatures::is_int4_material_data_id -byte IsInt4MaterialDataId(EMaterialDataId id) { - return id >= DATA_ID_AUVI && id <= DATA_ID_ECH0; -} - -// NMaterialFeatures::is_float_material_data_id -byte IsFloatMaterialDataId(EMaterialDataId id) { - return id >= DATA_ID_OPCS && id <= DATA_ID_RCH2; -} - -// NMaterialFeatures::is_float4x4_material_data_id -byte IsFloat4x4MaterialDataId(EMaterialDataId id) { - return id >= DATA_ID_PXFM && id <= DATA_ID_MCH0; -} - -// NMaterialFeatures::is_complex_material_data_id -byte IsComplexMaterialDataId(EMaterialDataId id) { - return id >= DATA_ID_BCRL && id <= DATA_ID_XCH1; -} - -// NMaterialFeatures::is_texture_layered_material_data_id -byte IsTextureLayeredMaterialDataId(EMaterialDataId id) { - return id >= DATA_ID_BCRL && id <= DATA_ID_NRML; -} - -EMaterialDataId MapMaterialDataId(FourCC value) -{ - switch (value) { - case "CBUF": - return DATA_ID_CBUF; - case "ZBUF": - return DATA_ID_ZBUF; - case "GBUF": - return DATA_ID_GBUF; - case "GFLG": - return DATA_ID_GFLG; - case "OPCT": - return DATA_ID_OPCT; - case "DIFT": - return DATA_ID_DIFT; - case "ICAN": - return DATA_ID_ICAN; - case "SINC": - return DATA_ID_SINC; - case "NMAP": - return DATA_ID_NMAP; - case "MNMP": - return DATA_ID_MNMP; - case "REFL": - return DATA_ID_REFL; - case "REFS": - return DATA_ID_REFS; - case "REFV": - return DATA_ID_REFV; - case "SPCT": - return DATA_ID_SPCT; - case "LIBD": - return DATA_ID_LIBD; - case "LIBS": - return DATA_ID_LIBS; - case "FOGR": - return DATA_ID_FOGR; - case "INDI": - return DATA_ID_INDI; - case "OTMP": - return DATA_ID_OTMP; - case "CGMP": - return DATA_ID_CGMP; - case "OGMP": - return DATA_ID_OGMP; - case "VAND": - return DATA_ID_VAND; - case "BLAT": - return DATA_ID_BLAT; - case "BCLR": - return DATA_ID_BCLR; - case "METL": - return DATA_ID_METL; - case "TCH0": - return DATA_ID_TCH0; - case "TCH1": - return DATA_ID_TCH1; - case "TCH2": - return DATA_ID_TCH2; - case "TCH3": - return DATA_ID_TCH3; - case "TCH4": - return DATA_ID_TCH4; - case "TCH5": - return DATA_ID_TCH5; - case "DIFC": - return DATA_ID_DIFC; - case "SHRC": - return DATA_ID_SHRC; - case "SPCC": - return DATA_ID_SPCC; - case "ICNC": - return DATA_ID_ICNC; - case "ICMC": - return DATA_ID_ICMC; - case "ODAT": - return DATA_ID_ODAT; - case "MDCI": - return DATA_ID_MDCI; - case "MDOI": - return DATA_ID_MDOI; - case "LODC": - return DATA_ID_LODC; - case "LODP": - return DATA_ID_LODP; - case "VANP": - return DATA_ID_VANP; - case "BLAL": - return DATA_ID_BLAL; - case "BLCM": - return DATA_ID_BLCM; - case "INDP": - return DATA_ID_INDP; - case "PVLO": - return DATA_ID_PVLO; - case "PSXT": - return DATA_ID_PSXT; - case "PTAI": - return DATA_ID_PTAI; - case "PCMD": - return DATA_ID_PCMD; - case "BSAO": - return DATA_ID_BSAO; - case "CCH0": - return DATA_ID_CCH0; - case "CCH1": - return DATA_ID_CCH1; - case "CCH2": - return DATA_ID_CCH2; - case "CCH3": - return DATA_ID_CCH3; - case "CCH4": - return DATA_ID_CCH4; - case "CCH5": - return DATA_ID_CCH5; - case "CCH6": - return DATA_ID_CCH6; - case "BKLT": - return DATA_ID_BKLT; - case "BKLB": - return DATA_ID_BKLB; - case "BKLA": - return DATA_ID_BKLA; - case "BKGL": - return DATA_ID_BKGL; - case "DYIN": - return DATA_ID_DYIN; - case "CLP0": - return DATA_ID_CLP0; - case "HOTP": - return DATA_ID_HOTP; - case "SHID": - return DATA_ID_SHID; - case "GBFF": - return DATA_ID_GBFF; - case "PMOD": - return DATA_ID_PMOD; - case "PFLG": - return DATA_ID_PFLG; - case "BLPI": - return DATA_ID_BLPI; - case "ICH0": - return DATA_ID_ICH0; - case "ICH1": - return DATA_ID_ICH1; - case "ICH2": - return DATA_ID_ICH2; - case "AUVI": - return DATA_ID_AUVI; - case "ECH0": - return DATA_ID_ECH0; - case "OPCS": - return DATA_ID_OPCS; - case "SPCP": - return DATA_ID_SPCP; - case "INDS": - return DATA_ID_INDS; - case "BLSM": - return DATA_ID_BLSM; - case "LITS": - return DATA_ID_LITS; - case "MDOE": - return DATA_ID_MDOE; - case "VANF": - return DATA_ID_VANF; - case "OTHS": - return DATA_ID_OTHS; - case "PZSO": - return DATA_ID_PZSO; - case "RCH0": - return DATA_ID_RCH0; - case "RCH1": - return DATA_ID_RCH1; - case "RCH2": - return DATA_ID_RCH2; - case "PXFM": - return DATA_ID_PXFM; - case "MCH0": - return DATA_ID_MCH0; - case "BCRL": - return DATA_ID_BCRL; - case "MTLL": - return DATA_ID_MTLL; - case "NRML": - return DATA_ID_NRML; - case "SHDD": - return DATA_ID_SHDD; - case "SKIN": - return DATA_ID_SKIN; - case "DIMD": - return DATA_ID_DIMD; - case "LIT ": - return DATA_ID_LIT; - case "ALLD": - return DATA_ID_ALLD; - case "DLLD": - return DATA_ID_DLLD; - case "CLLD": - return DATA_ID_CLLD; - case "AUXF": - return DATA_ID_AUXF; - case "WIND": - return DATA_ID_WIND; - case "WATR": - return DATA_ID_WATR; - case "DFXS": - return DATA_ID_DFXS; - case "DFXN": - return DATA_ID_DFXN; - case "MCDD": - return DATA_ID_MCDD; - case "CAUS": - return DATA_ID_CAUS; - case "BLPD": - return DATA_ID_BLPD; - case "BLPT": - return DATA_ID_BLPT; - case "FOGS": - return DATA_ID_FOGS; - case "VOLF": - return DATA_ID_VOLF; - case "VFXB": - return DATA_ID_VFXB; - case "VFXD": - return DATA_ID_VFXD; - case "REFP": - return DATA_ID_REFP; - case "RAIN": - return DATA_ID_RAIN; - case "XCH0": - return DATA_ID_XCH0; - case "XCH1": - return DATA_ID_XCH1; - } -} - -string ReadMaterialDataId(FourCC value) -{ - EMaterialDataId id = MapMaterialDataId(value); - return EnumToString(id); -} - -enum EMaterialFlag -{ - DATA_FLAG_MFTR = 0, - DATA_FLAG_MFMT = 1, - DATA_FLAG_MFSR = 2, - DATA_FLAG_MFSK = 3, - DATA_FLAG_MFVC = 4, - DATA_FLAG_MF1B = 5, - DATA_FLAG_MFAV = 6, - DATA_FLAG_MFIN = 7, - DATA_FLAG_MFCA = 8, - DATA_FLAG_MFIM = 9, - DATA_FLAG_MTSM = 10, - DATA_FLAG_MFRL = 11, - DATA_FLAG_MFOE = 12, - DATA_FLAG_MFOT = 13, - DATA_FLAG_MFCI = 14, - DATA_FLAG_MFOI = 15, - DATA_FLAG_MFVA = 16, - DATA_FLAG_MFSU = 17, - DATA_FLAG_MFBP = 18, - DATA_FLAG_MFBL = 19, - DATA_FLAG_MFLB = 20, - DATA_FLAG_MF1E = 21, - DATA_FLAG_MFC0 = 22, - DATA_FLAG_MFC1 = 23, - DATA_FLAG_MFC2 = 24, - DATA_FLAG_MFC3 = 25, - DATA_FLAG_MFC4 = 26, -}; - -EMaterialFlag MapMaterialFlag(FourCC value) -{ - switch (value) { - case "MFTR": - return DATA_FLAG_MFTR; - case "MFMT": - return DATA_FLAG_MFMT; - case "MFSR": - return DATA_FLAG_MFSR; - case "MFSK": - return DATA_FLAG_MFSK; - case "MFVC": - return DATA_FLAG_MFVC; - case "MF1B": - return DATA_FLAG_MF1B; - case "MFAV": - return DATA_FLAG_MFAV; - case "MFIN": - return DATA_FLAG_MFIN; - case "MFCA": - return DATA_FLAG_MFCA; - case "MFIM": - return DATA_FLAG_MFIM; - case "MTSM": - return DATA_FLAG_MTSM; - case "MFRL": - return DATA_FLAG_MFRL; - case "MFOE": - return DATA_FLAG_MFOE; - case "MFOT": - return DATA_FLAG_MFOT; - case "MFCI": - return DATA_FLAG_MFCI; - case "MFOI": - return DATA_FLAG_MFOI; - case "MFVA": - return DATA_FLAG_MFVA; - case "MFSU": - return DATA_FLAG_MFSU; - case "MFBP": - return DATA_FLAG_MFBP; - case "MFBL": - return DATA_FLAG_MFBL; - case "MFLB": - return DATA_FLAG_MFLB; - case "MF1E": - return DATA_FLAG_MF1E; - case "MFC0": - return DATA_FLAG_MFC0; - case "MFC1": - return DATA_FLAG_MFC1; - case "MFC2": - return DATA_FLAG_MFC2; - case "MFC3": - return DATA_FLAG_MFC3; - case "MFC4": - return DATA_FLAG_MFC4; - } -} - -string ReadMaterialFlag(FourCC value) -{ - EMaterialFlag flag = MapMaterialFlag(value); - return EnumToString(flag); -} - enum ECachedGraphicsTransform { XF_MODEL_TO_WORLD_MTX = 0, // uc_modelToWorldMatrix diff --git a/CMaterialInstanceResource.bt b/CMaterialInstanceResource.bt new file mode 100644 index 0000000..489a27d --- /dev/null +++ b/CMaterialInstanceResource.bt @@ -0,0 +1,28 @@ +#ifndef _CMATERIALINSTANCERESOURCE +#define _CMATERIALINSTANCERESOURCE + +#include "CChunkDescriptor.bt" +#include "NGraphicsMaterial.bt"; + +typedef struct CVariableDesc { + FourCC type; + FourCC id; + uchar unk1; + uchar unk2; +}; + +typedef struct { + ChunkDescriptor chunk; + GUID guid1; + GUID guid2; + uint unk1; + uchar unk2; + uint unk3; + uint unk4; + uint variableDescCount; + CVariableDesc varibleDescs[variableDescCount]; + uint dataCount; + +} CMaterialInstanceResource; + +#endif// _CMATERIALINSTANCERESOURCE diff --git a/NGraphicsMaterial.bt b/NGraphicsMaterial.bt new file mode 100644 index 0000000..56bd8ed --- /dev/null +++ b/NGraphicsMaterial.bt @@ -0,0 +1,509 @@ +#ifndef _NGRAPHICSMATERIAL +#define _NGRAPHICSMATERIAL + +#include "Common.bt" + +enum EMaterialDataId { + DATA_ID_DEBUG = 0, + // TXTR data IDs + DATA_ID_CBUF = 1, + DATA_ID_ZBUF = 2, + DATA_ID_GBUF = 3, + DATA_ID_GFLG = 4, + DATA_ID_OPCT = 5, + DATA_ID_DIFT = 6, + DATA_ID_ICAN = 7, + DATA_ID_SINC = 8, + DATA_ID_NMAP = 9, + DATA_ID_MNMP = 10, + DATA_ID_REFL = 11, + DATA_ID_REFS = 12, + DATA_ID_REFV = 13, + DATA_ID_SPCT = 14, + DATA_ID_LIBD = 15, + DATA_ID_LIBS = 16, + DATA_ID_FOGR = 17, + DATA_ID_INDI = 18, + DATA_ID_OTMP = 19, + DATA_ID_CGMP = 20, + DATA_ID_OGMP = 21, + DATA_ID_VAND = 22, + DATA_ID_BLAT = 23, + DATA_ID_BCLR = 24, + DATA_ID_METL = 25, + DATA_ID_TCH0 = 26, + DATA_ID_TCH1 = 27, + DATA_ID_TCH2 = 28, + DATA_ID_TCH3 = 29, + DATA_ID_TCH4 = 30, + DATA_ID_TCH5 = 31, + // COLR data IDs + DATA_ID_DIFC = 32, + DATA_ID_SHRC = 33, + DATA_ID_SPCC = 34, + DATA_ID_ICNC = 35, + DATA_ID_ICMC = 36, + DATA_ID_ODAT = 37, + DATA_ID_MDCI = 38, + DATA_ID_MDOI = 39, + DATA_ID_LODC = 40, + DATA_ID_LODP = 41, + DATA_ID_VANP = 42, + DATA_ID_BLAL = 43, + DATA_ID_BLCM = 44, + DATA_ID_INDP = 45, + DATA_ID_PVLO = 46, + DATA_ID_PSXT = 47, + DATA_ID_PTAI = 48, + DATA_ID_PCMD = 49, + DATA_ID_BSAO = 50, + DATA_ID_CCH0 = 51, + DATA_ID_CCH1 = 52, + DATA_ID_CCH2 = 53, + DATA_ID_CCH3 = 54, + DATA_ID_CCH4 = 55, + DATA_ID_CCH5 = 56, + DATA_ID_CCH6 = 57, + DATA_ID_BKLT = 58, + DATA_ID_BKLB = 59, + DATA_ID_BKLA = 60, + DATA_ID_BKGL = 61, + DATA_ID_DYIN = 62, + DATA_ID_CLP0 = 63, + DATA_ID_HOTP = 64, + // INT1 data IDs + DATA_ID_SHID = 65, + DATA_ID_GBFF = 66, + DATA_ID_PMOD = 67, + DATA_ID_PFLG = 68, + DATA_ID_BLPI = 69, + DATA_ID_ICH0 = 70, + DATA_ID_ICH1 = 71, + DATA_ID_ICH2 = 72, + // INT4 data IDs + DATA_ID_AUVI = 73, + DATA_ID_ECH0 = 74, + // SCLR data IDs + DATA_ID_OPCS = 75, + DATA_ID_SPCP = 76, + DATA_ID_INDS = 77, + DATA_ID_BLSM = 78, + DATA_ID_LITS = 79, + DATA_ID_MDOE = 80, + DATA_ID_VANF = 81, + DATA_ID_OTHS = 82, + DATA_ID_PZSO = 83, + DATA_ID_RCH0 = 84, + DATA_ID_RCH1 = 85, + DATA_ID_RCH2 = 86, + // MAT4 data IDs + DATA_ID_PXFM = 87, + DATA_ID_MCH0 = 88, + // CPLX data IDs + DATA_ID_BCRL = 89, // texture_layered + DATA_ID_MTLL = 90, // texture_layered + DATA_ID_NRML = 91, // texture_layered + DATA_ID_SHDD = 92, + DATA_ID_SKIN = 93, + DATA_ID_DIMD = 94, + DATA_ID_LIT = 95, + DATA_ID_ALLD = 96, + DATA_ID_DLLD = 97, + DATA_ID_CLLD = 98, + DATA_ID_AUXF = 99, + DATA_ID_WIND = 100, + DATA_ID_WATR = 101, + DATA_ID_DFXS = 102, + DATA_ID_DFXN = 103, + DATA_ID_MCDD = 104, + DATA_ID_CAUS = 105, + DATA_ID_BLPD = 106, + DATA_ID_BLPT = 107, + DATA_ID_FOGS = 108, + DATA_ID_VOLF = 109, + DATA_ID_VFXB = 110, + DATA_ID_VFXD = 111, + DATA_ID_REFP = 112, + DATA_ID_RAIN = 113, + DATA_ID_XCH0 = 114, + DATA_ID_XCH1 = 115, +}; + +// NMaterialFeatures::is_debug_material_data_id +byte IsDebugMaterialDataId(EMaterialDataId id) { return id == DATA_ID_DEBUG; } + +// NMaterialFeatures::is_texture_material_data_id +byte IsTextureMaterialDataId(EMaterialDataId id) { + return id >= DATA_ID_CBUF && id <= DATA_ID_TCH5; +} + +// NMaterialFeatures::is_float4_material_data_id +byte IsFloat4MaterialDataId(EMaterialDataId id) { + return id >= DATA_ID_DIFC && id <= DATA_ID_HOTP; +} + +// NMaterialFeatures::is_int_material_data_id +byte IsIntMaterialDataId(EMaterialDataId id) { + return id >= DATA_ID_SHID && id <= DATA_ID_ICH2; +} + +// NMaterialFeatures::is_int4_material_data_id +byte IsInt4MaterialDataId(EMaterialDataId id) { + return id >= DATA_ID_AUVI && id <= DATA_ID_ECH0; +} + +// NMaterialFeatures::is_float_material_data_id +byte IsFloatMaterialDataId(EMaterialDataId id) { + return id >= DATA_ID_OPCS && id <= DATA_ID_RCH2; +} + +// NMaterialFeatures::is_float4x4_material_data_id +byte IsFloat4x4MaterialDataId(EMaterialDataId id) { + return id >= DATA_ID_PXFM && id <= DATA_ID_MCH0; +} + +// NMaterialFeatures::is_complex_material_data_id +byte IsComplexMaterialDataId(EMaterialDataId id) { + return id >= DATA_ID_BCRL && id <= DATA_ID_XCH1; +} + +// NMaterialFeatures::is_texture_layered_material_data_id +byte IsTextureLayeredMaterialDataId(EMaterialDataId id) { + return id >= DATA_ID_BCRL && id <= DATA_ID_NRML; +} + +EMaterialDataId MapMaterialDataId(FourCC value) { + switch (value) { + case "CBUF": + return DATA_ID_CBUF; + case "ZBUF": + return DATA_ID_ZBUF; + case "GBUF": + return DATA_ID_GBUF; + case "GFLG": + return DATA_ID_GFLG; + case "OPCT": + return DATA_ID_OPCT; + case "DIFT": + return DATA_ID_DIFT; + case "ICAN": + return DATA_ID_ICAN; + case "SINC": + return DATA_ID_SINC; + case "NMAP": + return DATA_ID_NMAP; + case "MNMP": + return DATA_ID_MNMP; + case "REFL": + return DATA_ID_REFL; + case "REFS": + return DATA_ID_REFS; + case "REFV": + return DATA_ID_REFV; + case "SPCT": + return DATA_ID_SPCT; + case "LIBD": + return DATA_ID_LIBD; + case "LIBS": + return DATA_ID_LIBS; + case "FOGR": + return DATA_ID_FOGR; + case "INDI": + return DATA_ID_INDI; + case "OTMP": + return DATA_ID_OTMP; + case "CGMP": + return DATA_ID_CGMP; + case "OGMP": + return DATA_ID_OGMP; + case "VAND": + return DATA_ID_VAND; + case "BLAT": + return DATA_ID_BLAT; + case "BCLR": + return DATA_ID_BCLR; + case "METL": + return DATA_ID_METL; + case "TCH0": + return DATA_ID_TCH0; + case "TCH1": + return DATA_ID_TCH1; + case "TCH2": + return DATA_ID_TCH2; + case "TCH3": + return DATA_ID_TCH3; + case "TCH4": + return DATA_ID_TCH4; + case "TCH5": + return DATA_ID_TCH5; + case "DIFC": + return DATA_ID_DIFC; + case "SHRC": + return DATA_ID_SHRC; + case "SPCC": + return DATA_ID_SPCC; + case "ICNC": + return DATA_ID_ICNC; + case "ICMC": + return DATA_ID_ICMC; + case "ODAT": + return DATA_ID_ODAT; + case "MDCI": + return DATA_ID_MDCI; + case "MDOI": + return DATA_ID_MDOI; + case "LODC": + return DATA_ID_LODC; + case "LODP": + return DATA_ID_LODP; + case "VANP": + return DATA_ID_VANP; + case "BLAL": + return DATA_ID_BLAL; + case "BLCM": + return DATA_ID_BLCM; + case "INDP": + return DATA_ID_INDP; + case "PVLO": + return DATA_ID_PVLO; + case "PSXT": + return DATA_ID_PSXT; + case "PTAI": + return DATA_ID_PTAI; + case "PCMD": + return DATA_ID_PCMD; + case "BSAO": + return DATA_ID_BSAO; + case "CCH0": + return DATA_ID_CCH0; + case "CCH1": + return DATA_ID_CCH1; + case "CCH2": + return DATA_ID_CCH2; + case "CCH3": + return DATA_ID_CCH3; + case "CCH4": + return DATA_ID_CCH4; + case "CCH5": + return DATA_ID_CCH5; + case "CCH6": + return DATA_ID_CCH6; + case "BKLT": + return DATA_ID_BKLT; + case "BKLB": + return DATA_ID_BKLB; + case "BKLA": + return DATA_ID_BKLA; + case "BKGL": + return DATA_ID_BKGL; + case "DYIN": + return DATA_ID_DYIN; + case "CLP0": + return DATA_ID_CLP0; + case "HOTP": + return DATA_ID_HOTP; + case "SHID": + return DATA_ID_SHID; + case "GBFF": + return DATA_ID_GBFF; + case "PMOD": + return DATA_ID_PMOD; + case "PFLG": + return DATA_ID_PFLG; + case "BLPI": + return DATA_ID_BLPI; + case "ICH0": + return DATA_ID_ICH0; + case "ICH1": + return DATA_ID_ICH1; + case "ICH2": + return DATA_ID_ICH2; + case "AUVI": + return DATA_ID_AUVI; + case "ECH0": + return DATA_ID_ECH0; + case "OPCS": + return DATA_ID_OPCS; + case "SPCP": + return DATA_ID_SPCP; + case "INDS": + return DATA_ID_INDS; + case "BLSM": + return DATA_ID_BLSM; + case "LITS": + return DATA_ID_LITS; + case "MDOE": + return DATA_ID_MDOE; + case "VANF": + return DATA_ID_VANF; + case "OTHS": + return DATA_ID_OTHS; + case "PZSO": + return DATA_ID_PZSO; + case "RCH0": + return DATA_ID_RCH0; + case "RCH1": + return DATA_ID_RCH1; + case "RCH2": + return DATA_ID_RCH2; + case "PXFM": + return DATA_ID_PXFM; + case "MCH0": + return DATA_ID_MCH0; + case "BCRL": + return DATA_ID_BCRL; + case "MTLL": + return DATA_ID_MTLL; + case "NRML": + return DATA_ID_NRML; + case "SHDD": + return DATA_ID_SHDD; + case "SKIN": + return DATA_ID_SKIN; + case "DIMD": + return DATA_ID_DIMD; + case "LIT ": + return DATA_ID_LIT; + case "ALLD": + return DATA_ID_ALLD; + case "DLLD": + return DATA_ID_DLLD; + case "CLLD": + return DATA_ID_CLLD; + case "AUXF": + return DATA_ID_AUXF; + case "WIND": + return DATA_ID_WIND; + case "WATR": + return DATA_ID_WATR; + case "DFXS": + return DATA_ID_DFXS; + case "DFXN": + return DATA_ID_DFXN; + case "MCDD": + return DATA_ID_MCDD; + case "CAUS": + return DATA_ID_CAUS; + case "BLPD": + return DATA_ID_BLPD; + case "BLPT": + return DATA_ID_BLPT; + case "FOGS": + return DATA_ID_FOGS; + case "VOLF": + return DATA_ID_VOLF; + case "VFXB": + return DATA_ID_VFXB; + case "VFXD": + return DATA_ID_VFXD; + case "REFP": + return DATA_ID_REFP; + case "RAIN": + return DATA_ID_RAIN; + case "XCH0": + return DATA_ID_XCH0; + case "XCH1": + return DATA_ID_XCH1; + } +} + +string ReadMaterialDataId(FourCC value) { + EMaterialDataId id = MapMaterialDataId(value); + return EnumToString(id); +} + +enum EMaterialFlag { + DATA_FLAG_MFTR = 0, + DATA_FLAG_MFMT = 1, + DATA_FLAG_MFSR = 2, + DATA_FLAG_MFSK = 3, + DATA_FLAG_MFVC = 4, + DATA_FLAG_MF1B = 5, + DATA_FLAG_MFAV = 6, + DATA_FLAG_MFIN = 7, + DATA_FLAG_MFCA = 8, + DATA_FLAG_MFIM = 9, + DATA_FLAG_MTSM = 10, + DATA_FLAG_MFRL = 11, + DATA_FLAG_MFOE = 12, + DATA_FLAG_MFOT = 13, + DATA_FLAG_MFCI = 14, + DATA_FLAG_MFOI = 15, + DATA_FLAG_MFVA = 16, + DATA_FLAG_MFSU = 17, + DATA_FLAG_MFBP = 18, + DATA_FLAG_MFBL = 19, + DATA_FLAG_MFLB = 20, + DATA_FLAG_MF1E = 21, + DATA_FLAG_MFC0 = 22, + DATA_FLAG_MFC1 = 23, + DATA_FLAG_MFC2 = 24, + DATA_FLAG_MFC3 = 25, + DATA_FLAG_MFC4 = 26, +}; + +EMaterialFlag MapMaterialFlag(FourCC value) { + switch (value) { + case "MFTR": + return DATA_FLAG_MFTR; + case "MFMT": + return DATA_FLAG_MFMT; + case "MFSR": + return DATA_FLAG_MFSR; + case "MFSK": + return DATA_FLAG_MFSK; + case "MFVC": + return DATA_FLAG_MFVC; + case "MF1B": + return DATA_FLAG_MF1B; + case "MFAV": + return DATA_FLAG_MFAV; + case "MFIN": + return DATA_FLAG_MFIN; + case "MFCA": + return DATA_FLAG_MFCA; + case "MFIM": + return DATA_FLAG_MFIM; + case "MTSM": + return DATA_FLAG_MTSM; + case "MFRL": + return DATA_FLAG_MFRL; + case "MFOE": + return DATA_FLAG_MFOE; + case "MFOT": + return DATA_FLAG_MFOT; + case "MFCI": + return DATA_FLAG_MFCI; + case "MFOI": + return DATA_FLAG_MFOI; + case "MFVA": + return DATA_FLAG_MFVA; + case "MFSU": + return DATA_FLAG_MFSU; + case "MFBP": + return DATA_FLAG_MFBP; + case "MFBL": + return DATA_FLAG_MFBL; + case "MFLB": + return DATA_FLAG_MFLB; + case "MF1E": + return DATA_FLAG_MF1E; + case "MFC0": + return DATA_FLAG_MFC0; + case "MFC1": + return DATA_FLAG_MFC1; + case "MFC2": + return DATA_FLAG_MFC2; + case "MFC3": + return DATA_FLAG_MFC3; + case "MFC4": + return DATA_FLAG_MFC4; + } +} + +string ReadMaterialFlag(FourCC value) { + EMaterialFlag flag = MapMaterialFlag(value); + return EnumToString(flag); +} + +#endif // _NGRAPHICSMATERIAL diff --git a/Run.bt b/Run.bt index a5b73d7..248ec17 100644 --- a/Run.bt +++ b/Run.bt @@ -23,6 +23,7 @@ if (!exists(isDKCTF)) { #include "CGuiMap.bt" #include "CLegacyStateMachine.bt" #include "CLightProbeData.bt" +#include "CMaterialInstanceResource.bt" #include "CPakFile.bt" #include "CReflectionProbeData.bt" #include "CUniverseInfo.bt" @@ -49,6 +50,9 @@ typedef struct { Assert(false, "Invalid version!"); } break; + case "MATI": + CMaterialInstanceResource materialInstance; + break; case "CBNK": CAudioSampleBank audioSampleBank; break;