织物主节点
您可以在高清渲染管线 (High Definition Render Pipeline, HDRP) 中使用织物材质 (Fabric Material) 来渲染各种类型的织物。织物材质使用棉绒或各向异性丝绸作为基础,并支持各种其他效果,例如次表面散射 (Subsurface Scattering),使您能够创建逼真的织物。
创建和编辑织物材质
织物材质使用 Shader Graph 主节点,这意味着无法在 Inspector 中编辑该节点的任何属性。织物材质使用 Shader Graph 主节点,因此您需要使用特定的过程来创建和编辑使用该节点的材质。有关如何执行此操作的更多信息,请参阅使用 Shader Graph 自定义 HDRP 材质。
将该节点应用于材质时,Surface Options 和 Exposed Properties 在材质的 Inspector 中变为可编辑状态。
属性
主节点有一些属性,每种材质也有一些属性。主节点属性位于 Shader Graph 本身内部,分为两部分:
- 主节点输入端口:此部分包含主节点本身上的 Shader Graph 输入端口。您可以将这些端口连接到其他节点的输出端,或者在某些情况下,将您自己的值添加到这些端口。
主节点设置菜单:此部分包含可用于自定义主节点并显示更多输入端口的设置。
材质属性位于使用此着色器的材质的 Inspector 窗口中。
织物主节点输入端口
下表描述了织物主节点上的输入端口,包括用于每个端口的属性类型和着色器阶段。如需了解着色器阶段的更多信息,请参阅着色器阶段。
属性 | 类型 | 阶段 | 描述 |
---|---|---|---|
Vertex Position | 矢量 3 | 顶点 | 每个顶点的材质的对象空间位置。 |
Vertex Normal | 矢量 3 | 顶点 | 材质的对象空间法线。 |
Vertex Tangent | 矢量 3 | 顶点 | 材质的对象空间切线。 |
BaseColor | 矢量 3 | 片元 | 材质的颜色。要分配图像,请将采样的 Texture2D 连接到该主节点。 |
SpecularOcclusion | 矢量 1 | 片元 | 镜面反射全局光照的强度的乘数。仅当 Specular Occlusion Mode 设置为 Custom 时,才会显示此端口。 |
Normal | 矢量 3 | 片元 | 切线空间中的点的法线。要处理此属性,应该使用多个贴图。一个是基础贴图,还有一个是用于添加更多细节的织物线程贴图。 |
BentNormal | 矢量 3 | 片元 | 点的弯曲法线。 |
Smoothness | 矢量 1 | 片元 | 主要镜面高光的外观。照射到光滑表面的每条光线都将以可预测且一致的角度反弹。对于像镜子一样反射光线的完美光滑表面,应将此属性设置为值 1。对于较粗糙的表面,请将此属性设置为较低的值。 |
AmbientOcclusion | 矢量 1 | 片元 | 漫射全局光照的强度的乘数。将此值设置为 0 可移除所有全局光照。 |
SpecularColor | 矢量 3 | 片元 | 镜面高光的颜色。要分配图像,请将采样的 Texture2D 连接到该主节点。 |
Diffusion Profile | 扩散配置文件 | 片元 | 指定材质用于次表面散射和/或透射的扩散配置文件 (Diffusion Profile)。仅当启用 Subsurface Scattering 或 Transmission 时,才会显示此端口。 |
SubsurfaceMask | 矢量 1 | 片元 | 指示次表面散射是否应影响着色点。仅当启用 Subsurface Scattering 设置时,才会显示此端口。 |
Thickness | 矢量 1 | 片元 | HDRP 用于估算透射的表面厚度。仅当启用 Transmission 设置时,才会显示此端口。 |
Tangent | 矢量 3 | 片元 | 切线空间中的点的切线。当表面具有非 null 的各向异性值时,这很有用。仅当 Material Type 设置为 Silk 时,才会显示此端口。 |
Anisotropy | 矢量 1 | 片元 | 镜面反射术语中有关点局部基础的不对称程度。仅当 Material Type 设置为 Silk 时,才会显示此端口。 |
Emission | 矢量 3 | 片元 | 材质的发光颜色值。分配的 RGB 值应在 0-255 之间。强度值应在 -10 和 10 的范围内。 |
Alpha | 矢量 1 | 片元 | 材质的 Alpha 值。材质将此值用于透明度和/或 Alpha 裁剪。HDRP 期望此值的范围是 0 到 1。仅当 Material Type 设置为 Silk 时,才会显示此端口。 |
AlphaClipThreshold | 矢量 1 | 片元 | HDRP 用于确定是否应渲染材质每个像素的 Alpha 值阈值。如果像素的 Alpha 值等于或高于此阈值,则 HDRP 会渲染该像素。如果低于此阈值,则 HDRP 不会渲染该像素。仅当启用 Alpha Clipping 设置时,才会显示此端口。 |
BakedGI | 矢量 3 | 片元 | 用可设置的值替换内置的漫射全局光照 (GI) 解决方案。仅适用于网格的正面。仅当启用 Override Baked GI 设置时,才会显示此端口。 |
BakedBackGI | 矢量 3 | 片元 | 用可设置的值替换内置的漫射 GI 解决方案。仅适用于网格的背面。仅当启用 Override Baked GI 设置时,才会显示此端口。 |
DepthOffset | 矢量 1 | 片元 | 着色器用来增加片元深度的增量值。仅当启用 Depth Offset 设置时,才会显示此端口。 |
织物主节点设置菜单
要查看这些属性,请单击主节点右上角的齿轮。
属性 | 描述 |
---|---|
Precision | 选择着色器处理的计算精度。较低的精度计算速度更快,但是会引起一些问题,例如镜面高光的强度不正确。 • Inherit:使用全局精度设置。这是最高精度的设置,因此使用此值不会导致任何精度问题,但是着色器计算速度比其他值要慢。 • Float:使用单精度浮点指令。此选项使每次计算的资源消耗减少,从而加快计算速度。 • Half:使用半精度浮点指令。这是速度最快的精度级别,意味着使用该精度级别的计算需要的处理资源最少。此精度设置最有可能导致问题,例如量化(条带)瑕疵和强度削波。 |
Surface Type | 使用下拉选单定义材质是否支持透明度。具有 Transparent Surface Type 的材质比具有 Opaque Surface Type 的材质在渲染时更耗资源。根据选择的 Surface Type,HDRP 会显示更多属性。 |
- Blend Preserves Specular | 指示 Alpha 混合是否影响镜面波瓣。例如,对于渲染窗户很有用。 |
- Fog | 启用此复选框可以允许雾效影响透明表面。禁用后,HDRP 在计算场景中的雾效时不会考虑此材质。要显示此选项,请从 Surface Type 下拉选单中选择 Transparent。 |
- Sort Priority | 允许更改重叠的透明表面的渲染顺序。 |
- Depth Write | 启用此复选框可以使 HDRP 为使用该材质的透明游戏对象写入深度值。 |
- Depth Test | 渲染对象时,Unity 使用 DepthTest 来检查该对象是否位于另一个对象后面。Unity 为了做到这一点,会测试给定对象像素的 z 值并与深度缓冲区中存储的值进行比较。默认情况下,DepthTest 设置为 Less Equal,允许原始对象出现在测试参考对象的前面。使用下拉选单可选择用于深度测试的比较函数。每个比较函数会更改着色器的渲染方式。要显示此选项,请从 Surface Type 下拉选单中选择 Transparent。 • Disabled:不执行深度测试。 • Never:深度测试始终不通过。 • Less:如果像素的 z 值小于存储的值,则深度测试通过。 • Equal:如果像素的 z 值等于存储的值,则深度测试通过。 • Less Equal:如果像素的 z 值小于或等于 Z 缓冲区值,则深度测试通过。这会将测试的像素渲染到另一个像素的前面。 • Greater:如果像素的 z 值大于存储的值,则深度测试通过。 • Not Equal:如果像素的 z 值不等于存储的值,则深度测试通过。 • Greater Equal:如果像素的 z 值大于或等于存储的值,则深度测试通过。 • Always:深度测试始终通过,不会与存储的值进行比较。 |
Alpha Clipping | 启用或禁用 Alpha 裁剪。此属性可以控制着色器的行为是否像镂空着色器 (Cutout Shader) 一样。镂空着色器是一种具有不透明和透明部分的着色器类型。 |
Double-Sided | 指定 HDRP 是否渲染几何体中多边形的两个面。还可以指定 HDRP 如何解释背面的法线。选项包括: • Enabled:HDRP 渲染几何体中多边形的两个面。 • Disabled:HDRP 不渲染几何体中多边形的两个面。 • Flipped Normals:背面法线与正面法线成 180°。这也适用于材质,这意味着材质在几何体的两面看起来相同。 • Mirrored Normals:背面法线是正面法线的镜像。这也适用于材质,这意味着材质在背面反转。当想要在几何体的两面保留相同的形状(例如叶子)时,这非常有用。 |
Energy Conserving Specular | 如果镜面反射效果较强,启用此复选框可使 HDRP 减少材质的漫射颜色。这使得材质的光照更加一致,从而使材质看起来更加精确。 |
Material Type | 指定织物着色器代表的材质类型。选项包括: • Cotton Wool:受 Imageworks 布料模型启发的变体。 • Silk:基于各向异性 GGX BRDF 模型的织物变体。 |
Subsurface Scattering | 指示材质是否支持次表面散射。要禁用材质特定区域中的次表面散射,请使用 Subsurface Mask。 |
Transmission | 指示材质是否支持透射。 |
Receive Decals | 指示 HDRP 是否可以在该材质的表面上绘制贴花。 |
Receive SSR | 指示是否在处理屏幕空间反射通道时使 HDRP 包含该材质。 |
Add Precomputed Velocity | 指示该材质是否使用存储在 Alembic 文件中的预先计算的速度信息。 |
Specular Occlusion Mode | 设置 HDRP 用于计算镜面反射遮挡的模式。 • Off:禁用镜面反射遮挡。 • From AO:根据环境光遮挡贴图和摄像机的视图矢量来计算镜面反射遮挡。 • From AO and Bent Normal:根据环境光遮挡贴图、弯曲法线贴图和摄像机的视图矢量来计算镜面反射遮挡。 • Custom:允许您指定自己的镜面反射遮挡值。 |
Override Baked GI | 启用此设置可以显示两个烘焙 GI 输入端口。这使得该材质会忽略场景中的全局光照,而允许您提供自己的全局光照值并自定义该材质的外观。 |
Depth Offset | 启用此设置可以显示 DepthOffset InputPort,然后可将此项用于增加片元的深度值并将片元推离摄像机。 |
Support LOD CrossFace | 指示在对纹理进行采样的过程中从一个 LOD 级别移到另一个 LOD 级别时是否发生抖动。 |
Override ShaderGUI | 允许覆盖此 Shader Graph 使用的 ShaderGUI。如果为 true ,则会显示 ShaderGUI 属性,该属性允许指定要使用的 ShaderGUI。 |
- ShaderGUI | 要使用的 ShaderGUI 类的全名,包括类路径。 |
Material Properties
这些属性与在 Shader Graph 的 Blackboard 中显示的属性一起,位于 Inspector 的 Exposed Properties 部分中。如果将 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 是否应估算动画的运动矢量。 |