Особый шейдер

Шейдерлаб (fixed function pipeline) и cg\glsl шейдеры для OpenGL ES 2.0 для мобилок

Особый шейдер

Сообщение mysterio 17 май 2017, 12:02

Не знаю как название сделать, как и реализовать..
В общем, имеем Sprite у которого определенная текстура.
И необходимо, чтобы в независимости от скейла Sprite'а текстура выглядела одинаково.
Пример:
Изображение
Возможно ли так сделать?
mysterio
UNIт
 
Сообщения: 50
Зарегистрирован: 28 мар 2017, 16:40

Re: Особый шейдер

Сообщение waruiyume 17 май 2017, 12:32

Использовать мировые координаты в качестве текстурных.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Особый шейдер

Сообщение mysterio 17 май 2017, 12:42

Ок. Использовать мировые.. А пример можно? )
mysterio
UNIт
 
Сообщения: 50
Зарегистрирован: 28 мар 2017, 16:40

Re: Особый шейдер

Сообщение waruiyume 19 май 2017, 01:52

Работать будет только в 5.6
Синтаксис:
Используется glsl
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)

Shader "Sprites/Sprites-WorldUV"
{
        Properties
        {
                [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
                _Color ("Tint", Color) = (1,1,1,1)
                [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
                [HideInInspector] _RendererColor ("RendererColor", Color) = (1,1,1,1)
                [HideInInspector] _Flip ("Flip", Vector) = (1,1,1,1)
                [PerRendererData] _AlphaTex ("External Alpha", 2D) = "white" {}
                [PerRendererData] _EnableExternalAlpha ("Enable External Alpha", Float) = 0
        }

        SubShader
        {
                Tags
                {
                        "Queue"="Transparent"
                        "IgnoreProjector"="True"
                        "RenderType"="Transparent"
                        "PreviewType"="Plane"
                        "CanUseSpriteAtlas"="True"
                }

                Cull Off
                Lighting Off
                ZWrite Off
                Blend One OneMinusSrcAlpha

                Pass
                {
                CGPROGRAM
                        #pragma vertex Vert
                        #pragma fragment SpriteFrag
                        #pragma target 2.0
                        #pragma multi_compile_instancing
                        #pragma multi_compile _ PIXELSNAP_ON
                        #pragma multi_compile _ ETC1_EXTERNAL_ALPHA
                        #include "UnitySprites.cginc"
                       

                        v2f Vert(appdata_t IN)
                        {
                                v2f OUT;

                                UNITY_SETUP_INSTANCE_ID (IN);
                                UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);

                        #ifdef UNITY_INSTANCING_ENABLED
                                IN.vertex.xy *= _Flip.xy;
                        #endif

                                OUT.vertex = UnityObjectToClipPos(IN.vertex);
                                OUT.texcoord = mul(unity_ObjectToWorld, IN.vertex.xy);
                                OUT.color = IN.color * _Color * _RendererColor;

                                #ifdef PIXELSNAP_ON
                                OUT.vertex = UnityPixelSnap (OUT.vertex);
                                #endif

                                return OUT;
                        }
                       
                       
                ENDCG
                }
        }
}
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону


Вернуться в Mobile shaders

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

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