Rust practice project, implementing a renderer, based on the Dmitry V. Sokolov's course.
Supports several shading pipelines at the same time at a cost of slight bloat, examples below.
Pressing q, e rotates the light, pressing a, d rotates the camera.
Binary can be launched as is to do a render of diablo with default pipeline but also very crudely supports passing of 2 arguments:
-p Path to the asset folder, e.g -p assets/african_head.
-s Choice of the shader pipeline, e.g -s default. All possible options:
- default
- phong
- true_normal
- darboux
- specular
- shadow
- occlusion
For now asset folder is required to contain 5 files:
- model.obj
- normal_map_tangent.tga
- normal_map.tga
- specular_map.tga
- texture.tga (diffuse texture)
Doesn't work too well for the diablo model for some reason, so here is the african head model.

Notice how tail and right hand are correctly shaded in comparison to normal map based shading.





