VBSP
Jump to navigation
Jump to search
VBSP is the tool that compiles a raw VMF file into the Binary Space Partition format. It is generally followed by VVIS and VRAD.
VBSP will:
- Convert brushes to polygons
- Generate visleaves
- Generate detail props
- Swallow most internal entities into the world
- Replace specular materials with patched versions that link to the nearest cubemap
- Report leaks as .lin files
- Embed the entity block
- Merge groups of static props sharing the same material (only in
)
While the resulting BSP file can be played directly it has no visibility control (poor performance) and no lighting.
IDST1 header will fail to load for VBSP, see VRAD's bugs. [todo tested in ?]Launch options
Syntax
<vbsp.exe path> [options] <VMF File>
For example:
"Half-Life 2\bin\vbsp.exe" -onlyents sdk_trainstation_01
This will re-embed the entity block without affecting the world.
Common options
-onlyents and -keepstalezip will mark the map as stale by embedding the file stale.txt into the BSP. Loading stale maps in the engine will cause a "This map is not final!!" warning message in the console.- -v
- -verbose
- Turn on verbose output (also shows more command-line options). Use without any other parameters.
- -onlyents
- Only import the entities from the VMF. Brushes (including brush entities) and internal entities are not modified. Conserves existing lighting and vis data.
- -onlyprops
- Only update static and detail props (i.e. the internal entities). Does not generate a .prt file, making VVIS fail!
- -glview
- Writes glview data to the VMF's directory.
-tmpoutwill cause the files will be written to\tmpinstead. - -nodetail
- Removes func_detail brushes. The geometry left over is what affects visibility.
- -nowater
- Get rid of water brushes.
- -low
- Run as an idle-priority process.
- -vproject <directory>
- Override the VPROJECT environment variable.
- -game <directory>
- Specify the folder of the
gameinfo.txtfile. - -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.
- -embed <directory>
- Embed the contents of <directory> in the packfile.
Confirm:Which game introduced/removed this option, if any at all? Not present in any current games. - -instancepath <directory> (only in
) - Overrides InstancePath key in gameinfo.
Advanced options
- -autoviscluster # (in all games since
) - Todo: Used on dz_sirocco, found in
scripts/mapautocompile.txt. - -novconfig
- Don't bring up graphical UI on vproject errors.
- -threads
- Control the number of threads vbsp uses (defaults to the # of processors (times 2 for Hypertreading/SMT CPU's) on your machine).
- -verboseentities
- If -v is on, this disables verbose output for submodels.
- -noweld
- Don't join face vertexes together.
- -nocsg
- Don't chop out intersecting brush areas.
- -noshare
- Emit unique face edges instead of sharing them.
- -notjunc
- Don't fixup any t-junctions.
- -allowdetailcracks
- Don't fixup t-junctions on func_detail.
- -nodrawtriggers
- Compiles all triggers as if they were using Nodraw texture, only affects triggers using a texture with %CompileTrigger.
- -noopt
- By default, vbsp removes the 'outer shell' of the map, which are all the faces you can't see because you can never get outside the map. -noopt disables this behavior.
- -noprune
- Don't prune neighboring solid nodes.
- -nomerge
- Don't merge together chopped faces on nodes.
- -nomergewater
- Don't merge together chopped faces on water.
- -nosubdiv
- Don't subdivide faces for lightmapping.
- -micro <float>
- vbsp will warn when brushes are output with a volume less than this number (default: 1.0).
- -fulldetail
- Mark all detail geometry as normal geometry (so all detail geometry will affect visibility).
- -alldetail (only in

) - Convert all structural brushes to detail brushes, except func_brush entities whose names begin with structure_.
- -leaktest
- Stop processing the map if a leak is detected. Whether or not this flag is set, a leak file will be written out at <vmf filename>.lin, and it can be imported into
Hammer. - -noleaktest (only in
) - Disables leaktest as its enabled by default.
- -bumpall
- Force all surfaces to be bump mapped.
- -snapaxial
- Snap axial planes to integer coordinates.
- -block # #
- Control the grid size mins that vbsp chops the level on.
Bug:Causes VBSP to fail completely. [todo tested in ?] - -blocks # # # #
- Enter the mins and maxs for the grid size vbsp uses.
- -blocksize <int> (in all games since
) - Control the size of each grid square that vbsp chops the level on. Default is 1024.
- -dumpstaticprops
- Dump static props to staticprop*.txt.
- -dumpcollide
- Write files with collision info.
- -forceskyvis
- Enable vis calculations in 3D Skybox leaves.
- -luxelscale <float>
- Scale all lightmaps by this amount (default: 1.0).
- -lightifmissing
- Force lightmaps to be generated for all surfaces even if they don't need lightmaps.
- -localphysx
- Todo: Currently unknown.
- -keepstalezip
- Keep the BSP's zip files intact but regenerate everything else.
- -visgranularity # # # (in all games since
) - Force visibility splits # of units along X, Y, Z.
- -replacematerials
- Substitute materials according to materialsub.txt in content\maps.
- -FullMinidumps
- Write large minidumps on crash.
- -novirtualmesh
- Fix Physics entities fall through displacements at cost of bigger bsp size.
- -allowdynamicpropsasstatic (only in
) - Allow all models with the 'static' flag in the model viewer to be used on prop_static, even when their propdata doesn't contain 'allowstatic'.
Static Prop Combine
(in all games since
)
- -StaticPropCombine
- Merges static props together according to the rules defined in
scripts/hammer/spcombinerules/spcombinerules.txt. This lowers the number of draw calls, increasing performance. It can also be used to lower the number of static props present in a map. See Static Prop Combine. - -StaticPropCombine_AutoCombine
- Automatically generate static prop combine rules for props that VBSP deems should be combined.
Note:This does not write to spcombinerules.txt. - -StaticPropCombine_ConsiderVis
- Instead of using the distance limit, combine all props in the group that share visclusters.
- -StaticPropCombine_SuggestRules
- Lists models sharing the same material that should be added to
spcombinerules.txt. - -StaticPropCombine_MinInstances <int>
- Set the minimum number of props in a combine group required to create a combined prop.
Tip:Valve had this set to 3 for the new Dust 2. - -StaticPropCombine_PrintCombineRules
Confirm:Prints the combine rules? Hasn't been working for me.- -StaticPropCombine_ColorInstances
Confirm:Does this color the instances?- -KeepSources
- Don't delete the autogenerated QCs and unpacked model files after finishing.
- -CombineIgnore_FastReflection
- Combine props, even if they have differing Render in Fast Reflections settings.
- -CombineIgnore_Normals
- Combine props, even if they have differing Ignore Normals settings.
- -CombineIgnore_NoShadow
- Combine props, even if they have differing Disable Shadows settings.
- -CombineIgnore_NoVertexLighting
- Combine props, even if they have differing Disable Vertex lighting settings.
- -CombineIgnore_NoFlashlight
- Combine props, even if they have differing Disable flashlight settings.
- -CombineIgnore_NoSelfShadowing
- Combine props, even if they have differing Disable Self-Shadowing settings.
- -CombineIgnore_DisableShadowDepth
- Combine props, even if they have differing Disable ShadowDepth settings.
Nonfunctional Options
- -linuxdata
- Force it to write physics data for linux multiplayer servers. (It will automatically write this data if it finds certain entities like info_player_terrorist, info_player_deathmatch, info_player_teamspawn, info_player_axis, or info_player_coop.)
- -nolinuxdata
- Force it to not write physics data for linux multiplayer servers, even if there are multiplayer entities in the map.
- -virtualdispphysics
- Use virtual (not precomputed) displacement collision models
- -xbox
- Enable mandatory Original Xbox optimization.
Console output
Todo: Add descriptions for other VBSP outputs (WriteBSP, PruneNodes, ProcessBlock_Thread, etc).
VBSP prints various information about the compile process to the console. Note that output from older versions of the tool can be different.
Patching WVT material: material path to patched WVT material- The map contains WorldVertexTransition materials that are being used on non-displacement faces. VBSP patches these materials to use a different material shader (such as LightmappedGeneric) so that they properly render on these map faces.
FixTjuncs...- T-junctions are created when func_detail brushes touch world geometry. To avoid visual cracks or seams, VBSP fixes up these T-junctions.
Placing detail props : 0...1...2...3...4...5...6...7...8...9...10- Detail props are being placed in the map.