Тун Рамка

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

Тун Рамка

Сообщение gnoblin 05 июн 2011, 23:36

Немного обрезанный стандартный тун шейдер.
Рисует только рамку - для использования можно сдублировать го или наложить второй материал.
Может кому-то пригодится :).

Синтаксис:
Используется glsl
Shader "Toon Basic OutlineOnly" {
        Properties {
                //_Color ("Main Color", Color) = (.5,.5,.5,1)
                _OutlineColor ("Outline Color", Color) = (0,0,0,1)
                _Outline ("Outline width", Range (.002, 0.03)) = .005
                //_MainTex ("Base (RGB)", 2D) = "white" { }
                //_ToonShade ("ToonShader Cubemap(RGB)", CUBE) = "" { Texgen CubeNormal }
        }
       
        CGINCLUDE
        #include "UnityCG.cginc"
       
        struct appdata {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
        };

        struct v2f {
                float4 pos : POSITION;
                float4 color : COLOR;
        };
       
        uniform float _Outline;
        uniform float4 _OutlineColor;
       
        v2f vert(appdata v) {
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP, v.vertex);

                float3 norm   = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal);
                float2 offset = TransformViewToProjection(norm.xy);

                o.pos.xy += offset * o.pos.z * _Outline;
                o.color = _OutlineColor;
                return o;
        }
        ENDCG

        SubShader {
                Tags { "RenderType"="Opaque" }
                //UsePass "Toon/Basic/BASE"
                Pass {
                        Name "OUTLINE"
                        Tags { "LightMode" = "Always" }
                        Cull Front
                        ZWrite On
                        ColorMask RGB
                        Blend SrcAlpha OneMinusSrcAlpha

                        CGPROGRAM
                        #pragma vertex vert
                        #pragma fragment frag
                        half4 frag(v2f i) :COLOR { return i.color; }
                        ENDCG
                }
        }
               
        Fallback "Toon/Basic"
}
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Тун Рамка

Сообщение gnoblin 10 авг 2011, 18:54

Диффуз+рамка в одном шейдере.

Синтаксис:
Используется glsl
Shader "Custom/DiffusePlusRamka" {
        Properties {
                                _Color ("Main Color", Color) = (1,1,1,1)
                                _MainTex ("Base (RGB)", 2D) = "white" {}
                _OutlineColor ("Outline Color", Color) = (0,0,0,1)
                _Outline ("Outline width", Range (.002, 0.03)) = .005
        }
       
        CGINCLUDE
        #include "UnityCG.cginc"
       
        struct appdata {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
        };

        struct v2f {
                float4 pos : POSITION;
                float4 color : COLOR;
        };
       
        uniform float _Outline;
        uniform float4 _OutlineColor;
       
        v2f vert(appdata v) {
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP, v.vertex);

                float3 norm   = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal);
                float2 offset = TransformViewToProjection(norm.xy);

                o.pos.xy += offset * o.pos.z * _Outline;
                o.color = _OutlineColor;
                return o;
        }
        ENDCG

        SubShader {
                Tags { "RenderType"="Opaque" }
                //UsePass "Toon/Basic/BASE"
                Pass {
                        Name "OUTLINE"
                        Tags { "LightMode" = "Always" }
                        Cull Front
                        ZWrite On
                        ColorMask RGB
                        Blend SrcAlpha OneMinusSrcAlpha

                        CGPROGRAM
                        #pragma vertex vert
                        #pragma fragment frag
                        half4 frag(v2f i) :COLOR { return i.color; }
                        ENDCG
                }

                                        Tags { "RenderType"="Opaque" }
                                        LOD 200

                                        CGPROGRAM
                                        #pragma surface surf Lambert

                                        sampler2D _MainTex;
                                        float4 _Color;

                                        struct Input {
                                                float2 uv_MainTex;
                                        };

                                        void surf (Input IN, inout SurfaceOutput o) {
                                                half4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
                                                o.Albedo = c.rgb;
                                                o.Alpha = c.a;
                                        }
                                        ENDCG
        }
        Fallback "VertexLit"
}
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Тун Рамка

Сообщение gnoblin 19 авг 2011, 17:09

Хороший шейдер на тему:
http://www.unifycommunity.com/wiki/inde ... ed_Diffuse
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт


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

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

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