分享|米哈游技术总监:从手机走向主机,《原神》主机版渲染技术分享( 四 )
文章插图
我们的软阴影采用的是泊松分布的采样,而且每个像素会去做一个旋转,来消除重复的pattern,这一整套的操作都是很重量级的。但是我们仔细想一想,真的需要对每个像素都要做这么多操作吗?所以我们的优化思路是尽量只在必要的地方做软阴影计算,我们会生成一张Mask贴图,在贴图里面标出阴影、半影和非影片区。阴影区和非阴影区只需要直接返回0和1就好了,只有在半影区才会去计算软阴影,通过这种方式,我们的GPU开销大致减少了30%左右。甚至比采用4级cascades还要再快一些。
文章插图
大家可以看一下这张图,图里面被红色标注的区域,就是我们的半影区,这个是需要我们去做软阴影处理的区域。其他的区域,就是在阴影区域或者是非阴影区域,我们直接返回0和1就好了。大家可以看出来,绝大部分的像素都可以去掉软阴影计算这个繁琐的步骤。
文章插图
这张神奇的Mask贴图是怎么生成的呢?这张Mask贴图的分辨率是屏幕分辨率的1/4×1/4,也就是说一个Mask值对应的是一个4×4的block。然后我们对4×4的block里面的每一个像素,来判断它是不是在阴影中,最后汇总成一个阴影、半影和非阴影的三个状态,保存到Mask贴图里。这样我们能够得到一个准确的半影信息,但是它不够快,所以我们做了进一步的优化,只选择4×4这个block里面很少的几个像素,来判断是不是在阴影当中。
这几个像素的判断结果,就代表了整个block的信息,显然这样会出现一些误差,因为我们是拿几个少数几个像素的结果来代表整个block,所以我们把这样计算得到了Mask贴图做了模糊处理,让半影的区域稍微扩散出去。整个Mask贴图的生成,包括模糊处理大概的开销是在0.3毫秒左右。大家可以看一下对比图。
文章插图
文章插图
优化出来的效果非常好,肉眼可以说是看不出任何的区别。这样优化完之后,我们的GPU开销时间大概稳定在1.3到1.7毫秒。
文章插图
把阴影搞好以后,下面我们来看看AO(Ambient Occlusion环境光遮蔽)。大家可以考虑一种情况,就是人物和场景的物体都已经处在山或建筑物的阴影当中,这个时候人物和物体的投影跟山和建筑的投影是融为一体的。这种情况之下,画面缺乏对比,人和物体就会显得浮空。为了解决这个问题,我们在游戏里面采用了多种的AO技术,针对不同的情景生成不同的AO。
- 召唤兽|梦幻西游:亚运会电竞项目公布了,没有梦幻西游,但我能理解
- 召唤兽|梦幻西游:周末客户端卡顿的解决方式来了,有人说重新登录就行
- 金刚伞|梦幻西游:这波师傅不背锅,把金刚伞看成金刚石,说师门被暗改了
- 长乐|梦幻西游:买大唐送法系神器吗?大唐的12火神器增加的是法伤属性
- 藏宝图|梦幻西游:两款游戏不能共存吗?某玩家玩梦想世界,梦幻号被封了
- NFT|日本游戏巨头史克威尔艾尼克斯将进军NFT链游领域
- 德莱文|LOL手游:暴力德莱文登顶国服第一德莱文,小吴被称手游文森特
- 怪物猎人|一周热游神评论:雷神不香了?胡桃两天流水32国登顶,收入直逼雷神
- 打野|LOL手游上线1天暴露难题,上单没了TP,打野太无脑,辅助成摆设
- 手游|LOL手游第二波魄罗宝箱爆率提高?开玩笑,清风:气到人没了