Fog
Introduction
Nazi Zombies: Portable uses it’s own 5-parameter, linear fog
system. This was originally conceived this way as the PlayStation
Portable’s hardware fog is linear and not exponential
as is traditional for Quake and OpenGL itself. The Nintendo 3DS also
adheres to this standard thanks to picaGL’s
linear LUT fog. Other platforms manipulate these fog values to
approximate them into standard exp2
fog modes. Exponential
fog is significantly less granular and as a result this approximation
will never be spot-on.
Parameters
usage:
fog (start) (end) (red) (green) (blue)
Excerpt from fog
command in the console.
When defining fog, you can provide a start
and
end
distance, in units, of the fog “wall” that appears. The
distance between start
and end
will impact
intensity, and of course, the farther away start
is from
zero, the more visibility you have before the fog begins.
You can change the color of the fog given individual
red
, green
, and blue
color
values. These values range from 0
-100
, with
100
being maximum intensity. Both pure black fog with
0 0 0
and pure white fog with 100 100 100
are
supported.
As an example, below is the fog output for Nacht der Untoten:
current values:
"start" is "240"
"end" is "1550"
"red" is "54"
"green" is "55"
"blue" is "59"
Translation
Linear to Exponential
Platforms that do not support linear fog will algorithmically approximate a decent exponential fog density to use instead. The formula is as follows:
fog_density_gl = ((fog_start / fog_end)/3.5f)
Exponential to Linear
FTE will still fallback to old exp2
fog behaviors if
provided them, however all other platforms will ignore fog if any of
it’s provided values are less than zero. This is intended behavior.