//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" }