Distance Fog
Distance Fog is sometimes called "true fog." Distance fog tints the screen as with view fog, but the degree of tinting is determined by the distance that a given pixel is from the camera. View fog has a uniform color independant of the distance you are from an object. Objects further away will apear to "fade away" into the distance fog. Note, however, that the SkyBox is not affected by the fog on your level, but you can add fog into the skybox as well.
Unlike View Fog, Distance Fog has to check a lot of distances every frame and this can have an impact on performance. However, some types of distance fog allow the engine to reject objects beyond a certain distance, which usually results in a net speed boost: this distance fog may be a useful tool in Map Optimization.
Distance fog may not show up in UnrealEd, and can be tuned in-game using the editactor console command to find the optimum values. Note, however, that distance fog may not obscure the coronas from lights.
Setting Up Distance Fog in Unreal Tournament
Firstly, you have to set the bFogZone variable in the ZoneInfo of every zone you wish to be able to see distance fog in. The zone that the fog is actually in will be the ones that the fog actually exists in, but distance fog calculations are skipped entirely if the camera is in a zone with bFogZone false. On the downside, however, decals will not be displayed properly in a zone with bFogZone true, so bFogZone should be left false unless fog is actually likely to be seen from the zone in question.
Finding the Right DistanceFog Color for Your Map
A helpful trick to find the right color fog is to take a screenshot of your map (use togglescreenshotmode to hide the hud and crosshairs)while in game with distance fog turned off so you can get a good spectrum of all the colors your map is made of. Get this screenshot into PS and then change the mode to indexed color. Forced can be set to none since you don't need black or white for our purposes. Once that is done go to image>mode>color table... And then save that color table. Now in the swatches pallete replace the swatches with that color table. Note that you will have to change the file type in the load dialog to color table otherwise PS thinks you are just looking for swatch files. Now that this pallete is loaded you should have no problems finding a color which complements your level.
Setting Up Distance Fog in UT2003
There are two ways to set up distance fog in UT2003, with a ZoneInfo or with a PhysicsVolume. The main difference is that only "Zone Fog" occludes, so "Volume Fog" can't be used for optimizing framerates.
Zone Fog
Zone-based Distance Fog is set up similarly to distance fog in UT. Create a zone where you want fog, Add an Actor >> Info >> ZoneInfo, and set some variables. Specifically those variables are:
- ZoneInfo → bDistanceFog
- Enable distance fog in this zone.
- ZoneInfo → bClearToFogColor
- Always set this if the player can see past the FogEnd distance. This colors your fogcolor past that distance, instead of a HOM
- ZoneLight → DistanceFogBlendTime
- fade time when entering this zone. Only has an effect if the zone the camera is moving from also has bDistanceFog=true.
- ZoneLight → DistanceFogColor
- Color of the fog. The A value seems to be ignored.
- ZoneLight → DistanceFogBegin
- Distance in front of the camera that fog becomes visible, measured in UU. For a natural effect this should probably be small (< 2000).
- ZoneLight → DistanceFogEnd
- Distance in front of the camera that the fog becomes 100% opaque.
One big benefit of using zone fog in your map in addition to adding atmosphere is that it allows the engine to discard objects and entire zones if they're beyond the DistanceFogEnd distance, which can result in a big speed boost in some maps.
Volume Fog
Before we start, there's one important fact about Volume-based fog that you should know: It doesn't occlude. If you're trying to optimize your level use zone fog, as volume fog won't do anything for you (in fact it might make it run a bit slower due to the extra blending, but I'm not sure about that).
Volume-based distance fog is very similar to to View Fog in UT2003. You must place a PhysicsVolume to cover the area that you want the fog to affect, but instead of setting the ViewFog variables, you will need to set four variables under the "VolumeFog" group.
- bDistanceFog
- This is a boolean variable indicating whether or not distance fog calculations should be done. If you want to use distance fog, this must be set to true. By default, it is set to false.
- DistanceFogColor
- This is a color variable that specifies, simply enough, the color that you want the fog to be. The alpha of the color will be determined by the distance that the object being viewed is from the camera.
- DistanceFogEnd
- This is the distance at which fog cover is absolute. Everything at this range and beyond will be totally obscured. However, if the skybox does not contain fog, these objects will actually be silhouetted against the sky. (Because the object itself will be completely colored over by the sky behind it will be unaffected.)
- DistanceFogStart
- This is the distance at which fog calculations begin. Anything closer than this distance to the camera will not be fogged at all.
Interestingly, if you set DistanceFogStart to be GREATER than DistanceFogEnd, you will get inverse fog. Objects will become more obscured the CLOSER you get to them.