OutlinedDiffuse

From Unify Community Wiki
Revision as of 18:55, 4 February 2010 by Aaronsullivan (Talk | contribs)

Jump to: navigation, search

Courtesy of "Omega". Regular Diffuse rendering with a toon-style outline.

<shaderlab> Shader "Outlined Diffuse" {

  Properties 
  { 
     _Color ("Main Color", Color) = (.5,.5,.5,1) 
     _OutlineColor ("Outline Color", Color) = (0,1,0,1) 
     _Outline ("Outline width", Range (0.002, 0.03)) = 0.01 
     _MainTex ("Base (RGB)", 2D) = "white" { } 
     //Not needed 
     //_ToonShade ("ToonShader Cubemap(RGB)", CUBE) = "" { Texgen CubeNormal } 
  } 
  SubShader 
  { 
     Tags { "RenderType"="Opaque" } 
     //Minor switch 
     //UsePass "Toon/Basic/BASE" 
     UsePass "Diffuse/BASE" 
     Pass 
     { 
        Name "OUTLINE" 
        Tags { "LightMode" = "Always" } 
         
        CGPROGRAM 
        #pragma vertex vert 
        struct appdata { 
            float4 vertex; 
            float3 normal; 
        }; 
        struct v2f { 
           float4 pos : POSITION; 
           float4 color : COLOR; 
           float fog : FOGC; 
        }; 
        uniform float _Outline; 
        uniform float4 _OutlineColor; 
        v2f vert(appdata v) { 
           v2f o; 
           o.pos = mul(glstate.matrix.mvp, v.vertex); 
           float3 norm = mul ((float3x3)glstate.matrix.modelview[0], v.normal); 
           norm.x *= glstate.matrix.projection[0][0]; 
           norm.y *= glstate.matrix.projection[1][1]; 
           o.pos.xy += norm.xy * o.pos.z * _Outline; 
   
           o.fog = o.pos.z; 
           o.color = _OutlineColor; 
           return o; 
        } 
        ENDCG 
         
        Cull Front 
        ZWrite On 
        ColorMask RGB 
        Blend SrcAlpha OneMinusSrcAlpha 
        //? -Note: I don't remember why I put a "?" here 
        SetTexture [_MainTex] { combine primary } 
     } 
  } 
   
  Fallback "Diffuse" 

} </shaderlab>

Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox