当前位置:五三书院>其他类型>美利坚:游戏制作教父> 第545章 简单的优化,5倍的性能提升
阅读设置 (推荐配合 快捷键[F11] 进入全屏沉浸式阅读)

设置X

第545章 简单的优化,5倍的性能提升(1 / 3)

雾,现代电子游戏必备技术。

只不过在如今这个90年代,大家还没有意识到雾效的重要性。

原因无他,在8位时代,想要运行一个稍大点的地图,就需要可怜的内存不断进行数据交换。

几kb的内存,完全不足以创造出庞大的世界。

哪怕是到了16位时代,大世界也仍然还是一个伪命题。

几b的内存容量,虽然已经可以支撑那些瓦片式的大规模地图,但也就仅此而已了。

但《战地风云》不一样。

它是一个真正3d大战场。

这意味着整个世界不可能象以前那样,仅仅保存一点儿瓦片数据。

【x:0-y:1-tile:0】

以往的时候,只需要这样三个参数,就能完整保存下一整格的信息。

客户端在尝试喧染时,可以直接从内存里拉取映射的瓦片,拍在坐标所映射的位置。  当然还要加之一点位移变换和视野剔除。

这一招在2d的时代屡试不爽,尤其是在有了显卡这样一个天生擅长批量并行处理的硬件之后,瓦片的性能更是呈几何倍数上升。

如果用现在这个规格的硬件去开发《超级马力欧》,瓦片的密度甚至能翻几个倍,同时还能确保帧数稳定。

3d时代,地图的喧染逻辑完全改变了。

这也是林立新很确信3do注定失败的原因。

3do的赛璐璐叠画法看起来似乎很巧妙,似乎是个绕开三角形计算限制的巧思。

但真正深入到几何空间之中就不难看出,这条路绝对是走不通的。

或许在未来,等到ai技术高速发展,补帧、帧生成技术趋于完善之后,它还会重新被提起来。

但至少在短期内,在未来几十年内,三角形都是3d计算的绝对主流。

计算机理解3d空间,靠的是顶点。

除了x和y的坐标点外,又多了一层z轴。

它们互相配合,就足以在计算机中构建一个真正包含深度的3d空间。  那么问题来了,这么多的顶点,计算机怎么知道要如何把它们喧染出来?

难道就直接无脑地连接所有点,然后糊一层蒙皮上去吗?

这群追求完美的极客们自然不会选择这么绿皮的方法。

对于不熟悉图形学的圈外人,其实在面对这个问题的时候,经常会出现一个疑问。

为什么是三角形?

如果是矩形的话,喧染起来不是会更方便吗?像瓦片那样把地图割成一块一块的,既方便又好理解。

答案就出在3d上。

在立体几何中,如果存在四个顶点,它们不一定会在同一个平面。

别说是显卡不知道怎么画出来了,哪怕是让真人来,把四个不在同一平面的点画成一个面,那也根本是无稽之谈。

怕是只有高维生物或是在非欧空间里才有可能达成吧。

但是三角形就不一样了。

图形学跟数学本质是相生的,在几何学中,三个点必定共面,四个点不一定共面。  三个非共线点可以唯一确定一个平面。

这就是3d加速显卡的立足之本了。

只要有三个点,靠索引规定如何连接它们,显卡就能轻松地为其填充象素。

想要矩形?简单,四个顶点拼两个三角形不就完了吗?

谁也没规定说一个顶点只能映射一个平面。

这么一来,不难发现3d空间的喧染便一下子壑然开朗了起来。

游戏只需要不断地绘制三角形,各种角度各种型状的三角形,当它们靠着共线不断拼接,最终就能围成一整个完整闭合的模型。

沙漠是无数个三角形,坦克是无数个三角形,枪也是,人物也是,一切的一切。

3d空间中的任何东西,都可以靠着足够多的三角形呈现出来。

不过这又产生了新的问题。

就象以前研究视差滚动动画时的经验那样。

人是通过二维的图象来理解3d空间的。  这意味着一个大活人实际上是根本不可能看到模型背面的内容的。

就算能看到,显示器到底也是个平面呐。

图形学家们自然也早早地发现了这一点,早在初代的quake引擎中,其实林立新他们就已经大量地使用过遮挡剔除的方案。

凡是看不到的,一律不喧染。

这个思想非常重要。

它能让显卡节约大部分喧染压力,还不会影响玩家的视觉效果。

一直到后世,《ecraft我的世界》,其实也用的这套方案。

上一章 目录 +书签 下一页