毛发
毛发主栈 (Hair Master Stack) 可用于在高清渲染管线 (High Definition Render Pipeline, HDRP) 中渲染毛发。为了创建逼真的毛发效果,这种情况会使用称为毛发卡片的层。每张毛发卡片代表毛发的不同部分。如果使用半透明毛发卡片,必须手动对这些卡片进行排序,以便这些卡片在每个方向上查看都是从后到前顺序排列。
创建毛发 Shader Graph
要在 Shader Graph 中创建毛发材质,可采用以下任一方式:
修改现有的 Shader Graph。
- 在 Shader Editor 中打开 Shader Graph。
- 在 Graph Settings 中,选择 HDRP 目标。如果没有,请选择 Active Targets,单击 Plus 按钮,然后选择 HDRP。
- 在 Material 下拉选单中,选择 Hair。
创建新的 Shader Graph。
- 选择 Assets > Create > Shader Graph > HDRP,然后单击 Hair Shader Graph。
上下文
此主栈材质类型具有自己的一组图形设置 (Graph Settings)。由于设置和块之间的关系,这会影响哪些块与图相关。本节介绍该主栈材质类型默认添加的块,以及哪些块可以设置该主栈材质类型的图形设置 (Graph Settings) 中的属性。
如需了解图形设置与块之间的关系的更多信息,请参阅上下文和块 (Contexts and Blocks)。
Vertex Context
Default
创建新的毛发主栈时,默认情况下,Vertex Context 包含以下块:
属性 | 描述 | 设置依赖项 | 默认值 |
---|---|---|---|
Position | 每个顶点的对象空间顶点位置。 | 无 | CoordinateSpace.Object |
Normal | 每个顶点的对象空间顶点法线。 | 无 | CoordinateSpace.Object |
Tangent | 每个顶点的对象空间顶点切线。 | 无 | CoordinateSpace.Object |
Relevant
默认情况下,此主栈材质类型将所有 Vertex 块添加到 Vertex Context,并且没有其他相关的块。
Fragment Context
Default
创建新的毛发主栈时,默认情况下,Fragment Context 包含以下块:
属性 | 描述 | 设置依赖项 | 默认值 |
---|---|---|---|
Base Color | 材质的基色。 | 无 | Color.grey |
Normal Tangent Space | 材质在切线空间中的法线。 | • Fragment Normal Space 设置为 Tangent | CoordinateSpace.Tangent |
Bent Normal | 片元的弯曲法线。HDRP 使用弯曲法线贴图来模拟更精确的环境光遮挡。弯曲法线仅适用于漫射光照。 | • Material 设置为 Eye、Fabric、Hair、Lit 或 StackLit | CoordinateSpace.Tangent |
Hair Strand Direction | 使用毛发卡片进行建模时设置毛发的流动方向(从发根到发尖)。 | • Material 设置为 Hair | Vector3(0, -1, 0) |
Transmittance | 从后面穿透毛发的镜面反射光照的比例。这是基于每个颜色的通道,因此可以使用此属性来设置穿透光的颜色。将此属性设置为 (0, 0, 0) 可以阻止任何光线穿透毛发。将此属性设置为 (1, 1, 1) 可以使大量白光通过毛发透射,从而产生强烈的效果。 | • Material 设置为 Hair | Vector3(0.3, 0.195, 0.09) |
Rim Transmission Intensity | 毛发边缘周围的背光毛发强度。将此属性设置为 0 可以完全消除透射效果。 | • Material 设置为 Hair | 0.2 |
Smoothness | 材质的平滑度。照射到光滑表面的每条光线都将以可预测且一致的角度反弹。对于像镜子一样反射光线的完美光滑表面,应将此属性设置为值 1。较不光滑的表面在较宽的角度范围内反射光线(因为光线会照射到微表面上的凸起),所以反射的细节较少,以更加分散的模式在表面上扩散。 | 无 | 0.5 |
Ambient Occlusion | 材质的环境光遮挡。此功能模拟游戏对象表面上某个片元的遮挡,此处由材质中存在的细节投射,而不是由网格几何体投射。值为 0 表示片元被完全遮挡并显示为黑色。值为 1 表示该片元完全不被遮挡,并且环境颜色不变。 | 无 | 1.0 |
Alpha | 材质的 Alpha 值。此设置决定了材质的透明度。期望值范围为 0 - 1。 | 无 | 1.0 |
Specular Tint | 主要镜面高光的颜色。 | • Material 设置为 Hair | Color.white |
Specular Shift | 主要镜面高光的位置。 | • Material 设置为 Hair | 0.1 |
Secondary Specular Tint | 次要镜面高光的颜色。 | • Material 设置为 Hair | Color.grey |
Secondary Specular Shift | 次要镜面高光的位置。 | • Material 设置为 Hair | -0.1 |
Emission | 从该材质的表面发光的颜色。发光材质在场景中显示为光源。 | 无 | Color.black |
Relevant
根据使用的 Graph Settings,Shader Graph 可向 Fragment Context 添加以下块:
属性 | 描述 | 设置依赖项 | 默认值 |
---|---|---|---|
Alpha Clip Threshold | 由 HDRP 用于确定是否渲染每个像素的 Alpha 值阈值。如果像素的 Alpha 值等于或高于此阈值,则 HDRP 会渲染该像素。如果低于此阈值,则 HDRP 不会渲染该像素。默认值为 0.5。 | • 启用 Alpha Clipping | 0.5 |
Alpha Clip Threshold Depth Postpass | 由 HDRP 用于透明深度后通道的 Alpha 值阈值。如果像素的 Alpha 值等于或高于此阈值,则 HDRP 会渲染该像素。如果低于此阈值,则 HDRP 不会渲染该像素。默认值为 0.5。 | • 启用 Alpha Clipping • 启用 Transparent Depth Postpass |
0.5 |
Alpha Clip Threshold Depth Prepass | 由 HDRP 用于透明深度预通道的 Alpha 值阈值。如果像素的 Alpha 值等于或高于此阈值,则 HDRP 会渲染该像素。如果低于此阈值,则 HDRP 不会渲染该像素。默认值为 0.5。 | • 启用 Alpha Clipping • 启用 Transparent Depth Prepass |
0.5 |
Alpha Clip Threshold Shadow | 由 HDRP 用于确定是否应渲染像素阴影的 Alpha 值阈值。如果像素的 Alpha 值等于或高于此阈值,则 HDRP 会渲染该像素。如果低于此阈值,则 HDRP 不会渲染该像素。默认值为 0.5。 | • 启用 Use Shadow Threshold | 0.5 |
Baked Back GI | 仅应用于网格背面的全局光照 (GI) 值。替代了内置的漫射 GI 解决方案。 仅当启用 Override Baked GI 设置时,才显示此端口。 |
• 启用 Override Baked GI | 0.0 |
Baked GI | 仅应用于网格正面的全局光照 (GI) 值。替代了内置的漫射 GI 解决方案。 | • 启用 Override Baked GI | 0.0 |
Depth Offset | 着色器用来增加片元深度的增量值。此块要求输入视差遮挡贴图节点的结果以产生真实的结果。 | • 启用 Depth Offset | 0.0 |
Normal Object Space | 材质在对象空间中的法线。 | • Fragment Normal Space 设置为 Object | CoordinateSpace.Object |
Normal World Space | 材质在世界空间中的法线。 | • Fragment Normal Space 设置为 World | CoordinateSpace.World |
Specular AA Screen Space Variance | 几何镜面反射抗锯齿效果的强度(大小介于 0 和 1 之间)。较大的值会产生锯齿较少、更模糊的结果。 | • 启用 Specular AA | 0.0 |
Specular AA Threshold | HDRP 为了减少瑕疵而从平滑度值减去的最大值。 | • 启用 Specular AA | 0.0 |
Specular Occlusion | 镜面反射全局光照的强度的乘数。 | • Specular Occlusion Mode 设置为 Custom | 1.0 |
Graph Settings
Surface Options
属性 | 描述 |
---|---|
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 时,才显示此属性。 |
- Receive Fog | 指示雾效是否影响透明表面。禁用后,HDRP 在计算场景中的雾效时不会考虑此材质。 |
- Depth Test | 指定由 HDRP 用于深度测试的比较函数。 |
- Depth Write | 指示 HDRP 是否为使用该材质的游戏对象写入深度值。 |
- Cull Mode | 指定对于使用此材质的游戏对象需要剔除哪个面。选项包括: • Front:剔除网格的正面。 • Back:剔除网格的背面。 仅当禁用 Double Sided 的情况下,才显示此属性。 |
- Sorting Priority | 允许更改重叠的透明表面的渲染顺序。有关更多信息以及用法示例,请参阅材质排序文档。 仅当 Surface Type 设置为 Transparent 时,才显示此属性。 |
- 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 时,才显示此属性。 |
- - Preserve Specular Lighting |
指示是否使 Alpha 混合不降低镜面高光的强度。这可以保留透明表面上的镜面反射元素,例如阳光照射玻璃或水。 仅当 Surface Type 设置为 Transparent 时,才显示此属性。 |
Alpha Clipping |
指示该材质是否类似于镂空着色器 (Cutout Shader)。 有关该功能的更多信息以及该功能显示的属性列表,请参阅 Alpha Clipping 文档。 |
- Use Shadow Threshold |
指示 HDRP 是否对 Alpha 裁剪阴影使用另一个阈值。 仅当启用 Alpha Clipping 时,才显示此属性。 |
- Alpha to Mask |
指示是否开启 alpha-to-coverage。如果项目使用 MSAA,alpha-to-coverage 会根据像素着色器结果 Alpha 值按比例修改多重采样覆盖率遮罩。通常用于植被抗锯齿和其他经过 Alpha 测试的着色器。 仅当启用 Alpha Clipping 时,才显示此属性。 |
Double Sided Mode | 指定 HDRP 如何渲染网格几何体中多边形的面。选项包括: • Disabled:仅渲染多边形的一个面。 • Enabled:渲染多边形的两个面。在此模式下,背面的法线与正面相同。 • Flipped Normals:渲染多边形的两个面。在此模式下,背面法线与正面法线成 180°。这也适用于材质,这意味着材质在几何体的两面看起来相同。 • Mirrored Normals:渲染多边形的两个面。在此模式下,背面法线是正面法线的镜像。这也适用于材质,这意味着材质在背面反转。当想要在几何体的两面保留相同的形状(例如叶子)时,这非常有用。 有关该功能的更多信息,请参阅双面 (Double-sided)。 |
Fragment Normal Space | 指定该材质使用的法线贴图空间。 • TangentSpace:定义切线空间中的法线。使用此类型可以在网格上平铺纹理。 • ObjectSpace:定义对象空间中的法线。此类型用于平面贴图的游戏对象,如地形。 • WorldSpace:定义世界空间中的法线贴图。 |
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) 文档。 |
Depth Offset | 指示 HDRP 是否根据位移修改深度缓冲区。因此,使用深度缓冲区的效果(例如,接触阴影 (Contact Shadows))可以捕获像素位移细节。 |
Advanced Options
属性 | 描述 |
---|---|
Specular Occlusion Mode | HDRP 用于计算镜面反射遮挡的模式。选项包括: • Off:禁用镜面反射遮挡。 • From AO:根据环境光遮挡贴图和摄像机的视图矢量来计算镜面反射遮挡。 • From AO and Bent Normal:根据环境光遮挡贴图、弯曲法线贴图和摄像机的视图矢量来计算镜面反射遮挡。 • Custom:允许你指定自己的镜面反射遮挡值。 |
Override Baked GI | 指示此材质是否忽略场景中的全局光照 (GI) 并改用自定义 GI 值。启用此设置可将两个烘焙 GI 块添加到 Fragment Context 以控制材质的 GI。禁用此设置可使材质使用场景的 GI。 |
Support Lod Crossfade | 指示当网格从一个 LOD 级别移动到另一个 LOD 级别时 HDRP 是否处理抖动。 |
Add Precomputed Velocity | 指示是否使用存储在 Alembic 文件中的预先计算的速度信息。 |
Use Light Facing Normal | 指示毛发法线是否总是面向场景中的光源。这是模仿真实毛发的行为。 |
限制
面光源当前不支持织物和毛发材质。这意味着它们不会照亮使用以下任何项目的材质,也不能投射这些材质的阴影: