Коллиматорный прицел (шейдер)

Лучший способ помочь другим, поделиться своими находками.

Коллиматорный прицел (шейдер)

Сообщение waruiyume 11 июл 2014, 00:15

Синтаксис:
Используется glsl
Shader "Cg/ReflectorSight"{
Properties
{
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _ReticleSize("ReticleSize", float) = 2.0
}

SubShader
{
        Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
        Blend SrcAlpha One
       
       
        Pass
        {  
                CGPROGRAM
                        #pragma vertex vert
                        #pragma fragment frag
                       
                        #include "UnityCG.cginc"

                        struct appdata_t
                        {
                                float4 vertex : POSITION;
                        };

                        struct v2f
                        {
                                float4 vertex : SV_POSITION;
                                half2 texcoord : TEXCOORD0;
                        };

                        sampler2D _MainTex;
                        float _ReticleSize;
                       
                        v2f vert (appdata_t v)
                        {
                                v2f o;
                                o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
                                o.texcoord = v.vertex.xy*_ReticleSize-mul((float3x3)_World2Object, _WorldSpaceCameraPos-mul(_Object2World, float4(0,0,0,1))).xy*_ReticleSize+float2(0.5, 0.5);
                                return o;
                        }
                       
                        fixed4 frag (v2f i) : COLOR
                        {
                                fixed4 col = tex2D(_MainTex, i.texcoord);
                                return col;
                        }
                ENDCG
        }
}

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

Re: Коллиматорный прицел (шейдер)

Сообщение Neodrop 11 июл 2014, 00:38

(3A4OT)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Коллиматорный прицел (шейдер)

Сообщение nollin 12 фев 2016, 09:26

Привет! А есть фикс данного шейдера для Unity 5?
nollin
UNец
 
Сообщения: 5
Зарегистрирован: 14 апр 2014, 16:59

Re: Коллиматорный прицел (шейдер)

Сообщение waruiyume 12 фев 2016, 10:58

Так, вроде, не плющит.
Никто не знает, как получить не масштабированное положение вершин в локальном пространстве?

Синтаксис:
Используется glsl
Shader "Cg/ReflectorSight"{
Properties
{
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _ReticleSize("ReticleSize", float) = 2.0
}

SubShader
{
        Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
        Blend SrcAlpha One
       
       
        Pass
        {  
                CGPROGRAM
                        #pragma vertex vert
                        #pragma fragment frag
                       
                        #include "UnityCG.cginc"

                        struct appdata_t
                        {
                                float4 vertex : POSITION;
                        };

                        struct v2f
                        {
                                float4 vertex : SV_POSITION;
                                half2 texcoord : TEXCOORD0;
                        };

                        sampler2D _MainTex;
                        float _ReticleSize;
                       
                        v2f vert (appdata_t v)
                        {
                                v2f o;
                                o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
                               

                                float xScale = length(((float3x3)_World2Object)[1]);
                                float yScale = length(((float3x3)_World2Object)[0]);
                               
                                //o.texcoord = (v.vertex.xy*float2(xScale, yScale))+float2(0.5, 0.5);
                                o.texcoord = (v.vertex.xy*float2(xScale, yScale))*_ReticleSize-mul((float3x3)_World2Object, _WorldSpaceCameraPos-mul(_Object2World, float4(0,0,0,1))).xy*_ReticleSize*float2(xScale, yScale)+float2(0.5, 0.5);
                                //o.texcoord = v.vertex.xy*_ReticleSize-mul((float3x3)_World2Object, _WorldSpaceCameraPos-mul(_Object2World, float4(0,0,0,1))).xy*_ReticleSize+float2(0.5, 0.5);
                                return o;
                        }
                       
                        fixed4 frag (v2f i) : COLOR
                        {
                                fixed4 col = tex2D(_MainTex, i.texcoord);
                                return col;
                        }
                ENDCG
        }
}

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


Вернуться в Исходники (Копилка)

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

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