Chapter 9 – Physically Based Shading 基于物理的着色

在本章节中,我们将学习基于物理的着色。在第一小节中,我们将先了解一些关于光线物理交互的知识,在第二至第四小节中,我们将了解这些物理因素是如何运用到着色过程的。在第五至第七小节中,我们将构建基于物理的着色模式。在第八至第十二小节中,我们将学习各种不同的材质类型所使用的着色模式。在最后一小节中,我们将学习材质与材质之间是如何融合的,以及如何避免锯齿,同时保留材质的外观表现。

阅读更多Chapter 9 – Physically Based Shading 基于物理的着色

Chapter 8 – Light and Color 光与颜色

我们在之前几章中学习的RGB颜色值光线的强度与颜色。在本章节中,我们将会学习由这些值所定义的光线的物理属性,并未之后的章节打下基础,以物理的角度学习渲染。同时,我们也将学习被大家所忽略的,但是渲染过程中不可缺少的另一个部分:将场景中线性的光线值转换为最终的显示颜色。

阅读更多Chapter 8 – Light and Color 光与颜色

Chapter 7 – Shadows 阴影

如果想要创建写实的画面,阴影无疑是非常重要的。本章节中,我们将会着重学习计算阴影的基础原理,并且了解实时渲染中最为重要与常用的阴影算法。但是本章节并不会覆盖所有关于阴影的知识点,笔者在此为大家推荐了两本书,分别为Real-Time Shadows以及Shadow Algorithm Data Miner

本章节所使用的专业术语如下图所示,occluder(遮盖物)表示将会在receiver(接收者)上投影阴影的物体。精准光源(punctual light),例如那些没有区域或者空间限制的光源,只会生成完整的阴影区域,有时这一类阴影也被称为hard shadows。如果我们在场景中使用了区域光源或者体积光源,那么就会生成soft shadows。每一个阴影可以拥有一个完整的阴影区域,其被称为umbra;也拥有一个局部的阴影区域,其被成为penumbra。

阅读更多Chapter 7 – Shadows 阴影

Chapter 6 – Texturing 贴图

物体表面的贴图就是我们看到的并感受到的——也可以将贴图想象成一幅油画。在计算机图形学中,贴图是一个过程,其读取了物体表面的每一个点并且基于图像,函数或者其他数据改变了每一个点的外观。例如,为了展现一块砖头的外观,我们不可刻意展现其几何上的细节,而是将砖头的图像应用在一个矩形上,这个矩形由两个三角形组成。当我们观察那个矩形时,砖块的图像便会出现在矩形所在的位置。除非我们靠得非常近,否则是无法注意到砖块缺乏几何细节。

但是,除了由于缺乏几何细节,一些贴图后的砖块效果仍然不佳。例如,砖块的表面看上去应该是粗糙的而不是光滑的。为了让物体看上去更为真实,我们会使用第二张图像贴图。这一张贴图并不会改变物体表面的颜色,而是基于表面的位置改变其粗糙度。现在,我们的砖块物体拥有一张表现颜色的贴图和一张表现粗糙度的贴图。

现在砖块看上去是粗糙的,但是我们可能会觉得砖块的表面是简单的平面。而真实世界中砖块的表面应该是高低起伏的。通过使用bump mapping,砖块的着色法线将会各不相同,所以在我们绘制砖块的表面时,它们将不再是一个简单的平面。这一类的贴图将会改变矩形原始的表面法线向量。

从阴影的角度来说,上述bump mapping造成的物体表面凸起的“假象”会被识破。例如,砖块凸起的部分在某些视角下可能会遮住凹下去的部分。至少凸起的部分会在凹陷部分投射出阴影。parallax mapping使用一张贴图改变平面的形状,parallax occlusion mapping则会基于高度贴图进行射线检测让画面的真实性更高。displacement mapping通过改变模型中三角形的高度来改变模型的外观。

上述例子中的这些问题都能通过贴图解决,其相应的算法也会越来越精巧。在本章节中,我们将学习贴图技术的各个细节。首先,我们会展示贴图系统的常见框架。之后,我们将专注于使用图像为物体表面贴图,这也是实时渲染中贴图最常用的功能。最后则是程序化贴图以及一些常见的使用贴图来影响物体表面的方法。

阅读更多Chapter 6 – Texturing 贴图