mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-05-09 14:04:57 +00:00
Dump IW4 techset code constant argument mappings
This commit is contained in:
parent
7760e1579c
commit
ef936eba57
@ -917,6 +917,220 @@ namespace IW4
|
||||
MaterialPixelShaderProgram prog;
|
||||
};
|
||||
|
||||
enum MaterialTextureSource
|
||||
{
|
||||
TEXTURE_SRC_CODE_BLACK = 0x0,
|
||||
TEXTURE_SRC_CODE_WHITE = 0x1,
|
||||
TEXTURE_SRC_CODE_IDENTITY_NORMAL_MAP = 0x2,
|
||||
TEXTURE_SRC_CODE_MODEL_LIGHTING = 0x3,
|
||||
TEXTURE_SRC_CODE_LIGHTMAP_PRIMARY = 0x4,
|
||||
TEXTURE_SRC_CODE_LIGHTMAP_SECONDARY = 0x5,
|
||||
TEXTURE_SRC_CODE_SHADOWMAP_SUN = 0x6,
|
||||
TEXTURE_SRC_CODE_SHADOWMAP_SPOT = 0x7,
|
||||
TEXTURE_SRC_CODE_FEEDBACK = 0x8,
|
||||
TEXTURE_SRC_CODE_RESOLVED_POST_SUN = 0x9,
|
||||
TEXTURE_SRC_CODE_RESOLVED_SCENE = 0xA,
|
||||
TEXTURE_SRC_CODE_POST_EFFECT_0 = 0xB,
|
||||
TEXTURE_SRC_CODE_POST_EFFECT_1 = 0xC,
|
||||
TEXTURE_SRC_CODE_LIGHT_ATTENUATION = 0xD,
|
||||
TEXTURE_SRC_CODE_OUTDOOR = 0xE,
|
||||
TEXTURE_SRC_CODE_FLOATZ = 0xF,
|
||||
TEXTURE_SRC_CODE_PROCESSED_FLOATZ = 0x10,
|
||||
TEXTURE_SRC_CODE_RAW_FLOATZ = 0x11,
|
||||
TEXTURE_SRC_CODE_HALF_PARTICLES = 0x12,
|
||||
TEXTURE_SRC_CODE_HALF_PARTICLES_Z = 0x13,
|
||||
TEXTURE_SRC_CODE_CASE_TEXTURE = 0x14,
|
||||
TEXTURE_SRC_CODE_CINEMATIC_Y = 0x15,
|
||||
TEXTURE_SRC_CODE_CINEMATIC_CR = 0x16,
|
||||
TEXTURE_SRC_CODE_CINEMATIC_CB = 0x17,
|
||||
TEXTURE_SRC_CODE_CINEMATIC_A = 0x18,
|
||||
TEXTURE_SRC_CODE_REFLECTION_PROBE = 0x19,
|
||||
TEXTURE_SRC_CODE_ALTERNATE_SCENE = 0x1A,
|
||||
|
||||
TEXTURE_SRC_CODE_COUNT
|
||||
};
|
||||
|
||||
struct CodeSamplerSource
|
||||
{
|
||||
const char* name;
|
||||
MaterialTextureSource source;
|
||||
CodeSamplerSource* subtable;
|
||||
int arrayCount;
|
||||
int arrayStride;
|
||||
};
|
||||
|
||||
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_SPECULAR = 0x2,
|
||||
CONST_SRC_CODE_LIGHT_SPOTDIR = 0x3,
|
||||
CONST_SRC_CODE_LIGHT_SPOTFACTORS = 0x4,
|
||||
CONST_SRC_CODE_LIGHT_FALLOFF_PLACEMENT = 0x5,
|
||||
CONST_SRC_CODE_PARTICLE_CLOUD_COLOR = 0x6,
|
||||
CONST_SRC_CODE_GAMETIME = 0x7,
|
||||
|
||||
CONST_SRC_CODE_MAYBE_DIRTY_PS_END = 0x8,
|
||||
|
||||
CONST_SRC_CODE_ALWAYS_DIRTY_PS_BEGIN = 0x8,
|
||||
|
||||
CONST_SRC_CODE_PIXEL_COST_FRACS = 0x8,
|
||||
CONST_SRC_CODE_PIXEL_COST_DECODE = 0x9,
|
||||
CONST_SRC_CODE_FILTER_TAP_0 = 0xA,
|
||||
CONST_SRC_CODE_FILTER_TAP_1 = 0xB,
|
||||
CONST_SRC_CODE_FILTER_TAP_2 = 0xC,
|
||||
CONST_SRC_CODE_FILTER_TAP_3 = 0xD,
|
||||
CONST_SRC_CODE_FILTER_TAP_4 = 0xE,
|
||||
CONST_SRC_CODE_FILTER_TAP_5 = 0xF,
|
||||
CONST_SRC_CODE_FILTER_TAP_6 = 0x10,
|
||||
CONST_SRC_CODE_FILTER_TAP_7 = 0x11,
|
||||
CONST_SRC_CODE_COLOR_MATRIX_R = 0x12,
|
||||
CONST_SRC_CODE_COLOR_MATRIX_G = 0x13,
|
||||
CONST_SRC_CODE_COLOR_MATRIX_B = 0x14,
|
||||
CONST_SRC_CODE_SHADOWMAP_POLYGON_OFFSET = 0x15,
|
||||
CONST_SRC_CODE_RENDER_TARGET_SIZE = 0x16,
|
||||
|
||||
CONST_SRC_CODE_ALWAYS_DIRTY_PS_END = 0x17,
|
||||
|
||||
CONST_SRC_CODE_FIXED_PS_BEGIN = 0x17,
|
||||
|
||||
CONST_SRC_CODE_DOF_EQUATION_VIEWMODEL_AND_FAR_BLUR = 0x17,
|
||||
CONST_SRC_CODE_DOF_EQUATION_SCENE = 0x18,
|
||||
CONST_SRC_CODE_DOF_LERP_SCALE = 0x19,
|
||||
CONST_SRC_CODE_DOF_LERP_BIAS = 0x1A,
|
||||
CONST_SRC_CODE_DOF_ROW_DELTA = 0x1B,
|
||||
CONST_SRC_CODE_MOTION_MATRIX_X = 0x1C,
|
||||
CONST_SRC_CODE_MOTION_MATRIX_Y = 0x1D,
|
||||
CONST_SRC_CODE_MOTION_MATRIX_W = 0x1E,
|
||||
CONST_SRC_CODE_SHADOWMAP_SWITCH_PARTITION = 0x1F,
|
||||
CONST_SRC_CODE_SHADOWMAP_SCALE = 0x20,
|
||||
CONST_SRC_CODE_ZNEAR = 0x21,
|
||||
CONST_SRC_CODE_LIGHTING_LOOKUP_SCALE = 0x22,
|
||||
CONST_SRC_CODE_DEBUG_BUMPMAP = 0x23,
|
||||
CONST_SRC_CODE_MATERIAL_COLOR = 0x24,
|
||||
CONST_SRC_CODE_FOG = 0x25,
|
||||
CONST_SRC_CODE_FOG_COLOR_LINEAR = 0x26,
|
||||
CONST_SRC_CODE_FOG_COLOR_GAMMA = 0x27,
|
||||
CONST_SRC_CODE_FOG_SUN_CONSTS = 0x28,
|
||||
CONST_SRC_CODE_FOG_SUN_COLOR_LINEAR = 0x29,
|
||||
CONST_SRC_CODE_FOG_SUN_COLOR_GAMMA = 0x2A,
|
||||
CONST_SRC_CODE_FOG_SUN_DIR = 0x2B,
|
||||
CONST_SRC_CODE_GLOW_SETUP = 0x2C,
|
||||
CONST_SRC_CODE_GLOW_APPLY = 0x2D,
|
||||
CONST_SRC_CODE_COLOR_BIAS = 0x2E,
|
||||
CONST_SRC_CODE_COLOR_TINT_BASE = 0x2F,
|
||||
CONST_SRC_CODE_COLOR_TINT_DELTA = 0x30,
|
||||
CONST_SRC_CODE_COLOR_TINT_QUADRATIC_DELTA = 0x31,
|
||||
CONST_SRC_CODE_OUTDOOR_FEATHER_PARMS = 0x32,
|
||||
CONST_SRC_CODE_ENVMAP_PARMS = 0x33,
|
||||
CONST_SRC_CODE_SUN_SHADOWMAP_PIXEL_ADJUST = 0x34,
|
||||
CONST_SRC_CODE_SPOT_SHADOWMAP_PIXEL_ADJUST = 0x35,
|
||||
CONST_SRC_CODE_COMPOSITE_FX_DISTORTION = 0x36,
|
||||
CONST_SRC_CODE_POSTFX_FADE_EFFECT = 0x37,
|
||||
CONST_SRC_CODE_VIEWPORT_DIMENSIONS = 0x38,
|
||||
CONST_SRC_CODE_FRAMEBUFFER_READ = 0x39,
|
||||
|
||||
CONST_SRC_CODE_FIXED_PS_END = 0x3A,
|
||||
|
||||
CONST_SRC_CODE_NON_PS_BEGIN = 0x3A,
|
||||
|
||||
CONST_SRC_CODE_BASE_LIGHTING_COORDS = 0x3A,
|
||||
CONST_SRC_CODE_LIGHT_PROBE_AMBIENT = 0x3B,
|
||||
CONST_SRC_CODE_NEARPLANE_ORG = 0x3C,
|
||||
CONST_SRC_CODE_NEARPLANE_DX = 0x3D,
|
||||
CONST_SRC_CODE_NEARPLANE_DY = 0x3E,
|
||||
CONST_SRC_CODE_CLIP_SPACE_LOOKUP_SCALE = 0x3F,
|
||||
CONST_SRC_CODE_CLIP_SPACE_LOOKUP_OFFSET = 0x40,
|
||||
CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX0 = 0x41,
|
||||
CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX1 = 0x42,
|
||||
CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX2 = 0x43,
|
||||
CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR0 = 0x44,
|
||||
CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR1 = 0x45,
|
||||
CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR2 = 0x46,
|
||||
CONST_SRC_CODE_PARTICLE_FOUNTAIN_PARM0 = 0x47,
|
||||
CONST_SRC_CODE_PARTICLE_FOUNTAIN_PARM1 = 0x48,
|
||||
CONST_SRC_CODE_DEPTH_FROM_CLIP = 0x49,
|
||||
CONST_SRC_CODE_CODE_MESH_ARG_0 = 0x4A,
|
||||
CONST_SRC_CODE_CODE_MESH_ARG_1 = 0x4B,
|
||||
|
||||
CONST_SRC_CODE_CODE_MESH_ARG_LAST = 0x4B,
|
||||
CONST_SRC_CODE_NON_PS_END = 0x4C,
|
||||
CONST_SRC_CODE_COUNT_FLOAT4 = 0x4C,
|
||||
|
||||
CONST_SRC_FIRST_CODE_MATRIX = 0x4C,
|
||||
|
||||
CONST_SRC_CODE_VIEW_MATRIX = 0x4C,
|
||||
CONST_SRC_CODE_INVERSE_VIEW_MATRIX = 0x4D,
|
||||
CONST_SRC_CODE_TRANSPOSE_VIEW_MATRIX = 0x4E,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_MATRIX = 0x4F,
|
||||
CONST_SRC_CODE_PROJECTION_MATRIX = 0x50,
|
||||
CONST_SRC_CODE_INVERSE_PROJECTION_MATRIX = 0x51,
|
||||
CONST_SRC_CODE_TRANSPOSE_PROJECTION_MATRIX = 0x52,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_PROJECTION_MATRIX = 0x53,
|
||||
CONST_SRC_CODE_VIEW_PROJECTION_MATRIX = 0x54,
|
||||
CONST_SRC_CODE_INVERSE_VIEW_PROJECTION_MATRIX = 0x55,
|
||||
CONST_SRC_CODE_TRANSPOSE_VIEW_PROJECTION_MATRIX = 0x56,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_PROJECTION_MATRIX = 0x57,
|
||||
CONST_SRC_CODE_SHADOW_LOOKUP_MATRIX = 0x58,
|
||||
CONST_SRC_CODE_INVERSE_SHADOW_LOOKUP_MATRIX = 0x59,
|
||||
CONST_SRC_CODE_TRANSPOSE_SHADOW_LOOKUP_MATRIX = 0x5A,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_SHADOW_LOOKUP_MATRIX = 0x5B,
|
||||
CONST_SRC_CODE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0x5C,
|
||||
CONST_SRC_CODE_INVERSE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0x5D,
|
||||
CONST_SRC_CODE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0x5E,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX = 0x5F,
|
||||
CONST_SRC_CODE_WORLD_MATRIX0 = 0x60,
|
||||
CONST_SRC_CODE_INVERSE_WORLD_MATRIX0 = 0x61,
|
||||
CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX0 = 0x62,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX0 = 0x63,
|
||||
CONST_SRC_CODE_WORLD_VIEW_MATRIX0 = 0x64,
|
||||
CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX0 = 0x65,
|
||||
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX0 = 0x66,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX0 = 0x67,
|
||||
CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX0 = 0x68,
|
||||
CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX0 = 0x69,
|
||||
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX0 = 0x6A,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX0 = 0x6B,
|
||||
CONST_SRC_CODE_WORLD_MATRIX1 = 0x6C,
|
||||
CONST_SRC_CODE_INVERSE_WORLD_MATRIX1 = 0x6D,
|
||||
CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX1 = 0x6E,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX1 = 0x6F,
|
||||
CONST_SRC_CODE_WORLD_VIEW_MATRIX1 = 0x70,
|
||||
CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX1 = 0x71,
|
||||
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX1 = 0x72,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX1 = 0x73,
|
||||
CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX1 = 0x74,
|
||||
CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX1 = 0x75,
|
||||
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX1 = 0x76,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX1 = 0x77,
|
||||
CONST_SRC_CODE_WORLD_MATRIX2 = 0x78,
|
||||
CONST_SRC_CODE_INVERSE_WORLD_MATRIX2 = 0x79,
|
||||
CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX2 = 0x7A,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX2 = 0x7B,
|
||||
CONST_SRC_CODE_WORLD_VIEW_MATRIX2 = 0x7C,
|
||||
CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX2 = 0x7D,
|
||||
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX2 = 0x7E,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX2 = 0x7F,
|
||||
CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX2 = 0x80,
|
||||
CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX2 = 0x81,
|
||||
CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2 = 0x82,
|
||||
CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2 = 0x83,
|
||||
|
||||
CONST_SRC_TOTAL_COUNT,
|
||||
CONST_SRC_NONE
|
||||
};
|
||||
|
||||
struct CodeConstantSource
|
||||
{
|
||||
const char* name;
|
||||
unsigned char source;
|
||||
CodeConstantSource* subtable;
|
||||
int arrayCount;
|
||||
int arrayStride;
|
||||
};
|
||||
|
||||
struct MaterialArgumentCodeConst
|
||||
{
|
||||
uint16_t index;
|
||||
|
@ -59,4 +59,219 @@ namespace IW4
|
||||
};
|
||||
|
||||
static_assert(std::extent_v<decltype(techniqueTypeNames)> == TECHNIQUE_COUNT);
|
||||
}
|
||||
|
||||
inline CodeSamplerSource s_lightmapSamplers[]
|
||||
{
|
||||
{"primary", TEXTURE_SRC_CODE_LIGHTMAP_PRIMARY, nullptr, 0, 0},
|
||||
{"secondary", TEXTURE_SRC_CODE_LIGHTMAP_SECONDARY, nullptr, 0, 0},
|
||||
{}
|
||||
};
|
||||
|
||||
inline CodeSamplerSource s_lightSamplers[]
|
||||
{
|
||||
{"attenuation", TEXTURE_SRC_CODE_LIGHT_ATTENUATION, nullptr, 0, 0},
|
||||
{}
|
||||
};
|
||||
|
||||
inline CodeSamplerSource s_codeSamplers[]
|
||||
{
|
||||
{"white", TEXTURE_SRC_CODE_WHITE, nullptr, 0, 0},
|
||||
{"black", TEXTURE_SRC_CODE_BLACK, nullptr, 0, 0},
|
||||
{"identityNormalMap", TEXTURE_SRC_CODE_IDENTITY_NORMAL_MAP, nullptr, 0, 0},
|
||||
{"lightmap", TEXTURE_SRC_CODE_LIGHTMAP_PRIMARY, s_lightmapSamplers, 0, 0},
|
||||
{"outdoor", TEXTURE_SRC_CODE_OUTDOOR, nullptr, 0, 0},
|
||||
{"shadowmapSun", TEXTURE_SRC_CODE_SHADOWMAP_SUN, nullptr, 0, 0},
|
||||
{"shadowmapSpot", TEXTURE_SRC_CODE_SHADOWMAP_SPOT, nullptr, 0, 0},
|
||||
{"feedback", TEXTURE_SRC_CODE_FEEDBACK, nullptr, 0, 0},
|
||||
{"resolvedPostSun", TEXTURE_SRC_CODE_RESOLVED_POST_SUN, nullptr, 0, 0},
|
||||
{"resolvedScene", TEXTURE_SRC_CODE_RESOLVED_SCENE, nullptr, 0, 0},
|
||||
{"postEffect0", TEXTURE_SRC_CODE_POST_EFFECT_0, nullptr, 0, 0},
|
||||
{"postEffect1", TEXTURE_SRC_CODE_POST_EFFECT_1, nullptr, 0, 0},
|
||||
{"light", TEXTURE_SRC_CODE_LIGHT_ATTENUATION, s_lightSamplers, 0, 0},
|
||||
{"floatZ", TEXTURE_SRC_CODE_FLOATZ, nullptr, 0, 0},
|
||||
{"processedFloatZ", TEXTURE_SRC_CODE_PROCESSED_FLOATZ, nullptr, 0, 0},
|
||||
{"rawFloatZ", TEXTURE_SRC_CODE_RAW_FLOATZ, nullptr, 0, 0},
|
||||
{"halfParticleColorSampler", TEXTURE_SRC_CODE_HALF_PARTICLES, nullptr, 0, 0},
|
||||
{"halfParticleDepthSampler", TEXTURE_SRC_CODE_HALF_PARTICLES_Z, nullptr, 0, 0},
|
||||
{"alternateScene", TEXTURE_SRC_CODE_ALTERNATE_SCENE, nullptr, 0, 0},
|
||||
{}
|
||||
};
|
||||
|
||||
inline CodeSamplerSource s_defaultCodeSamplers[]
|
||||
{
|
||||
{"shadowmapSamplerSun", TEXTURE_SRC_CODE_SHADOWMAP_SUN, nullptr, 0, 0},
|
||||
{"shadowmapSamplerSpot", TEXTURE_SRC_CODE_SHADOWMAP_SPOT, nullptr, 0, 0},
|
||||
{"feedbackSampler", TEXTURE_SRC_CODE_FEEDBACK, nullptr, 0, 0},
|
||||
{"floatZSampler", TEXTURE_SRC_CODE_FLOATZ, nullptr, 0, 0},
|
||||
{"processedFloatZSampler", TEXTURE_SRC_CODE_PROCESSED_FLOATZ, nullptr, 0, 0},
|
||||
{"rawFloatZSampler", TEXTURE_SRC_CODE_RAW_FLOATZ, nullptr, 0, 0},
|
||||
{"halfParticleColorSampler", TEXTURE_SRC_CODE_HALF_PARTICLES, nullptr, 0, 0},
|
||||
{"halfParticleDepthSampler", TEXTURE_SRC_CODE_HALF_PARTICLES_Z, nullptr, 0, 0},
|
||||
{"attenuationSampler", TEXTURE_SRC_CODE_LIGHT_ATTENUATION, nullptr, 0, 0},
|
||||
{"lightmapSamplerPrimary", TEXTURE_SRC_CODE_LIGHTMAP_PRIMARY, nullptr, 0, 0},
|
||||
{"lightmapSamplerSecondary", TEXTURE_SRC_CODE_LIGHTMAP_SECONDARY, nullptr, 0, 0},
|
||||
{"modelLightingSampler", TEXTURE_SRC_CODE_MODEL_LIGHTING, nullptr, 0, 0},
|
||||
{"cinematicYSampler", TEXTURE_SRC_CODE_CINEMATIC_Y, nullptr, 0, 0},
|
||||
{"cinematicCrSampler", TEXTURE_SRC_CODE_CINEMATIC_CR, nullptr, 0, 0},
|
||||
{"cinematicCbSampler", TEXTURE_SRC_CODE_CINEMATIC_CB, nullptr, 0, 0},
|
||||
{"cinematicASampler", TEXTURE_SRC_CODE_CINEMATIC_A, nullptr, 0, 0},
|
||||
{"reflectionProbeSampler", TEXTURE_SRC_CODE_REFLECTION_PROBE, nullptr, 0, 0},
|
||||
{"alternateSceneSampler", TEXTURE_SRC_CODE_ALTERNATE_SCENE, nullptr, 0, 0},
|
||||
{}
|
||||
};
|
||||
|
||||
inline CodeConstantSource s_sunConsts[]
|
||||
{
|
||||
{"position", CONST_SRC_CODE_LIGHT_POSITION, nullptr, 0, 0},
|
||||
{"diffuse", CONST_SRC_CODE_LIGHT_DIFFUSE, nullptr, 0, 0},
|
||||
{"specular", CONST_SRC_CODE_LIGHT_SPECULAR, nullptr, 0, 0},
|
||||
{"spotDir", CONST_SRC_CODE_LIGHT_SPOTDIR, nullptr, 0, 0},
|
||||
{"spotFactors", CONST_SRC_CODE_LIGHT_SPOTFACTORS, nullptr, 0, 0},
|
||||
{"falloffPlacement", CONST_SRC_CODE_LIGHT_FALLOFF_PLACEMENT, nullptr, 0, 0},
|
||||
{}
|
||||
};
|
||||
|
||||
inline CodeConstantSource s_nearPlaneConsts[]
|
||||
{
|
||||
{"org", CONST_SRC_CODE_NEARPLANE_ORG, nullptr, 0, 0},
|
||||
{"dx", CONST_SRC_CODE_NEARPLANE_DX, nullptr, 0, 0},
|
||||
{"dy", CONST_SRC_CODE_NEARPLANE_DY, nullptr, 0, 0},
|
||||
{}
|
||||
};
|
||||
|
||||
inline CodeConstantSource s_codeConsts[]
|
||||
{
|
||||
{"nearPlane", CONST_SRC_NONE, s_nearPlaneConsts, 0, 0},
|
||||
{"light", CONST_SRC_NONE, s_sunConsts, 0, 0},
|
||||
{"baseLightingCoords", CONST_SRC_CODE_BASE_LIGHTING_COORDS, nullptr, 0, 0},
|
||||
{"lightprobeAmbient", CONST_SRC_CODE_LIGHT_PROBE_AMBIENT, nullptr, 0, 0},
|
||||
{"fullscreenDistortion", CONST_SRC_CODE_COMPOSITE_FX_DISTORTION, nullptr, 0, 0},
|
||||
{"fadeEffect", CONST_SRC_CODE_POSTFX_FADE_EFFECT, nullptr, 0, 0},
|
||||
{"lightingLookupScale", CONST_SRC_CODE_LIGHTING_LOOKUP_SCALE, nullptr, 0, 0},
|
||||
{"debugBumpmap", CONST_SRC_CODE_DEBUG_BUMPMAP, nullptr, 0, 0},
|
||||
{"pixelCostFracs", CONST_SRC_CODE_PIXEL_COST_FRACS, nullptr, 0, 0},
|
||||
{"pixelCostDecode", CONST_SRC_CODE_PIXEL_COST_DECODE, nullptr, 0, 0},
|
||||
{"materialColor", CONST_SRC_CODE_MATERIAL_COLOR, nullptr, 0, 0},
|
||||
{"fogConsts", CONST_SRC_CODE_FOG, nullptr, 0, 0},
|
||||
{"fogColorLinear", CONST_SRC_CODE_FOG_COLOR_LINEAR, nullptr, 0, 0},
|
||||
{"fogColorGamma", CONST_SRC_CODE_FOG_COLOR_GAMMA, nullptr, 0, 0},
|
||||
{"fogSunConsts", CONST_SRC_CODE_FOG_SUN_CONSTS, nullptr, 0, 0},
|
||||
{"fogSunColorLinear", CONST_SRC_CODE_FOG_SUN_COLOR_LINEAR, nullptr, 0, 0},
|
||||
{"fogSunColorGamma", CONST_SRC_CODE_FOG_SUN_COLOR_GAMMA, nullptr, 0, 0},
|
||||
{"fogSunDir", CONST_SRC_CODE_FOG_SUN_DIR, nullptr, 0, 0},
|
||||
{"glowSetup", CONST_SRC_CODE_GLOW_SETUP, nullptr, 0, 0},
|
||||
{"glowApply", CONST_SRC_CODE_GLOW_APPLY, nullptr, 0, 0},
|
||||
{"filterTap", CONST_SRC_CODE_FILTER_TAP_0, nullptr, 8, 1},
|
||||
{"codeMeshArg", CONST_SRC_CODE_CODE_MESH_ARG_0, nullptr, 2, 1},
|
||||
{"renderTargetSize", CONST_SRC_CODE_RENDER_TARGET_SIZE, nullptr, 0, 0},
|
||||
{"shadowmapSwitchPartition", CONST_SRC_CODE_SHADOWMAP_SWITCH_PARTITION, nullptr, 0, 0},
|
||||
{"shadowmapScale", CONST_SRC_CODE_SHADOWMAP_SCALE, nullptr, 0, 0},
|
||||
{"shadowmapPolygonOffset", CONST_SRC_CODE_SHADOWMAP_POLYGON_OFFSET, nullptr, 0, 0},
|
||||
{"zNear", CONST_SRC_CODE_ZNEAR, nullptr, 0, 0},
|
||||
{"clipSpaceLookupScale", CONST_SRC_CODE_CLIP_SPACE_LOOKUP_SCALE, nullptr, 0, 0},
|
||||
{"clipSpaceLookupOffset", CONST_SRC_CODE_CLIP_SPACE_LOOKUP_OFFSET, nullptr, 0, 0},
|
||||
{"dofEquationViewModelAndFarBlur", CONST_SRC_CODE_DOF_EQUATION_VIEWMODEL_AND_FAR_BLUR, nullptr, 0, 0},
|
||||
{"dofEquationScene", CONST_SRC_CODE_DOF_EQUATION_SCENE, nullptr, 0, 0},
|
||||
{"dofLerpScale", CONST_SRC_CODE_DOF_LERP_SCALE, nullptr, 0, 0},
|
||||
{"dofLerpBias", CONST_SRC_CODE_DOF_LERP_BIAS, nullptr, 0, 0},
|
||||
{"dofRowDelta", CONST_SRC_CODE_DOF_ROW_DELTA, nullptr, 0, 0},
|
||||
{"depthFromClip", CONST_SRC_CODE_DEPTH_FROM_CLIP, nullptr, 0, 0},
|
||||
{"outdoorFeatherParms", CONST_SRC_CODE_OUTDOOR_FEATHER_PARMS, nullptr, 0, 0},
|
||||
{"envMapParms", CONST_SRC_CODE_ENVMAP_PARMS, nullptr, 0, 0},
|
||||
{"colorMatrixR", CONST_SRC_CODE_COLOR_MATRIX_R, nullptr, 0, 0},
|
||||
{"colorMatrixG", CONST_SRC_CODE_COLOR_MATRIX_G, nullptr, 0, 0},
|
||||
{"colorMatrixB", CONST_SRC_CODE_COLOR_MATRIX_B, nullptr, 0, 0},
|
||||
{"colorBias", CONST_SRC_CODE_COLOR_BIAS, nullptr, 0, 0},
|
||||
{"colorTintBase", CONST_SRC_CODE_COLOR_TINT_BASE, nullptr, 0, 0},
|
||||
{"colorTintDelta", CONST_SRC_CODE_COLOR_TINT_DELTA, nullptr, 0, 0},
|
||||
{"colorTintQuadraticDelta", CONST_SRC_CODE_COLOR_TINT_QUADRATIC_DELTA, nullptr, 0, 0},
|
||||
{"motionMatrixX", CONST_SRC_CODE_MOTION_MATRIX_X, nullptr, 0, 0},
|
||||
{"motionMatrixY", CONST_SRC_CODE_MOTION_MATRIX_Y, nullptr, 0, 0},
|
||||
{"motionMatrixW", CONST_SRC_CODE_MOTION_MATRIX_W, nullptr, 0, 0},
|
||||
{"gameTime", CONST_SRC_CODE_GAMETIME, nullptr, 0, 0},
|
||||
{"particleCloudColor", CONST_SRC_CODE_PARTICLE_CLOUD_COLOR, nullptr, 0, 0},
|
||||
{"particleCloudMatrix", CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX0, nullptr, 0, 0},
|
||||
{"particleCloudMatrix1", CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX1, nullptr, 0, 0},
|
||||
{"particleCloudMatrix2", CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX2, nullptr, 0, 0},
|
||||
{"particleCloudSparkColor0", CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR0, nullptr, 0, 0},
|
||||
{"particleCloudSparkColor1", CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR1, nullptr, 0, 0},
|
||||
{"particleCloudSparkColor2", CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR2, nullptr, 0, 0},
|
||||
{"particleFountainParms0", CONST_SRC_CODE_PARTICLE_FOUNTAIN_PARM0, nullptr, 0, 0},
|
||||
{"particleFountainParms1", CONST_SRC_CODE_PARTICLE_FOUNTAIN_PARM1, nullptr, 0, 0},
|
||||
{"viewportDimensions", CONST_SRC_CODE_VIEWPORT_DIMENSIONS, nullptr, 0, 0},
|
||||
{"framebufferRead", CONST_SRC_CODE_FRAMEBUFFER_READ, nullptr, 0, 0},
|
||||
{"viewMatrix", CONST_SRC_CODE_VIEW_MATRIX, nullptr, 0, 0},
|
||||
{"inverseViewMatrix", CONST_SRC_CODE_INVERSE_VIEW_MATRIX, nullptr, 0, 0},
|
||||
{"transposeViewMatrix", CONST_SRC_CODE_TRANSPOSE_VIEW_MATRIX, nullptr, 0, 0},
|
||||
{"inverseTransposeViewMatrix", CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_MATRIX, nullptr, 0, 0},
|
||||
{"projectionMatrix", CONST_SRC_CODE_PROJECTION_MATRIX, nullptr, 0, 0},
|
||||
{"inverseProjectionMatrix", CONST_SRC_CODE_INVERSE_PROJECTION_MATRIX, nullptr, 0, 0},
|
||||
{"transposeProjectionMatrix", CONST_SRC_CODE_TRANSPOSE_PROJECTION_MATRIX, nullptr, 0, 0},
|
||||
{"inverseTransposeProjectionMatrix", CONST_SRC_CODE_INVERSE_TRANSPOSE_PROJECTION_MATRIX, nullptr, 0, 0},
|
||||
{"viewProjectionMatrix", CONST_SRC_CODE_VIEW_PROJECTION_MATRIX, nullptr, 0, 0},
|
||||
{"inverseViewProjectionMatrix", CONST_SRC_CODE_INVERSE_VIEW_PROJECTION_MATRIX, nullptr, 0, 0},
|
||||
{"transposeViewProjectionMatrix", CONST_SRC_CODE_TRANSPOSE_VIEW_PROJECTION_MATRIX, nullptr, 0, 0},
|
||||
{"inverseTransposeViewProjectionMatrix", CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_PROJECTION_MATRIX, nullptr, 0, 0},
|
||||
{"shadowLookupMatrix", CONST_SRC_CODE_SHADOW_LOOKUP_MATRIX, nullptr, 0, 0},
|
||||
{"inverseShadowLookupMatrix", CONST_SRC_CODE_INVERSE_SHADOW_LOOKUP_MATRIX, nullptr, 0, 0},
|
||||
{"transposeShadowLookupMatrix", CONST_SRC_CODE_TRANSPOSE_SHADOW_LOOKUP_MATRIX, nullptr, 0, 0},
|
||||
{"inverseTransposeShadowLookupMatrix", CONST_SRC_CODE_INVERSE_TRANSPOSE_SHADOW_LOOKUP_MATRIX, nullptr, 0, 0},
|
||||
{"worldOutdoorLookupMatrix", CONST_SRC_CODE_WORLD_OUTDOOR_LOOKUP_MATRIX, nullptr, 0, 0},
|
||||
{"inverseWorldOutdoorLookupMatrix", CONST_SRC_CODE_INVERSE_WORLD_OUTDOOR_LOOKUP_MATRIX, nullptr, 0, 0},
|
||||
{"transposeWorldOutdoorLookupMatrix", CONST_SRC_CODE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX, nullptr, 0, 0},
|
||||
{"inverseTransposeWorldOutdoorLookupMatrix", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX, nullptr, 0, 0},
|
||||
{"worldMatrix", CONST_SRC_CODE_WORLD_MATRIX0, nullptr, 0, 0},
|
||||
{"inverseWorldMatrix", CONST_SRC_CODE_INVERSE_WORLD_MATRIX0, nullptr, 0, 0},
|
||||
{"transposeWorldMatrix", CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX0, nullptr, 0, 0},
|
||||
{"inverseTransposeWorldMatrix", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX0, nullptr, 0, 0},
|
||||
{"worldViewMatrix", CONST_SRC_CODE_WORLD_VIEW_MATRIX0, nullptr, 0, 0},
|
||||
{"inverseWorldViewMatrix", CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX0, nullptr, 0, 0},
|
||||
{"transposeWorldViewMatrix", CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX0, nullptr, 0, 0},
|
||||
{"inverseTransposeWorldViewMatrix", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX0, nullptr, 0, 0},
|
||||
{"worldViewProjectionMatrix", CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX0, nullptr, 0, 0},
|
||||
{"inverseWorldViewProjectionMatrix", CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX0, nullptr, 0, 0},
|
||||
{"transposeWorldViewProjectionMatrix", CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX0, nullptr, 0, 0},
|
||||
{"inverseTransposeWorldViewProjectionMatrix", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX0, nullptr, 0, 0},
|
||||
{"worldMatrix1", CONST_SRC_CODE_WORLD_MATRIX1, nullptr, 0, 0},
|
||||
{"inverseWorldMatrix1", CONST_SRC_CODE_INVERSE_WORLD_MATRIX1, nullptr, 0, 0},
|
||||
{"transposeWorldMatrix1", CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX1, nullptr, 0, 0},
|
||||
{"inverseTransposeWorldMatrix1", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX1, nullptr, 0, 0},
|
||||
{"worldViewMatrix1", CONST_SRC_CODE_WORLD_VIEW_MATRIX1, nullptr, 0, 0},
|
||||
{"inverseWorldViewMatrix1", CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX1, nullptr, 0, 0},
|
||||
{"transposeWorldViewMatrix1", CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX1, nullptr, 0, 0},
|
||||
{"inverseTransposeWorldViewMatrix1", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX1, nullptr, 0, 0},
|
||||
{"worldViewProjectionMatrix1", CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX1, nullptr, 0, 0},
|
||||
{"inverseWorldViewProjectionMatrix1", CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX1, nullptr, 0, 0},
|
||||
{"transposeWorldViewProjectionMatrix1", CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX1, nullptr, 0, 0},
|
||||
{"inverseTransposeWorldViewProjectionMatrix1", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX1, nullptr, 0, 0},
|
||||
{"worldMatrix2", CONST_SRC_CODE_WORLD_MATRIX2, nullptr, 0, 0},
|
||||
{"inverseWorldMatrix2", CONST_SRC_CODE_INVERSE_WORLD_MATRIX2, nullptr, 0, 0},
|
||||
{"transposeWorldMatrix2", CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX2, nullptr, 0, 0},
|
||||
{"inverseTransposeWorldMatrix2", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX2, nullptr, 0, 0},
|
||||
{"worldViewMatrix2", CONST_SRC_CODE_WORLD_VIEW_MATRIX2, nullptr, 0, 0},
|
||||
{"inverseWorldViewMatrix2", CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX2, nullptr, 0, 0},
|
||||
{"transposeWorldViewMatrix2", CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX2, nullptr, 0, 0},
|
||||
{"inverseTransposeWorldViewMatrix2", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX2, nullptr, 0, 0},
|
||||
{"worldViewProjectionMatrix2", CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX2, nullptr, 0, 0},
|
||||
{"inverseWorldViewProjectionMatrix2", CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX2, nullptr, 0, 0},
|
||||
{"transposeWorldViewProjectionMatrix2", CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2, nullptr, 0, 0},
|
||||
{"inverseTransposeWorldViewProjectionMatrix2", CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2, nullptr, 0, 0},
|
||||
{}
|
||||
};
|
||||
|
||||
inline CodeConstantSource s_defaultCodeConsts[]
|
||||
{
|
||||
{"nearPlaneOrg", CONST_SRC_CODE_NEARPLANE_ORG, nullptr, 0, 0},
|
||||
{"nearPlaneDx", CONST_SRC_CODE_NEARPLANE_DX, nullptr, 0, 0},
|
||||
{"nearPlaneDy", CONST_SRC_CODE_NEARPLANE_DY, nullptr, 0, 0},
|
||||
{"lightPosition", CONST_SRC_CODE_LIGHT_POSITION, nullptr, 0, 0},
|
||||
{"lightDiffuse", CONST_SRC_CODE_LIGHT_DIFFUSE, nullptr, 0, 0},
|
||||
{"lightSpecular", CONST_SRC_CODE_LIGHT_SPECULAR, nullptr, 0, 0},
|
||||
{"lightSpotDir", CONST_SRC_CODE_LIGHT_SPOTDIR, nullptr, 0, 0},
|
||||
{"lightSpotFactors", CONST_SRC_CODE_LIGHT_SPOTFACTORS, nullptr, 0, 0},
|
||||
{"lightFalloffPlacement", CONST_SRC_CODE_LIGHT_FALLOFF_PLACEMENT, nullptr, 0, 0},
|
||||
{"sunShadowmapPixelAdjust", CONST_SRC_CODE_SUN_SHADOWMAP_PIXEL_ADJUST, nullptr, 0, 0},
|
||||
{"spotShadowmapPixelAdjust", CONST_SRC_CODE_SPOT_SHADOWMAP_PIXEL_ADJUST, nullptr, 0, 0},
|
||||
{}
|
||||
};
|
||||
}
|
||||
|
@ -37,7 +37,46 @@ namespace IW4
|
||||
m_stream << "stateMap \"\"; // TODO\n";
|
||||
}
|
||||
|
||||
void DumpShaderArg(const MaterialShaderArgument& arg, const d3d9::ShaderInfo& shaderInfo)
|
||||
static bool FindCodeConstantSourceAccessor(const MaterialConstantSource sourceIndexToFind, const CodeConstantSource* codeConstantTable, std::string& codeSourceAccessor)
|
||||
{
|
||||
const auto* currentCodeConst = codeConstantTable;
|
||||
while(currentCodeConst->name != nullptr)
|
||||
{
|
||||
if(currentCodeConst->subtable != nullptr)
|
||||
{
|
||||
std::string accessorInSubTable;
|
||||
if(FindCodeConstantSourceAccessor(sourceIndexToFind, currentCodeConst->subtable, accessorInSubTable))
|
||||
{
|
||||
std::ostringstream ss;
|
||||
ss << currentCodeConst->name << '.' << accessorInSubTable;
|
||||
codeSourceAccessor = ss.str();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if(currentCodeConst->arrayCount > 0)
|
||||
{
|
||||
if(currentCodeConst->source <= static_cast<unsigned>(sourceIndexToFind)
|
||||
&& static_cast<unsigned>(currentCodeConst->source) + currentCodeConst->arrayCount > static_cast<unsigned>(sourceIndexToFind))
|
||||
{
|
||||
std::ostringstream ss;
|
||||
ss << currentCodeConst->name << '[' << (static_cast<unsigned>(sourceIndexToFind) - static_cast<unsigned>(currentCodeConst->source)) << ']';
|
||||
codeSourceAccessor = ss.str();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if(currentCodeConst->source == sourceIndexToFind)
|
||||
{
|
||||
codeSourceAccessor = currentCodeConst->name;
|
||||
return true;
|
||||
}
|
||||
|
||||
currentCodeConst++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void DumpShaderArg(const MaterialShaderArgument& arg, const d3d9::ShaderInfo& shaderInfo) const
|
||||
{
|
||||
const auto targetShaderArg = std::find_if(shaderInfo.m_constants.begin(), shaderInfo.m_constants.end(), [arg](const d3d9::ShaderConstant& constant)
|
||||
{
|
||||
@ -52,7 +91,35 @@ namespace IW4
|
||||
}
|
||||
|
||||
Indent();
|
||||
m_stream << targetShaderArg->m_name << " = something;\n";
|
||||
|
||||
if (targetShaderArg->m_type_elements > 1)
|
||||
m_stream << targetShaderArg->m_name << '[' << (arg.dest - targetShaderArg->m_register_index) << ']';
|
||||
else
|
||||
m_stream << targetShaderArg->m_name;
|
||||
|
||||
m_stream << " = ";
|
||||
|
||||
if(arg.type == MTL_ARG_CODE_VERTEX_CONST || arg.type == MTL_ARG_CODE_PIXEL_CONST)
|
||||
{
|
||||
const auto sourceIndex = static_cast<MaterialConstantSource>(arg.u.codeConst.index);
|
||||
std::string codeSourceAccessor;
|
||||
if(FindCodeConstantSourceAccessor(sourceIndex, s_codeConsts, codeSourceAccessor)
|
||||
|| FindCodeConstantSourceAccessor(sourceIndex, s_defaultCodeConsts, codeSourceAccessor))
|
||||
{
|
||||
m_stream << "code." << codeSourceAccessor;
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(false);
|
||||
m_stream << "UNKNOWN";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_stream << "something";
|
||||
}
|
||||
|
||||
m_stream << ";\n";
|
||||
}
|
||||
|
||||
void DumpVertexShader(const MaterialPass& pass)
|
||||
@ -67,7 +134,7 @@ namespace IW4
|
||||
|
||||
m_stream << "\n";
|
||||
Indent();
|
||||
m_stream << "vertexShader " << vertexShaderInfo->m_version_major << "." << vertexShaderInfo->m_version_minor << " \"" << pass.pixelShader->name << "\"\n";
|
||||
m_stream << "vertexShader " << vertexShaderInfo->m_version_major << "." << vertexShaderInfo->m_version_minor << " \"" << pass.vertexShader->name << "\"\n";
|
||||
Indent();
|
||||
m_stream << "{\n";
|
||||
IncIndent();
|
||||
|
Loading…
x
Reference in New Issue
Block a user