Advertisement
Dieton

Look_At_Cam_Billboard.shader

Jun 6th, 2025 (edited)
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "Custom/Look_At_Cam_Billboard"
  2. {
  3.     Properties
  4.     {
  5.         _MainTex ("Texture", 2D) = "white" {}
  6.         _Cutoff ("Alpha Cutoff", Range(0,1)) = 0.5
  7.     }
  8.     SubShader
  9.     {
  10.         Tags {
  11.             "RenderType"="TransparentCutout"
  12.             "Queue"="AlphaTest"  // Changed from "Transparent" to "AlphaTest" for cutout
  13.         }
  14.         LOD 100
  15.  
  16.         Pass
  17.         {
  18.             CGPROGRAM
  19.             #pragma vertex vert
  20.             #pragma fragment frag
  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.                 float4 pos : SV_POSITION;
  33.             };
  34.  
  35.             sampler2D _MainTex;
  36.             float4 _MainTex_ST;
  37.             float _Cutoff;
  38.  
  39.             v2f vert (appdata v)
  40.             {
  41.                 v2f o;
  42.    
  43.                 // Billboard calculation
  44.                 float4 origin = mul(unity_ObjectToWorld, float4(0, 0, 0, 1));
  45.                 float4 viewOrigin = mul(UNITY_MATRIX_V, origin);
  46.    
  47.                 // Calculate view position
  48.                 float4 worldPos = mul(unity_ObjectToWorld, v.vertex);
  49.                 float4 viewPos = float4(viewOrigin.xy + (v.vertex.xy * _MainTex_ST.xy), viewOrigin.z, 1.0);
  50.                 o.pos = mul(UNITY_MATRIX_P, viewPos);
  51.    
  52.                 o.uv = TRANSFORM_TEX(v.uv, _MainTex);
  53.                 return o;
  54.             }
  55.  
  56.             fixed4 frag (v2f i) : SV_Target
  57.             {
  58.                 fixed4 col = tex2D(_MainTex, i.uv);
  59.                 clip(col.a - _Cutoff);  // Better than discard
  60.                 return col;
  61.             }
  62.             ENDCG
  63.         }
  64.     }
  65.     FallBack "Transparent/Cutout/Diffuse"
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement