老时时彩360开奖结果 360彩票老时时彩开奖号码 老时时彩360开奖号码 老时时彩是什么 老时时彩2011081901 重庆老时时彩彩开奖360 中国福利彩票老时时彩开奖结果查询 老时时彩复试多少个 老时时彩开奖结果记录 360老时时彩冷热统计 江西老时时彩360 重庆老时时彩计划软件 如何看老时时彩走势 老时时彩规则 老时时彩开奖网页 中国福彩老时时彩 老时时彩现场开奖号码 老时时彩走势图表360 老时时彩360安全代购 老时时彩360走势图解 网易彩票老时时彩 老时时彩开奖k线图 老时时彩360后一计划 360老时时彩杀号定胆 360彩票网老时时彩走势图 360重庆老时时彩综合走势图 360老时时彩开奖结果 重庆时时彩投注老时时彩技巧 360重庆老时时彩综合走势图 老时时彩开奖百度走势图 老时时彩手机走势图APP 重庆老时时彩一星 老时时彩预测杀号 老时时彩号码 老时时彩五星012路 老时时彩万能后二计划 老时时彩第20110829 重庆老时时彩开奖号码 360彩票老时时彩历史开奖号码 福利彩票老时时彩玩法 老时时彩历史遗漏号码 老时时彩360基本走势 老时时彩开奖号码结果 老时时彩即时开奖 老时时彩投注平台 360老时时彩杀号 重庆老时时彩毒胆技巧 老时时彩几点开始 重庆老时时彩五星走势 老时时彩冷热走势图
游戏观察 游戏产业媒体
手机端下载
当前位置:游戏观察 > 新闻 > 研发资讯 > 正文

AAA游戏中的逼真雪景效果的实现方式

2019-02-23 14:00 来源:fengliancanxue

  游戏观察2月23日消息,现在越来越多的AAA游戏中都实现了逼真的雪的效果,比如《战神4》、《地平线:黎明时分》、《荒野大镖客:救赎2》、《古墓丽影:崛起》等都实现了不错的雪地效果。今天我们就来探究一下他们的实现方式。现在主流的实现方式都是通过硬件提供的细分功能来实现的。

  Batman:Arkham Origins

  这个游戏里面没有地形,只有房顶和城市街道?#34903;鄭?#25152;?#36816;?#30340;做法比较取巧,局限性比较大。

Batman:Arkham Origins

  动态生成置换高度图,主机使用?#30828;鈑成洌琍C使用细分技术。

Batman:Arkham Origins

  如何生成高度图?

Batman:Arkham Origins

  把会影响雪地效果的物体(有一部分在雪的表面下)使用一个踝关节高的正交相机渲染到一个rt里面。

  把rt清除成黑色。

  渲染物体为白色。

  过滤并把渲染结果累积到另外一张纹理里面。

Batman:Arkham Origins

Batman:Arkham Origins

  大体思路就是这样的,它的优点就是实现简单,但是也有一些局限就是它只适用于房顶以及平坦的城市街道。?#27604;?#25105;们?#37096;?#20197;?#36816;?#36827;行相应的改进,以支持地?#25105;?#21450;有坡度的物体。

  Rise of the Tomb Raider

  古墓丽影崛起的做法较通用,可以在地形上产生雪迹。在仔细介绍前先统一下术语。

  Snow height:在未应用变形之前的雪的高度(vertex.z)

  Deformation points:劳拉的脚以及其它产生变形的3D坐标。

  Foot height:一个变形点的垂直高度(point.z)

  Trail depression:雪迹被踩下去的比原本雪低的那部分。

  Trail elevation:由于被踩下去导致雪隆起的那一部分。

Rise of the Tomb Raider

  Deformation heightmap:一张32位的纹理,1024x1024个像素,存储变形信息。

  Depression depth:abs(snow height–foot height)

  Deformation shader:用于生成变形高度图的compute shader。

  Fill shader:用于模拟暴风雪后雪迹被慢慢填充的过程。

  Snow shder:用于渲染雪的shader,这个shader会应用变形信息。

  有了这些术语,我们接下来看看它是怎么做的。

Rise of the Tomb Raider

  从上图可以看出它主要分为三个?#34903;瑁?/p>

  Deformation shader根据dynmaic_object的defomation point来计算影响的像素信息。

  Fill shader用于修改上面计算好的高度信息,模拟暴风雪将雪迹填平的过程。

  Snow shader用来应用变形高度图配合细分来实现雪迹效果。

