【Unity Shader 学习笔记】ShaderLab

什么是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

语义如下:

Fallback "VertexLit"
//or
Fallback off

当且仅当Fallback之前的所有SubShader都不能运行时,调用Fallback的最低级的shader。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

启立家的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值