Source Engine Shader Fallbacks: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
m (made table headers into sections for table of contents.)
Line 1: Line 1:
[[Category:Material System]]
[[Category:Material System]]
__TOC__
==Introduction==
==Introduction==
The following a list of the shader fallbacks for the materials shipped with Half-Life 2. For a description of how shader fallbacks are used, see the Material choices and rendering performance in [[Controlling Geometry Visibility and Compile Times]].
The following a list of the shader fallbacks for the materials shipped with Half-Life 2. For a description of how shader fallbacks are used, see the Material choices and rendering performance in [[Controlling Geometry Visibility and Compile Times]].
Line 6: Line 5:
==Shader Fallbacks==
==Shader Fallbacks==


{|
===LightmappedGeneric===
! LightmappedGeneric
{|- width="100%"
|-
| width="30%" | <code>LightmappedGeneric_dx9</code> ||  dx9
| <code>LightmappedGeneric_dx9</code> ||  dx9
|-  
|-
| <code>LightmappedGeneric_dx8</code> || dx8.0/dx8.1
| <code>LightmappedGeneric_dx8</code> || dx8.0/dx8.1
|-
|-
Line 16: Line 14:
|-
|-
| <code>LightmappedGeneric_dx6</code> || dx6/dx7
| <code>LightmappedGeneric_dx6</code> || dx6/dx7
|-
|}
! VertexLitGeneric
 
|-
===VertexLitGeneric===
| <code>VertexLitGeneric_dx9</code> || dx9
{|- width="100%"
| width="30%" | <code>VertexLitGeneric_dx9</code> || dx9
|-
|-
| <code>VertexLitGeneric_dx8</code> || dx8.0/dx8.1
| <code>VertexLitGeneric_dx8</code> || dx8.0/dx8.1
Line 26: Line 25:
|-
|-
| <code>VertexLitGeneric_dx6</code> || dx6
| <code>VertexLitGeneric_dx6</code> || dx6
|-
|}
! UnlitGeneric
 
|-
===UnlitGeneric===
| <code>UnlitGeneric_dx9</code> || dx9
{|- width="100%"
| width="30%" | <code>UnlitGeneric_dx9</code> || dx9
|-
|-
| <code>UnlitGeneric_dx8</code> || dx8.0/dx8.1
| <code>UnlitGeneric_dx8</code> || dx8.0/dx8.1
|-
|-
| <code>UnlitGeneric_dx6</code> || dx6/dx7
| <code>UnlitGeneric_dx6</code> || dx6/dx7
|-
|}
! Refract
 
|-
===Refract===
| <code>Refract_dx90</code> || dx9
{|- width=%100%"
| width="30%" | <code>Refract_dx90</code> || dx9
|-
|-
| <code>Refract_dx80</code> || dx8.0/dx8.1
| <code>Refract_dx80</code> || dx8.0/dx8.1
Line 44: Line 45:
|-
|-
| <code>UnlitGeneric_dx6</code> || dx6/dx7: If you neglect to define a fallback shader, unlit generic is used.
| <code>UnlitGeneric_dx6</code> || dx6/dx7: If you neglect to define a fallback shader, unlit generic is used.
|-
|}
!ShatteredGlass
 
|-
===ShatteredGlass===
| <code>ShatteredGlass</code> || dx9
{|- width=%100%"
| width="30%" | <code>ShatteredGlass</code> || dx9
|-
|-
| <code>ShatteredGlass_dx8</code> || dx8.0/dx8.1
| <code>ShatteredGlass_dx8</code> || dx8.0/dx8.1
Line 54: Line 56:
|-
|-
| <code>Wireframe</code> || dx6: Shattered glass isn't supported under dx6.
| <code>Wireframe</code> || dx6: Shattered glass isn't supported under dx6.
|-
|}
! Water
 
|-
===Water===
| <code>Water_dx90</code> || dx9
{|- width=%100%"
| width="30%" | <code>Water_dx90</code> || dx9
|-
|-
| <code>Water_dx81</code> || dx8.1
| <code>Water_dx81</code> || dx8.1
Line 66: Line 69:
|-
|-
| <code>LightmappedGeneric_dx6</code> || dx7/dx6: This is used if you neglect to define a fallback shader.
| <code>LightmappedGeneric_dx6</code> || dx7/dx6: This is used if you neglect to define a fallback shader.
|-
|}
! WorldTwoTextureBlend
 
|-
===WorldTwoTextureBlend===
| <code>WorldTwoTextureBlend</code> || dx9
{|- width=%100%"
| width="30%" | <code>WorldTwoTextureBlend</code> || dx9
|-
|-
| <code>WorldTwoTextureBlend_dx8</code> || dx8.0/dx8.1
| <code>WorldTwoTextureBlend_dx8</code> || dx8.0/dx8.1
|-
|-
| <code>WorldTwoTextureBlend_dx6</code> || dx6/dx7
| <code>WorldTwoTextureBlend_dx6</code> || dx6/dx7
|-
|}
! WorldVertexTransition
 
|-
===WorldVertexTransition===
| <code>WorldVertexTransition_dx9</code> || dx9
{|- width=%100%"
| width="30%" | <code>WorldVertexTransition_dx9</code> || dx9
|-
|-
| <code>WorldVertexTransition_dx8</code> || dx8.0/dx8.1
| <code>WorldVertexTransition_dx8</code> || dx8.0/dx8.1
|-
|-
| <code>WorldVertexTransition_dx6</code> || dx6/dx7
| <code>WorldVertexTransition_dx6</code> || dx6/dx7
|-
|}
! WorldVertexAlpha
 
|-
===WorldVertexAlpha===
| <code>WorldVertexAlpha</code> || dx9
{|- width=%100%"
| width="30%" | <code>WorldVertexAlpha</code> || dx9
|-
|-
| <code>WorldVertexAlpha_dx8</code> || dx8.0/dx8.1: Note this shader has no fallbacks to dx7 or below.
| <code>WorldVertexAlpha_dx8</code> || dx8.0/dx8.1: Note this shader has no fallbacks to dx7 or below.
|-
|}
! Cable
 
|-
===Cable===
| <code>Cable</code> || dx8.0/dx8.1/dx9
{|- width=%100%"
| width="30%" | <code>Cable</code> || dx8.0/dx8.1/dx9
|-
|-
| <code>UnlitGeneric_DX6</code> || dx6/dx7
| <code>UnlitGeneric_DX6</code> || dx6/dx7
|-
|}
!Eyes
 
|-
===Eyes===
| <code>Eyes</code> || dx8.0/dx8.1/dx9
{|- width=%100%"
| width="30%" | <code>Eyes</code> || dx8.0/dx8.1/dx9
|-
|-
| <code>Eyes_dx6</code> || dx6/dx7
| <code>Eyes_dx6</code> || dx6/dx7
|-
|}
! Modulate
 
|-
===Modulate===
| <code>Modulate</code> || dx8.0/dx8.1/dx9
{|- width=%100%"
| width="30%" | <code>Modulate</code> || dx8.0/dx8.1/dx9
|-
|-
| <code>Modulate_dx6</code> || dx6/dx7
| <code>Modulate_dx6</code> || dx6/dx7
|-
|}
! MonitorScreen
 
|-
===MonitorScreen===
| <code>MonitorScreen</code> || dx8.0/dx8.1/dx9
{|- width=%100%"
| width="30%" | <code>MonitorScreen</code> || dx8.0/dx8.1/dx9
|-
|-
| <code>LightmappedGeneric_dx6</code> || dx6/dx7
| <code>LightmappedGeneric_dx6</code> || dx6/dx7
|-
|}
! Predator
 
|-
===Predator===
| Predator_dx80</code> || dx8.0/dx8.1/dx9
{|- width=%100%"
| width="30%" | Predator_dx80</code> || dx8.0/dx8.1/dx9
|-
|-
| <code>Predator_dx60</code> || dx6/dx7: this fallback shader is only defined to allow you to use the <code>$fallbackmaterial</code> feature to cause the material system to use a different material under dx6 and dx7.
| <code>Predator_dx60</code> || dx6/dx7: this fallback shader is only defined to allow you to use the <code>$fallbackmaterial</code> feature to cause the material system to use a different material under dx6 and dx7.
|-
|-
| <code>UnlitGeneric_dx6</code> || dx6/dx7: This is used if you neglect to define a fallback shader.
| <code>UnlitGeneric_dx6</code> || dx6/dx7: This is used if you neglect to define a fallback shader.
|-
|}
! Sprite
 
|-
===Sprite===
| <code>Sprite_dx8</code> || dx8.0/dx8.1/dx9
{|- width=%100%"
| width="30%" | <code>Sprite_dx8</code> || dx8.0/dx8.1/dx9
|-
|-
| <code>Sprite_dx6</code> || dx6/dx7
| <code>Sprite_dx6</code> || dx6/dx7
|-
|}
! UnlitTwoTexture
 
|-
===UnlitTwoTexture===
| <code>UnlitTwoTexture</code> || dx8.0/dx8.1/dx9
{|- width=%100%"
| width="30%" | <code>UnlitTwoTexture</code> || dx8.0/dx8.1/dx9
|-
|-
| <code>UnlitTwoTexture_dx6</code> || dx6/dx7
| <code>UnlitTwoTexture_dx6</code> || dx6/dx7
|-
|}
! WriteZ
 
|-
===WriteZ===
| <code>WriteZ</code> || dx8.0/dx8.1/dx9
{|- width=%100%"
| width="30%" | <code>WriteZ</code> || dx8.0/dx8.1/dx9
|-
|-
| <code>WriteZ_dx6</code> || dx6/dx7
| <code>WriteZ_dx6</code> || dx6/dx7
|-
|}
! WindowImposter
 
|-
===WindowImposter===
| <code>WindowImposter_dx80</code> || dx8.0/dx8.1/dx9
{|- width=%100%"
| width="30%" | <code>WindowImposter_dx80</code> || dx8.0/dx8.1/dx9
|-
|-
| <code>WindowImposter_dx60</code> || dx6/dx7: this fallback shader is only defined to allow you to use the <code>$fallbackmaterial</code> feature to cause the material system to use a different material under dx6 and dx7.
| <code>WindowImposter_dx60</code> || dx6/dx7: this fallback shader is only defined to allow you to use the <code>$fallbackmaterial</code> feature to cause the material system to use a different material under dx6 and dx7.

Revision as of 17:44, 20 July 2005

Introduction

The following a list of the shader fallbacks for the materials shipped with Half-Life 2. For a description of how shader fallbacks are used, see the Material choices and rendering performance in Controlling Geometry Visibility and Compile Times.

Shader Fallbacks

LightmappedGeneric

LightmappedGeneric_dx9 dx9
LightmappedGeneric_dx8 dx8.0/dx8.1
LightmappedGeneric_NoBump_DX8 dx8.0/dx8.1, but only used when mat_reducefillrate 1 is set. Note that this fallback doesn't actually cause the shader code to do anything different, it's only there to allow a .VMT to specify different shader parameters or a fallback material when mat_reducefillrate 1 is set.
LightmappedGeneric_dx6 dx6/dx7

VertexLitGeneric

VertexLitGeneric_dx9 dx9
VertexLitGeneric_dx8 dx8.0/dx8.1
VertexLitGeneric_dx7 dx7
VertexLitGeneric_dx6 dx6

UnlitGeneric

UnlitGeneric_dx9 dx9
UnlitGeneric_dx8 dx8.0/dx8.1
UnlitGeneric_dx6 dx6/dx7

Refract

Refract_dx90 dx9
Refract_dx80 dx8.0/dx8.1
Refract_dx60 dx6/dx7: refraction isn't supported under dx6 and dx7, this fallback shader is only defined to allow you to use the $fallbackmaterial feature to cause the material system to use a different material under dx6 and dx7.
UnlitGeneric_dx6 dx6/dx7: If you neglect to define a fallback shader, unlit generic is used.

ShatteredGlass

ShatteredGlass dx9
ShatteredGlass_dx8 dx8.0/dx8.1
ShatteredGlass_dx7 dx7
Wireframe dx6: Shattered glass isn't supported under dx6.

Water

Water_dx90 dx9
Water_dx81 dx8.1
Water_dx80 dx8.0
Water_dx60 dx7/dx6: this fallback shader is only defined to allow you to use the $fallbackmaterial feature to cause the material system to use a different material under dx6 and dx7.
LightmappedGeneric_dx6 dx7/dx6: This is used if you neglect to define a fallback shader.

WorldTwoTextureBlend

WorldTwoTextureBlend dx9
WorldTwoTextureBlend_dx8 dx8.0/dx8.1
WorldTwoTextureBlend_dx6 dx6/dx7

WorldVertexTransition

WorldVertexTransition_dx9 dx9
WorldVertexTransition_dx8 dx8.0/dx8.1
WorldVertexTransition_dx6 dx6/dx7

WorldVertexAlpha

WorldVertexAlpha dx9
WorldVertexAlpha_dx8 dx8.0/dx8.1: Note this shader has no fallbacks to dx7 or below.

Cable

Cable dx8.0/dx8.1/dx9
UnlitGeneric_DX6 dx6/dx7

Eyes

Eyes dx8.0/dx8.1/dx9
Eyes_dx6 dx6/dx7

Modulate

Modulate dx8.0/dx8.1/dx9
Modulate_dx6 dx6/dx7

MonitorScreen

MonitorScreen dx8.0/dx8.1/dx9
LightmappedGeneric_dx6 dx6/dx7

Predator

Predator_dx80 dx8.0/dx8.1/dx9
Predator_dx60 dx6/dx7: this fallback shader is only defined to allow you to use the $fallbackmaterial feature to cause the material system to use a different material under dx6 and dx7.
UnlitGeneric_dx6 dx6/dx7: This is used if you neglect to define a fallback shader.

Sprite

Sprite_dx8 dx8.0/dx8.1/dx9
Sprite_dx6 dx6/dx7

UnlitTwoTexture

UnlitTwoTexture dx8.0/dx8.1/dx9
UnlitTwoTexture_dx6 dx6/dx7

WriteZ

WriteZ dx8.0/dx8.1/dx9
WriteZ_dx6 dx6/dx7

WindowImposter

WindowImposter_dx80 dx8.0/dx8.1/dx9
WindowImposter_dx60 dx6/dx7: this fallback shader is only defined to allow you to use the $fallbackmaterial feature to cause the material system to use a different material under dx6 and dx7.
UnlitGeneric_dx6 dx6/dx7: This is used if you neglect to define a fallback shader

See Also

  • DirectX Versions - includes screenshots visually comparing different DirectX levels.