Added the roadmad

This commit is contained in:
Afonso Clerigo Mendes de Sousa 2025-06-12 11:58:18 +01:00
parent 6305cba7a2
commit 5dfe527b27

56
ROADMAP.md Normal file
View File

@ -0,0 +1,56 @@
# 🚀 Raytracer Project Roadmap
This roadmap breaks down the essential steps to build your CPU-based raytracer from scratch in C++.
---
## Phase 1: Foundations & Core Engine
- [ ] Set up vector math utilities (`vec3`): add, subtract, dot, cross, normalize
- [ ] Implement Ray class — origin, direction, basic functions
- [ ] Basic Sphere object — position, radius, material properties
- [ ] Ray-Sphere intersection logic — the core of your renderer
- [ ] Camera setup — generate rays through the viewport
- [ ] Scene structure — manage objects and lights
---
## Phase 2: Lighting & Shading Basics
- [ ] Diffuse shading (Lambertian reflection) — basic light bounce for realism
- [ ] Implement simple light sources: directional, point lights
- [ ] Shadow rays — cast rays toward lights to check occlusion
- [ ] Basic materials — color, albedo, reflectivity factor
---
## Phase 3: Reflection & Recursion
- [ ] Reflection rays — mirror-like reflections with recursion depth limit
- [ ] (Optional) Refraction — transparent materials like glass
- [ ] Recursive ray tracing — combine reflections & lighting
---
## Phase 4: Image Output & Performance
- [ ] Render to PPM file (or PNG with `stb_image_write`)
- [ ] Anti-aliasing — supersampling for smooth edges
- [ ] Multi-threading (OpenMP or `std::thread`) for parallel speedup
- [ ] Optimize math operations — use inline functions, `constexpr` where possible
---
## Phase 5: Scene & Object Expansion
- [ ] Add more shapes: planes, triangles (for meshes)
- [ ] OBJ file loader — import 3D models
- [ ] Material system — metals, dielectrics, diffuse, emissive lights
- [ ] Texture mapping (UV mapping) — add realistic surface detail
- [ ] Multiple light sources with falloff
---
## Phase 6: Advanced Features (Flex Mode ON)
- [ ] Global Illumination / Path Tracing (big brain mode)
- [ ] Depth of field camera effect
- [ ] Motion blur
- [ ] HDR environment maps for reflections and lighting
- [ ] GUI or real-time preview (super ambitious)
---