Difference between revisions of "使用手册"
(→Render) |
|||
| Line 212: | Line 212: | ||
=== Render === | === Render === | ||
为所有打开的场景烘焙光照贴图。 | 为所有打开的场景烘焙光照贴图。 | ||
| − | 如果 [[Light_probe_mode|Light Probe Mode]] 设置为 L1 或 L2,也会烘焙 [https://docs.unity3d.com/Manual/LightProbes.html 光照探针]。 | + | 如果 [[使用手册#Light_probe_mode|Light Probe Mode]] 设置为 L1 或 L2,也会烘焙 [https://docs.unity3d.com/Manual/LightProbes.html 光照探针]。 |
<hr> | <hr> | ||
Revision as of 10:17, 5 November 2025
Contents
系统要求
使用 Bakery 需要:
Windows(7 或更高版本)电脑。
Nvidia 显卡。最低支持型号为 Kepler(GeForce 650 或更新型号,Quadro 显卡请查看规格)。
64 位 Unity 编辑器。Bakery 已在 5.6 到 6 及更高版本上测试过,同时也在 Tuanjie 1.6.7 上通过测试。
前提条件
- 确保你的项目中没有任何脚本编译错误,否则也会导致 Bakery 的脚本无法编译。
- 确保你的显卡驱动是最新版本,如有需要请更新。
请使用 Game-Ready(标准)驱动程序,而不是 “Studio” 驱动。
安装
1. 通过 Asset Store 将 Bakery 导入到你的项目中。
2. Unity 会显示要导入的文件列表。如果这是你第一次使用 Bakery,建议直接 点击 Import(导入)。有经验的用户可以取消选中 examples 文件夹,以进行更轻量的安装。
文件将被导入到 `Assets/Bakery` 和 `Assets/Editor/x64/Bakery` 文件夹中。 这些文件夹之后可以移动。
3. Unity 随后会导入 Bakery 并编译脚本。此时可能会弹出如下窗口:
此时你应点击 “Go Ahead”(继续)。
现在你应该能在编辑器中看到新增的 Bakery 菜单:
快速开始
1. 添加一些模型或基础体,并将其标记为静态(Static)。
用于光照贴图的网格必须具有不重叠的 UV2。如果存在 UV2,则会使用 UV2(否则使用 UV1)。如果你的模型没有为光照贴图进行展开,请在资源中勾选 Generate Lightmap UVs(生成光照贴图 UV)。 Unity 的基础体已经具有正确的 UV2。
2. 选择方向光(Unity 为你创建的那个),并添加 Bakery Direct Light 组件。
3. Bakery Direct Light 有许多可调选项,但你可以轻松将其与 Unity 光源匹配。点击 Match lightmapped to real-time。现在 Bakery 光源的颜色应与 Unity 默认的方向光相同,呈黄色调。
4. 要获得带阴影的环境光,请创建 Skylight(Bakery->Create->Skylight)。
5. 选择 Skylight,为它设置一些偏蓝的颜色,然后点击 Match scene skybox to this light。 这将使场景的 skybox 与光照完全匹配。
6. 点击 Bakery->Render Lightmap。默认情况下,Full Lighting 模式是激活的。它会烘焙所有光源的直接和间接光照贡献。如果你想将实时阴影与烘焙全局光照(GI)结合使用,请将模式更改为 Indirect。
7. 点击 Render。
8. 完成!现在你应该已经得到烘焙的全局光照(GI):
渲染设置
所有渲染设置都可以通过 Bakery->Render Lightmap 访问。设置会为每个场景单独保存。Bakery 窗口顶部的选项允许你在 Simple(简单)、Advanced(高级)和 Experimental(实验)设置之间切换,每个后续模式都会显示更多可调选项。对于大多数场景,Simple 模式已经足够,是入门的好方法。
Render mode
定义要烘焙的光照贴图类型。
Full Lighting
烘焙所有 Bakery 光源的完整直接光和间接光。
Indirect
基础混合模式。它会查看每个光源上的 Baked Contribution 选择器:如果设置为 Direct And Indirect,则光源会像在 Full Lighting 模式下一样被烘焙。如果设置为 Indirect Only,则只会烘焙该光源的间接光照(GI)。在后一种情况下,你应保持对象上的 Unity 光源和 Bakery 光源同时存在,一个提供实时直接光照,另一个提供预计算的全局光照(GI)。
Shadowmask
更高级的混合模式。它通过生成两种类型的光照贴图来工作——一种包含烘焙颜色(如 Indirect 模式),另一种包含静态物体的阴影。它有几个优点:
- 实时阴影只需渲染少量动态对象,而不是整个场景。
- 实时阴影与烘焙阴影可以正确融合。
- 实时光源可以渲染凹凸贴图、高光和其他表面效果,同时仍会被高质量烘焙阴影遮挡。
要启用此行为,你必须在同一对象上同时存在 Unity 光源和 Bakery 光源,并将 Baked Contribution 设置为 Shadowmask and Indirect。未标记的光源将按 Indirect 模式进行烘焙。
Distance Shadowmask
此复选框仅在你选择 Shadowmask 时可见,并且只是切换项目 Quality Settings 中同名的设置。 更多详情
Subtractive
启用 Subtractive 光照模式。
此选项对光照贴图本身没有任何特殊作用,实际上它的工作方式与 Full Lighting 相同。
唯一的区别是,它还会将实时 Unity 光源设置为与 Subtractive 模式兼容(因为无法通过 UI 完成此操作)。
你还需要在 Unity Lighting 窗口中额外设置全局减法参数(例如全局阴影颜色)。
Ambient Occlusion Only
仅烘焙环境光遮蔽(AO)。如果你很清楚自己在做什么,这可能会有用。请确保设置 AO 选项。
Directional mode
定义了方向信息的烘焙方式。标准光照贴图每个像素只存储单一颜色,而方向光照贴图为着色器提供了关于该像素周围半球内光照变化的提示。这些数据用于在完全烘焙的区域中结合法线贴图。如果将其应用到内置的 Bakery 着色器中,还可以产生**近似高光反射**效果。
None
不包含方向数据,每个像素仅有单一颜色。
Baked Normal Maps
依然没有方向数据,但在渲染光照贴图时会考虑法线贴图。此方式在运行时没有额外开销。由于光照贴图的分辨率通常低于法线贴图,结果可能显得模糊。其他问题包括:由于缺乏 mipmapping,远处可能出现锯齿,以及降噪步骤可能导致细节被涂抹。要了解如何在此模式下使用具有程序化法线的自定义着色器,请参阅 Normal Mapping 章节。
Dominant Direction
此模式类似于 Unity 中 Enlighten 和 Progressive 烘焙器的实现。它与大多数着色器兼容,仅生成一张额外的贴图,运行时开销极小。缺点是凹凸贴图的效果较弱,略显灰暗,与实时光照下的同一物体相比可能差异较大。
RNM
基于最初为《Half-Life 2》开发的 Radiosity Normal Mapping 技术(相关演示文稿),后来被许多游戏采用(如《Mirror's Edge》)。此模式总共生成三张 HDR 贴图,是内存占用最高的模式之一,但运行时开销仍相对较低。该模式比 Dominant Direction 更精确,能更好地再现表面反差,并能正确处理来自不同角度、具有不同颜色的光照对法线贴图的影响。
SH
基于论文《Precomputed Global Illumination in Frostbite》。这是最高质量的模式,能提供更好的表面对比度,并准确表现来自不同方向、不同颜色的光照。总共生成四张贴图,其中仅一张为 HDR,因此比 RNM 占用更少内存。运行时开销略高于 RNM。
MonoSH
与 SH 类似,但使用单色的 L1 方向系数。表面对比度同样良好,虽然无法准确表现来自不同方向的不同颜色光照,但对多数场景来说已经足够。仅生成一张额外贴图,因此显存占用与带宽需求与 Dominant Direction 相近;事实上更低,因为 Dominant Direction 使用 RGBA 贴图,而 MonoSH 只需 RGB。该贴图通过内置的方向光照贴图系统传递,但在标准着色器下显示不正确。请务必使用兼容的着色器。
限制
- RNM 和 SH/MonoSH 只能与 Bakery shader 一起使用,或者需要对你的着色器进行调整。
- 在 RNM 和 SH 模式下,不会生成标准的颜色光照贴图。你需要确保场景中所有材质都使用 Bakery Shader,或者使用 Lightmap Groups 将 RNM/SH 对象与其他对象分开。
- RNM 和 SH 贴图是通过 MaterialPropertyBlock 应用于对象的,因此在 Unity 的 Lighting 窗口中可能无法完全显示。
- Dominant Direction、RNM 和 SH/MonoSH 模式可能需要为全局光照(GI)和光照网格使用更多采样,以获得相近的质量。
Texels per unit
每个世界单位的光照贴图像素(Texels)近似数量。它会影响生成光照贴图的数量和分辨率。
入门示例值:
- 大型户外区域(城市):1 - 5
- 中型户外区域(几条小巷):10 - 20
- 高质量室内场景:100
假设场景比例大约为 1 单位 = 1 米。在 Unity 中使用这种比例通常是推荐的,以便更好地导航和进行物理模拟。如果你的比例不同,请相应地调整 Texels。
请注意,Texels Per Unit 是基础分辨率,但每个对象还可以通过 Mesh Renderer 上的 "Scale in Lightmap" 选项以及 Bakery 窗口中的 "Scale per map type" 进行额外调整。
Max resolution
光照贴图的最大尺寸限制。如果对象无法容纳在单张光照贴图中(根据当前的 Texels Per Unit 值),将会分配额外的光照贴图。同样的四个正方形对象可以使用四张 512x512 的贴图,也可以使用一张 1024x1024 的贴图。
Bounces
定义光线在表面上反弹的次数。通常,对于户外场景(例如城市),较低的反弹次数就足够了,而对于封闭场景(室内、洞穴),则需要较高的反弹次数。
虽然滑块最多限制为 5 次反弹,但可以在数字输入框中输入任意反弹次数。
Samples
影响全局光照(GI)的质量。典型值为 16 到 32。
GPU Priority
在 GPU 处理光照贴图时,操作系统和其他软件的响应可能会变慢。此选项允许你在烘焙速度和系统响应之间进行平衡。
Render
为所有打开的场景烘焙光照贴图。 如果 Light Probe Mode 设置为 L1 或 L2,也会烘焙 光照探针。
Render Light Probes
为所有打开的场景烘焙 光照探针。
请注意,要在 Shadowmask 模式下对动态对象获得正确的混合光阴影,你还需要启用 occlusion probes。
Render Reflection Probes
为所有打开的场景烘焙反射探针。此按钮仅为方便起见,会调用引擎内置的反射探针更新功能。
Update Skybox Probe
为当前的 skybox 烘焙全局漫反射和反射探针。与 “Render Reflection Probes” 一样,它仅调用引擎内置函数。
Occlusion probes
在渲染光照探针时,允许 Unity 使用当前选择的内置光照烘焙器烘焙遮挡探针(occlusion probes)。遮挡探针是存储在普通光照探针中的附加数据,可以防止动态对象在阴影区域被错误照亮。目前在 Unity 中无法使用自定义遮挡探针,必须调用内置光照烘焙器来完成此操作。






