分享|米哈游技术总监:从手机走向主机,《原神》主机版渲染技术分享( 九 )
文章插图
我们先看一下左边的Reflection probe,Reflection probe是用来给场景提供反射信息的。因为游戏的光影不断变化,我们是不能够简单地为反射探针烘焙一张环境贴图作为反射信息之用。所以对于每一个Reflection probe,我们是烘焙了一个mini GBuffer。产生在游戏当中,根据当时的光照条件去实时生成环境贴图,美术可以在游戏里面摆很多个这样的Reflection probe,只要他们需要。
文章插图
然后在运行的时候,我们会去更新场景的Reflection probe的cubemap。整个过程我们大致分为三步,第一步是Relight,第二步是Convolve和Compress。我们使用Compute Shader去同时处理六个面,然后分帧进行,同时只处理一个probe,不停地做循环。
文章插图
第一个步骤,就是Relight步骤,大家可以通过图能看出来,就是一个简单的把当前的光照环境用来照亮mini GBuffer,得到环境贴图的过程。然后生成的环境贴图,需要经过Convolve这一步,得到mipmap的正确信息。最后这个贴图需要再通过一个Compute Shader的做法,压缩成BC6H的格式,然后送到渲染管线里面去使用。大致是这么三步的过程。
文章插图
下面是我们的Ambient probe。Ambient probe也是实时生成的。我们在做完Relight以后,Reflection probe是包含了当前的整个光照信息,我们可以从中提取出当前的Ambient的信息,并且把它转化成一个3阶的SH(Spherical Harmonic)系数保存下来。
这个提取的过程,在我们把Reflection probe处理完成以后会自动进行,也是同时使用Compute Shader来处理六个面。
文章插图
这么看下来,我们整个系统算是完成了,但实际上里面有很多地方是可以改进的。第一个是Relight是没有阴影的,因为单靠mini GBuffer我们是没有办法在Relight pass生成阴影,这样会导致一个很大的问题。就是在Relight完成得到的环境贴图是漏光的,本来应该处于阴影当中的地面也会变得非常明亮。
通过这样的环境贴图算出的环境光(ambient)也会出现有问题的情况,那怎么解决呢?我们的做法是,我们把24小时的shadow都烘焙下来,就是隔一段时间我们烘焙一下,把shadow转化成一个shadow SH保存起来。在运行的时候简单通过当前的时间对shadow SH进行插值,用来压暗Relight以后的结果。
这样得到的效果是出乎意料的好,而且我们需要保存的数据非常的少。因为shadow SH很糊,所以我们做插值也没有什么大的问题。
- 召唤兽|梦幻西游:亚运会电竞项目公布了,没有梦幻西游,但我能理解
- 召唤兽|梦幻西游:周末客户端卡顿的解决方式来了,有人说重新登录就行
- 金刚伞|梦幻西游:这波师傅不背锅,把金刚伞看成金刚石,说师门被暗改了
- 长乐|梦幻西游:买大唐送法系神器吗?大唐的12火神器增加的是法伤属性
- 藏宝图|梦幻西游:两款游戏不能共存吗?某玩家玩梦想世界,梦幻号被封了
- NFT|日本游戏巨头史克威尔艾尼克斯将进军NFT链游领域
- 德莱文|LOL手游:暴力德莱文登顶国服第一德莱文,小吴被称手游文森特
- 怪物猎人|一周热游神评论:雷神不香了?胡桃两天流水32国登顶,收入直逼雷神
- 打野|LOL手游上线1天暴露难题,上单没了TP,打野太无脑,辅助成摆设
- 手游|LOL手游第二波魄罗宝箱爆率提高?开玩笑,清风:气到人没了