This article's documentation is for anything that uses the Source engine. Click here for more information.

Sky (Source 1 shader)

From Valve Developer Community
Revision as of 07:39, 13 February 2025 by Kr0tchet (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Edit Tabs

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.

Tip.pngTip: (in all games since Left 4 Dead 2) $basetexture is not necessary for games that are HDR-only, as only the $hdrbasetexture or $hdrcompressedtexture will be used.
Note.pngNote: This shader always ignores fog. Skyboxes with UnlitGeneric (and without $nofog 1) are affected by fog.
Warning.pngWarning: The Counter-Strike 2 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.pngWarning: While rare, mat_fullbright set to 1 might sometimes break the rendering of this shader.

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
}

With a compressed HDR skybox texture

If the skybox has been compressed using BGRA8888, then $hdrcompressedtexture should be used instead:

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
}
Todo: Figure out what the "HDR compression method B" mentioned in 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:

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
}

Issues

Icon-callout-cleanup.png
This article or section needs to be cleaned up to conform to a higher standard of quality because:
Reason 
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:

	$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).