大气bug定位
方法论问题 — 体积云和GPU driven的一些思考
Google Filament
大气bug定位
这周遇到一个低配置机器上大气算法切换导致崩溃的bug,由于内网没有相应的机器可以复现,外网机器调试起来效率十分低下,导致定位花了很长时间。最后关于multi-scattering的性能问题分析放到gitbook里了。
除了学习到一些问题定位方法外,最重要的是认识到全面有效的性能测试是多么重要,同志们!!一个feature能在高配机上跑起来不叫完成,验证在低配机上的性能及优化也很重要哇~
方法论问题
体积云调试
最近反思了一下,之前调试体积云存在的几个问题:- 中间也有调的比较好的效果,但是后来改吧改吧调参加改shader,想回到之前的效果无望
- 控制变量没有做好,形态光照各种参数合在一起调试,通常调到最后自己和TA都晕了
- 太过依赖现有的weather texture,想定制自己的很困难
于是乎针对这些问题,想了想怎么样调试才可以更加高效:
- 版本控制,每天抽出一点时间和TA调试,并且把参数和shader都copy成一个版本,简单记录下调了哪些参数,有什么效果,还有哪些问题
- 先从一朵云调试起,即使得weather texture上只有一朵云,进而再调试形状,高度,密度,光照等等,然后锁死参数,在weather texture上由TA再绘制其他的云,这个时候尽量不要修改已经调试好的参数和算法。
- 现在没有笔刷的工具,weather texture到引擎里的体积云过程还是太抽象,好的工具和算法实现同样重要。
GPU Driven Rendering
在开始实现任何一个feature之前,要把步骤和目标想清楚。- 整个feature我可以分成哪些阶段,每个阶段有哪些步骤
- 对于复杂的feature,多阶段很重要。第一阶段我可以简单的实现出什么效果得到哪些验证,下一个阶段我可以扩展或者优化什么,最终阶段我要得到一个什么比较perfect的结果。
- 每个步骤是在做什么,输入输出是什么,每一步的ground truth是什么(就是知道我每一步做的对不对十分重要)
Google Filament
https://github.com/google/filament
- 完成本地mac端的编译,可以初步跑点demo
- Filament 的 官方文档是个很好的PBR教材