Unity/정보

[Unity] 안티앨리어싱(Anti-Aliasing)

달시_Dalsi 2024. 9. 21. 23:15

안티앨리어싱(AA) 소개

안티앨리어싱(Anti-Aliasing, AA)은 게임 그래픽 가장자리에서 발생하는 계단 현상을 완화하는 방법입니다. 낮은 해상도에서 픽셀로 표현된 직선이나 곡선이 매끄럽지 않게 보이는데, 안티앨리어싱은 픽셀의 색상과 주위 색상을 혼합하여 더 부드럽고 자연스러운 이미지를 보여줍니다. 이를 통해 게임의 그래픽 퀄리티를 향상시킬 수 있습니다.

안티앨리어싱의 원리

안티앨리어싱은 객체의 가장자리에서 색상 값을 혼합하여 픽셀의 경계가 부드럽게 보이도록 하는 방식으로 동작합니다. 특히, 픽셀의 색상을 주변 픽셀과 섞어 계단 현상을 줄이거나, 화면 전체에서 샘플링을 더 많이 하는 방식으로 처리하여 시각적 부드러움을 제공합니다.

안티앨리어싱 종류와 비교

1) MSAA (Multi-Sample Anti-Aliasing)

  • MSAA는 대표적인 공간 기반 안티앨리어싱 방식으로, 렌더링된 이미지의 가장자리만을 다중 샘플링하여 더 부드럽게 표현합니다. 이 방식은 성능이 좋지만 메모리 사용량이 높을 수 있습니다.
  • Unity에서 MSAA는 그래픽 옵션에서 품질 설정으로 제어할 수 있으며 2x, 4x, 8x와 같은 선택지를 제공합니다. 숫자가 높을수록 품질은 좋아지지만, 성능 저하가 있을 수 있습니다.

2) FXAA (Fast Approximate Anti-Aliasing)

  • FXAA는 화면 전체의 픽셀을 빠르게 처리하며, 성능을 덜 요구하지만 MSAA에 비해 품질이 떨어질 수 있습니다. 특히, 저사양 기기에서 성능을 유지하면서 어느 정도 품질을 유지하고 싶을 때 적합한 방법입니다.

3) TAA (Temporal Anti-Aliasing)

  • TAA는 컬러 기록 버퍼의 여러 프레임 데이터를 활용하여 이미지의 가장자리를 부드럽게 처리하는 방식입니다. 이 방법은 프레임 간 정보를 참조하기 때문에, 결과적으로 움직이는 가장자리의 부드러움이 개선되고 깜박임 현상이 줄어듭니다. 그러나 TAA는 시간 기반으로 처리를 하기 때문에, 게임 오브젝트가 빠르게 움직이거나 대비가 큰 표면 앞을 지나갈 때 고스팅(ghosting) 현상이 발생할 수 있습니다.다음 기능은 TAA와 함께 사용할 수 없습니다.
    • 멀티샘플링 안티앨리어싱(MSAA)
    • 카메라 스태킹
    • 다이내믹 해상도
    고스팅은 주로 빠르게 움직이는 오브젝트 뒤에 잔상이 남는 것처럼 보이는 현상으로, TAA의 단점 중 하나로 꼽힙니다.

4) SMAA(Subpixel Morphological Anti-Aliasing)

  • SMAA는 이미지의 테두리에서 패턴을 감지하고, 감지된 패턴에 따라 테두리 픽셀을 블렌딩하는 방식입니다. 이 방법은 FXAA보다 더 선명한 결과를 제공하며, 더 나은 이미지 품질을 기대할 수 있습니다.

Unity에서 안티앨리어싱 적용 방법

1) Built-in Render Pipeline

Built-in Render Pipeline의 안티앨리어싱은 기본적으로 MSAA만 제공하고 있습니다.
FXAA, TAA, SMAA는 Postprocess를 통해 사용할 수 있습니다.


MSAA 안티앨리어싱 레벨은 Quality Settings에서 설정합니다.

  1. 프로젝트 설정(Project Settings) > 품질(Quality)
  2. Anti-Aliasing 옵션을 선택하고, 2x, 4x, 8x와 같은 옵션을 선택할 수 있습니다. 더 높은 값을 선택할수록 이미지 품질은 개선되지만 성능이 더 요구됩니다.

 

