• Home
  • About
    • 게임 개발자 유정룡 photo

      게임 개발자 유정룡

      포트폴리오

    • Learn More
    • Email
    • Github
    • Bitbucket
  • Projects
    • All Projects
    • All Tags

Direct3D11 공부 41일차(Blur)

03 Aug 2021

Reading time ~1 minute

Blur

화면을 뿌옇게 만드는 효과이다.

각 픽셀에서 위, 아래, 대각선에 있는 픽셀들의 색을 갖고와 평균값을 내어준다.

Shader

104_Blur.fx
uint BlurCount = 8;
float4 PS_Blur(VertexOutput input) : SV_Target
{
    float2 arr[9] =
    {
        float2(-1, -1), float2(+0, -1), float2(+1, -1),
        float2(-1, +0), float2(+0, +0), float2(+1, +0),
        float2(-1, +1), float2(+0, +1), float2(+1, +1)
    };
    
    float3 color = 0;
    for (uint blur = 1; blur < BlurCount; blur++)
    {
        for (int i = 0; i < 9; i++)
        {
            float x = arr[i].x * (float) blur * PixelSize.x;
            float y = arr[i].y * (float) blur * PixelSize.y;

            float2 uv = input.Uv + float2(x, y);
            color += DiffuseMap.Sample(LinearSampler, uv).rgb;
        }
    }    
    color /= (BlurCount) * 9;   
    
    return float4(color, 1.0f);
}

이렇게 각각 픽셀을 갖고와 평균값을 내어주면

이렇게 블러 효과가 적용된다.

하지만, 가장 일반적인 방법의 블러이다. 하지만 실제 사용하는 블러는 가우시안 블러이다.



DirectX Share Tweet +1