- GPU에서 Bézier 곡선 기반 폰트 렌더링을 수행하는 Slug 알고리듬은 텍스처 없이 직접 벡터 데이터를 렌더링하며, 게임·CAD·영상 편집·의료 장비 등 다양한 산업에서 사용됨
- 독점권을 2026/3/17부로 포기하여 특허가 공공 도메인으로 완전 해제되어 누구나 자유롭게 사용가능해졌음
- 최근 버전에서는 band split 최적화와 supersampling 제거, 이모지 렌더링 방식 단순화 등으로 성능과 코드 효율을 개선
- 가장 큰 변화는 동적 팽창(dynamic dilation) 기능으로, 글리프 크기와 시점에 따라 자동으로 최적 경계 확장을 계산함
- MIT 라이선스로 공개된 GitHub 레퍼런스 셰이더 코드를 통해 누구나 자유롭게 구현 가능
Slug 알고리듬의 개발과 확산
- Slug 알고리듬은 2016년 가을에 개발되어 2017년 JCGT 논문으로 발표됨
- 이후 Slug Library 1.0이 상용화되어 Activision, Blizzard, Ubisoft, Adobe 등 주요 기업에 라이선스 제공
- 게임, 과학 시각화, CAD, 비디오 편집, 의료 장비, 플라네타리움 등 다양한 분야에서 사용됨
- 원래는 C4 Engine의 고품질 텍스트 렌더링을 위해 개발되었으며, 이후 Radical Pie 수식 편집기에도 적용됨
- 수식, 괄호, 화살표 등 벡터 그래픽 요소를 고해상도로 표현
렌더링 방식의 진화
- Slug은 사전 계산된 텍스처 없이 Bézier 곡선 데이터를 GPU에서 직접 렌더링
- 부동소수점 오차에도 강건하며, 매끄러운 곡선과 날카로운 모서리를 유지
-
band split 최적화는 대형 글리프에서 속도 향상이 있었으나, 작은 글꼴에서는 성능 저하와 복잡성 증가로 제거됨
- 이로 인해 픽셀 셰이더 단순화 및 band 데이터 텍스처 크기 절반 감소
-
adaptive supersampling은 작은 글꼴의 앨리어싱 완화에 사용되었으나, 효과가 제한적이고 새로운 팽창 기법으로 대체되어 제거됨
-
다중 색상 이모지 렌더링은 각 레이어를 독립 글리프로 처리하는 방식으로 변경되어 성능 향상 및 코드 단순화 달성
동적 팽창(Dynamic Dilation)
- 기존에는 글리프 경계 확장을 고정 거리로 수동 지정해야 했음
- 작은 글꼴에서는 경계 손실, 큰 글꼴에서는 불필요한 공간 낭비 발생
- 동적 팽창은 버텍스 셰이더에서 자동 계산되어, 각 글리프 렌더링 시 최적 확장 거리 결정
-
MVP 행렬과 뷰포트 크기를 이용해 반 픽셀 단위로 경계 확장
- 시점 변화에 따라 각 버텍스마다 다른 팽창 거리 적용 가능
- 수학적으로는 뷰포트 공간에서 반 픽셀 확장 조건을 만족하는 거리 d를 구하는 2차 방정식으로 유도
- 최종 해는 (d = \frac{s^3t \pm s^2\sqrt{u^2 + v^2}}{u^2 + v^2 - s^2t^2}) 형태
- 양의 부호를 선택해 외곽 방향으로 이동
- 글리프 크기를 유지하기 위해 em-space 좌표 보정도 수행하며, 각 버텍스에 역 Jacobian 행렬을 저장
특허 해제 및 공개 선언
- Slug 알고리듬은 2019년 미국 특허(US10373352B1) 를 취득했으나, 2038년까지의 독점권을 2026년 3월 17일부로 포기
- USPTO에 SB/43 양식 제출 및 수수료 납부로 특허의 잔여 기간을 공식 포기
- 이에 따라 누구나 Slug 알고리듬을 자유롭게 구현 및 사용 가능
- 상업적·비상업적 목적 모두 허용, 지식재산권 침해 우려 없음
- 실제 구현 참고용으로 GitHub 저장소(https://github.com/EricLengyel/Slug) 공개
-
MIT 라이선스로 제공되며, JCGT 논문보다 개선된 픽셀 셰이더와 동적 팽창 포함 버텍스 셰이더 포함
Slug의 의의
- Slug은 GPU 기반 벡터 폰트 렌더링의 대표적 구현체로 자리잡음
- 10년간의 발전을 통해 성능, 단순성, 품질을 모두 향상
- 특허 해제로 인해 산업 전반에서 자유로운 채택과 확장 가능성 확보