Ray tracing is a technique used to generate realistic digital images by simulating the inverse path of light. Your goal is to create a program able to generate an image from a file describing the scene.
- Clone the project
git clone [email protected]:EpitechPromo2028/B-OOP-400-REN-4-1-raytracer-pierre.montaret.git raytracer
cd raytracer/
- Build the project
make -s
- Launch the project using
./raytracer
If you need any help,--help
flag is for you!
Here is the marking scheme of the project:
- Primitives
- Sphere
- Plane
- Cylinder
- Cone
- Limited cylinder (0.5)
- Limited cone (0.5)
- Torus (1)
- Tanglecube (1)
- Triangle (1)
-
.obj
file (1) - Fractal (2)
- Möbius strip (2)
- Transformations
- Translation
- Rotation
- Scale (0.5)
- Shear (0.5)
- Transformation matrix (2)
- Scene graph (2)
- Lights
- Directional light
- Ambient light
- Drop shadows
- Multiple directional lights (0.5)
- Multiple point lights (1)
- Colored light (0.5)
- Phong reflection model (2)
- Ambient occlusion (2)
- Materials
- Flat color (lambertian)
- 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
- Add primitives to scene
- Set up lighting
- Set up camera
- Import a scene in a scene (2)
- Set up antialiasing through supersampling (0.5)
- Set up antialiasing through adaptative supersampling (1)
- Interface
- No GUI, output to a PPM file
- 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)
- Optimizations
- Space partitionning (2)
- Multithreading (1)
- Clustering (3)
Lysandre BOURSETTE |
Pierre MARGUERIE |
Pierre MONTARET |
---|---|---|
[email protected] | [email protected] | [email protected] |