123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367 |
- Shader "Hidden/Universal/CoreBlit"
- {
- HLSLINCLUDE
-
- #pragma target 2.0
- #pragma editor_sync_compilation
- // Core.hlsl for XR dependencies
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
- #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl"
- // DebuggingFullscreen.hlsl for URP debug draw
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/DebuggingFullscreen.hlsl"
- // Color.hlsl for color space conversion
- #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
-
- // Specialized blit with URP debug draw support and color space conversion support
- // Keep in sync with BlitHDROverlay.shader
- half4 FragmentURPBlit(Varyings input, SamplerState blitsampler)
- {
- half4 color = FragBlit(input, blitsampler);
-
- #ifdef _LINEAR_TO_SRGB_CONVERSION
- color = LinearToSRGB(color);
- #endif
-
- #if defined(DEBUG_DISPLAY)
- half4 debugColor = 0;
- float2 uv = input.texcoord;
- if (CanDebugOverrideOutputColor(color, uv, debugColor))
- {
- return debugColor;
- }
- #endif
-
- return color;
- }
- ENDHLSL
-
- SubShader
- {
- Tags{ "RenderPipeline" = "UniversalPipeline" }
- // Note: Keep shader pass names in sync with the ShaderPassNames enum in Blitter.cs
-
- // 0: Nearest
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "Nearest"
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment FragNearest
- ENDHLSL
- }
-
- // 1: Bilinear
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "Bilinear"
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment FragBilinear
- ENDHLSL
- }
-
- // 2: Nearest quad
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "NearestQuad"
-
- HLSLPROGRAM
- #pragma vertex VertQuad
- #pragma fragment FragNearest
- ENDHLSL
- }
-
- // 3: Bilinear quad
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "BilinearQuad"
-
- HLSLPROGRAM
- #pragma vertex VertQuad
- #pragma fragment FragBilinear
- ENDHLSL
- }
-
- // 4: Nearest quad with padding
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "NearestQuadPadding"
-
- HLSLPROGRAM
- #pragma vertex VertQuadPadding
- #pragma fragment FragNearest
- ENDHLSL
- }
-
- // 5: Bilinear quad with padding
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "BilinearQuadPadding"
-
- HLSLPROGRAM
- #pragma vertex VertQuadPadding
- #pragma fragment FragBilinear
- ENDHLSL
- }
-
- // 6: Nearest quad with padding and repeat
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "NearestQuadPaddingRepeat"
-
- HLSLPROGRAM
- #pragma vertex VertQuadPadding
- #pragma fragment FragNearestRepeat
- ENDHLSL
- }
-
- // 7: Bilinear quad with padding and repeat
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "BilinearQuadPaddingRepeat"
-
- HLSLPROGRAM
- #pragma vertex VertQuadPadding
- #pragma fragment FragBilinearRepeat
- ENDHLSL
- }
-
- // 8: Bilinear quad with padding (for OctahedralTexture)
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "BilinearQuadPaddingOctahedral"
-
- HLSLPROGRAM
- #pragma vertex VertQuadPadding
- #pragma fragment FragOctahedralBilinearRepeat
- ENDHLSL
- }
-
- /// Version 4, 5, 6, 7 with Alpha Blending 0.5
- // 9: Nearest quad with padding alpha blend (4 with alpha blend)
- Pass
- {
- ZWrite Off ZTest Always Blend DstColor Zero Cull Off
- Name "NearestQuadPaddingAlphaBlend"
-
- HLSLPROGRAM
- #pragma vertex VertQuadPadding
- #pragma fragment FragNearest
- #define WITH_ALPHA_BLEND
- ENDHLSL
- }
-
- // 10: Bilinear quad with padding alpha blend (5 with alpha blend)
- Pass
- {
- ZWrite Off ZTest Always Blend DstColor Zero Cull Off
- Name "BilinearQuadPaddingAlphaBlend"
-
- HLSLPROGRAM
- #pragma vertex VertQuadPadding
- #pragma fragment FragBilinear
- #define WITH_ALPHA_BLEND
- ENDHLSL
- }
-
- // 11: Nearest quad with padding alpha blend repeat (6 with alpha blend)
- Pass
- {
- ZWrite Off ZTest Always Blend DstColor Zero Cull Off
- Name "NearestQuadPaddingAlphaBlendRepeat"
-
- HLSLPROGRAM
- #pragma vertex VertQuadPadding
- #pragma fragment FragNearestRepeat
- #define WITH_ALPHA_BLEND
- ENDHLSL
- }
-
- // 12: Bilinear quad with padding alpha blend repeat (7 with alpha blend)
- Pass
- {
- ZWrite Off ZTest Always Blend DstColor Zero Cull Off
- Name "BilinearQuadPaddingAlphaBlendRepeat"
-
- HLSLPROGRAM
- #pragma vertex VertQuadPadding
- #pragma fragment FragBilinearRepeat
- #define WITH_ALPHA_BLEND
- ENDHLSL
- }
-
- // 13: Bilinear quad with padding alpha blend (for OctahedralTexture) (8 with alpha blend)
- Pass
- {
- ZWrite Off ZTest Always Blend DstColor Zero Cull Off
- Name "BilinearQuadPaddingAlphaBlendOctahedral"
-
- HLSLPROGRAM
- #pragma vertex VertQuadPadding
- #pragma fragment FragOctahedralBilinearRepeat
- #define WITH_ALPHA_BLEND
- ENDHLSL
- }
-
- // 14. Project Cube to Octahedral 2d quad
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "CubeToOctahedral"
-
- HLSLPROGRAM
- #pragma vertex VertQuad
- #pragma fragment FragOctahedralProject
- ENDHLSL
- }
-
- // 15. Project Cube to Octahedral 2d quad with luminance (grayscale), RGBA to YYYY
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "CubeToOctahedralLuminance"
-
- HLSLPROGRAM
- #pragma vertex VertQuad
- #pragma fragment FragOctahedralProjectLuminance
- ENDHLSL
- }
-
- // 16. Project Cube to Octahedral 2d quad with with A to RGBA (AAAA)
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "CubeToOctahedralAlpha"
-
- HLSLPROGRAM
- #pragma vertex VertQuad
- #pragma fragment FragOctahedralProjectAlphaToRGBA
- ENDHLSL
- }
-
- // 17. Project Cube to Octahedral 2d quad with with R to RGBA (RRRR)
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "CubeToOctahedralRed"
-
- HLSLPROGRAM
- #pragma vertex VertQuad
- #pragma fragment FragOctahedralProjectRedToRGBA
- ENDHLSL
- }
-
- // 18. Bilinear quad with luminance (grayscale), RGBA to YYYY
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "BilinearQuadLuminance"
-
- HLSLPROGRAM
- #pragma vertex VertQuad
- #pragma fragment FragBilinearLuminance
- ENDHLSL
- }
-
- // 19. Bilinear quad with A to RGBA (AAAA)
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "BilinearQuadAlpha"
-
- HLSLPROGRAM
- #pragma vertex VertQuad
- #pragma fragment FragBilinearAlphaToRGBA
- ENDHLSL
- }
-
- // 20. Bilinear quad with R to RGBA (RRRR)
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "BilinearQuadRed"
-
- HLSLPROGRAM
- #pragma vertex VertQuad
- #pragma fragment FragBilinearRedToRGBA
- ENDHLSL
- }
-
- // 21. Nearest project cube to octahedral 2d quad with padding
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "NearestCubeToOctahedralPadding"
-
- HLSLPROGRAM
- #pragma multi_compile_local _ BLIT_DECODE_HDR
- #pragma vertex VertQuadPadding
- #pragma fragment FragOctahedralProjectNearestRepeat
- ENDHLSL
- }
-
- // 22. Bilinear project cube to octahedral 2d quad with padding
- Pass
- {
- ZWrite Off ZTest Always Blend Off Cull Off
- Name "BilinearCubeToOctahedralPadding"
-
- HLSLPROGRAM
- #pragma multi_compile_local _ BLIT_DECODE_HDR
- #pragma vertex VertQuadPadding
- #pragma fragment FragOctahedralProjectBilinearRepeat
- ENDHLSL
- }
-
- // 23: Bilinear blit with debug draw and color space conversion support
- Pass
- {
- Name "BilinearDebugDraw"
- ZWrite Off ZTest Always Blend Off Cull Off
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment FragmentURPBlitBilinearSampler
- #pragma multi_compile_fragment _ _LINEAR_TO_SRGB_CONVERSION
- #pragma multi_compile_fragment _ DEBUG_DISPLAY
-
- half4 FragmentURPBlitBilinearSampler(Varyings input) : SV_Target
- {
- return FragmentURPBlit(input, sampler_LinearClamp);
- }
- ENDHLSL
- }
-
- // 24: Nearest blit with debug draw and color space conversion support
- Pass
- {
- Name "NearestDebugDraw"
- ZWrite Off ZTest Always Blend Off Cull Off
-
- HLSLPROGRAM
- #pragma vertex Vert
- #pragma fragment FragmentURPBlitPointSampler
- #pragma multi_compile_fragment _ _LINEAR_TO_SRGB_CONVERSION
- #pragma multi_compile_fragment _ DEBUG_DISPLAY
-
- half4 FragmentURPBlitPointSampler(Varyings input) : SV_Target
- {
- return FragmentURPBlit(input, sampler_PointClamp);
- }
- ENDHLSL
- }
- }
-
- Fallback Off
- }
|