Unity Shader 入门精要学习笔记《二》渲染流水线

这部分是本书的第二章,第一章是一些基本的介绍,关键的内容就是本书结构的介绍。

关键重点语句段落:

(1)渲染流水线的最终目的是在于生成或者说是渲染一张二维纹理二维:指明操作的维度,纹理:指明操作的对象。360百科中对纹理的解释:计算机图形学中的纹理既包括通常意义上物体表面的纹理,即使物体表面呈计算机图形学动物纹理现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,通常我们更多地称之为花纹
(2) Shader 仅仅是渲染流水线中的一个环节。
(3)渲染流水线的工作任务在于由一个三维场景出发,生成(或者说渲染)一张二维图像。
(4)渲染流程三阶段:

输出渲染图元
输出屏幕空间的顶多信息
主要由CPU 实现
主要由GPU实现
主要由GPU实现
应用阶段
几何阶段
光栅化阶段
应用阶段
准备场景数据:摄像机/视锥体/场景模型
粗粒度剔除:剔除不可见的物体
设置模型的渲染状态:材质/纹理/shader
渲染图元
几何阶段
绘制的图元是什么
怎么样绘制图元
在哪里绘制图元
逐顶点/逐多边形操作
顶点坐标变换到屏幕
输出屏幕空间的二维顶点坐标 包含深度值和着色信息
光栅化阶段
对二维顶点坐标插值
逐像素处理
最终图像

(4)GPU和CPU通信过程

GPU和CPU的通信主要发生在应用阶段:CPU如何指导GPU工作?

需要渲染的图元列表
应用阶段
CPU
渲染所需数据存放在硬盘HDD
数据加载到系统内存RAM
网格和纹理等数据加载到显存VRAM
设置渲染状态
使用的顶多着色器
使用的片元着色器
使用的光源属性
使用的材质等
调用Draw Call命令
GPU
渲染

(5)GPU 流水线
接受CPU的渲染命令后,GPU如何开展工作?

可编程 顶点空间变换 顶点着色
可选着色器
可选着色器
可配置
不可配置 不可编程
固定函数
固定函数
可编程
可配置 不可编程
顶点数据
顶多着色器
曲面细分着色器
几何着色器
裁剪
屏幕映射
三角形设置
三角形遍历
片元着色器
逐片元操作
屏幕图像

顶点着色器:

操作对象
涉及操作
涉及操作
改变顶点的位置来模拟水面 布料
顶点着色器
顶点
坐标变换
逐顶点光照
齐次裁剪空间

裁剪:
一个图元与摄像机视野的光系:

图元与视野关系
完全在视野内
继续传递下一级流水线
完全不在视野内
不继续传递
部分在视野内
裁剪
生成新的顶点

屏幕映射:
作用:将三维坐标系下的坐标(单位正方体内)转换到屏幕坐标系下。屏幕坐标系和三维坐标系下的Z轴一起构成窗口坐标系。

三角形设置:由点的坐标获取边界像素的坐标信息,进而得到整个三角网络对像素的覆盖情况。
三角形遍历:检查每个像素是否被一个三角网络覆盖,如果覆盖就生成一个片元。片元的信息是对三个顶点的信息进行插值得到。每个像素对应一个片元,片元的信息包括屏幕的坐标、深度信息等。
片元着色器:

上一个阶段对顶点信息插值得到结果
片元着色器
一个或多个颜色值

逐片元操作:

片元
模板测试
深度测试
混合
颜色缓冲区

扩展:
(1)两大图像应用编程接口:OpenGL 、DirectX
(2)
Unity Shader 入门精要学习笔记《二》渲染流水线
(3)着色器的编程语言:HLSL、GLSL、CG
(4)Shader:

Shader
是GPU流水线上一些可高度编程的阶段
代码在CPU中运行
有一些特定类型着色器
控制流水线中的渲染细节