The
io7m-r1 package
explicitly stores the albedo, normals, emission level, and specular
color of surfaces. Additionally, the depth buffer is sampled to recover
the depth of surfaces. The eye-space positions of surfaces are recovered
via an efficient
position reconstruction
algorithm which uses the current viewing projection and
screen-space depth value as input. In
order to reduce the amount of storage required, three-dimensional
eye-space normal vectors are stored compressed as two
16 half-precision floating point components
via a simple
mapping.
This means that only
32 bits
are required to store the vectors, and very little precision is lost.
There is support for optionally storing the vectors as two
8 bit components for systems that
are memory-starved, with a noticeable loss in the visual quality of
specular highlights.