[Render] 适用于高级Unity创作者的通用渲染管线[4] - URP中的光照

11 篇文章 4 订阅

RuntimeMapMaker3D-Pro在这里插入图片描述


英文原文:https://resources.unity.com/games/introduction-universal-render-pipeline-for-advanced-unity-creators?ungated=true

  本节展示了 URP 中的光照如何工作,并描述了两个渲染管线的工作流程之间的差异。

如果您不熟悉 Unity 中的光照,请从以下资源开始:

  如果您将项目从内置渲染管道转换为 URP,您可能会注意到照明的差异。 这是因为内置渲染管线默认使用伽马光照模型,而 URP 使用线性模型。 因此,任何强度值不同于 1.0 的光都需要进行调整。

  在编辑器中的哪里可以找到设置控件,以及如何处理差异很大的硬件规格的挑战也存在差异。 本节的其余部分将介绍一些可用于在图形保真度和性能之间取得平衡的技巧。

  和以前一样,您将在此处列出的三个位置设置属性。 对于两个渲染管道,A 和 B 基本相同,而 C 仅适用于 URP:

A. Window > Rendering > Lighting:此面板允许您设置光照贴图和环境设置,并查看实时和烘焙光照贴图。 从内置渲染管道到 URP 没有变化。

B. Light Inspector:内置渲染管线和 URP Inspector 之间存在显着差异。 有关详细信息,请参阅 Light Inspector 部分。

C. URP Asset Inspector:这是设置阴影的主要位置。 URP 中的照明很大程度上依赖于在此面板中选择的设置。

  质量设置通过内置渲染管道中的 Edit > Project Settings > Quality 进行处理。 在 URP 中,这取决于可以使用 “Quality” 面板交换的 URP 资产设置(请参阅质量设置部分)。

  由于这里的重点是照明,因此这些方法适用于使用下表中着色器的材质

用于照明场景的 URP 着色器
Shader描述
Complex Lit该着色器具有光照着色器的所有功能。 例如,在使用透明涂层选项为汽车赋予金属光泽时选择它。 镜面反射计算两次——一次用于基础层,另一次用于模拟基础层顶部的透明薄层。
LitLit Shader 可让您渲染真实世界的表面,例如石头、木材、玻璃、塑料和金属,具有逼真的质量。 从明亮的阳光到黑暗的洞穴,光线水平和反射看起来栩栩如生,并在各种照明条件下做出反应。这是大多数使用光照的材质的默认选择。 它支持烘焙、混合和实时照明,并与正向或延迟渲染一起使用。它是基于物理的着色 (PBS) 模型。 由于着色计算的复杂性,最好避免在低端移动硬件上使用此着色器。
Simple Lit此着色器不是基于物理的。 它使用非能量守恒的 Blinn-Phong 着色模型,并提供不太逼真的结果。 尽管如此,它可以提供出色的视觉外观。 在针对低端移动设备时,它更适合用于非基于物理的项目。
Baked Lit此着色器为不需要支持实时光照的对象提供性能提升,包括永远不会受到动态对象、实时光照或动态阴影影响的远处静态对象。
内置渲染管线与 URP 光照衰减和衰减

  内置渲染管线和 URP 之间的另一个区别是它们如何计算适用于聚光灯和点光源的光衰减/衰减。

  URP 使用此处描述的基于物理的 InverseSquared 衰减。 内置渲染管线使用不基于物理的 Legacy 衰减,如同一页所述。 灯光半径会影响衰减,这可能会导致灯光半径较大,从而影响剔除性能,因为灯光会接触到不必要的物体

Lit 还是 Simple Lit?

  在 Lit Shader 和 Simple Lit Shader 之间的选择很大程度上是一个艺术决定。 艺术家使用 Lit Shader 更容易获得逼真的渲染,但如果需要更风格化的渲染,Simple Lit 会提供出色的结果。

