My first introduction to 3D graphical rendering came in the form of an assessment to render a basic scene featuring Sponza. The scene containing models with different textures, different specular attributes, static and dynamic objects, directional lights, spotlights and point lights.
I achieved 97% in the assessment and my implementation included:
- A single vertex array object, vertex array buffer and element array buffer for the entire scene,
- Textures collected at load time and stored as a 2D texture array,
- Materials collected at load time and stored as a texture buffer,
- Instanced rendering for the entire scene,
- Uniform buffer blocks for scene data and lighting data,
- Forward rendering,
- Phong reflection model,
- A wireframe mode toggle using barycentric co-ordinates.
Although looking back this is rather basic for a modern renderer, it proved to be an educational process and made me love graphics programming.
A Windows build is available here: https://github.com/storm20200/UniversitySecondYearSponza/releases/latest