2 个稳定版本
1.0.1 | 2021年7月2日 |
---|---|
1.0.0 | 2019年6月7日 |
#91 在 渲染
1MB
2.5K SLoC
多通道符号距离场字体 - 技术演示
多通道符号距离场是一种技术,它将具有距离信息的符号光栅化到低分辨率纹理中,然后使用该纹理渲染高质量文本。您可以在这里和这里找到更多关于它的信息。
安装
下载并安装 Rust 工具链 并输入: cargo install mcsdf-font-tech-demo
.
目标
- 创建一个 Rust 技术演示来展示一种技术。
- 在光栅化阶段不要分配内存。
- 符号光栅化被并行化到多个 CPU 核心上。
- 只有当需要时才对符号进行光栅化。
- 实际的字体渲染和符号光栅化不会互相阻塞。同步点是 CPU 到 GPU 的纹理复制。
- 光栅化代码被分离到
sdf
库中。
用户界面
轮廓
- 红色,绿色,蓝色 - 改变文本颜色。
- 内距离 - 从该距离开始绘制字体轮廓。默认情况下,边界在 0.5 距离处。内侧小于该距离,外侧大于该距离。
- 外距离 - 绘制字体轮廓的距离。
- 锐度 - 一个额外的参数,用于平滑边界。高锐度可能导致当纹理的 阴影大小 值较小时出现伪影。
阴影
- 红色,绿色,蓝色 - 改变阴影颜色。
- 不透明度 - 阴影的不透明度。
- 位置 - 阴影中心的距离。
- 大小 - 以距离单位计的阴影大小。
纹理
- 大小 - 可以调整大小以适应更多符号到一个纹理中。这很有用,因为字体可以在更少的步骤中渲染。目前,由于 API 限制,整个纹理需要复制,这将延迟渲染过程。
- 字体大小 - 光栅化符号的大小,不包括阴影。原则上,值越高表示质量越高,但光栅化时间可能会大幅增加。
- 阴影大小 - 0.0 到 1.0 距离之间的像素数。值越高会增加阴影的质量,但会降低边缘质量,反之亦然。
渲染统计信息
您可以看到上述设置如何影响性能。
其他
-
显示动画 - 鼠标光标下的文本有更强调的距离。
-
纹理可见性 - 当设置为1.0时,显示底层纹理而不是渲染的文本。
依赖项
~12MB
~233K SLoC