在这里插入图片描述
比较使用不同着色器渲染的场景:左上图使用 Lit Shader,右上图使用 Simple Lit Shader,底部图像使用 Baked Lit Shader。

  可以通过编写自定义着色器或使用 Shader Graph 来实现您自己的自定义光照模型(参见附加工具章节)。

Lighting 概览

  灯在URP中分为主灯和附加灯。 主光是最重要的定向光。 这要么是最亮的光,要么是通过 Window > Rendering > Lighting > Environment > Sun Source 设置的。

  在本指南的后面部分,您将学习如何使用 URP 资源设置来设置通过 Object Per Light 限制影响对象的动态灯光数量,URP 前向渲染器的上限为 8 个。 但是,每个Camera可以使用的动态灯光数量也受到不同硬件的限制,如下表所示。

使用 URP 前向渲染器时的相机光线限制

在这里插入图片描述
所有附加灯共享相同的预算。

  剔除场景时,为该帧选择最多支持的动态灯光数量。 同时,在渲染一个对象时,只选择这些灯光中最重要的一个来动态地照亮每个对象。

  具有少量动态灯光的项目可能不会遇到任何问题,但是,当您添加更多灯光时,您可能会遇到灯光爆裂,因为不同的灯光被动态剔除。 当然,在场景中拥有更多动态灯光会带来性能成本。 每个动态光都需要根据相机进行剔除,然后按优先级排序。 还有为每个对象渲染每个灯光的成本。 与往常一样,尽量在保真度和性能之间保持平衡。

实时和混合模式灯

  禁用设置为实时或混合模式的灯光不会阻止它被包含在灯光剔除过程中。 您可能会使用设置资源限制低端硬件的灯光,但由于灯光剔除,它们仍会导致小幅性能下降(此工作流程正在针对未来版本进行更正)。

  实时和混合模式灯光首先根据相机截锥体进行剔除。 如果启用了遮挡剔除,则场景中被其他对象隐藏的灯光也会被剔除。

  然后,在剔除过程中幸存下来的可见灯光列表按每个灯光到相机的距离进行排序。 如果有可见光,则上表中的限制会起作用。
例如,如果场景中有 1,000 个灯光,但相机只能看到 200 个灯光,那么所有这些都符合非移动平台的限制。

  现在可见光列表是按对象剔除的。 灯光在对象的枢轴处按强度排序——这样,较亮的灯光优先。
如果一个对象受到超过每个对象允许的最大灯光数量的影响,则丢弃过多的灯光。

如果您达到光线限制,请考虑以下选项:
  • 如果灯光的位置和强度是静态的,请将其烘焙并使用 Light Probes 将灯光添加到动态几何体的渲染中。 有关详细信息,请参阅光探头部分。
  • 使用灯光 Layers 来限制哪些几何体受哪些灯光影响。
  • 限制光线的范围。 此选项不适用于定向灯,因为它们是全局的。
  • 使用发光 materials 伪造照明

  此处讨论的光照限制适用于 Forward Renderer(使用 URP 时的默认渲染器)。

  Forward Renderer 使用单通道方法在单个绘制调用中计算对象的光照。 然而,这是一个高性能选项,因为 GPU 限制限制了对象在设置像素颜色时可以考虑的灯光数量。 如果您的目标是高端硬件,则可以通过使用 URP 中的延迟渲染路径来避免这些限制。

光照 Inspector

  Light Inspector 是您可以设置照明的三个位置之一。

  与内置渲染管线一样,URP 支持方向灯、聚光灯、点灯和区域灯,但区域灯仅在烘焙间接模式下工作。 有关详细信息,请参阅灯光模式部分

在这里插入图片描述
URP 中的 Light Inspector 面板(左)和内置渲染管线(右)的并排比较

  上图显示了 Light Inspector 的两个版本中如何呈现灯光属性。 URP 版本具有五组控件,具体取决于灯光是定向灯还是点灯,以及用于聚光灯和区域灯的附加形状分组。

  此表列出了 URP 和内置渲染管道Inspector之间的差异。

