第八章 雨夜像素与五千里外的声音
4月30日凌晨,雨还在下。
李君宪的台灯是宿舍唯一的光源,在潮湿的空气里晕开一团暖黄。
屏幕上,两行代码已经对峙了二十分钟:
if(player.idletime>10.0f){玩家静止超过10秒
world.timescale=5.0f;世界时间流速x5
interiorlight.freeze();室内光影冻结
}else{
world.timescale=1.0f;
interiorlight.syncwithworldtime();
}
逻辑很简单。
但“室内光影冻结”
这个函数,怎么写?
他试了三个方案:一是直接停止室内所有光源的计算,但这样室内会变成一片死黑,没有“凝固感”
,只有“熄灭感”
。
二是记录玩家静止瞬间的光影状态,然后锁定贴图,但窗外的动态影子还在动,内外就撕裂了。
三是陈末建议的:用双层渲染,室内层用静态快照,室外层正常更新,中间用遮罩过渡。
第三个方案最合理,但实现起来也最复杂。
需要重写整个场景的绘制管线,而距离陈末承诺的“5月10日完成渲染模块”
只剩十天。
李君宪揉了揉发涩的眼睛,看向窗外。
雨丝在路灯的光晕里斜斜划过,像无数道银线。
他忽然想起张明远笔记里的话:“冲淡者,非静止也,乃动中之静。
譬如坐看云起,云动而心不动。”
他重新看向代码。
也许不该是“冻结”
,而是“抽离”
。
让玩家从世界的正常流速中暂时抽离出来,成为一个观察者。
室内不是不动,是以另一种节奏在动——极慢,慢到几乎静止。
而窗外,是快的,是流变的。
他删掉那两行,重新写:
if(player.enteridlestate()){
timesystesplittimeline();分裂时间轴
室内时间轴:流速0.1
本章未完,点击下一页继续阅读