// Made with Amplify Shader Editor // Available at the Unity Asset Store - http://u3d.as/y3X Shader "ASESampleShaders/OrientationBasedSprite" { Properties { _Texture0("Texture 0", 2D) = "white" {} _Columns("Columns", Float) = 0 _Rows("Rows", Float) = 0 _AnimSpeed("Anim Speed", Float) = 0 [HideInInspector] __dirty( "", Int ) = 1 } SubShader { Tags{ "RenderType" = "Transparent" "Queue" = "Transparent+0" "IgnoreProjector" = "True" "IsEmissive" = "true" } Cull Back CGPROGRAM #include "UnityShaderVariables.cginc" #pragma target 3.5 #pragma surface surf Unlit alpha:fade keepalpha noshadow vertex:vertexDataFunc struct Input { float2 vertexToFrag37_g11; }; uniform sampler2D _Texture0; uniform float _Rows; uniform float _Columns; uniform float _AnimSpeed; void vertexDataFunc( inout appdata_full v, out Input o ) { UNITY_INITIALIZE_OUTPUT( Input, o ); float3 normalizeResult8_g11 = normalize( ( (float4( unity_ObjectToWorld[0][3],unity_ObjectToWorld[1][3],unity_ObjectToWorld[2][3],unity_ObjectToWorld[3][3] )).xyz - _WorldSpaceCameraPos ) ); float temp_output_41_0_g11 = _Rows; float temp_output_28_0_g11 = ( 1.0 / temp_output_41_0_g11 ); float2 uv_TexCoord29_g11 = v.texcoord.xy * float2( 1,1 ) + float2( 0,0 ); float2 temp_output_43_0_g11 = uv_TexCoord29_g11; float temp_output_45_0_g11 = _Columns; float2 appendResult36_g11 = (float2(( ( floor( ( ( atan2( normalizeResult8_g11.z , normalizeResult8_g11.x ) + UNITY_PI ) / ( 6.28318548202515 / temp_output_41_0_g11 ) ) ) * temp_output_28_0_g11 ) + ( temp_output_28_0_g11 * temp_output_43_0_g11.x ) ) , (( ( temp_output_43_0_g11.y + ( temp_output_45_0_g11 - fmod( ( 1.0 + round( ( _AnimSpeed * _Time.y ) ) ) , temp_output_45_0_g11 ) ) ) / temp_output_45_0_g11 )).x)); o.vertexToFrag37_g11 = appendResult36_g11; //Calculate new billboard vertex position and normal; float3 upCamVec = float3( 0, 1, 0 ); float3 forwardCamVec = -normalize ( UNITY_MATRIX_V._m20_m21_m22 ); float3 rightCamVec = normalize( UNITY_MATRIX_V._m00_m01_m02 ); float4x4 rotationCamMatrix = float4x4( rightCamVec, 0, upCamVec, 0, forwardCamVec, 0, 0, 0, 0, 1 ); v.normal = normalize( mul( float4( v.normal , 0 ), rotationCamMatrix )); //This unfortunately must be made to take non-uniform scaling into account; //Transform to world coords, apply rotation and transform back to local; v.vertex = mul( v.vertex , unity_ObjectToWorld ); v.vertex = mul( v.vertex , rotationCamMatrix ); v.vertex = mul( v.vertex , unity_WorldToObject ); } inline fixed4 LightingUnlit( SurfaceOutput s, half3 lightDir, half atten ) { return fixed4 ( 0, 0, 0, s.Alpha ); } void surf( Input i , inout SurfaceOutput o ) { float4 temp_output_634_0 = tex2D( _Texture0, i.vertexToFrag37_g11 ); o.Emission = (temp_output_634_0).rgb; o.Alpha = (temp_output_634_0).a; } ENDCG } CustomEditor "ASEMaterialInspector" } /*ASEBEGIN Version=14402 389;92;1064;673;-14139.54;-334.5905;1.3;True;False Node;AmplifyShaderEditor.RangedFloatNode;626;14580.05,785.025;Float;False;Property;_Columns;Columns;1;0;Create;True;0;3;0;0;0;1;FLOAT;0 Node;AmplifyShaderEditor.RangedFloatNode;625;14597.65,701.9684;Float;False;Property;_Rows;Rows;2;0;Create;True;0;8;0;0;0;1;FLOAT;0 Node;AmplifyShaderEditor.TexturePropertyNode;622;14557.29,493.1182;Float;True;Property;_Texture0;Texture 0;0;0;Create;True;None;f2e0c334ffe42f740b78bcb2d549b12c;False;white;Auto;0;1;SAMPLER2D;0 Node;AmplifyShaderEditor.RangedFloatNode;628;14591.22,877.1921;Float;False;Property;_AnimSpeed;Anim Speed;3;0;Create;True;0;1;0;0;0;1;FLOAT;0 Node;AmplifyShaderEditor.FunctionNode;634;14808.67,629.2892;Float;False;OrientationBasedSprite;-1;;11;1da8bc02c5f4ead4bb2f573150575751;1,46,1;6;40;SAMPLER2D;0.0;False;43;FLOAT2;0,0;False;48;FLOAT;0.0;False;41;FLOAT;1.0;False;45;FLOAT;1.0;False;42;FLOAT;1.0;False;1;COLOR;0 Node;AmplifyShaderEditor.SwizzleNode;623;15142.5,615.1694;Float;False;FLOAT3;0;1;2;3;1;0;COLOR;0.0,0,0,0;False;1;FLOAT3;0 Node;AmplifyShaderEditor.SwizzleNode;624;15158.63,785.073;Float;False;FLOAT;3;1;2;3;1;0;COLOR;0,0,0,0;False;1;FLOAT;0 Node;AmplifyShaderEditor.StandardSurfaceOutputNode;542;15387.83,586.0334;Float;False;True;3;Float;ASEMaterialInspector;0;0;Unlit;ASESampleShaders/OrientationBasedSprite;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;False;False;Back;0;0;False;0;0;False;0;Transparent;0.5;True;False;0;False;Transparent;;Transparent;All;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;False;0;255;255;0;0;0;0;0;0;0;0;False;2;15;10;25;False;0.5;False;2;SrcAlpha;OneMinusSrcAlpha;0;Zero;Zero;OFF;OFF;0;False;0;0,0,0,0;VertexOffset;True;True;Cylindrical;False;Relative;0;;-1;-1;-1;-1;0;0;0;False;0;0;15;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT;0.0;False;4;FLOAT;0.0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT;0.0;False;9;FLOAT;0.0;False;10;FLOAT;0.0;False;13;FLOAT3;0,0,0;False;11;FLOAT3;0,0,0;False;12;FLOAT3;0,0,0;False;14;FLOAT4;0,0,0,0;False;15;FLOAT3;0,0,0;False;0 WireConnection;634;40;622;0 WireConnection;634;41;625;0 WireConnection;634;45;626;0 WireConnection;634;42;628;0 WireConnection;623;0;634;0 WireConnection;624;0;634;0 WireConnection;542;2;623;0 WireConnection;542;9;624;0 ASEEND*/ //CHKSM=A551A09B886D77579E9BD53D127E8AD2B5591790