Shader "Instanced/DustShader" { Properties { _Color ("Colour", Color) = (1,1,1,1) } SubShader { Tags {"Queue"="Geometry" "IgnoreProjector"="True" "RenderType"="Transparent"} ZWrite Off Lighting Off Fog { Mode Off } Blend SrcAlpha OneMinusSrcAlpha Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase nolightmap nodirlightmap nodynlightmap novertexlight #pragma target 4.5 #include "UnityCG.cginc" #include "UnityLightingCommon.cginc" #include "AutoLight.cginc" float4 _Color; #if SHADER_TARGET >= 45 StructuredBuffer positionBuffer; #endif struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; v2f vert (appdata_full v, uint instanceID : SV_InstanceID) { #if SHADER_TARGET >= 45 float4 data = positionBuffer[instanceID]; #else float4 data = 0; #endif float3 localPosition = v.vertex.xzy * data.w; float3 worldPosition = data.xyz + localPosition; worldPosition.y += worldPosition.z; worldPosition.z = 0; v2f o; o.pos = mul(UNITY_MATRIX_VP, float4(worldPosition, 1.0f)); o.uv = v.texcoord; return o; } fixed4 frag (v2f i) : SV_Target { float2 offsetFromCentre = 0.5 - i.uv; float r = length(offsetFromCentre) * 2; float alpha = smoothstep(1,0.5,r); //float alpha = max(0, 1 - (length(offsetFromCentre) * 2)); //alpha = 1; // float a = min(0.1f, _Color.a); fixed4 col = float4(_Color.rgb, alpha * _Color.a); return col; } ENDCG } } }