- Thuật toán Slug, thực hiện kết xuất phông chữ dựa trên đường cong Bézier trên GPU, kết xuất trực tiếp dữ liệu vector mà không cần texture, và được sử dụng trong nhiều ngành như game, CAD, biên tập video, thiết bị y tế
- Do từ bỏ quyền độc quyền kể từ 2026/3/17, bằng sáng chế đã được giải phóng hoàn toàn vào phạm vi công cộng, nên bất kỳ ai cũng có thể tự do sử dụng
- Ở các phiên bản gần đây, hiệu năng và hiệu quả mã nguồn được cải thiện nhờ tối ưu hóa band split và loại bỏ supersampling, cũng như đơn giản hóa cách kết xuất emoji
- Thay đổi lớn nhất là tính năng dynamic dilation (giãn nở động), tự động tính toán mức mở rộng biên tối ưu theo kích thước glyph và góc nhìn
- Ai cũng có thể tự do triển khai thông qua mã shader tham chiếu trên GitHub được phát hành theo giấy phép MIT
Quá trình phát triển và lan rộng của thuật toán Slug
- Thuật toán Slug được phát triển vào mùa thu năm 2016 và công bố trong bài báo JCGT năm 2017
- Sau đó Slug Library 1.0 được thương mại hóa và cấp phép cho các công ty lớn như Activision, Blizzard, Ubisoft, Adobe
- Được sử dụng trong nhiều lĩnh vực như game, trực quan hóa khoa học, CAD, biên tập video, thiết bị y tế, nhà chiếu hình thiên văn
- Ban đầu nó được phát triển để phục vụ kết xuất văn bản chất lượng cao cho C4 Engine, sau đó cũng được áp dụng cho trình soạn thảo công thức Radical Pie
- Biểu diễn các thành phần đồ họa vector như công thức, dấu ngoặc, mũi tên ở độ phân giải cao
Sự tiến hóa của phương thức kết xuất
- Slug kết xuất trực tiếp dữ liệu đường cong Bézier trên GPU mà không cần texture được tiền tính toán
- Chịu lỗi số thực dấu chấm động tốt, đồng thời giữ được đường cong mượt và góc cạnh sắc nét
- Tối ưu hóa band split từng giúp tăng tốc với glyph lớn, nhưng đã bị loại bỏ vì làm giảm hiệu năng ở cỡ chữ nhỏ và làm tăng độ phức tạp
- Nhờ đó shader pixel được đơn giản hóa và kích thước texture dữ liệu band giảm một nửa
- Adaptive supersampling từng được dùng để giảm hiện tượng răng cưa ở cỡ chữ nhỏ, nhưng do hiệu quả hạn chế và đã được thay thế bằng kỹ thuật giãn nở mới nên bị loại bỏ
- Kết xuất emoji đa màu được đổi sang cách xử lý mỗi layer như một glyph độc lập, qua đó cải thiện hiệu năng và đơn giản hóa mã nguồn
Dynamic Dilation
- Trước đây, việc mở rộng biên glyph phải được chỉ định thủ công bằng một khoảng cách cố định
- Với cỡ chữ nhỏ thì dễ mất biên, còn với cỡ chữ lớn thì lãng phí không gian không cần thiết
- Dynamic dilation được tính toán tự động trong vertex shader, quyết định khoảng cách mở rộng tối ưu mỗi khi kết xuất từng glyph
- Dùng ma trận MVP và kích thước viewport để mở rộng biên theo đơn vị nửa pixel
- Có thể áp dụng khoảng giãn nở khác nhau cho từng vertex tùy theo thay đổi góc nhìn
- Về mặt toán học, nó được suy ra thành một phương trình bậc hai để tìm khoảng cách d thỏa điều kiện mở rộng nửa pixel trong không gian viewport
- Nghiệm cuối cùng có dạng (d = \frac{s^3t \pm s^2\sqrt{u^2 + v^2}}{u^2 + v^2 - s^2t^2})
- Chọn dấu dương để dịch chuyển theo hướng ra ngoài
- Để giữ nguyên kích thước glyph, hệ thống cũng thực hiện hiệu chỉnh tọa độ em-space, đồng thời lưu ma trận Jacobian nghịch đảo tại mỗi vertex
Tuyên bố gỡ bỏ bằng sáng chế và công khai
- Thuật toán Slug đã nhận bằng sáng chế Mỹ (US10373352B1) vào năm 2019, nhưng đã từ bỏ quyền độc quyền từ ngày 17 tháng 3 năm 2026 thay vì giữ đến năm 2038
- Chính thức từ bỏ thời hạn còn lại của bằng sáng chế bằng cách nộp mẫu SB/43 và thanh toán lệ phí cho USPTO
- Nhờ đó, bất kỳ ai cũng có thể tự do triển khai và sử dụng thuật toán Slug
- Cho phép cho cả mục đích thương mại lẫn phi thương mại, không còn lo ngại vi phạm quyền sở hữu trí tuệ
- Kho lưu trữ GitHub (https://github.com/EricLengyel/Slug) cũng được công khai để tham khảo triển khai thực tế
- Được cung cấp theo giấy phép MIT, bao gồm pixel shader đã cải tiến so với bài báo JCGT và vertex shader có tích hợp dynamic dilation
Ý nghĩa của Slug
- Slug đã trở thành một triển khai tiêu biểu của kết xuất phông chữ vector trên GPU
- Qua 10 năm phát triển, nó đã cải thiện đồng thời hiệu năng, tính đơn giản và chất lượng
- Việc gỡ bỏ bằng sáng chế mở ra khả năng được tự do áp dụng và mở rộng trên toàn ngành
2 bình luận
Đúng là một tin tuyệt vời.
Bình luận trên Hacker News
Giờ đây việc nó được hiến tặng vào phạm vi công cộng sau một khoảng thời gian thật đáng cảm kích. Nếu một ngày nào đó tôi làm trình giả lập terminal, tôi muốn thử dùng thuật toán này chỉ vì vẻ đẹp thẩm mỹ của đoạn mã
Đây là trình biên tập công thức toán học chuyên nghiệp cho Windows 10/11, dùng Slug làm engine dựng hình và có giá 60 USD. Có lẽ ông cũng đang dùng nó để viết cuốn sách FGED
Dù vậy, đây là một lựa chọn thay thế rất tốt cho MathType, và việc tích hợp OLE giúp chèn vào Word rất tốt là điều khá ấn tượng
Tôi xem nó là đỉnh cao của kỹ nghệ phần mềm. Cảm ơn tác giả đã hiến tặng nó cho phạm vi công cộng
Mong là sẽ có nhiều trường hợp như vậy hơn
Nhân tiện, bằng sáng chế Loop-Blinn của Microsoft (cho đường cong bậc ba) cũng sắp hết hạn, nên bối cảnh render văn bản có thể thay đổi lớn
Hồi đó họ dùng cách xấp xỉ đường cong bằng tam giác, và tôi không biết bây giờ còn vậy không
Những cách như texture atlas hay SDF trước đây có vẻ chỉ là giải pháp tạm thời, và chất lượng giảm đi khi thay đổi tỉ lệ
Nay Slug đã được mở ra, tôi hy vọng các thư viện lớn hay game engine sẽ áp dụng nhiều hơn các phương pháp dựng hình chất lượng cao
Tôi không biết là ông ấy vẫn còn hoạt động tích cực trong lĩnh vực này