URP 灯光 Inspector 属性描述内置渲染管线灯光 Inspector 属性
Light Appearance在颜色或过滤器和温度之间进行选择。 颜色设置发射光的颜色。 过滤器和温度同时使用颜色(过滤器)和温度在冷光和暖光之间切换。NA
BiasBias 控制阴影斑块。 默认是使用 URP Asset。 或者,您可以使用此 Inspector 设置自定义值。Bias / Normal BIas
Light Cookie如果纹理设置为使用灯光 cookie 并且灯光类型为 Directional,那么新面板将允许您控制 cookie 的 x 和 y 大小以及它的偏移量。 点光源的 cookie 必须是立方体贴图。 URP 支持彩色 cookie,而内置渲染管道仅支持灰度。Cookie
Shape: Spot您现在可以控制聚光灯的内锥角和外锥角。Spot Angle, Range
Shape: Area这用于控制区域光的形状。Shape, Width, Height, Radius
NA使用控制位于灯光中心的球体的 alpha 值的 billboard 或菲涅耳着色器可以轻松重现这一点。 有关更多信息,请参阅光晕灯部分。Draw Halo
NA查看镜头光晕部分,了解如何在 URP 中实现镜头光晕。耀斑
点亮一个新场景

在这里插入图片描述
  为 URP 照明新场景的第一步是创建新的照明设置资源(见上图)。 打开 Window > Rendering > Lighting,然后在 Scene 选项卡上,单击 New Lighting Settings,然后为新资源命名。 您在“照明”面板中应用的设置现在已保存到其中。 通过切换 Lighting Settings Asset 在设置之间切换。

环境或环境照明

  环境/环境光照从内置渲染管线到 URP 的定义方式没有变化。 主要环境光是从通过 Window > Rendering > Lighting > Environment 访问的面板计算的。

在这里插入图片描述
环境面板中可用的照明设置

您可以将环境照明设置为使用场景的天空盒,并可以选择调整强度、渐变或颜色。
在这里插入图片描述

阴影

  从使用内置渲染管线到 URP 的最大变化在于设置阴影的方式。

  阴影设置不再通过Project Settings > Quality可 用。 如前所述,在使用 URP 时,您需要一个 Renderer Data 对象和一个 Render Pipeline Asset。 为 URP 设置项目的部分介绍了如何通过渲染管线资源查看场景,您可以使用它来定义阴影的保真度。

在这里插入图片描述

主光阴影分辨率

  URP 资源中的 Lighting 和 Shadow 组是在场景中设置阴影的关键。 首先,将 Main Light Shadow 设置为 Disabled 或 Per Pixel,然后转到复选框以启用 Cast Shadows。 最后一个设置是阴影贴图的分辨率。

  如果您之前在 Unity 中使用过阴影,您就会知道实时阴影需要渲染一个阴影贴图,该贴图包含从灯光的角度来看对象的深度。 此阴影贴图的分辨率越高,视觉保真度就越高——尽管需要更多的处理能力和更大的内存。 增加阴影处理的因素包括:

  • 在阴影贴图中渲染的 Shadow Casters 数量 - 主光的这个数量取决于阴影距离(阴影截头体的远平面)
  • 可见的 Shadow 接收器(您必须将它们全部包含在内)
  • 影子级联分裂
  • 阴影过滤(软阴影)

  最高分辨率并不总是理想的。 例如,Soft Shadows 选项具有模糊贴图的效果。 在下图中的卡通鬼屋中,您可以看到前景中的椅子在办公桌抽屉上投下阴影,在分辨率大于 1024 时显得过于清晰。

在这里插入图片描述
设置主光的阴影分辨率:左上图分辨率设置为256,右上图设置为512,左中图设置为1024,右中图设置为2048,下图设置为4096 .

主光:阴影最大距离

