12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- //https://github.com/keijiro/UnitySkyboxShaders/
- Shader "Lux URP/Gradient Sky"
- {
- Properties
- {
- [Header(Surface Inputs)]
- [Space(8)]
- [HDR] _GroundColor ("Base Color", Color) = (1,1,1,1)
- [HDR] _TopColor ("Top Color", Color) = (1,1,1,1)
- _Intensity ("Intensity", Range (0, 1)) = 1
- [Space(5)]
- _FallOff ("Fall Off", Range (0, 16)) = 1.0
- _Yaw ("Yaw", Range (-3.14159, 3.14159)) = 0
- _Pitch ("Pitch", Range (-3.14159, 3.14159)) = 0
-
- }
- SubShader
- {
- Tags
- {
- "RenderPipeline" = "UniversalPipeline"
- "RenderType" = "Background"
- "Queue" = "Background"
- }
- Pass
- {
- Name "Unlit"
- //Tags{"LightMode" = "UniversalForward"}
- //Blend SrcAlpha OneMinusSrcAlpha
- Cull Back
- ZWrite Off
- HLSLPROGRAM
- // Required to compile gles 2.0 with standard srp library
- #pragma prefer_hlslcc gles
- #pragma exclude_renderers d3d11_9x
- #pragma target 2.0
- #pragma vertex vert
- #pragma fragment frag
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
-
- CBUFFER_START(UnityPerMaterial)
- half4 _GroundColor;
- half4 _TopColor;
- half _FallOff;
- half _Yaw;
- half _Pitch;
- half _Intensity;
- CBUFFER_END
- struct VertexInput
- {
- float4 vertex : POSITION;
- float3 uv : TEXCOORD0;
- };
- struct VertexOutput
- {
- float4 positionCS : SV_POSITION;
- UNITY_VERTEX_OUTPUT_STEREO
- float3 uv : TEXCOORD0;
- float3 dir : TEXCOORD1;
- };
- VertexOutput vert (VertexInput v)
- {
- VertexOutput output = (VertexOutput)0;
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
- output.positionCS = TransformObjectToHClip(v.vertex.xyz);
- output.uv = v.uv;
- half sinPitch, cosPitch, sinYaw, cosYaw;
- sincos (_Pitch, sinPitch, cosPitch);
- sincos (_Yaw, sinYaw, cosYaw);
- output.dir = half3(sinPitch * sinYaw, cosPitch, sinPitch * cosYaw);
- return output;
- }
- half4 frag (VertexOutput input ) : SV_Target
- {
- half gradient = dot( normalize(float3(input.uv.xyz)), input.dir) * 0.5h + 0.5h;
- half4 col = lerp(_GroundColor, _TopColor, pow(abs(gradient), _FallOff)) * _Intensity;
- return half4(col.xyz, 1.0h);
- }
- ENDHLSL
- }
- }
- FallBack "Hidden/InternalErrorShader"
- CustomEditor "LuxURPUniversalCustomShaderGUI"
- }
|