This article relates to the game "Left 4 Dead 2". Click here for more information.

Left 4 Dead 2 Detail Props

From Valve Developer Community
Jump to navigation Jump to search
English (en)Translate (Translate)

Left 4 Dead 2 Left 4 Dead 2 has three different sources of where it got its nature textures and their detail props from. Some from Counter-Strike: Source, Left 4 Dead, and some made new for Left 4 Dead 2.
Unfortunately, these are sometimes mutually exclusive, by virtue of their detail props needing to use a different "Detail Material File" setting, which can be found when heading to "Map Properties" in Hammer Hammer.

Using incompatible materials will cause the grass sprites to use the wrong texture, which will show floating or otherwise misaligned grass sprites populating your map.
This page helps to remove the confusion as to what materials are compatible with each other, by listing them by what "Detail Material File" they must use.

Note.pngNote:You can change the used %DetailType to make materials compatible. See Making materials compatible.
Warning.pngWarning:%DetailType "alleydirt_leaves" was never ported from L4D1 to L4D2. It's only used on "nature/blend_alleydirt_leaves", from Crash Course.
%DetailType "urban_overgrown_docks" does not exist in neither L4D1 nor L4D2.
These two are contained in this Github Repo, amongst many other updates to hammers fgd.

Materials separated by Detail Material

These four lists show all materials in L4D2 that do make use of %DetailType in their vmt files.
Refer to these when deciding what materials to use, in order to make sure you only use the ones with the identical Detail Material File setting in Hammer.

DetailSprites

BlendLeavesTrainyardDirtB.vmt is the only material that uses detail/detailsprites.

Which means your map can not use any other materials with sprites on it, as none other share this Detail Material. Unless you modify this material as explained in Making materials compatible.

Note.pngNote:Whilst there exist more %DetailTypes that would make use of detail/detailsprites.vmt, no material in L4D2 makes use of those %DetailTypes. The Details.vbsp was probably taken from Counter-Strike: Source without removing obsolete data.

DetailSprites_Overgrown

These blend materials all use "details/DetailSprites_Overgrown.vmt". These can only be used with each other, or any blend materials that do not have any sprites to begin with.

Material Name %DetailType used
blendswampmudroots01_lowdensity urban_overgrown_lowdensity
blend_blacktop_07 urban_grass_overgrown
blend_blacktop_08 urban_grass_overgrown
blend_blacktop_09 urban_grass_overgrown
blend_brick_brick01 urban_grass_overgrown
blend_brick_brick02 urban_grass_overgrown
blend_brick_dirt_01 urban_grass_overgrown
blend_brick_grass_01 urban_dry_overgrown
blend_dirt_cane urban_dry_overgrown
blend_grass_concrete_01 urban_dry_overgrown
blend_grass_grass_02 urban_grass_overgrown
blend_grass_grass_02_lowdensity urban_grass_overgrown_lowdensity
blend_grass_gravel_01 urban_grass_overgrown
blend_grass_gravel_lowdensity urban_grass_overgrown_lowdensity
blend_grass_mud_01 urban_grass_overgrown
blend_milltowngrass01wet urban_dry_overgrown
blend_rubble_03 urban_grass_overgrown
blend_urbandirtlawn01 urban_dry_overgrown
blend_urbandirtlawn01wet urban_dry_overgrown
blend_urbandirtlawn01wet urban_dry_overgrown
blendswampmudleaves02b urban_overgrown
blendswampmudroots01 urban_overgrown
blendswamprootleaves01 urban_overgrown
blendswamprootleaves01_lowdensity urban_overgrown_lowdensity

RuralDetailSprites

These blend materials all use "details/RuralDetailSprites.vmt". These can only be used with each other, or any blend materials that do not have any sprites to begin with.

