当前位置:网站首页>UnityShader入门学习(三)——Unity的Shader
UnityShader入门学习(三)——Unity的Shader
2022-07-31 14:09:00 【番茄猿】
1 Unity Shader介绍
1.1 Unity Shader的基础:ShaderLab
1.2 Unity Shader属性块
Shader ""
{
Properties
{
_Int("Int", Int) = 2
_Float("Float", float) = 1.5
_Range("Range", range(0.0, 2.0)) = 1.0
_Color("Color", Color) = (1, 1, 1, 1)
_Vector("Vector", Vector) = (1, 4, 3, 8)
_MainTex("Texture", 2D) = "white"{
}
_3D("3D", 3D) = "black"{
}
}
}
1.3 Unity Shader SubShader
Tags
Tags可以写在SubShader的一开始(所有的Pass用),也可以写在Pass块的内部(该Pass用)
渲染设置
同Tags一样也可以写在Pass中或者写在Pass外面(SubShader一开始)
Pass介绍
Pass里面可以定义Pass名称
Pass里面的Tags还可以有额外的设置
还有CG语言所写的代码,主要是顶点片元着色器,使用以下关键字包裹
CGPROGRAM
ENDCG
FallBack
2 SurfaceShader介绍
SurfaceShader实际上是在顶点、片元着色器的基础上又进行了一层的封装,我们可以通过Show GenerateCode来查看到。(我们可以看到编译后的顶点、片元着色器是非常复杂的)
SurfaceShader的结构和前面的顶点、片元着色器的结构是一样的。主要区别在于SubShader中。
3 UnityShader != 真正的Shader
Unity Shader实际上指的就是一个ShaderLab文件。以.shader作为后缀的一种文件。在Unity shader里面,我们可以做的事情远多于一个传统意义上的Shader。
在传统的shader中,我们仅可以编写特定类型的Shader,例如顶点着色器,片元着色器等。在Unity Shader中,我们可以在同一个文件里面同时包含需要的顶点着色器和片元着色器代码。
在传统shader中,我们无法设置一些渲染设置,例如是否开启混合,深度测试等,这些是开发者在另外的代码中自行设置的。而Unity shader中,我们通过一行特定的指令就可以完成这些设置。
在传统shader中,我们需要编写冗长的代码设置着色器的输入和输出,要小心的处理这些输入输出的位置对应关系等。而在Unity shader中,我们只需要在特定语句块中声明一些属性,就可以依靠材质来方便的改变这些属性。而对于模型自带的数据(如顶点,纹理坐标,法线等),Unity Shader也提供了直接访问的方法,不需要开发者自行编码来传给着色器。
边栏推荐
- leetcode:485.最大连续 1 的个数
- [QNX Hypervisor 2.2用户手册]9.13 rom
- 49. The copy constructor and overloaded 】
- 百度网盘安装在c盘显示系统权限限制的解决方法
- 使用NVM进行node版本切换管理
- AWS implements scheduled tasks - Lambda+EventBridge
- IDEA连接MySQL数据库并使用数据
- hyperf的启动源码分析(二)——请求如何到达控制器
- Five dimensions to start MySQL optimization
- 推荐系统-召回阶段-2013:DSSM(双塔模型)【Embedding(语义向量)召回】【微软】
猜你喜欢
1小时直播招募令:行业大咖干货分享,企业报名开启丨量子位·视点
Small test knife: Go reflection helped me convert Excel to Struct
【蓝桥杯选拔赛真题46】Scratch磁铁游戏 少儿编程scratch蓝桥杯选拔赛真题讲解
组合系列--有排列就有组合
C# using ComboBox control
新款现代帕里斯帝预售开启,安全、舒适一个不落
Selenium自动化测试之Selenium IDE
OAuth2:微服务权限校验Session共享
232层3D闪存芯片来了:单片容量2TB,传输速度提高50%
1-hour live broadcast recruitment order: industry leaders share dry goods, and enterprise registration is open丨qubit · point of view
随机推荐
ERROR: Failed building wheel for osgeo
The latest complete code: Incremental training using the word2vec pre-training model (two loading methods corresponding to two saving methods) applicable to various versions of gensim
Samba 远程命令执行漏洞(CVE-2017-7494)
C# control ToolStripProgressBar usage
技能大赛训练题: 子网掩码划分案例
技能大赛dhcp服务训练题
使用NVM进行node版本切换管理
49.【拷贝构造函数与重载】
ML, DL, CV common problems sorting
A detailed guide to simulating latency with SQL/JDBC
AWS implements scheduled tasks - Lambda+EventBridge
CLion用于STM32开发
技能大赛训练题:交换机虚拟化练习
MySQL 23 classic interviews hang the interviewer
ADS communicate with c #
推荐系统-召回阶段-2013:DSSM(双塔模型)【Embedding(语义向量)召回】【微软】
技能大赛训练题:ftp 服务攻防与加固
最近很火的国产接口神器Apipost体验
A detailed explanation of the usage of Async and Await in C#
线程池的使用二