用webgl
和CPP
实现games202
所提到的实时渲染的相关算法。为了节省存储空间,Github仓库未包含代码的原理解释等。
电脑GPU(GPU AMD Radeon(TM) 530)
很拉,部分结果无法更好展示,抱歉了😞。
如果该项目对你有帮助,请给个星星吧😝~
PCSS
作业的基础要求,更多内容请参考我的博客-PCSS。
PRT
作业的基础要求,更多内容请参考我的博客-PRT。
Hi-z SSR
的帧率是World Space SSR
的4
倍左右😆。而Efficient GPU SSR
的帧率是World Space SSR
的2
倍左右,可能是因为GPU太拉胯,这种复杂的场景导致它们显示的帧率几乎一致,我在作业三的README
里面用简单的场景重新测试了一下,结果是2
倍。
Hierarchical-Z SSR
最初是由GPU Pro 5提出的,国外有UP对这一技术做了较好的解释,感兴趣的可以直接阅读原文,另外本次作业中我也对该方法的原理和代码做了详细说明,部分内容借鉴于该UP
。
Efficient GPU SSR
是直接参考的一篇JCGT论文(Efficient GPU Screen-Space Ray Tracing),该论文的核心内容我也做了详细说明。
World Space Ray Marching SSR
则是作业的基础要求。
更多内容在我的博客-SSR。
Split Sum
为作业的提高内容,IBL
为个人扩展内容,更多内容请参考我的博客-KullaConty。
SVGF
是参考文刀秋二
大佬发表的论文,论文表示filter的对象是像素Irradiance的灰度值
,而且是直接光和间接光分开处理,最后进行Modulate
时将Emission
和Albedo
加回去,这样就可以保留图像的高频信息了。但是作业没有给每帧的Albedo
,无法得到像素的Irradiance
,而且直接光和间接光也是混合在一起进行filter的,所以右边那幅图像看起来会比较糊,更多内容请参考我的博客-SVGF。
JBF-atrous
则是作业的提高内容。