Material Name %DetailType used
blend_alleydirt_leaves* alleydirt_leaves
blend_docks_grass_dirt* urban_overgrown_docks
blend_leaves_dirt rural_dirt_leaves02
blend_leaves_dirt_nomod rural_dirt_leaves02
blend_leaves_forest rural_dirt_leaves02
blenddirt01grass_ruddy_small rural_dkdirt_grass
blenddirtlawn01 rural_dkdirt_grass_smalltown
blenddirtleaves rural_dirt_leaves
blenddirtleaves02 rural_dirt_leaves
blenddirtleaves03 rural_dirt_leaves02
blenddirtleaves03_smalltown rural_dirt_leaves02
blenddirtleaves03_smalltown2 rural_dirt_leaves02
blenddirtleaves04 rural_dirt_leaves02
blenddirtleaves_docks* urban_overgrown_docks
blenddrkdirtgrass_ruddy rural_dkdirt_grass_trainyard
blenddrygrassdirt rural_dirt_road
blendleavestrainyarddirt rural_trainyarddirt_leaves
blendroadleaves01 rural_dirt_leaves02
blendroadleaves01b rural_dirt_leaves02
blendrootleaves01 rural_dirt_leaves02
grasslawn_dry01 rural_dkdirt_grass
grasslawn_patchy01_detailprop rural_dirt_leaves02
tiblendrockleaves1 rural_dirt_leaves
tiblendrockstone1 rural_dirt_leaves
tiblendrockstone2 rural_dirt_leaves
tiblendrockstone3 rural_dirt_leaves
tiblendrockstone4 rural_dirt_leaves
Note.pngNote:* These materials only exist in the provided Github Repo. As they originally were broken or didn't exist.

No Detail Material

The following materials do not have any grass or plant sprites. This allows them to be used with any other material without issue.

Materials without Details/Sprites 
  • blend_alley_conc_dirt
  • blend_blacktop_01
  • blend_blacktop_01_cheap
  • blend_blacktop_01_wet
  • blend_blacktop_02
  • blend_blacktop_02wet
  • blend_blacktop_03
  • blend_blacktop_03wet
  • blend_blacktop_03wet_dirt
  • blend_blacktop_04
  • blend_blacktop_05
  • blend_blacktop_06
  • blend_blacktop_06
  • blend_blacktop_brick_01
  • blend_blacktop_brick_01b
  • blend_blacktop_cobb_01
  • blend_blacktop_cobb_01dry
  • blend_blacktop_cobb_02
  • blend_blacktop_cobb_02_dry
  • blend_cliff_leaves
  • blend_concrete_01
  • blend_dirt_concrete_01
  • blend_dirt_concrete_01wet
  • blend_dirt_concrete_02
  • blend_dirt_concrete_03
  • blend_dirt_concrete_03wet
  • blend_dirt_concrete_04
  • blend_dirt_concrete_06
  • blend_dirt_ext_01
  • blend_dirt_ext_03
  • blend_dirt_mud_01
  • blend_dirtrubble01
  • blend_docks_dirt_gravel
  • blend_docks_grass_pavement
  • blend_donner_rubble1_dirtfloor013a
  • blend_grass_black_01
  • blend_grass_grass_01
  • blend_grass_grass_02_cheap
  • blend_grass_gravel_01_cheap
  • blend_grasslawn_dirt_nosprites
  • blend_leaves_dirt_nodetail
  • blend_leaves_dirt_nodetail_mod
  • blend_leaves_estuary
  • blend_logs_moss
  • blend_lots_conc_dirt
  • blend_lots_conc_grass
  • blend_lots_conc_pavement
  • blend_milltowngrass02wet
  • blend_milltowngrass03wet
  • blend_milltowngrass04wet
  • blend_river_dirt02
  • blend_roof_01
  • blend_rubble_01
  • blend_rubble_02
  • blend_sand03_cliff
  • blend_sidewalk02
  • blend_sidewalk_01
  • blend_sidewalk_01_wet
  • blend_sidewalk_01dry
  • blend_sidewalk_dirt
  • blend_sidewalk_grass
  • blend_urbandirtlawn01_cheap
  • blendbeachleaves
  • blendconcrete38a12a_noshadow
  • blendconcrete_dirt
  • blenddirtcorn01
  • blenddirtdirt001a
  • blenddirtleaves03_burned
  • blenddirtleaves03_nodetail
  • blenddirtparkinglot01
  • blendgrassstonepath
  • blendgraveldirt001a
  • blendmudleaves
  • blendpavementleaves
  • blendrockcavewall
  • blendrockleaves
  • blendrockleaves02
  • blendrockleaves03
  • blendrockwaterleaves
  • blendrockwaterrock
  • blendswamprootleaves01_cheap
  • grassdirt_blend
  • milground011_rock2b
  • ti_nospr_blendrockstone1
  • ti_nospr_blendrockstone2
  • ti_nospr_blendrockstone3
  • ti_nospr_blendrockstone4
  • tiblendwaterrockstone
  • zblendwetrockurock