Rise of the Tomb Raider

  生成高度图

  观察发现雪迹的形状可以用一个二次曲线近似,通过把一些动态物体近似成一些点,变形高度可以通过以下公式计算:

生成高度图

  这些变形点累积到deformation heightmap中,deformation shader为每一个点分配一个组,每个组会写入32x32的一个区域内,并且使用一个原子取最小操作,之所以需要这个是因为多个点的影响的区域可能会重合。

  生成隆起(elevation)部分

  为了计算elevation,foot height也是需要的,主要是用来判断是否能生成雪迹,因为elevation部分是高于雪未经变形的高度的。

生成隆起(elevation)部分

  为了计算elevation,我们需要知道elevation distance,它是elevation开始的地方到当前渲染点的距离。如下图所示:

生成隆起(elevation)部分

  为了计算elevation distance,我们引入了以下几个变量:

  Depression distance:变形的中心到depression结束的距离

  Distance from root:变形的点心到当前渲染点的距离,注意它是depression distance和elevation distnce的和。

生成隆起(elevation)部分

生成隆起(elevation)部分

  Elevation的值应该跟雪迹的深度成正比,雪迹越深,那么elevation应该越高。计算公式如下所示:

生成隆起(elevation)部分

  纹理选择

  为了给雪地一个更随机真实的效果,三张纹理贴图应用到了变形的不同部分,如下所示:

纹理选择

  到这里,基本的雪的变形效果的实现已经讲完了,一些优化细节我们这里就不仔细?#27493;?#20102;,感觉兴趣的同步可以参考GPU Pro7上的文?#38534;?#29616;在我们来说下它的优缺点,优点是实现也比较简单,支持?#25105;?#22369;度的网格,雪迹的形迹?#26032;?#36215;的部分,以及模拟暴风雪填平雪迹的效果。缺点是它把一个物体当成了一些点的集合,这样就不容易做一个人死后躺在地上类似的效果,?#27604;?#20063;不是?#33618;?#20570;就是把一个成当成多个点来解决,但是总体效果会差一些。下面我们来看另外一个解决方案。

  Creating Snow Trails in Unreal Engine 4

  它的?#34903;?#22914;下所示:

  使用一个Scene Capture从下向上拍摄一张地形的深度图。

  在上一个拍摄的基础上使用Custom Depth拍摄影响雪迹深?#21462;?/p>

  根据这两个深度的差值来决定哪些地方会产生雪的轨迹。

  把上面的结果放到别个一个rt上用来做累积。

  应用累积后的效果到雪的材质产生雪迹的效果。

从下往上拍摄

从下往上拍摄

根据offset来生成灰度图

根据offset来生成灰度图

Creating Snow Trails in Unreal Engine 4

  ?#27604;?#36825;里有一些细节需要处理,我们这里略过不谈,?#34892;?#36259;的可以看参考文章中的Create snow trails in ue4来了解细节。?#27604;?#36825;个只是个demo实现,并?#33618;?#24212;用到实际使用中,需要做很多的改动和优化,主要是借鉴下思路。最终效果如下所示:

Creating Snow Trails in Unreal Engine 4

  现在我们来说下它的优缺点,优点是实现较简单,适用于所有情况(适用于?#25105;?#24418;状的物体),缺点是这个只是个demo,如果要真正使用中还是有很多细节(坑)要去?#21462;5比灰部?#20197;在这个算法上做些改进优化?#28304;?#21040;更通用的支持,比如在地形之外的任何物体产生雪迹。

  总结

  上面列举了几个生成雪迹的方案,可以看到都用到了变?#25105;?#21450;细分来做,如果硬件机能有限?#37096;?#20197;把细分用?#30828;鈑成?#26469;替代,通过分析它们的优缺点,读者可以根据自己的游戏类型来选择对应的方案。?#27604;?#25105;们?#37096;?#20197;在原来的基础上扩展以及修改达到更好的支持,甚至超越市面上的AAA游戏。如果有其它的方案,?#19981;?#36814;大家在留言中?#33268;邸?/p>

  参考文章

  1.slideshare.net/colinbb/

  2.tombraider.tumblr.com/p

  3.GPU Pro 7 Deferred Snow Deformation in Rise Of The Tomb Raider

  4.raywenderlich.com/5760-

  5.[GamingBolt]Graphics Analysis-God of War:Arguably The Best Looking Game of All Time

?#23601;?#31449;所收集的资料来源于互联网公开信息或网友自助投稿,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵?#25913;?#30693;识产权的资料,请与我们取得联系,本站会在3个工作日内删除。
老时时彩开奖号码