「UnityShader入门精要」第二章 渲染流水线

时间:2022-11-19 10:19:55

2.3 GPU流水线

「UnityShader入门精要」第二章 渲染流水线

2.3.2 顶点着色器

  输入来自于CPU,处理顶点数据。输入的每个顶点都会调用一次顶点着色器,所以每次都是对单个顶点进行运算。

  主要任务:坐标变换、逐顶点光照。

「UnityShader入门精要」第二章 渲染流水线

  坐标变换:修改顶点的位置,例如模拟水面波纹效果、果冻效果等。

必须完成的工作,把顶点坐标从模型空间转换到齐次裁剪空间。

常见的如:o.pos = mul(UNITY_MVP, v.position);

「UnityShader入门精要」第二章 渲染流水线

 

2.3.3 裁剪

  摄像机视野有限,视野外的物体不需要被处理,可以直接裁剪掉。

2.3.4 屏幕映射

  将单位立方体内的三维坐标转换到二维屏幕坐标,与分辨率有较大关系。

2.3.5 三角形设置

   将网格点连成线,计算得到三角形网格。

2.3.6 三角形遍历

  计算每个像素是否被三角网格覆盖,覆盖则生成片元。

「UnityShader入门精要」第二章 渲染流水线

 

2.3.7 片元着色器

  输入:上一个阶段(顶点着色器)对顶点信息插值的结果

  输出:一个或多个颜色值

  渲染技术:纹理采样

「UnityShader入门精要」第二章 渲染流水线

 

2.3.8 逐片元操作

  1.决定每个片元的可见性,例如,深度测试、模版测试

  2.将通过测试的片元颜色值与缓冲区内的颜色进行混合

「UnityShader入门精要」第二章 渲染流水线

  3.混合,不透明物体直接覆盖原缓冲区的像素值,透明物体与原缓冲区像素值进行混合。

 

 

2.4 一些容易困惑的地方

2.4.3 什么是Draw Call

  CPU调用图像编程接口命令GPU进行渲染的操作,Draw Call多了导致CPU大量执行重复的命令而过载,掉帧。