Issue No.03 - March (2004 vol.53)
David Harris , IEEE
<p><b>Abstract</b>—The OpenGL geometry pipeline lighting stage requires raising a number in the range <tmath>[0, 1]</tmath> to a power between <tmath>[1, 128]</tmath> to compute specular reflections and spotlights. The result need only be accurate to a number of bits related to the color depth of the output device. This paper describes a hardware implementation of such an exponentiation unit based on a logarithm lookup table, a multiplier, and an inverse log table. The inputs arrive in IEEE single-precision floating-point format and the output is a floating-point color component in the range <tmath>[0,1]</tmath> with 8-10 bits of accuracy. The log lookup table is partitioned into subintervals to reduce table size and each subinterval is computed from a bipartite table to further reduce size. A synthesized design uses 32k gates to achieve 10-bit accuracy with a latency of 9.4 ns in a 180 nm process. Although the system is tailored to the OpenGL application, the same principles can be applied to the design of other exponentiation units.</p>
Powering, exponentiation, computer arithmetic, OpenGL hardware acceleration, table lookups, table complexity, bipartite tables.
David Harris, "An Exponentiation Unit for an OpenGL Lighting Engine", IEEE Transactions on Computers, vol.53, no. 3, pp. 251-258, March 2004, doi:10.1109/TC.2004.1261833