 				void geom(triangle GS_INPUT tri[3], inout TriangleStream<FS_INPUT> triStream)
 				/*void geom(line GS_INPUT l[2], inout TriangleStream<FS_INPUT> triStream)*/
 				{
-					float3 up = float3(0, 1, 0);
+					/*float3 up = float3(0, 1, 0);
 					float3 look = _WorldSpaceCameraPos - tri[0].pos;
 					look.y = 0;
 					look = normalize(look);
 					float3 right = cross(up, look);
 
 					float halfS = 0.5f * _Size;
-					float halfH = 0.1f * _Size;
+					float halfH = 0.1f * _Size;*/
+
+          float3 a = tri[0].pos;
+          float3 b = tri[1].pos;
+          float3 c = tri[2].pos;
+
+          float3 d = (a + b) / 2.0;
+          float3 e = (c + b) / 2.0;
+          float3 f = (c + a) / 2.0;
+          float3 g = (a + b + c) / 3.0;
+          float3 h = lerp(b, g, 0.8);
+          float3 i = lerp(c, g, 0.8);
+          float3 j = lerp(a, g, 0.8);
+
+          float3 dRight = normalize(a - b);
+          float3 eRight = normalize(b - c);
+          float3 fRight = normalize(c - a);
 
 					float4 v[12];
-					v[0] = float4(tri[0].pos - halfH * up, 1.0f);
-					v[1] = float4(tri[0].pos + halfH * up, 1.0f);
-					v[2] = float4(tri[0].pos - halfH * up, 1.0f);
-					v[3] = float4(tri[0].pos + halfH * up, 1.0f);
-					v[4] = float4(tri[1].pos - halfH * up, 1.0f);
-					v[5] = float4(tri[1].pos + halfH * up, 1.0f);
-					v[6] = float4(tri[1].pos - halfH * up, 1.0f);
-					v[7] = float4(tri[1].pos + halfH * up, 1.0f);
-					v[8] = float4(tri[2].pos - halfH * up, 1.0f);
-					v[9] = float4(tri[2].pos + halfH * up, 1.0f);
-					v[10] = float4(tri[2].pos - halfH * up, 1.0f);
-					v[11] = float4(tri[2].pos + halfH * up, 1.0f);
+
+          // Quad for D -> G
+					v[0] = float4(d + dRight * _Size, 1.0f);
+					v[1] = float4(d - dRight * _Size, 1.0f);
+					v[2] = float4(j, 1.0f);
+					v[3] = float4(h, 1.0f);
+
+          // Quad for E -> G
+					v[4] = float4(e + eRight * _Size, 1.0f);
+					v[5] = float4(e - eRight * _Size, 1.0f);
+					v[6] = float4(h, 1.0f);
+					v[7] = float4(i, 1.0f);
+
+          // Quad for F -> G
+					v[8] = float4(f + fRight * _Size, 1.0f);
+					v[9] = float4(f - fRight * _Size, 1.0f);
+					v[10] = float4(i, 1.0f);
+					v[11] = float4(j, 1.0f);
 
 					float4x4 vp = mul(UNITY_MATRIX_MVP, _World2Object);
 					FS_INPUT pIn = (FS_INPUT)0;

					pIn.pos =  mul(vp, v[7]);
					pIn.uv = tri[2].uv;
					triStream.Append(pIn);

					pIn.pos = mul(vp, v[8]);
					pIn.uv = tri[2].uv;

					pIn.pos =  mul(vp, v[3]);
					pIn.uv = tri[1].uv;
					triStream.Append(pIn);
          triStream.RestartStrip();

					pIn.pos = mul(vp, v[4]);
					pIn.uv = tri[1].uv;
