12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- // Sky Studio
- //
- // Author: jason@funly.io
- // Description: Shows rainfall textures on the weather encsolure.
- Shader "Funly/Sky Studio/Weather/Rain Background"
- {
- Properties
- {
- // Near rain texture.
- _NearTex ("Near Rain Texture", 2D) = "black" {}
- _NearRainSpeed ("Near Rain Speed", Range(0, 3)) = .5
- _NearDensity ("Near Rain Density", Range(0, 1)) = .7
- // Far rain texture.
- _FarTex ("Far Rain Texture", 2D) = "black" {}
- _FarRainSpeed("Far Rain Speed", Range(0, 3)) = .75
- _FarDensity("Far Rain Density", Range(0, 1)) = .5
- _TintColor("Tint Color", Color) = (1, 1, 1, 1)
- _Turbulence("Turbulence", Range(0, 1)) = 0
- _TurbulenceSpeed("Turbulence Speed", Range(0, 5)) = .5
- }
- SubShader
- {
- Tags { "RenderType" = "Transparent" "Queue" = "Transparent+10" }
- LOD 100
- Blend OneMinusDstColor One
- Cull Back
- ZWrite Off
- Pass
- {
- CGPROGRAM
- #pragma target 2.0
- #pragma vertex vert
- #pragma fragment frag
-
- #include "UnityCG.cginc"
- struct appdata
- {
- float4 vertex : POSITION;
- float2 uv : TEXCOORD0;
- fixed4 color : COLOR;
- };
- struct v2f
- {
- float4 vertex : SV_POSITION;
- float2 nearUV : TEXCOORD0;
- float2 farUV : TEXCOORD1;
- float strength : COLOR;
- };
- sampler2D _NearTex;
- float4 _NearTex_ST;
- float _NearRainSpeed;
- float _NearDensity;
- sampler2D _FarTex;
- float4 _FarTex_ST;
- float _FarRainSpeed;
- float _FarDensity;
- float4 _TintColor;
- float _Turbulence;
- float _TurbulenceSpeed;
- v2f vert (appdata v)
- {
- v2f o;
- o.strength = v.color.r;
- o.vertex = UnityObjectToClipPos(v.vertex);
- float2 scaledNearUV = TRANSFORM_TEX(v.uv, _NearTex);
- o.nearUV = float2(scaledNearUV.x, scaledNearUV.y + (_Time.y * _NearRainSpeed));
- o.nearUV.x += .2 + (sin((_Time.y) * _TurbulenceSpeed) * _Turbulence);
- float2 scaledFarUV = TRANSFORM_TEX(v.uv, _FarTex);
- o.farUV = float2(scaledFarUV.x, scaledFarUV.y + (_Time.y * _FarRainSpeed));
- return o;
- }
-
- fixed4 frag (v2f i) : SV_Target
- {
- fixed4 nearColor = tex2D(_NearTex, i.nearUV) * _NearDensity;
- fixed4 farColor = tex2D(_FarTex, i.farUV) * _FarDensity;
- return saturate(nearColor + farColor) * i.strength * _TintColor;
- }
-
- ENDCG
- }
- }
- }
|