Unityのシェーダーでfragメソッドが返すアルファ値を変更しても半透明にならない。

実現したいこと

この記事に書かれているものを実装し、
【Unity】2D のメタボールシェーダを導入する
下図のように実現することはできたのですが、
イメージ説明
これのアルファ値を変えて半透明にしたいと思います。
そこで下記のfragメソッドで返すcol.aを変更すれば良いと思ったのですが、★のように変更してもr,g,bの値は反映されるのですが、aだけは0にしようが0.5にしようが全く半透明になりません。
これを半透明にするにはどこを変更すればよいのでしょうか?

Shader "Custom/FluidShader_test1" { Properties { _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {} _Color ("Main color", Color) = (1,1,1,1) _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5 _Stroke ("Stroke alpha", Range(0,1)) = 0.1 _StrokeColor ("Stroke color", Color) = (1,1,1,1) } SubShader { Tags { "Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="Transparent" // "Queue"="Transparent" // "IgnoreProjector"="True" // "RenderType"="Transparent" // "PreviewType"="Plane" // "CanUseSpriteAtlas"="True" } LOD 100 // Cull Off Lighting Off // ZWrite Off // Blend DstColor Zero Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_fog #include "UnityCG.cginc" // #include "UnitySprites.cginc" struct appdata_t { float4 vertex : POSITION; float2 texcoord : TEXCOORD0; }; struct v2f { float4 vertex : SV_POSITION; half2 texcoord : TEXCOORD0; }; sampler2D _MainTex; float4 _MainTex_ST; fixed _Cutoff; half4 _Color; fixed _Stroke; half4 _StrokeColor; v2f vert (appdata_t v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); return o; } fixed4 frag (v2f i) : SV_Target { fixed4 col = tex2D(_MainTex, i.texcoord); clip(col.a - _Cutoff); if (col.a < _Stroke) { col = _StrokeColor; } else { col = _Color; } // col.g = 0.5; // ★ここは値を変えれば変化がある // col.a = 0.5; // ★アルファ値がなぜか変化しない return col; } ENDCG } } }

発生している問題・分からないこと

これのfragメソッドを変更し、アルファ値を変えて半透明にしたいと思います。

該当のソースコード

特になし

試したこと・調べたこと

上記の詳細・結果

コードの★のようにcol.rやcol.g, col.bは変更すると反映されますが、col.aだけは反映されませんでした。

補足

特になし

コメントを投稿

0 コメント