丝绸着色器 (Silk Shader)
丝绸着色器可作为在高清渲染管线 (High Definition Render Pipeline, HDRP) 中渲染各向异性织物的起点。可以使用丝绸着色器来创建诸如丝绸、缎子、尼龙和聚酯之类的织物。 通常,丝绸和其他合成纤维较为光滑,因为它们是作为单条光滑长丝生产的。编织后即可产生具有各向异性镜面高光的织物。
本质上,丝绸着色器是一个预先配置的 Shader Graph。要进一步了解丝绸着色器的实现方式,或要创建自定义的丝绸着色器变体,请参阅关于织物主栈的 Shader Graph 文档。
导入丝绸织物示例
高清渲染管线 (High Definition Render Pipeline, HDRP) 还随附了丝绸材质示例以进一步帮助你入门。要查找此示例,请执行以下操作:
- 导航到 Windows > Package Manager,然后从包列表中选择 High Definition RP。
- 在显示包详细信息的主窗口中,找到 Samples 部分。
- 要将某个示例导入项目中,请单击 Import into Project 按钮。这会在项目中创建一个 Samples 文件夹,并将您选择的示例导入其中。这也是 Unity 未来将所有示例导入到的位置。
- 在 Asset 窗口中,选择 Samples > High Definition RP > 11.0,然后打开 Fabric 场景。此处可以在场景中看到在上下文中设置并可供使用的丝绸示例材质。
创建丝绸材质
HDRP 中的新材质默认使用光照着色器。要从头开始创建丝绸材质,请创建一个材质,然后将其设置为使用丝绸着色器。为此需要执行以下操作:
在 Unity 编辑器中,导航到项目的 Asset 窗口。
右键单击 Asset 窗口,然后选择 Create > Material。这会在 Unity 项目的 Asset 文件夹中添加一个新材质。
在 Material Inspector 顶部,单击 Shader 下拉选单,然后选择 HDRP > Fabric > Silk。
细线贴图
织物着色器可以使用细线贴图来获取织物展现出的高频细节。这类似于 HDRP 的光照着色器中的细节贴图。细线贴图输入经过通道打包以优化内存,且其排列方式有助于优化法线贴图精度。织物材质示例中提供了一些预先制作的细线贴图。
细线贴图纹理的格式:
- 红色:环境光遮挡
- 绿色和 Alpha:法线。
- 蓝色:平滑度。
本质上,织物着色器使用 SubGraph Operator 来应用细线贴图。要了解有关细线贴图实现方式的更多信息,或亲自使用细线贴图,请执行以下操作:
- 在 Unity 编辑器中,打开 Shader Graph 资源的 Shader Editor。
- 在图形视图中的任何位置单击右键,然后选择 Create Node。
- 导航至 Utility > High Definition Render Pipeline > Fabric > Thread Map Detail,然后选择。这会将细线贴图运算符添加到图中。
绒毛贴图
织物着色器可以使用绒毛贴图为表面提供额外的绒毛细节。绒毛贴图是单通道纹理。为了应用该贴图,织物着色器将该贴图与基色贴图混合在一起以产生用于对织物材质进行着色的最终颜色。
属性
Surface Options
Surface Options 控制材质表面的整体外观以及 Unity 如何在屏幕上渲染材质。
属性 | 描述 |
---|---|
Surface Type | 指定材质是否支持透明度。具有 Transparent Surface Type 的材质比具有 Opaque Surface Type 的材质在渲染时更耗资源。根据选择的选项,HDRP 会显示更多属性。选项包括: • Opaque: • Transparent:模拟光线可以穿透的半透明材质,例如透明塑料或玻璃。 有关该功能的更多信息以及每个 Surface Type 显示的属性列表,请参阅 Surface Type 文档。 |
- Rendering Pass | 指定 HDRP 处理此材质使用的渲染通道。 • Before Refraction:在折射通道之前绘制游戏对象。这意味着 HDRP 在处理折射时包含此材质。要显示此选项,请从 Surface Type 下拉选单中选择 Transparent。 • Default:根据 Surface Type,在默认的不透明或透明渲染通道中绘制游戏对象。 • Low Resolution:在 Default 通道后以半分辨率绘制游戏对象。 • After post-process:仅适用于无光照材质。在执行所有后期处理效果之后绘制游戏对象。 |
- Blending Mode | 指定 HDRP 将材质每个像素的颜色与背景像素混合的方法。选项包括: • Alpha:使用材质的 Alpha 值来更改对象的透明度。0 表示完全透明。1 表示完全不透明,但在透明渲染过程中仍然会渲染材质。对于你希望完全可见但随着时间的推移也会逐渐消失的视觉效果(例如云),这非常有用。 • Additive:将材质的 RGB 值添加到背景颜色。材质的 Alpha 通道可调节强度。值 0 表示不进行任何添加,值为 1 表示将材质颜色的 100% 添加到背景颜色。 • Premultiply:假设已经将材质的 RGB 值乘以 Alpha 通道。当过滤图像或构建不同的层时,这可以提供比 Alpha 混合更好的结果。 仅当 Surface Type 设置为 Transparent 时,才显示此属性。 |
- - Preserve Specular Lighting |
指示是否使 Alpha 混合不降低镜面高光的强度。这可以保留透明表面上的镜面反射元素,例如阳光照射玻璃或水。 仅当 Surface Type 设置为 Transparent 时,才显示此属性。 |
- Sorting Priority | 允许更改重叠的透明表面的渲染顺序。有关更多信息以及用法示例,请参阅材质排序文档。 仅当 Surface Type 设置为 Transparent 时,才显示此属性。 |
- Receive Fog | 指示雾效是否影响透明表面。禁用后,HDRP 在计算场景中的雾效时不会考虑此材质。 |
- Back Then Front Rendering |
指示 HDRP 是否在两个单独的绘制调用中渲染该材质。HDRP 在第一个绘制调用中渲染背面,而在第二个中渲染正面。 仅当 Surface Type 设置为 Transparent 时,才显示此属性。 |
- Transparent Depth Prepass | 指示 HDRP 是否将透明表面中的多边形添加到深度缓冲区以改进其排序。HDRP 在光照通道之前执行此操作,此过程可提高 GPU 性能。 |
- Transparent Depth Postpass | 指示 HDRP 是否将多边形添加到后期处理使用的深度缓冲区。HDRP 在光照通道之前执行此操作。如果要使用需要深度信息的后期处理效果(如运动模糊或景深),启用此功能非常有用。 |
- Transparent Writes Motion Vectors | 指示 HDRP 是否为使用该材质的透明游戏对象写入运动矢量。这允许 HDRP 处理透明对象的运动模糊等效果。有关运动矢量的更多信息,请参阅运动矢量文档。 仅当 Surface Type 设置为 Transparent 时,才显示此属性。 |
- Depth Write | 指示 HDRP 是否为使用该材质的游戏对象写入深度值。 |
- Depth Test | 指定由 HDRP 用于深度测试的比较函数。 |
- Cull Mode | 指定对于使用此材质的游戏对象需要剔除哪个面。选项包括: • Front:剔除网格的正面。 • Back:剔除网格的背面。 仅当禁用 Double Sided 的情况下,才显示此属性。 |
Alpha Clipping |
指示该材质是否类似于镂空着色器 (Cutout Shader)。 有关该功能的更多信息以及该功能显示的属性列表,请参阅 Alpha Clipping 文档。 |
- Threshold | 由 HDRP 用于确定是否渲染每个像素的 Alpha 值阈值。如果像素的 Alpha 值等于或高于此阈值,则 HDRP 会渲染该像素。如果低于此阈值,则 HDRP 不会渲染该像素。默认值为 0.5。 |
- Use Shadow Threshold |
指示 HDRP 是否对 Alpha 裁剪阴影使用另一个阈值。 仅当启用 Alpha Clipping 时,才显示此属性。 |
- - Shadow Threshold |
HDRP 用于确定是否应渲染像素阴影的 Alpha 值阈值。 仅当启用 Use Shadow Threshold 时,才显示此属性。 |
- Alpha to Mask |
指示是否开启 alpha-to-coverage。如果项目使用 MSAA,alpha-to-coverage 会根据像素着色器结果 Alpha 值按比例修改多重采样覆盖率遮罩。通常用于植被抗锯齿和其他经过 Alpha 测试的着色器。 仅当启用 Alpha Clipping 时,才显示此属性。 |
- Prepass Threshold |
HDRP 用于透明深度预通道的 Alpha 值阈值。此属性的原理与上述主 Threshold 属性相同。 仅当启用 Transparent Depth Prepass 复选框时,才显示此属性。 |
- Postpass Threshold |
HDRP 用于透明深度后通道的 Alpha 值阈值。此属性的原理与上述主 Threshold 属性相同。 仅当启用 Transparent Depth Postpass 复选框时,才显示此属性。 |
Double Sided | 指示 HDRP 是否渲染几何体中多边形的两个面。有关该功能的更多信息以及该功能可显示的属性列表,请参阅 Double-Sided 文档。 |
- Normal Mode | 指定 HDRP 用于计算背面几何体法线的模式。 • Flip:背面法线与正面法线成 180°。这也适用于材质,这意味着材质在几何体的两面看起来相同。 • Mirror:背面法线是正面法线的镜像。这也适用于材质,这意味着材质在背面反转。当想要在几何体的两面保留相同的形状(例如叶子)时,这非常有用。 • None:背面法线与正面相同。 仅当启用 Double-Sided 时,才显示此属性。 |
Material Type | 指定材质的类型。允许根据选择的类型使用不同的设置对材质进行自定义。选项包括: • Subsurface Scattering:将次表面散射 (subsurface scattering) 工作流应用于材质。次表面散射工作流程可以模拟光线与半透明对象(如皮肤或植物叶子)的相互作用和穿透方式。光线穿透次表面散射材质的表面时,会在离开表面之前在不同点散射和模糊。 • Standard:将基本金属性着色器工作流程应用于材质。这是默认的 Material Type 设置。 • Anisotropy:将各向异性 (anisotropic) 工作流程应用于材质。从不同角度观看材质时,各向异性表面的高光会在外观上发生变化。使用此 Material Type 可以创建具有各向异性高光的材质。例如,拉丝金属或天鹅绒材质。 • Iridescence:将彩虹色 (Iridescence) 工作流程应用于材质。随着视角或光照角度的变化,彩虹色表面看起来会逐渐改变颜色。使用此 Material Type 可以创建诸如肥皂泡、闪光金属或昆虫翅膀之类的材质。 • Specular Color:将镜面反射颜色 (Specular Color) 工作流程应用于材质。使用此 Material Type 可以创建具有彩色镜面高光的材质。这类似于内置的镜面反射着色器 (Specular Shader)。 • Translucent:将半透明 (Translucent) 工作流程应用于材质。使用此 Material Type 和厚度贴图可以模拟半透明材质。与次表面散射材质不同,半透明材质不会模糊穿透材质的光线。 有关该功能的更多信息以及每个 Material Type 显示的属性列表,请参阅 Material Type 文档。 |
- Transmission |
指示 HDRP 是否使用厚度贴图模拟材质的半透明度。可以使用扩散配置文件 (Diffusion Profile) 来配置次表面散射和透射设置。如需了解更多信息,请参阅有关次表面散射的文档。 仅当从 Material Type 下拉选单中选择 Subsurface Scattering 时,才显示此属性。 |
Receive Decals | 指示 HDRP 是否可以在该材质的表面上绘制贴花。 |
Receive SSR/SSGI | 指示是否在处理屏幕空间反射通道时使 HDRP 包含该材质。HDRP 在计算屏幕空间全局光照时也会考虑此材质。 仅当 Surface Type 设置为 Opaque 时,才会显示此属性。 |
Receive SSR Transparent | 指示是否在处理屏幕空间反射通道时使 HDRP 包含该材质。 仅当 Surface Type 设置为 Transparent 时,才显示此属性。 |
Geometric Specular AA | 指示 HDRP 是否对此材质执行几何抗锯齿。这会修改曲面几何体表面上的平滑度值,从而消除镜面反射瑕疵。 有关该功能的更多信息以及该功能显示的属性列表,请参阅几何镜面反射抗锯齿 (Geometric Specular Anti-aliasing) 文档。 |
- Screen Space Variance | 几何镜面反射抗锯齿效果的强度(大小介于 0 和 1 之间)。较大的值会产生锯齿较少、更模糊的结果。 仅当启用 Geometric Specular AA 时,才显示此属性。 |
- Threshold | HDRP 为了减少瑕疵而从平滑度值减去的最大偏移值。 仅当启用 Geometric Specular AA 时,才显示此属性。 |
Displacement Mode | 指定 HDRP 用于更改材质表面高度的方法。选项包括: • None:不对材质应用位移。 • Vertex displacement:根据 Height Map 对网格顶点进行移位。 • Pixel displacement:根据 Height Map 对网格表面上的像素进行移位。 有关该功能的更多信息以及每个 Displacement Mode 显示的属性列表,请参阅 Displacement Mode 文档。 |
- Lock With Object Scale | 指示是否使用变换组件的缩放值更改位移高度。这样可以保持位移幅度与变换组件的缩放值之间的比率。 仅当 Displacement Mode 设置为 Vertex Displacement 或 Pixel Displacement 时,才显示此属性。 |
- Lock With Height Map Tiling Rate | 指示是否使用高度贴图 (Height Map) 的平铺值更改位移幅度。这样可以保持位移幅度与高度贴图 (Height Map) 纹理的缩放值之间的比率。 仅当 Displacement Mode 设置为 Vertex Displacement 或 Pixel Displacement 时,才显示此属性。 |
- Minimum Steps | Unity 处理像素位移时所需执行的最小纹理样本数。 仅当 Displacement Mode 设置为 Pixel Displacement 时,才显示此属性。 |
- Maximum Steps | Unity 处理像素位移时所需执行的最大纹理样本数。 仅当 Displacement Mode 设置为 Pixel Displacement 时,才显示此属性。 |
- Fading Mip Level Start | 像素位移效果开始淡出的 Mip 级别。 仅当 Displacement Mode 设置为 Pixel Displacement 时,才显示此属性。 |
- Primitive Length | Unity 应用位移贴图的网格长度(以米为单位)。 仅当 Displacement Mode 设置为 Pixel Displacement 时,才显示此属性。 |
- Primitive Width | Unity 应用位移贴图的网格宽度(以米为单位)。 仅当 Displacement Mode 设置为 Pixel Displacement 时,才显示此属性。 |
- Depth Offset | 指示 HDRP 是否根据位移修改深度缓冲区。因此,使用深度缓冲区的效果(例如,接触阴影 (Contact Shadows))可以捕获像素位移细节。 仅当 Displacement Mode 设置为 Pixel Displacement 时,才显示此属性。 |
Exposed Properties
属性 | 描述 |
---|---|
Base UV Mask | 在与所需通道相对应的列中键入“1”并在其他列中键入 0 来设置基础 UV 通道。 |
Base UV Scale Transform | 设置基础 UV 的平铺率 (xy) 和偏移 (zw)。 |
Base Color Map | 指定一个纹理来控制材质的基色。 |
Base Color | 设置材质的颜色。如果不指定纹理,这将是材质的绝对颜色。如果指定了纹理,则材质的最终颜色是你指定的纹理和所选颜色的组合。如果从 Surface Type 下拉选单中选择 Transparent,则颜色的 Alpha 值将控制材质的透明度级别。 |
Mask Map AO(G) S(A) | 指定一个通道打包的纹理以将以下材质贴图打包到其 RGBA 通道中。 • Green:存储环境光遮挡贴图。 • Alpha:存储平滑度贴图。有关通道打包的纹理和遮罩贴图的更多信息,请参阅遮罩贴图。 |
Smoothness Min | 设置材质的最小平滑度。 |
Smoothness Max | 设置材质的最大平滑度。 |
Specular Color | 设置镜面高光的颜色。 |
Normal Map | 指定一个纹理来定义此材质的切线空间法线贴图。 |
Normal Map Strength | 在 0 到 8 之间调节法线强度。 |
Use Thread Map | 设置是否将细线贴图细节应用于材质。 |
Thread Map AO(R) Ny(G) S(B) Nx(A) | 指定一个纹理来定义织物细线参数,其 RGBA 通道中具有以下贴图。• Red:存储环境光遮挡贴图。• Green:存储法线的 Y 分量。• Blue:存储平滑度贴图。• Alpha:存储法线的 X 分量。有关通道打包的纹理和遮罩贴图的更多信息,请参阅遮罩贴图。 |
Thread UV Mask | 在与所需通道相对应的列中键入“1”并在其他列中键入 0 来设置细线 UV 通道。 |
Thread UV Scale Transform | 设置细线 UV 的平铺率 (xy) 和偏移 (zw)。 |
Thread AO Strength | 修改细线贴图中存储的 AO 的强度。 |
Thread Normal Strength | 修改细线贴图中存储的法线的强度。 |
Thread Smoothness Scale | 修改细线贴图中存储的平滑度的缩放。 |
Fuzz Map | 指定一个纹理以向材质基色添加绒毛细节。 |
Fuzz Map UV Scale | 设置用于采样绒毛贴图的细线 UV 的缩放。 |
Fuzz Strength | 设置添加到基色的绒毛颜色的强度。 |
Diffusion Profile | 设置扩散配置文件 (Diffusion Profile) 来控制材质的次表面散射属性。 |
Advanced Options
属性 | 描述 |
---|---|
Enable GPU Instancing | 启用此复选框可以指示 HDRP 在一个批次中使用相同的几何体和材质来渲染网格(如果可能)。这样可以加快渲染速度。如果网格具有不同的材质或者硬件不支持 GPU 实例化,则 HDRP 无法在一个批次中渲染这些网格。例如,如果游戏对象具有基于对象轴心的动画,则不能对它们进行静态批处理,但 GPU 可以实例化它们。 |
Baked Emission | 指示发射颜色是否影响全局光照。 |
Motion Vector For Vertex Animation | 指示 HDRP 是否为使用顶点动画的游戏对象编写运动矢量。这将消除顶点动画可能导致的重影。 |
Add Precomputed Velocity | 指示是否使用存储在 Alembic 文件中的预先计算的速度信息。 |
限制
面光源当前不支持织物和毛发材质。这意味着它们不会照亮使用以下任何项目的材质,也不能投射这些材质的阴影: