VBSP++
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
Jun 28, 2025
Stable release
Jan 18, 2026
Type
Map compiler
Distribution
Freeware
Download
VBSP++ is a community-made modification of Source's VBSP developed by ficool2.
Differences
- Automatically reduces brushes and brushsides usage of the map by 10-30% (
MAX_MAP_BRUSHES,MAX_MAP_BRUSHSIDES) - Automatically reduces planes usage of the map up to 40% if limit is hit (
MAX_MAP_PLANES)- If plane limit is exceeded,
VRAD++ must be used or lighting will be broken
- If plane limit is exceeded,
- No t-junction limit
- No detail prop limit
- Raised overlay limit to 8192 and internal entity limit to 65536
- Increased maximum switchable lights from 32 to 96
-leaktestis now enabled by default, i.e. stops compile on leaks- Added
-noleaktestto disable this behavior
- Added
- Added AppID mounting in gameinfo.txt
- Added support for mounting custom shaders in mods
- Added support for custom
$surfaceprops on clip brushes - Added support for compiling 4-way blends (for games that support it)
- Added func_detail_blocker (like newer
VBSPs) - Added
-blocksize(default is 1024)- Useful to compute visibility faster on open, large maps like surf (I recommend 2048)
- Using a higher blocksize also reduces your vertex count, useful to circumvent vertex limit
- Added
-allowdynamicpropsasstatic(allows any props to used as static props)
- Note that some props might work right with this, particularly props that aren't compiled with $staticprop
- Added per-prop ambient occlusion toggle
- To use, set
disableambientocclusion 1keyvalue on the entity - Does not work on HL2/Singleplayer BSPs due to older static prop format
- To use, set
- Added proper support for compiling power of 4 displacements (like
CS:GO)
- Added parallax_obb entity support for mods that have parallax cubemaps
- Added func_detail_illusionary (identical to func_detail but non solid)
- Added %compileNoShadows
- Added func_nobevel support
- Added
-nobevel(disables brushsides for all angled geometry. I do not recommend using this, use func_nobevel instead) - Added optimization to automatically disable vertex lighting for props with
$bumpmap/$phong- Reduces time spent in VRAD with
-staticproplighting - Use
-showineligiblevertexlitpropsto show what props were marked ineligible for vertex lighting
- Reduces time spent in VRAD with
- Added logging if FGD has parsing errors
- Added
-nonamefixupto disable default instance name prefixing withInstanceAuto - Added
-singleplayeroption to compile maps for HL2 (SDK13 Singleplayer) BSP format - Added warning if using info_lighting on dynamic entities
- Added %compileNoShadows support
- Added support for compiling lightmaps on Water if
$lightmapwaterfogis set (for mods that support it) - Added support for high lightmap sizes (useful for games that support
-maxlightmapdim) - Added support for saving
enablelightbounceflag for static props - Added support for reading decimal values from face lightmap scales
- Added
-nohdrcubemapto not write HDR cubemaps to BSP, useful if map is compiled in LDR only- Likewise Template:Code- exists to not write LDR cubemaps
- Added
-nobump(disables bumpmap lightmaps on all faces) - Added
-maxluxelscale(clamps maximum luxel scale, default is no limit) - Added
-report_search_pathsto list current search paths for debugging-leaktestwill now stop on areaportal leaks
- Restored support for
-maxlightmapdimand-defaultluxelsizeparameters - func_occluder, func_areaportal, func_viscluster, func_nobevel, parallax_obb no longer count towards the brush limit
- Improved clarity of some warnings and removed useless ones
- Fixed instances not collapsing correctly if FGD had unrecognized types
- Fixed instance names prefixed with ! being remapped
- Fixed remapped instance I/O always using ESC separators (fixes HL2 compatibility)
- Fixed smoothing groups not working on func_detail
- Fixed displacements not being rotated correctly in instances
- Fixed occluders not being collapsed correctly in instances
- Fixed missing texture cubemaps if skybox has mismatched side dimensions
- Fixed crash if an instance overflowed brush or brushsides limit
- Fixed crash if instance name was too long
- Fixed crash if no surfaceprops were loaded
- Fixed bug where brushside count was varying depending on the CPU
Supported games
VBSP++ 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 via the -singleplayer argument, 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
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||