Shader入门(1)渲染流水线的概念

最近因为工作的需要而强行学习Unity Shader,为了方便记忆也方便和各位大佬们一起交流,所以把笔记发了出来,有问题的话希望大佬指正。

一、渲染流水线的概念

1.简单来说,渲染流水线就是输入一些三维场景等信息生成一张二维的图像。

2.渲染流水线和现代工业中的流水线有相同的设计理念,可以说渲染流水线就是工业流水线在电脑中进行复杂数学计算的版本。

Shader入门(1)渲染流水线的概念

Unity Shader入门精要中的插图

4.渲染流水线的最终目的就是把电脑中的抽象信息呈现到屏幕上,让人眼可以接收。

5.渲染流水线是由CPU和GPU共同进行计算的。

二、流水线的流程

1.一个渲染流程可以分为三个阶段:应用阶段、几何阶段、光栅化阶段。

2.每个阶段之内又可以分为更多的小流水线。

3.应用阶段。在应用阶段,由美术和程序还有TA来搭建场景,制作材质,编辑shader,这个阶段是属于一切可以手动操控的阶段。

4.几何阶段。这一阶段通常由GPU进行,GPU会读取应用阶段编辑的所有三维信息(即渲染图元)进行运算,决定多边形绘制的方式。

(以后会提到的投影变换就发生在这一阶段)

5.光栅化阶段。这一阶段就是读取上一阶段的运算结果,逐像素绘制图像。

(发散思维:关于垂直同步,为什么有的机器开垂直同步之后会出现掉帧。显示器有固定的刷新频率,而一些老旧的GPU生成画面的速度跟不上显示器的刷新频率,因为GPU是从左往右一条一条生成像素的,所以不开垂直同步时就会出现GPU没来得及绘制完一张图像就被显示了出来,造成画面撕裂。而开启垂直同步之后,机器就会宁可不显示也不能把没生成完的图像放出来,因此,画面就掉帧了。)
Shader入门(1)渲染流水线的概念

传说中的画面撕裂
参考图书《Unity Shader入门精要》