Wednesday, January 27, 2010

Too Much Water Can Be a Bad Thing

In MeshTool 2.0, you can specify how wet orthophotos are handled. There are three possibilities:
  1. The orthophoto has no alpha-based water. The alpha channel will be ignored.
  2. The orthophoto has alpha-based water. Draw water under the alpha, but for physics, make the triangles act "solid".
  3. The orthophoto has alpha-based water. Draw water under teh alpha, and for physics make the triangles act "wet".
The reason for 2 and 3 is that the X-Plane physics engine doesn't look at your alpha channel - wet/dry polygons are decided on a per triangle basis. (The typical work-around is to use the "mask" feature in MeshTool to make some parts of the orthophoto be physics-wet and some physics-solid. This is described in the MeshTool README.)

Whenever possible: don't use alpha-based water at all. It is certainly easy to set all of your orthophotos to alpha-water + physics-solid, but there are three costs to this:
  1. You eat a lot of fill rate. X-Plane manages alpha=water by drawing the water underneath the entire orthophoto, then painting over it with the orthophoto. This is fill-rate expensive. If you know there is no alpha, tell MeshTool, so it can avoid creating that "under-layer" of water.
  2. If the terrain is very mountainous, you may get Z-buffer artifacts from the layering, particularly for thin, spikey mountains (which probably aren't wet anyway).
  3. The reflection engine tries to figure out the "surface level" of the water, but it doesn't understand the alpha channel on top of the water. So all of that water "under" your mountain or hill is going to throw the reflection engine into hysterics.
Limiting the use of water under your orthophotos fixes all three problems.

No comments: