笔记 | 《Unity Shader入门精要》

《Unity Shader入门精要》学习笔记

    • 第二章、渲染流水线
    • 第三章、 Unity Shader基础
    • 第四章、数学基础

第二章、渲染流水线

MainIdea: 简化后的渲染流水线工作流程。工作任务是有一个三维场景出发、生成(渲染)一张二维图像。即计算机从一系列的顶点数据、纹理等信息出发,把这些信息最终转换成一张人眼可以看到的图像。(由GPU、CPU共同完成。)
《Render- Time Rendering, Third Editon》中渲染流程的三个阶段:
应用阶段(Applicaiton Stage)——几何阶段(Geometry Stage)——光栅化阶段(Rasterizer Stage)
笔记 | 《Unity Shader入门精要》_第1张图片

  1. 应用阶段: 输出渲染图元(rendering primitives),包括:
    准备场景数据:相机、场景模型、光源;
    粗粒度剔除(culling):把不可见的物体剔除;
    渲染状态:材质、纹理,使用的shader等。

  2. 几何阶段: 把顶点坐标变换到屏幕空间中,包括:
    顶点着色器(Vertex Shader)用于实现顶点的空间变换、顶点着色等功能;
    曲面细分着色器(Tessellation Shader):逐图元的着色操作or产生更多图元;
    裁剪: 去掉不在相机视角内的顶点,并剔除某些三角图元的面片;
    屏幕映射(Screen Mapping):把图元的坐标转换到屏幕坐标中;

  3. 光栅化阶段: 每个渲染图元的哪些像素应该被绘制在屏幕上,包括:
    三角形设置- 三角形遍历- 片元着色器- 逐片元操作

第三章、 Unity Shader基础

Shader:渲染流水线中的某些特定阶段。
ShaderLab: 编写Unity Shader的一种说明性语言
Unity Shader不等同于Shader,Unity Shader实际上指的就是一个ShaderLab文件——硬盘上以.shader作为后缀的一种文件。

第四章、数学基础

矩阵变换——线性代数领域
在笛卡尔坐标系下讨论:
三维下的左手坐标系和右手坐标系
单位矢量(unit vector):归一化的矢量(normalized vector)
关于叉积的图形学意义可以参考B站教程《线性代数的本质》
地址:https://www.bilibili.com/video/BV1ys411472E?p=11
强烈建议学习该系列视频,直观表达线代在计算机图形学中的意义。

一、 矩阵:定义详见维基百科

满足的性质:不满足交换律,满足结合律
方块矩阵:行列数相等的矩阵,三维渲染最常用的33/44
对角元素(Diagonal elements):一个矩阵除了对角元素外的所有元素都为0
转置矩阵(transposed matricx): 矩阵的行列翻转,即i行变成i列,j列变成j行。
逆矩阵(inverse matrix),矩阵必须为方阵才有逆矩阵;矩阵与逆矩阵相乘得到单位矩阵
正交矩阵(orthogonal matrix):一个方阵M和它的逆转矩阵的乘积是单位矩阵,这两个矩阵正交。
Q:如何判断一个矩阵是否为正交矩阵,只要满足AAT = E,即可。即矩阵与其逆转矩阵的乘机为单位矩阵。

二、矩阵的几何意义
变换(transform):把一些数据如点、方向矢量或者颜色等,通过某种方式进行转换的过程。
其中,线性变换(Linear transform)的满足条件:
f(x)+f(y) = f(x+y)
kf(x) = f(kx)

齐次坐标(文中默认为四阶其次坐标)
平移矩阵,进行平移变换,非正交矩阵。
缩放矩阵
问题:旋转矩阵是否旋转坐标系的影响??
顶点变换步骤:第二步,将顶点坐标从世界空间变换到观察空间,成为观察变换。
第三步,从观察空间转换到裁剪空间,变换矩阵叫裁剪矩阵,也叫投影矩阵。
视锥体类型:正交投影,透视投影

你可能感兴趣的:(笔记 | 《Unity Shader入门精要》)