什么是ShaderLab?
ShaderLab是Unity为开发者提供的高层级的渲染抽象层,是专门用来编写UnityShader的一种说明性语言。
Unity shader的基本结构
Shader "ShaderName"{
Properties {
//属性
}
SubShader {
//显卡A使用的子着色器
}
SubShader {
//显卡B使用的子着色器
}
Fallback "VertexLit"
}
材质和Unity Shader的桥梁:Properties
Properties语义块包含了一系列属性,这些属性会显式的出现在材质面板中。便于开发者在材质面板中能够方便地调整各种材质属性。
重量级成员:SubShader
基本结构:
Subshader {
[Tags]//可选的标签
[RenderSetup]//可选的渲染状态
Pass {
}
//other passes
}
SubShader中定义了一系列Pass以及可选的渲染状态和标签。每个Pass定义了一次完整的渲染流程。//Pass数目过多会造成渲染性能的下降
状态和标签也可以在Pass内声明,但是在SubShader中的标签设置与Pass中是不一样的。对于渲染状态来说,在SubShader进行的状态设置会应用于所有的Pass。
SubShader的标签(Tags)是一个键值对(Key/Value Pair),它的键和值都是字符串(String)类型,它们用来告诉Unity的渲染引擎何时以及怎样渲染对象。
//上述标签只可以在SubShader中声明,不可以在Pass块中声明。
Pass语义块
基本结构
Pass {
[Name]
[Tags]
[RenderSetup]
//other code
}
首先,我们定义该Pass的名称,如
Name "SQLPASS"
有了这个名称,我们就可以用ShaderLab的UsePass命令来直接使用其他Unity Shader中的Pass,例如
UsePass "MyShader/SQLPASS"//Unity内部要求Pass的名称必须大写
下面是不同于SubShader标签的Pass标签类型:
留一条后路:Fallback
语义如下:文章来源:https://www.toymoban.com/news/detail-426334.html
Fallback "VertexLit"
//or
Fallback off
当且仅当Fallback之前的所有SubShader都不能运行时,调用Fallback的最低级的shader。文章来源地址https://www.toymoban.com/news/detail-426334.html
到了这里,关于【Unity Shader 学习笔记】ShaderLab的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!