您的位置:首页 > 移动开发 > Unity3D

Unity 之 Shader Blend 混合操作 - 八

2015-04-09 16:27 429 查看
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中即可

效果如下



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: