US2S2L6——Shader的备用着色器

回顾:ShaderLab的基本结构

ShaderLab主要由4个部分组成

  1. Shader的名字
  2. Shader的属性
  3. 1~n个子着色器
  4. 备用的Shader

本章代码关键字

1
Fallback "备用Shader名"

备用Shader

我们知道ShaderLab当中允许有多个 SubShader​ 子着色器
当执行渲染时,会从上到下使用第一个能够正常执行的 SubShader​ 子着色器来渲染对象

那有没有可能所有 SubShader​ 子着色器都不能够在显卡上执行呢?答案是肯定的
有可能出现在某一个设备上,我们自定义的所有 SubShader​ 都无法正常执行(设备显卡无法支持一些api等情况)
那么这时 备用Shader 就可以起到很大作用了,它至少可以让对象能够正常渲染出来

因此:备用Shader 主要作用就是当Shader文件中的所有 SubShader​ 子着色器都无法正常运行时
起到一个保险作用,让物体能够使用一个最低级的Shader去渲染出来(效果略差,但至少能够显示)

它的主要作用就是提供“救命稻草”,我们一般会使用较为低级的效果作为备用Shader,确保对象在低端设备上也能够正常渲染

备用Shader的语法

1
2
3
4
Shader
{
Fallback "Shader名"
}

1
2
3
4
Shader
{
Fallback Off
}

Fallback​ 关键词后面空格并通过一个字符串来告诉Unity:“最低级的Unity Shader”是谁
也可以直接关闭 Fallback​ 功能,但是如果关闭那就意味着“放弃治疗”(也就是使用该Shader的材质将会显示异常)

关于可以使用哪些Shader,可以直接在材质的Shader选项里查看:

image

例如:

1
2
3
4
5
6
7
Shader "TeachShader/Lesson9"
{
Properties { ... }
SubShader { ... }

Fallback "VertexLit"
}