《Real-Time Rendering 4th Edition》全文翻译 - 第2章 图形渲染管线(上)2.1 ~ 2.3(20200720翻新)

如题,笨办法继续莽!

部分段落的论述过于冗长,自己做了分段处理。

——————分割线 2020.7.20——————

翻新了一遍译文,统一了名词,补充了漏译的部分。

实时渲染(第四版)Real-Time Rendering (Fourth Edition)

第2章 图形渲染管线 Chapter 2 The Graphics Rendering Pipeline

“A chain is no stronger than its weakest link.”

—Anonymous

 

“链条的强度取决于其最弱的环节。”

——无名氏

本章将介绍实时图形的核心组件,即图形渲染管线(graphics rendering pipeline),也被简称为“管线”(the pipeline)。管线的主要功能是在给定一个虚拟相机、 三维物体、光源等等的情况下生成或渲染二维图像。因此,渲染管线是用于实时渲染的基础工具。使用管线的过程如图 2.1 所示。图像中对象的位置和形状取决于它们的几何结构、环境特征以及相机在该环境中的位置。对象的外观受材质属性、光源、纹理(即应用于表面的图像)和着色方程(shading equations)的影响。

图 2.1. 在左图中,一个虚拟相机位于锥体的顶端(四条线汇合处)。只有视景体内的图元会被渲染。对于以透视方式渲染的图像(此处就是这种情况),视景体为视锥体(frustum ,复数 :frusta),即具有矩形底面的截顶锥体。右图显示了相机所“看到”的内容。请注意,左图中的红色甜甜圈形状物体不在右图中,因为它位于视锥体外部。左图中扭曲的蓝色棱柱也被裁剪于视锥体的顶面上。

我们将解释渲染管线的不同阶段,但重点是功能而不是实现。具体该如何应用这些阶段,将在后面的章节中详细介绍。

 

2.1 体系结构 Architecture

在现实世界中,管线的概念以许多不同的形式体现出来,从工厂装配线到快餐厨房都有管线存在(译者注:在现实世界中通常叫流水线,是同一个单词 pipeline,不过为了避免混淆,只使用一种翻译,都会称作“管线”)。管线的概念同样也适用于图形渲染领域。一条管线由几个阶段组成 [715],每个阶段执行较大任务的其中一部分。

管线的各阶段是并行执行的,每个阶段都取决于上一阶段的结果。理想情况下,将非管线系统划分为 n 个管线阶段,可以使速度提高 n 倍。因此提升性能是使用管线的主要原因。举个例子,三个人以管线方式工作,快速制作大量的三明治:第一个准备面包,第二个加肉,第三个加佐料。每个人都将完成后的结果传递给下一个人,并立即开始处理下一个三明治。如果每个人都是花 20 秒执行他所在阶段的任务,那么每 20 秒就可以制作 1 个三明治,一分钟就能做 3 个三明治。管线的各阶段是并行执行的,但是如果最慢的阶段没有完成,其对应的下一个阶段就会等待。举个例子,假设情况有变,三明治的加肉阶段变得更加复杂,耗时变为 30 秒。那么整个三明治生产管线可以达到的最快速度就是每分钟 2 个三明治。那么对于这个管线来说,加肉阶段就是它的瓶颈(bottleneck),因为它决定了整个管线的生产速度。由于加肉阶段耗时较多,加佐料阶段必须等待加肉阶段完成才能继续工作,就这么干等着,顾客此时大概已经在挨饿了。

在实时计算机图形的领域中也可以找到这种管线构造。实时渲染管线(real-time rendering pipeline)大致分为四个主要阶段:应用程序阶段(application),几何处理阶段(geometry processing),光栅化阶段(rasterization)和像素处理阶段(pixel processing),如图2.2所示。这种结构是渲染管线的核心,它是实时计算机图形实际应用程序中所使用的,因此是后续各章讨论的重要基础。

图 2.2. 渲染管线的基本构造包括四个阶段:应用程序阶段(application),几何处理阶段(geometry processing),光栅化阶段(rasterization)和像素处理阶段(pixel processing)。这些阶段中的每个阶段本身也可以是一条管线,如在几何处理阶段下方所示。这些阶段也可以是(部分的)并行化阶段,如像素处理阶段下方所示。在此示例中,应用程序阶段是单个过程,但是该阶段也可以进行管线化或并行化。需要注意的是,光栅化阶段可以调用到图元(如三角形)内部的像素。

这些阶段中的每个阶段通常本身就是一条管线,这意味着它会由几个子阶段组成。在这里我们要注意一下显示的功能阶段(functional stages)和其实现的结构(structure of implementation)之间的区别。功能阶段(a functional stage)具有要执行的特定任务,但没有指定在管线中执行任务的方式。给定的实现(a given implementation)可以将两个功能阶段组合到一个单元中,或着也可使用可编程内核执行,同时将另一个耗时的功能阶段划分为几个硬件单元。

渲染速度可以表示为每秒帧数(FPS),即每秒渲染的图像个数。也可以使用赫兹(Hz)来表示,它是单位 1/秒 的一种表示方法,即更新频率。我们通常也只列出渲染图像所花费的时间,以毫秒(ms)为单位。生成图像所花费的时间通常会有所不同,具体取决于每帧中执行计算的复杂度。每秒帧数(FPS)用于

  • 30
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值