MP-SAP
Un moderno motor de renderizado 3D OpenGL. La idea detrás de esto es ser muy simple de usar: no hay capas de abstracción extrañas, nombres de variables janky o clases de línea masivas de 2000+. Es principalmente un patio de recreo para mí implementar (o al menos probar: P) diferentes técnicas de programación de gráficos. El progreso ha sido lento ya que estoy haciendo malabares con estudios de univenidad a tiempo completo, trabajo e intento de ser físicamente activo. Eventualmente, quiero crear un motor "basado en escenas", donde pueda cargar algunos modelos, agregar algunas luces elegantes y explorarlo virtualmente.
Compilación
Ubuntu (y similar)
bash install-deps-ubuntu.sh
make
cd build/
./MP-APS
Capturas de pantalla
Representación de la estructura alambre de alias: 
Renderización basada física: 

Iluminación basada en imágenes (IBL): 
Floración: 
(Versión anterior) Generación de terreno basada en CPU usando Perlin Noise: 
Características
- Carga del modelo Assimp.
- Post Procesamiento (HDR, Vibrancia, Bloom).
- Paralelo aabb frustum sacrificando.
- Configuración del motor XML.
- Soporte para las directivas
#include en sombreadores. - Superposición de estructura alámbrica a base de sombreador.
- Representación física.
Ceñudo
- Mapeo de sombras de varianza (sombras suaves).
- Optimización de profundidad-Buffer (https://outerra.blogspot.ca/2012/11/maximizing-depth-buffer-range-and.html).
Hoja de ruta
- Shadow Volumes (http://www.alexandre-pestana.com/volumetric-lights/, https://www.slideshare.net/benjaminglatzel/volumetric-lighting-for-mhery-lights-inlords-of-the-fallen).
- Texturas de matriz por material:
- (https://www.gamedev.net/forums/topic/662654-best-practise-texture-atlas-38-vbo/?do=findcomment&comment=5191703)
- (https://www.khronos.org/opengl/wiki/array_texture)
- Reimplemento hacia adelante+.
- Más efectos de postprocesamiento:
- FXAA (http://blog.simonrodriguez.fr/articles/30-07-2016_implementing_fxaa.html).
- Aberración cromática (https://gamedev.stackexchange.com/a/58412/74957).
- Cambiar a los objetos de muestras.
- Algún tipo de GUI.
- Dispersión atmosférica: (https://github.com/korgan00/tfg-atmosférica-scattering) o (https://ebruneton.github.io/precomputed_atmoestic_scattering/)
Dreameno de tuberías
- Terreno CDLOD.
- Renderización planetaria.
- Iluminación global (volúmenes de propagación de luz en cascada).
Código de terceros
- Assimp.
- Glm.
- CONTENTO.
- GLFW.
- stb_image.
- Pugixml.
- GLM AABB WRAPPER: (https://github.com/iauns/cpm-glm-aabb).
Investigación utilizada
- Extracción rápida de la vista de los planos frustum de la matriz mundial-view-propiegysproyección (http://www.cs.otago.ac.nz/postgrads/alexis/planeextraction.pdf). GRIBB, Hartman (2001).
- Forward+: Traer iluminación diferida al siguiente nivel (https://takahiroharada.files.wordpress.com/2015/04/forward_plus.pdf). Harada, McKee, Yang (2012).
- Solid Wireframe (http://developer.download.nvidia.com/sdk/10/direct3d/source/solidwireframe/doc/solidwireframe.pdf). Nvidia (2007).
- Renderización basada física (https://learnopengl.com/#!pbr/ibbl/specular-ibl)
- Variance Shadow Mapping (http://developer.download.nvidia.com/sdk/10.5/direct3d/source/varianceshadowmapping/doc/varianceshadowmapping.pdf)
- Renderización de terreno teselado con Dynamic LOD (http://victorbush.com/2015/01/tassellated-terrain/)