Unity UGUI Обрисовать в общих чертах его создание четырехкратных вершин, поэтому я перейду к шейдеру для оптимизации (вершины создаются только один раз), и я хочу сохранить один проход. (один вызов)
Четыре символа, размер шрифта всех символов одинаковый. но этот символьный край выглядит немного маленьким.
Я пишу шейдер вот так
fixed4 frag(v2f IN) : SV_Target
{
fixed4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
float4 pClipRect = float4 (IN.uvOriginXY, IN.uvOriginZW);
color.w *= IsInRect(IN.texcoord, pClipRect);
half4 val = half4(_OutlineColor.x, _OutlineColor.y, _OutlineColor.z, 0);//(r,g,b,0)
//black characters
val.w += SampleAlpha(2, IN);
val.w += SampleAlpha(5, IN);
val.w += SampleAlpha(8, IN);
val.w += SampleAlpha(11, IN);
val.w = clamp(val.w, 0, 1);
//blend
color = (val * (1.0 - color.a)) + (color * color.a);
return color;
}
А нижняя правая картинка создается UGUI. Контур выглядит так, что белый цвет перекрывается черным цветом, Как можноМне это нравится?
Проблема, вероятно, отсюда: color = (val * (1.0 - color.a)) + (color * color.a);
Что я должен сделать, чтобы он выглядел как UGUIOutline? спасибо.