RealTimeRayTracer_CUDA is a real-time ray tracing application developed using CUDA. It draws inspiration from Ray Tracing in One Weekend in CUDA and showcases the capabilities of CUDA in rendering complex scenes with various materials and lighting models in real-time.
- Real-Time Rendering: Leveraging CUDA for high-performance graphics computations.
- Camera Movement: Interactive camera controls for exploring scenes.
- Material Models: Including Microfacet, Glossy, Dielectric, and Diffuse.
- Frame Blending: Utilizes a mix of the current and last frames for smoother rendering.
- Challenging Implementations: Tackles complex topics like BVH (Bounding Volume Hierarchy), although currently not fully implemented.
- CUDA Toolkit 12.3
- GLM (OpenGL Mathematics)
- GLFW (Graphics Library Framework)
To set up the RealTimeRayTracer_CUDA, follow these steps:
- Clone the repository
- using Cmake to build the project
Check the YouTube demo to see RealTimeRayTracer_CUDA in action.
- BVH Implementation: Implementing the BVH node in CUDA is complex, and it's currently a work-in-progress.
- Emissive Objects: All objects in the world are considered as emitting light, which may not be physically accurate for all scenarios.
- Frame Blending Technique: The application uses a blend of the current and the previous frame to achieve smoother rendering transitions.
Support four shading model
- Glossy
- Diffuse
- Dieletric
- Microfacet
Denoise
- Temporal : a simple blend of current frame and last frame was implemented in order to denoise
Loading Mesh
- Load_Triangle : using Load_triangle.hpp to load custom .obj meshes. However, it's need to init on host constructor and then copy the memory to the device memory.