Skip to content

MOvi996/ray-tracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ray Tracer

Ray Tracer Example

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.

Features

  • 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

Project Structure

  • 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

Building the Project

Prerequisites

  • C++ compiler with C++11 support or higher
  • OpenEXR library for image handling
  • CMake for build system

Build Instructions

  1. Clone the repository
git clone [repository-url]
cd ray-tracer
  1. Create and enter build directory
mkdir build
cd build
  1. Configure and build
cmake ..
make

Usage

The 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 demonstration
  • a_lighting() - Lighting models
  • a_materials() - Material system
  • a_textures() - Texture mapping
  • a_distributed() - Distributed rendering
  • a_smooth() - Smooth surface rendering
  • a_competition() - Competition scene rendering

Contributing

Contributions are welcome! Please feel free to submit pull requests.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors