索引 / 001 ZH-CN
Real-Time Rendering(实时渲染) cover

计算机科学

计算机科学

Real-Time Rendering(实时渲染)

Tomas Akenine-Möller; Eric Haines; Naty Hoffman; Angelo Pesce; Michał Iwanicki; Sébastien Hillaire

英文原名: Real-Time Rendering

由图形行业的研究人员和工程师撰写、关于借助图形硬件以交互速率生成图像的综合参考书。书中讲解GPU渲染管线以及游戏、可视化和虚拟现实中使用的算法,从变换与纹理到基于物理的着色、阴影以及全局光照的近似方法。

需要的基础: 需修过计算机图形学入门课程和线性代数,并有使用OpenGL、Vulkan或Direct3D等图形API编程的经验。

难度等级
高级
学术层次
高级
computer graphicsreal-time renderinggpushadinggraphics pipeline参考书

01 / 导读

导读

引用

Akenine-Möller, T., Haines, E., Hoffman, N., Pesce, A., Iwanicki, M., & Hillaire, S. (2018). Real-Time Rendering (4th ed.). A K Peters/CRC Press.

章节概要

全书共 24 章,约 1,200 页,另有很长的参考文献。前言说明了范围:创建合成图像的算法,其速度要快到足以让观看者与虚拟环境交互,重点是三维渲染,并在有限程度上涉及用户交互。建模和动画不在其内。本书侧重算法而非图形 API,作者称它更像一本指南而不是百科全书,每个主题只介绍少数有代表性的方法,并给出供进一步阅读的参考文献。第1章说明记号:向量、点和矩阵,采用列向量和齐次坐标。

第1–3章:引言;图形渲染管线;图形处理器

第2章把管线作为实时渲染的核心:应用阶段、几何处理、光栅化和像素处理,并带领读者走一遍管线。第3章说明 GPU 如何以数据并行硬件实现这些阶段,从顶点着色器经曲面细分、几何着色器、像素着色器和合并阶段直到计算着色器,同时介绍可编程着色和 API 的演变。

第4–6章:变换;着色基础;纹理

第4章讲基本变换和特殊矩阵变换、四元数、顶点混合、变形、几何缓存回放和投影。第5章介绍着色模型、光源、着色模型的实现、走样与抗锯齿、透明度、alpha 与合成,以及显示编码。第6章讲纹理管线、图像纹理和程序纹理、纹理动画、材质映射、alpha 映射、凹凸映射和视差映射,以及纹理化光源。

第7–9章:阴影;光与颜色;基于物理的着色

第7章概览平面阴影、阴影体、阴影贴图及其过滤变体(百分比邻近过滤与软阴影、过滤阴影贴图)、体积阴影技术和不规则 z 缓冲阴影。第8章定义光的度量和从场景到屏幕的路径。第9章从头构建基于物理的着色:光的物理、相机、BRDF、菲涅尔反射、微观几何与微表面理论、表面反射的 BRDF 模型、次表面散射、布料、波动光学和分层材质,以及材质的混合与过滤。

第10–12章:局部光照;全局光照;图像空间效果

第10章讲面光源和环境光照,包括球面与半球函数、环境映射、镜面基于图像的光照和辐照度环境映射。第11章从渲染方程出发,涵盖环境遮蔽与方向遮蔽、漫反射与镜面全局光照,最后是统一方法。第12章讲图像处理和重投影,然后是镜头光晕与泛光、景深和运动模糊。

第13–15章:超越多边形;体积与半透明渲染;非真实感渲染

第13章概览三角形之外的选择:天空盒、光场渲染、精灵与图层、公告板、位移、粒子系统、点渲染和体素。第14章讲光散射理论与体积渲染、天空渲染、半透明表面、次表面散射,以及毛发。第15章讲卡通着色、轮廓线渲染、笔触式表面风格化、线条和文字渲染。

第16–17章:多边形技术;曲线与曲面

第16章涉及三维数据的来源、曲面细分与三角化、合并、三角形扇、条带与网格、简化,以及压缩与精度。第17章讲参数曲线与曲面、隐式曲面、细分曲线与细分曲面,以及高效的曲面细分。

第18–20章:管线优化;加速算法;高效着色

第18章讲性能分析与调试工具、定位瓶颈、性能测量、优化和多处理。第19章讲空间数据结构、剔除(背面、视锥、入口、细节、遮挡)、细节层次和大场景渲染。第20章讲延迟着色、贴花渲染、分块与分簇着色、延迟纹理,以及物体空间与纹理空间着色。

