GPU 텍스트 렌더링 기술 비교: SDF부터 Slug까지
SDF vs. MSDF vs. Slug: GPU Text Rendering
Hacker NewsGPU 환경에서 다양한 크기 및 투영각을 가진 텍스트를 깨짐 없이 구현하는 것은 매우 어려운 기술적 과제였습니다.
- 기존의 비트맵(Atlas), SDF, MSDF 방식은 미리 정해진 해상도에 의존하여 왜곡이나 스케일 변화 시 윤곽이 무뎌지는 한계가 있었습니다.
- Slug는 텍스트를 벡터 윤곽선에서 직접 프래그먼트 셰이더로 계산하며, 변환 후 각 픽셀마다 정확한 커버리지를 산출해 해상도 독립성을 확보했습니다.
- 따라서 AR/VR이나 인터랙티브 3D처럼 카메라 위치가 자유로운 환경에서는 예측 불가능한 조건에서도 선명도를 유지하는 Slug 방식이 가장 적합합니다.
환경에서 크기나 변환에 관계없이 선명한 텍스트를 구현하는 것은 복잡한 과제입니다. 전통적인 방식인 텍스처 아틀라스는 글리프를 미리 특정 해상도로 래스터화하여 사용하기 때문에, 스케일링하거나 원근 투영이 적용되면 블러 처리되거나 디테일이 손실되는 한계가 있습니다. 이를 개선한 SDF(Signed Distance Field)나 MSDF(Multi-Channel Signed Distance Fields)는 벡터 윤곽선에서 거리를 계산하는 방식으로 어느 정도의 해상도 독립성을 확보했지만, 여전히 고정된 해상도의 텍스처를 샘플링하며 날카로운 모서리가 둥글게 처리되거나 극단적인 스케일에서는 디테일이 손실되는 문제가 있습니다.
이러한 한계를 극복하기 위해 개발된 방법 중 하나는 윤곽선을 GPU가 직접 래스터화할 수 있는 지오메트리로 변환하는 방식(Tessellation)입니다. 이와 달리 Slug 기법은 아틀라스를 사용하지 않고 글리프를 이차 베지어 곡선과 선분 목록으로 유지하며, 프래그먼트 셰이더 내에서 각 픽셀마다 광선을 투사하여 윤곽선 교차점을 계산함으로써 커버리지를 직접 산출합니다. 이 과정은 변환 후에도 정확한 커버리지를 제공하는 것이 핵심입니다.
Slug 방식의 가장 큰 장점은 해상도 독립성과 변환에 대한 강건성입니다. 텍스트가 프레임마다 변경되거나, 카메라 위치와 각도가 자유로운 AR/VR 환경처럼 예측 불가능한 조건에서 사용될 때, 기존의 아틀라스나 SDF는 미리 정해진 해상도의 한계를 벗어나면 왜곡이 발생합니다. Slug는 변환 후 픽셀 단위로 커버리지를 분석적으로 계산하기 때문에, 아무리 가까워지거나 비스듬하게 보더라도 정확한 선명도를 유지할 수 있습니다.
용어 풀이
- GPU
- 많은 계산을 한꺼번에 처리하는 칩. AI 학습과 실행에 가장 많이 써요.