How to Use the Barymetric Wireframe Shader

I want to have the game render wireframes, and I saw this shader on the wiki. I tried putting it in a .shader but it doesn’t work. On the wiki it said something about mesh.uv but I couldn’t find any info on this. Any help would be appreciated.

I’ve tested the following shader in Unity 4. It will draw a correct wireframe on the standard Unity objects like cubes and planes. Since it draws lines where the texture coordinates are near 0 or 1, it wouldn’t give you the desired result when applied to more complex meshes, but unlike the other solutions offered, it will at least work in simple cases. =)

Shader "Custom/WireFrame"
{
 Properties
 {
   _LineColor ("Line Color", Color) = (1,1,1,1)
   _GridColor ("Grid Color", Color) = (1,1,1,0)
   _LineWidth ("Line Width", float) = 0.2
 }
 SubShader
 {
   Pass
   {
     Tags { "RenderType" = "Transparent" }
     Blend SrcAlpha OneMinusSrcAlpha
     AlphaTest Greater 0.5

     CGPROGRAM
     #pragma vertex vert
     #pragma fragment frag

     uniform float4 _LineColor;
     uniform float4 _GridColor;
     uniform float _LineWidth;

     // vertex input: position, uv1, uv2
     struct appdata
     {
       float4 vertex : POSITION;
       float4 texcoord1 : TEXCOORD0;
       float4 color : COLOR;
     };

     struct v2f
     {
       float4 pos : POSITION;
       float4 texcoord1 : TEXCOORD0;
       float4 color : COLOR;
     };

     v2f vert (appdata v)
     {
       v2f o;
       o.pos = mul( UNITY_MATRIX_MVP, v.vertex);
       o.texcoord1 = v.texcoord1;
       o.color = v.color;
       return o;
     }

     fixed4 frag(v2f i) : COLOR
     {
       fixed4 answer;

       float lx = step(_LineWidth, i.texcoord1.x);
       float ly = step(_LineWidth, i.texcoord1.y);
       float hx = step(i.texcoord1.x, 1.0 - _LineWidth);
       float hy = step(i.texcoord1.y, 1.0 - _LineWidth);

       answer = lerp(_LineColor, _GridColor, lx*ly*hx*hy);

       return answer;
     }
     ENDCG
    }
 } 
 Fallback "Vertex Colored", 1
}

this shader works fine with little fixes (below is full shader)

is just used second UV to draw grid. second UV can be done in rather any 3d modelling app and even in unity programmatically. attach it to primitives like plane or cube to see how it works

Shader "BarycentricWireframeUv1"
{
	Properties
	{
		_LineColor ("Line Color", Color) = (1,1,1,1)
		_GridColor ("Grid Color", Color) = (0,0,0,0)
		_LineWidth ("Line Width", float) = 0.1
	}
	SubShader
	{
        Pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag

			uniform float4 _LineColor;
			uniform float4 _GridColor;
			uniform float _LineWidth;

			// vertex input: position, uv1, uv2
			struct appdata
			{
				float4 vertex : POSITION;
				float4 texcoord1 : TEXCOORD1;
				float4 color : COLOR;
			};

			struct v2f
			{
				float4 pos : POSITION;
				float4 texcoord1 : TEXCOORD1;
				float4 color : COLOR;
			};

			v2f vert (appdata v)
			{
				v2f o;
				o.pos = mul( UNITY_MATRIX_MVP, v.vertex);
				o.texcoord1 = v.texcoord1;
				o.color = v.color;
				return o;
			}

			fixed4 frag(v2f i) : COLOR
			{
				fixed4 answer;
				if (i.texcoord1.x < _LineWidth || i.texcoord1.y < _LineWidth)
				{
					answer = _LineColor;
				}
				else if ((i.texcoord1.x - i.texcoord1.y) < _LineWidth && (i.texcoord1.y - i.texcoord1.x) < _LineWidth)
				{
					answer = _LineColor;
				}
				else
				{
					answer = _GridColor;
				}
				return answer;
			}
			ENDCG
        }
	} 
	Fallback "Vertex Colored", 1
}