#pragma once #include "Game/IW5/IW5.h" #include "Techset/CommonTechnique.h" #include "Techset/CommonTechset.h" #include namespace IW5 { static inline const char* techniqueTypeNames[]{ "depth prepass", "build floatz", "build shadowmap depth", "build shadowmap color", "unlit", "emissive", "emissive dfog", "emissive shadow", "emissive shadow dfog", "lit", "lit dfog", "lit sun", "lit sun dfog", "lit sun shadow", "lit sun shadow dfog", "lit spot", "lit spot dfog", "lit spot shadow", "lit spot shadow dfog", "lit spot shadow cucoloris", "lit spot shadow cucoloris dfog", "lit omni", "lit omni dfog", "lit omni shadow", "lit omni shadow dfog", "lit instanced", "lit instanced dfog", "lit instanced sun", "lit instanced sun dfog", "lit instanced sun shadow", "lit instanced sun shadow dfog", "lit instanced spot", "lit instanced spot dfog", "lit instanced spot shadow", "lit instanced spot shadow dfog", "lit instanced spot shadow cucoloris", "lit instanced spot shadow cucoloris dfog", "lit instanced omni", "lit instanced omni dfog", "lit instanced omni shadow", "lit instanced omni shadow dfog", "light spot", "light omni", "light spot shadow", "light spot shadow cucoloris", "fakelight normal", "fakelight view", "sunlight preview", "case texture", "solid wireframe", "shaded wireframe", "thermal", "debug bumpmap", "debug bumpmap instanced", }; static_assert(std::extent_v == TECHNIQUE_COUNT); static inline techset::CommonTechniqueTypeNames commonTechniqueTypeNames(techniqueTypeNames, std::extent_v); static inline techset::CommonStreamRoutingSourceInfo streamRoutingSources[]{ { .name = "position", .abbreviation = "p", .optional = false, }, { .name = "color", .abbreviation = "c", .optional = false, }, { .name = "texcoord[0]", .abbreviation = "t0", .optional = false, }, { .name = "normal", .abbreviation = "n", .optional = false, }, { .name = "tangent", .abbreviation = "t", .optional = false, }, { .name = "texcoord[1]", .abbreviation = "t1", .optional = true, }, { .name = "texcoord[2]", .abbreviation = "t2", .optional = true, }, { .name = "normalTransform[0]", .abbreviation = "n0", .optional = true, }, { .name = "normalTransform[1]", .abbreviation = "n1", .optional = true, }, }; static_assert(std::extent_v == STREAM_SRC_COUNT); static inline techset::CommonStreamRoutingDestinationInfo streamRoutingDestinations[]{ { .name = "position", .abbreviation = "p", }, { .name = "normal", .abbreviation = "n", }, { .name = "color[0]", .abbreviation = "c0", }, { .name = "color[1]", .abbreviation = "c1", }, { .name = "depth", .abbreviation = "d", }, { .name = "texcoord[0]", .abbreviation = "t0", }, { .name = "texcoord[1]", .abbreviation = "t1", }, { .name = "texcoord[2]", .abbreviation = "t2", }, { .name = "texcoord[3]", .abbreviation = "t3", }, { .name = "texcoord[4]", .abbreviation = "t4", }, { .name = "texcoord[5]", .abbreviation = "t5", }, { .name = "texcoord[6]", .abbreviation = "t6", }, { .name = "texcoord[7]", .abbreviation = "t7", }, }; static_assert(std::extent_v == STREAM_DST_COUNT); static inline techset::CommonStreamRoutingInfos commonRoutingInfos(streamRoutingSources, std::extent_v, streamRoutingDestinations, std::extent_v); static inline techset::CommonCodeConstSourceInfo commonCodeConstSources[]{ { .value = CONST_SRC_CODE_LIGHT_POSITION, .accessor = "lightPosition", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_LIGHT_DIFFUSE, .accessor = "lightDiffuse", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_LIGHT_SPECULAR, .accessor = "lightSpecular", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_LIGHT_SPOTDIR, .accessor = "lightSpotDir", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_LIGHT_SPOTFACTORS, .accessor = "lightSpotFactors", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, .techFlags = MTL_TECHFLAG_USES_LIGHT_SPOT_FACTORS, }, { .value = CONST_SRC_CODE_LIGHT_FALLOFF_PLACEMENT, .accessor = "lightFalloffPlacement", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_PARTICLE_CLOUD_COLOR, .accessor = "particleCloudColor", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_GAMETIME, .accessor = "gameTime", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_EYEOFFSET, .accessor = "eyeOffset", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COLOR_SATURATION_R, .accessor = "colorSaturationR", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COLOR_SATURATION_G, .accessor = "colorSaturationG", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COLOR_SATURATION_B, .accessor = "colorSaturationB", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_SSAO_PARMS, .accessor = "ssaoParms", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_PIXEL_COST_FRACS, .accessor = "pixelCostFracs", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_PIXEL_COST_DECODE, .accessor = "pixelCostDecode", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_FILTER_TAP_0, .accessor = "filterTap", .arrayCount = 8, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COLOR_MATRIX_R, .accessor = "colorMatrixR", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COLOR_MATRIX_G, .accessor = "colorMatrixG", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COLOR_MATRIX_B, .accessor = "colorMatrixB", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_SHADOWMAP_POLYGON_OFFSET, .accessor = "shadowmapPolygonOffset", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_RENDER_TARGET_SIZE, .accessor = "renderTargetSize", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_RENDER_SOURCE_SIZE, .accessor = "renderSourceSize", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_DOF_EQUATION_VIEWMODEL_AND_FAR_BLUR, .accessor = "dofEquationViewModelAndFarBlur", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_DOF_EQUATION_SCENE, .accessor = "dofEquationScene", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_DOF_LERP_SCALE, .accessor = "dofLerpScale", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_DOF_LERP_BIAS, .accessor = "dofLerpBias", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_DOF_ROW_DELTA, .accessor = "dofRowDelta", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_MOTION_MATRIX_X, .accessor = "motionMatrixX", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_MOTION_MATRIX_Y, .accessor = "motionMatrixY", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_MOTION_MATRIX_W, .accessor = "motionMatrixW", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_SHADOWMAP_SWITCH_PARTITION, .accessor = "shadowmapSwitchPartition", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_SHADOWMAP_SCALE, .accessor = "shadowmapScale", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_ZNEAR, .accessor = "zNear", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_LIGHTING_LOOKUP_SCALE, .accessor = "lightingLookupScale", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_DEBUG_BUMPMAP, .accessor = "debugBumpmap", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_MATERIAL_COLOR, .accessor = "materialColor", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_FOG, .accessor = "fogConsts", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_FOG_COLOR_LINEAR, .accessor = "fogColorLinear", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_FOG_COLOR_GAMMA, .accessor = "fogColorGamma", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_FOG_SUN_CONSTS, .accessor = "fogSunConsts", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_FOG_SUN_COLOR_LINEAR, .accessor = "fogSunColorLinear", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_FOG_SUN_COLOR_GAMMA, .accessor = "fogSunColorGamma", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_FOG_SUN_DIR, .accessor = "fogSunDir", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_GLOW_SETUP, .accessor = "glowSetup", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_GLOW_APPLY, .accessor = "glowApply", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COLOR_BIAS, .accessor = "colorBias", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COLOR_TINT_BASE, .accessor = "colorTintBase", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COLOR_TINT_DELTA, .accessor = "colorTintDelta", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COLOR_TINT_QUADRATIC_DELTA, .accessor = "colorTintQuadraticDelta", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_OUTDOOR_FEATHER_PARMS, .accessor = "outdoorFeatherParms", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_ENVMAP_PARMS, .accessor = "envMapParms", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_SUN_SHADOWMAP_PIXEL_ADJUST, .accessor = "sunShadowmapPixelAdjust", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_SPOT_SHADOWMAP_PIXEL_ADJUST, .accessor = "spotShadowmapPixelAdjust", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_COMPOSITE_FX_DISTORTION, .accessor = "fullscreenDistortion", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_POSTFX_FADE_EFFECT, .accessor = "fadeEffect", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_VIEWPORT_DIMENSIONS, .accessor = "viewportDimensions", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_FRAMEBUFFER_READ, .accessor = "framebufferRead", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_THERMAL_COLOR_OFFSET, .accessor = "thermalColorOffset", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_PLAYLIST_POPULATION_PARAMS, .accessor = "playlistPopulationParams", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_BASE_LIGHTING_COORDS, .accessor = "baseLightingCoords", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, }, { .value = CONST_SRC_CODE_LIGHT_PROBE_AMBIENT, .accessor = "lightprobeAmbient", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, }, { .value = CONST_SRC_CODE_NEARPLANE_ORG, .accessor = "nearPlaneOrg", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_NEARPLANE_DX, .accessor = "nearPlaneDx", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_NEARPLANE_DY, .accessor = "nearPlaneDy", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_CLIP_SPACE_LOOKUP_SCALE, .accessor = "clipSpaceLookupScale", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_CLIP_SPACE_LOOKUP_OFFSET, .accessor = "clipSpaceLookupOffset", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX0, .accessor = "particleCloudMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX1, .accessor = "particleCloudMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = CONST_SRC_CODE_PARTICLE_CLOUD_MATRIX2, .accessor = "particleCloudMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR0, .accessor = "particleCloudSparkColor0", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR1, .accessor = "particleCloudSparkColor1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = CONST_SRC_CODE_PARTICLE_CLOUD_SPARK_COLOR2, .accessor = "particleCloudSparkColor2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = CONST_SRC_CODE_PARTICLE_FOUNTAIN_PARM0, .accessor = "particleFountainParms0", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = CONST_SRC_CODE_PARTICLE_FOUNTAIN_PARM1, .accessor = "particleFountainParms1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = CONST_SRC_CODE_DEPTH_FROM_CLIP, .accessor = "depthFromClip", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = CONST_SRC_CODE_CODE_MESH_ARG_0, .accessor = "codeMeshArg", .arrayCount = 2, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = CONST_SRC_CODE_VIEW_MATRIX, .accessor = "viewMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_VIEW_MATRIX, }, { .value = CONST_SRC_CODE_INVERSE_VIEW_MATRIX, .accessor = "inverseViewMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_MATRIX, }, { .value = CONST_SRC_CODE_TRANSPOSE_VIEW_MATRIX, .accessor = "transposeViewMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_VIEW_MATRIX, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_MATRIX, .accessor = "inverseTransposeViewMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_INVERSE_VIEW_MATRIX, }, { .value = CONST_SRC_CODE_PROJECTION_MATRIX, .accessor = "projectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_PROJECTION_MATRIX, }, { .value = CONST_SRC_CODE_INVERSE_PROJECTION_MATRIX, .accessor = "inverseProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_PROJECTION_MATRIX, }, { .value = CONST_SRC_CODE_TRANSPOSE_PROJECTION_MATRIX, .accessor = "transposeProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_PROJECTION_MATRIX, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_PROJECTION_MATRIX, .accessor = "inverseTransposeProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_INVERSE_PROJECTION_MATRIX, }, { .value = CONST_SRC_CODE_VIEW_PROJECTION_MATRIX, .accessor = "viewProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_VIEW_PROJECTION_MATRIX, }, { .value = CONST_SRC_CODE_INVERSE_VIEW_PROJECTION_MATRIX, .accessor = "inverseViewProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_PROJECTION_MATRIX, }, { .value = CONST_SRC_CODE_TRANSPOSE_VIEW_PROJECTION_MATRIX, .accessor = "transposeViewProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_VIEW_PROJECTION_MATRIX, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_VIEW_PROJECTION_MATRIX, .accessor = "inverseTransposeViewProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_INVERSE_VIEW_PROJECTION_MATRIX, }, { .value = CONST_SRC_CODE_SHADOW_LOOKUP_MATRIX, .accessor = "shadowLookupMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_SHADOW_LOOKUP_MATRIX, }, { .value = CONST_SRC_CODE_INVERSE_SHADOW_LOOKUP_MATRIX, .accessor = "inverseShadowLookupMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_SHADOW_LOOKUP_MATRIX, }, { .value = CONST_SRC_CODE_TRANSPOSE_SHADOW_LOOKUP_MATRIX, .accessor = "transposeShadowLookupMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_SHADOW_LOOKUP_MATRIX, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_SHADOW_LOOKUP_MATRIX, .accessor = "inverseTransposeShadowLookupMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, .transposedMatrix = CONST_SRC_CODE_INVERSE_SHADOW_LOOKUP_MATRIX, }, { .value = CONST_SRC_CODE_WORLD_OUTDOOR_LOOKUP_MATRIX, .accessor = "worldOutdoorLookupMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX, }, { .value = CONST_SRC_CODE_INVERSE_WORLD_OUTDOOR_LOOKUP_MATRIX, .accessor = "inverseWorldOutdoorLookupMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX, }, { .value = CONST_SRC_CODE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX, .accessor = "transposeWorldOutdoorLookupMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_WORLD_OUTDOOR_LOOKUP_MATRIX, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_OUTDOOR_LOOKUP_MATRIX, .accessor = "inverseTransposeWorldOutdoorLookupMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_WORLD_OUTDOOR_LOOKUP_MATRIX, }, { .value = CONST_SRC_CODE_WORLD_MATRIX0, .accessor = "worldMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX0, }, { .value = CONST_SRC_CODE_INVERSE_WORLD_MATRIX0, .accessor = "inverseWorldMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX0, }, { .value = CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX0, .accessor = "transposeWorldMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_WORLD_MATRIX0, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX0, .accessor = "inverseTransposeWorldMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_WORLD_MATRIX0, }, { .value = CONST_SRC_CODE_WORLD_VIEW_MATRIX0, .accessor = "worldViewMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX0, }, { .value = CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX0, .accessor = "inverseWorldViewMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX0, }, { .value = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX0, .accessor = "transposeWorldViewMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_WORLD_VIEW_MATRIX0, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX0, .accessor = "inverseTransposeWorldViewMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX0, }, { .value = CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX0, .accessor = "worldViewProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX0, }, { .value = CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX0, .accessor = "inverseWorldViewProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX0, }, { .value = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX0, .accessor = "transposeWorldViewProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX0, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX0, .accessor = "inverseTransposeWorldViewProjectionMatrix", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX0, }, { .value = CONST_SRC_CODE_WORLD_MATRIX1, .accessor = "worldMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX1, }, { .value = CONST_SRC_CODE_INVERSE_WORLD_MATRIX1, .accessor = "inverseWorldMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX1, }, { .value = CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX1, .accessor = "transposeWorldMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_WORLD_MATRIX1, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX1, .accessor = "inverseTransposeWorldMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_WORLD_MATRIX1, }, { .value = CONST_SRC_CODE_WORLD_VIEW_MATRIX1, .accessor = "worldViewMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX1, }, { .value = CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX1, .accessor = "inverseWorldViewMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX1, }, { .value = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX1, .accessor = "transposeWorldViewMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_WORLD_VIEW_MATRIX1, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX1, .accessor = "inverseTransposeWorldViewMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX1, }, { .value = CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX1, .accessor = "worldViewProjectionMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX1, }, { .value = CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX1, .accessor = "inverseWorldViewProjectionMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX1, }, { .value = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX1, .accessor = "transposeWorldViewProjectionMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX1, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX1, .accessor = "inverseTransposeWorldViewProjectionMatrix1", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX1, }, { .value = CONST_SRC_CODE_WORLD_MATRIX2, .accessor = "worldMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX2, }, { .value = CONST_SRC_CODE_INVERSE_WORLD_MATRIX2, .accessor = "inverseWorldMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX2, }, { .value = CONST_SRC_CODE_TRANSPOSE_WORLD_MATRIX2, .accessor = "transposeWorldMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_WORLD_MATRIX2, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_MATRIX2, .accessor = "inverseTransposeWorldMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_WORLD_MATRIX2, }, { .value = CONST_SRC_CODE_WORLD_VIEW_MATRIX2, .accessor = "worldViewMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX2, }, { .value = CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX2, .accessor = "inverseWorldViewMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX2, }, { .value = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_MATRIX2, .accessor = "transposeWorldViewMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_WORLD_VIEW_MATRIX2, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX2, .accessor = "inverseTransposeWorldViewMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_WORLD_VIEW_MATRIX2, }, { .value = CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX2, .accessor = "worldViewProjectionMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2, }, { .value = CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX2, .accessor = "inverseWorldViewProjectionMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2, }, { .value = CONST_SRC_CODE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2, .accessor = "transposeWorldViewProjectionMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_WORLD_VIEW_PROJECTION_MATRIX2, }, { .value = CONST_SRC_CODE_INVERSE_TRANSPOSE_WORLD_VIEW_PROJECTION_MATRIX2, .accessor = "inverseTransposeWorldViewProjectionMatrix2", .arrayCount = 0, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_PRIM, .transposedMatrix = CONST_SRC_CODE_INVERSE_WORLD_VIEW_PROJECTION_MATRIX2, }, }; static inline techset::CommonCodeSamplerSourceInfo commonCodeSamplerSources[]{ { .value = TEXTURE_SRC_CODE_BLACK, .accessor = "black", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_WHITE, .accessor = "white", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_IDENTITY_NORMAL_MAP, .accessor = "identityNormalMap", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_MODEL_LIGHTING, .accessor = "modelLightingSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_LIGHTMAP_PRIMARY, .accessor = "lightmapSamplerPrimary", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::CUSTOM, .customSamplerIndex = CUSTOM_SAMPLER_LIGHTMAP_PRIMARY, }, { .value = TEXTURE_SRC_CODE_LIGHTMAP_SECONDARY, .accessor = "lightmapSamplerSecondary", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::CUSTOM, .customSamplerIndex = CUSTOM_SAMPLER_LIGHTMAP_SECONDARY, }, { .value = TEXTURE_SRC_CODE_SHADOWMAP_SUN, .accessor = "shadowmapSamplerSun", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_SHADOWMAP_SPOT, .accessor = "shadowmapSamplerSpot", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_FEEDBACK, .accessor = "feedbackSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = TEXTURE_SRC_CODE_RESOLVED_POST_SUN, .accessor = "resolvedPostSun", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, .techFlags = MTL_TECHFLAG_NEEDS_RESOLVED_POST_SUN, }, { .value = TEXTURE_SRC_CODE_RESOLVED_SCENE, .accessor = "resolvedScene", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, .techFlags = MTL_TECHFLAG_NEEDS_RESOLVED_SCENE, }, { .value = TEXTURE_SRC_CODE_POST_EFFECT_0, .accessor = "postEffect0", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_POST_EFFECT_1, .accessor = "postEffect1", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_LIGHT_ATTENUATION, .accessor = "attenuationSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = TEXTURE_SRC_CODE_LIGHT_CUCOLORIS, .accessor = "cucolorisSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, // ? }, { .value = TEXTURE_SRC_CODE_OUTDOOR, .accessor = "outdoor", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_FLOATZ, .accessor = "floatZSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, .techFlags = MTL_TECHFLAG_USES_FLOATZ, }, { .value = TEXTURE_SRC_CODE_PROCESSED_FLOATZ, .accessor = "processedFloatZSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, .techFlags = MTL_TECHFLAG_USES_FLOATZ, }, { .value = TEXTURE_SRC_CODE_RAW_FLOATZ, .accessor = "rawFloatZSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, .techFlags = MTL_TECHFLAG_USES_FLOATZ, }, { .value = TEXTURE_SRC_CODE_HALF_PARTICLES, .accessor = "halfParticleColorSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_HALF_PARTICLES_Z, .accessor = "halfParticleDepthSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, }, { .value = TEXTURE_SRC_CODE_CASE_TEXTURE, .accessor = "caseTexture" /* ? */, .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = TEXTURE_SRC_CODE_CINEMATIC_Y, .accessor = "cinematicYSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = TEXTURE_SRC_CODE_CINEMATIC_CR, .accessor = "cinematicCrSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = TEXTURE_SRC_CODE_CINEMATIC_CB, .accessor = "cinematicCbSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = TEXTURE_SRC_CODE_CINEMATIC_A, .accessor = "cinematicASampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::PER_OBJECT, }, { .value = TEXTURE_SRC_CODE_REFLECTION_PROBE, .accessor = "reflectionProbeSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::CUSTOM, .customSamplerIndex = CUSTOM_SAMPLER_REFLECTION_PROBE, }, { .value = TEXTURE_SRC_CODE_PIP_SCENE, .accessor = "pipSceneSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, // ? }, { .value = TEXTURE_SRC_CODE_COLOR_MANIPULATION, .accessor = "colorManipulationSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, // ? }, { .value = TEXTURE_SRC_CODE_STREAMING_LOADING, .accessor = "ssaoSampler", .updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY, // ? }, }; // See MaterialShaderArgumentType static inline techset::CommonShaderArgumentType commonArgumentTypes[]{ {.m_shader_type = techset::CommonTechniqueShaderType::VERTEX, .m_value_type = techset::CommonShaderValueType::MATERIAL_CONST }, {.m_shader_type = techset::CommonTechniqueShaderType::VERTEX, .m_value_type = techset::CommonShaderValueType::LITERAL_CONST }, {.m_shader_type = techset::CommonTechniqueShaderType::VERTEX, .m_value_type = techset::CommonShaderValueType::MATERIAL_SAMPLER}, {.m_shader_type = techset::CommonTechniqueShaderType::PIXEL, .m_value_type = techset::CommonShaderValueType::MATERIAL_SAMPLER}, {.m_shader_type = techset::CommonTechniqueShaderType::VERTEX, .m_value_type = techset::CommonShaderValueType::CODE_CONST }, {.m_shader_type = techset::CommonTechniqueShaderType::PIXEL, .m_value_type = techset::CommonShaderValueType::CODE_SAMPLER }, {.m_shader_type = techset::CommonTechniqueShaderType::PIXEL, .m_value_type = techset::CommonShaderValueType::CODE_CONST }, {.m_shader_type = techset::CommonTechniqueShaderType::PIXEL, .m_value_type = techset::CommonShaderValueType::MATERIAL_CONST }, {.m_shader_type = techset::CommonTechniqueShaderType::PIXEL, .m_value_type = techset::CommonShaderValueType::LITERAL_CONST }, }; static_assert(std::extent_v == MTL_ARG_COUNT); static inline techset::CommonCodeSourceInfos commonCodeSourceInfos(commonCodeConstSources, std::extent_v, commonCodeSamplerSources, std::extent_v, nullptr, 0, commonArgumentTypes, std::extent_v); } // namespace IW5