在这里插入图片描述
改变主光影的最大距离:左上图 – 10,右上图 – 30,左下图 – 60,右下图 – 400

  Main Light Shadow 的另一个重要设置是 Max Distance。 这是在场景单位中设置的。 在上图中,两极相距 10 个单位。 最大距离从 10 到 400 个单位不等。 请注意,只有第一个极点会投射阴影,并且在距相机位置 10 个单位处被截断。 在 60 个单位(左下图)时,所有阴影都在视野中——阴影保真度足够了。 当最大距离远大于可见资产时,阴影贴图分布在过大的区域上。 这意味着拍摄区域的分辨率远低于所需的分辨率。

  Max Distance 属性需要与用户可以看到的内容以及场景中使用的单位直接相关。 瞄准提供可接受阴影的最小距离(见下面的注释)。 如果玩家只看到距离相机 60 个单位的动态对象的阴影,则将 Max Distance 设置为 60。当混合灯光的 Lighting Mode 设置为 Shadowmask 时,超出 Shadow Distance 的对象的阴影将被烘焙。 如果这是一个静态场景,那么您会在所有对象上看到阴影,但只有动态阴影会被绘制到阴影距离。

注意:URP 仅支持稳定拟合阴影投影,它依赖于用户设置最大距离。 内置渲染管线支持阴影投影属性的稳定拟合和紧密拟合。
在后一种模式下,左下角和右下角的图像将具有相同的质量,因为 Close Fit 减少了阴影距离平面以适应最后一个施法者。 缺点是,由于
Close Fit 会“动态地”改变阴影截头体,它会在阴影中产生微光/舞动效果。

阴影级联

  由于资产由于透视而消失在远处,降低阴影分辨率很方便,从而将更多的阴影贴图用于更靠近相机的阴影。 Shadow Cascades 可以帮助解决这个问题。

  下图显示了鬼屋里的椅子和桌子场景的阴影图。 左侧图像中的级联计数为 1。 地图占据了整个区域。 在右图中,级联计数为 4。请注意,该地图包括四个不同的地图,每个区域接收一个较低分辨率的地图。

在这里插入图片描述
  您可以使用可拖动指针或通过在相关字段中设置单位来调整级联每个部分的开始和结束范围(见下图)。 始终将最大距离调整为与您的场景非常匹配的值,并仔细选择滑块位置。 如果您使用公制作为工作单位,则始终选择最后一个级联最多为最后一个 Shadow Caster 的距离。
在这里插入图片描述
调整阴影级联的范围

额外的光影

在这里插入图片描述
可用于 URP 资产中的附加灯光的设置

  对主光的阴影进行分类后,是时候进入附加光模式了。 通过将 URP 资源的 Additional Lights Mode 设置为 Per Pixel,启用其他灯光以投射阴影。 虽然可以将模式设置为 Disabled、Per Vertex 或 Per Pixel(见上图),但只有后者适用于阴影。

  选中投射阴影框。 然后,选择 Shadow Atlas 的分辨率。 这是将用于组合每个光投射阴影的所有贴图的贴图。 请记住,点光源会投射六个阴影贴图,创建一个立方体贴图,因为它会向所有方向投射光。 这使得点灯在性能方面是最苛刻的。 附加灯光阴影贴图的单独分辨率是使用三个阴影分辨率层的组合设置的,加上在层次窗口中选择灯光时通过灯光检查器选择的分辨率。

在这里插入图片描述
  在闹鬼的房间里,镜子上有一个聚光灯,桌子上有一个点灯。 还有七张地图。 要将这七张地图装到一张 1024 像素的方形地图上,每张图的大小需要为 256 像素或更小。 如果超过此大小,阴影贴图的分辨率将缩小以适合图集,从而导致控制台中出现警告消息。
在这里插入图片描述
在这里插入图片描述
附加灯光的阴影图集

  上图显示了点光源使用的六张贴图,其中分辨率设置为中等,层值设置为 256px。 聚光灯的分辨率设置为高,层值为 512px。

在这里插入图片描述
这是鬼屋的低多边形版本,由主定向灯、桌子上方的点灯和镜子上方的聚光灯照亮。 所有灯光都是实时的并投射阴影。

