A sophisticated C++ ray tracing engine capable of producing high-quality rendered images with advanced features like distributed rendering, material systems, and various lighting models.
-
Advanced Rendering Capabilities
- Multiple camera types and perspectives
- Various material systems and textures
- Sophisticated lighting models
- Distributed rendering support
- Bounding box optimization
-
Geometric Features
- Multiple primitive types
- Geometry instancing
- Julia set rendering
- Smooth surfaces
-
Material Types The ray tracer supports various physically-based materials:
- Lambertian (diffuse surfaces)
- Phong (specular highlights)
- Conductor (metallic surfaces)
- Fuzzy Conductor (brushed metals)
- Dielectric (glass, water, transparent materials)
- Flat Material (constant color emission)
- Material Combinations (blend between different materials)
-
Optimization Features
- Bounding box acceleration
- Distributed computation support
- Scene indexing
-
core/- Core functionality and utilities- Mathematical operations (vectors, matrices)
- Color handling
- Image manipulation
- Random number generation
-
rt/- Ray tracing implementation- Cameras
- Lights
- Materials
- Textures
- Geometry
- Scene management
-
main/- Example implementations and demos- Various demonstration files
- Test scenes
- Competition scenes
- C++ compiler with C++11 support or higher
- OpenEXR library for image handling
- CMake for build system
- Clone the repository
git clone [repository-url]
cd ray-tracer- Create and enter build directory
mkdir build
cd build- Configure and build
cmake ..
makeThe project includes several demo applications that showcase different features. To run a specific demo, modify main/main.cpp to uncomment the desired demo function.
Available demos:
a_cameras()- Camera types demonstrationa_lighting()- Lighting modelsa_materials()- Material systema_textures()- Texture mappinga_distributed()- Distributed renderinga_smooth()- Smooth surface renderinga_competition()- Competition scene rendering
Contributions are welcome! Please feel free to submit pull requests.
