Material dumping and loading stuff

This commit is contained in:
Jan
2022-08-06 10:52:52 +02:00
parent a3a01660d6
commit 5771044c08
5 changed files with 510 additions and 39 deletions

View File

@ -775,6 +775,15 @@ namespace IW3
uint16_t hashIndex;
};
enum GfxCameraRegionType
{
CAMERA_REGION_LIT = 0x0,
CAMERA_REGION_DECAL = 0x1,
CAMERA_REGION_EMISSIVE = 0x2,
CAMERA_REGION_COUNT = 0x3,
CAMERA_REGION_NONE = 0x3,
};
struct Material
{
MaterialInfo info;
@ -810,17 +819,279 @@ namespace IW3
MTL_ARG_MATERIAL_VERTEX_CONST = 0x0,
MTL_ARG_LITERAL_VERTEX_CONST = 0x1,
MTL_ARG_MATERIAL_PIXEL_SAMPLER = 0x2,
MTL_ARG_CODE_PRIM_BEGIN = 0x3,
MTL_ARG_CODE_VERTEX_CONST = 0x3,
MTL_ARG_CODE_PIXEL_SAMPLER = 0x4,
MTL_ARG_CODE_PIXEL_CONST = 0x5,
MTL_ARG_CODE_PRIM_END = 0x6,
MTL_ARG_MATERIAL_PIXEL_CONST = 0x6,
MTL_ARG_LITERAL_PIXEL_CONST = 0x7,
MLT_ARG_COUNT
};
enum MaterialConstantSource
{
CONST_SRC_CODE_MAYBE_DIRTY_PS_BEGIN = 0x0,
CONST_SRC_CODE_LIGHT_POSITION = 0x0,
CONST_SRC_CODE_LIGHT_DIFFUSE = 0x1,
CONST_SRC_CODE_LIGHT_SPOTDIR = 0x2,
CONST_SRC_CODE_LIGHT_SPOTFACTORS = 0x3,
CONST_SRC_CODE_LIGHT_ATTENUATION = 0x4,
CONST_SRC_CODE_LIGHT_FALLOFF_A = 0x5,
CONST_SRC_CODE_LIGHT_FALLOFF_B = 0x6,
CONST_SRC_CODE_LIGHT_SPOT_MATRIX0 = 0x7,
CONST_SRC_CODE_LIGHT_SPOT_MATRIX1 = 0x8,
CONST_SRC_CODE_LIGHT_SPOT_MATRIX2 = 0x9,
CONST_SRC_CODE_LIGHT_SPOT_MATRIX3 = 0xA,
CONST_SRC_CODE_LIGHT_SPOT_AABB = 0xB,
CONST_SRC_CODE_LIGHT_CONE_CONTROL1 = 0xC,
CONST_SRC_CODE_LIGHT_CONE_CONTROL2 = 0xD,
CONST_SRC_CODE_LIGHT_SPOT_COOKIE_SLIDE_CONTROL = 0xE,
CONST_SRC_CODE_SHADOW_PARMS = 0xF,
CONST_SRC_CODE_SHADOWMAP_POLYGON_OFFSET = 0x10,
CONST_SRC_CODE_RENDER_TARGET_SIZE = 0x11,
CONST_SRC_CODE_UPSCALED_TARGET_SIZE = 0x12,
CONST_SRC_CODE_DOF_EQUATION_VIEWMODEL_AND_FAR_BLUR = 0x13,
CONST_SRC_CODE_DOF_EQUATION_SCENE = 0x14,
CONST_SRC_CODE_DOF_LERP_SCALE = 0x15,
CONST_SRC_CODE_DOF_LERP_BIAS = 0x16,
CONST_SRC_CODE_DOF_ROW_DELTA = 0x17,
CONST_SRC_CODE_PARTICLE_CLOUD_COLOR = 0x18,
CONST_SRC_CODE_GAMETIME = 0x19,
CONST_SRC_CODE_MAYBE_DIRTY_PS_END = 0x1A,
CONST_SRC_CODE_ALWAYS_DIRTY_PS_BEGIN = 0x1A,
CONST_SRC_CODE_FILTER_TAP_0 = 0x1A,
CONST_SRC_CODE_FILTER_TAP_1 = 0x1B,
CONST_SRC_CODE_FILTER_TAP_2 = 0x1C,
CONST_SRC_CODE_FILTER_TAP_3 = 0x1D,
CONST_SRC_CODE_FILTER_TAP_4 = 0x1E,
CONST_SRC_CODE_FILTER_TAP_5 = 0x1F,
CONST_SRC_CODE_FILTER_TAP_6 = 0x20,
CONST_SRC_CODE_FILTER_TAP_7 = 0x21,
CONST_SRC_CODE_COLOR_MATRIX_R = 0x22,
CONST_SRC_CODE_COLOR_MATRIX_G = 0x23,
CONST_SRC_CODE_COLOR_MATRIX_B = 0x24,
CONST_SRC_CODE_ALWAYS_DIRTY_PS_END = 0x25,
CONST_SRC_CODE_NEVER_DIRTY_PS_BEGIN = 0x25,
CONST_SRC_CODE_SHADOWMAP_SWITCH_PARTITION = 0x25,
CONST_SRC_CODE_SUNSHADOWMAP_PIXEL_SIZE = 0x26,
CONST_SRC_CODE_SHADOWMAP_SCALE = 0x27,
CONST_SRC_CODE_ZNEAR = 0x28,
CONST_SRC_CODE_SUN_POSITION = 0x29,
CONST_SRC_CODE_SUN_DIFFUSE = 0x2A,
CONST_SRC_CODE_LIGHTING_LOOKUP_SCALE = 0x2B,
CONST_SRC_CODE_DEBUG_BUMPMAP = 0x2C,
CONST_SRC_CODE_DEBUG_PERFORMANCE = 0x2D,
CONST_SRC_CODE_MATERIAL_COLOR = 0x2E,
CONST_SRC_CODE_FOG = 0x2F,
CONST_SRC_CODE_FOG2 = 0x30,
CONST_SRC_CODE_FOG_COLOR = 0x31,
CONST_SRC_CODE_SUN_FOG = 0x32,
CONST_SRC_CODE_SUN_FOG_DIR = 0x33,
CONST_SRC_CODE_SUN_FOG_COLOR = 0x34,
CONST_SRC_CODE_GLOW_SETUP = 0x35,
CONST_SRC_CODE_GLOW_APPLY = 0x36,
CONST_SRC_CODE_COLOR_BIAS = 0x37,
CONST_SRC_CODE_COLOR_TINT_BASE = 0x38,
CONST_SRC_CODE_COLOR_TINT_DELTA = 0x39,
CONST_SRC_CODE_OUTDOOR_FEATHER_PARMS = 0x3A,
CONST_SRC_CODE_SKY_TRANSITION = 0x3B,
CONST_SRC_CODE_SPOT_SHADOWMAP_PIXEL_ADJUST = 0x3C,
CONST_SRC_CODE_DLIGHT_SPOT_SHADOWMAP_PIXEL_ADJUST = 0x3D,
CONST_SRC_CODE_CLIP_SPACE_LOOKUP_SCALE = 0x3E,
CONST_SRC_CODE_CLIP_SPACE_LOOKUP_OFFSET = 0x3F,
CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX = 0x40,
CONST_SRC_CODE_PARTICLE_CLOUD_VEL_WORLD = 0x41,
CONST_SRC_CODE_DEPTH_FROM_CLIP = 0x42,
CONST_SRC_CODE_CODE_MESH_ARG_0 = 0x43,
CONST_SRC_CODE_CODE_MESH_ARG_1 = 0x44,
CONST_SRC_CODE_CODE_MESH_ARG_LAST = 0x44,
CONST_SRC_CODE_GRID_LIGHTING_COORDS_AND_VIS = 0x45,
CONST_SRC_CODE_GRID_LIGHTING_SH_0 = 0x46,
CONST_SRC_CODE_GRID_LIGHTING_SH_1 = 0x47,
CONST_SRC_CODE_GRID_LIGHTING_SH_2 = 0x48,
CONST_SRC_CODE_REFLECTION_LIGHTING_SH_0 = 0x49,
CONST_SRC_CODE_REFLECTION_LIGHTING_SH_1 = 0x4A,
CONST_SRC_CODE_REFLECTION_LIGHTING_SH_2 = 0x4B,
CONST_SRC_CODE_WIND_DIRECTION = 0x4C,
CONST_SRC_CODE_MOTIONBLUR_DIRECTION_AND_MAGNITUDE = 0x4D,
CONST_SRC_CODE_COMPOSITE_FX_DISTORTION = 0x4E,
CONST_SRC_CODE_GLOW_BLOOM_SCALE = 0x4F,
CONST_SRC_CODE_COMPOSITE_FX_OVERLAY_TEXCOORD = 0x50,
CONST_SRC_CODE_COLOR_BIAS1 = 0x51,
CONST_SRC_CODE_COLOR_TINT_BASE1 = 0x52,
CONST_SRC_CODE_COLOR_TINT_DELTA1 = 0x53,
CONST_SRC_CODE_POSTFX_FADE_EFFECT = 0x54,
CONST_SRC_CODE_VIEWPORT_DIMENSIONS = 0x55,
CONST_SRC_CODE_FRAMEBUFFER_READ = 0x56,
CONST_SRC_CODE_RESIZE_PARAMS1 = 0x57,
CONST_SRC_CODE_RESIZE_PARAMS2 = 0x58,
CONST_SRC_CODE_RESIZE_PARAMS3 = 0x59,
CONST_SRC_CODE_VARIANT_WIND_SPRING_0 = 0x5A,
CONST_SRC_CODE_VARIANT_WIND_SPRING_1 = 0x5B,
CONST_SRC_CODE_VARIANT_WIND_SPRING_2 = 0x5C,
CONST_SRC_CODE_VARIANT_WIND_SPRING_3 = 0x5D,
CONST_SRC_CODE_VARIANT_WIND_SPRING_4 = 0x5E,
CONST_SRC_CODE_VARIANT_WIND_SPRING_5 = 0x5F,
CONST_SRC_CODE_VARIANT_WIND_SPRING_6 = 0x60,
CONST_SRC_CODE_VARIANT_WIND_SPRING_7 = 0x61,
CONST_SRC_CODE_VARIANT_WIND_SPRING_8 = 0x62,
CONST_SRC_CODE_VARIANT_WIND_SPRING_9 = 0x63,
CONST_SRC_CODE_VARIANT_WIND_SPRING_10 = 0x64,
CONST_SRC_CODE_VARIANT_WIND_SPRING_11 = 0x65,
CONST_SRC_CODE_VARIANT_WIND_SPRING_12 = 0x66,
CONST_SRC_CODE_VARIANT_WIND_SPRING_13 = 0x67,
CONST_SRC_CODE_VARIANT_WIND_SPRING_14 = 0x68,
CONST_SRC_CODE_VARIANT_WIND_SPRING_15 = 0x69,
CONST_SRC_CODE_CHARACTER_CHARRED_AMOUNT = 0x6A,
CONST_SRC_CODE_POSTFX_CONTROL0 = 0x6B,
CONST_SRC_CODE_POSTFX_CONTROL1 = 0x6C,
CONST_SRC_CODE_POSTFX_CONTROL2 = 0x6D,
CONST_SRC_CODE_POSTFX_CONTROL3 = 0x6E,
CONST_SRC_CODE_POSTFX_CONTROL4 = 0x6F,
CONST_SRC_CODE_POSTFX_CONTROL5 = 0x70,
CONST_SRC_CODE_POSTFX_CONTROL6 = 0x71,
CONST_SRC_CODE_POSTFX_CONTROL7 = 0x72,
CONST_SRC_CODE_POSTFX_CONTROL8 = 0x73,
CONST_SRC_CODE_POSTFX_CONTROL9 = 0x74,
CONST_SRC_CODE_POSTFX_CONTROLA = 0x75,
CONST_SRC_CODE_POSTFX_CONTROLB = 0x76,
CONST_SRC_CODE_POSTFX_CONTROLC = 0x77,
CONST_SRC_CODE_POSTFX_CONTROLD = 0x78,
CONST_SRC_CODE_POSTFX_CONTROLE = 0x79,
CONST_SRC_CODE_POSTFX_CONTROLF = 0x7A,
CONST_SRC_CODE_HDRCONTROL_0 = 0x7B,
CONST_SRC_CODE_HDRCONTROL_1 = 0x7C,
CONST_SRC_CODE_GLIGHT_POSXS = 0x7D,
CONST_SRC_CODE_GLIGHT_POSYS = 0x7E,
CONST_SRC_CODE_GLIGHT_POSZS = 0x7F,
CONST_SRC_CODE_GLIGHT_FALLOFFS = 0x80,
CONST_SRC_CODE_GLIGHT_REDS = 0x81,
CONST_SRC_CODE_GLIGHT_GREENS = 0x82,
CONST_SRC_CODE_GLIGHT_BLUES = 0x83,
CONST_SRC_CODE_DLIGHT_POSITION = 0x84,
CONST_SRC_CODE_DLIGHT_DIFFUSE = 0x85,
CONST_SRC_CODE_DLIGHT_ATTENUATION = 0x86,
CONST_SRC_CODE_DLIGHT_FALLOFF = 0x87,
CONST_SRC_CODE_DLIGHT_SPOT_MATRIX_0 = 0x88,
CONST_SRC_CODE_DLIGHT_SPOT_MATRIX_1 = 0x89,
CONST_SRC_CODE_DLIGHT_SPOT_MATRIX_2 = 0x8A,
CONST_SRC_CODE_DLIGHT_SPOT_MATRIX_3 = 0x8B,
CONST_SRC_CODE_DLIGHT_SPOT_DIR = 0x8C,
CONST_SRC_CODE_DLIGHT_SPOT_FACTORS = 0x8D,
CONST_SRC_CODE_DLIGHT_SHADOW_LOOKUP_MATRIX_0 = 0x8E,
CONST_SRC_CODE_DLIGHT_SHADOW_LOOKUP_MATRIX_1 = 0x8F,
CONST_SRC_CODE_DLIGHT_SHADOW_LOOKUP_MATRIX_2 = 0x90,
CONST_SRC_CODE_DLIGHT_SHADOW_LOOKUP_MATRIX_3 = 0x91,
CONST_SRC_CODE_CLOUD_LAYER_CONTROL0 = 0x92,
CONST_SRC_CODE_CLOUD_LAYER_CONTROL1 = 0x93,
CONST_SRC_CODE_CLOUD_LAYER_CONTROL2 = 0x94,
CONST_SRC_CODE_CLOUD_LAYER_CONTROL3 = 0x95,
CONST_SRC_CODE_CLOUD_LAYER_CONTROL4 = 0x96,
CONST_SRC_CODE_HERO_LIGHTING_R = 0x97,
CONST_SRC_CODE_HERO_LIGHTING_G = 0x98,
CONST_SRC_CODE_HERO_LIGHTING_B = 0x99,
CONST_SRC_CODE_LIGHT_HERO_SCALE = 0x9A,
CONST_SRC_CODE_CINEMATIC_BLUR_BOX = 0x9B,
CONST_SRC_CODE_CINEMATIC_BLUR_BOX2 = 0x9C,
CONST_SRC_CODE_ADSZSCALE = 0x9D,
CONST_SRC_CODE_UI3D_UV_SETUP_0 = 0x9E,
CONST_SRC_CODE_UI3D_UV_SETUP_1 = 0x9F,
CONST_SRC_CODE_UI3D_UV_SETUP_2 = 0xA0,
CONST_SRC_CODE_UI3D_UV_SETUP_3 = 0xA1,
CONST_SRC_CODE_UI3D_UV_SETUP_4 = 0xA2,
CONST_SRC_CODE_UI3D_UV_SETUP_5 = 0xA3,
CONST_SRC_CODE_CHARACTER_DISSOLVE_COLOR = 0xA4,
CONST_SRC_CODE_CAMERA_LOOK = 0xA5,
CONST_SRC_CODE_CAMERA_UP = 0xA6,
CONST_SRC_CODE_CAMERA_SIDE = 0xA7,
CONST_SRC_CODE_RIMINTENSITY = 0xA8,
CONST_SRC_CODE_GENERIC_PARAM0 = 0xA9,
CONST_SRC_CODE_GENERIC_PARAM1 = 0xAA,
CONST_SRC_CODE_GENERIC_PARAM2 = 0xAB,
CONST_SRC_CODE_GENERIC_PARAM3 = 0xAC,
CONST_SRC_CODE_GENERIC_PARAM4 = 0xAD,
CONST_SRC_CODE_GENERIC_PARAM5 = 0xAE,
CONST_SRC_CODE_GENERIC_PARAM6 = 0xAF,
CONST_SRC_CODE_GENERIC_PARAM7 = 0xB0,
CONST_SRC_CODE_GENERIC_EYEOFFSET = 0xB1,
CONST_SRC_CODE_GENERIC_QUADINTENSITY = 0xB2,
CONST_SRC_CODE_WEAPON_PARAM0 = 0xB3,
CONST_SRC_CODE_WEAPON_PARAM1 = 0xB4,
CONST_SRC_CODE_WEAPON_PARAM2 = 0xB5,
CONST_SRC_CODE_WEAPON_PARAM3 = 0xB6,
CONST_SRC_CODE_WEAPON_PARAM4 = 0xB7,
CONST_SRC_CODE_WEAPON_PARAM5 = 0xB8,
CONST_SRC_CODE_WEAPON_PARAM6 = 0xB9,
CONST_SRC_CODE_WEAPON_PARAM7 = 0xBA,
CONST_SRC_CODE_WEAPON_PARAM8 = 0xBB,
CONST_SRC_CODE_WEAPON_PARAM9 = 0xBC,
CONST_SRC_CODE_QRCODE_0 = 0xBD,
CONST_SRC_CODE_QRCODE_1 = 0xBE,
CONST_SRC_CODE_QRCODE_2 = 0xBF,
CONST_SRC_CODE_QRCODE_3 = 0xC0,
CONST_SRC_CODE_QRCODE_4 = 0xC1,
CONST_SRC_CODE_QRCODE_5 = 0xC2,
CONST_SRC_CODE_QRCODE_6 = 0xC3,
CONST_SRC_CODE_QRCODE_7 = 0xC4,
CONST_SRC_CODE_QRCODE_8 = 0xC5,
CONST_SRC_CODE_QRCODE_9 = 0xC6,
CONST_SRC_CODE_QRCODE_10 = 0xC7,
CONST_SRC_CODE_QRCODE_11 = 0xC8,
CONST_SRC_CODE_EYEOFFSET = 0xC9,
CONST_SRC_CODE_SKY_COLOR_MULTIPLIER = 0xCA,
CONST_SRC_CODE_EXTRA_CAM_PARAM = 0xCB,
CONST_SRC_CODE_EMBLEM_LUT_SELECTOR = 0xCC,
CONST_SRC_CODE_DEBUG_COLOR_OVERRIDE = 0xCD,
CONST_SRC_CODE_DEBUG_ALPHA_OVERRIDE = 0xCE,
CONST_SRC_CODE_DEBUG_NORMAL_OVERRIDE = 0xCF,
CONST_SRC_CODE_DEBUG_SPECULAR_OVERRIDE = 0xD0,
CONST_SRC_CODE_DEBUG_GLOSS_OVERRIDE = 0xD1,
CONST_SRC_CODE_DEBUG_OCCLUSION_OVERRIDE = 0xD2,
CONST_SRC_CODE_NEVER_DIRTY_PS_END = 0xD3,
CONST_SRC_CODE_COUNT_FLOAT4 = 0xD3,
CONST_SRC_FIRST_CODE_MATRIX = 0xD3,
CONST_SRC_CODE_WORLD_MATRIX = 0xD3,
CONST_SRC_CODE_INVERSE_WORLD_MATRIX = 0xD4,
CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX = 0xD5,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX = 0xD6,
CONST_SRC_CODE_VIEW_MATRIX = 0xD7,
CONST_SRC_CODE_INVERSE_VIEW_MATRIX = 0xD8,
CONST_SRC_CODE_TRANSPOSE_VIEW_MATRIX = 0xD9,
CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_MATRIX = 0xDA,
CONST_SRC_CODE_PROJECTION_MATRIX = 0xDB,
CONST_SRC_CODE_INVERSE_PROJECTION_MATRIX = 0xDC,
CONST_SRC_CODE_TRANSPOSE_PROJECTION_MATRIX = 0xDD,
CONST_SRC_CODE_INVERSE_TRANSPOSE_PROJECTION_MATRIX = 0xDE,
CONST_SRC_CODE_WORLD_VIEW_MATRIX = 0xDF,
CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX = 0xE0,
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX = 0xE1,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX = 0xE2,
CONST_SRC_CODE_VIEW_PROJECTION_MATRIX = 0xE3,
CONST_SRC_CODE_INVERSE_VIEW_PROJECTION_MATRIX = 0xE4,
CONST_SRC_CODE_TRANSPOSE_VIEW_PROJECTION_MATRIX = 0xE5,
CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_PROJECTION_MATRIX = 0xE6,
CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX = 0xE7,
CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX = 0xE8,
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX = 0xE9,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX = 0xEA,
CONST_SRC_CODE_SHADOW_LOOKUP_MATRIX = 0xEB,
CONST_SRC_CODE_INVERSE_SHADOW_LOOKUP_MATRIX = 0xEC,
CONST_SRC_CODE_TRANSPOSE_SHADOW_LOOKUP_MATRIX = 0xED,
CONST_SRC_CODE_INVERSE_TRANSPOSE_SHADOW_LOOKUP_MATRIX = 0xEE,
CONST_SRC_CODE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0xEF,
CONST_SRC_CODE_INVERSE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0xF0,
CONST_SRC_CODE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0xF1,
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0xF2,
CONST_SRC_TOTAL_COUNT = 0xF3,
CONST_SRC_NONE = 0xF4,
};
struct MaterialShaderArgument
{
uint16_t type;