FlagShader.shader 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. Shader "Funly/Flag/UnlitFlag"
  2. {
  3. Properties
  4. {
  5. _MainTex ("Texture", 2D) = "white" {}
  6. _Color ("Color", Color) = (1, 1, 1, 1)
  7. _Speed ("Speed", Range(0, 20)) = 2
  8. _Frequency ("Frequency", Range(0, 20)) = 10
  9. _Amplitude ("Amplitude", Range(0, 1)) = .3
  10. _VerticalDisplacement ("Vertical Displacement", Range(0, 5)) = .5
  11. }
  12. SubShader
  13. {
  14. Tags { "RenderType"="Opaque" "LightMode"="ForwardBase"}
  15. LOD 100
  16. Cull off
  17. Lighting on
  18. Pass
  19. {
  20. CGPROGRAM
  21. #pragma multi_compile_fwdbase
  22. #pragma vertex vert
  23. #pragma fragment frag
  24. #pragma target 3.0
  25. #pragma multi_compile_fwdadd_fullshadows
  26. #include "UnityCG.cginc"
  27. #include "Lighting.cginc"
  28. #include "AutoLight.cginc"
  29. struct appdata
  30. {
  31. float4 vertex : POSITION;
  32. float2 uv : TEXCOORD0;
  33. };
  34. struct v2f
  35. {
  36. float2 uv : TEXCOORD0;
  37. float4 vertex : SV_POSITION;
  38. };
  39. sampler2D _MainTex;
  40. float4 _Color;
  41. float _Frequency;
  42. float _Amplitude;
  43. float _Speed;
  44. float _VerticalDisplacement;
  45. v2f vert (appdata v)
  46. {
  47. v2f o;
  48. o.uv = v.uv;
  49. float zWaveAmount = sin(v.uv.x * _Frequency + (_Time.y * _Speed)) * _Amplitude;
  50. float smoothX = smoothstep(0, 1, o.uv.x);
  51. v.vertex.z += zWaveAmount * smoothX;
  52. v.vertex.y += zWaveAmount * _VerticalDisplacement * smoothX;
  53. o.vertex = UnityObjectToClipPos(v.vertex);
  54. return o;
  55. }
  56. fixed4 frag (v2f i) : SV_Target
  57. {
  58. // sample the texture
  59. fixed4 col = tex2D(_MainTex, i.uv) * _Color;
  60. return col;
  61. }
  62. ENDCG
  63. }
  64. }
  65. Fallback "VertexLit"
  66. }