Files
2025-08-02 20:11:41 +08:00

35 lines
736 B
Plaintext

#pragma kernel Blur
#pragma multi_compile_local __ COLOR_ADJUSTMENT_ON
#pragma multi_compile_local __ LINEAR_SPACE
#include "UnityCG.cginc"
#include "../BlurFilters.cginc"
sampler2D _Input;
RWTexture2D<float4> _Output;
float4 _BlurBox;
float4 _UVScale;
float4 _Offset;
[numthreads(8, 8, 1)]
void Blur (uint2 id : SV_DispatchThreadID)
{
uint2 pos = id + _Offset.xy;
half2 blurUV = (pos + 0.5) * _UVScale.xy;
half4x2 uvs = half4x2(blurUV, blurUV, blurUV, blurUV);
half4x2 offsets = half4x2(_BlurBox.xy, _BlurBox.zy, _BlurBox.xw, _BlurBox.zw);
half4x2 boxUVs = uvs + offsets;
float4 color = BlurSample(_Input, boxUVs);
#if defined(LINEAR_SPACE)
color.xyz = LinearToGammaSpace(color.xyz);
#endif
_Output[pos] = color;
}