Sure! Here is the modified version of the blur shader that defines a function called `blur` that takes an additional argument to control the amount of blur:
```
#version 330 core

uniform sampler2D image; // the image to blur
uniform vec2 resolution; // the resolution of the image
uniform float blurAmount; // the amount of blur to apply

// the blur kernel
const int kernelSize = 9;
float kernel[kernelSize] = float[](0.00000067, 0.00002292, 0.00019117, 0.00038771, 0.00019117, 0.00002292, 0.00000067, 0.00002292, 0.00078634, 0.00655965, 0.01330373, 0.00655965, 0.00078633, 0.00019117, 0.00655965, 0.05472157, 0.11098164, 0.05472157, 0.00655965, 0.00038771, 0.01330373, 0.11098164, 0.22508352, 0.11098164, 0.01330373, 0.00019117, 0.00655965, 0.05472157, 0.11098164, 0.05472157, 0.00655965, 0.00002292, 0.00078634, 0.00655965, 0.01330373, 0.00655965, 0.00078633, 0.00000067, 0.00002292, 0.00019117, 0.00038771, 0.00019117, 0.00002292, 0.00000067);

vec4 blur(sampler2D image, vec2 texelCoords, vec2 resolution, float blurAmount)
{
    // the blur offset
    vec2 offset = blurAmount / resolution;

    // the color and alpha accumulators
    vec4 color = vec4(0.0);
    float alpha = 0.0;

    // apply the blur
    for (int i = 0; i < kernelSize; ++i)
    {
        // get the texel at the current offset
        vec4 texel = texture(image, texelCoords + offset * (float(i) - float(kernelSize / 2)));

        // accumulate the color and alpha
        color += texel * kernel[i];
        alpha += texel.a * kernel[i];
    }

    // return the blurred color
    return vec4(color.rgb, alpha);
}

void main()
{
    // the texel coordinates
    vec2 texelCoords = gl_FragCoord.xy / resolution;

    // set the output color
    gl_FragColor = blur(image, texelCoords, resolution, blurAmount);
}
```
This version defines a function called `blur` that takes an image, texel coordinates, resolution, and blur amount as input and returns a blurred color as output. The main function then calls the `blur` function and passes the `blurAmount` uniform as the blur amount argument.

To use this shader, you would bind the image you want to blur to the `image` uniform, set the `resolution` uniform to the resolution of the image, and set the `blurAmount` uniform to the desired amount of blur. The larger the value of `blurAmount`, the more pronounced the blur effect
다음은 흐림의 양을 제어하기 위해 추가 인수를 받는 `blur`라는 함수를 정의하는 수정된 버전의 흐림 셰이더입니다:```#버전 330 코어균일한 샘플러2D 이미지; // 블러할 이미지uniform vec2 resolution; // 이미지의 해상도균일 플로트 블러 양; // 적용할 블러의 양// 블러 커널const int kernelSize = 9;float kernel[kernelSize] = float[](0.00000067, 0.00002292, 0.00019117, 0.00038771, 0.00019117, 0.00002292, 0.00000067, 0.00002292, 0. 00078634, 0.00655965, 0.01330373, 0.00655965, 0.00078633, 0.00019117, 0.00655965, 0.05472157, 0.11098164, 0.05472157, 0.00655965, 0.00038771, 0. 01330373, 0.11098164, 0.22508352, 0.11098164, 0.01330373, 0.00019117, 0.00655965, 0.05472157, 0.11098164, 0.05472157, 0.00655965, 0.00002292, 0. 00078634, 0.00655965, 0.01330373, 0.00655965, 0.00078633, 0.00000067, 0.00002292, 0.00019117, 0.00038771, 0.00019117, 0.00002292, 0.00000067);vec4 블러(sampler2D 이미지, vec2 텍셀좌표, vec2 해상도, float 블러양){    // 블러 오프셋    vec2 오프셋 = 블러 양 / 해상도;    // 색상 및 알파 누산기    vec4 color = vec4(0.0);    float alpha = 0.0;    // 블러 적용    for (int i = 0; i < kernelSize; ++i)    {        // 현재 오프셋에서 텍셀을 가져옵니다.        vec4 텍셀 = texture(image, 텍셀좌표 + 오프셋 * (float(i) - float(커널사이즈/2)));        // 색상과 알파 누적        color += 텍셀 * 커널[i];        알파 += 텍셀.a * 커널[i];    }    // 흐린 색을 반환합니다.    반환 vec4(color.rgb, alpha);}void main(){    // 텍셀 좌표    vec2 텍셀좌표 = gl_FragCoord.xy / 해상도;    // 출력 색상 설정    gl_FragColor = blur(image, texelCoords, resolution, blurAmount);}```이 버전에서는 이미지, 텍셀 좌표, 해상도, 흐림량을 입력으로 받아 흐린 색을 출력으로 반환하는 `blur`라는 함수를 정의합니다. 그런 다음 메인 함수는 `blur` 함수를 호출하고 블러 금액 인수로 `blurAmount` 유니폼을 전달합니다.이 셰이더를 사용하려면 흐리게 처리할 이미지를 `이미지` 유니폼에 바인딩하고 `해상도` 유니폼을 이미지의 해상도로 설정한 다음 `블러 양` 유니폼을 원하는 블러 양으로 설정하면 됩니다. 블러 양` 값이 클수록 블러 효과가 더 뚜렷해집니다.