High-throughput CORDIC-based geometry operations for 3D computer graphics

Graphics processors require strong arithmetic support to perform computational kernels over data streams. Because of the current implementation using the basic arithmetic operations, the algorithms are given in algebraic terms. However, since the operations are really of a geometric nature, it seems to us that more flexibility in the implementation is obtained if the description is given in a high-level geometrical form. As a consequence of this line of thought, this paper is an attempt to reconsider some kernels in a graphics processor to obtain implementations that are potentially more scalable than just replicating the modules used in conventional implementations. We present the formulation of representative 3D computer graphics operations in terms of CORDIC-type primitives. Then, we briefly outline a stream processor based on CORDIC-type modules to efficiently implement these graphic operations. We perform a rough comparison with current implementations and conclude that the CORDIC-based alternative might be attractive.

[1]  Dirk Timmermann,et al.  A CMOS floating-point vector-arithmetic unit , 1994, IEEE J. Solid State Circuits.

[2]  Shen-Fu Hsiao,et al.  Householder CORDIC Algorithms , 1995, IEEE Trans. Computers.

[3]  Erik Lindholm,et al.  A user-programmable vertex engine , 2001, SIGGRAPH.

[4]  T. Sato,et al.  2.44-GFLOPS 300-MHz floating-point vector-processing unit for high-performance 3D graphics computing , 2000, IEEE Journal of Solid-State Circuits.

[5]  William J. Dally,et al.  Programmable Stream Processors , 2003, Computer.

[6]  Dirk Timmermann,et al.  A Unified and Division-Free CORDIC Argument Reduction Method with Unlimited Convergence Domain Including Inverse Hyperbolic Functions , 1994, IEEE Trans. Computers.

[7]  Ken Shoemake,et al.  Animating rotation with quaternion curves , 1985, SIGGRAPH.

[8]  Y. Yano,et al.  A 6.7-MFLOPS floating-point coprocessor with vector/matrix instructions , 1989 .

[9]  Jung Ho Ahn,et al.  Merrimac: Supercomputing with Streams , 2003, ACM/IEEE SC 2003 Conference (SC'03).

[10]  David H. Eberly,et al.  3D Game Engine Design , 2001 .

[11]  Javier D. Bruguera,et al.  Faithful powering computation using table look-up and a fused accumulation tree , 2001, Proceedings 15th IEEE Symposium on Computer Arithmetic. ARITH-15 2001.

[12]  Hans-Peter Seidel,et al.  Ecien t Rendering of Anisotropic Surfaces Using Computer Graphics Hardware , 1998 .

[13]  Tomas Akenine-Möller,et al.  Real-Time Rendering, Second Edition , 2002 .

[14]  Tomas Akenine-Möller,et al.  Real-time rendering , 1997 .

[15]  Wayne Burleson,et al.  CORDIC vector interpolator for power-aware 3D computer graphics , 2002, IEEE Workshop on Signal Processing Systems.

[16]  Jean-Michel Muller,et al.  Elementary Functions: Algorithms and Implementation , 1997 .

[17]  Hironori Yamauchi,et al.  A 50-MHz CMOS geometrical mapping processor , 1989 .

[18]  Ed F. Deprettere,et al.  Floating point Cordic , 1993, Proceedings of IEEE 11th Symposium on Computer Arithmetic.

[19]  Oskar Mencer,et al.  Application of Reconfigurable CORDIC Architectures , 1998, Conference Record of Thirty-Second Asilomar Conference on Signals, Systems and Computers (Cat. No.98CH36284).

[20]  David H. Eberly,et al.  Geometric Tools for Computer Graphics , 2002 .

[21]  T. Lang,et al.  High-throughput 3D rotations and normalizations , 2001, Conference Record of Thirty-Fifth Asilomar Conference on Signals, Systems and Computers (Cat.No.01CH37256).