Descripción general #
Shadow es una librería de renderizado en tiempo real que implementa varias técnicas centrales utilizadas en los motores de videojuegos modernos. Está escrita íntegramente en C++ con OpenGL, y fue desarrollada como mi Trabajo de Fin de Grado.
Repositorio de GitHubSobre el proyecto #
El objetivo de Shadow fue estudiar e implementar técnicas de renderizado en tiempo real desde cero, centrándome en los sistemas gráficos a nivel de motor en lugar de utilizar frameworks o pipelines de shading prediseñados. El motor sigue un pipeline de Deferred Rendering e incluye múltiples funcionalidades de post-procesado y sombreado.
Características de la librería #
Diseñé e implementé:
- Pipeline de Deferred Rendering
- Layout del G-Buffer y arquitectura multipaso
- Physically-Based Rendering (PBR)
- Flujo de trabajo de Metalness/Roughness
- Screen Space Ambient Occlusion (SSAO)
- Pipeline de post-procesado Bloom
- Normal Mapping
- Generación de base tangente-espacio (TBN)
- Sistema de gestión de recursos
- Herramientas de depuración y visualización con ImGui
- Bucle de renderizado de escena y sistema de materiales
Pipeline de renderizado #
Shadow utiliza un flujo de trabajo de Deferred Shading para soportar múltiples luces dinámicas de forma eficiente. Los datos de material se almacenan en un G-Buffer y la iluminación se calcula en un pase separado.
Resultado visual #
Registro de versiones #
v0.1 #
- Base del motor (ventanas, sistema de entrada, carga de recursos)
- Renderizador de skybox
- Inicialización del G-Buffer
- Implementación base de Deferred Shading
v1.0 (Finalización del Trabajo de Fin de Grado) #
- Physically-Based Rendering (PBR)
- Pase SSAO
- Post-procesado Bloom
- Pipeline de Normal Mapping