渲染是什么游戏 游戏的渲染是什么

说起今年最受关注的显卡,无疑是AMD即将推出的大Navi显卡和英伟达的RTX30系列。RTX30系列GPU是7nm工艺的安培级GPU,将是12nm图灵GPU的继任者。除了升级图形架构,RTX光线跟踪技术将继续升级。

光线追踪技术是NVIDIA在2018年刚刚开始使用的新一代图形渲染技术。它只安装在它的RTX20系列高端显卡上。这些光线追踪显卡一经发布,就受到了各类游戏爱好者的喜爱。NVIDIA不断吹捧采用光线追踪技术的显卡可以让游戏画面更好。

那么问题来了,什么是光线追踪,我们为什么需要光线追踪,光线追踪技术的缺点是什么。

aed4e875a63842bd9e9d5a9769867e34?_iz=31825&from=article.detail&x-expires=1702420799&x-signature=Rgi%2B9yyLKeFld7RtDwkq%2FsgghmA%3D&index=0

什么是光线追踪?说白了,光线追踪是一种在2D屏幕上呈现3D图像的方法。其实很早以前就出现了,只是一般用在动画电影里。直到最近这项技术才被用于游戏。

因为计算机的性能有限,为了减轻计算压力,应用于游戏的光线追踪并不捕捉各种光源发出的万亿条光线,只取其中极小的一部分。举个例子,假设我们的眼睛是一个虚拟相机,从它开始,经过一个像素,然后看到像素后面的物体,最后回到场景中的光源。而且为了增加真实性,如果反射光线的物体会吸收或漫射光线,比如一些石头、树干、草地之类的,光线追踪算法会把这些新的光线考虑进去,这样所有的折射和阴影效果都能准确的显示出来。

f1cb644ee33c40688b23d52314153ced?_iz=31825&from=article.detail&x-expires=1702420799&x-signature=wld8zzpHH%2FoZ1jcMAedyIh2ueAA%3D&index=1

为什么我们需要光线追踪技术?我们需要光线追踪技术,因为它优于传统的游戏绘制或图像渲染方法。在追光显卡发布之前,游戏中使用的图像渲染方式是一种叫做光栅化的技术。虽然追光显卡数量还不多,但是大部分人的显卡还是在用光栅化。

光栅化这个技术的作用是通过游戏的代码让GPU用多边形绘制一个3D场景,这些2D的多边形一般都是三角形,它们组成了我们看到的大部分视觉元素。当场景绘制完成后,再将这个场景光栅化成单独的像素,经过着色器处理,通过改变单个像素的颜色、材质、光照效果,来渲染出完整的一帧3D场景。然后每秒重复这个过程几十遍,这个次数主要取决于电脑的性能上限,最终我们就可以得到流畅的游戏体验。

虽然栅格化的技术在游戏领域已经使用了很多年,但是它过去的表现确实让我们很满意。然而,通过将3D图形转换为2D屏幕,然后使用着色器来估计照明的效果,这种方法具有固有的缺陷,因为很难跟踪光线在场景中实际传播和反射的方式。光线追踪在这方面的效果要好得多,所以我们需要开始使用光线追踪技术。事实上,现在很多动画电影都使用了光线追踪技术,例如《大白》和《驯龙高手》等动画片。

b08d08462fd141fcb5cf09d7c6d09590?_iz=31825&from=article.detail&x-expires=1702420799&x-signature=%2FbTTOhmJMo34kMXCLUsQsFVDrAg%3D&index=2

光线追踪技术的缺点既然光线追踪技术在电影中已经使用多年,为什么直到最近才应用到游戏中?这就涉及到光线追踪技术的缺点,就是需要大量的计算。

