Spider-Man IG-impostors: cityscapes and beyond翻译

前言

这个星期是想要了解渲染领域的研究情况。 因为我知道现在渲染领域主要分为真实感渲染和风格化渲染,所以我打算各找一篇来进行阅读。而且还是希望能找到和游戏相关的。
然后有关的综述之类,就可以先快速阅读完这两篇之后,再选取这两篇的参考文献中的论文进行阅读吧。

(最后我找了一大堆,但是却并没有很想阅读,看到一个蜘蛛侠的论文,却反而很想阅读,那就阅读这一篇吧)

本文来自SIGGRAPH Asia 2018 Technical Briefs。DOI号:10.1145/3283254.3283259。

翻译Spider-Man IG-Impostors

摘要

索尼PS4平台上的视频游戏《Marvel蜘蛛侠》(2018年)中,蜘蛛侠穿越曼哈顿的场景可以以每秒30帧的速度360度旋转视角,并以4k分辨率播放。
平面卡片广告牌风格的冒名顶替系统(flat card billboard style impostor systems)不能以理想的质量代表城市环境,所以Insomniac Games开发了3D ig -Impostor系统,以高效和持久的缓存来代表漫威曼哈顿的中远城市景观。这个环境数据缓存可用于Insomniac引擎中的其他系统所使用的多视图渲染。
漫威的《蜘蛛侠》中没有2D冒名顶替者。

介绍

首先,有一群技术美术和核心引擎程序员,他们把原先为了Sunset overdrive游戏而开发的制作流程给升级了,应用到了spider-man的IG-impostor系统中,来在最低的内存损耗中为玩家展示拥有丰富反射和放射性表面性质的曼哈顿全景。

以前的billboard-based 2D impostor techniques(Maciel and Shirley, 1995)缺乏视差和表面属性来在游戏《惊奇蜘蛛侠》(2018)中为曼哈顿渲染中远远景和城市景观所需的保真度。基于相机的广告牌纹理解决了部分视差问题,但由于资源的数量和开放世界的大尺寸,这种系统所需纹理的内存占用是令人生畏的。此外,2D billboard-based impostor systems无法处理玻璃和镜像表面上代表天气和时间的实时反射。

IG-impostor requirements

1、在任何情况下保持高保真
2、通过将几何体和纹理的缓存保持在尽可能小的持久全局内存中来消除远剪切平面绘制(far clipping plane draw-in)
3、维护源资源的几何浮雕细节
4、支持完全发射和反射表面的玻璃,镜像塔和夜间照明
5、在高分辨率的实例几何和对应的IG-Impostor之间无缝过渡。
6、通知其他使用persistent IG-Impostor缓存的游戏系统

Workflow and Pipeline

当美工希望从Orbit布局编辑器的资产中生成ig -Impostor时,他们会从下拉菜单中选择ig -Impostor工具来启动一个后台过程,生成优化的几何和纹理,最终发布到Insomniac Games的ig -Impostor格式

Insomniac Engine中的建筑是由墙、门和窗户等建筑元素的模型实例组成的。每个模型可能有多个应用于其各种LOD的材料。在一个单独的建筑资产中可能有成千上万这样的模型实例。
一个ig -Impostor由三个元素组成:一个代理几何模型,一个纹理图集,和一组代表高质量反射和发射表面的多边形。
ig-Impostor用上面三个ig -Impostor组件交换单个高分辨率模型实例的集合和它们分配的材质。

几何体的处理

一旦一个建筑资产在orbit levek editor中创建,IG-Impostor管线的第一部分就会把这个几何体传送到side effects software’s houdini digital content creation(DCC)应用。在这里,几何体会被打碎、优化,既能保持集合上的完整又能减少总体上的顶点和多边形的数量。而一些小细节,比如屋顶家具,空调和其他,会被标记为一个skip-impostor,被系统忽略。

几何体的打碎

打碎过程有三个显著的循环。
首先,几何体按照连贯性和多边形法线朝向被分组。对于每一组共享面向法线的连通多边形,共享边被检测和删除。对自交点进行了解析,并将结果的总面积与源几何面积之和进行了比较。如果合计面积的变化超过用户指定的阈值,则保留原来的几何形状。

