MP-APS
Um moderno mecanismo de renderização OpenGL 3D. A idéia por trás disso é ser muito simples de usar: nenhuma camada de abstração estranha, nomes de variáveis irregulares ou enormes classes de linha de mais de 2000. É principalmente um playground para eu implementar (ou pelo menos tentar: p) diferentes técnicas de programação gráficas. O progresso tem sido lento, pois estou fazendo malabarismos com estudos, trabalho e trabalho da unividade em tempo integral e tentando ser fisicamente ativo. Eventualmente, quero criar um motor "baseado em cena", onde você pode carregar alguns modelos, adicionar algumas luzes sofisticadas e explorá-lo praticamente.
Compilação
Ubuntu (e similar)
bash install-deps-ubuntu.sh
make
cd build/
./MP-APS
Capturas de tela
Renderização de Wireframe anti-alias: 
Renderização fisicamente baseada: 

Iluminação baseada em imagem (IBL): 
Florescer: 
(Versão antiga) Geração de terrenos baseada em CPU usando ruído de perlin: 
Características
- Carregamento do modelo Assimp.
- Pós -processamento (HDR, vibração, flor).
- Paralelo aabb frustum abate.
- Configuração do motor XML.
- Apoio às diretivas
#include em shaders. - Sobreposição de Wireframe baseada em shader.
- Renderização fisicamente baseada.
WIP
- Variação de mapeamento de sombra (sombras suaves).
- Otimização de profundidade-buffer (https://outerra.blogspot.ca/2012/11/maximizing-depth-buffer-range-and.html).
Roteiro
- Volumes de sombra (http://www.alexandre-pestana.com/volumétrico-lights/, https://www.slideshare.net/benjaminglatzel/volumétrico-lighting-for-many-lights-blords-of-the-fallen).
- Texturas de matriz por material:
- "
- (https://www.khronos.org/opengl/wiki/array_texture)
- Reimplementando a frente+.
- Mais efeitos de pós-processamento:
- FXAA (http://blog.simonrodriguez.fr/articles/30-07-2016_implementing_fxaa.html).
- Aberração cromática (https://gamedev.stackexchange.com/a/58412/74957).
- Mude para objetos de amostrador.
- Algum tipo de GUI.
- Espalhamento atmosférico: (https://github.com/korgan00/tfg-atmospheric-scattering) ou (https://ebruneton.github.io/precomputed_atmospheric_scattering/)
Druno de tubo
- Terreno cdlod.
- Renderização planetária.
- Iluminação global (volumes de propagação da luz em cascata).
Código de terceiros
- Assimp.
- Glm.
- ALEGRE.
- GLFW.
- stb_image.
- pugixml.
- GLM AABB Wrapper: (https://github.com/iauns/cpm-glm-aabb).
Pesquisa usada
- Extração rápida de visualizar planos de frustum da matriz de projeção mundial (http://www.cs.otago.ac.nz/postgradns/alexis/planeextraaction.pdf). GRIBB, Hartman (2001).
- Avançar+: trazendo iluminação diferida para o próximo nível (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).
- Renderização fisicamente baseada (https://learnopengl.com/#!pbr/ibl/specular-ibl)
- Variação Mapping Shadow (http://developer.download.nvidia.com/sdk/10.5/direct3d/source/varianceshadowmapping/doc/varianceshadowmapping.pdf)
- Terreno tesellated renderizando com dinâmico LOD (http://victorbush.com/2015/01/tesellated-terrain/)