References
Academic references for algorithms and techniques used in this project.
Rendering Equation & Path Tracing
[1] Kajiya, J. T. (1986). "The Rendering Equation". Computer Graphics (SIGGRAPH '86), 20(4), 143-150. DOI: 10.1145/15922.15902
[2] Veach, E., & Guibas, L. J. (1995). "Bidirectional Estimators for Light Transport". Photorealistic Rendering Techniques, 147-172.
[3] Pharr, M., Jakob, W., & Humphreys, G. (2016). Physically Based Rendering: From Theory to Implementation (3rd ed.). Morgan Kaufmann. ISBN: 978-0128006458
BVH Acceleration Structure
[4] Wald, I. (2007). "On fast Construction of SAH-based Bounding Volume Hierarchies". IEEE Symposium on Interactive Ray Tracing, 33-41.
[5] Aila, T., & Karras, T. (2010). "Understanding the Efficiency of Ray Traversal on GPUs". High-Performance Graphics, 89-100.
[6] NVIDIA. (2023). "CUDA C++ Programming Guide". [Online] https://docs.nvidia.com/cuda/
Ray Sorting & Optimization
[7] Hoberock, J., & Bell, N. (2010). "Thrust: A Parallel Algorithms Library". GPU Computing Gems, 353-366.
Monte Carlo Methods
[8] Pharr, M., & Humphreys, G. (2004). Physically Based Rendering. Elsevier. Chapter 7: Monte Carlo Integration.
Classic Tutorials & Open Source Projects
[9] Shirley, P. (2020). Ray Tracing in One Weekend. [Online] https://raytracing.github.io/
[10] Beason, K. (2007). smallpt: Global Illumination in 99 lines of C++. [Online] http://www.kevinbeason.com/smallpt/
[11] NVIDIA. (2023). NVIDIA OptiX 7 API. [Online] https://developer.nvidia.com/optix
Citing This Project
If you use this project in academic work, please cite:
@misc{cuda-raytracer,
author = {AICL-Lab},
title = {CUDA Ray Tracer: High-Performance GPU Path Tracing},
year = {2024},
publisher = {GitHub},
url = {https://github.com/AICL-Lab/ray-tracer}
}Recommended Reading
Beginner Tutorials
- Ray Tracing in One Weekend - Peter Shirley's classic introduction
- smallpt - Kevin Beason's 99-line global illumination
Advanced Resources
- Physically Based Rendering - The ray tracing bible
- GPU Gems series - NVIDIA's GPU programming techniques
CUDA Programming
- CUDA C++ Programming Guide - Official NVIDIA documentation
- Programming Massively Parallel Processors - Kirk & Hwu