Blend 混合操作
混合操作作用于在所有计算已经结束, 已经决定将当前计算结果输出到帧缓冲中是,如何输出到帧缓冲中,是直接替换原来的,还是一加一的混合。
混合操作有两个对象,源和目标
Blend混合总共有十种可选类型
One 值为1,使用此因子来让帧缓冲区源颜色或是目标颜色完全的通过。
zero 值为0,使用此因子来删除帧缓冲区源颜色或目标颜色的值。
SrcColor 使用此因子为将当前值乘以帧缓冲区源颜色的值
SrcAlpha 使用此因子为将当前值乘以帧缓冲区源颜色Alpha的值。
DstColor 使用此因子为将当前值乘以帧缓冲区目标颜色的值。
DstAlpha 使用此因子为将当前值乘以帧缓冲区目标颜色Alpha分量的值。
OneMinusSrcColor 使用此因子为将当前值乘以(1 -帧缓冲区源颜色值)
OneMinusSrcAlpha 使用此因子为将当前值乘以(1 -帧缓冲区源颜色Alpha分量的值)
OneMinusDstColor 使用此因子为将当前值乘以(1 –目标颜色值)
OneMinusDstAlpha 使用此因子为将当前值乘以(1 –目标Alpha分量的值)
使用方法如:
Blend One Zero
Blend SrcAlpha One 等
在代码中运用如下
Shader "Custom/PassFive" {
Properties {
//定义一个贴图
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader
{
Tags {"RenderType" = "Opaque" "IGNOREPROJECTOR" = "TRUE" "QUEUE" = "Transparent"}
LOD 200
Pass
{
//AlphaTest Greater 0.6
//AlphaTest Less 0.5
//AlphaTest Greater 0.4
//AlphaTest Less 0.9
//Blend SrcAlpha OneMinusSrcAlpha
Blend SrcColor OneMinusSrcColor
//BlendOp Max
//BlendOp Min
//BlendOp Sub
//BlendOp RevSub
// 通过绑定固定通道来使用定点色
BindChannels
{
Bind "Vertex", vertex // 绑定定点
Bind "Normal", normal
Bind "Color", color
Bind "Texcoord", texcoord0
Bind "Texcoord", texcoord1
}
//给材质设置 贴图
SetTexture [_MainTex]
{
Combine texture * primary double
}
}
}
FallBack "Diffuse"
}
各种组合不一一测试,各种混合模式视情况而定
在Unity3.5版本之后又多了一个BlendOp选项,可以在通常的加操作之外执行Max,Min, Sub, 以及 RevSub这4种操作
用法如下
BlendOp Max
BlendOp Min
BlendOp Sub
BlendOp RevSub
加到Pass中即可
效果如下
版权声明:本文为LIQIANGEASTSUN原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。