【Unity】シェーダーブレンドモード一覧
はじめに
視覚的に把握できるようにシェーダーのブレンドモード一覧を作成しました。ブレンド要素は11種類あることから組み合わせとしては121種類あります。
環境
Unity 2019.4.15f1 Windows 10
条件
左側テクスチャ:Unlitの草のテクスチャ
右側テクスチャ:UnlitでRGB(255, 0, 0, 255) [赤]でここで使用しているシェーダーのブレンドモードをそれぞれの組み合わせで変更
(使用シェーダーは最後にあります)スクショ画像はGameView
Blend Mode
シェーダー内にBlend Modeを記述することで既に描画されている色とシェーダーで計算した色とのブレンド方法を指定することが可能になっています。
一般的な記述方法としては以下のようになります。(デフォルトは加算)
Blend SrcFactor DstFactor
考え方としては
Unityドキュメントにも記述があります。
Blend Mode 組み合わせ一覧
DstAlpha DstAlpha
DstAlpha DstColor
DstAlpha One
DstAlpha OneMinusDstAlpha
DstAlpha OneMinusDstColor
DstAlpha OneMinusSrcAlpha
DstAlpha OneMinusSrcColor
DstAlpha SrcAlpha
DstAlpha SrcAlphaSaturate
DstAlpha SrcColor
DstAlpha Zero
DstColor OneMinusDstColor
DstColor DstAlpha
DstColor DstColor
DstColor One
DstColor OneMinusDstAlpha
DstColor OneMinusSrcAlpha
DstColor OneMinusSrcColor
DstColor SrcAlpha
DstColor SrcAlphaSaturate
DstColor SrcColor
DstColor Zero
One DstAlpha
One DstColor
One One
One OneMinusDstAlpha
One OneMinusDstColor
One OneMinusSrcAlpha
One OneMinusSrcColor
One SrcAlpha
One SrcAlphaSaturate
One SrcColor
One Zero
OneMinusDstAlpha DstAlpha
OneMinusDstAlpha DstColor
OneMinusDstAlpha One
OneMinusDstAlpha OneMinusDstAlpha
OneMinusDstAlpha OneMinusDstColor
OneMinusDstAlpha OneMinusSrcAlpha
OneMinusDstAlpha OneMinusSrcColor
OneMinusDstAlpha SrcAlpha
OneMinusDstAlpha SrcAlphaSaturate
OneMinusDstAlpha SrcColor
OneMinusDstAlpha Zero
OneMinusDstColor DstAlpha
OneMinusDstColor DstColor
OneMinusDstColor One
OneMinusDstColor OneMinusDstAlpha
OneMinusDstColor OneMinusDstColor
OneMinusDstColor OneMinusSrcAlpha
OneMinusDstColor OneMinusSrcColor
OneMinusDstColor SrcAlpha
OneMinusDstColor SrcAlphaSaturate
OneMinusDstColor SrcColor
OneMinusDstColor Zero
OneMinusSrcAlpha DstAlpha
OneMinusSrcAlpha DstColor
OneMinusSrcAlpha One
OneMinusSrcAlpha OneMinusDstAlpha
OneMinusSrcAlpha OneMinusDstColor
OneMinusSrcAlpha OneMinusSrcAlpha
OneMinusSrcAlpha OneMinusSrcColor
OneMinusSrcAlpha SrcAlpha
OneMinusSrcAlpha SrcAlphaSaturate
OneMinusSrcAlpha SrcColor
OneMinusSrcAlpha Zero
OneMinusSrcColor DstAlpha
OneMinusSrcColor DstColor
OneMinusSrcColor One
OneMinusSrcColor OneMinusDstAlpha
OneMinusSrcColor OneMinusDstColor
OneMinusSrcColor OneMinusSrcAlpha
OneMinusSrcColor OneMinusSrcColor
OneMinusSrcColor SrcAlpha
OneMinusSrcColor SrcAlphaSaturate
OneMinusSrcColor SrcColor
OneMinusSrcColor Zero
SrcAlpha DstAlpha
SrcAlpha DstColor
SrcAlpha One
SrcAlpha OneMinusDstAlpha
SrcAlpha OneMinusDstColor
SrcAlpha OneMinusSrcAlpha
SrcAlpha OneMinusSrcColor
SrcAlpha SrcAlpha
SrcAlpha SrcAlphaSaturate
SrcAlpha SrcColor
SrcAlpha Zero
SrcAlphaSaturate DstAlpha
SrcAlphaSaturate DstColor
SrcAlphaSaturate One
SrcAlphaSaturate OneMinusDstAlpha
SrcAlphaSaturate OneMinusDstColor
SrcAlphaSaturate OneMinusSrcAlpha
SrcAlphaSaturate OneMinusSrcColor
SrcAlphaSaturate SrcAlpha
SrcAlphaSaturate SrcAlphaSaturate
SrcAlphaSaturate SrcColor
SrcAlphaSaturate Zero
SrcColor DstAlpha
SrcColor DstColor
SrcColor One
SrcColor OneMinusDstAlpha
SrcColor OneMinusDstColor
SrcColor OneMinusSrcAlpha
SrcColor OneMinusSrcColor
SrcColor SrcAlpha
SrcColor SrcAlphaSaturate
SrcColor SrcColor
SrcColor Zero
Zero DstAlpha
Zero DstColor
Zero One
Zero OneMinusDstAlpha
Zero OneMinusDstColor
Zero OneMinusSrcAlpha
Zero OneMinusSrcColor
Zero SrcAlpha
Zero SrcAlphaSaturate
Zero SrcColor
Zero Zero
使用シェーダー
Shader "Unlit/BlendTest"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_Color("Color", Color) = (1, 1, 1, 1)
[Enum(UnityEngine.Rendering.BlendMode)]_BlendSrc("Blend Src", Float) = 0
[Enum(UnityEngine.Rendering.BlendMode)]_BlendDst("Blend Dst", Float) = 0
}
SubShader
{
Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" }
Blend [_BlendSrc] [_BlendDst]
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
fixed4 _Color;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return _Color;
}
ENDCG
}
}
}
おわりに
全てブレンドモードの組み合わせを画像付きで見られたらいいなぁという思いで作りました。色に関する内容なので、やはり画像付きの方が直感的に把握しやすいと思います。
「シェーダーのブレンドモード何も分からない」の手助けになれば幸いです。🌱
参考
この記事が気に入ったらサポートをしてみませんか?