Moderator elections are being held. See Valve Developer Community:Moderator elections for more details.
Users who would like to run for moderator must be autoconfirmed and have at least 100 edits. Users can check their own edit count at Special:Preferences.
This article's documentation is for anything that uses the Source engine. Click here for more information.


From Valve Developer Community
(Redirected from Vrad)
Jump to: navigation, search


English (en)Русский (ru)Español (es)中文 (zh)

VRAD VRAD is the command-line tool for Source Source that takes a compiled BSP map and embeds lighting data into it. VRAD's static and pre-compiled light is bounced around the world with a Wikipedia icon radiosity algorithm.

VRAD will:

VRAD is generally the slowest of the three compilers due to the many, many calculations it must perform. Lighting optimization can help, as can ensuring your map is free of leaks.

Warning.pngWarning:VRAD does not compile shadows based on Brush entities alpha channel. If you must have shadows made by a brush entity (such as a fence texture), you can turn the brush entity into a prop via SourceIO SourceIO, Crafty Crafty or propper and put it into the RAD file or compile with $casttextureshadows. Alternatively, use an existing fence prop or the "blocklight" tool texture.
Tip.pngTip:(only in Slammin' Source Map Tools) You can use -worldtextureshadows to make vrad compile shadows based on Brush entities alpha channel.
Warning.pngWarning:VRAD will use 100% of your CPU unless specified otherwise with the -threads # launch option.
Icon-Bug.pngBug:In Half-Life 2: Episode One and Left 4 Dead, users seeing crashes when VRAD compiles HDR lighting should read VRAD HDR Crash Fix.
Icon-Bug.pngBug:In games before Left 4 Dead, .mdl files that don't have .dx80.vtx files with them will lead to VRAD skipping lighting for that prop. Copying the .dx90.vtx file and renaming it to a .dx80.vtx will fix the issue.
Tip.pngTip:A windows batch file to do this automatically has been created here, place above model folder and run .bat.
Note.pngNote:Dark Messiah of Might and Magic is exempt from this issue.
Icon-Bug.pngBug:.mdl files that have the IDST1 header will fail to load for VBSP, and will give a error message stating the prop failed to load; this can be fixed by changing the header to IDST0 in a Hex Editor, or by recompiling the prop in a non-L4D branch Studiomdl application such as Source 2013.
Icon-Bug.pngBug:As of around 5-10 years ago up until at least October 2017, all known copies of VRAD have a thread sharing bug which causes performance to scale poorly to multiple threads, particularly on outdoor scenes with -final set (despite showing 100% CPU usage). The fix to this bug for Source 2013 is available here and edited DLLs are available here. This issue is fixed in Counter-Strike: Global Offensive and Team Fortress 2Mapbase
Blank image.pngTodo: Is this fixed in Slammin' Source Map Tools? When was "5-10 years ago"?
Icon-Bug.pngBug:Randomly causes corrupt lightmaps that look like "ink spills". These can be mostly avoided by not using very long or diagonal brushes, as well as not having too low of a light level in your indoor areas.
Tip.pngTip:Source Engine BSP Lightmap Editor can be used to manually correct a .bsp lightmap data.
Note.pngNote:If you are watching the compile dialog and it looks like it has hung at 9... this is usually because VRAD takes longer with each calculation.
Clarify: This isn't due to bounce calculations.[1]
Icon-Bug.pngBug:VRAD is unable to calculate texture shadows for textures using DXT3 compression. Use DXT5 instead.


vrad [options...] <bsp file>

For example, a regular compile would look like thus:

"Half-Life 2\bin\vrad.exe" -both -StaticPropLighting -StaticPropPolys -TextureShadows sdk_trainstation_01

This will generate and embed both Standard and High Dynamic Range lighting data, at per-vertex detail for prop_static entities. It also generates shadows based on transparency for prop_static entities that have been flagged as casting texture shadows.


Use these in combination with expert compile mode, a batch file, or a frontend such as Compile Pal Compile Pal.


Whether to compile Standard Dynamic Range lighting, High Dynamic Range lighting, or both respectively.
Note.pngNote:Since Left 4 Dead 2, SDR support was dropped. Thus making -ldr and -both obsolete in engine branches made on or after Left 4 Dead 2. Instead, -hdr is required in order to produce proper lighting for your map.
Note.pngNote:Black MesaSlammin' Source Map Tools defaults to compiling only HDR automatically.
Compiles quick low quality lighting. Used for quick previewing.
Note.pngNote:-fast will cause random and discolored splotching to appear in darker areas, as well as shadowed edges around Displacements. It is advised to not ship your map using -fast.
Increases the quality of light_environment and indirect lighting by spending more time firing rays.
Counter-Strike: Global Offensive Sets-StaticPropSampleScale to 16.
-extrasky <integer>
Trace N times as many rays for indirect light and sky ambient.
(-final is equivalent to -extrasky 16; normal is equivalent to -extrasky 1)
-lights <filename>.rad
Load a custom RAD file in addition to lights.rad and the map-specific lights file. Include the file extension in the parameter.
-bounce <integer>
Set the maximum number of light ray bounces. (default: 100).
-smooth <integer>
Set the threshold for automatic phong smoothing of lightmaps between edges, in degrees (default: 45). Use smoothing groups to explicitly define faces as phonged together.
Confirm.pngConfirm: Not in all branches; Source 2013Counter-Strike: Global Offensive have it, but Source 2007 does not.
-luxeldensity <normal>
Scale down all luxels. Default (and maximum) value is 1.
Warning.pngWarning:Setting too low of a value will cause lighting errors.
-softsun <float>
Treat the sun as an area light source of this many degrees. Produces soft shadows. Recommended values are 0-5, default is 0. Identical to the SunSpreadAngle parameter for light_environment, use that instead.
-StaticPropLighting  (in all games since Half-Life 2: Episode Two)
Generate per-vertex lighting on prop_statics; always enabled for light_spot entities. Disables info_lighting entities on props without bump maps. Does not work on props with bump maps, except in Counter-Strike: Global Offensive.
Note.pngNote:(only in Source 2013 Multiplayer)(also in Garry's Mod) Also generates lightmaps for static props that have generatelightmaps enabled.
Warning.pngWarning:This can increase your map's compile times substantially. Disable vertex lighting for props that don't need it to keep compile times down.
Note.pngNote:In Counter-Strike: Global Offensive, in order to get proper lighting on your static props, you will need to run VRAD with this command.
-StaticPropPolys  (in all games since Half-Life 2: Episode Two)
Use the actual meshes of static props to generate shadows instead of using their collision meshes. This results in far more accurate shadowing.
-TextureShadows  (in all games since Half-Life 2: Episode Two)
Generates lightmap shadows from $alphatest and $translucent surfaces of prop_static models that are specified in a RAD file or were compiled with $casttextureshadows. Usually requires -StaticPropPolys to have any effect.

Note.pngNote:(only in Black Mesa) Also generates lightmap shadows from brushes (but not displacements) using $alphatest.
Icon-Bug.pngBug:Not compatible with $envmap env_cubemap; manually define the $envmap path instead.
Note.pngNote:A surface will need a low lightmap scale for most texture shadows to be recognizable.
Nonetheless, textures such as grate fences, foliage, and barbed wire will still cast noticeably more accurate shadows with this command enabled compared to disabled.
Warning.pngWarning:This will not work if a translucent texture's $basetexture parameter in the VMT contains the .vtf file extension; file extensions should be omitted from texture paths in VMTs.
Icon-Bug.pngBug:Static props with multiple skins will always use the alpha channel(s) from the default skin's texture(s), even though the alternative skins' alpha textures are loaded by VRAD. (tested in Day of Defeat: Source)
-aoscale <float> (in all games since Counter-Strike: Global Offensive) (also in Slammin' Source Map Tools,Garry's Mod)
Scales the radius of VRAD's simulated ambient occlusion. 1.0 is default.
Tip.pngTip:Valve uses 1.5 for the new Dust 2.
-aoradius <float> (only in Insurgency Day of InfamyStrata Source)
Set the radius of VRAD's simulated ambient occlusion. 36 is default.
-aosamples <integer> (only in Insurgency Day of Infamy) (also in Slammin' Source Map ToolsStrata Source)
How many samples to use for VRAD's simulated ambient occlusion.
-StaticPropBounce <integer> (only in Counter-Strike: Global Offensive)
Number of static prop light bounces to simulate. The default is 0.
Tip.pngTip:Valve uses 3 static prop bounces for the new Dust 2.
Note.pngNote:Any static props that you want light to bounce off of must also have their "Enable Bounced Lighting" keyvalue set.
-StaticPropLightingFinal  (only in Counter-Strike: Global Offensive)
Obsolete Merged with -final.
-StaticPropLightingOld  (only in Counter-Strike: Global Offensive)
Will use the old lighting algorithm on props, light affects them much more.
-choptexlights  (only in Black Mesa)
Enables chopping of texture lights generated from a lights file. Control texture light quality with lightmap density in Hammer. Dramatically increases both texture light quality and compile time.
-extratransfers  (only in Black Mesa)
Enable overscaling of light transfers.
-transferscale <float> (only in Black Mesa)
This is the scale factor of light transfers. Increased values make surfaces transfer extra light (scale of 2-4 suggested). Default 1.0.
-satthresh <float> (only in Black Mesa)
This is the threshold that checks how saturated a material color is. Used with -satthreshscale. Default 0.4.
-satthreshscale <float> (only in Black Mesa)
The amount to scale light transfers from surfaces that pass the saturation threshold. Default 3.0.
-ambientocclusion  (only in Black Mesa) (also in Slammin' Source Map Tools,Garry's Mod)
Enable lightmapped ambient occlusion.
Tip.pngTip:Use very low lightmap scale for small stairs or add additional light sources to light them, otherwise stairs will be completely black.

-experimentalambientocclusion  (only in Black Mesa)
Use an improved algorithm for the ambient occlusion.
Warning.pngWarning:Broken. Not being used.

-cascadeshadows  (only in Black Mesa)
Indicates that lightmap alpha data is interleved in the lighting lump, required for CSM.
Icon-Important.pngImportant:Must be used with -staticproplighting to have proper lighting of static props.

-realskylight  (only in Black Mesa)
Enables VRAD to compute skylight ambient color by using actual values from skybox.
Note.pngNote:This option was originally designed only for levels in Xen, to make lighting for islands more natural. With earthbound outdoor levels this option makes level lighting weird, especially if level uses a skybox with an open, clear sky.

-realskylightscale <float> (only in Black Mesa)
Scale factor of -realskylight intensity. Default: 1.0
-directsunlightisforadditivemode  (only in Black Mesa)
Toggles direct sunlight for additive mode.
Icon-Bug.pngBug:This option is not compatible with cascade shadows.
An example.

-ambient <vector> (only in Counter-Strike: Global Offensive) (also in Dark Messiah of Might and MagicSlammin' Source Map Tools)
Sets the ambient term. Can be used to tweak lightmap color. Appears to just mix the color into all lightmaps.
-PortalTraversalLighting  (only in Strata Source)
Enables static lights to go through linked_portal_door, if Static Portal value is Yes.

-PortalTraversalAO  (only in Strata Source)
Enables static light Ambient Occlusion to go through linked_portal_door, if Static Portal value is Yes.

-softencosine  (only in Slammin' Source Map Tools)
Softens coloured lighting so it blends more accurately.
-coring  (only in Slammin' Source Map Tools)
Scale the light threshold before a luxel is completely unlit, used to save lightmap data.
Confirm.pngConfirm: Although this command exists in stock Source 2013 VRAD, it does not seem to do anything.
-worldtextureshadows  (only in Slammin' Source Map Tools)
Allows world polys to cast texture shadows, much like models can.
Icon-Bug.pngBug:Doesn't work with displacements.
-translucentshadows  (only in Slammin' Source Map Tools)
Enables -worldtextureshadows on $translucent surfaces. As by default only $alphatest surfaces cast baked shadows.
Icon-Bug.pngBug:Doesn't work with displacements.


Run as a low-priority process.
-threads <integer>
Override the number of CPU threads used. Maximum is 16 threads (32 in Counter-Strike: Global Offensive also in Slammin' Source Map ToolsMapbase). With a patched vrad_dll you can use 32 threads.
Tip.pngTip:If you know that the compile time will be very long and would rather do something else while waiting, it may be useful to specify a number of threads 1 or 2 lower than what your CPU has. This allows the computer to allocate some more power to other applications, making it less choppy while lighting is being compiled. Keep in mind that this may slightly extend your compile time.
Use VMPI to distribute computations.
-mpi_pw <string>
Use a password to choose a specific set of VMPI workers.
Disable supersampling. This will lead to blockier, less accurate lighting.
-chop <integer>
Smallest number of luxel widths for a bounce patch, used on edges. (Default: 4)
-maxchop <integer>
Coarsest allowed number of luxel widths for a patch, used in face interiors. (Default: 4)
-dispchop <integer>
Smallest acceptable luxel width of displacement patch face. (Default: 8)
This can be used if there are splotches of bounced light on terrain. The compile will take longer, but it will gather light across a wider area.
-compressconstant <integer>
Compress lightmaps whose color variation is less than this many units.
Blank image.pngTodo: Find out if this is branch specific, as it doesn't work with TF2.
Uses low quality per-leaf ambient sampling to save compute time.
-LeafAmbientSampleReduction <float> (only in Counter-Strike: Global Offensive)
Reduction factor for ambient samples. Defaults to 1.0.
-noao  (only in Insurgency Day of Infamy)
Disables compiling simulated ambient occlusion for lightmaps.
-StaticPropSampleScale <float> (only in Counter-Strike: Global Offensive)
Regulates the generated per-vertex prop_static lighting.
slow: 16 (high quality); default: 4 (normal); fast: 0.25 (low quality)
Note.pngNote:-final is the equivalent of having -StaticPropSampleScale 16.
-disppatchradius <float>
Sets the maximum radius allowed for displacement patches.
-ambientfromleafcenters  (only in Counter-Strike: Global Offensive)
Samples ambient lighting from the center of the leaf.


Emit red light when "a luxel has no samples".
-vproject <directory>
-game <directory>
Override the VPROJECT environment variable.
-insert_search_path <directory>
Includes an extra base directory for mounting additional content (like Gameinfo.txt entries). Useful if you want to separate some assets from the mod for whatever reason.
Turn on verbose output.
Don't bring up graphical UI on vproject errors.
Dump patches to debug files.
Write normals to debug .txt files.
Places debugging data in lightmaps to visualize supersampling.
Force direct lighting into different lightmap than radiosity.
Wait for a keypress on exit.
Don't light detail props.
Move sample centers.
Log the sample hash table to samplehash.txt.
Only light detail props and per-leaf lighting.
-maxdispsamplesize <integer>
Set max displacement sample size (default: 512).
Write large minidumps on crash.
Only perform direct static prop lighting.
When lighting static props, just show their normal vector.
Turn off recursion into 3d skybox (skybox shadows on world).
Globally disable self-shadowing on static props.
-dumppropmaps  (only in Source 2013 Multiplayer)
Dump computed static prop lightmaps as TGA files.
Tip.pngTip:This can be used to create lightmaps for dynamic props, using the $lightmap shader parameter.
-unlitdetail  (only in Counter-Strike: Global Offensive)
Disables lighting for detail props.
-reflectivityScale <float> (only in Slammin' Source Map Tools)
Scale the $reflectivity of all textures. Default 1.0

Lights files

Main article:  RAD file#Source 1

Console Output

Blank image.pngTodo: Add description about missing outputs output (BuildVisLeafs, other)

See also