title: How to convert surface shader to Vertex/Fragment code in Unity?
body: <p>I'm wondering how I can convert this surface shader code to Vertex/Fragment pragma:</p>
  
  <pre><code>Shader "Custom/Diamond Opaque Test" {
      Properties {
          _Color ("Main Color", Color) = (1,1,1,1)
          _SpecColor ("Specular Color", Color) = (0.5,0.5,0.5,1)
          _Shininess ("Shininess", Range (0.01, 1)) = 0.078125
          _RimPower ("Rim Power", Range(0,8.0)) = 3.0
          _ReflectColor ("Reflection Color", Color) = (1,1,1,0.5)
          [NoScaleOffset] _Cube ("Cubemap", CUBE) = "" {}
      }
  
      SubShader {
  
          CGPROGRAM
          #pragma surface surf BlinnPhong
  
          struct Input {
              float3 worldRefl;
              float3 viewDir;
          };
  
          samplerCUBE _Cube;
          fixed4 _Color;
          fixed4 _ReflectColor;
          half _Shininess;
          half _RimPower;
  
          void surf (Input IN, inout SurfaceOutput o) {
              o.Albedo = _Color.rgb;
              o.Gloss = _Color.a;
              o.Specular = _Shininess;
              half rim = saturate(dot (normalize(IN.viewDir), o.Normal));
              o.Emission = texCUBE (_Cube, IN.worldRefl).rgb * _ReflectColor.rgb * pow(rim,_RimPower);;
          }
          ENDCG
      } 
      FallBack "Mobile/Diffuse"
  }
  </code></pre>
  
  <p>The shader code above is the red gem on the left of the picture below:</p>
  
  <p><a href="https://i.stack.imgur.com/bVOiZ.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/bVOiZ.jpg" alt="no shadow"></a></p>
  
  <p>My goal is to look similar to the gem on the right. I have a couple of challenges along the way. The gem on the left is opaque and accepts shadows. The gem on the right has front face transparency but not the back. This however does not accept shadows. I had to make the gem on the let BlinnPhong so it can cast and receive shadows.</p>
  
  <p><a href="https://i.stack.imgur.com/WpD8S.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/WpD8S.jpg" alt="shadow"></a></p>
  
  <p>Is it possible to create different controls for the front and back face transparency? Also is there a way for transparent objects to accept shadows? I wanted to add outlines to the gem so it can be seen farther away. Is there a way to add outlines within the same Pass or does it have to have its own separate Pass? Also, how can you darken the received shadow? Will all these demands tax the hell out of the GPU? The game is for a mobile platform.</p>
  
  <p>I am a complete beginner in CG Programming. My first step is to figure out of the translate surface programming to vertex/fragment. Any examples would be extremely grateful. </p>
  
  <p>I did purchase a couple of gem assets in the asset store, but some of them can cast shadows but can't receive or can't cast or receive at all. What gives? The gem shader on the right is from one of the purchased assets from the asset store. I don't want to share their shader script on this site without their permission.</p>