$ambientocclusion: Difference between revisions
Deprecated (talk | contribs) (Corrected misinformation about $ambientocclusion parameter in SFM) |
m (Add links; layout cleanup) |
||
Line 1: | Line 1: | ||
[[Image:valveao.jpg|thumb|200px|Various WrinkleMaps maps found in Valve games for eyes and face.]] | [[Image:valveao.jpg|thumb|200px|Various WrinkleMaps maps found in Valve games for eyes and face.]] | ||
'''Ambient occlusion''' is a shading method which helps add realism to local reflection models by taking into account attenuation of light due to occlusion {{clarify}}. Unlike local methods like Phong shading, ambient occlusion is a global method, meaning the illumination at each point is a function of other geometry in the scene. However, it is a very crude approximation to full global illumination. The soft appearance achieved by ambient occlusion alone is similar to the way an object appears on an overcast day. It is globally supported on the EyeRefract shader. The [[Source Filmmaker|IFM]] module, when loaded, makes the '''$ambientocclusion''' parameter function on other shaders such as [[VertexLitGeneric]] as a means of controlling the intensity of SSAO. | '''Ambient occlusion''' is a shading method which helps add realism to local reflection models by taking into account attenuation of light due to occlusion {{clarify}}. Unlike local methods like [[Phong materials|Phong shading]], ambient occlusion is a global method, meaning the illumination at each point is a function of other geometry in the scene. However, it is a very crude approximation to full global illumination. The soft appearance achieved by ambient occlusion alone is similar to the way an object appears on an overcast day. It is globally supported on the [[EyeRefract]] shader. The [[Source Filmmaker|IFM]] module, when loaded, makes the '''<code>$ambientocclusion</code>''' parameter function on other shaders such as [[VertexLitGeneric]] as a means of controlling the intensity of [[Screen Space Ambient Occlusion (SSAO)|SSAO]]. | ||
{{Bug|When used on transparent materials (either <code>[[$translucent]]</code> or <code>[[$alphatest]]</code>, or all materials on a model where a transparent material has been used without compiling with either <code>$Opaque</code> or <code>$MostlyOpaque</code> in the QC file), <code>$ambientocclusion</code> also causes the material to render the effect for any objects behind the material. ''(Tested in Source Filmmaker)''}} | |||
== Using Ambient Occlusion == | == Using Ambient Occlusion == | ||
=== Example VMT Syntax === | === Example VMT Syntax === | ||
The following example is taken from [[Left 4 Dead]] from the model material located in <code>L4D root/materials/models/survivors/teenangst/teenangst_eyeball_l.vmt</code> | The following example is taken from [[Left 4 Dead]] from the model material located in <code>L4D root/materials/models/survivors/teenangst/teenangst_eyeball_l.vmt</code> | ||
Line 12: | Line 14: | ||
EyeRefract | EyeRefract | ||
{ | { | ||
$Iris "models/survivors/green_iris2" | $Iris "models/survivors/green_iris2" | ||
$AmbientOcclTexture "models/survivors/survivor_eye_ao" | $AmbientOcclTexture "models/survivors/survivor_eye_ao" | ||
$Envmap "Engine/eye-reflection-cubemap-" | $Envmap "Engine/eye-reflection-cubemap-" | ||
$CorneaTexture "Engine/eye-cornea" | $CorneaTexture "Engine/eye-cornea" | ||
$EyeballRadius "0.6" | $EyeballRadius "0.6" | ||
$AmbientOcclColor "[.4 .4 .4]" Default 0.33, 0.33, 0.33 | $AmbientOcclColor "[.4 .4 .4]" Default 0.33, 0.33, 0.33 | ||
$Dilation ".5" | $Dilation ".5" | ||
$ParallaxStrength "0.25" | $ParallaxStrength "0.25" | ||
$CorneaBumpStrength ".5" | $CorneaBumpStrength ".5" | ||
$halflambert 1 | $halflambert 1 | ||
$nodecal 1 | $nodecal 1 | ||
$ambientocclusion 1 | $ambientocclusion 1 | ||
$RaytraceSphere 1 | $RaytraceSphere 1 | ||
$SphereTexkillCombo 0 | $SphereTexkillCombo 0 | ||
} | } | ||
</pre> | </pre> | ||
Line 32: | Line 34: | ||
=== VMT Parameters === | === VMT Parameters === | ||
;<code>$AmbientOcclusion <float></code> | ;<code>$AmbientOcclusion <[[float]]></code> | ||
: Controls strength of Ambient Occlusion. (1 = fully enabled, 0 = fully disabled) | : Controls strength of Ambient Occlusion. (1 = fully enabled, 0 = fully disabled) | ||
{{note|Used to control the strength of the SSAO for models in Source Filmmaker.}} | {{note|Used to control the strength of the SSAO for models in Source Filmmaker.}} | ||
Line 40: | Line 42: | ||
: Filename of the ambient occlusion texture to use | : Filename of the ambient occlusion texture to use | ||
{{TODO|How does <code>$ambientocclusiontexture</code> fit in with all of this?}} | {{TODO|How does <code>$ambientocclusiontexture</code> fit in with all of this?}} | ||
== See also == | == See also == | ||
* [[Phong materials]] | * [[Phong materials|Phong Materials]] | ||
* [[$phong]] | * [[$phong]] | ||
* [[$basetexture]] | * [[$basetexture]] |
Revision as of 01:22, 31 July 2019
Ambient occlusion is a shading method which helps add realism to local reflection models by taking into account attenuation of light due to occlusion [Clarify]. Unlike local methods like Phong shading, ambient occlusion is a global method, meaning the illumination at each point is a function of other geometry in the scene. However, it is a very crude approximation to full global illumination. The soft appearance achieved by ambient occlusion alone is similar to the way an object appears on an overcast day. It is globally supported on the EyeRefract shader. The IFM module, when loaded, makes the $ambientocclusion
parameter function on other shaders such as VertexLitGeneric as a means of controlling the intensity of SSAO.

$translucent
or $alphatest
, or all materials on a model where a transparent material has been used without compiling with either $Opaque
or $MostlyOpaque
in the QC file), $ambientocclusion
also causes the material to render the effect for any objects behind the material. (Tested in Source Filmmaker) [todo tested in ?]Using Ambient Occlusion
Example VMT Syntax
The following example is taken from Left 4 Dead from the model material located in L4D root/materials/models/survivors/teenangst/teenangst_eyeball_l.vmt
EyeRefract { $Iris "models/survivors/green_iris2" $AmbientOcclTexture "models/survivors/survivor_eye_ao" $Envmap "Engine/eye-reflection-cubemap-" $CorneaTexture "Engine/eye-cornea" $EyeballRadius "0.6" $AmbientOcclColor "[.4 .4 .4]" Default 0.33, 0.33, 0.33 $Dilation ".5" $ParallaxStrength "0.25" $CorneaBumpStrength ".5" $halflambert 1 $nodecal 1 $ambientocclusion 1 $RaytraceSphere 1 $SphereTexkillCombo 0 }
VMT Parameters
$AmbientOcclusion <float>
- Controls strength of Ambient Occlusion. (1 = fully enabled, 0 = fully disabled)

$AmbientOcclColor "[.n .n .n]"
- Replacing n with a number of the color (RGB format)
$AmbientOcclTexture "path/to/vtf"
- Filename of the ambient occlusion texture to use
$ambientocclusiontexture
fit in with all of this?See also
- Phong Materials
- $phong
- $basetexture
- $envmapmask (specular mask)
- $envmap (environment map)
- $selfillum