다음과 같이 코드로도 적용할 수 있습니다.

postProcessLayer.antialiasingMode = PostProcessLayer.Antialiasing.None; // MSAA
QualitySettings.antiAliasing = 4; // MSAA 2, 4, 8x

postProcessLayer.antialiasingMode = PostProcessLayer.Antialiasing.FastApproximateAntialiasing; // FXAA
postProcessLayer.antialiasingMode = PostProcessLayer.Antialiasing.SubpixelMorphologicalAntialiasing; // SMAA
postProcessLayer.antialiasingMode = PostProcessLayer.Antialiasing.TemporalAntialiasing; // TAA

// None
postProcessLayer.antialiasingMode = PostProcessLayer.Antialiasing.None;
QualitySettings.antiAliasing = 0;

 

2) URP(Universal Render Pipeline)

URP에서 안티앨리어싱 적용 방법은 카메라의 Rendering 옵션을 선택하면 됩니다.
(Bulit-in과 마찬가지로 Postprocess에서도 똑같이 변경할 수 있습니다.)

 

MSAA는 Quality > Anti Aliasing (MSAA)으로 이동한 후 원하는 MSAA 레벨을 선택합니다.


다음과 같이 코드로도 적용할 수 있습니다. (Bulit-in에서의 코드도 URP에서 PostProcess을 사용하면 사용 가능합니다.)

public Camera camera;

// 안티앨리어싱 모드를 변경하는 함수
public void SetAntiAliasing(int index)
{
    UniversalAdditionalCameraData cameraData = camera.GetComponent<UniversalAdditionalCameraData>();

    if (cameraData != null)
    {
        switch (index)
        {
            case 0: // None
                cameraData.antialiasing = AntialiasingMode.None;
                break;
            case 1: // FXAA
                cameraData.antialiasing = AntialiasingMode.FastApproximateAntialiasing;
                break;
            case 2: // SMAA 
                cameraData.antialiasing = AntialiasingMode.SubpixelMorphologicalAntiAliasing;
                break;
            case 3: // TAA 
                cameraData.antialiasing = AntialiasingMode.TemporalAntiAliasing;
                break;
        }
    }
}

 

코드에서 MSAA레벨 조정은 다음과 같이 설정합니다.

public UniversalRenderPipelineAsset urpAsset;

public void SetAntiAliasing()
{
    urpAsset.msaaSampleCount = 1; // MSAA 비활성화
    urpAsset.msaaSampleCount = 2; // 2x MSAA
    urpAsset.msaaSampleCount = 4; // 4x MSAA
    urpAsset.msaaSampleCount = 8; // 8x MSAA
}

 

결론

안티앨리어싱은 게임 그래픽의 퀄리티를 개선하는 중요한 기술입니다. MSAA, FXAA, TAA, SMAA와 같은 다양한 방법들이 있으며, Unity에서는 간편하게 설정하고 조절할 수 있습니다. 


https://docs.unity3d.com/kr/Packages/com.unity.render-pipelines.universal@14.0/manual/anti-aliasing.html#msaa

 

유니버설 렌더 파이프라인의 안티앨리어싱 | Universal RP | 14.0.9

유니버설 렌더 파이프라인의 안티앨리어싱 앨리어싱은 디지털 샘플러가 실제 정보를 샘플링하고 이를 디지털화하려고 시도할 때 발생하는 부작용입니다. 예를 들어 오디오나 비디오를 샘플링

docs.unity3d.com

 

https://news.skhynix.co.kr/post/chinese-game-wonshin

 

일본 애니메이션 같은 중국 게임 ‘원신’, 그 성공 이면에는 ‘반도체’가 있다

최근 중국의 대두(擡頭)를 나타내는 상징적 분야로 게임 분야를 빼놓을 수 없다. 세계 100대 게임(수익 기준) 중 21개가 현재 중국산 게임, 그런데 주목해야 할 부분은 이제 양보다는 높아진 질이

news.skhynix.co.kr