第21–24章:虚拟与增强现实;相交测试方法;图形硬件;未来

第21章讲 VR 与 AR 的设备、物理要素、API 与硬件,以及渲染技术。第22章是几何相交测试的参考:拾取、包围体的创建、射线与球、盒、三角形和多边形的相交,以及其他配对。第23章描述图形硬件:光栅化、大规模计算与调度、存储体系、颜色与深度缓冲、纹理、案例研究和光线追踪架构。第24章以“其他一切”和“你”收尾。

核心概念

第2–6章:管线与基础

  • 图形渲染管线:应用、几何处理、光栅化和像素处理。
  • 可编程着色器阶段:GPU 管线中由程序员控制的阶段。
  • 纹理:用图像改变表面外观。

第7–12章:光与外观

  • 阴影贴图:主要的图像空间阴影技术及其过滤变体。
  • BRDF 与微表面理论:表面反射的物理基础。
  • 基于图像的光照与全局光照:对光在场景中相互作用的近似。

第13–17章:表示方式

  • 公告板、粒子与体素:多边形网格之外的选择。
  • 细分曲面与曲面细分:由粗糙控制网格生成的平滑曲面。

第18–24章:性能、VR 与硬件

  • 剔除与细节层次:跳过不可见的部分,或降低远处物体的精度。
  • 延迟、分块与分簇着色:高效处理大量光源的着色结构。
  • VR/AR 渲染:在快速而稳定的帧率要求下渲染。

评析

优点

  • 一册之内的广度。 24 章从管线和变换,经基于物理的着色、全局光照、体积与非真实感渲染,直到优化、加速、VR 与硬件。
  • 第四版的更新。 出版社强调新增了虚拟与增强现实一章,以及对视觉外观、全局光照、曲线与曲面的新覆盖。本版有三位作者加入原有团队。
  • 带参考文献的指南。 大多数章末有延伸阅读,作者声明的做法是每个主题只介绍少数有代表性的方法,其余依靠参考文献。
  • 评论者的推荐。 出版社援引的评语来自 Valve、NVIDIA、Unity、Cesium 的从业者,以及《Physically Based Rendering》的合著者,认为它浓缩了大量工作,既有深度又附有参考文献。
  • 免费附加内容。 关于碰撞检测的一章以及线性代数和三角学附录可在作者网站免费获取。

局限

  • 预设已有知识。 前言期望读者具备基本的计算机图形学、计算机科学和编程知识,本书不是入门课程。
  • 讲算法,不讲 API。 它不教授 OpenGL、Vulkan 或 Direct3D,读者需要另备编程资料来实现书中所述内容。
  • 有意选取。 建模与动画被排除在外,作者还指出,有些章(以阴影为例)已有专门的整本书。
  • 篇幅。 约 1,200 页,宜按章查阅,而不是从头读到尾。

在课程中的定位

这是图形学书单中全面、重实践的参考书。《Computer Graphics from Scratch》是简短的入门,读者要自己写光线追踪器和光栅化器;《Interactive Computer Graphics》是自顶向下的 WebGL 课程;二者都是读本书之前认识管线的途径。《Fundamentals of Computer Graphics》是讲光线追踪和光栅化背后数学与算法的标准本科教材。《Physically Based Rendering》给出一个离线、照片级真实感渲染器的源代码及其数学,而本书的目标是 GPU 上的交互速率。

《Interaction Design》属于课程的另一侧,讲以用户为中心的设计,而非渲染。学过第一门图形学课程之后,可将本书与《Fundamentals of Computer Graphics》并读或在其后读;想要一个完整的、面向离线照片级真实感并附数学推导的渲染器时,再转向《Physically Based Rendering》。

如何使用本书

本书面向学过第一门图形学课程、熟悉线性代数并有一些图形 API 经验的读者,在职的图形程序员也在使用。

实用安排:

  • 核心: 第2–3章(管线、GPU)、第4章(变换)、第5–6章(着色与纹理)、第7章(阴影),以及第18–19章(优化与加速)。
  • 外观路线: 依次读第8–11章,学习基于物理的着色与光照;第9章是这一组中最长的一章。
  • 专题章节: 按需阅读第12–15章(后处理、其他表示、体积与风格化);第16–17章(几何);第20–21章(效率与 VR/AR)。
  • 参考: 把第22–23章当作相交测试和硬件的查阅材料。

手边备一个图形 API,对读过的每一章实现其中一项功能;书中只作概述之处,则沿着所引参考文献深入。