Skip to content

Commit 4d96d97

Browse files
authored
Merge pull request #8121 from Unity-Technologies/internal/master
Internal/master
2 parents 2fa73b1 + c260eef commit 4d96d97

File tree

721 files changed

+45151
-4059
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

721 files changed

+45151
-4059
lines changed
Lines changed: 364 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,364 @@
1+
Shader "Hidden/Universal/CoreBlit"
2+
{
3+
HLSLINCLUDE
4+
#pragma target 2.0
5+
#pragma editor_sync_compilation
6+
// Core.hlsl for XR dependencies
7+
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
8+
#include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl"
9+
// DebuggingFullscreen.hlsl for URP debug draw
10+
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/DebuggingFullscreen.hlsl"
11+
// Color.hlsl for color space conversion
12+
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
13+
14+
// Specialized blit with URP debug draw support and color space conversion support
15+
half4 FragmentURPBlit(Varyings input, SamplerState blitsampler)
16+
{
17+
half4 color = FragBlit(input, blitsampler);
18+
19+
#ifdef _LINEAR_TO_SRGB_CONVERSION
20+
color = LinearToSRGB(color);
21+
#endif
22+
23+
#if defined(DEBUG_DISPLAY)
24+
half4 debugColor = 0;
25+
float2 uv = input.texcoord;
26+
if (CanDebugOverrideOutputColor(color, uv, debugColor))
27+
{
28+
return debugColor;
29+
}
30+
#endif
31+
32+
return color;
33+
}
34+
ENDHLSL
35+
36+
SubShader
37+
{
38+
Tags{ "RenderPipeline" = "UniversalPipeline" }
39+
40+
// 0: Nearest
41+
Pass
42+
{
43+
ZWrite Off ZTest Always Blend Off Cull Off
44+
Name "Nearest"
45+
46+
HLSLPROGRAM
47+
#pragma vertex Vert
48+
#pragma fragment FragNearest
49+
ENDHLSL
50+
}
51+
52+
// 1: Bilinear
53+
Pass
54+
{
55+
ZWrite Off ZTest Always Blend Off Cull Off
56+
Name "Bilinear"
57+
58+
HLSLPROGRAM
59+
#pragma vertex Vert
60+
#pragma fragment FragBilinear
61+
ENDHLSL
62+
}
63+
64+
// 2: Nearest quad
65+
Pass
66+
{
67+
ZWrite Off ZTest Always Blend Off Cull Off
68+
Name "NearestQuad"
69+
70+
HLSLPROGRAM
71+
#pragma vertex VertQuad
72+
#pragma fragment FragNearest
73+
ENDHLSL
74+
}
75+
76+
// 3: Bilinear quad
77+
Pass
78+
{
79+
ZWrite Off ZTest Always Blend Off Cull Off
80+
Name "BilinearQuad"
81+
82+
HLSLPROGRAM
83+
#pragma vertex VertQuad
84+
#pragma fragment FragBilinear
85+
ENDHLSL
86+
}
87+
88+
// 4: Nearest quad with padding
89+
Pass
90+
{
91+
ZWrite Off ZTest Always Blend Off Cull Off
92+
Name "NearestQuadPadding"
93+
94+
HLSLPROGRAM
95+
#pragma vertex VertQuadPadding
96+
#pragma fragment FragNearest
97+
ENDHLSL
98+
}
99+
100+
// 5: Bilinear quad with padding
101+
Pass
102+
{
103+
ZWrite Off ZTest Always Blend Off Cull Off
104+
Name "BilinearQuadPadding"
105+
106+
HLSLPROGRAM
107+
#pragma vertex VertQuadPadding
108+
#pragma fragment FragBilinear
109+
ENDHLSL
110+
}
111+
112+
// 6: Nearest quad with padding and repeat
113+
Pass
114+
{
115+
ZWrite Off ZTest Always Blend Off Cull Off
116+
Name "NearestQuadPaddingRepeat"
117+
118+
HLSLPROGRAM
119+
#pragma vertex VertQuadPadding
120+
#pragma fragment FragNearestRepeat
121+
ENDHLSL
122+
}
123+
124+
// 7: Bilinear quad with padding and repeat
125+
Pass
126+
{
127+
ZWrite Off ZTest Always Blend Off Cull Off
128+
Name "BilinearQuadPaddingRepeat"
129+
130+
HLSLPROGRAM
131+
#pragma vertex VertQuadPadding
132+
#pragma fragment FragBilinearRepeat
133+
ENDHLSL
134+
}
135+
136+
// 8: Bilinear quad with padding (for OctahedralTexture)
137+
Pass
138+
{
139+
ZWrite Off ZTest Always Blend Off Cull Off
140+
Name "BilinearQuadPaddingOctahedral"
141+
142+
HLSLPROGRAM
143+
#pragma vertex VertQuadPadding
144+
#pragma fragment FragOctahedralBilinearRepeat
145+
ENDHLSL
146+
}
147+
148+
/// Version 4, 5, 6, 7 with Alpha Blending 0.5
149+
// 9: Nearest quad with padding alpha blend (4 with alpha blend)
150+
Pass
151+
{
152+
ZWrite Off ZTest Always Blend DstColor Zero Cull Off
153+
Name "NearestQuadPaddingAlphaBlend"
154+
155+
HLSLPROGRAM
156+
#pragma vertex VertQuadPadding
157+
#pragma fragment FragNearest
158+
#define WITH_ALPHA_BLEND
159+
ENDHLSL
160+
}
161+
162+
// 10: Bilinear quad with padding alpha blend (5 with alpha blend)
163+
Pass
164+
{
165+
ZWrite Off ZTest Always Blend DstColor Zero Cull Off
166+
Name "BilinearQuadPaddingAlphaBlend"
167+
168+
HLSLPROGRAM
169+
#pragma vertex VertQuadPadding
170+
#pragma fragment FragBilinear
171+
#define WITH_ALPHA_BLEND
172+
ENDHLSL
173+
}
174+
175+
// 11: Nearest quad with padding alpha blend repeat (6 with alpha blend)
176+
Pass
177+
{
178+
ZWrite Off ZTest Always Blend DstColor Zero Cull Off
179+
Name "NearestQuadPaddingAlphaBlendRepeat"
180+
181+
HLSLPROGRAM
182+
#pragma vertex VertQuadPadding
183+
#pragma fragment FragNearestRepeat
184+
#define WITH_ALPHA_BLEND
185+
ENDHLSL
186+
}
187+
188+
// 12: Bilinear quad with padding alpha blend repeat (7 with alpha blend)
189+
Pass
190+
{
191+
ZWrite Off ZTest Always Blend DstColor Zero Cull Off
192+
Name "BilinearQuadPaddingAlphaBlendRepeat"
193+
194+
HLSLPROGRAM
195+
#pragma vertex VertQuadPadding
196+
#pragma fragment FragBilinearRepeat
197+
#define WITH_ALPHA_BLEND
198+
ENDHLSL
199+
}
200+
201+
// 13: Bilinear quad with padding alpha blend (for OctahedralTexture) (8 with alpha blend)
202+
Pass
203+
{
204+
ZWrite Off ZTest Always Blend DstColor Zero Cull Off
205+
Name "BilinearQuadPaddingAlphaBlendOctahedral"
206+
207+
HLSLPROGRAM
208+
#pragma vertex VertQuadPadding
209+
#pragma fragment FragOctahedralBilinearRepeat
210+
#define WITH_ALPHA_BLEND
211+
ENDHLSL
212+
}
213+
214+
// 14. Project Cube to Octahedral 2d quad
215+
Pass
216+
{
217+
ZWrite Off ZTest Always Blend Off Cull Off
218+
Name "CubeToOctahedral"
219+
220+
HLSLPROGRAM
221+
#pragma vertex VertQuad
222+
#pragma fragment FragOctahedralProject
223+
ENDHLSL
224+
}
225+
226+
// 15. Project Cube to Octahedral 2d quad with luminance (grayscale), RGBA to YYYY
227+
Pass
228+
{
229+
ZWrite Off ZTest Always Blend Off Cull Off
230+
Name "CubeToOctahedralLuminance"
231+
232+
HLSLPROGRAM
233+
#pragma vertex VertQuad
234+
#pragma fragment FragOctahedralProjectLuminance
235+
ENDHLSL
236+
}
237+
238+
// 16. Project Cube to Octahedral 2d quad with with A to RGBA (AAAA)
239+
Pass
240+
{
241+
ZWrite Off ZTest Always Blend Off Cull Off
242+
Name "CubeToOctahedralAlpha"
243+
244+
HLSLPROGRAM
245+
#pragma vertex VertQuad
246+
#pragma fragment FragOctahedralProjectAlphaToRGBA
247+
ENDHLSL
248+
}
249+
250+
// 17. Project Cube to Octahedral 2d quad with with R to RGBA (RRRR)
251+
Pass
252+
{
253+
ZWrite Off ZTest Always Blend Off Cull Off
254+
Name "CubeToOctahedralRed"
255+
256+
HLSLPROGRAM
257+
#pragma vertex VertQuad
258+
#pragma fragment FragOctahedralProjectRedToRGBA
259+
ENDHLSL
260+
}
261+
262+
// 18. Bilinear quad with luminance (grayscale), RGBA to YYYY
263+
Pass
264+
{
265+
ZWrite Off ZTest Always Blend Off Cull Off
266+
Name "BilinearQuadLuminance"
267+
268+
HLSLPROGRAM
269+
#pragma vertex VertQuad
270+
#pragma fragment FragBilinearLuminance
271+
ENDHLSL
272+
}
273+
274+
// 19. Bilinear quad with A to RGBA (AAAA)
275+
Pass
276+
{
277+
ZWrite Off ZTest Always Blend Off Cull Off
278+
Name "BilinearQuadAlpha"
279+
280+
HLSLPROGRAM
281+
#pragma vertex VertQuad
282+
#pragma fragment FragBilinearAlphaToRGBA
283+
ENDHLSL
284+
}
285+
286+
// 20. Bilinear quad with R to RGBA (RRRR)
287+
Pass
288+
{
289+
ZWrite Off ZTest Always Blend Off Cull Off
290+
Name "BilinearQuadRed"
291+
292+
HLSLPROGRAM
293+
#pragma vertex VertQuad
294+
#pragma fragment FragBilinearRedToRGBA
295+
ENDHLSL
296+
}
297+
298+
// 21. Nearest project cube to octahedral 2d quad with padding
299+
Pass
300+
{
301+
ZWrite Off ZTest Always Blend Off Cull Off
302+
Name "NearestCubeToOctahedralPadding"
303+
304+
HLSLPROGRAM
305+
#pragma multi_compile_local _ BLIT_DECODE_HDR
306+
#pragma vertex VertQuadPadding
307+
#pragma fragment FragOctahedralProjectNearestRepeat
308+
ENDHLSL
309+
}
310+
311+
// 22. Bilinear project cube to octahedral 2d quad with padding
312+
Pass
313+
{
314+
ZWrite Off ZTest Always Blend Off Cull Off
315+
Name "BilinearCubeToOctahedralPadding"
316+
317+
HLSLPROGRAM
318+
#pragma multi_compile_local _ BLIT_DECODE_HDR
319+
#pragma vertex VertQuadPadding
320+
#pragma fragment FragOctahedralProjectBilinearRepeat
321+
ENDHLSL
322+
}
323+
324+
// 23: Bilinear blit with debug draw and color space conversion support
325+
Pass
326+
{
327+
Name "BilinearDebugDraw"
328+
ZWrite Off ZTest Always Blend Off Cull Off
329+
330+
HLSLPROGRAM
331+
#pragma vertex Vert
332+
#pragma fragment FragmentURPBlitBilinearSampler
333+
#pragma multi_compile_fragment _ _LINEAR_TO_SRGB_CONVERSION
334+
#pragma multi_compile_fragment _ DEBUG_DISPLAY
335+
336+
half4 FragmentURPBlitBilinearSampler(Varyings input) : SV_Target
337+
{
338+
return FragmentURPBlit(input, sampler_LinearClamp);
339+
}
340+
ENDHLSL
341+
}
342+
343+
// 24: Nearest blit with debug draw and color space conversion support
344+
Pass
345+
{
346+
Name "NearestDebugDraw"
347+
ZWrite Off ZTest Always Blend Off Cull Off
348+
349+
HLSLPROGRAM
350+
#pragma vertex Vert
351+
#pragma fragment FragmentURPBlitPointSampler
352+
#pragma multi_compile_fragment _ _LINEAR_TO_SRGB_CONVERSION
353+
#pragma multi_compile_fragment _ DEBUG_DISPLAY
354+
355+
half4 FragmentURPBlitPointSampler(Varyings input) : SV_Target
356+
{
357+
return FragmentURPBlit(input, sampler_PointClamp);
358+
}
359+
ENDHLSL
360+
}
361+
}
362+
363+
Fallback Off
364+
}

0 commit comments

Comments
 (0)