Made from the end of april 2018 to the end of july 2018. The objective of the project was to create computer generated images. It was a 4 people school project, made from scratch and entirely in C.
You first need to have gtk+3 installed locally.
- Linux :
$ apt-get install libgtk-3-dev
- Mac (takes time) :
$ brew install gtk+3
Then run :
$ make
The programm takes a scene written in json as an argument. Multiple scenes are directly available in the directory with the same name.
$ ./rt 'file_name'
Clustering calculations are implemented. You can run the programm simultaneously on different computers as long as you're connected to the same network.
- To run the programm as the host :
$ ./rt 'file_name' -host 'number of clients'
- To run the programm as a client (IP host was given when running the programm as a host) :
$ ./rt 'file_name' -client 'IP host'
Once the programm is running, you can move W A S D
and rotate I J K L
the camera. You can anti-alias O
or pixelate P
the display. You can also press ESC
to quit the programm. Those are hotkeys implemented to save time searching for that particular display. The UI allows you to do everything you need.
- 4 objects : sphere, plane, cylinder, cone
- Multiple light sources
- Phong shading
- Shadows
- Translations & rotations (camera & objects)
- Each object can be cut on 3 different axes
- These 3 axes can be either the world axes or the object axes
- Translations & rotations are still working with cut objects
- Planes can either be cut into rectangles or circles
- Both have adjustable percentages
- Implementation of Snell-Descartes's indice of refraction
- A semi-transparent object has its colors projected in its shadow
- Each object can have a texture put on it
- Variable scale & position
- Can use alpha channel to set the transparency of the object
- Can size the object (sets its limits)
- 24 bits & 32 bits images support
- Checkerboard / rainbow
- Perlin noise (classic/cosine)
- Bump mapping
- Made with GTK+3, also displays the scene
- Can open json scenes while the programm is running
- Possibility to adjust settings of all features
- Multiple cameras (fov, position, rotation)
- Can save the current scene in a json file
- Can save the current scene in a png file
- Anti-aliasing (SSAA, x2 to x16)
- Cel-shading
- Depth of field
- Sepia & black and white filters
- Stereoscopy
- Ponctual & parallel lights
- Colored lights
- Caustics
- Pixelation
- Multi-threading
- Clustering (works with multi-threading)