API Overview
Core API structure of CUDA Ray Tracer.
Module Structure
| Module | Directory | Description |
|---|---|---|
| Core | include/core/ | Math primitives, CUDA utilities, random |
| Geometry | include/geometry/ | Primitives, AABB, BVH, hit record |
| Rendering | include/rendering/ | Renderer, camera, materials, kernels |
| Scene | include/scene/ | Scene container, builders, presets |
| Image | include/image/ | Tone mapping, PPM output |
include/
├── core/
│ ├── vec3.cuh # 3D vector math
│ ├── ray.cuh # Ray structure
│ ├── random.cuh # cuRAND utilities
│ ├── constants.cuh # Global constants
│ └── cuda_utils.cuh # Error handling
├── geometry/
│ ├── geometry.cuh # Sphere, Plane primitives
│ ├── aabb.cuh # Axis-aligned bounding box
│ ├── bvh.cuh # BVH builder & traversal
│ └── hit_record.cuh # Intersection result
├── rendering/
│ ├── camera.cuh # Camera model
│ ├── kernels.cuh # CUDA kernels
│ ├── renderer.cuh # Main renderer
│ ├── phong.cuh # Blinn-Phong shading
│ ├── material.cuh # Material system
│ ├── ray_sort.cuh # Ray sorting
│ └── render_config.cuh # Configuration
├── scene/
│ ├── scene.cuh # Scene container
│ └── scenes.cuh # Preset scenes
└── image/
└── image.cuh # Output processingRendering Pipeline
Quick Start Example
Phong Shading
cpp
#include "renderer.cuh"
#include "scene/scenes.cuh"
int main() {
// Create scene
Scene scene = create_demo_scene();
scene.build_bvh();
// Configure renderer
Renderer renderer(800, 600);
renderer.set_scene(scene);
renderer.set_mode(RenderMode::Phong);
// Render
renderer.render();
// Output
renderer.save_ppm("output.ppm");
return 0;
}Path Tracing
cpp
#include "renderer.cuh"
#include "scene/scenes.cuh"
int main() {
Scene scene = create_cornell_box();
scene.build_bvh();
Renderer renderer(800, 600);
renderer.set_scene(scene);
renderer.set_mode(RenderMode::PathTrace);
renderer.set_samples(128);
renderer.render();
renderer.save_ppm("cornell.ppm");
return 0;
}Detailed Documentation
- Core Module - vec3, ray, random, utilities
- Geometry System - Sphere, AABB, BVH, HitRecord
- Rendering System - Renderer, Camera, Material
- Scene Management - Scene, builders, presets