Project #1: Accelerator

  • Acceleration Algorithm

    I chose hierarchical bounding volume (hbv) as my acceleration algorithm. There are many method to store and traverse the hbv tree. I implemented a binary hbv tree that each node stores the pointers of its left child, right sibling and parent, and depth-first traverse the tree to determine whether the ray hit any object in the scene.

  • Result

    The average time my hbv accelerator spends is 4.4 times of kd-tree in pbrt. More detailed comparison between my hbv accelerator and pbrt's kd-tree is in here.

  • What I learn

    data structures and programming concept in C++ that I was not familiar with before. Second, If we want the program to be more efficient, then keeping the data structure as simple as possible. Cumbersome data structures or traversal method will slow the program down.