GAMES101回顾 -- Shading

Shading

定义:将材质作用于对象的流程

Z-Buffer

  1. 帧缓存(Frame Buffer)
    Frame Buffer是一个用于存储图像像素数据的内存区域。它通常由一个二维数组表示,每个元素对应屏幕上的一个像素。Frame Buffer中的每个像素可以存储颜色信息(如红、绿、蓝三个分量)或其他图像属性。在渲染过程中,图形管线将计算得到的像素颜色值写入Frame Buffer中的相应位置,最终显示在屏幕上。

  2. 深度缓存(Depth Buffer)
    Depth Buffer是一个用于存储每个像素的深度值(或称为Z值)的缓冲区。深度值表示像素在场景中的距离或深度信息。在渲染过程中,深度值可以用于判断像素的可见性和遮挡关系。当多个物体重叠时,深度测试可以根据像素的深度值决定是否更新Frame Buffer中的像素颜色。

  3. 深度测试
    深度测试是通过比较像素的深度值和Depth Buffer中对应位置的深度值进行的。如果像素的深度值比Depth Buffer中的值更小(或更接近相机),则更新Frame Buffer中的像素颜色,并更新Depth Buffer中的深度值。否则,像素被认为是被遮挡的,不进行更新。

Frame Buffer和Depth Buffer在渲染过程中起着重要的作用。它们可以帮助确定像素的可见性、处理遮挡关系,并最终生成最终的图像。深度缓冲技术可以提高渲染效率和真实感,特别是在处理复杂的三维场景时。

着色模型

Lambertian (Diffuse) Shading

  1. 输入参数
  • Viewer direction, v
  • Surface normal, n
  • Light direction, l (for each of many lights)
  • Surface parameters (color, shininess, …)
  1. 光照衰减
    某点光强:I/r^2
    在这里插入图片描述

3.漫反射着色

Ld = kd * (I / r^2) * max(0, n*l) = 漫反射系数 *
在这里插入图片描述

Phong Shading

经典的光照模型,计算每个像素的漫反射、镜面反射和环境光照分量来确定像素的颜色。Phong Shading的计算过程如下:

  1. 计算漫反射分量
    漫反射分量表示了光线在物体表面上的散射程度,与光线入射角度和表面法线的夹角有关,对于每个像素,根据其表面法线和光源的方向。

  2. 计算镜面反射分量
    表示光线在物体表面上的反射程度。镜面反射分量的计算涉及到光线的反射方向、观察者的方向和物体表面的光滑程度。

  3. 添加环境光照分量
    指物体表面接收到的来自周围环境的光线。环境光照分量通常是一个常量或者通过全局光照模型计算得到的。

  4. 将漫反射、镜面反射和环境光照分量相加,得到最终的像素颜色。
    在这里插入图片描述

Blinn-Phong Shading

在Phong Shading的基础上进行了改进。

  • 通过半程向量进行计算
  • 指数p控制高光范围
    镜面反射计算:
    在这里插入图片描述
    整体光照计算(对每个像素做同样的计算):
    在这里插入图片描述

着色频率

  • Flag shading:对面着色
  • Gouraud shading:在三角形的顶点处计算颜色,然后通过插值的方式将这些颜色值在三角形内部进行平滑过渡。每个顶点指定一个颜色值。这些颜色值可以通过光照计算、纹理映射或其他方式得到。接下来,在三角形的内部,通过插值的方式计算每个像素的颜色值。
  • Phong shading:逐像素着色

顶点个数、着色方法、着色频率关系如下图:
在这里插入图片描述

实时渲染管线

  1. 顶点输入(Vertex Input):
  • 从应用程序中获取顶点数据,包括顶点的位置、法线、纹理坐标等信息。
  1. 顶点处理(Vertex Processing):
  • 对每个顶点进行变换操作,将其从模型空间转换到世界空间、相机空间和投影空间。
  • 进行光照计算,计算顶点的颜色或光照强度。
  1. 图元装配(Primitive Assembly):
  • 将顶点组装成图元,如点、线、三角形等。
  1. 光栅化(Rasterization):
  • 将图元转化为屏幕上的像素。
  • 根据图元的形状和位置,在屏幕上生成对应的像素片段。
  1. 片段处理(Fragment Processing):
  • 对每个像素片段进行插值和纹理映射,获取片段的颜色和纹理坐标。
  • 进行光照计算,计算片段的最终颜色。
  1. 像素操作(Pixel Operations):
  • 执行深度测试等操作
  • 最终将像素颜色写入帧缓冲(Frame Buffer)。
  1. 输出合成(Output Merger):
  • 将帧缓冲中的像素数据输出到显示设备,生成最终的图像。

在这里插入图片描述

纹理映射

  • 3D空间对应的2D平面点
    在这里插入图片描述
  • 为每个三角形顶点指定一个纹理坐标(u,v)
    在这里插入图片描述

重心坐标

  • 重心坐标计算
    给定三角形的三点坐标A,B,C,该平面内一点(x,y)可以写成这三点坐标的线性组合形式。α+β+γ=1,则对应(x,y)为重心坐标。
    在这里插入图片描述

  • 应用
    用于插值,根据三个顶点A,B,C的属性插值出点的属性,位置,颜色,深度,法线向量等等;判断点受否在三角形内。

纹理抗锯齿

  • MIPMAP技术
    通过预先生成一系列不同尺寸的纹理贴图,根据物体的距离和尺寸选择合适的MIPMAP级别进行采样,从而减少对原始纹理贴图的采样次数。

纹理的应用

  • 环境光
    在这里插入图片描述

  • 凹凸纹理
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_51947486/article/details/132162481