Octree Textures on the GPU
Source code, demo, pictures and more ...
- 20-07-2006 source code update
You can download the paper Octree Texture on the GPU here. This is a modified version from the GPU Gems 2 chapter (it includes the errata).
(last modified 2005-10-30).
Hinsights and clarifications
- If you are interested in generic data structures for GPU programming (which is probably the case if you ended up here :) don't miss Glift: Generic, Efficient, Random-Access GPU Data Structures by A. Lefohn et al.
- Section 37.2.1
Octree creation takes place on the CPU. Creating an octree (or any hierarchical structure) directly on the GPU is very difficult, mainly because of memory allocation and pointer creation. (It would require a scatter operation, not available on today's GPUs).
Once the octree is created on the CPU it is send to the GPU through our GPU octree texture API (see class CHrdwTree.cpp). Whenever the octree is modified on the CPU side, the octree stored on the GPU is updated (see section 37.2.2).
It seems that no matter how many times I proof read something, mistakes will always remain.
Please appologize for the following errors:
- Figure 37.5 In the top left part of the Figure, labeled 'The Quadtree', the lookup point should be in the leaf just above (top left corner of node C) to be consistent with the rest of the figure.
- Figure 37.5 In the 'Depth 0' part of the figure, the purple arrow in node A should start from the bottom left corner of node A. It represents the relative coordinates of the lookup point within the node indirection grid.
Source code and demo
Download source code and demo here.
|Octree texture, 70 FPS on a GeForce 6800 GT
||Corresponding octree (max depth = 12, size = 4.5Mb)