Unity | HDRP高清渲染管线学习笔记:HDRP光照系统(一)

这篇具有很好参考价值的文章主要介绍了Unity | HDRP高清渲染管线学习笔记:HDRP光照系统(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、Light组件

1. Angular Diameter

2. Light Appearance

3. Intensity(光照强度)

4. Indirect Multiplier(间接光倍数)

5. Volumetrics(体积雾)

6. Shadows(阴影)

6.1 Shadow Map(阴影贴图)

6.2 Contact Shadow(接触阴影)

二、Reflection Probe组件(反射探针)

1. Type(反射贴图生成的方式)

三、Light Probe Group组件(光照探针组)

四、光照贴图烘焙

1. 光照贴图烘焙技术

2. 具体的烘焙操作

五、Volume Override

1. Shadows

1.1 MaxDistance

1.2 Working Unit(工作单位)

1.3 Transmission Multiplier(光传输乘数)

1.4 Cascade Count(阴影级联数)

2. Contact Shadows

 2.1 Length(长度)

2.2 Opacity(透明度)

2.3 Quality(质量)

3. Micro Shadows(微阴影)

4. Ambient Occlusion(环境光遮蔽)

4.1 Intensity(强度)

4.2 Direct Lighting Strength(直接光照强度)

4.3 Radius(半径范围)

4.4 Temporal Accumulation

4.5 Ghosting Reduction(减弱鬼影)


一、Light组件

1. Angular Diameter

        使用该选项可以控制平行光在物体上的高光强度,以及阴影的柔软程度

2. Light Appearance

        HDRP会使用Filter和Temperature两个参数来计算光源所发出光线的最终颜色。色温越高,越偏向蓝色;反之越偏向黄色。色温大于5000(单位为kelvins,表示为K)时,通常称为冷色调;反之则称为暖色调。

3. Intensity(光照强度)

        光照强度用于控制实际太阳光的亮度

4. Indirect Multiplier(间接光倍数)

        (注:如果在Window→Rendering→Lighting Settings界面中没有启用Baked Global Illumination选项,则此参数无效。)

  1. 将其设为1,用于模拟真实世界的光照。(副作用是可能产生过于强烈的间接光照,导致画面失真。)
  2. 如果设为0,那么这盏灯就不会在场景中产生间接光照信息。

5. Volumetrics(体积雾)

        此参数用于模拟光源发射的光线通过体积雾发生散射的现象。

6. Shadows(阴影)

6.1 Shadow Map(阴影贴图)

  • Resolution(分辨率)

        用于控制阴影的质量,质量越高阴影效果越好,当然也会相应增加GPU的负担和内存的使用量,从而可能导致性能问题。

6.2 Contact Shadow(接触阴影)

        在平行光组件的设置里面和HDRP配置文件中并没有提供可以调整接触阴影的选项。这时我们就要用到Volume中的Contact Shadows属性了。

二、Reflection Probe组件(反射探针)

1. Type(反射贴图生成的方式)

  1. Baked(以烘焙方式生成反射贴图)
  2. Custom(自定义)方式允许你自己指定一张Cubemap作为反射贴图(可用于制作特殊效果)。
  3. Realtime(实时生成)方式则可以提供比较精确的反射贴图,但是因为是实时计算出来的,所以性能较差。

三、Light Probe Group组件(光照探针组)

        光照探针组的作用是用烘焙的方式把场景中的间接光照信息(也就是当直接光照射到场景中物体的表面时,光线与物体发生碰撞并反弹所获得的光照信息)烘焙到光照探针上。当游戏运行时,场景里的动态物体游走于场景的各个区域。动态物体虽然无法参与光照烘焙(只有静态物体才能参与光照烘焙计算),但是可以通过采样这些光照探针上的间接光照信息,为自己提供更逼真的表面光照效果。

        光照探针被认为是一种价廉物美,为动态物体提供间接光照信息和生成动态阴影的高性能解决方案。

        光照探针组的烘焙不像反射探针可以通过组件上的烘焙按钮进行烘焙,光照探针的烘焙需要同时使用Lighting烘焙界面与场景的光照贴图来完成。

四、光照贴图烘焙

        如何在Unity中来模拟间接光呢?有两种方法:

  • 光照贴图烘焙(Lightmapping)。
  • 实时光线追踪(Realtime Raytracing):依赖硬件。

1. 光照贴图烘焙技术

        Unity自己研发的光照贴图烘焙技术,称为“渐进式光照贴图烘焙”(Progressive Lightmapper)。Progressive Lightmapper有两个版本: CPU版本和GPU版本。当然首选GPU,原因很简单:烘焙速度快。GPU版本的烘焙速度一般比CPU要快10倍左右。前提是GPU上的显存足够支撑整个烘焙过程;如果显存不够,系统就会自动切换到CPU版本继续烘焙,此时烘焙速度会显著降低。

2. 具体的烘焙操作

(1)物体设置为Static

(2)Lighting 光照烘焙窗口设置

        (a)Window→Rendering→Lighting 打开光照烘焙窗口

        (b)Mixed Lighting

        要想烘焙全局光照,必须在这里勾选Baked Global Illumination(烘焙的全局光照)选项,然后选择一种光照模式:Baked Indirect或者Shadowmask。

        Shadowmask和Baked Indirect之间的区别是:前者除了烘焙间接光照信息,也会在Lightmap(光照贴图)中把阴影烘焙进去。Shadowmask模式可以提供最逼真的阴影效果,当然性能消耗和内存占用也是较高的。Shadowmask模式适用于远处存在可见物体的场景,比如在高端机器上运行的开放世界游戏。

        (c)Lightmapping Settings

  • Lightmapper:可以选择Progressive GPU或者Progressive CPU,首选GPU版本。
  • Direct Samples、Indirect Samples和Environment Samples:用于设置采样值。采样值越大,光照贴图细节越多,相应的烘焙时间也越长。
  • Bounces:用于控制进行光线追踪计算时光线的反弹次数。反弹次数越多,光照贴图细节越多,相应的烘焙时间也越长。
  • Filtering:在Filtering下可以选择一种Denoiser(降噪算法)。可以分别为Direct Denoiser、Indirect Denoiser和Ambient Occlusion Denoiser选择不同的降噪算法。一般建议是根据不同的平台为这三项选择同一种降噪算法。比如为Nvidia显卡选择Optix;为AMD显卡选择Radeon Pro。OpenImageDenoise来自英特尔,是基于CPU的降噪算法,可用于所有平台。
  • Lightmap Resolution:此数值用于控制光照贴图的分辨率。分辨率越高,光照贴图的细节越多,相应的烘焙时间也越长。一般刚开始测试烘焙光照贴图时,可以尝试将其设为20或者30,然后逐渐增加,直到能够在合理的烘焙时长里获得满意的光照贴图细节。
  • Lightmap Padding:用于控制光照贴图中,按照UV分开的光照贴图区域之间的间隔大小。如果此间隔太小,有可能造成光照贴图边缘的颜色渗透。但是如果间隔太大,又会浪费光照贴图空间,增加贴图数量,导致光照贴图在内存中的占用增大。
  • Lightmap Size:用于控制每一张光照贴图的最大尺寸。

        (d)Auto Generate:一般在正式烘焙时不勾选此选项。如果场景较小或者硬件较好(比如开发用的电脑上配备了显存较大的显卡),则可以在试验烘焙阶段启用此选项。这样每次修改场景中组件的数值或者移动、旋转、缩放物体时,Lightmapper会进行自动烘焙。

        (e)Generate Lighting:当设置完所有参数后,单击此按钮开始烘焙。

(3)增强间接光强度:Indirect Lighting Controller (Volume Override)

(4)处理阴影和环境光遮蔽

五、Volume Override

1. Shadows

1.1 MaxDistance

        针对不同类型的光源,Shadows属性的作用分别如下。

  1. 对于Punctual Light(精确光源类型)使用Max Distance(最远阴影投射距离,单位为m)参数控制这类光源投射阴影的最远距离(超过此距离后,阴影将不再被渲染)。(精确光源类型:从一个点发射光线的光源,在Unity中为聚光灯(Spot Light)和点光源(Point Light))。
  2. 对于平行光类型这里使用Max Distance参数来控制Shadow Cascade(阴影级联)的最远显示距离(超过此距离后,阴影将不再被渲染)

1.2 Working Unit(工作单位)

        用于设置Split和Border数值的具体单位。

  1. 如果设置为Metric,则HDRP会使用m为单位;
  2. 如果设置为Percent,则HDRP会使用百分比数值。

1.3 Transmission Multiplier(光传输乘数)

        数值为0~1。可用于控制平行光照射到厚物体上时应用到光线强度上的乘数。

1.4 Cascade Count(阴影级联数)

        数值为1~4的整数。分别代表最少1个级联和最多4个级联。将它设置为不同的级联次数后,下面的Split和Border输入值的数量会发生相应的变化。比如设置4个级联,则下面会出现3个Split输入值和4个Border输入值。

2. Contact Shadows

        因为接触阴影的算法是基于屏幕空间的,所以它只能采样当前画面的数据用于接触阴影的计算,因此在使用接触阴影时,需要将其调整得细微一些,作为主要阴影的补充,而不是让接触阴影成为画面中阴影的主角。

 2.1 Length(长度)

        用于控制Raymarching算法所用射线的长度(以m为单位)。这也代表射线可以捕捉到的用于阴影计算的细节的最长距离。

2.2 Opacity(透明度)

        用于控制阴影本身的透明度。

2.3 Quality(质量)

        用于控制阴影的质量。质量越高,采样数量越大,相应的性能消耗就越大。如果这里选择Custom,则我们可以自定义Sample Count(采样数量)。

        Contact Shadows只会在当前场景中的“主光源”上起作用。那么HDRP是如何判断场景中哪个光源是主光源的呢?有以下两种判断方式。

  1. 当前场景中没有平行光灯(Directional Light)的情况:HDRP判断当前画面中,哪一盏灯的包围盒(Bounding Box)尺寸在屏幕上占比最大,那么占比最大的那盏灯就是主光源。整个场景中也只有那盏灯能够投射接触阴影。
  2. 当前场景中有平行光灯的情况:不管场景中还有什么光源,这盏平行光灯都是主光源。这种情况下只有平行光灯会投射接触阴影。

3. Micro Shadows(微阴影)

        微阴影的参数很简单,一个Enable开关和Opacity(透明度)参数,它用于调整阴影的透明度。

        Micro Shadows会使用材质上的Normal Map(法线贴图)和Ambient Occlusion Map(环境光遮蔽贴图)来计算物体表面微小的阴影。HDRP不会使用网格表面数据来计算微阴影。注意,使用Micro Shadows会增加性能的消耗。

4. Ambient Occlusion(环境光遮蔽)

        Ambient Occlusion(环境光遮蔽),简称AO。环境光遮蔽也是基于屏幕空间计算出来的,所以会有和Contact Shadows类似的边缘显示问题。因此在使用环境光遮蔽时,原则上不能把效果调得太明显,而是以辅助为主。

补充:当配置了光线追踪相关参数时,会出现Ray Tracing选项。

Ray Tracing(启用/禁用光追功能):如果勾选就启用光追算法。默认不勾选,此时使用的是光栅化算法。

4.1 Intensity(强度)

        用于控制环境光遮蔽的显示效果。数值越大,效果越强,其影响的区域(墙角、空洞等)会变得更黑。

4.2 Direct Lighting Strength(直接光照强度)

        用于控制接受直接光照的区域的环境光遮蔽强度。数值越大,该区域越黑。

补充(光追功能相关):文章来源地址https://www.toymoban.com/news/detail-619484.html

Layer Mask:可以用这个参数来控制某些物体不参与AO的计算,不让它们为场景提供AO。

4.3 Radius(半径范围)

        用于控制HDRP在屏幕空间中搜索遮挡物的范围。此数值越大,环境光遮蔽起作用的区域越大,但是显示质量可能会降低。

4.4 Temporal Accumulation

        启用该选项以后可以在计算AO时,利用前面生成的帧获得更好的效果(需要在相机的Custom Frame Settings中启用Motion Vectors支持)。不过可能在这个过程中会产生鬼影效果(Ghosting)。为了减弱鬼影效果,我们要用到下一个设置。

4.5 Ghosting Reduction(减弱鬼影)

        数值越接近于0,鬼影越严重,但是这可以减少画面中因为使用Temporal Accumulation而产生的噪点;反之数值越接近于1,鬼影效果越不明显,但是噪点会更严重。我们选择0.5作为折中的方案。

补充(光追功能相关):

  • Max Ray Length(最大射线长度):可用于控制参与AO计算的光追射线的长度,单位为m。该参数的值越大,AO光追算法找到的物体越远,环境光遮蔽的效果也就越强,当然也越消耗性能。如果已经通过光照烘焙获得了不错的环境光遮蔽效果,则可以把Max Ray Length设置得小一些,比如1,这样可以得到一些无法通过光照烘焙获得的环境光遮蔽细节,同时也不会增加额外的性能开销。
  • Sample Count(采样数):可用于控制AO算法的采样值。增大采样值可以让降噪功能把画面中AO的噪点尽可能地移除。
  • Denoise(降噪):如果不启用降噪功能,那画面就没法看了。

到了这里,关于Unity | HDRP高清渲染管线学习笔记:HDRP光照系统(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity | HDRP高清渲染管线学习笔记:基本操作

    目录 一、场景整体环境光强度 1.HDRI Sky 2.Shadows 二、屏幕后处理效果(Post Processing) 1.Exposure 2.Post-processing/Tonemapping 三、抗锯齿 四、添加光源 1.Light Explorer窗口 2.光照探针组 3.反射探针 4.烘焙光照贴图 本文主要是了解HDRP基本操作: 如何为一个已经摆放好模型的场景添加环境光等

    2024年02月16日
    浏览(65)
  • Unity | HDRP高清渲染管线学习笔记:示例场景解析

    目录 一、HDRP入门 1.HDRP设置  1.1 HDRP配置文件中的全部设置项         1.1.1 Rendering下的Lit Shader Mode         1.1.2 Lighting 下的Volumetrics(体积光)和Screen Space Reflection(屏幕空间反射) 2.离线渲染VS实时渲染 3.Volume组件 3.1Sky and Fog Volume 天空雾效 4.光照贴图烘焙 5.HDRP材质和

    2024年02月08日
    浏览(102)
  • Unity | HDRP高清渲染管线学习笔记:HDRP配置文件(HDRP Asset)

    目录 一、Frame Settings(帧设置) 二、Volume 三、HDRP配置文件、帧设置和Volume之间的关系 四、HDRP配置文件 1.Rendering (1)Color Buffer Format(颜色缓存格式) (2)Lit Shader Mode(Lit着色器模式) (3)Motion Vectors(运动矢量) 2.Post-processing Quality Settings(后处理质量设置) 五、针对

    2024年02月16日
    浏览(46)
  • unity 2019 内置渲染管线 光照与Lighting面板 参数详解

    本文仅讨论内置渲染管线,高清渲染管线和通用渲染管线不在讨论范围之内 内置渲染管线就是最普通的工程自带的渲染管线 本文使用的Unity版本为2019.4 ,。如果你的版本不同,参数和参数的功能可能不同。 由于作者并非专业技美,只是一个苦逼的码农,难免有错误,请大佬

    2024年02月17日
    浏览(39)
  • Unity——URP & HDRP 渲染模式学习笔记

    目录 HDRP和UPR是两种完全不同的渲染模式,不能混用,只能选择其中一种,最好在项目刚开始的时候就确定好。否则后期所有模型的材质都要改变非常麻烦。 修改渲染模式方法: HDRP, URP, BRP区别 备注 project settins: 1. graphics-Scriptable render pipeline settings 要修改,假如从hdrp改为

    2024年02月04日
    浏览(48)
  • 【Unity 踩坑系列】项目升级URP/HDRP渲染管线时如何解决材质丢失问题 (模型全部为粉红色)

    在我们创建项目时候如果我们一开始使用的是默认内置渲染管线,后期项目需要升级到URP或者HDRP渲染管线时有可能会出现预制体材质丢失的问题(原因是大部分资源的预制体在Unity官方推荐使用URP渲染管线之前,都只是使用默认内置管线的材质。所以并不适配现在的URP渲染管

    2024年02月16日
    浏览(60)
  • Unity学习笔记---2D光照渲染、美术、动画

    Unity 提供三个渲染管线 :一个内置渲染管线和两个可编程渲染管线 (SRP)。两个 SRP 为通用渲染管线 (URP) 和高清渲染管线 (HDRP)。URP 适用于所有平台,而 HDRP 则 旨在用于针对高端 PC 和主机的游戏。 注意 :如果在 Unity 2021 或更高版本中启动一个新项目,则称为 2D (U

    2024年02月09日
    浏览(42)
  • Unity-3DRPG游戏 学习笔记(1)--使用URP渲染管线

    教程地址: Unity2020 3DRPG游戏开发教程|Core核心功能01:Create Project 创建项目导入素材|Unity中文课堂_哔哩哔哩_bilibili 创建URP通用渲染管线(2021版本) 1. 打开:Windows--Package Manager--左上角下拉选择Unity Registry--搜索Universal RP--Install 2. Project窗口--Assets--右键Create--Rendering--URP Asstes

    2024年02月11日
    浏览(46)
  • 【unity基础】关于学习通用渲染管线(UniversalRenderPipeline)入门级的分享笔记

            文章是学习入门级别的文章,定位偏向于个人学习笔记,文章内有错误的点希望大家理性指出,感谢各位。因为URP本身是一个比较杂的东西,涉及到的东西也非常的多,下面主要是对于Unity URP的创建、简单使用(资深级别使用起来可能会设计到渲染方方面面的知识

    2024年02月05日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包