毛发主节点
您可以在高清渲染管线 (High Definition Render Pipeline, HDRP) 中使用毛发材质 (Hair Material) 来渲染毛发。为了创建逼真的头发效果,这种情况会使用称为毛发卡片的层。每张毛发卡片代表毛发的不同部分。如果使用半透明毛发卡片,必须手动对这些卡片进行排序,以便这些卡片在每个方向上查看都是从后到前顺序排列。
像光照着色器 (Lit Shader) 一样,毛发着色器 (Hair Shader) 没有实现 Inspector。因此,需要使用基于节点的着色器编辑器 Shader Graph 来配置毛发材质。
毛发主节点是 Hair Shader Graph 的目标节点。该节点包含可以附加到其他 Shader Graph 节点的端口,因此您可以编辑控制毛发材质外观的属性。要自定义毛发材质,必须使用自定义的值来覆盖附加到这些字段的输入值。
创建和编辑毛发材质
毛发材质使用 Shader Graph 主节点,这意味着你需要使用特定的方法来创建和编辑毛发材质。有关如何执行此操作的更多信息,请参阅创建和编辑 HDRP Shader Graph。从 Shader Graph 创建材质时,在 Blackboard 中显示的属性将显示在 Exposed Properties 部分中。
属性
主节点有一些属性,使用主节点的材质也有一些属性。材质属性位于使用此着色器的材质的 Inspector 中,而主节点属性位于 Shader Graph 内本身的以下两个部分中:
- 主节点输入端口:主节点本身的 Shader Graph 输入端口,您可以将这些端口连接到其他节点的输出端,或者在某些情况下,将您自己的值添加到这些端口。
- 主节点设置菜单:此部分的设置可用于自定义主节点并显示更多输入端口。
主节点输入端口
下表描述了毛发主节点上的输入端口,包括用于每个端口的属性类型和着色器阶段。如需了解着色器阶段的更多信息,请参阅着色器阶段。
属性 | 类型 | 阶段 | 描述 |
---|---|---|---|
Position | 矢量 3 | 顶点 | 毛发卡片或样条线的顶点位置。 |
Diffuse Color | 矢量 3 | 片元 | 像素的颜色。要分配贴图,请连接采样的 Texture2D。 |
Specular Occlusion | Float | 片元 | 镜面反射全局光照的强度的乘数。仅当从 Specular Occlusion Mode 下拉选单选择 Custom 时,才会显示此端口。 |
Normal | 矢量 3 | 片元 | 毛发卡片的法线。 |
Bent Normal | 矢量 3 | 片元 | 毛发卡片的弯曲法线。 |
Smoothness | Float | 片元 | 设置主要镜面高光的外观。照射到光滑表面的每条光线都将以可预测且一致的角度反弹。对于像镜子一样反射光线的完美光滑表面,应将此属性设置为值 1。对于较粗糙的表面,请将此属性设置为较低的值。 |
Ambient Occlusion | Float | 片元 | 漫射全局光照的强度的乘数。将此值设置为 0 可移除所有全局光照。 |
Transmittance | 矢量 3 | 片元 | 设置从后面穿透毛发的镜面反射光照的比例。这是基于每个颜色的通道,因此您可以使用此属性来设置穿透光的颜色。将此属性设置为 (0, 0, 0) 可以阻止任何光线穿透毛发。将此属性设置为 (1, 1, 1) 可以使大量白光通过毛发透射,从而产生强烈的效果。 |
Rim Transmission Intensity | Float | 片元 | 设置毛发边缘周围的背光毛发强度。将此属性设置为 0 可以完全消除透射效果。 |
Hair Strand Direction | 矢量 3 | 片元 | 使用毛发卡片进行建模时设置毛发的流动方向(从发根到发尖)。 |
Alpha | Float | 片元 | 设置毛发的覆盖率/不透明度。将此值设置为 0 可使毛发完全透明。将此值设置为 1 可使毛发完全不透明。 |
Alpha Clip Threshold | Float | 片元 | 设置 HDRP 用于确定是否应渲染每个像素的 Alpha 值阈值。如果像素的 Alpha 值等于或高于此阈值,则 HDRP 会渲染该像素。如果低于此阈值,则 HDRP 不会渲染该像素。仅当启用 Alpha Clipping 设置时,才会显示此端口。 |
Alpha Clip Threshold (Depth Prepass) | Float | 片元 | 设置 HDRP 用于确定是否应从深度预通道中丢弃片元的 Alpha 值阈值。 仅当启用 Alpha Clipping 和 Transparent Depth Postpass 设置时,才会显示此端口。 |
Alpha Clip Threshold (Depth Postpass) | Float | 片元 | 设置 HDRP 用于确定是否应从深度后通道中丢弃片元的 Alpha 值阈值。 仅当启用 Alpha Clipping 和 Transparent Depth Postpass 设置时,才会显示此端口。 |
Alpha Clip Threshold (Shadow Pass) | Float | 片元 | 设置 HDRP 用于确定是否应渲染片元阴影的 Alpha 值阈值。 仅当启用 Use Shadow Threshold 设置时,才会显示此端口。 |
Specular AA Screen Space Variance | Float | 片元 | 设置几何镜面反射抗锯齿效果的强度(大小介于 0 和 1 之间)。较大的值会产生锯齿较少、更模糊的结果。 仅当启用 Geometric Specular AA 设置时,才显示此端口。 |
Specular AA Threshold | Float | 片元 | 设置 HDRP 为了减少瑕疵而从平滑度值减去的最大值。 仅当启用 Geometric Specular AA 设置时,才会显示此端口。 |
Specular Tint | 矢量 3 | 片元 | 设置主要镜面高光的颜色。 |
Specular Shift | Float | 片元 | 修改主要镜面高光的位置。 |
Secondary Specular Tint | 矢量 3 | 片元 | 设置次要镜面高光的颜色。 |
Secondary Smoothness | Float | 片元 | 控制次要镜面高光的外观。增加此值可使高光更小。 |
Secondary Specular Shift | Float | 片元 | 修改次要镜面高光的位置。 |
Baked GI | 矢量 3 | 片元 | 用可设置的值替换内置的漫射 GI 解决方案。仅适用于网格的正面。 仅当启用 Override Baked GI 设置时,才显示此端口。 |
Baked Back GI | 矢量 3 | 片元 | 用可设置的值替换内置的漫射 GI 解决方案。仅适用于网格的背面。 仅当启用 Override Baked GI 设置时,才显示此端口。 |
Depth offset | Float | 片元 | 设置着色器用来增加片元深度的增量值。此属性将片元推离摄像机,有助于减轻毛发卡片的平坦外观。 仅当启用 Depth Offset 设置时,才会显示此端口。 |
主节点设置菜单
要查看这些属性,请单击主节点右上角的齿轮图标。
属性 | 描述 |
---|---|
Precision | 选择着色器处理的计算精度以计算出如何渲染毛发。较低的精度计算速度更快,但是会引起一些问题,例如镜面高光的强度不正确。 • Inherit:使用全局精度设置。这是最高精度的设置,因此使用此值不会导致任何精度问题。 • Float:使用单精度浮点指令。此选项使每次计算的资源消耗减少,从而加快毛发着色器中的计算速度。这种较低的精度级别可能会引起一些问题,特别是对于镜面高光,这种情况下可能具有错误的强度或剧烈的过渡。 • Half:使用半精度浮点指令。这是速度最快的精度级别,意味着使用该精度级别的计算需要的处理资源最少。这种精度设置最有可能导致问题。对于毛发着色器,Half 精度目前正处于实验阶段。 |
Surface Type | 使用下拉选单定义材质是否支持透明度。具有 Transparent Surface Type 的材质比具有 Opaque Surface Type 的材质在渲染时更耗资源。根据选择的 Surface Type,HDRP 会显示更多属性。有关该功能的更多信息以及每个 Surface Type 显示的属性列表,请参阅 Surface Type 文档。 |
Double-Sided | 启用此设置可以使 HDRP 渲染几何体中多边形的两个面。有关该功能的更多信息以及该功能可显示的属性列表,请参阅 Double-Sided 文档。 |
Alpha Clipping | 启用此复选框可以使该材质像镂空着色器 (Cutout Shader) 一样。启用此功能会显示更多属性。有关该功能的更多信息以及该功能显示的属性列表,请参阅 Alpha Clipping 文档。 |
- Use Shadow Threshold | 启用此设置可为 Alpha 裁剪阴影设置另一个阈值。 |
Receive Decals | 启用此复选框可以允许 HDRP 在该材质的表面上绘制贴花。 |
Receive SSR (Transparent) | 启用此设置可以在处理屏幕空间反射通道时使 HDRP 包含该材质。有一个用于透明表面类型的单独选项。 |
Add Precomputed Velocity | 启用此设置可以使用存储在 Alembic 文件中的预先计算的速度信息。 |
Geometric Specular AA | 启用此设置可以使 HDRP 对该材质执行几何抗锯齿。这会修改曲面几何体表面上的平滑度值,从而消除镜面反射瑕疵。有关该功能的更多信息以及该功能显示的属性列表,请参阅几何镜面反射抗锯齿 (Geometric Specular Anti-aliasing) 文档。 |
Specular Occlusion Mode | 设置 HDRP 用于计算镜面反射遮挡的模式。 • Off:禁用镜面反射遮挡。 • From AO:根据环境光遮挡贴图和摄像机的视图矢量来计算镜面反射遮挡。 • From AO and Bent Normal:根据环境光遮挡贴图、弯曲法线贴图和摄像机的视图矢量来计算镜面反射遮挡。 • Custom:允许您指定自己的镜面反射遮挡值。 |
Override Baked GI | 启用此设置可以显示两个烘焙 GI 输入端口。这使得该材质会忽略场景中的全局光照,而允许您提供自己的全局光照值并自定义该材质的外观。 |
Depth Offset | 启用此设置可以显示 DepthOffset InputPort,然后可将此项用于增加片元的深度值并将片元推离摄像机。此设置可用于减轻毛发卡片的平坦外观。 |
Use Light Facing Normal | 启用此设置可以使毛发法线始终面向光源。这可以模仿毛发的行为。 |
Override ShaderGUI | 允许覆盖此 Shader Graph 使用的 ShaderGUI。如果为 true ,则会显示 ShaderGUI 属性,该属性允许指定要使用的 ShaderGUI。 |
- ShaderGUI | 要使用的 ShaderGUI 类的全名,包括类路径。 |
Material Inspector
这些属性位于 Inspector 的 Exposed Properties 部分中,与在 Shader Graph 的 Blackboard 中显示的属性一起列出。如果将 Override ShaderGUI 设置为 true
,则不会显示 Material Properties 部分,而是显示您指定的 ShaderGUI。
属性 | 描述 |
---|---|
Enable GPU Instancing | 启用此复选框可以指示 HDRP 在一个批次中使用相同的几何体和材质来渲染网格(如果可能)。这样可以加快渲染速度。如果网格具有不同的材质或者硬件不支持 GPU 实例化,则 HDRP 无法在一个批次中渲染这些网格。例如,如果游戏对象具有基于对象轴心的动画,则不能对它们进行静态批处理,但 GPU 可以实例化它们。 |
Emission | 控制发射是否影响全局光照。 |
- Global Illumination | 使用下拉选单选择颜色发射与全局光照的相互影响。 • Realtime:选择此选项可使发射影响实时全局光照的结果。 • Baked:选择此选项可使发射仅影响烘焙过程中的全局光照。 • None:选择此选项可使发射不影响全局光照。 |
Motion Vector For Vertex Animation | 启用此复选框可以使 HDRP 为使用顶点动画的游戏对象编写运动矢量。这将消除顶点动画可能导致的重影。 |
限制
面光源当前不支持织物和毛发材质。这意味着它们不会照亮使用以下任何项目的材质,也不能投射这些材质的阴影: