硬件细分如何工作?


34

考虑到DX6是DX11的新流行术语,我想以相对清晰的术语来解释硬件细分的工作原理。

谢谢。

Answers:


42

如果您有兴趣,我将为您提供“简单”版本,并让其他人填写详细信息:)。

基本上有两种方法可以对3D对象建模。第一个是您在游戏中看不到的很多东西,它涉及使用精确的数学定义的曲线来定义对象的形状。使用这种方法,细节水平(实际上就是)是“无限的”。以一个圆柱为例。可以用非常简单的数学术语来定义圆柱体:您真正需要知道的是圆柱体的端部半径和长度。就几何而言,这些信息是我们在3D场景中渲染圆柱体所需的全部信息。而且,我们可以轻松缩放圆柱体以使其更大或更小;我们要做的就是保持长度与半径的比率。我们可以使用相同的公式来表示几何形状,但是可以使用不同的参数。我们可以代表一个圆环(“甜甜圈” 形状)也很容易:我们只需要知道内半径和外半径。据此,我们可以通过从外半径中减去内半径来计算甜甜圈主体(“蛋糕”)的直径(以及半径)。圆形主体沿由内半径定义的弧线环绕。这种类型的3D定义非常好,因为它相对简单(生成一个小的模型文件),并且对细节级别没有明显的限制。不利的一面是,当今的视频硬件并非旨在有效地处理这些类型的模型(如果有的话)。圆形主体沿由内半径定义的弧线环绕。这种类型的3D定义非常好,因为它相对简单(生成一个小的模型文件),并且对细节级别没有明显的限制。不利的一面是,当今的视频硬件并非旨在有效地处理这些类型的模型(如果有的话)。圆形主体沿由内半径定义的弧线环绕。这种类型的3D定义非常好,因为它相对简单(生成一个小的模型文件),并且对细节级别没有明显的限制。不利的一面是,当今的视频硬件并非旨在有效地处理这些类型的模型(如果有的话)。

另一种方法是将简单的几何形状组合起来以近似我们要表示的形状。我们通过称为镶嵌细分的过程来做到这一点。我们可以通过将圆柱体分解为更原始的形状来对其进行细分:两个圆和一系列长矩形,这些矩形环绕外边缘。圆可以进一步细分为许多微小的三角形,沿着边缘的矩形也可以。最终结果是包含三角形的模型:

三角圆柱的图像

或者,对于圆环:

三角环面的图像

好消息是视频硬件已经过优化,可以处理这种几何形状。当今的GPU每秒都能制造出无数个三角形,这是没有问题的。但是,存在一个明显的问题:我们正在尝试使用具有平坦边缘的形状来表示曲面。为了使圆柱体看起来像圆柱体(而不是立方体),我们想将其分解为很多小三角形。好吧,我们要几个?这取决于。将使用哪种硬件渲染场景?较快的硬件可以比较慢的硬件更快地渲染三角形,从而产生更快的帧速率。还有其他因素需要考虑,例如场景中将出现多少其他对象,它们的复杂程度如何?在游戏中,给定场景中通常有很多对象。此外,对象可能会穿越不同的场景,每个场景具有不同的视觉复杂度。细分模型时,很难弄清楚要使用的详细程度

另一个问题是几何复杂性:圆柱的基于曲线的定义非常简单(半径和长度),而细分的定义可能组合了数百个三角形,每个三角形需要独立定义。因此,我们的细分模型文件将大得多。假设我们有一个数学上定义的复杂事物的模型,例如一个人。我们的模型文件大小可能只有24kb。好吧,一旦该模型被细分,生成的文件可能是24mb(24,000kb)。那是完全不同的。

硬件细分可利用几何体着色器实时(或几乎实时)执行硬件辅助的细分。本质上,它提供了一种机制,可采用数学上定义的3D模型并将其转换为可有效显示视频卡的棋盘格格式。传统上,游戏开发人员会在工作室中进行细分,并随游戏一起交付细分模型。硬件细分使我们可以推迟此过程,直到游戏在玩家的计算机上实际运行。这有一些严重的好处:

  1. 游戏3D内容的大小急剧减少(光盘数量减少或下载量减少,所需的硬盘空间也减少了)。

  2. 我们可以实时控制细节水平。我们是否在游戏机的最先进的野兽上奔跑?如果是这样,我们可以使用非常高的细节进行细分。我们是否在带有集成显卡的旧笔记本电脑上运行?没问题; 我们可以简单地降低细节级别以提高性能。

所以这就是要点。因为我不是3D程序员,所以它可能不是100%准确,但这应该可以让您更好地了解所有引起关注的地方:)。

干杯,
迈克


哇,真棒!我读过的最长的“概述”:P

6
还有另一件事确定所需的细分水平-屏幕上对象的大小。运行时细分可让您在任何地方都具有正确的详细程度,而无需为每个对象创建多个版本。
亚当

那有点CPU重吗?
jcora 2011年

@Bane,您是说GPU密集型吗?CPU可以减少关心。
Nate Zaugg 2012年

0

太糟糕了,这不是大多数开发人员现在或在不久的将来使用镶嵌细分的方式。他们现在仅使用tess就是根据其高度图移动大部分平坦的表面。这也可以带来漂亮的外观,但我仍然认为这是对功能强大的技术的不良使用。


工具和生产管道必须重新考虑和重建(因为我敢肯定您比大多数人都了解@SamHocevar,所以此评论并非针对您),并且新硬件必须大量增加。
Rob Craig

@RobCraig注意,我只是在该评论中修复了拼写;我不是原作者。
sam hocevar

@SamHocevar是的,我想-不过感谢您的澄清!
罗布·克雷格
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.