12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- Shader "FlatKit/GradientSkybox" {
- Properties {
- _Color2 ("Top Color", Color) = (0.97, 0.67, 0.51, 0)
- _Color1 ("Bottom Color", Color) = (0, 0.7, 0.74, 0)
- [Space]
- _Intensity ("Intensity", Range (0, 2)) = 1.0
- _Exponent ("Exponent", Range (0, 3)) = 1.0
- [Space]
- _DirectionYaw ("Direction X angle", Range (0, 180)) = 0
- _DirectionPitch ("Direction Y angle", Range (0, 180)) = 0
- [Space]
- _NoiseIntensity ("Noise Intensity", Range (0, 0.25)) = 0.0
- [HideInInspector]
- _Direction ("Direction", Vector) = (0, 1, 0, 0)
- }
- CGINCLUDE
- #include "UnityCG.cginc"
- struct appdata {
- float4 position : POSITION;
- float3 texcoord : TEXCOORD0;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- struct v2f {
- float4 position : SV_POSITION;
- float3 texcoord : TEXCOORD0;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- half4 _Color1;
- half4 _Color2;
- half3 _Direction;
- half _Intensity;
- half _Exponent;
- half _NoiseIntensity;
- v2f vert (appdata v) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- o.position = UnityObjectToClipPos(v.position);
- o.texcoord = v.texcoord;
- return o;
- }
- fixed4 frag (v2f i) : COLOR {
- const half d = dot(normalize(i.texcoord), _Direction) * 0.5f + 0.5f;
- float t = pow(d, _Exponent);
- t += frac(sin(dot(t, float4(12.9898, 78.233, 45.164, 94.673))) * 43758.5453) * _NoiseIntensity;
- return lerp(_Color1, _Color2, t) * _Intensity;
- }
- ENDCG
- SubShader {
- Tags { "RenderType"="Background" "Queue"="Background" }
- Pass {
- ZWrite Off
- Cull Off
- Fog { Mode Off }
- CGPROGRAM
- #pragma fragmentoption ARB_precision_hint_fastest
- #pragma vertex vert
- #pragma fragment frag
- ENDCG
- }
- }
- CustomEditor "GradientSkyboxEditor"
- }
|