灯光模式

  环境主要具有静态几何体,因此如果灯光是静态的,则无需重复计算光照和阴影。 您可以在设计时计算一次,然后在渲染几何图形时使用该数据。 这称为光照贴图或烘焙。

  内置渲染管线和 URP 之间的光照贴图工作流程没有改变。 让我们使用 Unity 的 FPS 示例项目来完成这些步骤。

  以下截图来自 Unity 项目 FPS Sample: The Inspection,您可以在此处下载。 该场景演示了如何在 URP 中使用实时和烘焙光照。

注意:低频是指光照贴图的更新速率远低于屏幕更新的速率。 Specular Lobes 只能由实时光照计算。 您可以使用 Light
Probes 将全局照明 (GI) 应用于动态对象,但这些也仅捕获低频漫射光。 内置渲染管线支持 Light Probe Proxy
Volume (LPPV),它为 Light Probe 提供与光照贴图为动态对象提供相同级别的质量。 但是,在 URP 中,不支持
LPPV,因为它是一个相对较慢且无法扩展的系统。 相反,URP 计划支持 Adaptive Probe Volumes,它可以取代光照贴图并适用于静态和动态对象。

在这里插入图片描述
FPS Sample 中的场景:Unity 的Inspection

  1. FPS 示例项目中的场景主要包含静态几何体。 要在光照贴图中包含几何体,请单击检查器右侧的静态框。
    在这里插入图片描述
  2. 通过 Window > Rendering > Lighting > Scene 选择光照贴图设置。 在调整设置时保持低光照贴图分辨率。 完成所需设置后,在生成最终光照贴图时增加该值。 如果您的 GPU 支持,请选择 Progressive GPU (Preview) 以加快光照贴图的生成。

在这里插入图片描述
3. 过滤使地图模糊以最小化噪声。 这可能会导致一个对象与另一个对象相遇的阴影中出现间隙。 使用 A-Trous 过滤来最小化这个伪影。 有关可用于光照贴图的设置的更多详细信息,请参阅渐进式光照贴图文档

在这里插入图片描述

  1. 确保所有静态几何体没有重叠的 UV 值,或者在导入时生成照明 UV。

在这里插入图片描述
5. 将光模式设置为烘焙或混合。 在 Hierarchy 窗口中选择灯光并使用 Inspector。 混合灯将照亮动态对象以及静态对象。

在这里插入图片描述
6. 使用混合光时,通过 Window > Rendering > Lighting > Scene 将 Light Mode 设置为 Baked Indirect、Subtractive 或 Shadowmask。

a. Baked Indirect:只有间接光的贡献会被烘焙到光照贴图和 Light Probes 中(仅限灯光的反弹)。 直接照明和阴影将是实时的。 这是一个昂贵的选择,并不适合移动平台。 但是,这确实意味着您可以为静态和动态几何体获得正确的阴影和直射光。
b. Subtractive:在这里,您将设置为混合的定向光中的直接照明烘焙到静态几何体中,并从动态几何体投射的阴影中减去照明。 这会导致静态几何体无法在动态对象上投射阴影,除非使用 Light Probes,否则会导致令人不快的视觉不连续性。 URP 计算来自定向光的光贡献的估计值,并从烘焙的全局光照中减去它。 估计值由 Lighting 窗口的 Environment 部分中的 Real-time Shadow Color 设置限制,因此减去的颜色永远不会比此颜色更暗。 然后选择减去值的最小颜色和原始烘焙颜色。 这是最适合低端硬件的选项。
c. Shadowmask:虽然类似于烘焙间接模式,Shadowmask 结合了动态和烘焙阴影,在远处渲染阴影。 它通过使用额外的 Shadowmask 纹理并在 Light Probes 中存储额外的信息来做到这一点。 这提供了最高保真度的阴影,但在内存使用和性能方面也是最昂贵的选择。 在视觉上,它与近距离拍摄的 Baked Indirect 相同。 从远处看时差异很明显,非常适合开放世界的场景。 由于处理成本,建议仅用于中高端硬件。

