A graphics engine initially made for the final paper at Computer Graphics course at UNIOESTE. Made from scratch using C++ without using any engine to draw objects
The code dependencies are:
- OpenGL Used because of SDL2
- ImGui
- SDL2 Used for drawing pixels and only for that
- GoogleTest
The code is built using xmake
and the dependencies are installed automatically through. The only exception is the ImGui library, which is included as a submodule.
xrepo
.
On Linux:
xmake && xmake run
On Windows:
xmake; xmake run
Sometimes the dependencies are not installed correctly, due to a lot of reasons. When this happens, you can try to install manually the dependencies.
Inspector
When you click in a element from the hierarchy it will display into the inspector it's information
- Left-handed coordinate system (Adair)
- Right-handed coordinate system (Smith)
You can add the following objects to the scene:
- Sphere (IcoSphere)
- Cube
- Pyramid (tetrahedron)
- Torus
- Cone
- Cylinder
- Point light
- Directional light
⚠️ The current version of the MRX engine only supports local shading. Amongst the shading models available, you can choose between:
- Flat shading
- Gouraud shading
- Phong shading
OBS: The shading model is chosen globally.
- Apply paralelism on the rasterization
- Fix some bugs marked as TODO in the project code
- Scale window with the buttons +1 and -1.
- Base refactor
- Global shadows
- Ray casting from the camera
- Select objects with the mouse
- Ray tracing support