0%

【Games 101】Lec 07:渲染1(光照 阴影 和 图形管线)

Lecture 7:Shading 1 (Illumination, Shading and Graphics Pipeline)

概述

  • 可见性 / 遮挡问题

    • 深度缓存
  • 着色

    • 光照和阴影
    • 图形管线

可见性 / 遮挡

画家算法

画家算法:先画后面的,再画前面的;(要严格规定前后顺序才不会出现问题)

缺点:

  • 要定义深度不容易…
  • 对这些东西要按照深度排序,时间复杂度较高
  • 特定情况失效(无法对定义深度)

Z-Buffer(深度缓存)

概述

对于每个像素,记录最浅的深度;

同步生成两个图:一个是渲染后的图,一个是深度图;

深度图中,离相机越进,反应出来的颜色越黑,越远越白;

整体做法

每个像素维护一个最小深度

算法分析

但是无法处理透明物体

着色

概述

定义:对不同的物体,应用不同的材质 的过程;

(不同的材质对于光的反应不同)

看个例子:

Specular highlights:镜面反射(表面光滑)

Diffuse reflection:漫反射(表面粗糙)

Ambient lighting:间接反射

分析

一些概念的定义

着色只考虑自己,不考虑阴影的情况:

漫反射模型

着色点显示的亮度(能量)和光照之间的夹角是有关的:

其次,我们接受到的能量和光源的距离是有关的:

那么通过上面这两个结论,我们就能够分析漫反射时,我们能看到着色点多少能量(以明暗的形式表示出来)

看到着色点的能量 = 到达着色点的能量 x 着色点接收了多少能量


这里有个问题:

  • 上面式子中的 Kd 是什么???

  • 着色点为什么会有颜色???

我们知道,物体之所以有能量是因为它吸收了一部分能量,反射出它不吸收的能量,从而看到了颜色;

所以这里我们用一个系数 Kd(漫反射系数)来描述能量的吸收程度:

  • 1:表示不吸收能量
  • 0:表示吸收全部能量

漫反射是从不同的角度看同一个点,看到的结果是相同的。

从公式上也能看出这一点,和观察的方向没有关系

欢迎关注我的其它发布渠道