电影之所以可以使用光线追踪技术,是因为在那些大预算的电影中,制作方可以花费大量的资金在大型服务器集群中渲染这些效果和画面,而这个过程可能需要几个月甚至几年的时间。这样做的好处是可以得到更真实的画面,因为计算量足够高,所以他们可以冷静地模拟每个光子,以及每个光源的大量光线和这些光线从不同角度的反射效果。经过这些过程处理后的图像和视频,第一眼看上去,我们会觉得是真实的照片或视频,而不是电脑渲染的图像,即使知道不是真实的,我们还是要花很长时间才能看到。

02cd7faafefb4ff28e0d2b8fba7857a2?_iz=31825&from=article.detail&x-expires=1702420799&x-signature=CYQY8XKWFipR0EX%2FCwXrdn0QIf0%3D&index=3

然而如果光线追踪的这个好处应用到游戏上,就成了缺点。

首先,我们的电脑配置不够强,即使使用目前性能最高的各种硬件,也还是不够。况且能买得起i9X系列和2080的人只是极少数玩家,我们又不能把服务器搬到家里。所以我们现在所知道的光线追迹技术,其实在很大程度上是被削弱了的。我们之前说过,游戏中使用的光线追踪技术只会追踪到光线的一小部分。虽然效果还是比栅格化好很多,但毕竟是个遗憾。

其次,即使只跟踪少量的光线,对电脑的性能还是会有很高的要求。更何况现在的游戏玩家会追求高刷新率。为了满足高刷新率的需求,计算机每秒需要渲染的图像数量也开始呈指数级增长。所以,有无轻追求,即使质量差不多,对电脑的需求也会大不相同。

在光线追迹的普及道路上,最大的障碍应该是游戏本身。目前支持光线追踪的游戏不多,选择光线追踪显卡性价比不高。而且大部分支持光线追踪的游戏都是大作。即使不使用光线追踪,也已经需要很高的计算机性能才能流畅运行。此外,光线跟踪继续增加性能负担。所以,想要舒适流畅的游戏体验,你需要一台比不支持光线追踪的电脑性能更强的机器。所以目前能体验到光线追迹技术的人只是玩家群体中极小的一部分。

c4377c281e9e40fcab44b538af82462d?_iz=31825&from=article.detail&x-expires=1702420799&x-signature=UcCreOcm2MPlt38PG7%2BtY0MN%2FJI%3D&index=4

未来支持光线追踪技术的显卡会越来越多。除了已经有这种显卡的NVIDIA,AMD也已经有了专业的光线追踪方案。总的来说,各大硬件厂商都已经做好了自己的工作,我们只能希望游戏厂商能够付出更多的努力,让更多的游戏能够支持光线追踪,这样我们才不会最终为一些永远用不到的功能花太多的钱。

游戏的渲染是什么

本文从“游戏开发的事情”开始

回放系统是视频游戏中的常见功能。通过回放,可以观看高手之间的对决,反复欣赏游戏中的精彩瞬间,甚至可以获取敌方玩家的游戏视频进行分析研究。一般来说,回放功能常用于记录整个游戏的细节或者展示游戏中的精彩瞬间,非常适合竞技游戏玩家的需求。

从实现技术的角度来看,以下功能实质上是回放的一部分:

先锋中的完整游戏回放

其实早在20世纪90年代,playback系统就已经诞生并广泛应用于即时战略、第一人称射击、体育游戏中。

当我们打开CSGo或者Dota的播放文件夹时,会发现这些播放文件并不大,最多也就一场比赛后几十兆,远不及对应时长的视频。那么回放是如何实现的呢?

Dota记录的文件大小,打开后一般都是乱码。

一般来说,有三种方式,我们将逐一展开:

首先,逐帧记录游戏画面。就像现实中用摄像机捕捉体育赛事现场一样,我们可以在游戏渲染时直接从底层捕捉画面信息来连续生成一个视频流文件,然后通过任意视频播放器进行分析回放。

一般来说,由于存储空间和各种性能问题,游戏开发中很少使用录制游戏画面的方式。

实况足球比赛回放(可以随意调整视角)

