Unity Built-in Shader详解二

       这次主要讨论Unity自带的Shader中Transparent Shader Family

       这个家族的Shader一共7种,原理和类型与Normal中的上差不多,只不过这些Shader是用在半透明或者全透明的物体上面的。他们的主纹理接受RGBA4个通道。如果你的模型一部分是半透明,一部分是不透明的。请分开使用两张材质,半透明的材质这个家族的Shader。这个家族的Shader的内容和Normal中同名的几乎一样,只是添加了半透明效果,因此不再做重复介绍。

 

       通过读取纹理中的alpha值,这个Transparent家族的shader可以让模型变成半透明或者全透明的。在alpha中,0表示全透明,255表示全白。如果你的主纹理不包含alpha通道,那么这个物体将会变成不透明的。

       在游戏中使用半透明的物体是比较有技巧性的,因为他们经常会导致排序问题。比如说,如果你透过两个窗口观察物体,发觉物体很异样,恭喜你,你正在经历着每个人都会遇到的使用半透明对象的问题。一条具有普遍性的规则是:有些时候一个半透明的对象会很诡异的绘制在另外一些对象前面,尤其当这些对象是互相交叉的,或者一个把另一个包围的抑或是。为此,当你需要半透明对象的时候,你应该使用它们,但是不要太过于依赖半透明对象(考虑到性能问题)。你也应该让你的设计者们了解到排序可能会出现问题,让他们做好为此调整的准备。

 

       (1)Vertex-Lit

           这个家族中最简单的Shader,同样有固定管线和可编程管线两个SubShader,适用于所有的硬件。所有的光只在顶点计算。除了支持半透明,其他特性和Normal里面的Vertex-Lit一致。

          

 

 

          (2)Transparent Diffuse

           同Normal中的Diffuse,支持了alpha。

          

 

 

          (3)Transparent Specular

          同Normal Specular,支持了半透明

         

 

 

          (4) Transparent Bumped Diffuse

          同Normal中的Bumped Diffuse

         

 

          (5) Transparent Bumped Specular

          同Normal里面的Bumped Specular,支持半透明

         

 

          (6)Transparent parallax Diffuse

          同Normal parallax Diffuse,支持半透明

         

 

          (7) Transparent Parallax Specular

          同Normal Parallax Specular,支持半透明。

         

你可能感兴趣的:(游戏,编程,shader)