Caulk: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
Line 2: Line 2:
The word "caulk" can be used in two senses:
The word "caulk" can be used in two senses:
# as a texture, which appears magenta in DR, but is not drawn in-game. Like other textures, it can be applied to the faces of brushes (worldspawns), func_statics, and so on.
# as a texture, which appears magenta in DR, but is not drawn in-game. Like other textures, it can be applied to the faces of brushes (worldspawns), func_statics, and so on.
# as a worldspawn brush with the caulk texture applied to one or typically all surfaces.
# as a '''worldspawn brush''' with the caulk texture applied to one or typically all surfaces.


It is the second meaning in which caulk actually most useful:
It is the second meaning in which caulk actually most useful:
* '''for sealing areas of your map against the void''';
* '''for sealing areas of your map against the void'''. For more about this, see [[Performance: Essential Must-Knows]].
* '''for defining and sealing, in conjunction with visportals, individual ''vis leaf'' areas of your map'''. These are important for avoid unnecessary, performance-sucking rendering, and to provide more-plausible sound propagation. For more about this, see [[Visportals]] and [[Sound Propagation: Part 1]].
* '''for defining and sealing, in conjunction with visportals, individual ''vis leaf'' areas of your map'''. These are important for avoid unnecessary, performance-sucking rendering, and to provide more-plausible sound propagation. For more about this, see [[Visportals]] and [[Sound Propagation: Part 1]].


Other transparent "no draw" textures on brushes do not have the sealing property that caulk has. Caulk's transparency allows the portalsky to be seen through it, as well as any func_statics that touch your current vis leaf.  That means you can cut a func_static house in half with a caulk brush, and still see both sides of it.  Using portalsky this would not traditionally be possible. (It now depends on portalsky mode--see [http://bugs.thedarkmod.com/view.php?id=4635].)
Other transparent "no draw" textures on brushes do not have the sealing property that caulk has. Caulk's transparency allows the portalsky to be seen through it, as well as any func_statics that touch your current vis leaf.  That means you can cut a func_static house in half with a caulk brush, and still see both sides of it.  Using portalsky, this would not traditionally be possible. (It now depends on portalsky mode--see [http://bugs.thedarkmod.com/view.php?id=4635].)


== Secondary Uses of Caulk ==
== Secondary Uses of Caulk ==

Revision as of 04:55, 12 April 2020

Introduction and Main Uses

The word "caulk" can be used in two senses:

  1. as a texture, which appears magenta in DR, but is not drawn in-game. Like other textures, it can be applied to the faces of brushes (worldspawns), func_statics, and so on.
  2. as a worldspawn brush with the caulk texture applied to one or typically all surfaces.

It is the second meaning in which caulk actually most useful:

  • for sealing areas of your map against the void. For more about this, see Performance: Essential Must-Knows.
  • for defining and sealing, in conjunction with visportals, individual vis leaf areas of your map. These are important for avoid unnecessary, performance-sucking rendering, and to provide more-plausible sound propagation. For more about this, see Visportals and Sound Propagation: Part 1.

Other transparent "no draw" textures on brushes do not have the sealing property that caulk has. Caulk's transparency allows the portalsky to be seen through it, as well as any func_statics that touch your current vis leaf. That means you can cut a func_static house in half with a caulk brush, and still see both sides of it. Using portalsky, this would not traditionally be possible. (It now depends on portalsky mode--see [1].)

Secondary Uses of Caulk

Other potential uses, of caulk as a texture, follow.

As a DR Mapper Convenience

Image 0. Benefits of caulking as a mapping tool.

Some mappers like to caulk the exterior surfaces of their maps. While unnecessary for game play (since the engine does this automatically), it benefits editing. By using the DR Caulk filter, the mapper can easily switch off the exterior surfaces and see inside the map to get a better vantage point. Image 0 shows how the mapping works:

  • (top) for a mapper who does not caulk the exterior. It is difficult to get a good overhead view of the work, and the mapper has to either hide the exterior brushes or fly inside the map.
  • (middle) for a mapper who does caulk the exterior, when the caulk filter is not active.
  • (bottom) when the caulk filter is activated. The mapper has a superior overhead view into the work.

