LightmappedReflective

From Valve Developer Community
Revision as of 05:55, 11 July 2021 by Primavera (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

LightmappedReflective is the shader used by func_reflective_glass. This shader renders real-time reflection and refractions similar to Water (shader).

Warning.png Warning: All parameters listed in the example (except $bumpframe, %tooltexture and $surfaceprop) must be included when used, or func_reflective_glass may not work properly.

Example

The example shown here is materials/glass/reflectiveglass001.vmt

"lightmappedreflective"
{
	"%tooltexture" "dev/flat_normal"
	"$refracttexture" "_rt_WaterRefraction"
	"$refractamount" "0"
	"$refracttint" "[.5 .5 .6]"

	"$reflecttexture" "_rt_WaterReflection"
	"$reflectamount" "0"
	"$reflecttint" "[1 1 1]"

	"$fresnelpower" "0"
	"$minreflectivity" "0.8"
	"$maxreflectivity" "1.0"
	
	"$normalmap" "dev/flat_normal"

	"$surfaceprop" "glass"
	"$bumpframe" "0"
}
Bug.png Bug: Adding proxies to a lightmappedreflective causes the texture to not be drawn. (Could this be because it includes some default proxy in order for it to work, and once there is a user-defined proxy, those "behind the scenes" proxies are no longer there?)
Bug.png Bug: Does not appear to work in Portal 2
Warning.png Warning: Although this is functional in Portal 1, the reflection does not update when viewed through portals and portals will only update in the reflection if both of them are visible to you and to the func_reflective glass. Also, if the portals are rotated differently and viewed through the func_reflective_glass, the portals will display incorrectly.

Shader parameters

Textures

$basetexture <texture>
Albedo texture, optional.
$normalmap <texture>
bump map, per-pixel warping of the reflection
$bumpframe <integer>
Frame to start the animated du/dv map and bump map on, respectively. Somewhat confusingly, $bumpframe affects $normalmap, which should be pointing to a bump map.
$bumptransform <matrix>
Transforms the bump map texture.
The default position is "center .5 .5 scale 1 1 rotate 0 translate 0 0".
  1. center defines the point of rotation. Only useful if rotate is being used.
  2. scale fits the texture into the material the given number of times. '2 1' is a 50% scale in the horizontal X axis while the vertical Y axis is still at original scale.
  3. rotate rotates the texture counter-clockwise in degrees. Accepts any number, including negatives.
  4. translate shifts the texture by the given numbers. '.5' will shift it half-way. 1 will shift it once completely over, which is the same as not moving it at all.
Note.png Note: All values must be included!
Bug.png Bug: Scaling the texture may cause odd issues where the Texture Lock tool in Hammer will not actually lock the texture in place.
Bug.png Bug: Rotating textures applied on brushes will rotate around the map origin (confirm: Orangebox engine only?). A fix for this is to change the center position in the VMT to the brush's origin.

Reflection

$reflecttexture <texture>
Texture to use for reflection. For real-time reflections, use _rt_WaterReflection.
$reflectamount <float>
Amount of warp for the reflection. Higher values produce more warping. Also controls the strenght of the bump map
$reflecttint <RGB matrix>
Color tint for the real-time reflection.
$reflectance <float>
Controls opacity of reflection. Similar to $alpha
$envmapmask <texture>
Per-pixel opacity of reflection
$minreflectivity <float>
To do: What is this?
$maxreflectivity <float>
To do: What is this? It seems to do as the name suggests, controls the max reflection strength similar to $reflectance

Refraction

$refracttexture <texture>
Texture to use for refraction. For real-time refractions, use _rt_WaterRefraction.
$refractamount <float>
Amount of warp for the refraction. Higher values produce more warping.
$refracttint <RGB matrix>
Color of the refraction.
Warning.png Warning: It is recommended that you set this to white or something close to white so that edge transitions work properly on DX9.

Other

$surfaceprop <name>
See $surfaceprop.
%tooltexture <texture>
Defines the texture Hammer will display in the material browser.
$fresnelpower <float>
Controls fresnel effect of reflections.
$translucent <boolean>
Will make the surface both reflective and transparent dependent on the angle and distance of view.
Warning.png Warning:  MUST be set to "1" in Counter-Strike:Global Offensive in order to display the $basetexture