For Obsession Engine, a C++ graphical rendering engine I developed alongside my classmate and brother Juan Avilés, we built a modern, high-performance renderer using techniques like Multidraw Indirect and Command Buffers. Together, we designed a data-oriented Entity Component System with optional components and templates for flexibility, and implemented a multi-threaded job system using futures and semaphores to ensure defined functionality.
One of the highlights was implementing Screen Space Global Illumination (SSGI), where we used stochastic normal generation through the use of compute shaders to approximate indirect lighting in real-time, alongside Screen Space Ambient Occlusion using noise for added depth. We also implemented Shadow Mapping and a few other post-processes. The engine leverages deferred rendering with bindless textures to balance performance and visual quality. It was a rewarding experience diving into advanced graphics programming and collaborating closely with my brother to bring the engine to life.