Lit Shader
Lit Shader 可用于渲染石材、木材、玻璃、塑料和金属等真实世界表面,以实现照片级逼真的质量。它可使光照水平和反射效果更具真实感,并能在各种光照条件下正确响应,例如明亮的阳光或黑暗的洞穴。此 Shader 使用通用渲染管线(URP)中计算量最大着色模型。
关于 Lit Shader 的使用示例,请参阅 URP Package Samples 中的 Shader 示例。
在编辑器中使用 Lit Shader
要选择并使用此 Shader,请按照以下步骤操作:
- 在项目中创建或找到要应用此 Shader 的材质(Material)。选择该 Material,Material Inspector 窗口将打开。
- 点击 Shader,然后选择 Universal Render Pipeline > Lit。
UI 概览
此 Shader 的 Inspector 窗口包含以下内容:
Surface Options
Surface Options 控制 URP 如何在屏幕上渲染材质。
属性 | 描述 |
---|---|
Workflow Mode | 使用此下拉菜单选择适用于材质贴图的工作流:Metallic 或 Specular。 选择后,Inspector 其余部分的主要贴图选项将遵循所选的工作流。有关金属度(Metallic)或高光(Specular)工作流的详细信息,请参阅 Unity 内置 Standard Shader 文档。 |
Surface Type | 使用此下拉菜单选择材质的表面类型:Opaque 或 Transparent。这决定了 URP 使用哪个渲染通道。 Opaque 材质始终完全可见,无论其后是否有其他对象,并且 URP 会优先渲染不透明材质。 Transparent 材质受背景影响,并根据所选的透明表面类型变化。URP 在不透明对象之后的独立通道中渲染透明材质。选择 Transparent 后,将出现 Blending Mode 选项。 |
Blending Mode | 选择 Unity 在混合材质和背景时如何计算每个像素的颜色。 在混合模式的上下文中,Source 指的是设置了混合模式的透明材质,而 Destination 指的是该材质所覆盖的任何背景对象。 |
Alpha | ![]() Alpha 混合模式。 Alpha 使用材质的 Alpha 值来调整对象的透明度。0 表示完全透明,255 表示完全不透明(在混合计算中转换为 1)。 无论 Alpha 值如何,该材质始终在透明渲染通道中渲染。 此模式允许使用 Preserve Specular Lighting 选项。 Alpha 计算公式: OutputRGBA = (SourceRGB × SourceAlpha) + DestinationRGB × (1 − SourceAlpha) |
Premultiply | ![]() Premultiply 混合模式。 Premultiply 先将透明材质的 RGB 值与其 Alpha 值相乘,然后应用类似于 Alpha 模式的效果。 此模式的计算公式允许透明材质中 Alpha 值为 0 的区域具有加法混合效果,可减少在不透明和透明像素交界处出现的伪影。 Premultiply 计算公式: OutputRGBA = SourceRGB + DestinationRGB × (1 − SourceAlpha) |
Additive | ![]() Additive 混合模式。 Additive 通过相加材质的颜色值和背景颜色值来创建混合效果。Alpha 值决定源材质颜色的强度,然后进行混合计算。 此模式允许使用 Preserve Specular Lighting 选项。 Additive 计算公式: OutputRGBA = (SourceRGB × SourceAlpha) + DestinationRGB |
Multiply | ![]() Multiply 混合模式。 Multiply 通过将材质的颜色与其背后的颜色相乘来创建混合效果。这种模式类似于透过彩色玻璃观察物体时的效果,使颜色变暗。 此模式使用材质的 Alpha 值来调整颜色混合程度。Alpha 值为 1 时,颜色直接相乘;较低的 Alpha 值则使颜色向白色过渡。 Multiply 计算公式: OutputRGBA = SourceRGB × DestinationRGB |
Preserve Specular Lighting | 指定 Unity 是否保留 GameObject 上的高光反射。即使表面为透明状态,该选项仍会使反射光可见。 此属性仅在 Surface Type 设置为 Transparent 且 Blending Mode 设置为 Alpha 或 Additive 时可见。 ![]() 关闭 Preserve Specular Lighting 的材质效果。 ![]() 开启 Preserve Specular Lighting 的材质效果。 |
Render Face | 使用此下拉菜单选择几何体的渲染面。 Front Face 渲染几何体的正面,并剔除背面(默认设置)。 Back Face 渲染几何体的背面,并剔除正面。 Both 使 URP 渲染几何体的正反两面,适用于叶子等小型、扁平对象,使其两侧均可见。 |
Alpha Clipping | 使材质表现为Cutout(剪切)Shader,以创建透明区域与不透明区域之间具有硬边界的效果。例如,可用于创建草叶的效果。 启用后,URP 将不渲染低于指定 Threshold(阈值)的 Alpha 值。Threshold 通过滑块调整,范围为 0 到 1。所有高于阈值的区域完全不透明,低于阈值的区域完全透明。例如,设置阈值为 0.1,则 URP 不会渲染 Alpha 值低于 0.1 的部分。默认阈值为 0.5。 |
Receive Shadows | 选中此选项可使 GameObject 接收其他对象投射的阴影。取消选中此选项,则 GameObject 不会显示阴影。 |
Surface Inputs
Surface Inputs 描述材质表面的特性。例如,可使用这些属性使表面呈现湿润、干燥、粗糙或光滑的效果。
注意: 如果你熟悉 Unity 内置渲染管线中的 Standard Shader,这些选项类似于 材质编辑器中的主贴图设置。
属性 | 描述 |
---|---|
Base Map | 赋予表面颜色,也称为漫反射贴图。 点击旁边的对象选择器可为 Base Map 选择纹理,这将打开资源浏览器,以选择项目中的贴图。 也可以使用 颜色拾取器 来调整颜色,颜色值会叠加在所选贴图之上。 如果在 Surface Options 中选择了 Transparent 或 Alpha Clipping,材质将使用贴图的 Alpha 通道或颜色。 |
Metallic / Specular Map | 根据 Surface Options 中选择的 Workflow Mode(Metallic 或 Specular)提供相应的贴图输入。 - 在 Metallic Map 工作流下,金属度由 Base Map 颜色控制,并可通过滑块调整金属度(0 表示完全非金属,如塑料或木材,1 表示完全金属,如铜或银)。 - 在 Specular Map 工作流下,可点击对象选择器为其分配贴图,或者使用 颜色拾取器 来调整颜色。 - 在两种工作流中,Smoothness(平滑度)滑块可控制表面高光的扩散程度。值为 0 时高光较粗糙,值为 1 时高光较锐利,如玻璃。中间值可用于创建半光泽效果,如塑料表面(0.5)。 - Source 下拉菜单用于选择 Shader 采样平滑度贴图的通道,可选项:Metallic Alpha(Metallic 贴图的 Alpha 通道)或 Albedo Alpha(Base Map 的 Alpha 通道)。默认值为 Metallic Alpha。 |
Normal Map | 为表面添加法线贴图,以模拟表面细节,如凹凸、划痕和沟槽。 点击对象选择器可分配贴图,该贴图会影响环境光照的交互方式。 旁边的浮点值为法线贴图的强度调整系数,较低的值降低法线贴图的影响,较高的值增强凹凸效果。 |
Height Map | URP 使用视差映射(Parallax Mapping)技术,通过高度贴图实现表面遮挡效果,使纹理表面具有更真实的层次感。 点击对象选择器可分配高度贴图。 旁边的浮点值用于调整高度贴图的影响,较低的值减少效果,较高的值增强遮挡感。 |
Occlusion Map | 选择环境光遮蔽(AO)贴图,用于模拟环境光和反射造成的阴影,使光照更加真实。AO 贴图可减少光线照射到物体边缘和缝隙的程度。点击对象选择器可分配 AO 贴图。 |
Emission | 使材质表面具有自发光效果。启用后,可配置 Emission Map(发光贴图)和 Emission Color(发光颜色)。 点击对象选择器可选择发光贴图。 Emission Color 可通过颜色拾取器进行调整,颜色值可以超过 100% 的白色,以用于发光强度较高的效果,如熔岩。 如果未分配 Emission Map,则仅使用 Emission Color 的颜色作为发光颜色。 如果未启用 Emission,URP 会将发光颜色设为黑色,并不计算发光效果。 |
Tiling | 2D 纹理缩放值,控制纹理在 U 和 V 轴上的重复次数。适用于地板、墙壁等表面。默认值为 1,表示无缩放。 增加该值可使纹理在网格上重复出现,减少该值可拉伸纹理。建议尝试不同的数值以达到最佳视觉效果。 |
Offset | 2D 纹理偏移量,控制纹理在网格上的 U 和 V 轴方向上的偏移位置。调整此值可改变贴图在网格上的位置。 |
Detail Inputs
Detail Inputs 设置用于向表面添加额外的细节。
要求: 需要支持 Shader Model 2.5 或更高版本的 GPU。
属性 | 描述 |
---|---|
Mask | 选择一张遮罩贴图,用于定义 Unity 在 Surface Inputs 贴图上叠加 Detail 贴图的区域。 遮罩贴图使用 Alpha 通道来控制叠加区域。 Tiling 和 Offset 设置对遮罩贴图无效。 |
Base Map | 选择包含表面细节的纹理贴图。Unity 以叠加模式(Overlay)将此贴图与 Surface Base Map 进行混合。 |
Normal Map | 选择包含法线数据的贴图,使用法线贴图 来增加表面细节,例如凹凸、划痕和沟槽。 旁边的滑块可调整法线贴图的强度,默认值为 1。 |
Tiling | 调整 Base Map 和 Normal Map 在网格上的 U 和 V 轴缩放,使贴图更适配网格表面。 默认值为 1,表示无缩放。 选择大于 1 的值可使贴图在网格上重复,选择小于 1 的值可拉伸贴图。 |
Offset | 调整 Base Map 和 Normal Map 在 U 和 V 轴上的偏移量,以改变贴图在网格上的位置。 |
Advanced
Advanced 设置影响渲染的底层计算方式,但不会直接影响表面的可见效果。
属性 | 描述 |
---|---|
Specular Highlights | 启用此选项可使材质从直接光源(如 定向光、点光源和聚光灯)中产生高光反射。 这意味着材质能够反射这些光源的高光效果。 禁用此选项可以跳过高光计算,从而提高 Shader 的渲染速度。 默认情况下,此功能是启用的。 |
Environment Reflections | 允许材质采样最近的反射探针,或在 Lighting 窗口中设置的光照探针。 禁用此选项可减少 Shader 计算量,但会使表面失去环境反射效果。 |
Enable GPU Instancing | 允许 URP 在可能的情况下,将具有相同几何体和材质的网格合并到一个批次中进行渲染,以提高渲染效率。 如果网格使用了不同的材质,或硬件不支持 GPU 实例化(Instancing),URP 无法进行批量渲染。 |
Sorting Priority | 使用滑块调整材质的渲染顺序。URP 会优先渲染较低数值的材质。 可以利用此设置减少设备上的过度绘制(Overdraw),使渲染管线优先渲染前景材质,以避免重复渲染被遮挡的区域。 此功能类似于 Unity 内置渲染管线中的 Render Queue。 |
Channel Packing
此 Shader 使用通道打包技术,使金属度(Metallic)、平滑度(Smoothness)和遮蔽(Occlusion)属性可以合并到单个 RGBA 贴图中,从而减少内存占用。
使用通道打包时,仅需加载一张纹理贴图,而不是单独加载三张不同的贴图。例如,在 Substance 或 Photoshop 等软件中,可以按照以下方式进行贴图通道分配:
通道 | 属性 |
---|---|
Red | Metallic |
Green | Occlusion |
Blue | None |
Alpha | Smoothness |