《Unity Shader入门精要》| 读书笔记(一)
2020-03-26 本文已影响0人
温素年
最近又开始学习Unity Shader编程了,感觉和之前又很大区别。之前看的时候对Unity Shader是什么,能做什么很模糊,只是跟着写一写代码。时隔两年再看虽然大部分都忘了,但是对Shader的认识却清晰了许多。
这本书现在看了七章,看的速度比较快,希望能尽快把各种效果弄明白。之前一直没有时间整理,今天把这几章的内容整理一下。
第2章 渲染流水线
明确一些概念:
-
渲染:把三维场景显示成二维图像
-
渲染流水线:实现渲染的过程,如下图所示。书里讲了每个步骤的具体操作,这里就不详细说明了。
![](https://img.haomeiwen.com/i5633236/a8b9670d9900afe0.png)
-
在渲染流水线中,图中深色的步骤是可编程的,灰色的步骤是可配置的,最浅的步骤是不可编程且不可控制的。我们做的Shader编程就是对顶点着色器和片元着色器这两个步骤的编程控制。
-
Unity Shader不是渲染流水线中的Shader。渲染流水线中的Shader是渲染的一个步骤;Unity Shder是实现Shader的工具。
-
OpenGL和DirectX:用来控制整个渲染流水线,同时也提供了一些组件,连接了开发者与GPU接口。
-
GLSL和HLSL:用来给渲染流水线中的Shader步骤编程。OpenGL对应了GLSL,DirectX对应了HLSL。还有一个NVIDIA公司的CG语言,语法与HLSL类似。
-
Unity Shader中使用的是CG语言。
第3章 Unity Shader基础
-
在Unity界面中显示写的Shader需要把Shader赋给Material,再把Material赋给Model。在Material上可以调节属性值。
-
Unity中有很多内置的Shader可以方便我们直接使用,但是我还没有尝试使用过,所以先不介绍了。
![](https://img.haomeiwen.com/i5633236/01d1e5294ff2e71f.png)
- Unity Shader主要有Properties、SubShader、Fallback三个部分。有多个SubShader的目的是为了适应不同的平台,CG代码段就在Subshader中。
第4章 学习Shader所需的数学基础
这一章内容暂时没看,因为坐标变换是一个老生常谈的问题,打算结合后面的实践再深入理解。
第5章 开始Unity Shader学习之旅
- 在CG代码段中可以定义顶点着色器函数、片元着色器函数和表面着色器函数等。
- 逐顶点执行顶点着色器函数,主要用来进行坐标变换;逐片元执行片元着色器函数,主要用来计算像素颜色。
- 表面着色器函数是Unity自定义的函数,方便我们写代码,其内部也执行了上面两个函数。
后面两章的内容有点多,下一篇文章再详细讲吧!
![](https://img.haomeiwen.com/i5633236/0c61825165a8cfd2.jpg)