事情是这样,昨天在整理素材的时候突然发现,之前做的场景雾效怎么看怎么假。跟朋友讨论半天,他甩过来一个词儿:“沃尔默”。我心说这又是啥高级玩意儿,结果一查发现是个雾效算法,立马来劲儿了。
开整前先翻车
顺手就把官方文档拽下来,密密麻麻的公式看得我太阳穴突突跳。管他,先照着论文伪代码敲进编辑器。敲完一运行,好家伙,整个屏幕直接糊成牛奶盒,人物走两步就跟掉进油漆桶似的,连路都看不见。
当时我就干了三件事:- 猛搓眼睛确认没瞎
- 疯狂按撤回键
- 把咖啡当救命水灌了半杯
跟参数死磕
重新捋文档才发现,密度计算那儿少除了个1000。改完再跑,雾总算能看了,但远处山头像被泼了灰油漆,硬邦邦一块。蹲电脑前折腾驱动杆位置参数,调了俩钟头,雾是分层了,可帧率掉得跟股票似的。瞄了眼性能分析,原来把雾采样塞进像素着色器里,显卡直接骂娘了。
赶紧翻出压箱底的《GPU精粹》,真让我翻到段话:“雾采样得扔计算着色器”。拍大腿骂了句早不说,立马把代码扒拉到计算管线里。折腾完手都在抖,按编译键那秒跟拆炸弹似的——结果帧数噌地弹回60,差点对着显示器鞠个躬。
意外捡到宝
最邪门的是调阴影参数时,手滑把衰减系数多按个零。原本想着又要崩,谁知阳光穿过雾层居然透出丁达尔光效,树影在地上拉得老长。愣是盯着看了五分钟,截了二十多张图。翻文档确认压根没这功能,敢情是歪打正着调出了体积阴影。
收尾时给雾加了点高度衰减,山脚下堆着棉花糖似的雾气,山顶倒是清清爽爽。存完工程已经凌晨三点,厨房摸出半包干脆面啃得咔咔响。回头看看屏幕里流动的雾气,突然觉得这破参数调得值——虽然下次让我重写可能还得折腾通宵。
对,那个手滑多按的零现在还在代码里躺着,打死不敢删。要我说,搞开发最玄学的时刻就是:你以为在修bug,结果搞出个新特性。文档里没写的效果,结果成了我手气好的一次误打误撞。
还没有评论,来说两句吧...