1Shader "Custom/GradientBackground"
5 _TopColor ("Top Color", Color) = (0.06, 0.06, 0.18, 1)
6 _BottomColor ("Bottom Color", Color) = (0.01, 0.01, 0.04, 1)
7 _VignetteAmount("Vignette Strength", Range(0,4)) = 1.2
8 _VignetteOffsetY("Vignette Center Y", Range(0,1)) = 0.45
13 #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch
20 "RenderPipeline" = "HDRenderPipeline"
21 "RenderType" = "Opaque"
22 "Queue" = "Geometry-100"
25 // ---- Forward pass -----------------------------------------------
29 Tags { "LightMode" = "ForwardOnly" }
39 #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
40 #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
42 CBUFFER_START(UnityPerMaterial)
45 float _VignetteAmount;
46 float _VignetteOffsetY;
51 float3 positionOS : POSITION;
52 float2 uv : TEXCOORD0;
53 UNITY_VERTEX_INPUT_INSTANCE_ID
58 float4 positionCS : SV_POSITION;
59 float2 uv : TEXCOORD0;
60 UNITY_VERTEX_OUTPUT_STEREO
63 Varyings Vert(Attributes input)
66 UNITY_SETUP_INSTANCE_ID(input);
67 UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
68 output.positionCS = TransformObjectToHClip(input.positionOS);
73 float4 Frag(Varyings input) : SV_Target
75 float3 color = lerp(_BottomColor.rgb, _TopColor.rgb, input.uv.y);
78 float2 d = input.uv - float2(0.5, _VignetteOffsetY);
79 d.x *= 0.55; // compensate for wide aspect
80 float vignette = 1.0 - saturate(dot(d, d) * _VignetteAmount * 3.5);
81 color *= lerp(0.25, 1.0, vignette);
83 return float4(color, 1.0);
88 // ---- Depth prepass -----------------------------------------------
92 Tags { "LightMode" = "DepthOnly" }
101 #pragma fragment Frag
103 #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
104 #include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
106 struct Attributes { float3 positionOS : POSITION; };
107 struct Varyings { float4 positionCS : SV_POSITION; };
109 Varyings Vert(Attributes i)
112 o.positionCS = TransformObjectToHClip(i.positionOS);
116 void Frag(Varyings i) {}