MP-aps
现代的OpenGL 3D渲染引擎。其背后的想法是非常简单:没有奇怪的抽象层,janky变量名称或大量的2000+线类。它主要是我实现(或至少尝试:P)不同图形编程技术的操场。自从我兼具专职Unive研究,工作和试图身体活跃的情况下,进步一直很慢。最终,我想创建一个“基于场景的”引擎,您可以在其中加载一些型号,添加一些精美的灯并实际探索它。
编译
ubuntu(和类似)
bash install-deps-ubuntu.sh
make
cd build/
./MP-APS
屏幕截图
抗氧化线框渲染: 
基于物理的渲染: 

基于图像的照明(IBL): 
盛开: 
(旧版本)使用Perlin噪声基于CPU的地形生成: 
特征
- Assimp模型加载。
- 后处理(HDR,燃烧,绽放)。
- 平行的AABB Frustum culling。
- XML引擎配置。
- 支持着色器中的
#include指令。 - 基于着色器的线框覆盖。
- 基于物理的渲染。
WIP
- 方差阴影映射(柔和的阴影)。
- 深度缓冲器优化(https://outerra.blogspot.ca/2012/11/maximizing-depth-buffer-range-and-and.html)。
路线图
- 阴影卷(http://www.alexandre-pestana.com/volumetric-lights/,https://www.slideshare.net/benjaminglatzel/volumetric-lightric-lighting-for-many-lighting-for-many-lights-iny-lights-in-lords-in-lords-in-lords-of-the-fallen)。
- 每材阵列纹理:
- (https://www.gamedev.net/forums/topic/662654-best-practise-texture-texture-atlas-38-vbo/?do=findcomment&comment = 5191703)
- (https://www.khronos.org/opengl/wiki/array_texture)
- 重新实现向前+。
- 更多后处理效果:
- FXAA(http://blog.simonrodriguez.fr/articles/30-07-2016_implementing_fxaa.html)。
- 色差(https://gamedev.stackexchange.com/a/58412/74957)。
- 切换到采样器对象。
- 某种gui。
- 大气散射:(https://github.com/korgan00/tfg-atmospheric-scattering)或(https://ebruneton.github.io/precomputed_atmosped_atmospheric_scattering/)
管道梦
- CDLOD地形。
- 行星渲染。
- 全球照明(级联的光传播量)。
第三方代码
- Assimp。
- Glm。
- 高兴的。
- Glfw。
- stb_image。
- pugixml。
- GLM AABB包装器:( https://github.com/iauns/cpm-glm-aabb)。
使用的研究
- 从世界视图矩阵(http://www.cs.otago.ac.ac.nz/postgrads/alexis/alexis/planeextraction.pdf)中快速提取观看式飞机。 Gribb,Hartman(2001)。
- 向前+:将延期照明提升到一个新的水平(https://takahiroharada.files.wordpress.com/2015/04/forward_plus.pdf)。 Harada,McKee,Yang(2012)。
- 实心线框(http://developer.download.nvidia.com/sdk/10/direct3d/source/solidwireframe/doc/solidwirefframe.pdf)。 Nvidia(2007)。
- 基于物理的渲染(https://learnopengl.com/# !! pbr/ibl/specular-ibl)
- 方差阴影映射(http://developer.download.nvidia.com/sdk/10.5/direct3d/source/varianceshadowmapping/doc/doc/varianceShadowmapping.pdf)
- 用动态lod(http://victorbush.com/2015/01/tessellated-terrain/)用动态LOD进行镶嵌地形渲染