其次,对第一步结果中的每一组相似面形连通多边形进行多边形边缘重采样,生成新的三角形网格;顶点被合并到用户指定的阈值内,共享的边再次被删除,以创建一个表示形状轮廓的n-gon。去除边缘重采样步骤产生的内嵌点,解决自交问题。同样,将结果的面积和与源几何图形的面积和进行比较,如果方差太高,则保留原始几何图形。

最后,一个环境遮挡测试标签会为了删除而遮挡几何体。它将n-gon几何体转化为遍布几何体的三角形和散点。如果给定三角形上的所有采样点都被遮蔽了,则该三角形将被移除。

ig -impostor生成的代理模型仍然有一个重要的多边形计数,然而这是需要满足ig -impostor保持几何浮雕细节的要求

纹理捕捉和压缩

被抽取的几何图形被发送到IG-Impostor生成命令行程序,以生成一个压缩几何文件和一对四个通道纹理图集文件。
命令行实例化Insomniac引擎,并呈现高质量的高分辨率资产。为每个资产捕获一组6个正交视图,这个视图存储了从指定材料到地图集文件RBGA通道传递时的渲染传递信息。每个ig -impostor图集的分辨率取决于资产所需的每米像素。
测量材质组中所有多边形的面积,并根据每个捕获材质组的多边形面积之和选择一个合适的值,该值介于两个用户定义的默认值之间,表示每米捕获纹理的像素数。
如果美工想要更多的纹理细节,那么美工可以在资产基础上推翻每米的像素。
代表高质量反射和发射表面的多边形也在这个阶段被捕获。

特别的反射和折射的元素

曼哈顿到处都是需要精确实时反射和发射的玻璃塔和标识。作为漫威蜘蛛侠艺术指导的一个组成部分,开发了一个附属系统来处理IG-Impostor资产的这些高质量部分,以最小化渲染如此多的发射和反射表面的消耗。
通过为应用于发射和反射建筑表面的材料添加高质量属性,如窗户和照明标识,这些表面的多边形被隔离到一组模型实例中,与艺术家提供的最低的LOD区分。大多数情况下,这些是用来表示玻璃窗格的低多边形嵌入块,但这个过程同样适用于更复杂的几何形状,如广告牌,带着预期的额外消耗。
高质量的几何捕获与IG-Impostor纹理的快照视图捕获过程同时发生。高质量的几何图形和被摧毁的几何图形同时被保存在专有的二进制IG-Impostor几何文件中。
当IG-Impostor在运行的时候被加载到Insomniac 引擎时,高质量模型实例的位置和几何构造会被合并、压平,变成一个单独的模型实例,用基于距离的Z噪声来渲染。这样的话,多边形就只是在IG-Impostor的纹理上漂浮。高分辨率资源的完整的质量材料属性会被赋值到高质量的多边形集合,然后他们在运行时会被一起渲染成一个单独的优化了的pass,带着被指定的Z噪声。

IG-Impostors的转换

漫威蜘蛛侠是一款基于贴图的流媒体游戏。当玩家穿越环境时,当前贴图流的高分辨率的几何体和纹理带着LOD和MIP-mapping不断进出内存,但是IG-Impostor只被加载了一次之后就被保存在永久全局内存中。只有IG-impostor纹理集合中最低的MIP是永久的。高一点的IG-impostor纹理集合里的MIP流的进出基于玩家和它之间的距离。

