Shader "SkyboxPlus/Gradients"
|
|
{
|
|
Properties
|
|
{
|
|
[HDR] _BaseColor("Base Color", Color) = (0.1, 0.1, 0.1)
|
|
[Gamma] _Exposure("Exposure", Range(0, 8)) = 1
|
|
|
|
[Toggle] _Switch2("Gradient 2", Float) = 1
|
|
[Toggle] _Switch3("Gradient 3", Float) = 1
|
|
[Toggle] _Switch4("Gradient 4", Float) = 1
|
|
|
|
_Direction1("Direction 1", Vector) = (0, 1, 0)
|
|
_Direction2("Direction 2", Vector) = (0.5, 1, 0)
|
|
_Direction3("Direction 3", Vector) = (-0.3, -1, -0.2)
|
|
_Direction4("Direction 4", Vector) = (0, 1, 0)
|
|
|
|
[HDR] _Color1("Color 1", Color) = (0.16, 0.18, 0.19)
|
|
[HDR] _Color2("Color 2", Color) = (0.26, 0.28, 0.21)
|
|
[HDR] _Color3("Color 3", Color) = (0.15, 0.15, 0.12)
|
|
[HDR] _Color4("Color 4", Color) = (1.00, 0.99, 0.95)
|
|
|
|
_Exponent1("Exponent 1", Range(1, 20)) = 1
|
|
_Exponent2("Exponent 2", Range(1, 20)) = 1
|
|
_Exponent3("Exponent 3", Range(1, 20)) = 1
|
|
_Exponent4("Exponent 4", Range(1, 20)) = 20
|
|
|
|
[HideInInspector] _NormalizedVector1("-", Vector) = (0, 1, 0)
|
|
[HideInInspector] _NormalizedVector2("-", Vector) = (0, 1, 0)
|
|
[HideInInspector] _NormalizedVector3("-", Vector) = (0, 1, 0)
|
|
[HideInInspector] _NormalizedVector4("-", Vector) = (0, 1, 0)
|
|
}
|
|
|
|
CGINCLUDE
|
|
|
|
#pragma shader_feature _SWITCH2_ON
|
|
#pragma shader_feature _SWITCH3_ON
|
|
#pragma shader_feature _SWITCH4_ON
|
|
|
|
#include "UnityCG.cginc"
|
|
|
|
half3 _BaseColor;
|
|
half _Exposure;
|
|
|
|
half3 _NormalizedVector1;
|
|
half3 _NormalizedVector2;
|
|
half3 _NormalizedVector3;
|
|
half3 _NormalizedVector4;
|
|
|
|
half3 _Color1;
|
|
half3 _Color2;
|
|
half3 _Color3;
|
|
half3 _Color4;
|
|
|
|
half _Exponent1;
|
|
half _Exponent2;
|
|
half _Exponent3;
|
|
half _Exponent4;
|
|
|
|
struct appdata_t {
|
|
float4 vertex : POSITION;
|
|
};
|
|
|
|
struct v2f {
|
|
float4 vertex : SV_POSITION;
|
|
float3 texcoord : TEXCOORD0;
|
|
};
|
|
|
|
v2f vert(appdata_t v)
|
|
{
|
|
v2f o;
|
|
o.vertex = UnityObjectToClipPos(v.vertex);
|
|
o.texcoord = v.vertex.xyz;
|
|
return o;
|
|
}
|
|
|
|
half4 frag(v2f i) : SV_Target
|
|
{
|
|
half3 d = normalize(i.texcoord.xyz);
|
|
half3 c = _BaseColor;
|
|
c += _Color1 * pow((dot(d, _NormalizedVector1) + 1) * 0.5, _Exponent1);
|
|
#ifdef _SWITCH2_ON
|
|
c += _Color2 * pow((dot(d, _NormalizedVector2) + 1) * 0.5, _Exponent2);
|
|
#endif
|
|
#ifdef _SWITCH3_ON
|
|
c += _Color3 * pow((dot(d, _NormalizedVector3) + 1) * 0.5, _Exponent3);
|
|
#endif
|
|
#ifdef _SWITCH4_ON
|
|
c += _Color4 * pow((dot(d, _NormalizedVector4) + 1) * 0.5, _Exponent4);
|
|
#endif
|
|
return half4(c * _Exposure, 1);
|
|
}
|
|
|
|
ENDCG
|
|
|
|
SubShader
|
|
{
|
|
Tags { "Queue"="Background" "RenderType"="Background" "PreviewType"="Skybox" }
|
|
Cull Off ZWrite Off
|
|
Pass
|
|
{
|
|
CGPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
ENDCG
|
|
}
|
|
}
|
|
Fallback Off
|
|
CustomEditor "SkyboxPlus.GradientsMaterialEditor"
|
|
}
|