[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命令中能被使用的常量颜色


///


///



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值