章节一:导论
实时渲染是指在计算机上快速绘制图像,这是计算机图形学中交互性最强的领域。一幅图像出现在屏幕上,观看者操作或者作出反应,并且这些操作和反应会影响后续内容的生成。 这样的一个渲染和影响的循环发生的频率如此之高,以至于观看者无法看到到独立的图像,而是沉浸在一个动态的过程中。
我们使用FPS(frames per second)或者Hz(Hertz)来度量图像的显示频率。当每秒一帧(1FPS)画面时,图像几乎没有交互感,用户意识到新图像到来的过程很痛苦。当达到6 FPS时,画面开始显示出交互感了。而电子游戏需要30,60,72甚至更高要求的FPS,在这样的一个更新速度下,用户能够专注于操作和作出反应(action and reaction)。
电影放映机以24FPS的频率来更新图像,但是为了避免闪烁(flicker),快门系统会将画面重复显示2次或者4次。这个刷新率和显示率是用Hertz分开表示的。以每帧三次的频率照亮的快门系统具备72Hz的刷新率,液晶显示器(LCD)中也可以将刷新率和显示率分开。
在屏幕上以24FPS观看图像是可以接受的,但对于更短的响应时间来说更高的刷新率是很重要的。小到15毫秒的延迟都能减慢和干扰交互,一个例子就是虚拟现实所用的头戴式显示设备往往需要90FPS的刷新率去减少延迟。
实时渲染不仅要求交互性,如果刷新速度是唯一评判标准,那么能够迅速响应用户命令并且能在屏幕上画点随便什么东西的设备都是合格的。通常意义上的实时渲染,一般意味着产生三维内容。
交互性和对三维空间的连通感(sense of connection)是实时渲染的充分条件,但是图形加速硬件是如此重要以至于成为了实时渲染定义的一部分。(这段比较拗口,机翻是这样的:交互性和对三维空间的某种感觉是实时渲染的充分条件,但第三个元素已经成为它的定义的一部分:图形加速硬件)。很多人将3Dfx Voodo 1 card当做是消费级3d图形的开始。随着市场的快速发展,现在的每一台计算机、平板电脑和手机都具备一个内置的图形处理器。图1.1和图1.2显示了一些通过硬件加速来实现实时渲染的好例子。
图形硬件的进步大大推动了交互式计算机图形学领域的研究,我们将专注于一些提升速度和改善画面质量的方法,同时也会说明加速算法、图形API的特性和限制。我们不可能深入探讨每一个主题,因此我们的目标是展示关键的概念和术语,解释领域中最健壮和实用的算法,提供一些关键点来寻找拥有更多信息的好地方。我们希望这本书可以提供给你一些工具去理解这个已经被证实值得花费时间精力的领域。
1.1 内容概览
下面对后续章节做一个简介:
章节2,图形渲染管线
实时渲染的核心是通过一系列的步骤,将场景描述转换成我们能看到的东西
章节3,图形处理单元
现代的GPU使用固定功能和可编程单元来实现渲染流水线的各个阶段
章节4,变换
变换是操作位置、旋转、尺寸、物体的形状、相机的位置和视角的基本工具
章节5,着色基础
我们讨论开始于材质(material),光线以及它们在实现我们所需要的写实风格或者艺术风格的表面外观(surface appearance)中的使用。其他的一些和外观相关的主题,比如通过使用抗锯齿、透明度和伽马校正来提供更高的图像质量,也会被提及。
章节6,贴图
实时渲染中最为强力的工具之一是快速访问和显示表面图像的能力,这个过程被称为贴图, 有很多方法可以操作它。
章节7,阴影
向场景中添加阴影可以增加真实感和空间感(comprehension,这里直译是理解力,其实就是让人更加容易理解场景,可能空间感的表述更加合适),这里将展示那些较为著名的可以快速计算阴影的算法。
章节8,光线和色彩
在我们执行基于物理的渲染之前,我们首先需要了解如何量化光和颜色。另外,在我们的基于物理的渲染结束之后,需要在考虑屏幕设备的属性和观看环境后,将得到的工程量转换成设备需要的数值,
章节9,基于物理的着色
我们从头开始构建一个基于物理的着色模型,这将从涵盖一系列材质模型的底层物理现象开始,将材质混合在一起并且它们过滤以回避混叠(aliasing)和保持表面外观。
章节10,局部照明
探索描绘那些由特别形状的物理物理发出的更加精细光源的算法,
章节11,全局照明
本章节涵盖了模拟光线和场景间的多个交互从而产生真实画面的算法。我们讨论环境光遮蔽(ambient occlusion)和定向遮蔽(directional occlusion),以及一些渲染包括漫反射表面、镜面的全局光照效果的方法,一些有前途的统一方法也被讨论到。
章节12,图像空间的影响
图形硬件擅长高效执行图像处理,我们首先讨论图像过滤(滤镜)和重投影(reprojection)技术,然后详细介绍了一些流行的后处理效果:镜头光圈(lens flares),运动模糊(motion blur)和景深(depth of field)等。
章节13,超越多边形
三角形不总是最快最真实的描述物体的方法,基于使用的图像、点云(point clouds)、体素(voxels)以及其他采样集的替代方法各有其优势。
章节14,体积和半透明渲染(Volumetric and Translucency Rendering)
这章节的重点是体积材质表现和它与光源间的互动,现象模拟的范围从大规模的大气效应,小到光在纤细毛发的散射
章节15,非写实渲染
尝试将场景渲染得真实只是一种渲染思路,本章探索了其他的渲染风格,例如卡通风格渲染、水彩风格渲。此外还讨论了线和文本的生成技术
章节16,多边形技术
几何数据的来源广泛,有时候还需要快速良好地进行修改,本章呈现了很多多边形数据展示和压缩的方法
章节17,曲线和曲面
更复杂的表面表示方法提供了一些优势,比如能够去权衡质量和渲染速度、更紧凑的表示和更平滑的表面生成。
章节18,管线优化
一旦一个应用运行起来并且使用了高效率的算法,它就可以通过使用很多优化技术来达到更快。本章的主题就在于找到性能瓶颈以及如何处理它,另外多重处理也被讨论到。
章节19,加速算法
既然你让马儿跑,就会想让马儿跑的更快。本章涵盖了各种剔除方法和细节渲染。
章节20,有效阴影
场景中大量的光会相当大程度地降低性能,在光线是否可见之前就将其渲染到表面是浪费循循环中性能的一大根源。本章探索了大量处理在着色时这样的和其他形式低效成因的方法。
章节21,虚拟现实和增强现实
在这些领域中有其特有的挑战以及在稳定速率下快速生成真实画面的方法
章节22,交叉测试方法
渲染、用户交互和碰撞检测中,交叉测试非常重要。本章我们将深入介绍一些最有效的常见几何交叉测试算法。
章节23,图形硬件
本章灌注那些颜色深度、帧缓冲还有几处架构类型的组件,提供了一个典型GPU的案例研究。
章节24,未来
猜猜我们将会做点什么。
瞎比比:这是第一次来掘金上发文,作为一个搞数据可视化的前端,可以说走上图形学的路子是必然。前端的技术玩了不少,css复杂技巧、SVG、canvas2d都算是精通了吧,但是走到图形学的门内,还是像一个没见过世面的孩子一样,不断地被震撼,到了说不出话的地步。以后会慢慢发出实时渲染这本书的译文以及自己的一些webgl平台的图形学研究文章,欢迎大家一起讨论,如有问题欢迎指出。