Advertisement
Guest User

Untitled

a guest
Nov 16th, 2017
492
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.31 KB | None | 0 0
  1. Shader "Unlit/Faceted"
  2. {
  3.     Properties
  4.     {
  5.         _BaseCol("Base colour", Color) = (1,1,1,1)
  6.         _TopCol("Top colour", Color) = (1,1,1,1)
  7.     }
  8.     SubShader
  9.     {
  10.         Tags { "RenderType"="Opaque" }
  11.         LOD 100
  12.  
  13.         Pass
  14.         {
  15.             CGPROGRAM
  16.             #pragma vertex vert
  17.             #pragma fragment frag
  18.             // make fog work
  19.             #pragma multi_compile_fog
  20.            
  21.             #include "UnityCG.cginc"
  22.  
  23.             struct appdata
  24.             {
  25.                 float4 vertex : POSITION;
  26.                 float2 uv : TEXCOORD0;
  27.             };
  28.  
  29.             struct v2f
  30.             {
  31.                 float2 uv : TEXCOORD0;
  32.                 UNITY_FOG_COORDS(1)
  33.                 float4 vertex : SV_POSITION;
  34.                 float3 worldPos: TEXCOORD2;
  35.             };
  36.  
  37.             sampler2D _MainTex;
  38.             float4 _MainTex_ST;
  39.             fixed4 _TopCol, _BaseCol;
  40.            
  41.             v2f vert (appdata v)
  42.             {
  43.                 v2f o;
  44.                 o.vertex = UnityObjectToClipPos(v.vertex);
  45.                 o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  46.                 o.worldPos = mul(unity_ObjectToWorld, v.vertex);
  47.                 UNITY_TRANSFER_FOG(o,o.vertex);
  48.                 return o;
  49.             }
  50.            
  51.             fixed4 frag (v2f i) : SV_Target
  52.             {
  53.                 float3 x = ddx(i.worldPos);
  54.                 float3 y = ddy(i.worldPos);
  55.  
  56.                 float3 norm = -normalize(cross(x,y));
  57.  
  58.                 // Assume basic light shining from above
  59.                 float l = saturate(dot(norm, float3(0,1,0)));
  60.                 fixed4 col = lerp(_BaseCol, _TopCol, l);
  61.  
  62.                 // apply fog
  63.                 UNITY_APPLY_FOG(i.fogCoord, col);
  64.                 return col;
  65.             }
  66.             ENDCG
  67.         }
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement