Shader——渲染通道指令

混合模式

alpha测试

深度测试

通道遮罩

面剔除

 

混合模式

 

在所有计算完成后,决定当前的计算结果输出到帧缓冲区时,如何混合源和目标,通常用来绘制半透明物体

设置混合模式 例:Blend SrcAlpha OneMinusSrcAlpha

  • Blend off 关闭混合
  • Blend 源因子,目标因子:配置并开启混合,产生的颜色与源因子相乘,然后两个颜色相加
  • Blend源因子,目标因子,源因子A,目标因子A:源因子与目标因子用户混合颜色,源因子A,与目标因子A,用于混合alpha
  • BlendOp操作命令:不是将颜色混合在一起,而是将他们进行操作
    • Min,Max,Sub,RevSub
  • 混合因子的类型:
    • One 使用源或者目标色完全显示出来
    • Zero完全不显示出来
    • SrcColor 这个阶段的值*源颜色值
    • DstColor这个阶段的值*帧缓冲颜色值
    • DstAlpha这个阶段的值*帧缓冲Alpha值
    • SrcAlpha这个阶段的值*源颜色Alpha值
    • OneMinusSrcColor 阶段值*(1-源颜色的值)
    • OneMinusSrcAlpha阶段值*(1-源颜色Alpha的值)
    • OneMinusDstCoor 阶段值*(1-目标颜色的值)
    • OneMinusDstAlpha阶段值*(1-目标颜色的Alpha)

  一般放在Pass通道里,不能放到CG代码里面  

 

Alpha测试

阻止片元被写到屏幕的最后机会,最终渲染出来的颜色计算出来后可通过透明度和最后一个固定值比较,如果通过测试则绘制此片元,否则丢弃此片元

AlphaTest Off/On 默认关闭

比较测试值的模式:

Greater>,GEqual>=,Less<,LEqual<=,Equal==,NotEqual !=,Alway(永远渲染),Never(永不渲染)

AlphaTest条件 [变量]/常数,一般放在Pass通道里

 

深度测试

为了使近距离的物体挡住远处的物体,当片元写道缓冲区的时候,需要将片元的深度值与缓冲区的深度值进行比较,测试成功写入缓冲区

ZWrite 深度写开关,控制是否将深度z的片元写入缓冲区中,如果不绘制透明物体则设置为On,否则为Off,默认为On。

ZTest深度测试模式,设置深度测试的执行方式,默认为LEqual,深度测试的模式,

Greater>,GEqual>=,Less<,LEqual<=,Equal==,NotEqual !=,Alway总是绘制关闭深度测试

ZTest条件

一般放在Pass通道里

 

通道遮罩

通道遮罩可以只渲染输出结果的通道,而不是通常情况下的RGBA四个通道,可选的时RGBA的任意组合以及0,结果为0意味着不会写入到任意通道

ColorMask RG..ColorMask 0

 

面剔除

不渲染背对着摄像机的几何体的面,来提高渲染性能,所有的几何体都包括正面和反面

面剔除操作,大多数都是封闭的物体,所以不需要绘制背面

Cull Back 不绘制背对相机的面,默认值

Cull Front,不绘制面向摄像机的面

Cull Off 关闭面剔除

 

posted @ 2020-09-16 16:21  密斯塔Joe  阅读(316)  评论(0)    收藏  举报