VRAD++
Jump to navigation
Jump to search

Note:Any features which require Static prop flags greater than 0xFF are unavailable when compiling for the singleplayer format, as the static prop lump used by the older format only supports 8 bits of flags, instead of 32.
Developer(s)
Initial release
Jul 10, 2025
Stable release
Feb 3, 2026
Type
Map compiler
Distribution
Freeware
Download
VRAD++ is a community-made modification of Source's VRAD developed by ficool2.
Differences
- Scales up to 64 threads
- Small performance optimizations
- Shared LDR/HDR compiling:
- When using
-both, LDR lighting data will be redirected to HDR at no extra file size cost - This means you don't need to compile VRAD twice for LDR and HDR users anymore (compatible with both)
- Passing in
-ldror-hdrwill still explicitly compile in LDR or HDR mode only, respectively - HDR data will not be remapped if LDR data is already present
- Therefore if you need different LDR and HDR lighting, compile with
-ldrand-hdrseparately
- When using
- Bypassed "
numplanes+fakeplanes>=MAX_MAP_PLANES" limit - Light count is now unlimited instead of capped at 8192
- Added AppID mounting in gameinfo.txt
- Added shadow casting for dynamic props
- Set
vrad_model_cast_shadowsto1in the entity to enable this - This is intended for props that won't move and can't be a static prop, for example resupply lockers in TF2
- Uses the first frame of sequence 0, or uses the animation set by
DefaultAnim(like on prop_dynamic) - Modelscale is supported
- Set
- Added new light_projected light type
- Behaves like a env_projectedtexture but applied at compile time to lightmaps
- Same properties as light_spot, with an additional
texturenamekey (path to VTF) - Outer angle controls "size" of projected angle
- Alpha channel is multiplied with the output light (black - no light contribution)
- Non-square aspect ratios and roll angle are supported
- Renamed to light_spot after compilation so it can be toggled in-game
- Added support for light_directional light type
- Renamed to light_spot after compilation so it can be toggled in-game
- Added ambient occlusion baking
- Custom implementation that is an order of magnitude faster than AO in
Slammin /
CS:GO (!) - Set
-ambientocclusionor-aoto enable this - Customize with
-aoradius,-aoscale,-aopropsamples,-aofacesamples - Samples are automatically adjusted for
-fastand-finalmode - Default AO radius and scale is 32 units and 0.5 respectively
- Radius in 3D sky is correctly scaled (every other VRAD AO implementation has this bug)
- Use
-aodebugto visualize ambient occlusion
- Custom implementation that is an order of magnitude faster than AO in
- Added new QMC sampler for ambient, sunlight and ambient occlusion
- This allows lighting to converage to the ground truth faster
- Same sampler as used by modern raytracers, such as in
Blender - Less samples are required for a good result
- Since less samples are required,
-finalhas now been reduced to-extrasky 8by default (from 16)
- Added soft lights
- When
_light_radiuskeyvalue on a light is set, the light is treated as a sphere/disk - Allows for casting softer shadows
- Note that soft lights will take longer to compile than hard lights
- Added
-extrasoftparameter to control sample multiplier for soft lights- Defaults are 1, 0.25 on
-fast, 4 on-final
- Defaults are 1, 0.25 on
- Currently only supports light and light_spot
- When
- Added
-StaticPropSampleScale- Controls sample multiplier for prop vertex lighting (default is 1)
- Defaults to 4 with
-final, which will slightly increase compile times - However this will improve quality of prop lighting in areas starved of sunlight or bounced surfaces
- Added
-reflectivityscale - Added
-worldtextureshadows- Allows
$alphatestbrush textures to cast proper shadows like props - Requires
-textureshadows
- Allows
- Added
-translucentshadows- Similar to
-worldtextureshadowsbut for$translucentbrush textures - Requires
-textureshadowsand-worldtextureshadows
- Similar to
- Added
-forcetextureshadows- Forces texture shadows to be enabled on all props
- Added DXT3 format support for texture shadows
- Added support for
%alphatexture- Allows overriding texture used for texture shadows on geometry
- Added experimental support for static props to shadow ambient cubes
- Disabled by default, use "-propambient" to enable
- Uses collision model of the static prop as the approximation
- Ambient cubes won't be generated inside solid static props
- Vertex lighting from the props will contribute to the ambient cubes
-StaticPropLightingdoes not need to be enabled- Note that this won't solve sunlight applying to entities shadowed by static props, as the engine ignores prop visiblity at runtime
- See this page for detailed info about this issue
- Added experimental support for named light_environment and light_directional
- Fixes static props having black lighting
- To use: you must "jail" the light entity by itself inside a nodraw cube in the void
- Not doing so will potentially lead to bad performance
- Named light environment still has engine bugs, mainly that props may have broken light after toggling the sunlight
- This can be workarounded by flipping the value of r_radiosity in console
- In
Garry's Mod, Lua can be used for this - In singleplayer games, you can issue a command with point_clientcommand or VScript
- Added support for Patch materials for loading texture shadows
- Added support for processing HL2 (SDK13 Singleplayer) BSP formats
- Added
-patchlightmapsizeto set minimum lightmap size for patches (default is 16)- This controls how faces with lower lightmap scales get subdivided for bounced lighting
- Lower values will subdivide more, at the cost of increased compile time and memory usage
- This may sometimes solve issues with thin surfaces obstructed by geometry not receiving light
- Added
-choptexlights- Allows subdivision of faces that have texlights
- Can create more smoother-looking lights from faces but may take longer to compute
- Added support for using decimals in lightmap scales
- Added
-report_search_pathsto list current search paths for debugging - Added
-propdebugfor tracking down what props take a long time to compile - Significantly improved performance and memory usage of bounced lighting on faces with low lightmap scales
- Slightly improved displacement bounced lighting to be more granular
- Benefits thin/small displacements the most
- Added
-DisplacementLightingOldto use old calculations
- Improved vertex lighting for props
- Added
-StaticPropIndirectModeto use old behavior if desired
- Added
- Fixed maps with more than 13 million triangles taking a very, very long time to compile
- Fixed rays missing exact diagonal corner intersections
- Both of these bug exists in all other versions of VRAD
- Fixed prop lightmaps being dumped into wrong color space with
-dumppropmaps- Prop lightmaps are also now dumped into
sp_lightmapsdirectory of the game
- Prop lightmaps are also now dumped into
- Fixed prop lightmaps always using
fastlighting samples and ignoring-extrasky- As a result, prop lightmaps will take slightly longer to compile, but will look significantly better
- Fixed maps with radial vis (FarZ set in env_fog_controller) drawing 3D sky in 2Dsky-only areas
- Fixed light_environment
SunSpreadAnglenot using more samples under-final- Maps using a spread angle greather than 0 will take slightly longer to compile with
-extraskyas a result, but the result looks better compared to stock
- Maps using a spread angle greather than 0 will take slightly longer to compile with
- Redundant vertex lighting is skipped for lightmapped props (saves compile time and file size)
.dx90.vtxdata is loaded for vertex lighting instead of.dx80.vtx- Broken vertex data for props will now be skipped over when compiling
- Fixed bug where broken vertex data in props skipped vertex lighting for other props
- Removed memory column from BSP statistics as its useless
- Named or styled lights are now sorted by brightness priority for faces
- Reduces occurence of bad lighting from overlapping named/styled lights
- Static prop lighting is no longer skipped on
-fastmode - Added
-scale,-ambient,-dlight,-sky,-notexscale,-coringdebug options - Unlimited texlight support in .rad files
- Comments in .rad files are now skipped
- Cleaned up formatting of some messages and warnings
Supported games
VRAD++ is currently available for all games on
Team Fortress 2 branch, as well as
Garry's Mod (64-bit only).
The older BSP format used by Source 2013 Singleplayer games is also supported, but the compilers need to be installed to a supported 64-bit game such as
Source SDK Base 2013 - Multiplayer or
Garry's Mod.
Todo: Guide on setting up Tools++ for
.
External links
- Download from the official website (
Tip: expand VRAD++ and scroll down to the bottom of the changelog ) - Download from the official GitHub repository (
Tip: find the tools_plusplus.zip file in the Assets section of the latest release )
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||