Files
2025-12-07 10:37:47 -08:00

545 lines
13 KiB
Plaintext

#ifndef _NGRAPHICSMATERIAL
#define _NGRAPHICSMATERIAL
#include "Common.bt"
// NMaterialInstance::ETrait
enum <uint32> ETrait {
TRAIT_RFBC = 1,
TRAIT_RFBD = 2,
TRAIT_RFDS = 3,
TRAIT_RLTG = 4,
TRAIT_BKLT = 5,
};
ETrait MapTrait(FourCC value) {
switch (value) {
case "RFBC":
return TRAIT_RFBC;
case "RFBD":
return TRAIT_RFBD;
case "RFDS":
return TRAIT_RFDS;
case "RLTG":
return TRAIT_RLTG;
case "BKLT":
return TRAIT_BKLT;
}
}
string ReadTrait(FourCC value) {
ETrait id = MapTrait(value);
return EnumToString(id);
}
enum <uint32> EMaterialDataId {
DATA_ID_DEBUG = 0,
// TXTR data IDs
DATA_ID_CBUF = 1,
DATA_ID_ZBUF = 2, // depth_map
DATA_ID_GBUF = 3,
DATA_ID_GFLG = 4,
DATA_ID_OPCT = 5, // used in CParticleSceneNode::BuildParticleMaterialInstance
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, // used in CParticleSceneNode::BuildParticleMaterialInstance
DATA_ID_OTMP = 19, // CParticleDescription::GetThresholdTexture
DATA_ID_CGMP = 20, // CParticleDescription::GetColorGradientTexture
DATA_ID_OGMP = 21, // CParticleDescription::GetOpacityGradientTexture
DATA_ID_VAND = 22,
DATA_ID_BLAT = 23,
DATA_ID_BCLR = 24,
DATA_ID_METL = 25,
DATA_ID_TCH0 = 26, // bloom_texture, blur_texture, NMaterialClearRect depth_texture_values
DATA_ID_TCH1 = 27, // bloom_texture2, NMaterialGuiMap color_blind_texture, NMaterialTonemap color_grade_lut
DATA_ID_TCH2 = 28, // NMaterialToneMap color_accessibility_lut
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, // CBasedLightingAtlasMaterialLookupData
DATA_ID_BLCM = 44,
DATA_ID_INDP = 45,
DATA_ID_PVLO = 46, // used in CParticleSceneNode::BuildParticleMaterialInstance
DATA_ID_PSXT = 47, // used in CParticleSceneNode::BuildParticleMaterialInstance
DATA_ID_PTAI = 48, // used in CParticleSceneNode::BuildParticleMaterialInstance
DATA_ID_PCMD = 49, // used in CParticleSceneNode::BuildParticleMaterialInstanceCustom
DATA_ID_BSAO = 50,
// blur_sample_param uses CCH0-6
// NMaterialClearRect clear_color CCH0-1
DATA_ID_CCH0 = 51, // bloom_texture_size_params, NMaterialSimpleColor color_sample, NMaterialDataView_Model color_view, NMaterialReflectionProbe params
DATA_ID_CCH1 = 52, // bloom_bright_pass_params, NMaterialGuiMap color, NMaterialLightShafts color_modulate, NMaterialSimpleTexture color_sample, NRenderThermalVisor::NMaterialThermalBlendPassHot::get_hot_params_data_id
DATA_ID_CCH2 = 53, // bloom_color_mod, NMaterialClearRect clear_bounds
DATA_ID_CCH3 = 54,
DATA_ID_CCH4 = 55, // NMaterialTonemap color_grade_params
DATA_ID_CCH5 = 56, // NMaterialTonemap::get_heatmap_params_data_id0
DATA_ID_CCH6 = 57, // NMaterialTonemap::get_heatmap_params_data_id1
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, // shader ID?
DATA_ID_GBFF = 66,
DATA_ID_PMOD = 67, // particle_orientation
DATA_ID_PFLG = 68, // used in CParticleSceneNode::BuildParticleMaterialInstance
DATA_ID_BLPI = 69,
DATA_ID_ICH0 = 70, // NMaterialTonemap flags, NMaterialClusteredLightPRePass flags_material
DATA_ID_ICH1 = 71,
DATA_ID_ICH2 = 72,
// INT4 data IDs
DATA_ID_AUVI = 73,
DATA_ID_ECH0 = 74, // NMaterialLumaUpdate params
// 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, // related to CParticleDescription::GetThresholdTexture
DATA_ID_PZSO = 83, // used in CParticleSceneNode::BuildParticleMaterialInstance
DATA_ID_RCH0 = 84, // NMaterialClearRect clear_depth, NMaterialSimpleTexture mip_level
DATA_ID_RCH1 = 85,
DATA_ID_RCH2 = 86,
// MAT4 data IDs
DATA_ID_PXFM = 87, // used in CParticleSceneNode::BuildParticleMaterialInstance
DATA_ID_MCH0 = 88, // NMaterialNV12 nv12_color_transform
// 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, // NMaterialLightPrePass light
DATA_ID_ALLD = 96, // ambient_source
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, // cascaded_depth
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, // blend_params, NMaterialComputeTest compute_test_input_buffer
DATA_ID_XCH1 = 115, // NMaterialLumaUpdate lightmap_source, NMaterialComputeTest compute_test_output_buffer
DATA_ID_BLND = 116, //Maybe move this idk
};
// 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 "BLND":
return DATA_ID_BLND;
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;
}
return -1;
}
string ReadMaterialDataId(FourCC value) {
EMaterialDataId id = MapMaterialDataId(value);
return EnumToString(id);
}
enum<uint32> 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