[游戏引擎架构] 第十章:渲染引擎

「占位」

渲染引擎

采用深度缓冲的三角形光栅化基础

三维场景渲染的本质涉及以下基本步骤:

  • 描述一个虚拟场景。这些场景一般是以某数学形式表示的三维表面。
  • 定位及定向一个虚拟摄像机,为场景取景。
  • 设置光源
  • 描述场景中物体表面的视觉特性
  • 对于每个位于影像矩形内的像素,渲染引擎会找出经过该像素而聚焦于虚拟摄像机焦点的光线,并计算其颜色和强度。此过程为求解渲染方程,也叫做着色方程

场景描述:

高端渲染软件所用的表示法
三角形网格

游戏开发者会使用三角形网格来为表面建模。三角形是表面的分段线性逼近。

  • 为什么选取三角形?

    • 三角形是最简单的多边形
    • 三角形必然是平坦的
    • 三角形经过多种转换之后仍然维持是三角形,对于仿射转换与透视转换也成立
    • 几乎所有的商用图形加速软件都是为三角形光栅化而设计的。
  • 镶嵌:

    镶嵌是指把表面分割为一组离散多边形的过程。

构造三角形网格
  • 缠绕顺序

    三角形由三个顶点的位置矢量定义,此三个矢量设为p1,p2,p3。每条棱的相邻顶点的位置矢量相减,就能求得三条棱的矢量。

    任何两棱的叉积,归一化后就能定义为三角形的单位面法线N,若要知道面法线的方向,需要定义哪一面才是三角形的正面,哪一面是背面,这个可以简单用缠绕顺序(winding order)定义,缠绕顺序用来定义表面方向有两种方式,分别是顺时针方向和逆时针方向。

模型空间
世界空间及网格实例化

描述表面的视觉性质

光和颜色的概论
顶点属性
顶点格式
属性插值
纹理
材质

光照基础

局部及全局光照模型
Phong氏光照模型
光源模型

虚拟摄像机

观察空间
投影
观察体积及平截头体
投影及齐次裁剪空间
屏幕空间及长宽比
帧缓冲
三角形光栅化及片段
遮挡及深度缓冲

渲染管道

高级光照及全局光照

视觉效果和覆盖层