在这里插入图片描述
7. 通过 Asset > Inspector > Lightmapping > Scale In Lightmap 调整 Lightmap Scale,使远处的物体在光照贴图中占据更少的空间。 下图显示了背景岩石光照贴图的纹理大小,设置范围为 0.05 到 0.5。
在这里插入图片描述
8. 单击生成照明进行烘焙。 烘焙时间取决于静态对象的数量、设置为混合或烘焙模式的灯光以及为光照贴图选择的设置,尤其是最大光照贴图大小和光照贴图分辨率。

在这里插入图片描述
更多资源:


灯光层

  灯光层功能允许您配置某些灯光以仅影响特定的游戏对象,以便您可以在场景中强调和吸引注意力。 在下图中,注射器,一个关键的收藏品,出现在场景的阴影部分。 使用 Light Layer,它变得可见并有助于确保玩家不会错过捡起它。

在这里插入图片描述
使用 Light Layers 突出显示对象

以下是设置灯光图层的步骤。

  1. 选择 URP 资产。 在 Lighting 部分,单击垂直省略号图标 ( ) 并选择 Show Additional Properties。
    在这里插入图片描述
  2. 新设置 Light Layers 将出现在 Lighting 部分下。
    在这里插入图片描述
  3. 通过 Project Settings > Graphics > URP Global Settings 重命名 Light Layer。
    在这里插入图片描述
  4. 现在启用了 Light Layers,Light Inspector 将包含一个 Light Layer 下拉菜单。 一盏灯可以贡献不止一层。
    在这里插入图片描述
  5. 启用 Light Layers 后,您需要设置自定义阴影层。 新光源可以从场景的主光源或它自己的锥体投射阴影

在这里插入图片描述
6. 最后,在 Hierarchy 窗口中选择适用的对象,然后设置 Rendering Layer Mask。

在这里插入图片描述
这也可以在代码中动态设置。

Renderer renderer = GetComponent<Renderer>();
int layerID = 1;
int mask = 1 << layerID;
renderer.renderingLayerMask = (uint)mask;

Light Probes

  如前面部分所述,您可以使用混合光照模式在光照模式部分中组合烘焙对象和动态对象。 建议在使用此模式时也将 Light Probes 添加到您的场景中。 当您通过Window > Rendering > Lighting面板单击“生成照明”来烘焙照明时,Light Probes 将照明数据保存在环境中的特定位置。 这确保了在环境中移动的动态对象的照明反映了烘焙对象使用的照明级别。 在黑暗的区域它会很暗,在较亮的区域它会更亮。 下面,您可以在 FPS 示例中看到机库内外的机器人角色:The Inspection

在这里插入图片描述
洞穴内外的机器人,光照水平受光照探针影响

  要创建 Light Probes,请右键单击 Hierarchy 窗口并选择 Light > Light Probe Group。

在这里插入图片描述
  最初,会有一个光探测器立方体,总共八个。 要查看和编辑 Light Probes 的位置并添加其他的,请在 Hierarchy 窗口中选择 Light Probe Group,然后在 Inspector 中单击 Light Probe Group > Edit Light Probes。

在这里插入图片描述
  场景视图现在将处于编辑模式,其中只能选择 Light Probes。 使用移动工具移动它们

在这里插入图片描述
  光探头应首先放置在动态对象可能移动到的区域中,其次应放置在照明水平发生显着变化的区域。 在计算对象的照明级别时,引擎会找到最近的 Light Probes 的金字塔,并使用这些来确定照明级别的插值。

在这里插入图片描述
所选箱子的最近的光探测器

  定位光探头可能会很耗时,但是这种基于代码的方法可以加快您的编辑速度,尤其是对于大型场景。

  有关 Mesh Renderer 如何与 Light Probes 配合使用以及如何调整配置的更多详细信息,请参阅本文档。


