Textured brushes exposed to the void

Seitan

L3: Member
Oct 30, 2015
135
8
00d0c4620a.jpg



Do I have to worry about them?
 

killohurtz

Distinction in Applied Carving
aa
Feb 22, 2014
1,016
1,277
Nope, any world brush face (or partial face) touching the void will be culled automatically by the compiler.
 

Crowbar

Spiritual preprocessor
aa
Dec 19, 2015
1,455
1,297
Surprisingly few textured-but-not-seen faces need dealing with. And none do require it. Compiler culls them if they face a world brush, or void, which removes lots of the faces. Those that you do better off nodrawing are the ones that are compiled but never seen, such as the faces that are hidden by an entity or a prop, as well as the unseen faces of brush entities, or just facing outwards of the level.
And yeah, if you miss some by accident, you can not even notice it. Badlands does have some faces not nodrawed I can refer to.
 

Micnax

Back from the dead (again)
aa
Apr 25, 2009
2,109
1,585
For textured brushes against walls not exposed to the void, you'd want to nodraw them but the performance hit isn't typically big at all.

Though it's worth noting that putting nodraw on your non-seen faces will let you use the :rendernodraw: feature to turn on/off those faces, which I find is helpful for flying around the map in Hammer at interior areas instead of simply seeing yellow everywhere.
 

worMatty

Repacking Evangelist
aa
Jul 22, 2014
1,258
999
A while ago I made an experimental map for testing how brush faces were culled, in different circumstances. I wanted to see which faces were culled, so I could avoid needlessly texturing things with :nodraw:. You may find this image useful:

eWvCdQZ.png


And here is the map: MAP.

A summary:
  • World brush faces against other world brush faces will be chopped and culled.
  • World brush faces will cull func_detail faces if those faces are entirely covered by the world brush face. Partially-exposed func_detail faces will be rendered in full.
  • Two faces from the same entity (func_detail, func_brush, func_door and so on) which touch each other will be chopped and culled.
  • func_detail covering world brushes can cause ugly shadows. func_detail doesn't chop and cull world brush faces.
Note that faces belonging to dynamic brush entities which are covered by world brushes are not culled, likely because such brushes are intended to move, so culling would interfere with their appearance.

For stairs you can do a few things. You can chop the steps themselves into triangles, so their backs are diagonal, and put a new triangle world brush behind them that will cull the wall and floor hidden by the stairs. func_detail the steps so they don't cut visleaves. Alternatively, leave all your stairs as world brushes, then put a diagonal :hint: face along their slope, inline with your :playerclip:/:blockbullets: brush, which will trim the portals created by the steps during VBSP so they don't cut the surrounding visleaves. Or use props for your stairs and fill their back in with a world brush or two for sealing and culling.