Raven is a ray/path tracer developed in C++20 as part of my CENG 795: Advanced Ray Tracing coursework. It supports a wide range of rendering features, including various intersection methods, realistic materials, advanced lighting, and texture techniques.
You can follow my journey and detailed progress on my personal blog, where I share insights, challenges, and results from each assignment.
- Ray-Object Intersection
- Triangle Intersection
- Sphere Intersection
- Mesh Intersection
- Bounding Volume Hierarchy (BVH)
- Transformation
- Instancing (efficient rendering of duplicate geometry)
- Basic Ray Tracing
- Distribution Ray Tracing
- Depth of Field
- Area Lights
- Glossy Reflections
- Motion Blur
- Path Tracing
- Importance Sampling
- Next Event Estimation
- Russian Roulette
- Conductor (Metallic) Materials
- Dielectric (Transparent/Refractive) Materials
- Point Lights
- Area Lights
- Directional Lights
- Spot Lights
- Environmental Lighting
- Object Lights
- Mesh-based
- Sphere-based
- Phong
- Modified Phong
- Normalized Modified Phong
- Blinn-Phong
- Modified Blinn-Phong
- Normalized Modified Blinn-Phong
- Torrance-Sparrow
- Standard Texture Mapping
- Normal Mapping
- Bump Mapping
- Supported File Formats
- ppm
- png
- hdr
- exr
- High Dynamic Range (HDR) & Tone Mapping
- Reinhard Photographic Tone Mapping
- Scene Description: XML-based scene description format, supporting meshes in XML and PLY file formats.
- Multithreading (Parallel rendering to utilize multiple CPU cores effectively)
- Integrated Profiler: Automatically generates profiling data (JSON format) for each rendered scene.
- Compiler: C++20 compatible compiler (e.g., MSVC, GCC, Clang)
- Build System: Premake
- Supported Platforms:
- Windows 10
- Linux
- Clone the Repository:
git clone https://github.com/ramazantokay/Raven-RT.git
cd Raven-RT- Before building the project, you might need to add executable permission to the build script and premake executable.
chmod +x build.sh
chmod +x vendor/premake5- Run the build script. This will generate the project files for the selected build system.
For Linux
./build.sh gmake2For Windows
./build.bat vs2022- Build the project.
- For Linux
make config=release all- For Windows, open the generated solution file and build the project.
- Run the project.
- For Linux
./bin/Release-linux-x86_64/Nest/raytracer scene.xml- For Windows, add the scene name as a command line argument in the project properties. Project properties -> Debugging -> Command Arguments.
scene.xmlRendered images will be saved automatically in the output folder specified by the scene file configuration.
- Implement Smooth Shading
- Refactor the codebase for better readability and maintainability
This project is licensed under the MIT License. You are free to modify, distribute, and use it according to the terms described.
Raven is provided "as is," without warranty of any kind. The author(s) assume no liability for any direct or indirect damages or losses arising from the use or inability to use this software.



















