光照
光照主栈 (Lit 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 下拉选单中,选择 Lit。
创建新的 Shader Graph。
- 选择 Assets > Create > Shader Graph > HDRP,然后单击 Lit 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 |
Metallic | 材质的金属度值。此属性定义了材质表面的金属性程度(介于 0 和 1 之间)。当表面具有较高的金属性时,它会在更大程度上反射环境,并且反照率颜色将变得不那么明显。在最高金属性级别下,表面颜色完全由来自环境的反射驱动。当表面的金属度较低时,其反照率颜色会更清晰,并且所有表面反射均在表面颜色的基础之上可见,而不是遮挡住表面颜色。 | 无 | 0.0 |
Emission | 从该材质的表面发光的颜色。发光材质在场景中显示为光源。 | 无 | Color.black |
Smoothness | 材质的平滑度。照射到光滑表面的每条光线都将以可预测且一致的角度反弹。对于像镜子一样反射光线的完美光滑表面,应将此属性设置为值 1。较不光滑的表面在较宽的角度范围内反射光线(因为光线会照射到微表面上的凸起),所以反射的细节较少,以更加分散的模式在表面上扩散。 | 无 | 0.5 |
Ambient Occlusion | 材质的环境光遮挡。此功能模拟游戏对象表面上某个片元的遮挡,此处由材质中存在的细节投射,而不是由网格几何体投射。值为 0 表示片元被完全遮挡并显示为黑色。值为 1 表示该片元完全不被遮挡,并且环境颜色不变。 | 无 | 1.0 |
Alpha | 材质的 Alpha 值。此设置决定了材质的透明度。期望值范围为 0 - 1。 | 无 | 1.0 |
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 |
Anisotropy | 各向异性效果的方向。负值使效果为垂直方向,正值使效果为水平方向。 | • 启用 Anisotropy | 0.0 |
Baked Back GI | 仅应用于网格背面的全局光照 (GI) 值。替代了内置的漫射 GI 解决方案。 仅当启用 Override Baked GI 设置时,才显示此端口。 |
• 启用 Override Baked GI | 0.0 |
Baked GI | 仅应用于网格正面的全局光照 (GI) 值。替代了内置的漫射 GI 解决方案。 | • 启用 Override Baked GI | 0.0 |
Coat Mask | 这是一种遮罩,可在材质上模拟透明涂层效果,从而模仿汽车油漆或塑料等材质。 | • Material 设置为 StackLit • 启用 Coat |
0.0 |
Depth Offset | 着色器用来增加片元深度的增量值。此块要求输入视差遮挡贴图节点的结果以产生真实的结果。 | • 启用 Depth Offset | 0.0 |
Diffusion Profile | 用于次表面散射和透射的扩散配置文件 (Diffusion Profile)。 | • Material Type 设置为 Subsurface Scattering 或 Translucent | 0.0 |
Distortion | HDRP 使穿过材质的光在屏幕空间中每个方向上失真的程度。例如,如果此设置为 (1, 0),则输出向右偏移 1 个像素。 | • 启用 Distortion | Vector2(0, 0) |
Distortion Blur | 失真效果的模糊强度。 | • 启用 Distortion | 0.0 |
Iridescence Mask | 彩虹色效果的强度。 | • Material Type 设置为 StackLit • 启用 Iridescence |
0.0 |
Iridescence Thickness | 彩虹色的厚度。这将改变彩虹色效果产生的颜色渐变。 | • Material Type 设置为 StackLit • 启用 Iridescence |
0.0 |
Normal Object Space | 材质在对象空间中的法线。 | • Fragment Normal Space 设置为 Object | CoordinateSpace.Object |
Normal World Space | 材质在世界空间中的法线。 | • Fragment Normal Space 设置为 World | CoordinateSpace.World |
Refraction Index | 真空中光速与材质介质中光速之间的比率。值越高产生的折射越强烈。 | • Refraction Model 未设置为 None | 0.0 |
Refraction Color | 此折射材质对通过材质的光进行着色的颜色。 | • Refraction Model 未设置为 None | 0.0 |
Refraction Distance | Refraction Color 以最高强度影响入射光的对象厚度。 | • Refraction Model 未设置为 None | 0.0 |
Specular AA Screen Space Variance | 几何镜面反射抗锯齿效果的强度(大小介于 0 和 1 之间)。较大的值会产生锯齿较少、更模糊的结果。 | • 启用 Specular AA | 0.0 |
Specular AA Threshold | HDRP 为了减少瑕疵而从平滑度值减去的最大值。 | • 启用 Specular AA | 0.0 |
Specular Color | 材质的镜面反射颜色值。这定义了镜面高光的亮度和着色颜色。 | 无 | Color.grey |
Specular Occlusion | 镜面反射全局光照的强度的乘数。 | • Specular Occlusion Mode 设置为 Custom | 1.0 |
Subsurface Mask | 屏幕空间模糊效果在材质上的强度。 | • Material 设置为 Lit • Material Type 设置为 Subsurface Scattering |
1.0 |
Tangent Object Space | 对象空间中的各向异性方向。这会在给定方向拉伸镜面高光。 | • Material 设置为 Lit • Material Type 设置为 Anisotropy • Fragment Normal Space 设置为 Object 或 • Material 设置为 StackLit • Fragment Normal Space 设置为 Object 或 • Material 设置为 Fabric 且 Material Type 设置为 Silk • Fragment Normal Space 设置为 Object |
CoordinateSpace.Object |
Tangent Tangent Space | 切线空间中的各向异性方向。这会在给定方向拉伸镜面高光。 | • Material 设置为 Lit • Material Type 设置为 Anisotropy • Fragment Normal Space 设置为 Tangent 或 • Material 设置为 StackLit • Fragment Normal Space 设置为 Tangent 或 • Material 设置为 Fabric 且 Material Type 设置为 Silk • Fragment Normal Space 设置为 Tangent |
CoordinateSpace.Tangent |
Tangent World Space | 世界空间中的各向异性方向。这会在给定方向拉伸镜面高光。 | • Material 设置为 Lit • Material Type 设置为 Anisotropy • Fragment Normal Space 设置为 World 或 • Material 设置为 StackLit • Fragment Normal Space 设置为 World 或 • Material 设置为 Fabric 且 Material Type 设置为 Silk • Fragment Normal Space 设置为 World |
CoordinateSpace.World |
Thickness | HDRP 用于估算透射的表面厚度。 | • Material Type 设置为 Subsurface Scattering 并启用 Transmission 或 • Material Type 设置为 Transluscent 或 • Refraction Model 未设置为 None |
1.0 |
Graph Settings
Surface Options
属性 | 描述 |
---|---|
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 文档。 |
Recursive Rendering | 指示是否在递归渲染管线中包含此材质。启用后,如果项目支持光线追踪并且已激活递归渲染体积配置文件覆盖,则 HDRP 将使用光线追踪来渲染此材质。 |
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))可以捕获像素位移细节。 |
Clear Coat | 指示 HDRP 是否模拟材质上的透明涂层效果,从而模仿汽车油漆或塑料等材质。 |
- Transmission |
指示 HDRP 是否使用厚度贴图模拟材质的半透明度。可以使用扩散配置文件 (Diffusion Profile) 来配置次表面散射和透射设置。如需了解更多信息,请参阅有关次表面散射的文档。 仅当从 Material Type 下拉选单中选择 Subsurface Scattering 时,才显示此属性。 |
Refraction Model |
指定 HDRP 用于处理折射的模型。选项包括: • None:不发生折射。选择此选项将禁用折射。 • Box:这是一种盒体形状模型,入射光通过平面进入并通过平面离开。为空心表面选择此选项。 • Sphere:这是一种球体形状模型,可产生放大镜般的折射效果。为实体表面选择此选项。 • Thin:薄形盒体表面类型,相当于固定厚度为 5cm 的盒体。请为类似窗户的薄形表面选择此选项。 |
Energy Conserving Specular Color | 指示在镜面反射效果较强的情况下 HDRP 是否减少材质的漫射颜色。这使得材质的光照更加一致,并使材质看起来更加精确。 仅当 Material Type 设置为 Specular Color 时,才显示此属性。 |
Distortion
仅当 Surface Type 设置为 Transparent 时,才显示此组设置。
属性 | 描述 |
---|---|
Distortion | 指示是否使穿过该透明材质的光失真。 |
Distortion Blend Mode | 指定 HDRP 对重叠的失真表面进行混合的模式。选项包括: • Add:将输出失真值与像素中的当前失真值相加。这是默认模式。 • Multiply:将输出失真值与像素中的当前失真值相乘。 • Replace:用输出失真值替换像素中的当前失真值。 仅当启用 Distortion 时,才显示此设置。 |
Distortion Depth Test | 指示靠近摄像机的游戏对象是否隐藏失真效果。禁用此设置可让失真效果显示在渲染的上层。 仅当启用 Distortion 时,才显示此设置。 |
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 文件中的预先计算的速度信息。 |