Descripció general #
Shadow és una biblioteca de renderització en temps real que implementa diverses tècniques centrals utilitzades en els motors de videojocs moderns. Està escrita íntegrament en C++ amb OpenGL, i va ser desenvolupada com el meu Treball de Fi de Grau.
Repositori de GitHubSobre el projecte #
L’objectiu de Shadow va ser estudiar i implementar tècniques de renderització en temps real des de zero, centrant-me en els sistemes gràfics a nivell de motor en lloc d’utilitzar frameworks o pipelines de shading predissenyats. El motor segueix un pipeline de Deferred Rendering i inclou múltiples funcionalitats de post-processat i sombreig.
Característiques de la biblioteca #
Vaig dissenyar i implementar:
- Pipeline de Deferred Rendering
- Layout del G-Buffer i arquitectura multipas
- Physically-Based Rendering (PBR)
- Flux de treball de Metalness/Roughness
- Screen Space Ambient Occlusion (SSAO)
- Pipeline de post-processat Bloom
- Normal Mapping
- Generació de base tangent-espai (TBN)
- Sistema de gestió de recursos
- Eines de depuració i visualització amb ImGui
- Bucle de renderització d’escena i sistema de materials
Pipeline de renderització #
Shadow utilitza un flux de treball de Deferred Shading per suportar múltiples llums dinàmiques de manera eficient. Les dades de material s’emmagatzemen en un G-Buffer i la il·luminació es calcula en un pas separat.
Resultat visual #
Registre de versions #
v0.1 #
- Base del motor (finestres, sistema d’entrada, càrrega de recursos)
- Renderitzador de skybox
- Inicialització del G-Buffer
- Implementació base de Deferred Shading
v1.0 (Finalització del Treball de Fi de Grau) #
- Physically-Based Rendering (PBR)
- Pas SSAO
- Post-processat Bloom
- Pipeline de Normal Mapping