Unity5.0 Shader 极简入门 (二)

来源:互联网 发布:网络咨询和护士哪个好 编辑:程序博客网 时间:2024/06/08 19:48

UnityShader的两种写法

如果想修一张照片
可以用很专业的软件例如“Photoshop”,
当然如果你不会,也可用傻瓜式软件“美图秀秀”,用大神已经做好的特效,简单点一点,照样能修的很棒。

其实,unity的shader也是一样的。你可以使用两种语法编写:

  1. 复杂而详细的“顶点片元着色”,pass写法。
  2. 简单而易用的“表面着色”,Surface Shader写法。

这两个写法思路相同只是写法不同,
实际上是先有1 ,然后人们发现1能改进,于是在1基础上提炼、合并同类项(业内叫封装),制作出了2。
所以通常情况下,你会看到同一个效果,用1来写就要好长好长,用2,也许就是简短的半页代码。
但是在显存里面,他俩的效率是一样滴。所以不用纠结用哪种方法编写好。
我推荐大家,如果想学,就从复杂的学,学完再看简单的就很容易了。


扩展阅读 详细介绍2 是怎么从 1 过来的

看问题:如果你有两个菜谱A,B,当然其中有部分是重复的内容
A : 买菜洗菜切菜
B : 买菜洗菜切菜

那么用程序思维我们就可以把“买菜、洗菜、切菜”合并同类项,称为“准备工作”,然后这么介绍:

做菜前要有“准备工作 ”具体要做 “买菜,洗菜,切菜”,然后:
A 菜做法是 准备工作 + 炒
B 菜做法是 准备工作 + 炖

所以以后,你作为厨师长带徒弟了,就可以直接跟他说“准备工作做的怎么样了?”意思就是“买菜,洗菜,切菜”了吗?

shader 也是一样的 把成大段的相同的代码合并同类项,下次用的时候不用说太多,直接说“准备工作”。
计算机就明白了:“啊!原来你要做这个事儿!”

于是就有了上文说的从 1 到 2 的简化 。
那么shader 到底把哪些内容合并同类项了呢?
我不了解它合并了啥,就没法编写呀!
这个问题我们留给以后探讨。

原创粉丝点击