Guest User

Grid.shader

a guest
Jan 12th, 2020
664
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "Custom/Grid"
  2. {
  3.     Properties
  4.     {
  5.       _GridThickness ("Grid Thickness", Float) = 0.01
  6.       _GridSpacing ("Grid Spacing", Float) = 10.0
  7.       _GridColour ("Grid Colour", Color) = (0.5, 0.5, 0.5, 0.5)
  8.       _BaseColour ("Base Colour", Color) = (0.0, 0.0, 0.0, 0.0)
  9.     }
  10.  
  11.     SubShader {
  12.       Tags { "Queue" = "Transparent" }
  13.  
  14.       Pass {
  15.         ZWrite Off
  16.         Blend SrcAlpha OneMinusSrcAlpha
  17.      
  18.         CGPROGRAM
  19.      
  20.         // Define the vertex and fragment shader functions
  21.         #pragma vertex vert
  22.         #pragma fragment frag
  23.      
  24.         // Access Shaderlab properties
  25.         uniform float _GridThickness;
  26.         uniform float _GridSpacing;
  27.         uniform float4 _GridColour;
  28.         uniform float4 _BaseColour;
  29.      
  30.         // Input into the vertex shader
  31.         struct vertexInput
  32.         {
  33.             float4 vertex : POSITION;
  34.         };
  35.  
  36.         // Output from vertex shader into fragment shader
  37.         struct vertexOutput
  38.         {
  39.           float4 pos : SV_POSITION;
  40.           float4 worldPos : TEXCOORD0;
  41.         };
  42.      
  43.         // VERTEX SHADER
  44.         vertexOutput vert(vertexInput input)
  45.         {
  46.           vertexOutput output;
  47.           output.pos = UnityObjectToClipPos(input.vertex);
  48.           // Calculate the world position coordinates to pass to the fragment shader
  49.           output.worldPos = mul(unity_ObjectToWorld, input.vertex);
  50.           return output;
  51.         }
  52.  
  53.         // FRAGMENT SHADER
  54.         float4 frag(vertexOutput input) : COLOR
  55.         {
  56.           if (frac(input.worldPos.x/_GridSpacing) < _GridThickness || frac(input.worldPos.z/_GridSpacing) < _GridThickness)
  57.             return _GridColour;
  58.           else
  59.             return _BaseColour;
  60.         }
  61.     ENDCG
  62.     }
  63.   }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment