Discovering 3d graphics using hyper-realistic lighting generation
โข Built by Job van der Zweep and Ruben Nijhuis
- For more images visit The Gallery โ
It's very important to clone recursively as this project contains submodules!
$ git clone --recursive https://github.com/RubenNijhuis/Mini-Ray-Tracer.git
$ make run
If you're on Linux(Debian-like), you have to install the prerequisites for MLX42 โ first:
sudo apt install build-essential libx11-dev libglfw3-dev libglfw3 xorg-dev
- Phong shading
- Sphere, cylinder, plane and disc geometries
- Camera & object rotations
- Multi & colored spot light support
- Multithreaded rendering with squares to see progress
$ ./bin/minirt [path-to-'.rt'-file]
Runs the program with an example rt file
$ make norm
Outputs the norminette across the src and include folder of every project
$ make test
Test the functions of MiniRT using Criterion
$ make run
Run the program with a default file test from the assets folder
$ make submodules
Pulls the most recent versions of the submodules
!! BEWARE !! this could import breaking changes
Mini-Ray-Tracer -/
- ๐ผ assets -/ # All types of assets, output img
- ๐ฆ bin -/ # Mini-Ray-Tracer output
- ๐ include -/ # The .h files of the project
- ๐ libs -/ # Our custom and vendor libraries
- โฒ๏ธ src -/ # Source files
- ๐งช test -/ # Testing directory
- .gitmodules # Describes what submodules are installed
- Makefile # Compiling && linking magic happens here
...
In this project we tried to adhere to a more modular structure of our project. Creating components that have one entry point and abstract the inner-workings.
Each module has a folder and file that match name-wise. Every other file can be seen as a part of that bigger module. In some cases some functions might be exposed to the larger project as it follows the DRY principle more.
๐ Folder name
- File with that same folder name (this is the module entry point)
- ...supporting files
- Potential README explaining the setup and usage
$ make test
Test the functions of MiniRT using Criterion