Advertisement
_Dunno_

Shader

Feb 9th, 2025
449
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "DualFilteringKawaseBlur"
  2. {
  3.     HLSLINCLUDE
  4.     #pragma target 4.5
  5.     #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  6.     #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl"
  7.  
  8.     SAMPLER(sampler_BlitTexture);
  9.     half2 _HalfPixel;
  10.  
  11.     Varyings Vertex(Attributes input)
  12.     {
  13.         Varyings OUT;
  14.         OUT.positionCS = GetFullScreenTriangleVertexPosition(input.vertexID);
  15.         OUT.texcoord = GetFullScreenTriangleTexCoord(input.vertexID) * _BlitScaleBias.xy + _BlitScaleBias.zw;;
  16.         return OUT;
  17.     }
  18.  
  19.     half4 FragmentDownsampling(Varyings IN) : SV_Target
  20.     {
  21.         half4 sum = SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord) * 4.0;
  22.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord - _HalfPixel);
  23.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord + _HalfPixel);
  24.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord + half2(_HalfPixel.x, -_HalfPixel.y));
  25.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord - half2(_HalfPixel.x, -_HalfPixel.y));
  26.         return sum / 8.0;
  27.     }
  28.  
  29.     half4 FragmentUpsampling(Varyings IN) : SV_Target
  30.     {
  31.         half4 sum = SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord + half2(-_HalfPixel.x * 2.0, 0.0));
  32.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord + half2(-_HalfPixel.x, _HalfPixel.y)) * 2.0;
  33.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord + half2(0.0, _HalfPixel.y * 2.0));
  34.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord + half2(_HalfPixel.x, _HalfPixel.y)) * 2.0;
  35.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord + half2(_HalfPixel.x * 2.0, 0.0));
  36.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord + half2(_HalfPixel.x, -_HalfPixel.y)) * 2.0;
  37.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord + half2(0.0, -_HalfPixel.y * 2.0));
  38.         sum += SAMPLE_TEXTURE2D(_BlitTexture, sampler_BlitTexture, IN.texcoord + half2(-_HalfPixel.x, -_HalfPixel.y)) * 2.0;
  39.         return sum / 12.0;
  40.     }
  41.     ENDHLSL
  42.  
  43.     SubShader
  44.     {
  45.         Tags
  46.         {
  47.             "RenderType"="Opaque" "RenderPipeline" = "UniversalPipeline"
  48.         }
  49.         LOD 100
  50.         ZWrite Off
  51.         Cull Off
  52.         Pass
  53.         {
  54.             Name "Downsampling"
  55.             HLSLPROGRAM
  56.             #pragma vertex Vertex
  57.             #pragma fragment FragmentDownsampling
  58.             ENDHLSL
  59.         }
  60.  
  61.         Pass
  62.         {
  63.             Name "Upsampling"
  64.             HLSLPROGRAM
  65.             #pragma vertex Vertex
  66.             #pragma fragment FragmentUpsampling
  67.             ENDHLSL
  68.         }
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement