CPU / GPU处理3d程序中的哪些任务?

时间:2014-04-26 19:34:34

标签: opengl gpu cpu render mode

在3D建模界面中旋转场景时,这个任务的哪一部分由CPU负责,哪个部分由GPU承担? (网格顶点移动,着色,跟踪UV坐标 - 可能使它们偏移,照亮三角形并正确渲染透明度)

通过这种建模程序(实时)通常使用什么渲染模式 - 立即或保留?

2 个答案:

答案 0 :(得分:1)

这个问题我的意思是 真的 含糊不清。 一般来说,无论发生什么,因为它真的取决于程序和它的制造商。较旧的程序主要是所有CPU,因为GPU不存在或太弱而无法处理大量场景。 然而今天的GPU足以处理大量场景,程序创建者可以提供各种解决方案,但它通常是一个抽象的系统,您可以在其中获取数据和视图,因此它们允许您在编辑视口中指定所需内容:realtime /即时,预处理,高或低细节。程序通常会牺牲速度的准确性,因此您可以轻松编辑。

例如,3ds max使用渲染设备,视口处理程序和渲染器。渲染器处理生产质量输出 今天他们不仅限于CPU,因为他们可以利用GPU(只考虑OpenCL或CUDA),同时保持质量和降低渲染时间。其次,任何人都可以按照他们想要的方式制作插件来实现视口渲染器,让它成为CPU或GPU或混合渲染器。 因此抽象在建模工具中很常见,场景信息被输入到视口渲染器中,该渲染器通常与游戏引擎的渲染器非常相似。如果您考虑一下,因为它是一个工具,并且有一个UI和各种系统,它需要通过在GPU上尽可能多地进行渲染工作来尽可能地卸载CPU,因此编辑会在内存中进行在“通用”数据结构中,显示给你,我不确定,但我认为他们也可以使用图形api(让它是OpenGL或DirectX)来进行拾取(选择)。

渲染模式正如我所描述的那样“按需”它通常在需要时渲染,所以在实时预览关闭的场景中,它只会在你修改某些内容或移动相机时渲染,并且一旦你做了一些需要不断更新的事情,它就会做到这一点。

除此之外,还有混合方法,用户希望生产质量如今,即使到目前为止使用GPU也很困难,因此他们可以使用快速淡化的真实渲染器来满足生产质量要求。可能,一个简单的例子是3dsMax的'现实'视口,它做环境遮挡它不是“实时”但它做得足够快,所以它实际上是有用的。在更高级的情况下,他们制作特殊的扩展卡来处理快速光线跟踪,以便能够快速/高质量的图形,但即使在这些情况下,主要的是他们将可编辑数据存储为通用内部格式并将其输入到某种渲染器输出的东西,不一定与从高质量的离线渲染器获得的渲染器相同,但它仍能很好地勾勒出它的样子。

答案 1 :(得分:1)

首先,GPU负责将点,线和三角形放到屏幕上。然而,这涉及一定数量的计算。

通常的管道是,对于每个顶点(属性的组合,通常包括但不限于位置,法线,纹理坐标等),顶点位置从模型局部空间转换为标准化设备坐标。在大多数实现中,这是一个3阶段的过程。

  1. 从模型局部空间转换为视图=眼睛空间 - 眼睛空间坐标稍后重复用于照明计算等事情
  2. 从视图空间到剪辑空间的转换,也称为投影;这将确定视口中哪个部分稍后将在视口中可见;它也是引入仿射视角的地方
  3. 通过坐标均匀化映射到规范化设备坐标(如果使用仿射投影,后面的步骤实际上会产生透视)。
  4. 上述计算通常由GPU执行。

      

    在3D建模界面中旋转场景时,这个任务的哪一部分由CPU负责,以及GPU采用哪个部分?

    那么,这取决于你的意思是什么样的轮换。如果您的意思是视口的更改,但场景中没有任何内容实际更改输入数据。唯一被改变的是第一个转换步骤中使用的参数。该参数通常是4×4矩阵。旋转视口时,将在CPU上计算新的模型视图变换矩阵。然后将此矩阵传递给GPU并重新绘制整个场景。

    但是,如果在建模器中实际修改了模型,则计算通常在CPU上执行。

      

    (网格顶点移动,着色,跟踪UV坐标 - 可能会偏移它们,照亮三角形并正确渲染透明度)

    在线渲染器中,这通常主要由GPU完成,但某些部分可能会被CPU预先计算。

    无法做出明确的陈述,因为工作量的分配方式取决于实际应用。