#distance-field #font-rendering #demo #texture #glyph #multi-channel #signed

app mcsdf-font-tech-demo

多通道符号距离场字体技术演示

2 个稳定版本

1.0.1 2021年7月2日
1.0.0 2019年6月7日

#91渲染

MIT 许可证

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