开放世界由725块瓷砖组成,每块瓷砖的大小为128 x 128米。每个tile的内容包含在tile .zone文件中。IGImpostors被组织成他们自己的一组.zone文件,代表一组3 × 3的瓦片,面积约1.2平方公里。每个IGImpostors资源的纹理图集被打包成一个单独的贴图图集,每个IGImpostors zone代表IGImpostors zone内的所有建筑。每个区域的纹理图集大小可变,最大分辨率为8192x8192像素。对于给定的IG-Impostor区域,纹理图集的实际大小取决于区域中的资源的物理大小,即每个资源每米的像素数。IGImpostor区域中包含的贴图数量的限制因素是IG-Impostor区域纹理图集的分辨率。IG-Impostor内的所有材质都存储在一对纹理图集文件中,代表9个贴图的每个材质的所有材质的漫反射和光泽组件。每个IG-Impostor在一个区域内是单独寻址的,这样任何给定的资源都可以基于相机距离和其相应的IG-Impostor替换。
被抽取的几何图形、高质量的几何图形和纹理都存储在适当的有损压缩二进制格式中。虽然这会造成一些量化并降低精度,但有必要保持在性能规范和内存占用的范围内。漫威蜘蛛侠开放世界中所有IGImpostor几何图形的总内存占用是大约101字节。反射和发射高质量的多边形由大约30兆字节的内存组成。纹理占用空间取决于MIP级别,范围从90到900兆字节。

当玩家处于一个贴图中时,贴图的。zone文件的内容会以高分辨率流进Insomniac引擎中,以获得高质量的渲染效果。因为IG-impostor几何体和最低的纹理MIP已经被存在了永久全局内存中,它们不需要被stream。但是引擎需要将和现在进入的高质量贴图对应的IG-impostor淡去。高分辨率资产和ig-impostor表示阿尔法混合(alpha blend),以淡入和淡出,以减少突兀。

将IG-Impostor数据用于其他游戏系统

一旦IG-Impostor系统的初始需求得到满足,Insomniac Games的其他团队就会利用高效且持久的IG-Impostor缓存来改善其他游戏系统的性能

开放世界的地图

如图2所示,IG-Impostors非常详细地描述了曼哈顿的中远距离表示。为了为《蜘蛛侠》构建开放世界地图,而不是创建一个特定的地图集,Insomniac Games的IG-Impostor团队与FX部门和UI部门合作,利用相同的数据用IG-Impostor来代表城市地图,从而节省时间、内存和磁盘空间。
由于ig -Impostors几何体已经被加载到持久的全局内存中,当玩家激活开放世界地图时,游戏内的摄像机会立即转换到天空中,IGImpostor材质会被匹配游戏中其他UI元素的材质覆盖。通过添加一些艺术指导内容,最终生成的开放世界地图将与游戏UI保持一致,并与开放世界保持一致。

环境探针

漫威蜘蛛侠在Insomniac引擎中使用了一个环境探测器系统来驱动全局照明反射和反射。漫威《蜘蛛侠》中的每一个贴图都有几个放置在战略位置的环境探测器。每个环境探针由一个512 × 512的立方体图组成。最初,环境探测纹理是使用高分辨率资产离线生成的。在725个游戏贴图(每个贴图都带有多个环境探测)中生成这些数据,将产生数千个环境探测纹理文件。当环境探测纹理的数量与磁盘空间的关系变得明显时,核心工程团队开发了一个系统,通过使用持久的IGImpostor缓存在运行时生成环境探测纹理。

级联阴影贴图(CSM)阴影遮挡远光源

级联阴影贴图[Engel, 2006]确保了距离相机较近的物体的远处光阴影比远处物体的阴影渲染的质量更高。
实现一个能测试远距离向曼哈顿投射的阳光的CSM阴影遮挡的系统,能通过添加或移出在投射遥远的阴影的物体优化Insomniac Engine。,从而节约宝贵的毫秒的时间,否则会浪费渲染阴影,而不会对最终的图像有益。
ig -视点替用特效CSM阴影遮挡缓存大约每秒重新生成一次,方法是通过过扫描从太阳位置绘制一个正交阴影缓冲区,以适应刷新时间内的任何运动。**阴影投射资产在ig -imposter CSM阴影遮挡缓存中进行测试,看看它们是否完全被现有的阴影覆盖,或者是否有机会对远处的光的CSM做出贡献。**当生成最终的远处光阴影贴图时,任何轮廓被CSM阴影遮挡缓存中的其他ig -imposter阴影所包含的资产将被从考虑中移除。CSM遮挡缓存除了遮挡投射器到最终CSM的每个部分之外,还是级联阴影贴图中最远的部分。

猜你喜欢

转载自blog.csdn.net/weixin_42914662/article/details/120625082
IG