分享|米哈游技术总监:从手机走向主机,《原神》主机版渲染技术分享( 四 )


文章插图
我们的软阴影采用的是泊松分布的采样,而且每个像素会去做一个旋转,来消除重复的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。

【精彩生活】jing111.com小编为您精选以下内容,希望对您有所帮助: