Distance filed fonts

翻译自https://github.com/libgdx/libgdx/wiki/Distance-field-fonts

渲染超级平滑的可缩放的位图字体

Signed distance field(有符号距离场)是一项被应用在《军团要塞2》中的技术,被V社的Chris Green记录成论文Improved Alpha-Tested Magnification for Vector Textures and Special Effects.并发表。这项技术使得即使以高倍率渲染位图字体,其边缘也不会呈锯齿化。

介绍

传统的位图字体的像素若是以1:1比例转化到屏幕上像素,那么其工作起来是没有问题的。然而,它们被旋转后,看起来则会很糟糕,若是被放大则会更糟。你最终要不就会看到一个个独立的像素,要不就会去使用线性插值处理,然后得到难看的模糊。

使用有符号距离场字体可以让你渲染即使被旋转,放大,或经过其他任意转换后仍然保持离散的字体,而且是在很小的开销代价下完成这些。示例如下:
这里写图片描述

同样的技术还可以应用到渲染符号,logo等。这项技术的主要缺点就是它只能应用于黑白色的图像;不可能将这项技术应用到任意颜色的图像上。

工作原理

原理是非常简单的。我们预处理字体的图像来产生一个有符号距离场,而不是直接提供一个这个字体的黑白图像。上图中最右的示例展示了字体图像经过预处理后的样子。

预处理器接受黑底白字的黑白图像作为输入。对其中的每一个白色的像素,预处理器计算出他到最近的黑色像素的距离,若黑白色反之亦然。对每个黑色的像素,黑色像素的距离进行取反操作,然后将结果归一化。这给了我们平滑的,连续的场,并且0.5刚好在原始字体的边缘,往字体外部移动时逐渐降低到0,往内部移动时增长到1。

然后我们规定alpha testing只在alpha大于0.5时才将像素输出。对使用最近邻插值的材质来说,这会和输入图像看起来一模一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值