U4S5L19——SDF 材质球和参数设置

SDF

SDF 是 有符号距离场 (Signed Distance Field) 的缩写,其中:

  • 有符号(Signed):指的是距离可以为正或负,表示一个点位于边界的内部(负值)还是外部(正值)
  • 距离(Distance):表示每个像素点到字符边缘的距离
  • 场(Field):指的是整个字体或图形周围的距离值的分布

它是一种用于高质量文本和图形渲染的技术,尤其适用于缩放或在低分辨率下保持边缘平滑的情况

它的本质就是在一个 Shader(着色器)中利用 SDF 相关算法规则来渲染文字
SDF 技术生成的字体纹理并不是普通的位图,而是基于每个像素到字体边缘的距离值。
这些距离值存储在纹理的灰度通道中,代表每个像素到字符边缘的距离信息。
然后在渲染时,着色器根据这些距离值动态计算字体的边缘,最终渲染出平滑的字符轮廓。

主要在 TMP 中用于生成和渲染文本,能让字体在任意大小或距离下保持清晰和锐利的效果

SDF 材质球指什么

我们创建的字体资源使用的材质球,本质上就是一个使用了 SDF 相关 Shader 的材质球
利用该Shader渲染出来的字体效果会更好,并且该Shader提供了很多可以被配置的参数
我们可以在对应字体的材质球中修改这些参数,从而让我们的字体实现一些更复杂的美术表现效果

因此我们需要学习字体材质球中的这些参数,从而帮助我们利用它来实现我们的表现需求

SDF 材质球中的主要内容

以下的设置可以在字体资源的材质球上的对字体全局地进行设置,也可以单独为某个 TMP 控件设置,参数是一样的

image

  1. Face:基础表面设置
  2. Outline:边缘线效果设置
  3. Underlay:阴影(底层)效果设置
  4. Lighting:照明效果设置
  5. Grow:发光效果设置
  6. Debug Settings:调试设置

基础表面设置

image

  • Color: 文本表面颜色,该颜色会和 TMP 组件中设置的颜色相乘进行叠加

  • Texture:可以为文本添加贴图

    • Tiling:平铺(缩放)
    • Offset:偏移
    • Speed:移动速度(可以实现纹理滚动效果,配合UV映射使用)

    以此纹理为例:image

    显示效果:image

  • Softness:边缘柔和度,可以让文字边缘产生模糊感

    设置为0.5时的显示效果:image

  • Dilate:拓展,类似改变粗细的效果

边缘线和阴影设置

边缘线设置

image

  • Color:边缘线颜色
  • Texture:边缘线纹理,会用纹理颜色和轮廓颜色相乘叠加
  • Thickness:轮廓粗细,值越大越粗

以上图参数作为示例,显示效果:image

阴影(底层)设置

需要勾选左上角的多选框才能生效

阴影相当于在字的底部再渲染一个相同的字,以下的参数都是对整个底部的字的参数调整

image

  • Underlay Type:底图阴影类型

    • None:无阴影
    • Normal:正常标准的底图样式
    • Inner:反转底图,用原始文本遮罩它
  • Color:底图阴影的颜色

  • Offset X:阴影字的X偏移

  • Offset Y:阴影字的Y偏移

  • Dilate:阴影字的拓展,相当于粗细

  • Softness:阴影字的边缘柔和度,让阴影边界产生模糊感

以上图参数作为示例,显示效果:image

照明设置

需要勾选左上角的多选框才能生效

image

  • Bevel:斜面设置,它可以让字体边缘呈现斜面效果

    此设置可能需要配合边缘线才能显示出效果

    • Type:斜面类型

      • Outer Bevel:外斜面

        让字体产生带有倾斜侧面的凸起效果,相当于向中间凸起来

      • Inner Bevel:内斜面

        轮廓凸起的文本,相当于向中间凹进去

    • Amount:陡峭程度

    • Offset:位置偏移

    • Width:斜面大小

    • Roundness:让斜面更加平滑,产生更多角度区域

    • Clamp:限制斜面最大高度

    显示示例:image

  • Local Lighting:本地照明设置

    对于光照相关知识,详见:US3S1——Shader入门-光照效果

    • Light Angle: 光照角度,模拟局部光的角度
    • Specular Color:镜面反射颜色
    • Specular Power:镜面发射强度
    • Reflectivity Power:反射强度,值越大越能反应周围环境的颜色
    • Diffuse Shadow:漫反射阴影,调整整体阴影的等级,值越高,阴影越强
    • Amblent Shadow:环境阴影,调整环境光照水平
  • Bump Map:凹凸贴图设置

    关于发现贴图(#TODO#​)

    • Texture:凹凸贴图
    • Face:凹凸影响程度
    • Outline:凹凸贴图对文本轮廓的影响程度
  • Environment Map:环境设置

    关于立方体贴图(#TODO#​)

    • Face Color:立方体贴图对文本的颜色影响,会和文本进行颜色叠加
    • Outline Color:立方体贴图对文本的轮廓颜色影响,会和轮廓进行颜色叠加
    • Texture:环境的立方体贴图
    • Rotation:旋转环境贴图

以上图参数作为示例,显示效果:image

发光设置

需要勾选左上角的多选框才能生效

image

  • Color:发光颜色
  • Offset:发光效果中心偏移值
  • Inner:发光想过向内延伸距离
  • Outer:发光效果向外延伸距离
  • Power:发光强度

以上图参数作为示例,显示效果:image

调试设置

主要公布了 Shader 内部的一些属性,可以看到该 Shader 中更多的一些属性

image

  • Font Atlas:字体图集

  • Gradient Scale:渐变比例

  • Texture Width/Height:纹理宽高

  • Scale X/Y:SDF比例乘数,越大越清晰,越小越模糊

  • Sharpness:清晰度

  • Perspective Filter:透视过滤器

    使用透视摄像机时,调整该设置,可以让文本看起来更柔和

  • Offset X、Y:每个字符顶点位置的偏移量

  • Mask:蒙版 关闭蒙版 较硬蒙版 柔和蒙版

  • Clip Rect:剪辑矩形,用于设置遮罩矩阵范围

  • Stencil ID:模板ID

  • Stencil Comp:模板成分

  • Uset Ratios:使用率

  • Cull Mode:裁剪模式