游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:793

当前位置:游戏蛮牛 技术专区 教程分享

查看: 246|回复: 3

[自学总结] 初识 Shader 之 ShaderLab

[复制链接]  [移动端链接]
7日久生情
1759/5000
排名
1414
昨日变化

4

主题

356

帖子

1759

积分

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

UID
159631
好友
1
蛮牛币
4679
威望
0
注册时间
2016-7-30
在线时间
551 小时
最后登录
2018-11-15
发表于 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日久生情
1565/5000
排名
2487
昨日变化

12

主题

632

帖子

1565

积分

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

UID
214924
好友
3
蛮牛币
4047
威望
0
注册时间
2017-3-28
在线时间
367 小时
最后登录
2018-11-16
发表于 2018-11-3 09:14:31 | 显示全部楼层
赞一个.

回复

使用道具 举报

7日久生情
3452/5000
排名
2187
昨日变化

0

主题

2460

帖子

3452

积分

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

UID
185339
好友
1
蛮牛币
4472
威望
0
注册时间
2016-11-20
在线时间
380 小时
最后登录
2018-11-16
发表于 2018-11-9 09:47:02 | 显示全部楼层
3

回复

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /1 下一条

快速回复 返回顶部 返回列表