Contents |
|
Conclusion
Through the use of some crafty mathematical techniques, we've reduced the cost of computing a 9x9 grid of vertices on a bicubic Bézier surface from 3978 adds and 8586 multiplies, to 1506 adds and 1488 multiplies. This is much more reasonable!
The goal of this mathematical exercise was to find an algorithm for computing bicubic Bézier surfaces that would allow their use in real-time games. At the same time I wanted to find an algorithm that could be optimized for a vector processor, and for which the data would fit in the 4KB of the Nintendo64's RSP co-processor. The central differencing algorithm fits all these requirements. The curve-splitting stage of the central differencing algorithm is highly vectorizable, and the data does indeed fit in 4KB, unlike the data necessary when using De Casteljau's algorithm to split surfaces.
Further References
Sharp, Brian. "Implementing Curved Surface Geometry" (June 1999) and "Optimizing Curved Surface Geometry" (July 1999). Game Developer magazine.
Watt, Alan and Watt, Mark. Advanced Animation and Rendering Techniques: Theory and Practice. New York: ACM Press, 1992.
Clark, J.H., "A Fast Scan-Line Algorithm for Rendering Parametric Surfaces," Computer Graphics Vol 13 No.2: pp. 289-99.
If you're a Nintendo 64 developer, you can find the Bézier surface microcode that implements central differencing at Nintendo's developer web site at https://www.warioworld.com/.