Skip to content

Priax/Raytracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Raytracer

An Epitech Project made by:

Description

This Epitech Project has to be carried out in group of 3 to 4 students in 28 days.
Ray tracing is a technique used to generate realistic digital images by simulating the inverse path of light.
Our goal is to create a program able to generate an image from a file describing the scene.

Our Project is a path tracer (meaning it is probabilistic, using Monte Carlo algorithm) Everything is done via maths, we don't need a GUI or anything because the way it works is it prints pixel (r, g, b) into lines of a .ppm files, which if read by an image reader, will read a coordinate = a pixel of color.

Big Sphere Shadow Checkerboard Oriented Shadow

Features

MUST

The project must support the following features:

  • Primitives:
    • Sphere
    • Plane
  • Transformations:
    • Translation
  • Light:
    • Directional light
    • Ambient light
  • Material:
    • Flat color
  • Scene configuration:
    • Add primitives to scene
    • Set up lighting
    • Set up camera
  • Interface:
    • No GUI, output to a PPM file

SHOULD

Once the previous features are working properly, the project should handle the following features:

  • Primitives:
    • Cylinder
    • Cone
  • Transformation:
    • Rotation
  • Light:
    • Drop shadows

COULD

Now the project could handle the following features:

  • Primitives:
    • Limited cylinder (0.5)
    • Limited cone (0.5)
    • Torus (1)
    • Tanglecube (1)
    • Triangles (1)
    • .OBJ file (1)
    • Fractals (2)
    • Möbius strip (2)
  • Transformations:
    • Scale (0.5)
    • Shear (0.5)
    • Transformation matrix (2)
    • Scene graph (2)
  • Light:
    • Multiple directional lights (0.5)
    • Multiple point lights (1)
    • Colored light (0.5)
    • Phong reflection model (2)
    • Ambient occlusion (2)
  • Material:
    • Transparency (0.5)
    • Refraction (1)
    • Reflection (0.5)
    • Texturing from file (1)
    • Texturing from procedural generation of chessboard (1)
    • Texturing from procedural generation of Perlin noise (1)
    • Normal mapping (2)
  • Scene configuration:
    • Import a scene in a scene (2)
    • Set up antialiasing through supersampling (0.5)
    • Set up antialiasing through adaptative supersampling (1)
  • Optimizations:
    • Space partitionning (2)
    • Multithreading (1)
    • Clustering (3)
  • Interface:
    • Display the image during and after generation (1)
    • Exit during or after generation (0.5)
    • Scene preview using a basic and fast renderer (2)
    • Automatic reload of the scene at file change (1)

The number in parentheses is the number of points given in the grading scale for each feature.

Compilation via Makefile

    make

Usage

    ./raytracer --help
        USAGE: ./raytracer <SCENE_FILE> <OPTION>
        SCENE_FILE: scene configuration
        OPTION:
            -G: Graphical
            -G--low: Graphical low quality
            none: No preview

More documentation with Doxygen

    doxygen doxygenConfig
    open html/index.html

About

A path tracer made in C++.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published