Existing %DetailTypes

When creating custom materials you must make sure all materials make use of the same "Detail Material" setting in Hammer Hammer Hammer.
This list shows what %DetailTypes exist and which Detail Material File they use. Pick any of these for your custom materials.

%DetailType Detail Material File
compound_gravelgrass detail/detailsprites
desert_2weeds1shrub_01 detail/detailsprites
militia_darkleaves_grass detail/detailsprites
militia_leaves_darkleaves detail/detailsprites
militia_leaves_grass detail/detailsprites
militia_leaves_sand detail/detailsprites
militia_rock_grass detail/detailsprites
militia_sand_grass detail/detailsprites
prodgrasses detail/detailsprites
rural_cornfield_leaves detail/ruraldetailsprites
rural_dirt_leaves detail/ruraldetailsprites
rural_dirt_leaves02 detail/ruraldetailsprites
rural_dirt_leaves02_lowdensity detail/ruraldetailsprites
rural_dirt_road detail/ruraldetailsprites
rural_dkdirt_grass detail/ruraldetailsprites
rural_dkdirt_grass_smalltown detail/ruraldetailsprites
rural_dkdirt_grass_trainyard detail/ruraldetailsprites
rural_grass_leaves detail/ruraldetailsprites
rural_gravel_weeds01 detail/ruraldetailsprites
rural_trainyarddirt_leaves detail/ruraldetailsprites
swamp_ground01 detail/ruraldetailsprites
urban_dirt_leaves02 detail/ruraldetailsprites
urban_dry_overgrown detail/detailsprites_overgrown
urban_grass_overgrown detail/detailsprites_overgrown
urban_grass_overgrown_lowdensity detail/detailsprites_overgrown
urban_overgrown detail/detailsprites_overgrown
urban_overgrown_lowdensity detail/detailsprites_overgrown
alleydirt_leaves detail/ruraldetailsprites
urban_overgrown_docks detail/ruraldetailsprites

Making materials compatible

If you do want to use two or more materials that are mutually exclusive by default, you need to edit them to use any %DetailType from the table above that use the same Detail Material File.

You can achieve this without needing to ship a custom material with your map. Simply take the file out of your game, recreate the folderpath like any regular addon would, edit the %DetailType value in the vmt, and pack into a vpk named pak01_dir.vpk.
Once that is done, create a folder in your L4D2 directory, next to the DLC folders, named "Detailtype_edits" that contains this pak01_dir.vpk.
Next, open the gameinfo.txt in steamapps\common\Left 4 Dead 2\left4dead2 and scroll down until you see "Game update". Above that line, add "Game Detailtype_edits".
This will successfully mount your modified materials with different %DetailType value.

As long as you only change the %DetailType value, the game will read that data during compile and use that modified %DetailType value in every subsequent compile, until this gameinfo edit is undone or the vpk is deleted.
The genius of this approach is that the maps use whichever %DetailType had been used when the map was compiled, instead of what the material currently has.
This means that the custom %DetailType value is kept and you do not need to ship this modified material with your map, as the game already has this material.