Material Flags: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(→‎$flags: Filled out comments)
m (formatted code link)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
Material <code>$flags</code> and <code>$flags2</code> parameters control how the material is rendered. <code>$flag</code> can be changed in real-time to allow changes in rendering, but <code>$flags2</code> is read-only and assists the engine or other code in using the material correctly. Enumerations found in https://github.com/ValveSoftware/source-sdk-2013/blob/master/mp/src/public/materialsystem/imaterial.h
Material <code>$flags</code> and <code>$flags2</code> parameters control how the material is rendered. <code>$flag</code> can be changed in real-time to allow changes in rendering, but <code>$flags2</code> is read-only and assists the engine or other code in using the material correctly. Enumerations found in {{path|[https://github.com/ValveSoftware/source-sdk-2013/blob/master/mp/src/public/materialsystem/imaterial.h public/materialsystem/imaterial]|h}}


The flags can also be set via the .vmt
The flags can also be set via the .vmt
Line 19: Line 19:
| MATERIAL_VAR_DEBUG || 0x0001 || 1|| [[$debug]]
| MATERIAL_VAR_DEBUG || 0x0001 || 1|| [[$debug]]
|-
|-
| MATERIAL_VAR_NO_DEBUG_OVERRIDE || 0x0002 || 2||  
| MATERIAL_VAR_NO_DEBUG_OVERRIDE || 0x0002 || 2|| [[$no_fullbright]]
|-
|-
| MATERIAL_VAR_NO_DRAW || 0x0004 || 4|| [[$no_draw]]
| MATERIAL_VAR_NO_DRAW || 0x0004 || 4|| [[$no_draw]]
Line 35: Line 35:
| MATERIAL_VAR_ALPHATEST || 0x0100 || 256|| [[$alphatest]]
| MATERIAL_VAR_ALPHATEST || 0x0100 || 256|| [[$alphatest]]
|-
|-
| MATERIAL_VAR_MULTIPASS || 0x0200 || 512||  
| MATERIAL_VAR_MULTIPASS || 0x0200 || 512|| [[$multipass]]
|-
|-
| MATERIAL_VAR_ZNEARER || 0x0400 || 1024|| [[$znearer]]
| MATERIAL_VAR_ZNEARER || 0x0400 || 1024|| [[$znearer]]
Line 53: Line 53:
| MATERIAL_VAR_ENVMAPSPHERE || 0x20000 || 131072|| [[$envmapsphere]]
| MATERIAL_VAR_ENVMAPSPHERE || 0x20000 || 131072|| [[$envmapsphere]]
|-
|-
| MATERIAL_VAR_NOALPHAMOD || 0x40000 || 262144||  
| MATERIAL_VAR_NOALPHAMOD || 0x40000 || 262144|| [[$noalphamod]]
|-
|-
| MATERIAL_VAR_ENVMAPCAMERASPACE || 0x80000 || 524288|| [[$envmapcameraspace]]
| MATERIAL_VAR_ENVMAPCAMERASPACE || 0x80000 || 524288|| [[$envmapcameraspace]]
Line 71: Line 71:
| MATERIAL_VAR_SUPPRESS_DECALS || 0x4000000 || 67108864|| [[$nodecal]]
| MATERIAL_VAR_SUPPRESS_DECALS || 0x4000000 || 67108864|| [[$nodecal]]
|-
|-
| MATERIAL_VAR_HALFLAMBERT || 0x8000000 || 134217728|| [[Half Lambert]]
| MATERIAL_VAR_HALFLAMBERT || 0x8000000 || 134217728|| [[$halflambert]]
|-
|-
| MATERIAL_VAR_WIREFRAME || 0x10000000 || 268435456|| [[$wireframe]]
| MATERIAL_VAR_WIREFRAME || 0x10000000 || 268435456|| [[$wireframe]]

Latest revision as of 10:39, 25 December 2024

Material $flags and $flags2 parameters control how the material is rendered. $flag can be changed in real-time to allow changes in rendering, but $flags2 is read-only and assists the engine or other code in using the material correctly. Enumerations found in 🖿public/materialsystem/imaterial.h

The flags can also be set via the .vmt Example:

#Sets the MATERIAL_VAR_VERTEXCOLOR and MATERIAL_VAR_VERTEXALPHA flag
UnlitGeneric
{
$basetexture brick/brickwall003a
$vertexcolor 1
$vertexalpha 1
}

$flags

$flags can contain the following flags:

Flag Hex Value Dec Value Comment
MATERIAL_VAR_DEBUG 0x0001 1 $debug
MATERIAL_VAR_NO_DEBUG_OVERRIDE 0x0002 2 $no_fullbright
MATERIAL_VAR_NO_DRAW 0x0004 4 $no_draw
MATERIAL_VAR_USE_IN_FILLRATE_MODE 0x0008 8 $use_in_fillrate_mode
MATERIAL_VAR_VERTEXCOLOR 0x0010 16 $vertexcolor
MATERIAL_VAR_VERTEXALPHA 0x0020 32 $vertexalpha
MATERIAL_VAR_SELFILLUM 0x0040 64 $selfillum
MATERIAL_VAR_ADDITIVE 0x0080 128 $additive
MATERIAL_VAR_ALPHATEST 0x0100 256 $alphatest
MATERIAL_VAR_MULTIPASS 0x0200 512 $multipass
MATERIAL_VAR_ZNEARER 0x0400 1024 $znearer
MATERIAL_VAR_MODEL 0x0800 2048 $model
MATERIAL_VAR_FLAT 0x1000 4096 $flat
MATERIAL_VAR_NOCULL 0x2000 8192 $nocull
MATERIAL_VAR_NOFOG 0x4000 16384 $nofog
MATERIAL_VAR_IGNOREZ 0x8000 32768 $ignorez
MATERIAL_VAR_DECAL 0x10000 65536 $decal
MATERIAL_VAR_ENVMAPSPHERE 0x20000 131072 $envmapsphere
MATERIAL_VAR_NOALPHAMOD 0x40000 262144 $noalphamod
MATERIAL_VAR_ENVMAPCAMERASPACE 0x80000 524288 $envmapcameraspace
MATERIAL_VAR_BASEALPHAENVMAPMASK 0x100000 1048576 $basealphaenvmapmask
MATERIAL_VAR_TRANSLUCENT 0x200000 2097152 $translucent
MATERIAL_VAR_NORMALMAPALPHAENVMAPMASK 0x400000 4194304 $normalmapalphaenvmapmask
MATERIAL_VAR_NEEDS_SOFTWARE_SKINNING 0x800000 8388608 $softwareskin
MATERIAL_VAR_OPAQUETEXTURE 0x1000000 16777216 $opaquetexture
MATERIAL_VAR_ENVMAPMODE 0x2000000 33554432 $envmapmode
MATERIAL_VAR_SUPPRESS_DECALS 0x4000000 67108864 $nodecal
MATERIAL_VAR_HALFLAMBERT 0x8000000 134217728 $halflambert
MATERIAL_VAR_WIREFRAME 0x10000000 268435456 $wireframe
MATERIAL_VAR_ALLOWALPHATOCOVERAGE 0x20000000 536870912 $allowalphatocoverage
MATERIAL_VAR_IGNORE_ALPHA_MODULATION 0x40000000 1073741824

$flags2

$flags2 can contain the following flags:

Flag Dec Value Comment
MATERIAL_VAR2_LIGHTING_UNLIT 0
MATERIAL_VAR2_LIGHTING_VERTEX_LIT 1
MATERIAL_VAR2_LIGHTING_LIGHTMAP0 2
MATERIAL_VAR2_LIGHTING_BUMPED_LIGHTMAP 4
MATERIAL_VAR2_LIGHTING_MASK 7 Sum of 3 above
MATERIAL_VAR2_DIFFUSE_BUMPMAPPED_MODEL 8
MATERIAL_VAR2_USES_ENV_CUBEMAP 16
MATERIAL_VAR2_NEEDS_TANGENT_SPACES 32
MATERIAL_VAR2_NEEDS_SOFTWARE_LIGHTING 64
MATERIAL_VAR2_BLEND_WITH_LIGHTMAP_ALPHA 128
MATERIAL_VAR2_NEEDS_BAKED_LIGHTING_SNAPSHOTS 256
MATERIAL_VAR2_USE_FLASHLIGHT 512
MATERIAL_VAR2_USE_FIXED_FUNCTION_BAKED_LIGHTING 1024
MATERIAL_VAR2_NEEDS_FIXED_FUNCTION_FLASHLIGHT 2048
MATERIAL_VAR2_USE_EDITOR 4096
MATERIAL_VAR2_NEEDS_POWER_OF_TWO_FRAME_BUFFER_TEXTURE 8192
MATERIAL_VAR2_NEEDS_FULL_FRAME_BUFFER_TEXTURE 16384
MATERIAL_VAR2_IS_SPRITECARD 32768
MATERIAL_VAR2_USES_VERTEXID 65536
MATERIAL_VAR2_SUPPORTS_HW_SKINNING 131072
MATERIAL_VAR2_SUPPORTS_FLASHLIGHT 262144