Be aware that similar result can be achieved by the non-caulk-user by:

  • adding a custom DR "Portal Sky" filter
  • using DR Layers.

Hiding Unseeable Tris

Caulk can be used to hide:

Image 1. Caulk applied to a func_static window.
  • back-surface polygons (tris) of a prop object, such as a door or window as in Image 1. There, surfaces touching the wall are caulked, so are not drawn in game, saving tris. Testing (detailed further below) shows that such caulking is not worth the effort, unless you plan massive cloning of that prop object.
  • worldspawn brush surfaces entirely covered by detail work like patches.
    Image 2. Caulk applied to a unseeable worldspawn brush surface.
    See Image 2. The player can never see the caulked surface because it's hidden by the func_static vault. This not only saves tris (which is not really important), but also removes the "sparkling" of the other texture at the highest point of the vault.

Avoiding Z-Fighting

As just seen with the vault in Image 2, caulking helps in certain circumstances. To reiterate, the caulked worldspawn surface does not "sparkle" or z-fight through the highest point of the vault, where the vault patch and the worldspawn brush are at equal height.

Caulking of Hidden Surfaces to Improve Performance? - Discussion, Testing, and Analysis

Introduction

Every now and then, caulking arises in debates: is it useful and beneficial to performance to spend a lot of time object-caulking? And if so, how much caulk is required to get a solid impact on fps rate?

As Image 1 indicated, to save a few polygons (tris), one can apply caulk on surfaces the player can never see in any circumstances, like wall-facing surfaces of prop windows and doors. This reduces the number of tris, and thus could potentially improve performance in some cases. But what does testing reveal?

Caulking That Cannot Affect Performance

There is no performance advantage to using caulk on any of these surfaces:

  • worldspawn surfaces on the outside of the map in contact with the void
  • worldspawn surfaces that are flush against another surface, for instance the bottom of a brush aligned with the floor.

The game engine removes these surfaces automatically, so caulk texture is not needed.

Testing and Estimating the Effect of Caulking on Performance

Tests performed in 2010 by Sotha gave the following results.

Caulking a medium complex scene with tens of windows and other objects (Knighton Manor start) did NOT have any effect on fps counts. Caulking did save roughly 1000 tris, but this is not sufficient to cause any fps improvement. The main benefit of caulking was the decrease of memory usage: 1000 saved tris saved 0.6MB of memory.

Testing indicated that on a rather high-end computer (for 2010) an increase of 23000 tris, 75 draws and 2500 shdw reduced the fps count by two. If a window consists of 5 brushes and the wall facing surfaces are caulked, this saves 5 surfaces and thus 10 tris per window. This would mean that 2300 windows should be caulked to get an improvement of 2fps. Basically this shows that caulking does not have much impact on modern hardware. However, on an older piece of hardware the amount of caulking needed for performance effect is lower, but even in this case it should be remembered that 1000 tris is roughly 20% of a single AI character.

How Should Caulk be Used? Perhaps Before Massive Cloning

Mappers may selectively integrate object-caulking in their ongoing work flow. Suppose the mapper builds a func_static window to be cloned and put everywhere. It is beneficial to use a few seconds to apply caulk on the source func_static and then get the caulking tris-saving effect on all the clones. This adds little work for the mapper, but, in a medium sized scene where the windows and other cloned (but caulked) objects are omnipresent, might easily save the a few thousand tris.

Conclusion

Mappers should not generally take extra trouble to caulk their individual objects, since solid performance increases do not occur with the levels of tris so saved. However, thousands of tris can be saved by simple workflow consideration, when working with objects which are cloned in large numbers.