精华内容
下载资源
问答
  • 2020-01-07 12:16:17

    一年前为了玩吃鸡游戏,自己组装了一台电脑,i7-8700的cpu,16G内存,240固态硬盘,GTX1070ti显卡,也还算是可以的配置,显示器和硬盘是本来就有的,就没有换新的。
    在这里插入图片描述
    主要是自己一直想组装一台电脑,苦于多种原因一直没有机会,终于把自己的电脑组装好了,当时还开心的很长一段时间。

    组装好了后,直接就下载了吃鸡,进入游戏后,总是感觉有卡顿,查看fps只有40左右,最高的时候也不过才60,遇到人多点,进入城区,甚至低到过15,那感觉我就不想说什么了。很是郁闷。

    然后就开始了检查电脑问题的道路,也跟很多大牛讨论过配置问题,都说按我电脑这配置不可能是现在这个样子,有说让我更新显卡驱动,调整显卡的设置,调整电脑电源模式。有说让我重新安装操作系统,不要通过360驱动或者是驱动精灵什么的软件更新显卡驱动,通过NVIDIA官方软件更新驱动,很可能是兼容问题。有说估计是我买了假的显卡。我也有怀疑过我买的显卡有问题。等等。。。。。。很多人出主意,不过这些我都试过了,为此还重装的操作系统,配置改来改去,一点点的测试,没有任何效果。fps还是低的可怜。我也怀疑过是我显示器的原因,60HZ的显示器按理说也不会这么差。曾一度想更换为144HZ的,但是在解决问题前忍住了。

    后来进入游戏后查看cpu和显卡的使用情况发现显卡不干活,显卡占用率只有28%,最高也只有30%左右,帧数就30左右。在游戏大厅的时候显卡就有98%,fps就会很高,基本判断是显卡没有得到使用造成的这样情况。也基本排除了显卡是假的问题(不过也不能完全确定)。

    知道原因就好办了,然后就开始查找问题。

    总结一下我在网上找到的各种情况

    1.cpu有瓶颈(cpu有瓶颈的情况下cpu的占用率却不一定高,cpu的瓶颈不一定是核心数不足,可能是单核瓶颈)不过我的U是i7-8700,不存在显卡只有28%的使用率的情况吧

    2.游戏优化问题(与上述是相互依存的关系,很多cpu瓶颈都是游戏优化问题造成的)

    3.游戏锁帧或是开启了垂直同步,这会导致显卡占用率和频率都上不去,因为显卡渲染到特定的帧数就不再工作。垂直同步在我一开始查找问题的时候第一个就是去看的,确认过是关闭的。

    4.鲁大师电源节能方案,最开始的时候确实电源方案是节能模式,调整过高性能后无法解决问题。

    5.内存问题,有说是单根内存条有瓶颈,需要组双通道高频率。不过这个我在买内存条的时候就考虑到了,买的是两根8G的2666HZ内存。也确认过内存条是插在A、B两通道上的。所以也不是这个问题影响的。

    6.基础的系统设置问题,电源方案、显卡3D设置、使用高性能显卡设置,这些在最开始的时候我就已经改过了,不起作用。

    7.驱动问题,这个我也就不想说了,在解决这个问题也有过一年时间了,中间因为工作要出差一直也没有时间去玩,主要是玩的时候总是卡卡的,很是难受,驱动版本也更新过很多版本,每次更新都会调试一下,完全没有用。

    8.最后通过google找到了一个和之前说的原因不同的,在这里我不得不吐槽一下度娘了,真的。。。哎。。。找到的帖子说的问题都一样,回答的也都差不多,好像说的不一样就感觉自己不懂一样。本人是做运维工作的,问题千万种,原因也有很多种。

    回归正题,这个老哥说是bios里某项硬件限制了,查看主板bios竟然将内存频率设置成了1333,手动改成了1600重启后问题解决。

    当时就感觉这位老哥说的很对,因为某度上的各种方法都分析过了,看到他这么说就感觉很是靠谱,于是我打开我的电脑进入bios,刚进去就看到了大大字眼 800HZ。。。我无语,bios自动设置内存频率只有800,然后我手动将内存频率改成了2666HZ,重启后激动的登录了游戏,FPS稳定在140左右,显卡和CPU占用也上来了95%左右。瞬间问题解决。

    9.也有说是bios里的cpu倍频问题,取消自动设置来解决了问题,确实也有可能是cpu的问题。

    附上一张改完后游戏加加的评估结果,之前只有可怜的3000。
    在这里插入图片描述

    在这里我将我找到的各种原因整理一下,一段痛苦的辛酸史,为此记录一下,希望有同样问题的小伙伴也可以解决,也可能你的原因和我的不一样。

    更多相关内容
  • 1GTA5显存情况占有测试自由、不羁、快意恩仇、做想做却又不敢做的事,甚至是尽情舒展自己阴暗的一面,这就是GTAV当中所描绘的世界。也许其中的洛圣都并不真实存在,但R星所缔造的这片世界却又是那么的具象,足以让你...

    1GTA5显存情况占有测试

    自由、不羁、快意恩仇、做想做却又不敢做的事,甚至是尽情舒展自己阴暗的一面,这就是GTA V当中所描绘的世界。也许其中的洛圣都并不真实存在,但R星所缔造的这片世界却又是那么的具象,足以让你沉浸其中,去释放自己很难甚至无法去释放的那部分自我。

    88a84784bd137a2e6dde38327defed76.png

    《侠盗猎车手》(Grand Theft Auto)是一款基于开放真实世界架构的动作冒险类游戏,自首代大获成功之后,GTA系列风靡世界达17年之久,并且在日前推出了本作的第十五款游戏——《侠盗猎车手V》(GTA V)的PC版,与已经先行推出的家用机版本相比,PC版无论在材质还是特效层面均有大幅提升,视觉效果更趋真实自然,能够给玩家们带来更贴近现实的游戏体验和超爽的视觉刺激。

    6be0c534e90969d4561b7171c65036ba.pngGTA V PC版来袭

    当然,这一切都建立在一个基础之上,那就是较之家用机平台更高的系统性能需求。

    在之前的测试当中,我们已经证实GTA V的优化相当到位,在1920分辨率VH特效设置的环境下,即便是GeForce GTX 750Ti也可以获得可以正常运行的帧数表现。但我们都知道这仅仅是一个开始,VH特效+Tex Normal下的GTA V并没有体现出PC系统卓越的能力和PC版强大的图形表现,想要体验R星带来的更真实的视觉刺激,Ultra设置和更高分辨率无疑是必须的。但这明显会带来一个新的问题,那就是显存占有的急剧攀升。

    fffd390be10584844c15e6d7781f1f0c.png想知道你的显卡是否能够驾驭GTA V么?

    你想知道如何突破游戏菜单的设置“瓶颈”么?你想知道突破显存设置极限之后的游戏会有什么变化么?我们接下来的测试将会带给你答案。

    2显存设置的玄机

    显存设置的玄机

    GTA V采用了Rockstar开发的RAGE引擎,这款引擎能够无缝载入超大规模世界地图的流缓冲技术,可以实现复杂的角色AI并行管理,能够渲染真实的光影特效和天气特效,这些特性为在GTA V的完美图形表现和视觉体验打下了坚实的基础。玩家在游戏当中看到的真实自然环境以及气候特点,还有不同载具在不同环境下的表现,均源自RAGE引擎的强大能力。但与此同时,这款引擎所擅长的高解析度材质贴图也决定了GTA V高昂的显存开销。

    13b8873d38bcce6b6a5018effe57272e.pngRAGE引擎带来的GTA V画面品质

    在GTA V的游戏选单设置当中,R星“体贴”的为我们带来了两个独特的设计,首先是更改图形设置之后显存变动情况的实时显示,我们对任何一项特效设置的改变所带来的显存占有变化都会直接呈现在选单之中;接下来就是当某些设置的结果会导致显存占用量超过本地显存总量时,这些设置将无法被确认和执行。

    3a9f99c0a87d700142158bfa94acf5c8.png

    GFE一键优化游戏设设置(GTX960视角)

    以初衷而言,这两项设计都是出色的,玩家现在不仅可以直接获悉复杂的图形设置所能够带来的影响,而且可以第一时间规避由设置导致显存溢出所带来的瞬时卡顿和不流畅现象。但我们在测试中发现R星所给出的特效显存占有情况并非绝对不可逾越,这就给我们带来了体验游戏设置允许范围以上特效的机会。

    dc5dac7ac58c61a75c766f46214d2d6d.png

    GTA V优秀的图形表现源自高解析度材质的应用

    R星对游戏选项的设置限制是苛刻的,我们前面提到过,如果我们所选择的最终选项组合会导致显存耗用量超过本地显存总量,那么这样的设置将无法被确认。要想绕开这层设置,直接以更少的显存来获取更高级别的特效设置,我们可以使用NVIDIA官方的GFE软件进行一键优化。经过一键优化之后的设置虽然会很神奇的超过游戏选项的显存占有限制,但进入游戏之后玩家会发现游戏过程中不会有什么可见的影响。由此可见,R星对特效显存占用的设计还是趋向于保守的。

    那么在实际游戏过程中,不同的特效和分辨率设置下的实际显存占用情况会是怎样的呢?还是让我们进入游戏当中一探究竟吧。

    3测试平台环境一览

    测试平台环境一览

    为保证测试能够发挥显卡的最佳性能,本次测试平台由Intel酷睿i7-3970X处理器、ANTEC H1200水冷散热器、技嘉X79芯片组主板、威刚4GB DDR3-1600×4四通道内存、ANTEC HCP-1300电源组建而成。详细硬件规格如下表所示:测 试 平 台 硬 件 环 境

    中央处理器Intel Core i7-3970X

    (6核 / 12线程 / 3.4GHz / 15MB L3)

    散热器Antec H600

    (风冷散热器 / 选配件)

    内存模组ADATA XPG DDR3-1600 4GB × 4

    (SPD:9-9-9-24-1T)

    主板GIGABYTE X79 UD7

    (Intel X79 Chipset)

    硬盘海盗船Neutron GTX 480GB

    (480GB / SSD / 64MB缓存 / SATA3)

    电源安钛克 HCP-1300 Platinum

    (80Plus Platinum / 1300W)

    显示器DELL Ultra Sharp 3008WFP

    (30英寸LCD / 2560×1600分辨率)

    5ced904b3be175d02bbf57d6c6628a7c.png

    测试平台软件环境一览

    为保证系统平台具有最佳稳定性,本次产品测试所使用的操作系统为Microsoft Windows 7正版授权产品,除关闭自动休眠外,其余设置均保持默认,详细软件环境如下表所示。测 试 平 台 软 件 环 境

    操作系统Microsoft Windows7 Ultimate RTM SP1

    (64bit / 版本号:7601)

    主板芯片组驱动Intel Chipset Device Software

    (WHQL / 版本号:9.2.3.1022)

    NVIDIA Game Ready Driver

    (版本号:347.88WHQL)

    桌面环境Microsoft Windows7 Ultimate RTM SP1/8/10

    (2560×1600 / 32bit / 60Hz)

    在测试成绩方面,利用游戏中相同的场景进行Fraps软件的帧数记录,截取平均帧数来进行对比。

    4测试结果

    测试结果

    为了能够更加全面的考验不同设置下GTA V的显存占用情况,我们选择显存巨大的Titan X来作为我们的测试对象。根据玩家的日常选择,我们直接将其他设置全部开启至最高,然后调节对显存占用影响最大的材质质量设置选项,分别对2560x1600分辨率下的VH+Tex Normal/High/Very High设置的显存系统标称值和实际占有值进行对比,对比结果如下

    7cd066302cbe66a2b994c46b7ea08bec.png

    Tex Normal设置游戏统计显存占用:2862MB

    7089a3a0dd0a2f9f0d0ab0939e0cc84b.png

    实际游戏过程显存占用:2549MB

    从测试结果来看,R星对GTA V的显存占有还是相对克制的,即便是2560x1600分辨率,4xMSAA+All Max设置下,游戏的实际显存占用也未明显超过4GB。当材质等级处于Normal设置下时,常规显存占用还会比系统给出的标称值低300M左右,处于High设置下甚至会相差500M。正因为此,以GFE来突破由显存容量导致的设置界限才不会引发明显的卡顿现象。

    3ef55464bf77d7efffad1bcabb93a3b7.png

    Tex Normal设置游戏统计显存占用:3659MB

    4d1c7b976fa3d868139ae168c8c21c1c.png

    实际游戏显存占用:3068MB

    当然,我们也必须承认,这样的“突破”是相当接近临界状态的,我们所选择的测试场景相对而言并不激烈,一旦场景切换到范围更大且切换速度更快的场合,显存的占用和刷新要求势必会进一步提升。所以GFE得设置只是一种权宜之计,它只能保证你“体验”而非“畅玩”高设置环境下的GTA V。如果你想从根本上杜绝爆显存所导致的卡顿现象出现,使用一块显存容量更大(起码4GB)的显卡才是正确的解决之道。

    b2083e5de9a6a2ed7398b5076bda6247.png

    Tex Very High设置游戏统计显存占用:3753MB

    24ee74c500cebe559706feac55a6aa9d.png

    实际游戏显存占用:3502MB

    在今后的测试当中,我们还将会围绕GTA V展开一系列有针对性的测试,如果你想了解不同画质设置选项对硬件的杀伤力,希望能够通过手动方式进一步优化游戏设置并获得性能和画质的平衡,就请关注我们中关村在线显卡频道接下来将要奉上的其他测试和解析吧。

    展开全文
  • GTA5Cityscapes 和 SYNTHIACityscapes 场景的实验都证明了我们的CAG-UDA 模型优于最先进的方法。 论文链接:...

    2019-12-26 06:17:03

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    作者 | AI科技评论

    编辑 | 刘萍

    近日2019年 ACM Fellows 增选结果出炉之后,备受人们关注,其中除谢源、周礼栋、陈熙霖等业界和学术界著名学者外,目前在悉尼大学任教、且担任优必选科技人工智能首席科学家的陶大程教授也是人们瞩目的焦点。

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    陶大程于2002年毕业于中国科学技术大学,2004年获得香港中文大学硕士学位,2007年获得英国伦敦大学博士学位。

    如今年仅40岁左右,陶大程已然成为ACM Fellow(2019)、IEEE Fellow(2014)、IAPR Fellow(2012)等,且2016年当选欧洲科学院外籍院士,诸多荣誉加身,可谓是青年学者中的翘楚。

    这些荣誉是和他巨量的、且重要的研究成果分不开的。截止2019年12月,Google Scholar显示他的引用已经达到45000+,h-index为110。

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    最近(12月8日-14日)在加拿大温哥华举办的NeurIPS 2019中,陶大程教授(带领下的优必选悉尼大学AI中心)共有 8 篇论文入选,也成为本届会议入选论文数量最多的华人学者。

    这些论文也代表了陶大程教授近期的研究主题和进展,近日陶大程团队人员将这些论文整理并做详细解读,分享给读者如下:

    编者注:如对论文内容感兴趣,可关注 微信公众号「AI 科技评论」,回复「陶大程@NeurIPS2019」,打包下载全部 8 篇论文。

     

    论文一

    学习、想象与创造:从先验知识生成文本到图像(Learn, Imagine and Create: Text-to-Image Generation from Prior Knowledge)

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    文本到图像的生成,即在给定文本描述的情况下生成图像,是一项非常具有挑战性的任务,原因是文本和图像之间存在着巨大的语义鸿沟。但是,人类可以聪明地解决这个问题。

    我们从各种对象中学习,对语义、纹理、颜色、形状和布局形成可靠的先验认识。给定文本描述后,我们会立即利用这种先验想象整体视觉效果,并在此基础上,通过逐渐添加越来越多的细节来绘制图片。

    受此过程的启发,我们在本文中提出了一种名为 LeicaGAN 的新的文本到图像的方法。该方法可以将上述三个阶段合并到一个统一的框架中。

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    首先,我们将多个先验学习阶段定义为一个文本-视觉共嵌入(TVE)阶段,其中包括用于学习语义、纹理和颜色先验的文本图像编码器以及用于学习形状和布局先验的文本掩码编码器。

    然后,我们将这些互补的先验相结合,并加入噪声以实现多样性,将想象阶段表述为多重先验聚合(MPA)。

    最后,我们用一个级联精细生成器(CAG)来描述创造阶段,逐步从粗糙到精细地绘制图片。

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    我们利用对抗性学习,让 LeicaGAN 增强语义一致性和视觉逼真度。在两个公开基准数据集上进行的全面实验证明了 LeicaGAN 优于基线法。

    论文地址:https://papers.nips.cc/paper/8375-learn-imagine-and-create-text-to-image-generation-from-prior-knowledge.pdf

     

    论文二

    类别锚引导的无监督域自适应语义分割(Category Anchor-Guided Unsupervised Domain Adaptation for Semantic Segmentation)

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    无监督域自适应(UDA)旨在增强特定模型从源域到目标域的泛化能力。UDA 具有特别的意义,因为无需对目标域样本进行额外的注释。但是,两个域中的不同数据分布或\ emph {域移位/差异}会不可避免地会影响 UDA 的性能。尽管在匹配两个域之间的边缘分布方面已经取得一些进展,但是由于与类别无关的特征对齐,分类器倾向于源域特征,并对目标域做出错误的预测。

    在本文中,我们提出了一种新的类别锚导向(CAG)语义分割 UDA 模型,该模型显式实施类别感知特征对齐,以同时学习共享的鉴别功能和分类器。

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    首先,使用源域特征的分类中心作为引导锚来识别目标域中的活动特征,并为其分配伪标签。

    然后,我们利用基于锚点的像素级距离损失和鉴别损失来分别驱动类别内特征和类别间特征的进一步分离。

    最后,我们设计了一种分阶段的训练机制,以减少误差累积,并逐步适应所提出的模型。

    在 GTA5Cityscapes 和 SYNTHIACityscapes 场景的实验都证明了我们的CAG-UDA 模型优于最先进的方法。

    论文链接:https://papers.nips.cc/paper/8335-category-anchor-guided-unsupervised-domain-adaptation-for-semantic-segmentation.pdf

     

    论文三

    控制批次大小和学习率以实现良好的泛化:理论和经验证据(Control Batch Size and Learning Rate to Generalize Well: Theoretical and Empirical Evidence)

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    基于随机梯度下降(SGD)的优化方法,深度神经网络已获得巨大的成功。但是,如何调整超参数(尤其是批次大小和学习率)以确保良好的泛化我们还不清楚。

    本文描述了一种训练策略的理论和经验证据,即我们应该控制批次与学习率不要太大,以获得良好的泛化能力。

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    具体来说,我们证明了由 SGD 训练的神经网络的 PAC-Bayes 泛化约束,它与批次大小与学习率之比呈正相关。这种相关性为训练策略的制定奠定了理论基础。

    此外,我们进行了一项旨在验证相关性和训练策略的大规模实验。我们在严格控制不相关变量的同时,使用数据集 CIFAR-10 和 CIFAR-100 对基于架构 ResNet-110 和 VGG-19 的 1600 个模型进行了训练。我们采集了测试集的准确性以进行评估。我们采集的 164 组数据中,Spearman 的排名相关系数和对应的 p 值表明,相关性具有显著的统计学意义,完全支持训练策略。

    论文地址:https://openreview.net/pdf?id=BJfTE4BxUB

     

    论文四

    云端未标记正压缩(Positive-Unlabeled Compression on the Cloud)

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    为了将卷积神经网络(CNNs)在高端 GPU 服务器上取得的巨大成功扩展到智能手机等便携设备上,人们做了很多尝试。因此,在云端提供深度学习模型的压缩和加速服务具有重要意义,对最终用户很有吸引力。但是,现有的网络压缩和加速方法通常会通过请求完整的原始训练数据(例如 ImageNet)来微调 svelte 模型,这可能比网络本身更为繁琐,而且无法轻松上传到云端。

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    在本文中,我们提出了一种新的未标记正(PU)设置来解决这个问题。实际上,只需将原始训练集的一小部分作为正面示例,通过具有基于注意力的多尺度特征提取器的 PU 分类器,就可以从云端未标记的海量数据中获得更多有用的训练实例。

    我们进一步介绍了一个稳健的知识提炼(RKD)方案来处理这些新增加的训练实例的类别不平衡问题。

    通过对基准模型和数据集进行的实验,我们验证了该方法的优越性。我们只能使用 ImageNet 中均匀选择数据的 8% 来获得性能与基准 ResNet-34 相当的高效模型。

    论文地址:https://papers.nips.cc/paper/8525-positive-unlabeled-compression-on-the-cloud.pdf

     

    论文五

    LIIR:多智能体强化学习中的学习个体内在奖励(LIIR: Learning Individual Intrinsic Reward in Multi-Agent Reinforcement Learning)

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    协同分散式多智能体强化学习(MARL)面临的一个重大挑战是,在只获得团队奖励时,如何使每个智能体都产生多样化的行为。在先前的研究中,在奖励塑造或设计可区别对待智能体的集中批评机制方面已付出了很多努力。

    在本文中,我们建议合并两个方向,并向每个智能体学习内在的奖励功能,该功能在每个时间步都对智能体产生不同的刺激。

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    具体来说,特定智能体的内在报酬将涉及为其计算一个不同的智能体批评机制,以指导其个别策略的更新。同时,将对参数化的内在奖励功能进行更新,使其最大程度地满足环境对团队累积奖励的期望,从而使目标与原 MARL 问题保持一致。

    该方法称为 MARL 中的学习个体内在奖励(LIIR)。我们将 LIIR 与《星际争霸 2》中的战斗游戏中许多最先进的 MARL 方法进行了比较。结果证明了 LIIR 的有效性,我们还证明,LIIR 可以在每个时间步为每个智能体分配一个有洞察力的内在奖励。

    论文地址:https://papers.nips.cc/paper/8691-liir-learning-individual-intrinsic-reward-in-multi-agent-reinforcement-learning.pdf

     

    论文六

    通过生成从不良数据中学习(Learning from Bad Data via Generation)

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    不良的训练数据将通过理解底层的数据生成方案来挑战学习模型,从而增加了在不可见的测试数据上获得满意性能的难度。

    我们假设实际数据分布是由不良数据的经验分布支持的分布集。在此分布集上可得出最坏情况的公式,然后将其解释为一种对抗性的生成任务。

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    我们还对 GANs 与我们框架之间的联系和差异进行了深入的讨论。我们进一步从理论上说明了这一生成任务对从不良数据中学习的影响,并揭示了其与数据相关正则化的联系。给定不同的距离度量(例如 Wasserstein 距离或 JS 散度),我们可以得出该问题的不同目标函数。

    我们对不同类型的不良训练数据的实验结果表明了该方法的必要性和有效性。

    论文地址:https://papers.nips.cc/paper/8837-learning-from-bad-data-via-generation.pdf

     

    论文七

    无可能性过完备独立成分分析(ICA)及其在因果发现中的应用(Likelihood-Free Overcomplete ICA and Applications In Causal Discovery)

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    因果关系发现在过去几十年中取得了重大进展。特别是,许多最近的因果发现方法都利用独立的非高斯噪声来实现因果模型的可识别性。隐藏的直接常见原因或混杂因素的存在通常使因果发现更加困难;当这些原因或因素存在时,相应的因果发现算法都可以看作是对过完备独立成分分析(OICA)的扩展。

    但是,现有的 OICA 算法往往会对独立成分的分布做出严格的参数假设,而实际数据可能会违反这些假设,从而导致次优甚至错误的解决方案。此外,现有的 OICA 算法依赖于期望最大化(EM)程序,该程序要求对独立成分的后验分布进行计算代价高昂的推断。

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    为了解决这些问题,我们提出了一种无可能性过完备独立成分分析算法(LFOICA),该算法通过反向传播直接估计混合矩阵,而无需对独立成分的密度函数做出任何明确的假设。该方法具有较高的计算效率,使得许多因果发现过程在实际应用中更加可行。为了加以说明,我们在两个因果发现任务中证明了我们方法的计算效率和有效性。

    论文地址:https://papers.nips.cc/paper/8912-likelihood-free-overcomplete-ica-and-applications-in-causal-discovery.pdf

     

    论文八

    对抗性学习的理论分析:一种极小极大法(Theoretical Analysis of Adversarial Learning: A Minimax Approach)

    新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解

    在本文中,我们提出了一个分析对手存在时的风险边界的一般理论方法。具体地,我们尝试将对抗性学习问题纳入极小极大框架中。

    我们首先表明,通过引入分布之间的传输图,可以将原来的对抗性学习问题转化为极小极大统计学习问题。

    然后,我们证明了在利普希茨连续条件较弱时,关于覆盖数的极小极大问题的新风险界限。

    我们的方法可以应用于多类分类和常用损失函数,包括铰链损失和斜坡损失。作为一些说明性示例,我们推导了 SVM 和深度神经网络的对抗风险界限,我们的界限具有两个与数据相关的项,可对其进行优化以实现对抗的稳健性。

    论文地址:https://papers.nips.cc/paper/9394-theoretical-analysis-of-adversarial-learning-a-minimax-approach.pdf

    展开全文
  • 一、程序技术篇:算法和架构(Programming Algorithms & Architecture) 1. 无限循环的平铺地图(Infinite Tiling)2. 可预测随机数和无限宇宙(Predictable Random)3. 精度问题解决方案4. 超大地形的处理

    有两件事物,我愈是时常反覆地思索,就愈是感受到发自心底的由衷的赞美和无边的敬畏——这就是我头顶灿烂的星空,和我内心的道德准则。 - 康德



    原题目:开放世界游戏中的大地图背后有哪些实现技术? 题目链接
    补充说明:诸如GTA,武装突袭之类的游戏中,开发者是如何实现超大地形的?对于这一问题有什么主流的解决方案?
    补充:例如一些开发者提到的浮点精度问题是如何解决的?又如果npc在玩家视野之外是如何运算的??


    以下部分是我的答案:


    首先肯定一下,这是一个非常有趣的问题。在这个答案里,我将尝试先回答主干问题,再对补充说明里的几个问题简单说一下。

    下面是本文将涉及到的一些相关技术的列表,(需要说明的是,这些技术单独来看并不复杂,实际动手实现并理解各种取舍以后,在项目当中针对具体的需求去设计和搭配才是关窍之所在)


    一、程序技术篇:算法和架构(Programming Algorithms & Architecture)

    1. 无限循环的平铺地图(Infinite Tiling)
    2. 可预测随机数和无限宇宙(Predictable Random)
    3. 精度问题解决方案(Precision Problem Solving)
    4. 超大地形的处理 (Terrain Visualization)
      4.1 古典算法(从 GeoMipMapping,Progressive Mesh 到 ROAM) 
      4.2 层次的艺术(Quadtree 和 Chunked LOD)
      4.3 以GPU为主的技术(Paging,Clipmap 到 GPU Terrain)

    5. id tech 5 的 megatexture (超大地表上的非重复性海量贴图)

    6. 过程式内容生成 (Procedural Content Generation)
      6.1 过程式纹理(Procedural Texturing)
      6.2 过程式建模(Procedural Modeling)

    二、内容制作篇:设计和创造(Content Design & Creation)

    1. 随机地图类游戏 (Diablo II) 中地图的拼接
    2. 无缝大世界 (World of Warcraft) 中区域地图的拼接
    3. 卫星地质数据的导入,规整化和再加工(一些飞行模拟类游戏)
    4. 超大地图的协同编辑:并行操作,数据同步,手动和自动锁的运用

    三、异次元篇:我们的征途是星辰大海

    1. 终极沙盒(EVE):当规模大到一定程度——宇宙级别的混沌理论与蝴蝶效应
    2. 打通两个宇宙(EVE & Dust):发现更广阔的世界——宇宙沙盒游戏和行星射击游戏联动

    一、程序技术篇:算法和架构(Programming Algorithms & Architecture)

    1. 无限循环的平铺地图(Infinite Tiling)

    我们就从最平淡无奇的无限循环平铺地图说起吧。这应该是最原始,也是最没有技术含量的开放世界构筑方式了。

    技术上由于过于朴素,也没什么好说的,就是在同一个坐标系内像铺地砖那样展开,坐标对齐即可,就是接头处需要注意一下,不要穿帮就行。但是千万别因为简单就小看这个技术哟,上面列表里面的不少技术都是在循环平铺的基础上发展起来的,下面我们就来瞧一瞧吧。

    按照维度的不同,循环平铺有下面三大类:

    a. 在一维方向上扩展的横版卷轴游戏(以动作类游戏为主)和纵版卷轴游戏(以射击类游戏为主)。这些类型的游戏里,为了避免循环平铺给玩家带来的重复的疲劳,卷轴游戏会添加一些随机或动态的元素,比如超级玛丽里的背景上云朵的位置,分出多个层次以不同速率卷动的背景层,等等。

    Mario

    b. 在二维方向上循环平铺的固定视角2D游戏。这一类游戏里,比较典型的就是 Diablo。暗黑中的随机地图生成,在本质上,就是叠加了一定的随机性,约束和边界条件的循环平铺效果。

    Diablo

    c. 在 3D 游戏里循环平铺高度图,形成连绵不断的地形效果。这在早期的模拟飞行射击类游戏里比较常见,现在已经很难搜到图了,我在上大学的时候写的第一个地形渲染 demo 就是平铺的,可惜刚刚翻硬盘已经找不到了555。这一类游戏,在平铺时适当地辅以一些贴图的变化,可以在很省内存的条件下,做出非常不错的效果。

    找不到游戏内的图,拿下面这个高度图来凑数吧。请大家脑补一下,把下面这个灰度图立体化之后,一块一块像地砖一样循环平铺以后,3D渲染出来的连绵起伏的直抵地平线(好吧,直抵远裁剪面)的山脉的壮观效果吧。

    Tiling in 3D


    2. 可预测随机数和无限宇宙(Predictable Random)

    (本节内的描述和算法,部分参考了《Game Programming Gems I》 “2.0 Predictable Random Numbers” 一文,请感兴趣的同学自行查找原文通读)

    有个传说中的游戏叫 Elite ,不知道有没有同学玩到过。据说这游戏运行在32K内存的机器上,其中16K还是只读的ROM。这游戏据说拥有难以匹敌的游戏深度:近乎无限个行星,每一个都有各自的名字和特征。

    可预测随机数本身是游戏内运用非常广泛的一个技术,这里我们着重谈一下它在为游戏提供(微观上)更丰富的细节和(宏观上)更广阔的世界的作用。这一技术的最重要原则是,为了在一个游戏世界中给出无限空间的幻觉,我们需要满足两个分解条件,可以把它们成为宏无限(macro-infinite)和微无限(micro-infinite)”。前者涉及到问题的空间规模,后者则任意一个对象所支持的最小细节层次级别。


    从实现上来说,如何设定随机种子是这个技术的核心。由于给定一个随机种子,生成的随机序列是完全可预测的,那么根据游戏内的一些时空的设定,通过对随机种子进行一些定制,得到在游戏内任意某个时刻和某个空间点上完全可预测的行为就是可行的了。

    最简单的是使用以下几个元素与随机种子配合计算:

    1. 世界坐标(即 X Y Z 值,既可以表示空间中的某个点,也可以表示某个区域)
    2. 系统时间(可以用真实时间,也可以用游戏内设计者定义的时间,如果是前者的话需要考虑离线时的处理)
    3. 正态分布(在游戏里建一个查找表即可,这是最廉价的方案)

    这些因素加上对应的随机序列,已经可以营造出宏观上比较有深度的一个宇宙空间了。理论上,如果所有的随机性都是由给定的随机种子产生,而这些随机种子要么是游戏定义的常量,要么是查表得到,要么是均匀流逝,要么是由更高层次的随机种子生成,那么这样一层一层上溯到尽头的话,任何一个游戏内的宇宙,都可以归因到一个初始的种子,这个种子,就是决定论中经典物理学的所谓的第一推动吧。其实如果真做到了这一点,我们大可以把这个种子交给玩家,在首次进入游戏的时候掷一个 2^64 骰子。这是真正的上帝创世的感觉,想象一下,上帝说,要有光,于是掷出了骰子,第一推动怦然落地,整个时空的巨大齿轮开始运转,在不同的时间点和空间点上,更多的随机序列被生成出来...

    Elite

    这幅图来自于游戏 Frontier:Elite II(出自这篇文章),下面配的字样是:“This picture doesn't even begin to show the scale of the universe.” 大家感受一下。


    微观上本质上也是一样的,只是把发散的过程倒过来,变成了逐级收敛的过程。为了在某一个点上放大时,能得到尽可能细致,准确和一致的表现,我们需要对较低层次的世界定义更丰富的规则和约束,比如黑洞对周围的影响情况,双星体系的轨道,恒星的种类与行星个数之间的对应关系,不同恒星系结构下行星表面的大气构成,等等。这样才能较好地平衡多样性和独特性,带来更真实的模拟效果和更令人信服的游戏体验。


    3. 精度问题解决方案

    当足够大尺度的世界被创建出来时,就会自然而然地遇到精度的问题。同时这也是补充说明中提到的一个问题,这里我们简单介绍一下几种实践中的解决方案。

    先描述一下问题吧,我们知道,IEEE754 中规定的32位浮点数中,有23位是用来表示尾数的。也就是说,对于接近1的浮点数,可能会带来 2E-24 左右的误差(大约是 0.0000001192)以现实单位计算的话,如果游戏世界是边长为100km的正方形,那么在这个正方形的最远角落里,我们的最小空间单位是约 7.8 毫米;而如果是中国这么大的面积的话,空间误差将达半米左右。那么可以想象一下,如果是宇宙级别的游戏,采用32位浮点数作为全地图精度,那么实际误差可能会有多么大。

    在实践中,这种误差可能会带来以下这些影响:

    1. 无法将相邻的对象对齐。这种情况,场景美术(关卡设计师)应该会比较头疼,这对于游戏的编辑器来说是大问题了。物件没法在引擎编辑器里对齐;在不同的平台上,对齐也不一样;甚至不同的编译器,同一个编译器的不同版本编出来的引擎;对齐都不一样 ... 所以说处女座不要做 LD :P。
    2. 模型间的穿插和裂缝 本来封闭的墙角可能漏个洞,本来放在地上的石头变成了悬浮在空中。这实际上是上一种的变种。
    3. 骨骼动画的抖动 由于世界矩阵往往参与骨骼动画的运算,误差可能会被逐级放大,在那些最远离根骨骼的骨头上(也是玩家最容易注意到的地方),抖动可能会发生得非常剧烈。
    4. 物理模拟失真 一些柔体的模拟可能会直接失败,而刚体也可能会产生怪异的运动。碰撞系统也可能无法正常工作。

    所有这些一旦发生,都是很容易觉察的。一旦你发现在一个很大的坐标上有这些问题,而接近原点处问题却消失了,那么很有可能就是精度在作怪。而需要注意的是,出现这种问题,只和游戏中出现的数字的规模和跨度有关,和游戏选择了什么样的长度单位(如用毫米还是公里做单位)无关。


    那么怎样使用有限的坐标精度来描述较大尺度的世界呢?

    最直接的方案是 使用双精度浮点数 (64 位),如果这是可接受的选择,那么就不必费心引入后面讨论的复杂度了。

    其次是 区域划分法 。我看到 Milo 同学已提到,不过这里出于完整性的考虑,再简单说一下。正如 Milo 同学所说,“把世界划分成不同的区域,在区域内的计算使用其局部坐标系统。”相对应的跨区访问,需要对应的“本地A -> 世界 -> 本地B”的坐标转换。

    还有一个方案是 节点中转法。正如移动电话的基站用来承载和协调整个通信网络那样,我们在游戏的给定活动区域使用静态信标,所有的逻辑上与之相关的单位,都以该信标的坐标作为参考单位,这样也可以做到把数据访问局部化。相距足够远的两个物体(相当于上面的跨区访问)交互总是通过静态信标来完成(正如移动电话网络中发生的那样),这样的好处是相关的复杂度可以隔绝在这个中转系统的内部。

    此外凯丁同学提到了一个 坐标转换法,“所有位置信息都以角色位置为中心做一次转换”。这正是 《Game Programming Gems IV》 “4.0 Solving Accuracy Problems in Large World Coordinates” 文中的方案。这个方案可以解决部分问题(主要是渲染相关的问题),但是仍有一些问题需要考虑,比如:1. (上面提到的)编辑器内操作的物体,在序列化到文件中时,精度丢失的问题。2. 大部分物理模拟通常需要一个角色无关,摄像机无关的全局坐标系。等等。


    4. 超大地形的处理 (Terrain Visualization)

    终于说到对超大地形的处理了。可以说从上世纪九十年代起,超大地形的可视化,一直是3D游戏领域热门的话题。今天我们就借着这个机会,把相关的算法和实现理一理吧。

    考虑到篇幅太长的话,俺的手指头招架不住,再一个不少对这个话题感兴趣的同学可能压根就不是程序员,一些实现细节可能我就只是简单提一下,贴代码什么的还是算了,尽量保证整篇文章的信息浓度适中吧。


    总的来说,这十多年来,地形渲染技术的发展史就是一部生动的对现代GPU的开发,利用和改进史。整个过程大致可以分成三个阶段:一开始,GPU处理顶点能力很弱,这个时期的各种精巧算法(如一些VDPM和后期的ROAM),尽力在用CPU来降低顶点的总量,避免一不留神压垮图形系统;后来,图形系统的能力上去了,人们开始更多地考虑到把地形系统融入到通用的场景管理中去,如四叉树八叉树什么的就是在这个阶段被广泛应用的;再往后,GPU已经很强大了,CPU由于要承担更复杂的游戏逻辑,越来越成了整个系统的瓶颈,这个阶段,人们琢磨的更多的是,怎么利用GPU给CPU减负了,一直到如今,由 GPGPU 带动起来的异构计算,也都是这个路数。


    由于内容比较杂,超大地形这个段落,按上面的描述,咱们分为三个小段分开来讲吧。让俺先沏上一杯碧螺春,为客官一一道来。

    4.1 古典算法(从 GeoMipMapping,Progressive Mesh 到 ROAM)

    GeoMipMapping 是从纹理的 MipMapping 技术演化来的一个地表处理技术,原理上是根据任何一小块地形在屏幕上显示的实际尺寸(主要跟与摄像机的距离和起伏程度有关)来选择对应密度的网格,然后把不同分辨率的网格之间以某种方式拼接起来(没有这一步的话就会有裂缝),本质上是一种比较粗糙的区域 LOD 算法。顺便说一下,由于那时候针对顶点级的处理很多,导致这种T型裂缝很常见,以至于有个专门的名字叫“T-Junction”,针对这个的处理在当时也有很多方案。

    GeoMipMapping

    这是俺刚刚到老硬盘里刨出来的大三时写的 GeoMipMapping 代码,编了一下居然还能跑起来。有点土,别介意:P 可以看到不同的 MipMap 级别是用不同的颜色渲染的,也可以看到接头处 T 型裂缝的处理。唉,这代码勾起了俺的青葱回忆啊,那就顺便再来两张 T 型裂缝的示意图和消除过程吧。

    GeoMipMapping


    GeoMipMapping


    Progressive Mesh 是后来很流行的技术 Simplygon 的前身,原理上基本也是一致的,就是以某种方式渐变性地化简某个给定的 Mesh。

    渐进式网格有两种:视点无关的 (View-Independent Progressive Mesh,VIPM) 和视点相关的 (View-Dependent Progressive Mesh,VDPM)。两者的区别就是,前者预先离线生成好所有的渐变过程,运行时直接用就行(也是后来 Simplygon 采用的方案),而后者随着摄像机的位置和角度的变化,生成对应的简化模型。两相对比,VIPM的好处是运行时运算开销低,简化模型的效果好,缺点是费内存(因为数据都存下来了,当然后来增量的方式能省一些),而VDPM在当时是不错的选择,因为跟VIPM相比不用费额外的内存,而且对于视点(就是摄像机)变化不剧烈的应用,不需要每帧处理和更新对应的简化模型(普通的MMO类的一般一秒一次就够了),此外由于一些简单的遮挡剔除和背面剔除,能够比VIPM裁掉多得多的顶点(一般能多裁1/3到一半吧,在当时这可是头等大事)。

    总的来说,至少在当时,两者的应用都比较广泛,而到了后来,显存越来越大,总线却越来越紧张,VDPM这种典型的刷顶点的算法(比较费总线带宽)就逐渐失去了市场,这是后话了。

    大家可以在这里看到一些 PM 在地形渲染上的应用。图咱就不上了,大家可以到 Simplygon 的网站上去看。


    ROAM 可算作是上面提到的 VDPM 更进一步了。这个算法实际上借鉴了当时主流引擎的标配BSP的思路,想利用二叉树这个最简洁的空间描述数据结构,把(CPU端的)顶点消减发挥到极致。整个地表被组织成一个巨大的二叉树,有两个队列,一个是分割队列,一个是合并队列,分别用于处理摄像机移动时,增加进入视野的区域细节和消减退出视野的区域细节。精心设计的 ROAM 效果非常华丽(尤其是在线框模式下),你会看到在各种因素的影响(包括局部坡度,与摄像机的夹角,遮挡情况等等)下,各种三角形像魔术般的不断地变幻,生成和擦除超多的细节,效果非常魔幻。我印象很深的是当时连续打Quake3两个小时完全无感的我,调试这玩意的时候,每每不到十分钟眼就花了。

    网上找了两张比较典型的 ROAM 大家感受一下吧。

    ROAM 1


    ROAM 2


    4.2 层次的艺术(Quadtree 和 Chunked LOD)

    其实用于空间管理的树状结构有四叉树和八叉树(还有上面的二叉树),但地表通常以前者居多。是因为,从小范围来看,变化剧烈的地形是3D的,适合八叉树在xyz三个方向上扩展;但当尺度大到一定规模之后,地形通常退化为相对扁平的2D空间,就像摊平了的地球表面那样,在竖直的Z方向上变化相对不大,而XY平面则是可能无限延伸的。

    Quadtree 四叉树很直白,具体的细节我就不讲了。值得一提的是四叉树往往也同时用于场景管理的快速剔除和查找,从理论上来讲,四叉树是一个平面上最迅速的用于剔除空间,定位一个物体,内存开销也是相对较低的数据结构。当用于地形渲染时,顶点剔除的效率也很高,我印象中仅次于高度优化的 ROAM。内存开销低主要是因为四叉树是可以完美展开到一个位数组里的,这样的话意味着整个树的利用率达到了百分之百——所有的空间都用来存储数据而不是维持结构。

    不过四叉树也不是啥都好,T型裂缝就比 GeoMipMapping 难处理,因为存在跨级的多段 T 缝,如下图:

    Quadtree

    除此之外还有一些细节问题,这里就不一一说明了,地形的四叉树渲染还是有很多细节需要细心处理的,此处暂且放下不表。


    Chunked LOD 是一种杂合改良的 LOD,其实糅合了上面说的不少细节,本质上是一种分区块地消减细节的技术。所谓 Chunk 是批量处理的一种方式,只是一种粒度划分的单位而已,跟现在 Java 的 GC 里分区回收概念上差不多。

    下面是典型的 Chunked LOD 后的效果:

    Chunked LOD

    顶点多次过滤优化后的效果:

    Chunked LOD

    效果在当时还是很惊艳的。通常不到50k的渲染数据量已经能有非常逼真的效果了。


    4.3 以GPU为主的技术(从 Paging,Clipmap 到 GPU Terrain)

    上面的基本上都是传统方案,这一节我们将逐渐过渡并挨个介绍一下以 GPU 为运算主体的算法。


    所谓分页(Paging)实际上是仿效虚拟内存的运行机制的一种方法。由于地表的顶点数据都是静态数据,适合常驻显存。当世界尺度较大时,显存没法一次放入所有数据,那么系统就像虚拟内存那样,把那些暂时没有用到的数据交换出去。随着游戏的进行,Paging In/Out 也在不断进行,辅以一定的异步机制,加载到显存的延迟可以被很好地掩盖。玩家的直观感受就是:哇,海量的细节。

    Paging


    而 Clipmap 则比 Paging 更进一步,以金字塔的形式逐级把数据排列好,直接整体更新和渲染。从这里也可以看出 GPU 时代人们的思维方式的逐步变迁。从以前顶点级别(Vertex Level)的“锱铢必较”,到后来的一次多塞一点也无所谓,只要批次(Batch)少就 OK。下图可以看出 Clipmap 的基本思路。

    Clipmap


    所谓的 GPU Terrain Rendering 就是把高度图从内存里经由 2D Vertex Texture 搬到 VS 里去生成三角面,这样的好处是 CPU 和内存就被彻底解放出来了。只是访问上有一些限制,不像直接处理内存那样方便。具体的细节可以看这里:GPU Gems 2: Terrain Rendering Using GPU-Based Geometry Clipmaps

    在 GPU 上做还有个巨大的好处是可以借助 Gaussian Noise 即时生成更多的细节了。直接拿一小块预生成的高斯噪点图在需要的时候叠加一下,就能在没太大额外开销的情况下,增加各种细节。如下图所示:

    GPU Terrain


    随着大家对 GPU 理解的深入,地形的处理又有很多的小技巧可以做,尤其是在 PS 里面,比如法线生成,动态uv展开,光照按需叠加/衰减什么的。不过呢据我所知没有什么非常别具一格的架构上的新思路了,所以就不再深入了。

    5. id tech 5 的 megatexture (超大地表上的非重复性海量贴图)

    megatexture 在当年(2007)是一个非常值得一提的技术。在这个技术出现之前,几乎所有的地表渲染用到的贴图都是若干张 blend 到一起后,以 tiling 的形式重复平铺在地表上的(包括比较典型的魔兽世界也是如此),这样的直接后果是图片的种类用多了耗资源,用少了又很容易感到单调和重复。而 megatexture 则是一张全局的超大贴图,从根本上避免了重复这个问题,理论上(实践上也是)能够生成非常壮丽和独特的地质风貌,是传统的刷地表无法创作出的效果。可以说这个技术让真正的全景地貌成为可能。


    技术上的细节puzzy老师写过一个 pdf,强烈推荐感兴趣的同学搜来看一下(可以搜“ ID Tech 5 中"Megatexture"针对地形的D3D9 基本实现原理 - 姚勇”),珠玉在前,我就不啰嗦了。就来一张效果图吧(好吧我知道能坚持看到这儿的同学,这图基本上肯定都看过了)

    megatexture

    全局超大贴图对一个开放性世界的价值不言而喻。想象一下,跟拿乐高积木拼接出来的视觉效果(传统的 texture blending and tiling)相比,一幅万米画卷上,每个像素都可以随意描绘,是一种什么感受。 比如,你可以相对轻松地实现“整个世界的地貌瞬间被密集核弹蹂躏了一场之后”的效果。如果你想模拟整个生态环境的变迁,在不同粒度上的整体性修改更是无价之宝。


    6. 过程式的内容 (Procedural Content Generation)

    “过程式生成”是一个不是很恰当的翻译,实际上更贴近本意的说法是“以程序的手段生成”,这里我们简洁起见,仍使用过程式生成的字样吧。

    过程式的内容生成是随机技术的在视觉效果上的一个重要衍生。这个技术虽然到最近才被广泛应用,但实际上从技术角度讲,在很久以前就已经有比较成熟的实现了。我手头的 2003 年出版的翻译版 Game Programming Gems III 中 就有 4.16 和 4.17 连续两篇文章以“程序手段生成的纹理”作为主题。这是构建超大规模的世界的一个重要的技术工具,尤其是与上面的 megatexture 技术结合起来,可以创造出非常令人震撼的视觉复杂度。

    下面是 sourceforge 上一个开源的项目 PCity - Procedural Modeling and Rendering of Cities

    1.6-pcity

    可以看出,对于过程式生成来讲,只要有非常小的初始数据集(meta-data),可以在宏观上达到很大尺度和复杂度的视觉效果。

    过程式生成有两大分支,一个是过程式纹理,另一个是过程式建模(上面的 PCity 属于后者),下面我们分别来谈一谈。

    6.1 过程式纹理(Procedural Texturing)

    人们发现,自然界中有很多视觉效果是可以用数学公式加上一些简单的随机性来模拟的,比如云彩,水流,火焰,木纹,大理石,草地,夜空,大气等等,程序生成的纹理效果大大丰富了普通纹理能表现的效果,就好像是物理引擎给游戏增加了活力一样。一个普通的噪点图,在不同的情境下,作为辅助参数来参与生成动态纹理,可以产生出近乎无穷无尽的变化。

    这是过程式生成的云,出处在这里

    proc_cloud

    这是过程式生成的外观,使用了 Allegorithmic 公司的 Substance Designer,出处在这里

    proc_texturing

    这里是一些分解材质,相当于过程式纹理的图素,出处在这里

    proc_texturing

    proc_texturing

    6.2 过程式建模(Procedural Modeling)

    过程式建模特指以程序的手段动态建模。这是一个更大的话题,现在比较成熟的中间件的代表是 Speedtree,比如下面这个效果:

    speedtree

    完全不同风格的纹理,模型的任意杂合,随意生成,效果也非常真实,非常适合做恐怖游戏。在 Speedtree 的网站上还可以看到长成茶壶的树之类的奇葩。我还记得有一年的GDC,在 IDV 的 Speedtree 的展台看到的一段华丽视频,就是各种藤蔓植物在几秒钟之内长满了一个峡谷内的整个大坝,电影级的效果非常震撼,不知道现在网上是否还能找到。


    过程式建模是一项非常迷人的技术,我本人也曾被深深吸引,在上面投入过一段时间的精力。2010年时,我在开发一款飞行射击类的 MMO,当时接触到了 Gamr7 的过程式建模技术,感觉很不错,在飞行类游戏中,地面物体的建模可以完全以程序方式生成,这个对当时的我来说吸引力太大了。那时我花了一个月把 Gamr7 的技术集成到自己的框架里,并在上海世博会期间,与 Bernard Légaut 先生 一起在世博会的法国企业馆展示了合作成果。摘两张当时的 PPT 吧。

    wings of fate

    截图中的素材基本上都是使用了过程式自动生成的(不是美术手放上去的),树是用 speedtree 生成的。

    wings of fate

    总得来说,过程式建模是一项潜力远远没有得到释放的技术,现有的工具还处于比较原始的阶段。在当年 PPT 的技术展望(Beyond the Tech)一节中,我写到“(过程式建模带来的)更高级的抽象使我们可以控制更高的复杂度,从而带来更丰富的细节 (Higher abstraction makes much more details and complexities manageable) ”时至今日,受限于技术的发展,这仍只在某个特定的主题(如 Speedtree 的植被模拟和一般的城市模拟)内有效。对于随机性的粒度,我们仍缺乏有效的手段去控制。当年展望时的两大 Expectation(一个是建立起模式和库抽象从而满足不同层次上的复用需求,另一个是如何统一过程式技术中的无序和有序,有效地控制随机性的粒度),现在据我所知仍是所缺甚多,颇为渺茫。当然了,对有志之士,这也不失为一大探索方向。

    二、内容制作篇:设计和创造(Content Design & Creation)

    聊完了程序方面的内容,我们来简单讲讲超大规模世界在设计和制作方面的一些情况。这方面因为我不是专家,只是做一下简单的介绍,不足之处,还请专业人士指正。

    1. 随机地图类游戏 (Diablo II) 中地图的拼接

    在暗黑二,暗黑三和类似的游戏“火炬之光”等游戏中,通过巧妙的拼接,理论上可以通过组合,生成近乎无限大的地图。

    这是暗黑三第二章里所有地图的可能的部件形状:

    diablo3

    这是拼接之后的样子:

    diablo3

    除了拓扑结构上可以任意排列组合以外,在每一个分片上预留足够多的通用接口也很重要。比如一扇拱门,可以是闭合不可交互的状态,也可以通向下一个直角走廊,也可以是通往一个副本的入口。

    diablo3

    要注意标准化的组件如果太多也会让玩家觉得单调和重复感过强,火炬之光在这一点上就做得不错。下图是火炬之光生成好的地图样貌:

    torch light

    可以看到效果还是很不错的,一眼看过去已经不太有重复感了。

    2. 无缝大世界 (World of Warcraft) 中区域地图的拼接

    无缝世界类游戏的区域拼接和上面的随机生成类游戏的区域拼接是很不一样的。

    wow

    可以看出,不同的区域之间有着很长的接壤线和完全不规则的边缘。在这种情况下,为了简化制作,大部分边界区域以高山作为阻隔。你几乎不怎么会看到有建筑横跨两个不同的区域,原因也是在此。

    在沙盘制作时,通常的做法是在整个世界地图(对应的世界编辑器)中规划好每个区域的范围,也就是分区分块。每个区域由不同的设计师在场景编辑器中分开制作。在制作当前场景时,与该场景接壤的几个场景的最新版本都会加载上来,编辑器中可以提供一些方便的工具,便于在接壤处对齐。主要是高度的对齐和贴图的融合。前者通常的选择是高度上用 Smooth 工具平滑过渡到邻接场景,后者通常最简单的处理方法是真正的过渡点两边使用同一种贴图即可,实际的美术风格过渡(如果需要的话)在邻接地图的接壤线附近完成。

    一些贯穿不同地图的元素(如河流等)可能需要世界编辑器的参与来指定水平面的高度和区域范围之类的参数,但这一类元素通常不会太多,因为它们没有明显的 Gameplay 贡献,反而加剧了不同场景之间的耦合。

    如果游戏有动态的天气/环境氛围系统,那么不同场景之间需要做一些平滑的过渡,这些程序用普通的插值实现就可以了,设计师一般只用关心当前场景内的表现即可。当然有的游戏这个过渡做的不好,玩家体验非常生硬,也是有的。

    wow

    总得来说,这一类无缝大地图的复杂度主要是在编辑器的协同方面(后面我们会再提到),实际的创作复杂度较前面的随机地图生成为低。


    3. 卫星地质数据的导入,规整化和再加工(一些飞行模拟类游戏)

    超大规模的开放性世界地图,还有一类是直接使用卫星地质数据以加强整个世界真实性的。据我所知,育碧出品的 Tom Clancy's H.A.W.X. I & II (就是国内翻译的 鹰击长空 I & II)就是使用了 GeoEye 的商业级高分辨率卫星地图。

    既然用了真实的卫星地质数据,这一类游戏同样能生成非常震撼的效果,也就不用多说了。找两张截图大家感受一下吧:

    hawx

    这一类的缺点是不能模拟真实世界中没有的环境(当然拿去再创作的不算)。

    hawx

    这种真实数据的数据源就没什么好说的了,我简单说一下导入后的处理。通常导入后的贴图需要美术在色彩和明暗上二次加工一下,得到和游戏匹配的整体氛围。需要提供比较精确的工具给美术进行高度图和高分辨率纹理的拟合。此外通常这一类地质数据是没有 NormalMap 的,需要提供工具生成一下。

    还有就是,河流和湖泊这一类水体的处理,3D游戏通常在渲染效果方面对水面特效照顾得比较多。如何生成跟真实环境相匹配的河流和湖泊是一大难点。因为一般游戏里是有一个绝对水平的特效面片的,而如果给真实环境中得来的高度数据上配一个这种特效面片,通常无法跟真实的贴图相吻合(尤其是在山脉和峡谷等地形中的水体)如何提取真实的高分辨率贴图中的水面信息,自动生成对应的3D水面,也是一大话题。当然,如果不怕费事,也可以由美术直接做出来了事。


    4. 超大地图的协同编辑:并行操作,数据同步,手动和自动锁的运用

    现在咱们回过头来聊一聊在 wow 这一类超大地图里,如何在多人团队内协同编辑的问题。


    对于美术(这里专指负责场景的设计师)来说,常见的最简单做法是每人一块(或多块)区域地图,团队内维护一个公共的物件和贴图库。(物件和贴图可以由专门同事制作,需要时也可外包)在这种情况下,美术的并行化程度很大程度上取决于团队自身能力,对场景编辑器没有特殊的技术上的需求。

    超大地图的场景编辑器在加载周边邻接的区域地图时,需要显式地标示出其版本和上次修改日期,这样可以把邻接区域的修正工作量降到最低。最好的做法是能够通过版本管理软件,在有同事修改了邻接区域以后自动更新并重新加载(当然可以稍有延时,不用那么即时),这样的并行工作效率可以达到最高。

    真正的难题通常发生在策划那边,当需要编辑跨区任务或事件时,如果对 Ownership (也就是场景实体的所有权问题)管理不善。跨区系统可能会产生各种层出不穷的 bug。比如同一个 npc 承担了多个跨区职责时,其中的状态就可能会互相干扰,在杀掉某个 npc 这一类任务中更易出现,造成难以重现的 bug。这就需要提供明确的所有权管理机制,明确跨区访问的一般规则,提供简单的全局状态检测工具,在设计时就能提示出绝大多数潜在的冲突。当然,这些的先决条件是所有的区域数据,要么提供中央数据库管理,要么工具做到在团队网络内实时同步。


    最后我们来说一下真正有趣的实践,就是“真正的”协同编辑。也就是任意个美术和任意个策划可以工作在任意个区域里。是的,你没看错,这才是终极的开发自由度。其实如果这是一个如典型的 WOW 那样的 MMORPG 的话,这就跟“所有的玩家登录到同一个服务器一起游戏”是同一个概念了。所不同的是,这里的“玩家”实际上全部是开发团队的成员,而且他们是有能力创造和修改这个游戏世界的。

    只要想通了这个概念,实践上并不像想象中那么复杂。由于美术和策划对同一个地图关注的焦点不同,我们只要把他们工作有交集的部分处理好,他们就能一起愉快地玩耍了。实践上来看,两者的交集通常是 a. 整个区域的逻辑高度图和 b. 所有的相对碰撞关系。也就是说,美术和策划的工作内容里,只要不涉及到这两者,都可以随便搞,但如果影响到了这两者,编辑器需要有能力提示正在修改的人会影响到什么(或按默认行为自动处理),通常是不难做到的。举个例子,策划放好 npc 后,美术去调整高度,把 npc 站的广场弄成一个山坡,那么要么提示美术这么干可能会影响到策划的设计,要么自动把对应的 npc 都重新调整位置,吸附在新的地表高度(一般编辑器允许设置为吸附到地表)。

    当两个美术在修改同一区域时,就涉及到锁的问题了。锁有两种,一种是在编辑时自动触发,场景地表以区域为单位,物件以 Instance 为单位,当编辑时自动把 Owner 设为当前编辑者,提交改动到服务器时可以选择继续锁或是释放锁。一种是手动锁,就是美术框住一片区域,主动加锁,这样有些时候更方便。编辑器制作者需要考虑的一些细节有:锁住的区域在其他开发者的机器上,需要比较显眼的提示信息;保险起见总是多锁一定的范围,以方便地表平滑等工具编辑时对周边区域的影响,等等。


    三、异次元篇:我们的征途是星辰大海

    上面两部分“程序技术篇”和“内容制作篇”已经把大规模开放世界讲得差不多了,下面的内容我取名叫“异次元篇”,也是随便侃侃,大家随便看看就好。

    1. 终极沙盒(EVE):当规模大到一定程度——宇宙级别的混沌理论与蝴蝶效应

    对于开放式世界来讲,如果没有真正与这个世界的尺度相配的开放式的交互,那么仍然是一个死气沉沉的世界。EVE,正是一个为了开放式交互而打造的超大的沙盒宇宙。

    eve

    在这个宇宙中,玩家拥有很高的自由度去探索,创造,建设,摧毁(针对自然环境而言),配合,领导,同盟,背叛(针对社会环境而言)。这游戏我就不展开介绍了,有兴趣的同学可以去看一下 EVEWiki。有趣的是,当沙盒大到一定程度时,它会在很多方面展现出一种自平衡的性质,就像经济学中那只“看不见的手”,自然生态学中地球这个大型生态系统的自我调节和自我修复。在我看来,这也是开放式游戏的最大的魅力之一,也让系统的复杂度进一步接近真实世界。

    2. 打通两个宇宙(EVE & Dust):发现更广阔的世界——宇宙沙盒游戏和行星射击游戏联动

    跟上面列举的诸多成功游戏范例不同的是,我接下来要说的,是一个虽然雄心勃勃,但却没有成功的例子。

    EVE 的制作商 CCP,是一个来自冰岛的很有趣也很有追求的工作室。在 EVE 的大尺度宇宙成功地运行了若干年后,他们选择了一个更大的挑战——设计另外一个大型多人在线游戏,把新老两个宇宙之间联系起来,让两个游戏内的玩家可以互动,相互交谈,配合,雇佣,指派任务,火力支援或其他的互动,最终打通两个宇宙,让两个大型多人在线游戏之间达到有机的协同和交互。

    eve

    CCP 从一开始就没有掩饰这个雄心勃勃的计划,这是一个令骨灰级玩家们震惊和眩晕的设计,也是一个电子游戏行业从未有过先例的构想。

    这个构想是如此令人敬畏和富有吸引力,以至于我在拿到 offer 后毫不犹豫地投身 CCP Shanghai 的怀抱。在游戏行业,我感到很幸运,能够有机会参与到这样一个项目中来。然而由于一些大大小小的原因,这个项目最终虽在 PS3 平台上线,却没有取得预期的成功。这里既然与主题无关,我就不打算谈论更多的细节了。

    在 CCP 两年间,我只是一个很普通的工程师,这里的工作经历极大地拓宽了我的眼界,让我知道了什么是真正的 fearless,对先行者们,我始终满怀敬意,对于自己有机会能参与这样的一个项目,我也始终心怀感激。

    展开全文
  • 复杂网络达到5fps,准确78.8%。 ② RPN+Fast RCNN的思路 从RCNN到Fast RCNN,再到这里的Faster RCNN,目标检测的四个基本步骤( 候选区域生成 , 特征提取 , 目标分类 , 位置回归修正 )终于被统一到一个...
  • 手把手教你架构3D引擎高级篇系列一

    千次阅读 多人点赞 2018-09-09 08:23:54
    使用该种方案,平均剔除高2.3倍,帧时间快1.6倍。 接下来再看看我们的渲染系统,如下图所示: 参考网址: https://eidosmontreal.com/en/news/deferred-next-gen-culling-and-rendering-for-dawn-engine...
  • Faster-RCNN代码+理论——1

    万次阅读 多人点赞 2017-12-17 12:23:52
    复杂网络达到5fps,准确78.8%。 ② RPN+Fast RCNN的思路 从RCNN到Fast RCNN,再到这里的Faster RCNN,目标检测的四个基本步骤( 候选区域生成 , 特征提取 , 目标分类 , 位置回归修正 )终于被统一到一个...
  • 为了解决用于语义分割任务的无监督域适应问题,提出一个域不变结构提取(DISE)框架解决图像域不变结构和特定于域的纹理表示,进一步实现了图像的跨域翻译和标签转移,提高了分割性能。
  • Kim,Hahn和Nielsen提出了一种有效利用GPU的柱面全景图,而且通常,这种全景图也可以存储每个纹素的距离内容或其他值,以实现动态对象与环境的交互。 如下的三幅图,便是是基于他们思想的全景图(panorama),使用...
  • 总的来说,这十多年来,地形渲染技术的发展史就是一部生动的对现代GPU的开发,利用和改进史。整个过程大致可以分成三个阶段:一开始,GPU处理顶点能力很弱,这个时期的各种精巧算法(如一些VDPM和后期的ROAM), ...
  • 转载自:https://zhuanlan.zhihu.com/p/26501934 Deep Learning 改变着世界,各种利用 DL 的技术已经开始服务人类: 发现癌症(准确远超人类病理学家,Google 用深
  • 首先,设计了一个语义可分离鉴别器(SS-D)来独立适应跨目标域和源域的语义特征,解决了类级对抗学习中适应不一致的问题。在SS-D中,为了实现更可靠的分离,引入了渐进置信策略。然后,引入一个有效的类级别上的对抗...
  • 为了进一步使重新表示的目标特征具有语义意义,提出了一种可靠的伪标签再训练(RPLR)策略,该策略利用多视点源图像训练网络的预测一致性,在未标记的目标图像上选择干净的伪标签进行重新训练。
  • 为了充分利用所有的GPU,你需要增加你的 batch size。可以使用 --batch_size 4, --batch_size 16 甚至更大的 batch size。每个 GPU 将处理 batch_size/GPU数量 的图像。最优的 batch size 取决于你使用的 GPU 数量、...
  • 激光点云分割系列-SqueezeSeg系列

    千次阅读 2022-02-01 12:56:21
    效果对比5. 一些启示(from experiment/ other aspects)2. SqueezeSeg v2 (20180922)1. introduction2 网络模型3 Domain Adaptation方面的改进4. 效果5. 一些启示(from experiment/ other aspects)
  • 之后,我们使用SYNTHIA(Ros et al.,2016a)、GTA(Richter et al.,2016)和CityScapes(Cordts et al.,2016)数据集展示语义图像分割任务的结果。 4.1.数字数据集适应 表2:跨数字数据集的无监督域自适应。我们...
  • 本节课讲了前端游戏场景下的游戏开发与普通游戏开发的差异,并且介绍了一些游戏引擎,给出了游戏开发的技能树,在最后也简单介绍了利用Cocos Creator或PixiJS进行游戏开发的步骤。
  • 新的域自适应网络“DANIA”,用于夜间语义图像分割,该网络利用标记的白天数据集(源域)和包含粗略对齐的白天-晚上图像对(目标白天和夜间域)的未标记数据集。这三个域用于通过网络中的对抗训练执行多目标自适应。...
  • FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。 论文标题:YOLOv4: Optimal Speed and Accuracy of Object Detection...
  • 基于边缘修复的图像分割论文简读

    千次阅读 2022-02-25 11:37:39
    文章目录2016DCAN: Deep Contour-Aware Networks for Accurate Gland Segmentation 2016 DCAN: Deep Contour-Aware Networks for...在本文中,我们提出了一个有效的深度轮廓感知网络(DCAN)来解决这个在统一的多任务学习
  • 例如: LOL PUBG WOT CSGO GTA5 QQ 微信 这些程序是向系统申请资源 CPU 内存 硬盘 网络 GPU 1. 独立性 2. 互斥性 3. 数据独立性 2.2 什么是线程 线程是进程的一部分,通常情况一个进程(程序)都是有多个线程组成...
  • 以一款大家熟悉且常见的GTA5游戏来说:在GTA5里,有一个任务就是采集GTA5游戏里的模拟数据,然后通过数据引擎这种自然而然的标注去降低标注成本。但是这里会出现一个问题:在这些模拟数据上训练的模型,在实际现实...
  • 七、4K游戏测试:RX 6800 XT被反超 RX 6800依旧有9%的优势 1、APEX英雄 2、使命召唤16:战区 3、GTA V 4、刺客信条:奥德赛 5、德军总部:新血脉 6、地平线:零之曙光 7、孤岛惊魂5 8、古墓丽影:暗影 9、绝地求生 ...
  • 最新版本的 Quest 2 已经感受到了非常优质的空间音效和手势追踪,这是一台不要接电脑和连接手柄的 VR 头盔,预计下一个版本在解析度和刷新上还会有明显提升,但显示视角是个非常棘手的问题,还需要显示技术的更多...
  • 论文内容分析: 》提出通过对抗学习的进行像素级的语义分割的域适应方法。 》在输出空间的域适应可以有效地对齐源域和目标的场景布局...参考深度监督网络【1】,在层次特征空间中(low-level feature),引入对抗模
  • 如若研究者希望看见智能体探索出风格多样的战斗风格,由此采样的利用率亦会大幅提高,这对基于值函数近似的深度强化学习算法而言是非常有益的。 设置奖励系统 针对3.4中最后封装整合的状态获取,其返回的是一个包含...
  • 编辑丨迈微AI研习社今年CVPR 共有7015篇有效投稿,其中进入Decision Making阶段的共有约5900篇,最终有1663篇突出重围被接收,录用大概为23.7%(1663/7...
  • 虽然我们提出的方法适用于一个到一个和任何回忆问题,但对于每种情况,我们介绍了一个解决问题的特定组件,以便为一个至一种回忆来丰富模型性能,我们将曲面的正常矢量融入场景中的正常向量以调整光泽和阴影在图像中...
  • 另一个解决这种方法的是使用基于渲染的合成数据集,例如GTA5和SYNTHIA。同时数据收集花费较少,因为像素级标注能用部分自动过程,这些数据集通常和真实世界的数据集联合起来学习来提升性能。然而,当训练仅仅在合成...
  • 《深度转向:从时空视觉提示中学习端到端驾驶模型》 摘要—近年来,使用成本车载摄像头的自动驾驶算法吸引了学术界和工业界的越来越多的努力。这些努力有多个方面,包括道路上的物体​​检测,3-D重建等,但是在...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

gta5完美解决gpu利用率低

友情链接: MagiskR.zip