反射探头

  光线追踪工具(例如 Maya 或 Blender)可以花时间准确计算反射表面的每个帧像素的值。 对于实时渲染器而言,此过程花费的时间太长,这就是经常使用快捷方式的原因。

  实时渲染器中的反射使用环境贴图(预渲染立方体贴图)。 Unity 使用 SkyManager 提供默认地图。 将单个贴图作为场景中所有位置的反射源可能会导致无法令人信服的反射。 以本节所示的机器人为例。 如果这个角色的金属部分总是反射天空,那么在看不到天空的机库中会显得很奇怪。 这就是反射探针有用的地方。

  反射探针只是放置在场景中关键位置的预渲染立方体贴图。 您可以在单个场景中使用多个反射探测器。 当动态对象在场景中移动时,它可以选择最近的反射探针并将其用作其反射的基础。 您还可以设置场景以在探针之间混合。

  要创建反射探针,请右键单击层次结构窗口并选择 Light > Reflection Probe。

在这里插入图片描述
  然后定位探头并调整其设置。 正确放置探针并调整设置后,单击烘焙以生成立方体贴图

在这里插入图片描述
  下图显示了 FPS 示例中使用的两个反射探头:检查,一个在机库内部,一个在外部。

反射探针混合

  混合是反射探针的一大特色。 您可以通过“Renderer Asset Settings”面板启用混合。

  混合逐渐淡出一个探测器的立方体贴图,同时随着反射对象从一个区域传递到另一个区域而淡出另一个。 这种逐渐过渡避免了当一个物体穿过区域边界时,一个独特的物体突然“弹出”到反射中的情况。

Box Projection

  通常,假定反射立方体贴图与任何给定对象的距离都是无限远的。 当物体转动时,立方体贴图的不同角度将可见,但物体不可能靠近或远离反射的环境。 虽然这适用于户外场景,但它的局限性在室内场景中显示出来。 房间的内墙显然不是无限远的,当物体靠近它时,墙的反射应该会变大。

  Box Projection 选项使您能够在距探测器有限距离处创建反射立方体贴图,允许对象根据它们与立方体贴图墙壁的距离显示不同大小的反射。 周围立方体贴图的大小由探测器的效果区域决定,具体取决于其 Box Size 属性。 例如,对于反映房间内部的探头,您应该设置尺寸以匹配房间的尺寸。


镜头光晕

  已针对 URP 更新了创建镜头光晕的工作流程。 配置它的第一步是创建镜头光晕 (SRP) 数据资产。 在 Project 窗口中的合适的 Assets 文件夹中单击鼠标右键,然后选择 Create > Lens Flare (SRP)。

在这里插入图片描述

  使用此资产配置耀斑的形状。 要渲染镜头光晕,请选择会导致光晕的光源,然后选择Add
Component > Rendering > Lens Flare (SRP)。

在这里插入图片描述
  在此组件的“设置”面板中(参见下图),将您创建的镜头光晕数据资源分配给镜头光晕数据属性。

在这里插入图片描述


光晕

  Draw Halo 选项不适用于 URP 中的灯光,但很容易用广告牌模仿。 另一个选项是设置球体的 Alpha 透明度。 下面的第一张图片显示了此类着色器的着色器图,第二张图片描述了结果。 有关使用 Shader Graph 创建此着色器的更多信息,请参阅附加工具章节。

在这里插入图片描述

屏幕空间环境遮挡

  由于默认情况下环境光不考虑几何体,因此高水平的环境光会导致渲染效果不佳。 在现实世界中,两个物体之间的狭窄间隙可能比更宽的间隙更暗。 Ambient Occlusion 可以帮助您在 Unity 项目中解决这个问题。 要将其与 URP 一起使用,请选择 URP 资产正在使用的渲染器。 转到添加渲染器功能并选择屏幕空间环境光遮蔽 (SSAO)。

在这里插入图片描述
使用默认 SSAO 设置或根据需要进行调整:

在这里插入图片描述
该效果为狭窄的间隙添加了阴影。 让我们看看以下三张图片。

  顶部图像没有 SSAO。 中图显示了计算的 SSAO,而下图显示了 SSAO 的结果。 请注意,研磨机和秤在与桌子相接的地方具有更强的边缘。

在这里插入图片描述
SSAO 是本指南后面详细介绍的一种后处理技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值