Real-Time Rendering 4th 第二章

“链条的坚固程度取决于它最薄弱的环节”

—匿名者

这个章节是图形实时渲染最关键的部分,被叫做图形渲染管线,也可以简单叫做管线。管线最主要的功能就是通过虚拟摄像机、三维物体、光源等生成或渲染出二维图像。因此渲染管线是实时渲染最基础的工具。管线的使用步骤写在图2.1中。图像中物体的位置和形状由它的几何形状、所处环境以及摄像机的位置决定。而物体的外观取决于它的材质属性、光源、纹理(应用于表面的图像)以及渲染方程。

 

图2.1 在左边的图像中,虚拟摄像机位于金字塔的顶端(四条线的交汇点)。只有处于这个摄像机视野范围内的图元才会被渲染。对于以透视的方式渲染的图像(这里就是这种情况)来说这个视野范围称为平截头体(视椎体)。即一个带着底座的、被截断的金字塔。右边的图像显示的就是摄像机看见的,左边图像中的红色甜甜圈形状的图形并没有被渲染在右边的图像中,因为它位于视椎体之外,除此之外,这个扭曲的蓝色棱镜被截断了处于视椎体之外的部分。

我们会通过功能的不同区分渲染管线的不同阶段,而不是通过具体实现来区分。关于这些阶段详细情况会在之后的章节介绍。

2.1架构

在物理学的世界中,渲染管线的概念被表示成很多种形式,从工厂的组装线到快餐厨房都有管线的存在。管线也同样被适用于图形渲染领域。一个渲染管线包括几个部分,每个部分都会执行大量的任务中的一部分。

管线的各个阶段并行执行,每个阶段都依赖于上一个阶段的结构。理论上来说,将非管线系统分成n个管道阶段速度是之前的n倍,这些增加的性能就是使用管线最大的原因。比如,很多数量的三明治可以非常快的准备好通过一系列的人,他们其中有些是准备面包,另一些加肉、剩下那些人配料。每个人做完的结果给下一个人然后立刻开始下一个三明治的工作。如果每个人完成他自己阶段的人物需要花费20秒。那么完成一个三明治最高的效率是20秒,三分之一分钟,这是可能的。虽然管线各个阶段之间是并行执行的,但它们不会停下来等待最慢的阶段完成它的任务。例如,假设加肉阶段变得更复杂了需要花费30秒。现在最快的速度也只是一分钟生产出两个三明治,对于特殊的管线来说,加肉阶段就是瓶颈。因此它决定了整个产品的速度。所以配料阶段就是饥饿的(顾客也是如此)在它等待加肉阶段完成的时间里。

这种管道结构也同样存在于实时计算机图形学中。粗略的可以将实时渲染划分为4部分----应用阶段、几何处理阶段、光栅化阶段以及片元(像素)处理阶段,如图2.2中所述。

这个结构是渲染管线的核心,是实时计算机图形应用中所使用的因此它是后续章节的谈论的重点。

 

图2.2 渲染管线基础结构由四部分组成:应用阶段、几何处理阶段、光栅化阶段以及片元(像素)处理阶段。每个阶段它本身可能就是一个管线,如图中几何处理阶段所示,它本身也许就是并行的正如片元处理阶段下面所示。在这幅图中,应用阶段是单个过程。但是这个阶段也是可以管线化的或并行化的。需要注意的是,光栅化阶段可以调用图元内的像素(片元),例如三角形。

各个阶段也许它本身就是一条管线,这意味着它还包含几个子阶段。我们区分了这里显示的功能阶段和它们的实现结构。每个功能阶段有特定的任务去执行但是没有指定在管线中执行任务的方式。给定的实现可以结合两个功能阶段成一个单元或是执行可编程的核心部分。同时将更耗时的功能阶段分成几个硬件单元。

渲染速度通常表达为每秒多少帧(FPS),也就是每秒多少个图像。它也可以表达为赫兹(HZ),这只是一秒的符号,即更新的频率,通常以渲染图像的毫秒表示的时间。生成一幅图像的时间经常是不同的,根据执行每一帧需要计算的复杂度而变化。每秒的帧数用来表达相关帧的速率或是使用期间的平均性能。赫兹则被用于硬件,例如显示器,它被设置为一个固定的速率。

正如名字所示,应用程序阶段由应用程序驱动,因此通常在通用CPU上运行的软件中实现。这些CPU通常包括多个用于处理并行执行的多个线程的核心。这使得CPU能够高效的运行大量应用程序阶段的任务。传统上在CPU上执行执行的一些任务包括碰撞检测、全局加速算法、动画、物理模拟和许多其他任务取决于应用程序的类型。下一个主要的阶段是几何处理,用于解决变换、投影以及其他所有几何处理的问题。这个阶段将决定要绘制什么、如何绘制以及绘制在哪里。这个阶段通常执行在图形处理单元GPU,它包括许多可编程的核心以及固定操作的硬件。光栅化阶段通常以三个顶点作为输入形成一个三角形,然后找到所有在这个三角形内的片段再然后将它们发送到下一个阶段,最后在片段处理阶段执行为每个片段编写的程序去计算出它的颜色并启用深度测试查看它是否可见。片段处理阶段也可以执行每个片段的操作,例如混合最新计算的颜色和之前的颜色。光栅化阶段和片段处理阶段都是完全执行在GPU上。所有的这些阶段和它们内部的管线都会被讨论在接下来的四小节中。更多关于在GPU上如何处理这些阶段的细节在章节3中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值