Advertisement
BlackWindX

Untitled

Dec 21st, 2023
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2.  
  3. Shader "Outlined/Custom"
  4. {
  5.     Properties
  6.     {
  7.         _Color ("Main Color", Color) = (.5,.5,.5,1)
  8.         _OutlineColor ("Outline Color", Color) = (0,0,0,1)
  9.         _Outline ("Outline width", Range (0, 1)) = .1
  10.         _MainTex ("Base (RGB)", 2D) = "white" { }
  11.     }
  12.    
  13.     CGINCLUDE
  14.     #include "UnityCG.cginc"
  15.  
  16.     struct appdata
  17.     {
  18.         float4 vertex : POSITION;
  19.         float3 normal : NORMAL;
  20.     };
  21.  
  22.     struct v2f
  23.     {
  24.         float4 pos : POSITION;
  25.         float4 color : COLOR;
  26.     };
  27.  
  28.     uniform float _Outline;
  29.     uniform float4 _OutlineColor;
  30.     uniform fixed4 _Color;
  31.  
  32.     v2f vert(appdata v) {
  33.         v2f o;
  34.  
  35.         v.vertex *= (1 + _Outline);
  36.         o.pos = UnityObjectToClipPos(v.vertex);
  37.         o.color = _OutlineColor;
  38.  
  39.         return o;
  40.     }
  41.     ENDCG
  42.  
  43.     SubShader
  44.     {
  45.         CGPROGRAM
  46.         #pragma target 3.0
  47.         #pragma surface surf Lambert
  48.  
  49.         sampler2D _MainTex;
  50.  
  51.         struct Input
  52.         {
  53.             float2 uv_MainTex;
  54.         };
  55.  
  56.         void surf(Input IN, inout SurfaceOutput o)
  57.         {
  58.             fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
  59.             o.Albedo = c.rgb;
  60.             o.Alpha = c.a * _Color.a;
  61.         }
  62.        
  63.         ENDCG
  64.        
  65.         Pass
  66.         {
  67.             Name "OUTLINE"
  68.             Tags
  69.             {
  70.                 //"RenderType" = "Transparent"
  71.                 //"Queue" = "Overlay+1"
  72.                 "LightMode" = "Always"
  73.             }
  74.             Cull Front
  75.             ZWrite On
  76.             ColorMask RGB
  77.             Blend SrcAlpha OneMinusSrcAlpha
  78.  
  79.             CGPROGRAM
  80.             #pragma vertex vert
  81.             #pragma fragment frag
  82.  
  83.             sampler2D _MainTex;
  84.  
  85.             half4 frag(v2f i) : COLOR
  86.             {
  87.                 return i.color;
  88.             }
  89.             ENDCG
  90.         }
  91.     }
  92.  
  93.     SubShader
  94.     {
  95.         CGPROGRAM
  96.         #pragma target 3.0
  97.         #pragma surface surf Lambert
  98.  
  99.         sampler2D _MainTex;
  100.  
  101.         struct Input
  102.         {
  103.             float2 uv_MainTex;
  104.         };
  105.  
  106.         void surf(Input IN, inout SurfaceOutput o)
  107.         {
  108.             fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
  109.             o.Albedo = c.rgb;
  110.             o.Alpha = c.a * _Color.a;
  111.         }
  112.         ENDCG
  113.  
  114.         Pass
  115.         {
  116.             Name "OUTLINE"
  117.             Tags
  118.             {
  119.                 //"RenderType" = "Transparent"
  120.                 //"Queue" = "Overlay+1"
  121.                 "LightMode" = "Always"
  122.             }
  123.             Cull Front
  124.             ZWrite On
  125.             ColorMask RGB
  126.             Blend SrcAlpha OneMinusSrcAlpha
  127.  
  128.             CGPROGRAM
  129.             #pragma target 3.0
  130.             #pragma vertex vert
  131.             #pragma exclude_renderers gles xbox360 ps3
  132.             ENDCG
  133.  
  134.             SetTexture [_MainTex] { combine primary }
  135.         }
  136.     }
  137.  
  138.     Fallback "Diffuse"
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement