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已向一个人提出了申请,并且该过程仍在进行中...