Shader: ползунок изменения цвета на основе координат текстуры - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь перекрасить заливку ползунка Unity, чтобы она показывала подгруппы, из которых рабочая сила состоит из разных цветов. К сожалению, соотношения не отображаются правильно, или цвет не меняется.

При использовании постоянных значений отношения часто бывают неправильными, при попытке использовать мой массив с плавающей точкой цвета часто даже не меняются.

            uint _SegmentsSize = 0;
            float _Segments[1000];
            uint current = 0;

            fixed4 frag(v2f IN) : SV_Target
            {
                current = 0;
                for (int i = 0; i < _SegmentsSize; i++)
                {
                    if (IN.texcoord.x > _Segments[i]) {
                        current = i+1;
                    }
                }




                fixed4 co = fixed4((current) % 3 == 0 ? 1 : 0, (current + 1) % 3 == 0 ? 1 : 0, (current + 2) % 3 == 0 ? 1 : 0, 1);
                half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color* co;

                #ifdef UNITY_UI_CLIP_RECT
                color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
                #endif

                #ifdef UNITY_UI_ALPHACLIP
                clip(color.a - 0.001);
                #endif

                return color;
            }

на стороне C # (мат - материал)

    mat.SetInt("current", segments.Length);
    mat.SetFloatArray("_Segments", segments);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...