シェーダはiPad Air上のunity 5.4で正常に動作していますが、unity 5.5にアップグレードするとアウトラインが崩れますが、アルファはまだ動作しています。次いで、輪郭のオブジェクトサポートテクスチャおよびアルファUnity 5.5にアップグレードした後のアウトラインシェーダのブレーク
Shader "TFTM/Outline/Basic-Alpha" {
Properties {
_Color ("Main Color", Color) = (.5,.5,.5,1)
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" "Queue"="Transparent" }
Pass {
Name "BASE"
Blend SrcAlpha OneMinusSrcAlpha
//Blend DstColor SrcColor
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
sampler2D _MainTex;
float4 _MainTex_ST;
float4 _Color;
struct appdata {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
float3 normal : NORMAL;
};
struct v2f {
float4 pos : POSITION;
float2 texcoord : TEXCOORD0;
};
v2f vert (appdata v)
{
v2f o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}
float4 frag (v2f i) : COLOR
{
float4 col = _Color * tex2D(_MainTex, i.texcoord);
return float4(2.0f * col.rgb, col.a);
}
ENDCG
}
}
SubShader {
Tags { "RenderType"="Opaque" "Queue"="Transparent"}
Pass {
Name "BASE"
SetTexture [_MainTex] {
constantColor [_Color]
Combine texture * constant
}
}
}
Fallback "VertexLit"
}
ため
このシェーダこのシェーダ、シェーダ上記2つのパス、第1の延伸及び輪郭を描画し、正面を間引きます。
Shader "TFTM/Outline/Basic Outline-Alpha" { Properties { _Color ("Main Color", Color) = (.5,.5,.5,1) _OutlineColor ("Outline Color", Color) = (0,0,0,1) _Outline ("Outline width", Range (0, 0.02)) = 0 _MainTex ("Base (RGB)", 2D) = "white" { } } CGINCLUDE #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; }; struct v2f { float4 pos : POSITION; float4 color : COLOR; }; uniform float _Outline; uniform float4 _OutlineColor; v2f vert(appdata v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); float2 offset = TransformViewToProjection(norm.xy); o.pos.xy += offset * o.pos.z * _Outline; o.color = _OutlineColor; return o; } ENDCG SubShader { Tags { "RenderType"="Opaque" "Queue"="Transparent" } UsePass "TFTM/Outline/Basic-Alpha/BASE" Pass { Name "OUTLINE" Tags { "LightMode" = "Always" } Cull Front ZWrite On ColorMask RGB Blend DstColor SrcColor // 2x Multiplicative CGPROGRAM #pragma vertex vert #pragma fragment frag half4 frag(v2f i) :COLOR { return i.color ; } ENDCG } } SubShader { Tags { "RenderType"="Opaque" "Queue"="Transparent"} UsePass "TFTM/Outline/Basic-Alpha/BASE" Pass { Name "OUTLINE" Tags { "LightMode" = "Always" } Cull Front ZWrite On ColorMask RGB Blend DstColor SrcColor // 2x Multiplicative CGPROGRAM #pragma vertex vert #pragma exclude_renderers shaderonly ENDCG SetTexture [_MainTex] { combine primary } } } Fallback "TFTM/Outline/Basic-Alpha" }
100%ではありませんが、変更ログには「Shaders:レンダーターゲットごとのブレンドモード」が記載されています。新しいシェーダーシンタックス: "Blend N Src Dst"、 "BlendOp N Op"、 "ColorMask Mask N"(Nはレンダーターゲットインデックス(0..7)です)。この機能は、DX11/12、GLCore、Metal、PS4.'で動作し、シェーダに影響する可能性があります。 –
私はユニティ5.5の変更ログについて聞いたが、上記のシェーダに影響するかどうかはわからない。 –
上記の引用された変更を考慮すると、ブレンドの構文変更が記述されています。そして再び、私はシェイダーの英雄ではありません。 –