分类目录归档:章节介绍

9. Radiosity(已完成)

一些涉及的术语:

Finite element methods,geometrical view factor/form factor, hemi-cube, local/global line, integral geometry, iterative methods, Jacobi method, Gauss-Seidel method, global transfer operator, N-body problem, hierarchical radiosity, wavelets analysis, wavelet radiosity, Lebesgue space, Gelerkin method, orthogonal projection, orthogonal complement, haar wavelet, multiresolution analysis, discontinuity meshing, visual events, line swaths, global visibility, visibility complex, visibility skeleton, line-data refinement, point gathering, lazy wavelet transform, lifting scheme, constrained Delaunay triangulation, ppreceptually-based refinement, Enlighten, bilinear interpolation, linear extrapolation, adaptive refinement, incremental radiosity, radiosity redistribution, progressive redistribution, cross redistribution radiosity…

7. Photon Mapping(已完成)

第7章总计100多页,一些关键词:

backward ray tracing, two-pass methods, Russian roulette, k-d tree, density estimate, kNN, photon map, caustics, SDS light path, reverse photon mapping, radius reduction, Progressive photon mapping, stochastic progressive photon mapping, probabilistic progressive photon mapping, adaptive bandwidth selection, photon tracing, MIS, vertex connection and merging, unified path sampling, participating media, volumetric photon mapping, radiative transfer equation, ray maps, photon beams, beam radiance estimate, unified points, beams and paths, Woodcock tracking, delta tracking, free-path sampling, transmittance estimate, ray marching, ratio tracking, residual tracking, null-collision, inverse method, rejection method, medium operation, control variates, higher-dimensional photon samples…

4. 着色管线(已完成)

第四章主要围绕延迟着色来讲述,延迟着色几乎是当今工业主流引擎都使用的渲染架构,延迟着色框架下有三种主流实现,即:
Deferred shading,
Tiled shading
Clustered shading

延迟着色很高效,尤其是clustered Shading,但是带来了新的挑战着色器管理很复杂,本章讨论了神秘海域4中的着色器管理。

同时延迟着色对SSAA/MSAA不友好,所以本章另一个重要内容是延迟着色下的反走样,讲述了目前工业三大流行的延迟反走样技术:CryEngine为代表的基于形态反走样的SMAA,虚幻/顽皮狗等基于时间反走样的TAA,以及虚幻最新的对几何缓存使用前置过滤的AGAA。

3. 图形处理器接口(已完成)

图形处理器接口(实际上通过第2章的内容可知,现代GPU大都包含两套API:一套是专门针对图形渲染的,如OpenGL等;而另一套是针对一般的并行计算,如CUDA或OpenCL等。本章以及本书大部分的内容都是指前者)大概是每个从事图形渲染相关工作的工程师都非常熟悉的概念了,大多数程序员开始学习渲染相关的知识的时候,都是从OpenGL或DirectX等这样的图形接口开始。经典的图形接口以光栅化为核心,以管线的方式分阶段处理整个渲染过程,其中在现代图形接口中,程序员能够以着色器的方式可编程地控制管线的一些阶段,因此某种程度上,有时候我们甚至直接称图形接口为渲染管线(然而这实际上并不准确,图形渲染中涉及的对帧缓存的一些后期操作并不能称为传统渲染管线的一部分。因此本书只有在讲述完全使用传统光栅化方式渲染的时候才会称其为渲染管线)。

一般计算机图形学相关的书籍都会有独立的一部分专门介绍渲染管线,然而它们当中的大部分主要都是围绕渲染管线的各个阶段做一般性描述,或者仅是从使用的角度讲解在程序中怎样调用图形接口进行渲染。然而实际情况是图形接口较其它一般程序接口要复杂得多,例如它要涉及到多个阶段,每个阶段有很多状态,内存结构及使用的复杂性等等因素,这使得很多程序员真正掌握图形接口的过程非常漫长。因此本书认为,讲解图形接口背后的工作机制,以及这些技术怎么被用于解决渲染问题十分关键。这不仅能够使读者更加透彻理解图形接口,同时,现代的渲染技术中,光栅化并不是一种独立的渲染技术,它还需要结合很多其它的方法一起实现整个渲染工作,所以更系统地理解图形接口而不仅仅是使用它们显得更加重要,例如在后处理中需要涉及很多对纹理的读和写操作,而在一般渲染管线着色器中,我们只是简单地使用采样器读取纹理的某个(重采样之后的)纹素。

