Difference between revisions of "VRAD"

From Valve Developer Community
Jump to: navigation, search
(added -noskyboxrecurse; -nossprops)
Line 122: Line 122:
:Write large minidumps on crash.
:Write large minidumps on crash.
:Only perform direct static prop lighting
:Only perform direct static prop lighting.
:When lighting static props, just show their normal vector
: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.

Revision as of 02:45, 2 February 2012

VRAD is the command-line tool 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 radiosity algorithm.

VRAD will:

VRAD is the 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.

Tip.png Tip: 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 light bounce calculation.
Bug.png Bug: Ep1 and L4D users seeing crashes when VRAD compiles HDR lighting should read VRAD HDR Crash Fix.


vrad [options...] <bsp file>

For example:

"%sourcesdk%\bin\orangebox\bin\vrad" -both -StaticPropLighting sdk_trainstation_01

This will generate and embed both standard and High Dynamic Range lighting data, at per-vertex detail for prop_static entities.

Bug.png Bug: To find resources in GCF files, VRAD must be started in %sourcesdk%\bin\orangebox\ (or ep1 as the case may be). You can do this with the cd command, or by setting the "Start In" value of a Windows shortcut. In Batch Compiler, set the BinRoot variable.


Use these in combination with expert compile mode or a batch file.


Whether to compile standard or High Dynamic Range lighting, or both.
Quick and dirty lighting. Don't ship with this.
Increases the quality of light_environment and indirect lighting by spending more time firing rays.
-extrasky <int>
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 lights file in addition to lights.rad and map-specific lights file.
-bounce <int>
Set the maximum number of light ray bounces (default: 100).
-smooth <int>
Set the threshold for smoothing groups, in degrees (default: 45).
-luxeldensity <normal>
Scale down all luxels. Default (and maximum) value is 1.
-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.
Generate per-vertex prop_static lighting; always enabled for light_spot entities. Disables info_lighting entities on props WITHOUT normal maps.

-StaticPropPolys (in all games since Half-Life 2: Episode TwoHalf-Life 2: Episode Two)

Perform shadow tests of prop_statics at polygon precision. Default is to use collision meshes.

-TextureShadows (in all games since Half-Life 2: Episode TwoHalf-Life 2: Episode Two)

Generates lightmap shadows from $translucent surfaces of models (NOT brushes) that are specified in a lights file and being used with prop_static. Usually requires -StaticPropPolys to have any effect.
Note.png Note: A surface will need a low lightmap scale for most texture shadows to be recognisable.


Run as a low-priority process.
-threads <int>
Override the number of CPU threads used.
Use VMPI to distribute computations.
-mpi_pw <string>
Use a password to choose a specific set of VMPI workers.
Disable supersampling.
-chop <int>
Smallest number of luxel widths for a bounce patch, used on edges.
-maxchop <int>
Coarsest allowed number of luxel widths for a patch, used in face interiors.
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 <int>
Compress lightmaps whose color variation is less than this many units.


Emit red light when "a luxel has no samples".
-vproject <directory>
-game <directory>
Override the VPROJECT environment variable.
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 #
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.

Lights files

A light file is a plain text file that can be used to manipulate the way VRAD handles given materials when compiling static lighting. All lights files must have the .rad file extension and must be in the same folder as your gameinfo.txt.

There are:

  1. lights.rad, the global file.
  2. An auto-loaded map light file, using the format <map name>.rad.
  3. Any number of additional lights files that can be added with the -lights parameter.


Lights files perform these functions, one rule per line:

<material> <red> <green> <blue> <intensity> <hdr_red> <hdr_green> <hdr_blue> <hdr_intensity>
Makes the material emit the given light value when applied to a brush face (hdr_ values are optional). Texture scale has an effect on final intensity.
Note.png Note: materials that aren't in a folder must have a slash before their name.
noshadow <material name>
Prevents the named material from casting shadows.
forcetextureshadow <model path>.mdl
Enables translucency shadow testing for a model when VRAD is run with -TextureShadows. Path is relative to the models folder.
Prefixes to make any rule only apply to LDR or HDR lighting.

See also