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進行鑲嵌地形渲染