The bandwidth cost and memory footprint of vector buffers are limiting factors for GPU rendering in many applications. This article surveys time- and space-efficient representations for the important case of non-register, in-core, statistically independent unit vectors, with emphasis on GPU encoding and decoding. These representations are appropriate for unit vectors in a geometry buffer or attribute stream--where no correlation between adjacent vectors is easily available--or for those in a normal map where quality higher than that of DXN is required. We do not address out-of-core and register storage vectors because they favor minimum-space and maximum-speed alternatives, respectively.
We evaluate precision and its qualitative impact across these techniques and give CPU reference implementations. For those methods with good quality and reasonable performance, we provide optimized GLSL GPU implementations of encoding and decoding.
Full-Text PDF (19.2 MB)
Low Resolution PDF (2.8 MB)
BibTex (425 B)
C++ and GLSL Code and Supplemental Qualitative Results (96.5 MB)
Cigolle, Donow, Evangelakos, Mara, McGuire, Meyer, A Survey of Efficient Representations for Independent Unit Vectors, Journal of Computer Graphics Techniques (JCGT), vol. 3, no. 2, 1-30, 2014
Available online http://jcgt.org/published/0003/02/01/
Copyright: © 2014 Cigolle, Donow, Evangelakos, Mara, McGuire, and Meyer
Received: 2013-10-16; Recommended: 2013-11-18; Published: 2014-04-17