所以,限于篇幅,本章不会讲解很多图形接口基础的知识,相反,它假设读者对图形接口具有一定的了解,而本章试图使您对这些概念会有更系统甚至完全地理解。本章在解释相关概念的时候以OpenGL(4.5版本)为准,关于OpenGL更多的知识请参考\cite{b:OpenGLProgrammingGuide:TheOfficialGuidetoLearningOpenGLVersion4.3, b:OpenGL4.5CoreProfile, b:TheOpenGLShadingLanguage}。

2. 并行处理器架构(已完成)

要想真正理解图形接口及渲染管线,对硬件架构的一定了解是必不可少的,实际 上很多 3A 工作室都要求图形相关的职位需要对硬件架构有一定了解。

然而,GPU 的硬件架构不是一个独立的概念,它是基于 CPU 并行架构的发展 而演变出来的,即是说理解 CPU 并行架构是理解 GPU 并行架构的重要基础;另一 方面,本书同时包含离线渲染和实时渲染相关的知识,离线渲染的其中一部分是通过 CPU 来计算的,例如大部分光线追踪的实现,这就要求我们必须对 CPU 架构有一定 的理解;最后,对 CPU 架构的了解还有助于我们编写高性能的游戏逻辑(非图形部 分)代码,所以本章的内容同时包含 CPU 和 GPU 的架构知识的讨论。

通过本章的知识,读者将能对处理器的架构有比较系统的认识,并能够通过对比 GPU 并行架构与 CPU 并行架构的区别,来更好地理解 GPU 的特性,以帮助我们更 好的学习渲染管线。

1. 计算机图形学基础(已完成)

(本篇文章介绍本书第一章的主要内容,以及提供第一章的完整试读样章下载,如果你想了解整本书的内容及风格,请参见前言部分)

计算机图形学的基础知识可以包括很多内容,比如几何表述,光栅化,着色器,贴图,材质,反混淆等等概念。本书所定义的“基础”是和这些不太一样的,因为这些基础就可以占据一整本书的内容。本书聚焦于对当前行业流行的一些全局光照解决方案的介绍,所以本书假设读者对如上这些最基本的概念具有一定的了解,那么本书的基础到底指什么呢?

本书所指的基础包括两个方面,其一是站在比较宏观的层面看,哪些基础知识是最重要的,这方面比如光照方程中的一些度量,各种光学现象的定义,采样及反混淆技术,以及基于物理的渲染都是非常重要,也是本书重要的基石。当然本书的基石还包括Monte Carlo积分,渲染管线等内容,这些占据比较大篇幅的内容将占据专门的章节,另外一些则分布在全书各个章节中。

第二个层面是,抛开各个复杂繁多的基本概念,哪些概念是能够帮助构建对整个渲染过程的立体的概念的。从这个角度,本章从讨论光学度量开始,然后用这些度量怎样表示光源,以及光以怎样的度量在环境中传播,当光与表面交互时,遵循什么样的模型,以此展开光照方程的讨论,当最后光线进入摄像机时,由于屏幕分辨率限制对连续光照函数的采样,从而导致混淆发生,所以讨论关于采样与反混淆相关的知识。所有这些这样的逻辑,除了讲述基础知识,它也是在帮助构建一个完整的渲染过程是怎样发生的。

由于第一章会免费提供试读样章下载,所以这篇文章就不再描述更具体的内容;对于后面的非试读章节,每一章会有一篇文章介绍更详细的内容。欢迎各位朋友针对每一章的内容进行讨论,有建设性的意见我会根据实际情况修改内容,并将您的名字列入致谢名单。

当然你也可以申请试读全书,但是这个名额是受限的。