Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Thesis roadmap #20

Open
trungtle opened this issue Jan 23, 2017 · 0 comments
Open

Thesis roadmap #20

trungtle opened this issue Jan 23, 2017 · 0 comments

Comments

@trungtle
Copy link
Owner

trungtle commented Jan 23, 2017

This issue layouts the big picture plan for my thesis. To render transparency, I am using ray tracing. The key implementations are:

Acceleration structure

For ray tracing, I am choosing SBVH, Spatial Splits in BVH. The advantage of SBVH includes a faster traversal similar to kd-tree while maintaining the BVH structure. The leaf nodes only split when there is an overlap between two primitives' bounding boxes. SBVH is also a good candidate for collision detection if my timeline allows.

Parallelization on CPU

Tasks

  • SBVH construction. The SBVH construction is done for the next frame while the rendering threads display the frame buffer for the current from.
  • Ray tracing and tree SBVH traversal. The basic algorithm is:
    • For each pixel, generate a primary ray and input into a queue. For each available thread, grabs a ray from the queue a compute its pixel value. When the queue is empty, draw the image.
    • Since each ray is computed independently, we might incur a synchronization overhead. It would likely be more beneficial to have each thread grabs more than one ray from the queue.
  • Collision detection can utilize the SBVH structure. For each object in the scene, we can traverse the tree and search for bounding box intersection.

Architecture

  • A thread manager manages the available thread pool. SBVH construction is done on its own dedicated thread, while the task of ray tracing can be spread across multiple threads.
  • Parallelization should be able to toggle on/off for comparison.

With the advantage of Vulkan's support for multithreading, these tasks should have increasing speed by off-loading work on the CPU.

Mesh import

The engine support glTF loading via tinygltf.

Timeline

Jan - Feb: SBVH construction and ray tracing (single thread)
March: Parallelization
March - May: Start with writing the paper

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant