Sluggish
1.0.0
這是一個玩具/實驗項目,展示瞭如何使用CPU和GPU上的Eric Lengyel的Slug算法渲染字形。
我建議至少閱讀任何代碼之前的參考部分中鏈接的幻燈片。
| 子項目 | 目的 |
|---|---|
| 字體生成器 | 讀取.ttf truetype字體文件並輸出一個.sluggish文件 |
| 軟件渲染器 | 讀取一個.sluggish文件並輸出每個指定代碼點的.tga映像 |
| 硬件渲染器 | 讀取一個.sluggish文件,並使用OpenGL呈現多達6個指定的字形 |
| 特徵 | 支持 |
|---|---|
| 曲線紋理(FP32) | 是的 |
| 樂隊紋理(U16) | 是的 |
| 將字形切成帶(性能) | 是的 |
| 排序曲線(性能) | 是的 |
| 任何事物的高質量實施 | 不 |
| 高性能 | 不 |
| 16位浮點編碼 | 不 |
| 數據刪除和壓縮 | 不 |
| 文本佈局 | 不 |
| 彩色形狀 | 不 |
| 自適應超級採樣 | 不 |
| 伽馬校正 | 不 |
| 邊界多邊形 | 不 |
目標是使事情變得非常簡單,同時仍然沒有糟糕的表現。例如,將字形切成頻帶的切割已經實現,因為它很簡單,並且可以大大提高性能。
默認情況下,調試器的目標可執行文件不在輸出目錄中,而是由SLUGGISH_APP_DIR環境變量指定的目錄路徑。
每個構建後,將.EXE和.pdb文件複製到該目錄。
為了簡化此過程,您可以通過簡單的批處理腳本啟動Visual Studio:
:: This file would sit next to the Sluggish directory
cd Sluggishmakefilesvs2013
set SLUGGISH_APP_DIR=C:important_stuffsluggish
Sluggish.sln
要了解有關SLUG算法的工作原理的更多信息,請參閱:
Eric Lengyel直接從字形大綱中渲染以GPU為中心的字體
計算機圖形技術雜誌(JCGT),第1卷。 6,不。 2,31-47,2017
論文:http://jcgt.org/publing/0006/02/02
幻燈片:http://terathon.com/i3d2018_lengyel.pdf
| 項目/文件 | 許可證 | 許可證文件 |
|---|---|---|
| 這個項目 | 不執行(公共領域) | 不實用 |
| SDL 2 | Zlib | libs/sdl2/copying.txt |
| Glew | 修改後的BSD許可證 MESA 3-D許可證(MIT) Khronos許可證(麻省理工學院) | libs/glew/licens.txt |
| 預選5 | 預選5 | makefiles/premake_license.txt |
| stb_truetype.h | 挑選確定: 不執行(公共領域) 麻省理工學院 | 代碼/生成器/stb_truetype.h |
| stb_image_write.h | 挑選確定: 不執行(公共領域) 麻省理工學院 | 代碼/renderer_sw/stb_image_write.h |
雖然截至撰寫本文時,SLUG算法沒有專利,但Eric Lengyel已向一個人提出了申請,並且該過程仍在進行中...