Shader 着色器学习(一)

Shader 着色器学习(一)

两个基本问题 :
1.shader是什么?
2.shader可以用来干什么?

第一个问题 : shader是什么?
(1). shader是运行在GPU(显卡)上的程序.
(2). shader中文叫着色器,但是它不仅仅可以控制图像的颜色,还可以控制图像的形状,简而言之就是通过控制显卡来控制图像的生成.
(3). 最常用的shader有两种:
Vertex Shader (顶点着色器)
Fragment Shader (片元着色器)

(4). shader是渲染管线上可高度编程的环节.

第一问题引出了一个新的概念 : 渲染管线
理解渲染管线对学习shader至关重要,那么
渲染管线是什么呢?
(1). 渲染管线也称为渲染流水线,是显示芯片(比如GPU)内部处理图形信号相互独立的并行处理单元
可以把显卡看成一个加工厂,这个工厂负责的是把3D/2D场景加工成显示在屏幕上的图像.
工厂里的加工流水线就是渲染管线,很显然一个工厂绝对不止一条流水线,一条条流水线一起工作又相互独立互不干扰,由此才有了显卡强大的渲染能力.
(2). 渲染管线指的是一个过程,是指从3D场景出发到加工生成显示在屏幕图像的这一系列步骤.
再简化一下 : 渲染管线是GPU上处理图形数据的一套流程.
注 : 这是个人总结,有错漏之处还望指出,大家共同学习共同进步.

第二个问题 : shader可以用来干什么?
(1). 先回顾一下,上面讲到shader是渲染管线上可高度编程的环节.
我们已经知道渲染管线是负责处理图形数据的,起初渲染管线是不可编程的,那时候叫做固定管线着色器,固定管线通过对渲染管线的渲染方式进行设置来完成理想的图像效果.
但是这种方法还是不够灵活,所以新的方法应运而生,开发者用高级的shader语言来自己编写shader.
因为渲染管线是GPU中的,而shader在GPU上运行,所以通过shader实现的图像效果通常非常高效.
顶点着色器,片元着色器(又称像素着色器),顾名思义就是说我们可以通过对场景的每个顶点数据进行处理,对要显示在屏幕的每个像素数据进行处理,所以通过shader实现的图像效果可以非常精细.
(2). 总结 : shader可以高效,精细的实现理想的图像效果,比如水面,镜子,石头的纹理,光照效果等等等等.
Shader 着色器学习(一)
Shader 着色器学习(一)
Shader 着色器学习(一)
强大,高效,这就是shader.