Unity | HDRP高清渲染管线学习笔记:Lightmapping(光照烘焙)与Lightmap(光照贴图)

目录

相关概念

1.渐进式光照贴图烘焙

1.1 渐进式光照贴图烘焙对模型的要求

1.2 渐进式光照贴图烘焙对硬件的要求

1.3 渐进式光照贴图烘焙支持的Unity渲染管线

1.4 进行渐进式光照贴图烘焙结果

1.5 渐进式光照贴图烘焙的CPU版本和GPU版本

1.6 Lighting窗口Lightmapping Settings参数介绍

1.6.1 采样设置相关

1.6.2 降噪设置相关

1.6.3 光照贴图分辨率

1.6.4 Compress Lightmaps

1.6.5 Ambient Occlusion相关

1.6.6 Directional Mode(方向模式)

1.6.7 Indirect Intensity和Albedo Boost

1.7 渐进式光照贴图烘焙的CPU版本存在的意义

1.8 渐进式光照贴图烘焙节省系统显存的方法:

1.9 解决光照贴图接缝问题

1.10 控制模型在光照贴图中的占比


        场景中的光照信息大致可以分成两类:直接光照信息和间接光照信息。

        间接光照的实时计算在目前只有支持实时光线追踪的硬件才能实现,比如Nvidia的RTX系列显卡。在普通的计算设备上,特别是移动端设备上目前还没有实时光线追踪的解决方案出现。因此我们必须依赖预先计算好的光照贴图来提供这些间接光照信息。

        光照贴图本质上就是一张或者多张应用在场景模型上的贴图。它们包含通过光照贴图烘焙方式进行预计算所获得的间接光照、阴影等信息(可以在烘焙时选择只烘焙间接光照,不烘焙阴影)。使用光照贴图可以避免在游戏应用运行时进行实时光照和阴影的计算,从而提高游戏应用的运行性能,光照贴图特别适合在性能较弱的计算平台比如移动平台上使用。

        要在Unity中通过预计算(或者说烘焙)获得光照贴图,我们需要使用Unity官方研发的Progressive Lightmapper(渐进式光照贴图烘焙)模块。Progressive Lightmapper是基于AMD的Radeon Rays技术(https://gpuopen.com/radeon-rays/)开发的。Radeon Rays是一套支持跨平台的ray intersection库。

相关概念

HDRP高清渲染管线下:

  1. LightingMode:光照模式。Lighting窗口,分为Baked Indirect、Shadowmask两种。
  2. Lightmapper:光照烘焙。Lighting窗口,Lightmapping Settings,分为GPU和CPU两种。

1.渐进式光照贴图烘焙

1.1 渐进式光照贴图烘焙对模型的要求

  • 模型上不能有重叠的UV。

        我们可以尝试使用Unity的Import Settings窗口中的Generate Lightmap UVs功能来生成第二套UV(记得在勾选复选框以后单击Apply按钮)供光照贴图烘焙之用。

        不过还是建议在建模软件中手工制作第二套UV。因为通常贴图用的UV会导致出现重叠的情况,比如在同一个模型上有两个形状相同的部分,它们可以共用同一个UV区域(这样只需要在上面画一遍纹理)。如果将这一套有重叠的UV用于光照烘焙,就意味着同一模型上不同区域使用相同的光照信息,这显然是不对的。

  • UV之间要有足够的间距以避免“渗色”现象的发生。“渗色”现象的发生是因为两块UV之间的间隔不足,导致一块UV上的颜色“渗透”到了相邻的UV上。
  • 因为使用光照贴图只能烘焙静态物体,所以要把需要参与烘焙的物体标记为Static。

        我们习惯直接勾选Game Object右上角的Static复选框,然后把层级中所有物体标记为Static。不过对于光照贴图烘焙有意义的两个选项是Contribute GI和Reflection Probe Static,因此也可以只勾选这两个选项。

        Contribute GI(贡献全局光照)选项和Mesh Renderer中的Contribute Global Illumination(贡献全局光照)选项是联动的。如果右上角的Contribute GI选项被勾选,则Mesh Renderer组件中的Contribute Global Illumination选项也会被勾选。与之相关的Receive Global Illumination(接受全局光照)选项则会被设置为Lightmaps,意指当前Game Object会使用光照贴图获取间接光照。当然,我们也可以把Receive Global Illumination选项设置为Light Probes,这时间接光照信息就来自相关的光照探针(Light Probes)。

1.2 渐进式光照贴图烘焙对硬件的要求

  • 至少需要一块支持OpenCL 1.2的显卡
  • 至少2GB的显存
  • CPU支持SSE4.1指令

1.3 渐进式光照贴图烘焙支持的Unity渲染管线

  • 内置渲染管线(Built-in Render Pipeline),支持Baked Indirect、Subtractive和Shadowmask光照模式。
  • 通用渲染管线(Universal Render Pipeline,简称URP),支持Baked Indirect、Subtractive和Shadowmask光照模式。
  • 高清渲染管线(High Definition Render Pipeline,简称HDRP),支持Baked Indirect和Shadowmask光照模式。

1.4 进行渐进式光照贴图烘焙结果

        进行渐进式光照贴图烘焙时烘焙出来的是光照贴图(Lightmaps)、光照探针(Light Probes)和反射探针(Reflection Probes)。光照贴图中会包含间接光照信息

### 使用 Unity HDRP 高清渲染管线创建 3D 虚拟世界的实战教程 #### 准备阶段 在开始之前,确保已经安装并配置好支持 HDRPUnity 版本。HDRP 是 High Definition Render Pipeline (高清渲染管线) 的缩写,它提供了高质量的光照效果和材质表现能力[^1]。 为了启用 HDRP 渲染管线,在 `Edit` -> `Project Settings` -> `Graphics` 中找到 Scriptable Render Pipeline Settings 设置项。如果当前设置为 None,则表示正在使用传统渲染管线。通过点击旁边的圆点按钮可以选择已有的 HDRP 资产文件或者新建一个 HDRP 资产文件来完成切换操作[^2]。 #### 场景搭建资源准备 一旦完成了基础环境设定之后,就可以着手构建具体的场景内容了。这通常包括但不限于地形塑造、模型导入以及光源布置等工作流程: - **地形生成**:利用 Terrain 工具快速建立地面结构,并调整高度图纹理贴合需求。 - **资产引入**:从外部获取所需三维物体(如建筑物、树木等),并通过拖拽方式将其加入到工程目录下再实例化至编辑器视窗当中显示出来。 - **灯光设计**:合理安排不同类型的灯源组合以营造逼真的氛围感;例如太阳光模拟自然界的白昼变化过程等等[^3]。 #### 材质优化技巧分享 针对每种表面属性定义专属物理特性参数集合体即 Shader Graph 或 Standard Surface Inputs ,从而实现更加细腻真实的视觉呈现效果 。具体做法如下所示: ```csharp // 示例代码片段展示自定义着色器逻辑部分 Shader "Custom/HDRenderPipelineExample" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag sampler2D _MainTex; struct appdata_t { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; v2f vert(appdata_t IN) { v2f OUT; OUT.vertex = UnityObjectToClipPos(IN.vertex); OUT.uv = IN.uv; return OUT; } fixed4 frag(v2f i ) : SV_Target { fixed4 col = tex2D(_MainTex, i.uv); return col ; } ENDCG } } } ``` 上述脚本演示了一个简单的基于 HD RP 自定义 shader 编写的例子。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烫青菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值