Проблема со скроллом спрайта на андроиде

Шейдеры и все-все-все.

Проблема со скроллом спрайта на андроиде

Сообщение Cylau 05 май 2021, 17:55

Всем привет, столкнулся с непонятной для меня проблемой. Я написал шейдер, который скроллит спрайт по У и в редакторе и на большинстве девайсах всё работает нормально, но на слабеньком Huawei Y5 II Black (CUN-U29), который я использую для теста производительности, спрайты со временем начинают растягиваться. Т.е. сначала всё нормально, но с каждой секундой их растягивает всё сильнее.
Вот как выглядит оригинал
Скрытый текст:
Изображение

И вот, что происходит с ним спустя где-то минуту (косые полоски это партиклы дождя)
Скрытый текст:
Изображение

Шейдер, который использую
Синтаксис:
Используется javascript
Shader "Sprites/Scroll"
{
        Properties
        {
        [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
        _Color ("Tint", Color) = (1,1,1,1)
        }
        SubShader
        {
                Tags
                {
                        "Queue"="Transparent-1"
                        "IgnoreProjector"="True"
                        "RenderType"="Transparent"
                        "PreviewType"="Plane"
                        "CanUseSpriteAtlas"="True"
                }

                Cull Off
                Lighting Off
                ZWrite Off
                Blend One OneMinusSrcAlpha

                Pass
                {
                        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma target 2.0
            #pragma multi_compile_instancing
            #pragma multi_compile _ PIXELSNAP_ON
            #pragma multi_compile _ ETC1_EXTERNAL_ALPHA
                        #include "UnityCG.cginc"

                        struct appdata
                        {
                                float4 vertex : POSITION;
                float4 color : COLOR;
                                float2 uv : TEXCOORD0;
                        };

                        struct v2f
                        {
                                float2 uv : TEXCOORD0;
                fixed4 color : COLOR;
                                float4 vertex : SV_POSITION;
                        };

                        sampler2D _MainTex;
                        float4 _MainTex_ST, _MainTex_TexelSize, _Color;
            float _ScrollOffsetY;

                        v2f vert (appdata IN)
                        {
                                v2f o;
                                o.vertex = UnityObjectToClipPos(IN.vertex);
                                o.uv = TRANSFORM_TEX(IN.uv, _MainTex);
                o.color = IN.color * _Color;
                                return o;
                        }
                       
                        fixed4 frag (v2f IN) : SV_Target
                        {
                                half4 sub;
                                half2 uv = IN.uv;
                half multiplier = 100;
                                half t = (_ScrollOffsetY % _MainTex_TexelSize.w) * (multiplier / _MainTex_TexelSize.w);
                                uv.y = IN.uv.y - t;
                                fixed4 col = IN.color * tex2D(_MainTex, uv);
                col.rgb *= col.a;

                                return col;
                        }
                        ENDCG
                }
               
        }
}


Пробовал делать скролл через SpriteRenderer.material.mainTextureOffset результат тот же.
Wrap Mode выбран Repeat
Может кто-нибудь сталкивался с подобным или есть мысли по этому поводу? Сам я слабо знаком с рендером и его нюансами
Cylau
UNец
 
Сообщения: 7
Зарегистрирован: 25 июн 2019, 00:40

Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6