ShaderLab之SubShader

2017-03-04  本文已影响0人  Nico_blog

首先,每一个Unity Shader可以包含多个SubShader,至少一个。在调用Shader时Unity会扫描所有SubShader并选择一个可以在目标平台运行的SubShader,若没有合适的SubShader,系统就会调用Fallback语句定义的Unity Shader。

设在一个Pass中如下定义了Pass的名称:
Name "MyPassName"
通过这个名称,我们可以使用UsePass命令在其他的Unity Shader中调用这个Pass,例如:
UsePass "MyShader/MYPASSNAME"//其中MyShader为定义了这个Pass的Unity Shader的名称。
Pass同样可以设置标签来告诉渲染引擎怎样渲染物体,但与上文中提到的SubShader中的标签又不相同,Pass中的标签有下面几个类型:
Tags { "LightMode" = "ForwardBase" }//定义该Pass在Unity的渲染流水线的角色。
Tags { "RequireOptions" = "SoftVegetation" }//用于指定当满足一定条件时才渲染该Pass。
除了普通定义的Pass之外还有UsePass和GrabPass两种语句,这将在之后的笔记中补充。

注意:在写完SubShader之后要进行FallBack设置,如:

 FallBack "Name"
 //或者
 FallBack Off

该文章为作者在读了《Unity Shader入门精要》一书之后写得一些心得和笔记。如有任何不理解的地方可查阅原著。

上一篇下一篇

猜你喜欢

热点阅读