Advertisement
tonynogo

Demo 51 - Discard faces

Jul 6th, 2017
3,364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "Custom/FrontFaces"
  2. {
  3.     Properties
  4.     {
  5.         _MainTex ("Main Texture", 2D) = "white" {}
  6.         _ScalarVal ("Value", Range(0.0, 1.0)) = 0.0
  7.     }
  8.     SubShader
  9.     {
  10.         Tags { "RenderType"="Opaque" }
  11.         Pass {
  12.             CGPROGRAM
  13.             #pragma vertex vert
  14.             #pragma fragment frag
  15.             #include "UnityCG.cginc"
  16.  
  17.             struct v2f {
  18.                 float4 pos : SV_POSITION;
  19.                 half2 uv : TEXCOORD0;
  20.                 fixed val : TEXCOORD1;
  21.             };
  22.  
  23.             sampler2D _MainTex;
  24.             float4 _MainTex_ST;
  25.             half _ScalarVal;
  26.  
  27.             v2f vert(appdata_base v) {
  28.                 v2f o;
  29.                 float4 worldpos = mul(unity_ObjectToWorld, v.vertex);
  30.                 o.pos = mul(UNITY_MATRIX_VP, worldpos);
  31.                 o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
  32.  
  33.                 float3 worldnormal = normalize(mul(v.normal, (float3x3)unity_WorldToObject));
  34.                
  35.                 if(dot(worldnormal, normalize(_WorldSpaceCameraPos.xyz - worldpos.xyz)) > _ScalarVal)
  36.                     o.val = 1;
  37.                 else
  38.                     o.val = 0;
  39.                 return o;
  40.             }
  41.  
  42.             fixed4 frag(v2f i) : SV_Target {
  43.                 if(i.val < 0.99) discard;
  44.                 fixed4 col = tex2D(_MainTex, i.uv);
  45.                 return col;
  46.             }
  47.  
  48.             ENDCG
  49.         }
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement