Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
3D 안티앨리어싱
더 보기
Godot는 2D 렌더링에서 안티앨리어싱도 지원합니다. 이에 대해서는 2D 안티앨리어싱 페이지에서 다룹니다.
소개
제한된 해상도로 인해 3D로 렌더링된 장면에는 앨리어싱 아티팩트가 나타날 수 있습니다. 이러한 아티팩트는 일반적으로 표면 가장자리의 "계단" 효과(가장자리 앨리어싱)와 반사 표면의 깜박임 및/또는 반짝임(반사 앨리어싱)으로 나타납니다.
아래 예에서는 가장자리가 어떻게 고르지 않게 나타나는지 확인할 수 있습니다. 식물도 안팎으로 깜빡거리고 상자 상단의 가는 선도 거의 사라졌습니다.
앨리어싱을 더욱 눈에 띄게 만들기 위해 가장 가까운 이웃 필터링을 사용하여 이미지를 2배 확대했습니다.
이 문제를 해결하기 위해 Godot에서는 다양한 안티앨리어싱 기술을 사용할 수 있습니다. 자세한 내용은 아래에 나와 있습니다.
더 보기
이 문서 외에 여러가지 Godot 데모 프로젝트들도 살펴보면 좋습니다.
다중 샘플링 안티앨리어싱 (MSAA).
이 기능은 모든 렌더러에서 사용할 수 있습니다.
이 기술은 앨리어싱을 처리하는 "역사적" 방법입니다. MSAA는 형상 가장자리(특히 더 높은 수준)에 매우 효과적입니다. MSAA는 어떠한 흐릿함도 발생시키지 않습니다.
MSAA는 2×, 4×, 8×의 3가지 레벨로 제공됩니다. 수준이 높을수록 가장자리 앤티앨리어싱에 더 효과적이지만 훨씬 더 까다롭습니다. 현대적인 비주얼을 갖춘 게임에서는 일반적으로 8× MSAA가 너무 까다롭기 때문에 2× 또는 4× MSAA를 사용하는 것이 좋습니다.
MSAA의 단점은 가장자리에서만 작동한다는 것입니다. 이는 MSAA가 커버리지 샘플 수를 늘리지만 색상 샘플 수는 늘리지 않기 때문입니다. 그러나 색상 샘플 수가 증가하지 않았기 때문에 조각 셰이더는 여전히 각 픽셀에 대해 한 번만 실행됩니다. 따라서 MSAA는 알파 가위 투명도 모드(1비트 투명도)를 사용하는 재질의 투명도 앨리어싱을 줄이지 않습니다. MSAA는 반사 앨리어싱에도 효과적이지 않습니다.
알파 가위 재질의 앨리어싱을 완화하기 위해 :ref:`alpha antialiasing <doc_standard_material_3d_alpha_antialiasing>`(*알파 적용 범위*라고도 함)을 StandardMaterial3D 또는 ORMMaterial3D 속성의 특정 재질에 활성화할 수 있습니다. Alpha to Coverage는 성능 비용이 적당하지만 흐릿함을 유발하지 않고 투명한 재질의 앨리어싱을 줄이는 데 효과적입니다.
반사 앨리어싱을 덜 눈에 띄게 만들려면 기본적으로 활성화되어 있는 `Screen-space roughness limiter`_를 사용하세요.
MSAA는 Rendering > Anti Aliasing > Quality > MSAA 3D 설정 값을 변경하여 프로젝트 설정에서 활성화할 수 있습니다. MSAA 2D**가 아닌 **MSAA 3D 설정 값을 변경하는 것이 중요합니다. 이는 완전히 별개의 설정이기 때문입니다.
앤티앨리어싱 없음(왼쪽)과 다양한 MSAA 수준(오른쪽) 간의 비교. 여기서는 알파 앤티앨리어싱이 사용되지 않습니다.
다중 샘플링 안티앨리어싱 (MSAA).
이 기능은 Forward+ 렌더러에서만 사용할 수 있으며 모바일 또는 호환성 렌더러에서는 사용할 수 없습니다.
시간적 앤티앨리어싱은 이전에 렌더링된 프레임의 결과를 단일 고품질 프레임으로 *수렴*하는 방식으로 작동합니다. 이는 매 프레임마다 씬의 모든 정점 위치를 지터링하여 작동하는 연속 프로세스입니다. 이 지터링은 하위 픽셀 세부 사항을 캡처하기 위해 수행되며 극단적인 상황을 제외하고는 눈에 띄지 않아야 합니다.
이 기술은 반사 앨리어싱 및 기타 셰이더로 인한 아티팩트에 대해 가장 효과적인 앤티앨리어싱 형태를 제공하므로 최신 게임에서 일반적으로 사용됩니다. TAA는 또한 투명도 안티앨리어싱을 완벽하게 지원합니다.
TAA를 사용하면 정지 장면에서 약간의 흐림이 발생하지만 이러한 흐림 효과는 카메라가 움직일 때 더욱 두드러집니다. TAA의 또 다른 단점은 움직이는 물체 뒤에 고스팅 인공물이 나타날 수 있다는 것입니다. 더 높은 프레임 속도로 렌더링하면 TAA가 더 빠르게 수렴할 수 있으므로 고스팅 아티팩트가 덜 눈에 띄게 됩니다.
Rendering > Anti Aliasing > Quality > TAA 설정 값을 변경하여 프로젝트 설정에서 임시 안티앨리어싱을 활성화할 수 있습니다.
앤티앨리어싱 없음(왼쪽)과 TAA(오른쪽) 비교:
AMD FidelityFX 초고해상도 2.2(FSR2)
이 기능은 Forward+ 렌더러에서만 사용할 수 있으며 모바일 또는 호환성 렌더러에서는 사용할 수 없습니다.
Godot 4.2부터 AMD FidelityFX Super Resolution 2.2에 대한 지원이 내장되어 있습니다. 이는 모든 공급업체의 모든 최신 GPU와 호환되는 :ref:`업스케일링 방법 <doc_solution_scaling>`입니다. FSR2는 일반적으로 내부 3D 렌더링 해상도를 낮춘 다음 출력 해상도로 업스케일링하여 성능을 향상시키도록 설계되었습니다.
그러나 FSR1과 달리 FSR2는 시간적 안티앨리어싱도 제공합니다. 이는 FSR2가 고품질 앤티앨리어싱을 위해 기본 해상도에서 사용될 수 있으며 입력 해상도가 출력 해상도와 동일하다는 것을 의미합니다. 이 상황에서 FSR2를 활성화하면 실제로 성능이 *감소*되지만 렌더링 품질은 크게 향상됩니다.
기본 해상도에서 FSR2를 사용하는 것은 기본 해상도에서 TAA를 사용하는 것보다 까다롭기 때문에 상당한 GPU 헤드룸이 있는 경우에만 사용하는 것이 좋습니다. 긍정적인 측면에서 FSR2는 특히 모션에서 TAA에 비해 흐려짐이 적은 더 나은 안티앨리어싱 적용 범위를 제공합니다.
앤티앨리어싱이 없는 경우(왼쪽)와 기본 해상도의 FSR2(오른쪽) 비교:
고속 근사 안티앨리어싱 (FXAA).
이 기능은 Forward+ 및 모바일 렌더러에서만 사용할 수 있으며 호환성 렌더러에서는 사용할 수 없습니다.
빠른 근사 앤티앨리어싱은 후처리 앤티앨리어싱 솔루션입니다. 다른 앤티앨리어싱 기술보다 실행 속도가 빠르고 앤티앨리어싱 투명도도 지원합니다. 그러나 시간 정보가 부족하기 때문에 반사 앨리어싱에 대해 많은 영향을 미치지 않습니다.
이 기술은 아직도 모바일 게임에서 가끔 사용됩니다. 그러나 데스크탑 플랫폼에서 FXAA는 일반적으로 반사 앨리어싱에 대해 훨씬 더 효과적인 임시 안티앨리어싱을 선호하여 유행에 뒤떨어졌습니다. 그럼에도 불구하고 FXAA를 게임 내 옵션으로 노출하는 것은 저사양 GPU를 사용하는 플레이어에게 여전히 가치가 있을 수 있습니다.
FXAA는 활성화되면 적당한 양의 흐림을 도입합니다(정지 상태에서는 TAA보다 높지만 카메라가 움직일 때는 TAA보다 적음).
Rendering > Anti Aliasing > Quality > Screen Space AA 설정 값을 ``FXAA``로 변경하면 프로젝트 설정에서 FXAA를 활성화할 수 있습니다.
앤티앨리어싱 없음(왼쪽)과 FXAA(오른쪽) 비교:
다중 샘플링 안티앨리어싱 (MSAA).
이 기능은 Forward+ 및 모바일 렌더러에서만 사용할 수 있으며 호환성 렌더러에서는 사용할 수 없습니다.
하위 픽셀 형태학적 안티앨리어싱은 사후 처리 안티앨리어싱 솔루션입니다. FXAA보다 약간 느리게 실행되지만 흐려짐이 덜합니다. 이는 화면 해상도가 1080p 이하일 때 매우 유용합니다. FXAA와 마찬가지로 SMAA 1x에는 시간 정보가 부족하므로 반사 앨리어싱에 대해 많은 조치를 취하지 않습니다.
MSAA를 감당할 수 없지만 FXAA가 너무 흐릿한 경우 SMAA 1x를 사용하십시오.
이를 TAA 또는 FSR2와 결합하여 더 높은 GPU 비용과 약간의 흐림 효과로 앤티앨리어싱을 극대화합니다. 이는 빠르게 움직이는 장면이나 카메라 컷 직후, 특히 낮은 FPS에서 가장 유용합니다.
Rendering > Anti Aliasing > Quality > Screen Space AA 설정 값을 ``SMAA``로 변경하면 프로젝트 설정에서 SMAA 1x를 활성화할 수 있습니다.
앤티앨리어싱 없음(왼쪽)과 SMAA 1x(오른쪽) 비교:
다중 샘플링 안티앨리어싱 (MSAA).
이 기능은 모든 렌더러에서 사용할 수 있습니다.
슈퍼샘플링은 가능한 최고 품질의 앤티앨리어싱을 제공하지만 비용도 가장 많이 듭니다. 씬의 모든 픽셀을 여러 번 음영 처리하여 작동합니다. 이를 통해 SSAA는 잠재적인 고스팅 아티팩트를 도입하지 않고 가장자리 앤티앨리어싱, 투명도 및 반사 앨리어싱을 동시에 수행할 수 있습니다.
SSAA의 단점은 매우 높은 비용입니다. 이 비용으로 인해 일반적으로 SSAA를 게임 목적으로 사용하기가 어렵지만 :ref:`오프라인 렌더링 <doc_creating_movies>`에는 여전히 슈퍼샘플링이 유용할 수 있습니다.
슈퍼샘플 앤티앨리어싱은 Rendering > Scaling 3D > Scale 고급 프로젝트 설정을 1.0``보다 높게 늘리면서 :ref:`Rendering > Scaling 3D > Mode<class_ProjectSettings_property_rendering/scaling_3d/mode>`를 ``Bilinear``(기본값)로 설정하여 수행됩니다. 배율 인수는 축별로 정의되므로 ``1.5``의 배율 인수는 2.25× SSAA가 되고 ``2.0``의 배율 인수는 4× SSAA가 됩니다. Godot는 다운샘플링을 수행하기 위해 하드웨어 자체의 이중선형 필터링을 사용하기 때문에 결과는 정수 스케일 팩터(즉, ``2.0)에서 더 선명하게 보일 것입니다.
앤티앨리어싱 없음(왼쪽)과 다양한 SSAA 수준(오른쪽) 간의 비교:
경고
슈퍼샘플링은 또한 대상 해상도로 렌더링한 다음 창 크기로 *축소*해야 하기 때문에 비디오 RAM 요구 사항이 높습니다. 예를 들어, 4× SSAA를 사용하여 3840×2160(4K 해상도)로 프로젝트를 표시하려면 씬을 7680×4320(8K 해상도)로 렌더링해야 하며 이는 4배 더 많은 픽셀입니다.
4K와 같은 높은 창 크기를 사용하는 경우 특정 값 이상으로 해상도를 높이면 VRAM 부족으로 인해 심각한 속도 저하(심지어 충돌)가 발생할 수 있습니다.
화면 공간 거칠기 제한기
이 기능은 Forward+ 및 모바일 렌더러에서만 사용할 수 있으며 호환성 렌더러에서는 사용할 수 없습니다.
이는 Edge Antialiasing 방법은 아니지만 3D에서 Specular Aliasing을 줄이는 방법입니다.
화면 공간 거칠기 제한기는 세부적인 형상에 가장 잘 작동합니다. 거칠기 맵 렌더링 자체에 영향을 미치기는 하지만 그 영향은 제한적입니다.
화면 공간 거칠기 제한은 기본적으로 활성화되어 있습니다. 수동 설정이 필요하지 않습니다. 성능에 약간의 영향을 미치므로 프로젝트가 반사 앨리어싱의 영향을 많이 받지 않는 경우 비활성화하는 것이 좋습니다. 렌더링 > 품질 > 스크린 공간 필터 > 스크린 공간 거칠기 제한 프로젝트 설정으로 이를 비활성화할 수 있습니다.
가져올 때 텍스처 거칠기 제한기
화면 공간 거칠기 제한기와 마찬가지로 이는 가장자리 앤티앨리어싱 방법은 아니지만 3D에서 반사 앨리어싱을 줄이는 방법입니다.
가져오기 시 러프니스 제한은 러프니스 제한을 위한 가이드로 사용할 노멀 맵을 지정하여 작동합니다. 이는 FileSystem 도크에서 거칠기 맵을 선택한 다음 가져오기 도크로 이동하여 거칠기 맵이 저장된 색상 채널(일반적으로 녹색)로 **거칠기 > 모드**를 설정한 다음 재질의 노멀 맵에 대한 경로를 설정하여 수행됩니다. 노멀 맵에 대한 경로를 설정한 후 가져오기 도크 하단에 있는 **다시 가져오기**를 클릭하는 것을 잊지 마세요.
이 처리는 가져올 때만 발생하므로 성능 비용이 전혀 들지 않습니다. 그러나 시각적인 영향은 제한적입니다. 가져올 때 거칠기를 제한하면 텍스처 내의 반사 앨리어싱을 줄이는 데 도움이 될 뿐, 세부 메시의 지오메트리 가장자리에서 발생하는 앨리어싱은 줄어듭니다.
어떤 이동 메서드를 사용해야 할까요?
"모든 것에 맞는" 앤티앨리어싱 기술은 없습니다. 앤티앨리어싱은 종종 GPU를 요구하거나 원치 않는 흐릿함을 유발할 수 있으므로 플레이어가 앤티앨리어싱을 비활성화할 수 있도록 설정을 추가하는 것이 좋습니다.
사실적인 아트 디렉션이 있는 프로젝트의 경우 일반적으로 TAA가 가장 적합한 옵션입니다. TAA는 고스팅 아티팩트를 유발할 수 있지만 TAA만큼 반사 앨리어싱을 방지하는 다른 기술은 없습니다. 스크린 공간 거칠기 제한기는 약간의 도움이 되지만 전반적인 반사 앨리어싱에 대해서는 훨씬 덜 효과적입니다. 여유 GPU 전력이 있는 경우 기본 해상도에서 FSR2를 사용하여 표준 TAA에 비해 더 나은 형태의 임시 앤티앨리어싱을 구현할 수 있습니다.
반사 표면의 양이 적은 프로젝트(예: 만화 아트 스타일)의 경우 MSAA가 잘 작동할 수 있습니다. MSAA는 경쟁 게임과 같이 흐릿함과 일시적인 아티팩트를 피하는 것이 중요한 경우에도 좋은 옵션입니다.
모바일 또는 통합 그래픽과 같은 저가형 플랫폼을 대상으로 하는 경우 일반적으로 FXAA가 유일하게 실행 가능한 옵션입니다. 2× MSAA는 상황에 따라 사용할 수 있지만 더 높은 MSAA 수준은 모바일 GPU에서 원활하게 실행되지 않을 수 있습니다.
Godot는 동시에 여러 안티앨리어싱 기술을 사용할 수 있습니다. 이는 일반적으로 불필요하지만 고급 GPU 또는 :ref:`비실시간 렌더링 <doc_creating_movies>`에 더 나은 시각적 효과를 제공할 수 있습니다. 예를 들어, TAA가 활성화되었을 때 움직이는 가장자리를 더 보기 좋게 만들기 위해 동시에 MSAA를 활성화할 수도 있습니다.
안티앨리어싱 비교
기능 |
MSAA |
TAA |
FSR2 |
FXAA |
SMAA 1x |
SSAA |
SSRL |
|---|---|---|---|---|---|---|---|
애지 안티앨리어싱 |
🟢 예 |
🟢 예 |
🟢 예 |
🟢 예 |
🟢 예 |
🟢 예 |
🔴 아니오 |
스페큘러 안티앨리어싱 |
🟡 일부 |
🟢 예 |
🟢 예 |
🟡 일부 |
🟡 일부 |
🟢 예 |
🟢 예 |
투명 안티앨리어싱 |
🟡 일부 [1] |
🟢 예 [2] |
🟢 예 [2] |
🟢 예 |
🟢 예 |
🟢 예 |
🔴 아니오 |
추가된 블러 |
🟢 없음 |
🟡 일부 |
🟡 일부 |
🟡 일부 |
🟢 낮음 |
🟡 일부 [3] |
🟢 없음 |
고스팅 아티팩트 |
🟢 없음 |
🔴 예 |
🔴 예 |
🟢 없음 |
🟢 없음 |
🟢 없음 |
🟢 없음 |
성능 비용 |
🟡 중간 |
🟡 중간 |
🔴 높음 |
🟢 매우 낮음 |
🟢 낮음 |
🔴 매우 높음 |
🟢 낮음 |
Forward+ |
✔️ 예 |
✔️ 예 |
✔️ 예 |
✔️ 예 |
✔️ 예 |
✔️ 예 |
✔️ 예 |
모바일 |
✔️ 예 |
❌ 아니오 |
❌ 아니오 |
✔️ 예 |
✔️ 예 |
✔️ 예 |
✔️ 예 |
호환성 |
✔️ 예 |
❌ 아니오 |
❌ 아니오 |
❌ 아니오 |
❌ 아니오 |
✔️ 예 |
❌ 아니오 |