第二,逐帧记录玩家的输入操作。其实游戏本身就是一个可视化的软件程序(或者渲染器),每一个瞬间的画面都是由玩家的操作逻辑驱动的。考虑到游戏内回放(比如死亡回放),我们完全不需要记录多余的屏幕信息,只需要记录玩家的输入信息,然后驱动游戏逻辑改变屏幕即可。

记录帧输入,并在回放期间根据时间触发这些指令消息。

总的来说,这种实现可以完美的利用游戏逻辑进行回放,消耗很小。对于帧同步(LockStep)的网络游戏,不需要做太多额外的工作,适用于RTS、MOBA、FTG等对性能要求严格,对物理计算同步需求不大的游戏类型。

有了玩家的输入信息,我们可以更好地推进游戏流程,但很难进行向后和向前的跳跃。比如,玩家A在第10帧点击攻击按钮杀死一个AI,恢复5点生命值,在第20帧点击武器制造按钮制造一个新武器,但同时由于被敌人杀死而掉落。

播放时如果想从第50帧跳回第5帧,需要复活玩家A,删除新造的武器,扣除恢复的生命,复活AI。按照上述第二种方案,我们只记录玩家的输入信息【5帧:攻击按钮20帧:制作按钮】,几乎不可能顺利还原所有逻辑。根本原因是游戏很容易根据当前场景和玩家输入计算出下一帧的结果,但是很难根据当前帧的结果和玩家输入计算出前一帧的游戏状态。

另外,我们需要保证任何操作都必须有回滚逻辑,并且不同回放端回滚的结果严格一致,这些都大大增加了跳过回放的难度。

所以可以考虑第三种方案,定期记录玩家和游戏世界的状态信息(或者游戏快照)。所谓状态信息,就是附着在物体上某一时刻的状态信息,比如玩家的生命值、移动位置等。如果我有每一帧中玩家的坐标信息,我就可以完美的处理播放、快进、跳跃等逻辑。但很明显,用这种方式记录的数据要多得多。

Dota中的回放和录制状态信息

一般来说,回放的本质是记录游戏的过程信息,画面是最终的表演效果。为了更好地利用游戏程序本身提供的渲染功能和逻辑计算功能,考虑到性能、数据量、自由度等方面,我们通常会根据游戏的类型选择第二种或第三种方案来实现游戏内部的播放系统。

从上面的描述中,我们不难发现,回放系统的实现逻辑与网络同步非常相似。原则上,我们可以认为网络同步是实现回放系统的技术基础。上述第二种方案对应于网络同步中的“锁步”技术,第三种方案对应于网络同步中的“状态同步”技术。

虽然网络同步可以简单的分为帧同步和状态同步,但其实这两个概念都是国内开发者不断摸索和自己创造的名词。它们并不严格指一个固定的算法。它们有许多变体,甚至可以一起使用。

在现在的游戏中,状态同步是一种比较流行的实现方式,也可以更好的支持播放的各种功能(比如吃鸡,看,七彩六等。).但是频繁的全世界快照会导致很大的消耗,所以通常是通过定时记录快照,连续记录Delta来处理。简单来说,每隔一段时间记录一个存档点(称为检查点),在每个存档点之间连续记录Delta数据(变化的状态信息)。每次加载和回放时,首先要找到合适的归档点,然后通过读取中间的增量数据来快进。

检查点增量方案示意图

虚幻的播放系统就是通过上述方式实现的,可以更好的支持快进、跳转、暂停等大部分播放功能。我会在下一篇文章中详细分析虚幻引擎的播放系统的实现原理,敬请期待!

好玩下载

红蜻蜓截图软件绿色下载,红蜻蜓怎么截长图

2023-9-14 16:50:49

综合资源

南通中学生环保服装秀,废品变华丽“时尚”,意义重大

2024-10-2 10:34:53

购物车
优惠劵
搜索