[UnityShader]固定管线着色器基础

Pass { [Name and Tags] [RenderSetup][TextureSetup] }

 

基本通道命令包含一个可选的渲染设置命令的列表,和可选的被使用的纹理的列表。



 关于渲染设置 (Render Setup )

 

通道设定显示硬件的各种状态,例如能打开alpha混合,能使用雾,等等。这些命令如下:

 

Material { Material Block }

定义一个使用顶点光照管线的材质,详情参考上次我们讲的Material

 

Lighting On | Off

开启或关闭顶点光照。开启灯光之后,顶点光照才会有作用

 

Cull Back | Front | Off

设置多边形剔除模式,详细内容后面的文章会讲解到。

 

ZTest (Less | Greater | LEqual | GEqual |Equal | NotEqual | Always)

设置深度测试模式,详细内容后面的文章会讲解到。

 

ZWrite On | Off

设置深度写模式,详细内容后面的文章会讲解到。

 

Fog { Fog Block }

设置雾参数,详细内容后面的文章会讲解到。

 

AlphaTest (Less | Greater | LEqual | GEqual| Equal | NotEqual | Always) CutoffValue

开启alpha测试

 

Blend SourceBlendMode |DestBlendMode

设置alpha混合模式

 

Color Color value

设置当顶点光照关闭时所使用的颜色

 

ColorMask RGB | A | 0 | any combination of R, G, B, A

设置颜色写遮罩。设置为0将关闭所有颜色通道的渲染

 

Offset OffsetFactor , OffsetUnits

设置深度偏移

 

SeparateSpecular On | Off

开启或关闭顶点光照相关的平行高光颜色。

 

ColorMaterial AmbientAndDiffuse | Emission

当计算顶点光照时使用每顶点的颜色


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

UsePass——包含已经写好的通道


UsePass 可以包含来自其他着色器的通道,来减少重复的代码。

 

例如,在许多像素光照着色器中,阴影色或顶点光照通道在在相应的顶点光照着色器中是相同的。UsePass命令只是包含了另一个着色器的给定通道。例如如下的命令可以使用内置的高光着色器中的名叫"Base"的通道:

 

UsePass "Specular/BASE"

 

而为了让UsePass能够认识到指定的是谁,必须给希望使用的通道命名,弄个身份证。通道中的Name命令就是这个功能:

 

Name "MyPassName"


GrabPass——捕获屏幕内容到纹理中


GrabPass 可以捕获物体所在位置的屏幕的内容并写入到一个纹理中,通常在靠后的通道中使用,这个纹理能被用于后续的通道中完成一些高级图像特效。


Shader "GrabPassInvert"  
{  
SubShader  
{  
      //在所有不透明几何体之后绘制  
       Tags { "Queue" = "Transparent" }  
   
      //捕获对象后的屏幕到_GrabTexture中  
       GrabPass { }  
   
       //用前面捕获的纹理渲染对象,并反相它的颜色  
       Pass  
<span style="white-space:pre">	</span>{  
           SetTexture [_GrabTexture] { combine one-texture }  
       }  
    }  
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


纹理合并命令


  • Previous 是上一次SetTexture的结果
  • Primary 是来自光照计算的颜色或是当它绑定时的顶点颜色
  • Texture是在SetTexture中被定义的纹理的颜色
  • Constant是被ConstantColor定义的颜色

一些小技巧:


1.上述的公式都均能通过关键字 Double 或是 Quad 将最终颜色调高亮度2倍或4倍。

2.所有的src属性,除了差值参数都能被标记一个“-”负号来使最终颜色反相。

3.所有src属性能通过跟随 alpha 标签来表示只取用alpha通道。


颜色常量命令


ConstantColor color

 

定义在combine命令中能被使用的常量颜色


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

[UnityShader]固定管线着色器基础_第1张图片

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



你可能感兴趣的:(shader)