[Shader 着色器]边缘高光

来源:互联网 发布:京东商城首页淘宝 编辑:程序博客网 时间:2024/04/19 18:47

    图片:未命名.jpg

    图片:QQ截图20120830125443.png


    先上图,等会再将研究心得发布,如果想一起研究我有源代码,要的回复
     附上shader代码:
     
    Shader "Toon/Basic Outline" {
        Properties {
            _Color ("Main Color", Color) = (.5,.5,.5,1)
            _OutlineColor ("Outline Color", Color) = (0,1,0,1)
            _Outline ("Outline width", Range (0.005, 0.01)) = .001
            _MainTex ("Texture", 2D) = "white" {}
                    _BumpMap ("Bumpmap", 2D) = "bump" {}
            }
     
        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
            }
        }
     
        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 exclude_renderers shaderonly
                ENDCG
                SetTexture [_MainTex] { combine primary }
                        }
        }
    SubShader {
          Tags { "RenderType" = "Opaque" }
          CGPROGRAM
          #pragma surface surf Lambert
          struct Input {
            float2 uv_MainTex;
            float2 uv_BumpMap;
          };
          sampler2D _MainTex;
          sampler2D _BumpMap;
          void surf (Input IN, inout SurfaceOutput o) {
            o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
            o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap));
          }
          ENDCG
        }
     
         Fallback "Diffuse"
    }
     
    原创粉丝点击