언리얼 엔진(UE) 5.5 이상 버전에서는 모든 UI(유저 인터페이스) 텍스트에 부호화된 디스턴스 필드 기반 텍스트 렌더링(signed distance field-based text rendering) 을 사용할 수 있습니다. 여기에는 날카로운 코너를 유지하는 기존 부호화된 디스턴스 필드 와 멀티 채널 부호화된 디스턴스 필드(multi-channel signed distance fields, MSDF) 가 포함됩니다.
부호화된 디스턴스 필드는 텍스처 메모리에 저장된 개별 폰트 글리프의 해상도에 구애받지 않는 근사치 표현으로, 셰이딩을 통해 글리프의 안티 에일리어싱 알파 마스크를 출력할 수 있습니다. 또한, 그래픽 효과에 사용할 수 있는 부호화된 디스턴스를 머티리얼 셰이더에 제공할 수도 있습니다. 부호화된 디스턴스는 가장 가까운 에지 포인트까지의 거리이며, 부호는 원점이 내부(양수)인지 외부(음수)인지를 지정합니다.

왼쪽은 부호화된 디스턴스 필드 기반 텍스트 렌더링이고 오른쪽은 부호화된 디스턴스 필드를 사용한 실제 텍스처입니다.
디스턴스 필드 모드는 이전의 텍스트 렌더링 파이프라인을 대체하지는 않으며, 장단점이 있어 대안으로 제공됩니다.
장점
- 해상도에 구애받지 않는다는 말은 각 글리프 크기와 왜곡, 외곽선 크기에 대해 별도의 텍스처 표현이 필요 없다는 뜻이므로, 텍스처 메모리가 절감되고 퍼포먼스가 향상됩니다.
- 저해상도 디스턴스 필드로부터 좋은 퀄리티로 매우 큰 텍스트를 렌더링할 수 있어 텍스처 메모리가 절약됩니다.
- 텍스트 외곽선을 사용하면 디스턴스 필드를 훨씬 효율적으로 사용할 수 있으며 추가 텍스처 메모리가 필요 없습니다.
- 외곽선, 글로우, 성장 애니메이션 등, 거리 기반 머티리얼 이펙트를 사용할 수 있습니다.
단점
- 디스턴스 필드를 계산하는 것은 직접 래스터화보다 훨씬 계산 집약적인 작업입니다.
- 해상도에 구애받지 않는 기술이므로 힌팅을 지원하지 않습니다. 그래서 작은 폰트 크기에서는 퀄리티가 저하될 수 있습니다.
- 디스턴스 필드는 근사치입니다. 해상도에 따라 일부 글리프 피처만 충분히 충실하게 재현할 수 있을 수도 있습니다. 보통 얇은 폰트 페이스와 얇고 섬세한 피처가 가장 문제가 됩니다. 사용하는 폰트 페이스가 디스턴스 필드 렌더링에 적합한지 고려해야 합니다.
- 초기 버전은 비표준 지오메트리가 있는 폰트 페이스를 지원하지 않습니다.
매우 큰 텍스트나 동적으로 스케일 조절되는 텍스트에 같은 폰트 페이스를 여러 가지 크기로 사용하는 경우나 머티리얼 이펙트에서 부호화된 디스턴스를 활용하려는 경우 디스턴스 필드 모드를 활성화하는 것이 좋습니다.
구성 및 사용
구성하는 단계는 다음과 같습니다.
-
프로젝트 세팅(Project Settings) > 엔진(Engine) > 유저 인터페이스(User Interface) > UMG 폰트(UMG Fonts) 를 엽니다.
-
디스턴스 필드 폰트 래스터화 활성화(Enable Distance Field Font Rasterization) 세팅을 활성화합니다.
-
디스턴스 필드 텍스트 렌더링을 사용할 폰트 페이스 에셋을 엽니다.
-
디테일(Details) 패널에서 디스턴스 필드 모드(Distance Field Mode) 카테고리를 찾아서 디스턴스 필드 렌더링 활성화(Enable Distance Field Rendering) 세팅을 활성화합니다. 이 세팅을 활성화하면 단일 채널 및 멀티 채널 디스턴스 필드 해상도에 대한 퀄리티 레벨을 환경설정할 수 있습니다.
환경설정
이 렌더링 모드를 활성화하면 단일 채널 및 멀티 채널 디스턴스 필드 해상도를 낮음, 중간, 높음 퀄리티 레벨로 설정할 수 있습니다. 이러한 해상도는 'em' 당 디스턴스 필드 픽셀로 표시됩니다. 여기서 em은 문자 'M'의 너비를 대략적으로 나타내는 폰트 페이스 메트릭입니다.
모든 해상도와 두 가지 디스턴스 필드 타입에 대한 렌더링 출력은 물론 벡터 지오메트리에서 직접 래스터화된 '레퍼런스' 모양도 프리뷰할 수 있습니다. 모든 관련 글리프에 대해 모든 퀄리티 레벨이 수용할 만한 퀄리티인지 확인해야 합니다. 문제가 될 수 있는 글리프, 즉 얇거나 작은 피처가 포함될 수 있는 글리프를 확인해야 합니다. 일반적으로, 디스턴스 필드 해상도는 이러한 작은 피처마다 하나 이상의 전체 디스턴스 필드 픽셀이 들어갈 수 있을 정도는 되어야 합니다.
디스턴스 필드 타입(멀티 채널, 단일 채널 및 근사치)과 사용된 퀄리티 레벨은 디바이스별로 지정할 수 있는 디바이스 프로파일에 따라 결정됩니다. 디바이스 프로파일에 다음 CVar를 설정하여 사용할 래스터화 모드와 퀄리티 레벨을 커스터마이징할 수 있습니다.
CVar | 설명 |
---|---|
UI.SlateSDFText.RasterizationMode |
래스터화 모드 또는 디스턴스 필드 타입입니다. |
UI.SlateSDFText.ResolutionLevel |
디스턴스 필드 해상도 퀄리티 레벨입니다. 값이 1이면 퀄리티가 낮음, 2이면 중간, 3이면 높음입니다. |
다음은 UI.SlateSDFText.RasterizationMode
에 유효한 값입니다.
값 | 설명 |
---|---|
Bitmap | 직접 래스터화입니다. 지정된 디바이스에 대해 디스턴스 필드 렌더링을 비활성화합니다. |
Msdf | 멀티 채널 부호화된 디스턴스 필드 렌더링입니다. 멀티 채널 해상도 중 하나를 사용합니다. |
Sdf | 기존의 단일 채널 부호화된 디스턴스 필드 렌더링입니다. 코너가 둥글거나 깨져 보일 수 있으며, 연귀이음 외곽선은 사용할 수 없습니다. |
SdfApproximation | 정밀도가 떨어지는 버전의 Sdf입니다. 비슷한 퀄리티를 제공하지만, 퍼포먼스 비용이 상당히 낮습니다. 모바일 폰처럼 성능이 낮은 디바이스에 권장됩니다. |
언리얼 에디터의 해당 폰트 에셋 세팅에서 특정 폰트 페이스의 래스터화 모드를 오버라이드할 수도 있습니다.
머티리얼 이펙트
머티리얼 이펙트에서 폰트 부호화된 디스턴스를 활용하려면, 새로운 Font Signed Distance 머티리얼 노드를 사용하면 됩니다.

