Sky (Source 1 shader): Difference between revisions
Jump to navigation
Jump to search
Tip:(in all games since
) $basetexture is not necessary for games that are HDR-only, as only the $hdrbasetexture or $hdrcompressedtexture will be used.
Note:This shader always ignores fog. Skyboxes with UnlitGeneric (and without
Warning:The
Counter-Strike 2 import script doesn't like $hdrcompressedtexture; change it to $basetexture, then decompress to
EXR with no_vtf and use that instead[Clarify].
Warning:While rare, mat_fullbright set to 1 might sometimes break the rendering of this shader.
No edit summary |
m (replaced "source" with "syntaxhighlight") |
||
Line 9: | Line 9: | ||
If the skybox texture uses [[Valve Texture Format#Image_data_formats|uncompressed BGRA16f16f16f16f]], then the [[VMT]] should look something like this: | If the skybox texture uses [[Valve Texture Format#Image_data_formats|uncompressed BGRA16f16f16f16f]], then the [[VMT]] should look something like this: | ||
< | <syntaxhighlight lang=php> | ||
sky | sky | ||
{ | { | ||
Line 23: | Line 23: | ||
If the skybox has been [[Valve Texture Format#HDR compression|compressed using BGRA8888]], then [[$hdrcompressedtexture]] should be used instead: | If the skybox has been [[Valve Texture Format#HDR compression|compressed using BGRA8888]], then [[$hdrcompressedtexture]] should be used instead: | ||
< | <syntaxhighlight lang=php> | ||
sky | sky | ||
{ | { | ||
Line 39: | Line 39: | ||
If an HDR version of the skybox texture is not available, [[$hdrbasetexture]] can use the same VTF as [[$basetexture]]: | If an HDR version of the skybox texture is not available, [[$hdrbasetexture]] can use the same VTF as [[$basetexture]]: | ||
< | <syntaxhighlight lang=php> | ||
sky | sky | ||
{ | { | ||
Line 53: | Line 53: | ||
{{cleanup|See [[HDR Skybox Creation]] for better explanation of when $basetexturetransform may be necessary.}} | {{cleanup|See [[HDR Skybox Creation]] for better explanation of when $basetexturetransform may be necessary.}} | ||
You might find that skyboxes sometimes fit the entire projection area of a level. To re-scale the material to fit, use [[$basetexturetransform]] or add the following line: | You might find that skyboxes sometimes fit the entire projection area of a level. To re-scale the material to fit, use [[$basetexturetransform]] or add the following line: | ||
< | <syntaxhighlight lang=php> | ||
$basetexturetransform "center 0 0 scale 1 2 rotate 0 translate 0 0" // For cutting off the bottom halves of the skybox | $basetexturetransform "center 0 0 scale 1 2 rotate 0 translate 0 0" // For cutting off the bottom halves of the skybox | ||
</ | </syntaxhighlight> | ||
The <code>scale 1 2</code> segment will maintain the fill-sizing of the X-axis, while locking the texture to the center line of the Y-axis (i.e. the absolute horizon line). | The <code>scale 1 2</code> segment will maintain the fill-sizing of the X-axis, while locking the texture to the center line of the Y-axis (i.e. the absolute horizon line). | ||
{{src topicon|nocat=1}} | |||
[[Category:Shaders]] | [[Category:Shaders]] |
Revision as of 07:38, 13 February 2025
Sky is a shader for materials in Source meant for 2D skyboxes. The old method of making skyboxes before Source 2007 involved using the UnlitGeneric shader with $ignorez 1
. This shader expands the amount of usable parameters and also allows for HDR skyboxes.



$nofog 1
) are affected by fog.



With an uncompressed HDR skybox texture
If the skybox texture uses uncompressed BGRA16f16f16f16f, then the VMT should look something like this:
sky
{
$basetexture skybox/sky_wasteland_00up // Sky texture to use for LDR
$hdrbasetexture skybox/sky_wasteland_00_hdrup // Uncompressed HDR Sky texture to use for HDR-enabled maps
$nofog 1
$ignorez 1
$nomip 1
}
</source>
=== With a compressed HDR skybox texture ===
If the skybox has been [[Valve Texture Format#HDR compression|compressed using BGRA8888]], then [[$hdrcompressedtexture]] should be used instead:
<syntaxhighlight lang=php>
sky
{
$basetexture skybox/sky_wasteland_00up // Sky texture to use for LDR
$hdrcompressedtexture skybox/sky_wasteland_00_hdrup // Compressed HDR Sky texture to use for HDR-enabled maps
$nofog 1
$ignorez 1
$nomip 1
}
</source>
{{todo|Figure out what the "HDR compression method B" mentioned in {{file|sky_hdr_dx9|cpp}} does differently, as it asks for $hdrcompressedtexture0, $hdrcompressedtexture1, and $hdrcompressedtexture2 instead of a single $hdrcompressedtexture.}}
=== Without an HDR skybox texture ===
If an HDR version of the skybox texture is not available, [[$hdrbasetexture]] can use the same VTF as [[$basetexture]]:
<syntaxhighlight lang=php>
sky
{
$basetexture skybox/sky_wasteland_00up // Sky texture to use for LDR
$hdrbasetexture skybox/sky_wasteland_00up // Sky texture to use for HDR, if the texture has NOT been specifically compiled for HDR
$nofog 1
$ignorez 1
$nomip 1
}
</source>
=== Issues ===
{{cleanup|See [[HDR Skybox Creation]] for better explanation of when $basetexturetransform may be necessary.}}
You might find that skyboxes sometimes fit the entire projection area of a level. To re-scale the material to fit, use [[$basetexturetransform]] or add the following line:
<syntaxhighlight lang=php>
$basetexturetransform "center 0 0 scale 1 2 rotate 0 translate 0 0" // For cutting off the bottom halves of the skybox
The scale 1 2
segment will maintain the fill-sizing of the X-axis, while locking the texture to the center line of the Y-axis (i.e. the absolute horizon line).