找回密码
 注册帐号

扫一扫,访问微社区

自学总结 初识 Shader 之 ShaderLab

4
回复
595
查看
[ 复制链接 ]
7日久生情
2059/5000
排名
1086
昨日变化
1

4

主题

362

帖子

2059

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
159631
好友
1
蛮牛币
5154
威望
0
注册时间
2016-7-30
在线时间
656 小时
最后登录
2019-4-4
2018-11-2 22:09:16 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
bg.jpeg


谈起 Shader 可能不得不说起图形化编程,不过这里呢就不过多谈及相关的开发细节,而主体关注Unity 兼容的 Shader 也就是Shaderlab编程。就目前了解的Unity下Shader分类来说有三种,surface shaders,vertex and fragment shaders 和 fixed function shaders。

其实就目前涉及到的可编程图形管线中,我们能够编写Shader的部分就是 vertex and fragment shaders,那为嘛 Unity 当中还会出现其他两种类型呢?

首先来说下 fixed function shaders(固定管线),在可编程图形管线硬件出现之前,很多的光照信息计算都是放在硬件上进行处理的,而这种固定管线 Shader 的功能在目前大多数硬件上得到支持,同样它的实现相对保守,只能进行简单的光照和纹理采样等等。

然后我们来看 surface shaders,这是Unity主张鼓励使用的 Shader 编写方式,现在随意在 Unity 中创建的 Shader 文件其实就是 surface shader,那说白了 surface shaders 就是对 vertex and fragment shaders 的包装,最后的编译到底层的时候也是以 vertex and fragment shaders 的形式输入的。

说完 Unity Shader的三种形态,我们再来看在 Unity 中 Shaderlab 的基本结构

Unity 中的所有 Shaders 文件都使用名为“ShaderLab”的声明性语言编写。在文件中,嵌套大括号语法声明了描述着色器的各种内容 - 例如,应在材质检查器中显示哪些着色器属性;什么样的硬件后备要做;使用什么样的混合模式等。

code.png


如图所示,一个 Shader 文件必须要有的几个因素:

首先 Shader 文件的名称,这里指代的可以是文件的名称也可以是具体目录下的名称,然后就是 Properties,这换个角度来说就是图形程序中函数运行中需要的变量数据,一般来说属性可以是浮点值,贴图以及颜色等,当然Properties在Shader文件中其实不是必须的,而我们的 SubShaders 则是真正运行图形程序的地方,Shader 文件一般至少得有一个 SubShader,而至于会存在多个 SubShader 的原因,也是针对不同的设备硬件支持能力,第一个 SubShader 面向性能特别好的设备,第二个再兼容剩下的设备,由此类推。

shader “name”{
[Properties] // 属性参数可有可无,看功能需求
SubShaders // Shader文件中必须得有
[FallBack]  // 可有可无,当Shader文件中的SubShader 设备都不支持的时候 返回一个默认显示
}

当然真正完整的 Shader 文件构成还涉及到其他东西,这个也就后说了。


点评

发表于 2018-11-3 02:54
回复

使用道具 举报

7日久生情
2001/5000
排名
1897
昨日变化

40

主题

733

帖子

2001

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
214924
好友
4
蛮牛币
17411
威望
0
注册时间
2017-3-28
在线时间
512 小时
最后登录
2019-4-25
2018-11-3 09:14:31 显示全部楼层
赞一个.
回复

使用道具 举报

7日久生情
4931/5000
排名
1669
昨日变化

0

主题

3504

帖子

4931

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
185339
好友
1
蛮牛币
3545
威望
0
注册时间
2016-11-20
在线时间
649 小时
最后登录
2019-4-24
2018-11-9 09:47:02 显示全部楼层
3
回复

使用道具 举报

排名
26980
昨日变化

0

主题

16

帖子

80

积分

Rank: 2Rank: 2

UID
90124
好友
0
蛮牛币
17
威望
0
注册时间
2015-10-9
在线时间
51 小时
最后登录
2019-4-23
2019-4-2 14:19:20 显示全部楼层
学习了!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则