현재 이 노드에는 입력이 없으며 현재 픽셀에서 텍스트의 부호화된 디스턴스를 샘플링합니다. 이 노드는 다음과 같은 출력을 제공합니다.
출력 | 설명 |
---|---|
부호화된 디스턴스(Signed Distance) | 'em'으로 표시되는 기본 부호화된 디스턴스입니다. 음수이면 글리프 외부, 양수이면 내부입니다. 멀티 채널 부호화된 디스턴스 필드를 사용하는 경우, 이 값은 코너 주변에 둥근 연귀이음이 아닌 날카로운 연귀이음을 형성하는 수직 디스턴스가 됩니다. |
스무드 부호화된 디스턴스(Smooth Signed Distance) | 'em'으로 표시되는 유클리드 부호화된 디스턴스입니다. 음수이면 외부, 양수이면 내부를 나타냅니다. 단일 채널 디스턴스 필드를 사용하는 경우, 이 값은 기본 부호화된 디스턴스와 같습니다. |
픽셀 디스턴스 인수(Pixel Distance Factor) | 함께 곱하여 위의 부호화된 디스턴스를 'em'에서 스크린 픽셀로 변환하는 데 사용할 수 있는 값입니다. 일반적으로 한계치 거리 - 0.5픽셀 및 한계치 거리 + 0.5픽셀 간 두 컬러 사이를 부드럽게 전환하여 안티 에일리어싱에 사용할 수 있습니다. |
암시적 오파시티(Implicit Opacity) | 머티리얼 없이 렌더링하는 경우와 동일한 방식으로 부호화된 디스턴스를 해석할 때 텍스트의 암시적 오파시티입니다. 추가 이펙트 추가 전에 기반으로 사용할 수 있습니다. |
디스턴스 필드는 글리프 내부와 주변으로 제한된 범위의 부호화된 디스턴스만 제공합니다. 머티리얼 이펙트에 글리프에서 더 먼 디스턴스가 필요한 경우, 원하는 이펙트와 비슷한 너비로 텍스트의 외곽선을 설정하여 거리 범위가 더 넓은 디스턴스 필드를 강제할 수 있습니다.
기본적으로 텍스트의 내부 영역만 머티리얼로 채워집니다. 글로우 이펙트처럼 이펙트를 텍스트 주변에 그려야 하는 경우, 텍스트에서 새로운 머티리얼은 스텐실(Material Is Stencil) 옵션을 활성화해야 합니다. 이 옵션을 활성화하면 전체 글리프 사각형이 머티리얼로 채워지고, 글리프 셰이프를 스텐실하도록 머티리얼의 오파시티를 적절하게 설정해야 합니다. 위에서 설명한 대로 암시적 오파시티(Implicit Opacity) 를 사용할 수도 있고 부호화된 디스턴스를 사용하여 커스텀 방식으로 수행할 수도 있습니다.
