自己收藏

Bakery GPU Lightmapper 1.8 官方手册

2020-12-03  本文已影响0人  星易乾川

安装

文档地址:
https://geom.io/bakery/wiki/index.php?title=Manual#Quickstart

1.通过Asset Store将Bakery导入到您的项目中。

2. Unity将显示要导入的文件列表。如果您是第一次使用Bakery,建议您点击导入。有经验的用户可能希望取消选中examples文件夹以进行更轻量的安装。

文件将被导入到Assets / Bakery和Assets / Editor / x64 / Bakery。这些文件夹以后可以移动。

3.然后,Unity将导入Bakery并编译脚本。它可能显示如下窗口:

Goahead.png

在这种情况下,您应该单击“继续”。

现在,您应该看到将Bakery菜单添加到编辑器中:

Bmenu.jpg

快速开始

1.添加一些模型或图元,并将其标记为“静态”。

网格必须具有不重叠的UV才能进行光照贴图。如果存在UV2,则使用UV2(否则为UV1)。如果您没有解开模型以进行光照贴图,请确保选中在该资产上生成“光照贴图UV ”。Unity原语已经具有正确的UV2。

Staticmarked.jpg

2.选择“定向光”(为您创建的一个Unity),然后向其添加“烘焙直接光”组件。

Bulbgraph.png 面包店和Unity使用单独的光源组件。

3. Bakery Direct Light有许多选项可以调整,但是您可以轻松地将其与Unity light匹配。点击将贴图映射为实时。现在,面包店灯应具有与Unity默认的定向颜色相同的淡黄色。

Matching.jpg

Bulbgraph.png Direct Light组件可能会抱怨项目未使用线性光强度。问题是默认情况下Unity会错误地将gamma校正应用于光源颜色。可以通过脚本启用正确模式,这就是“修复”按钮的作用。如果您已经在非线性强度模式下设置了许多光源,并且不想再次更改它们,则可以跳过固定。即使您按下“修复”,也始终可以随时还原更改。

4.要获得阴影的环境照明,请创建“天光”(“面包店”->“创建”->“天光”)。

Menusky.jpg

5.选择“天窗”,为其提供一些蓝色,然后单击“将场景天盒匹配到此光”。这将使场景天空盒与照明完全匹配。

Bulbgraph.png 将Unity skybox与Bakery天窗匹配是可选的,但对于正确性很有用,因为可以确保可见环境和引擎内反射探针与烘焙的照明匹配。

Skycomp.jpg

6.单击烘焙->渲染光照贴图。默认情况下,“全光照”模式处于活动状态。它会烘焙所有灯光的直接和间接贡献。如果要将实时阴影与烘焙的GI结合使用,请将其更改为Indirect

Bakerywindow.jpg

Bulbgraph.png 面包店可能会抱怨您使用的是旧的伽玛模式,建议您进行更改。如果您关心照明质量,强烈建议使用线性模式。如果您已经设置了一个较大的项目并使用了错误的伽玛,并且不想更改它或将其运送到不支持它的移动设备上,则可以忽略它。

7.单击渲染

8.完成!您现在应该已经烘焙了GI:

Bakedgi.jpg

渲染设置

可以通过Bakery-> Render Lightmap访问所有渲染设置。保存每个场景的设置。“面包店”窗口中最上方的选项使您可以在“简单”,“高级”和“实验”设置之间进行切换,每个后续模式都会显示更多可调整的选项。简单模式足以应付大多数场景,并且是入门的好方法。


渲染模式

定义要烘焙的光照贴图的类型。

全照明

所有面包房灯均具有完整的直接和间接照明。

Bulbgraph.png 在2017.3之前的Unity版本中,如果同一对象上同时具有Unity和Bakery组件,则需要手动禁用Unity组件,以避免出现双亮度。在较新版本中,与内置的光照贴图器一样,烘焙的灯光会自动禁用实时效果。
间接

image

Unity支持的不同渲染模式的比较

基本混合模式。它将在每盏灯上查看“烘焙贡献”选择器:如果将其设置为“直接和间接”,则与在“全光照”模式下一样对灯进行烘焙。如果将其设置为Indirect Only,则仅烘焙此灯光的间接贡献(GI)。在后一种情况下,您应该在对象上同时保持Unity和Bakery灯光,一个灯光提供实时直接贡献,另一个灯光用于预先计算的GI。

Indirectonly.jpg
荫罩

image

左:完全烘烤的光。中心:动态光和烘焙的GI。右:胶囊阴影,凹凸和高光是动态的,但立方体阴影和GI是烘焙的。

image

当摄像机足够远或禁用动态阴影时,同一场景将如下所示

更高级的混合模式。它通过生成两种类型的光照贴图来工作-一种具有烘焙色(如在间接模式下),另一种具有静态对象的阴影。它有几个好处:

更多细节

目前,只有Direct,Point和Spot光源可以与遮罩交互(因为它们是Unity实时支持的唯一类型)。要启用此行为,必须在同一对象上同时具有Unity和Bakery灯光,并将Baked Contribution设置为Indirect和Shadowmask。未标记的灯将像在间接模式下一样被烘烤。

Smask22.jpg
距离荫罩

仅当您选择了阴影遮罩并且仅在项目的“质量设置”中切换同名设置时,此复选框才可见。 更多细节。

Bulbgraph.png 由于缺少相应的脚本API,复选框在Unity 5.6.x上不可见。相反,您可以在“窗口”->“照明”->“混合照明”->“照明模式”中进行切换。

Bulbgraph.png 在<2017.3版的Unity版本上,由于API限制,渲染Shadowmask光照贴图将清除光探针。烘烤后需要再次重新渲染它们。它不应在较新的版本上发生。
减法

启用光照明模式。

此选项对光照贴图没有任何特殊作用,实际上,其作用与“全光照”一样。

唯一的区别是,它还设置了实时Unity灯以与减法模式一起使用(因为无法通过UI进行操作)。

您将需要在Unity照明窗口中另外设置全局减法参数(例如全局阴影颜色)。

仅环境光遮挡

只烤AO。如果您知道自己在做什么,可能会很有用。确保设置AO选项


定向模式

image

不同方向模式的比较

定义如何烘焙方向信息。标准光照贴图每个纹理像素仅存储一种颜色,而方向光照贴图为着色器提供了有关光照在纹理素周围半球如何变化的提示。需要此数据才能将完全照亮的区域与法线贴图结合在一起。将其插入内置的Bakery着色器中也可以产生近似的镜面反射响应。

没有

没有方向性数据,每个纹理像素只有一种颜色。

烘焙法线贴图

仍然没有方向性数据,但是在渲染光照贴图时会考虑法线贴图。没有额外的运行时开销。由于光照贴图通常比普通贴图具有更低的分辨率,因此结果可能看起来模糊。其他问题包括由于缺少mipmapping而在远处产生混叠,以及去噪步骤可能会弄脏细节。若要了解如何在此模式下将自定义着色器与过程法线一起使用,请阅读“法线贴图”部分。

主导方向

此模式类似于Unity中的“启发式”和“渐进式”烘烤。它与大多数着色器兼容,仅生成一个附加映射,并且运行时开销最小。不利的一面是,凹凸贴图看起来相当微弱且呈灰色,与实时照明下的同一对象相比可能有很大不同。

RNM

基于最初为HL2(幻灯片)发明的“光能传递法线贴图”技术,后来在许多游戏中使用(例如“镜之边缘”)。它总共生成3个HDR映射,这是所有存储器中最需要内存的模式。运行时开销仍然相对较低。此模式比“主导方向”更为精确。它更适合再现表面对比度并处理从不同角度影响法线贴图的彩色光。

SH

基于“冻伤中的预先计算的全局照明”论文。这是最高质量的模式,可提供更好的表面对比度,并代表来自不同方向的不同颜色的照明。总共生成4张地图,其中只有一张是HDR,因此占用的内存少于RNM。运行时开销略高于RNM。

局限性

每单位特塞尔

image

每单位1 vs 10纹素

每个世界单位大概的光照贴图像素数量。影响生成的光照贴图的数量和分辨率。

入门示例值:

假定场景比例约为1个单位= 1米。在Unity中工作时,通常建议使用这种比例,以便更好地导航和进行物理模拟。如果比例不同,请相应地乘以Texels。

请记住,“每单位Texels”是基本分辨率,但是可以使用“网格渲染器”上的“在光照贴图中缩放”选项以及“烘焙”窗口中的“按地图类型缩放”来另外调整每个对象。

Bulbgraph.png 在Lightmap中将“缩放”设置为0的对象将不会被烘焙,但仍会投射阴影并影响GI。

最大分辨率

最大光照贴图大小限制。如果对象不能容纳在单个光照贴图中(根据当前的“每单位Texels”值),则会分配其他光照贴图。同样的4个正方形对象可以拍摄4个512x512映射或1个1024x1024。


弹跳

image

注意更多的反弹如何为封闭空间带来更多的光线。

定义光线应从表面反弹多少次。通常,较低的值对于室外场景(例如城市)就足够了,而对于较封闭的场景(内部,洞穴)则需要较高的值。


样品

image

左:样本= 4,右:样本=16。出于说明目的,去噪功能已关闭。

影响GI的质量。典型值为16到32。


GPU优先级

当GPU在光照贴图上工作时,操作系统和其他软件的响应速度可能会降低。此选项使您可以在烘烤速度和系统响应能力之间取得平衡。


渲染

为所有打开的场景烘焙光照贴图。如果“光探头模式”设置为L1,则也要烘烤光探头。


渲染光探头

烘焙所有打开的场景的光探测器

请注意,要在“阴影遮罩”模式下对动态对象获得正确的混合光阴影,还需要启用遮挡探针


渲染反射探针

为所有打开的场景烘焙反射探测器。此按钮仅是为了方便起见,它将调用内置引擎反射探针更新。


更新Skybox探针

烘焙当前天空盒的全局漫反射探测器。与“渲染反射探针”一样,它仅调用内置引擎功能。


咬合探头

当按下“ Render Light Probes”时,让Unity使用当前选择的内置光照贴图器烘焙遮挡探针。遮挡探针是存储在常规光探针中的其他数据,它可以防止动态物体在阴影区域被照亮。当前,无法在Unity中使用自定义遮挡探针,并且必须调用自己的光照贴图来完成这项工作。


警告事项

这些选项将在按下“渲染”按钮之一后验证场景,并显示警告对话框,询问是否继续或停止烘焙过程。

高级渲染设置

光探头模式

更改光探针的烘烤方式。

如果启用了“遮挡探针”选项,Unity 2019.3中似乎存在一个错误,无法正确保存旧版光探针颜色。L1模式现在是默认模式,在使用遮挡探针时建议使用。传统模式将很快被弃用,并由基于L1的新L2模式代替。


资产UV处理

为资产配置UV填充调整。可能的值:


降噪器

设置所需的降噪器。可能的值:


调整样品位置

找到最佳样品位置以防止漏光。该算法的细节在此处概述。在某些情况下(通常具有平滑法线的较大和非常低的多边形几何)可能会产生错误的结果,在这种情况下,可以将其禁用。


渲染前卸载场景

烘烤之前卸载Unity场景以释放视频内存。只需在编辑器中显示,复杂的场景就可以占用几GB的VRAM。


去噪

image

左:降噪,右:降噪。

如果启用,将应用降噪算法。面包店使用Nvidia的AI去噪器


修复接缝

image

左:接缝,右:接缝是固定的。

如果启用,将尝试混合由UV不连续产生的接缝。对于平滑几何体(包括Unity的默认球体)很有用。


按场景拆分

如果一次加载多个场景,并且启用了此选项,则每个场景将具有自己的一组光照贴图,不会与其他场景共享。在运行时流式传输场景时,限制加载的纹理数量很有用。


孔填充

image

孔填充关闭或打开。

如果将Atlas Packer设置为xatlas,将尝试填充每个孔,从而产生更有效的图集。对于几何形状非常复杂的场景,它可能会增加场景导出时间,但建议不要这样做。


最小分辨率

最小光照贴图大小限制。可用于在许多小的但已完全占用的光照贴图与少数未完全填充的光照贴图之间进行平衡。


每个地图类型的比例

允许您以不同的方式缩放颜色/阴影蒙版/方向贴图的分辨率。例如,一种常见的情况是具有低分辨率的间接颜色但具有高度详细的阴影蒙版。请注意,缩放比例是在渲染光照贴图后应用的,因此不会节省烘焙时间。如果启用“调整UV填充”,则填充将基于最低分辨率贴图,以防止纹理像素泄漏。


检查器预览

image

Checker预览进行中

如果选中“显示检查器”复选框,则“场景视图”将在可见对象的顶部渲染一个棋盘图案,以演示光照贴图的纹理大小。这对于确保在烘烤之前为“单位像素”和其他影响分辨率的设置使用足够的值很有用。

启用检查器预览将强制Bakery执行地图集打包。这可能需要一些时间,但不应超过几秒钟。更改某些内容后,请按刷新检查器重新设置场景以查看更改。

Checker预览还使用随机颜色来显示如何将场景拆分为不同的光照贴图。

Bulbgraph.png Checker预览当前未显示地形的正确纹理像素大小。

发射增强

将任何表面发射乘以该数字。


间接提升

用这个数字乘以所有反弹的照明。与轻型组件的间接强度相同,但全局。


背面GI

image

背面GI

image

左:背面GI = 0,右:背面GI =1。请注意阴影区域如何获得更多绿色照明。

确定有多少光从正面传递到背面,然后由GI反射。这对于像叶子这样的半透明薄表面特别有用。值在0-1范围内。


环境光遮蔽

image

左:AO强度=0。右:AO强度= 1。

您可以出于美学目的将简单的非物理环境光遮挡应用于最终场景照明。


RTX模式

启用RTX硬件加速。仅RTX GPU将从此选项中受益。支持的最低驱动程序版本是418。

驱动程序可以在大多数非RTX Nvidia卡上模拟RTX模式,但结果通常较慢。


导出地形树

如果启用,绘制的地形树将影响照明。树木本身不会被烘烤。请注意,烘烤期间,每棵树均使用最高的LOD级别。不建议使用此选项来渲染具有高度详细模型的多公里森林。


地形优化

如果启用(默认),地形将使用单独的射线追踪技术来利用其高度场几何形状。否则,它们将像其他任何网格一样对待。地形优化可显着减少高分辨率风景所需的内存占用。在某些情况下,它还可以使地形烘焙更快,在其他情况下(尤其是在简单的低分辨率风景中),禁用它可能很有意义。


样本乘数

将所有阴影和GI样本乘以指定因子。使用它可以在草稿质量和最终质量之间快速切换。


GI VRAM优化

切换用于非常大场景的内存优化,尤其是在一次烘焙太多光照贴图时。如果启用,可能会减慢渲染速度。如果禁用,并且场景太大,则面包店可能内存不足。


瓷砖尺寸

GPU Priority相同,但是您可以设置图块大小,而不是抽象优先级。面包店将光照贴图拆分为较小的图块,并一次更新一个。较小的尺寸意味着更多的GPU工作中断,并且可以使系统响应更快。


临时路径

临时文件文件夹。烘焙过程中,面包店可能需要几GB的可用空间。与HDD相比,在SSD上拥有此文件夹可以使渲染速度更快。目前,该文件夹不会自动清除。您可以随时删除其内容(渲染期间除外)。


输出路径

光照贴图文件夹。这是所有光照贴图以及lightprobe和顶点颜色资产将被保存的地方。此路径是相对于您的Assets文件夹的。


使用场景命名输出路径

如果启用此选项,则输出路径将自动设置为与当前活动场景同名的文件夹(Assets / CurrentSceneName /)。这类似于内置Unity光照贴图的行为。


渲染选定的组

仅烘焙包含所选对象的光照贴图组。不仅将重绘选定的对象,还将重绘它们所属的所有光照贴图组。其他光照贴图将不会更新。如果对象不属于某些手动分配的组,则将重新烘焙使用相同光照贴图的场景的一部分。


嘟嘟响

如果启用,烘焙完成后,面包店将播放声音。

实验性渲染设置

解包器

如果启用了“调整UV填充”,则定义将要使用的展开器。


阿特拉斯·帕克(Atlas Packer)

选择将不同的对象UV布局打包到大型光照贴图地图集中时要使用的算法。

仅一个地图集打包机支持某些功能:

| | 默认 | Xatlas |
| 覆盖分辨率 | 是 | 没有 |
| 高效的LOD包装 | 没有 | 是 |
| 孔填充 | 没有 | 是 |

请注意,也可以为每个光照图组分别选择地图集打包程序。


导出几何和贴图

如果启用,则Bakery将在渲染之前将场景导出为其格式。如果确定场景的几何形状和纹理以及光照贴图的分辨率设置未更改(例如,您仅在调整GI或灯光设置),则可以禁用此复选框以加快下一次渲染的速度。


更新未修改的灯光

如果启用,则Bakery将重新计算自上次渲染以来未发生变化的光源。如果仅调整一个灯光,并且不想等待其他灯光重新渲染,则可以禁用此复选框。


更新修改后的灯光和GI

如果启用,则Bakery将重新计算自上次渲染以来已更改的GI和照明。


紫外线填充:仅增加

仅在打开“调整UV填充”时可见。默认情况下,仅基于当前加载的场景来计算模型资产的最佳UV填充。如果同一模型的多个实例使用不同的光照贴图分辨率,则最小的实例将定义填充,因此UV图表之间的间距足够大以防止它们相互泄漏。但是,在2个不同的隔离场景中烘焙同一模型可能会在优化新场景的同时打破先前场景中的UV。此复选框允许通过从不减小填充值来防止此类行为,因此将始终针对已烘焙过的最低分辨率实例进行优化。


去噪:修复亮边

image

左:去噪后可见明亮的边缘;右:固定。

仅在启用“降噪”时可见。有时,用于去噪的神经网络可能会在阴影周围产生明亮的边缘,例如是否应用了锐化效果。如果启用此选项,则Bakery将尝试将其过滤掉。启用后,去噪阶段可能会稍微变慢。

此功能还可用于过滤“萤火虫”,即来自光照贴图的偶发亮点。


与Enlighten实时GI结合

如果启用,则当按下“渲染”按钮时,它将首先尝试使用Enlighten进行烘焙以计算实时GI。之后,将进行常规的面包店灯光映射过程。烘焙GI和实时GI将一起工作。


在远程服务器上烘烤

启用网络烘焙

组件

面包店光照贴图组选择器

指定要用于对象及其所有子对象的光照图组。光照贴图组是面包店用于共享一个光照贴图的对象集合的术语。群组具有告诉面包店如何包装对象的属性,如果将结果烘焙为纹理或顶点,则哪些灯光会影响它们。默认情况下,所有静态对象都会自动打包到多个光照贴图组(图集)中,因此您不必担心。手动定义组仅应用于特殊目的,例如:

要手动定义组,可以通过使用Assets-> Create菜单或使用组件中的Create New按钮来创建Lightmap Group Assets。使用“创建新”按钮时,将基于以下形式创建新资产:

image

透明的自阴影关闭与开启:请注意一些单面但背面的多边形如何正确照明

如果您有分配了Pack Atlas模式的光照贴图组,则其他设置将出现在组件上:

如果您选择光照贴图组资产,则其他实验设置将可见:


烘焙光影预制

该组件允许预制件存储灯光映射元数据。这样的预制件可以在任何场景中实例化,无论是在编辑器中还是在运行时。该组件应直接添加到预制的根对象中。不支持嵌套的预制件。由于预制件将在烘烤后被覆盖(与按下“应用”按钮时相同的方式),因此要求预制件没有任何未应用的更改(子对象,材质和脚本参数不应移动)应该保持不变,等等)。如果检测到此类更改,则烘焙后将在组件UI中打印错误,并且不会保存任何元数据。如果启用了Lightmapped预制验证警告,则在烘焙之前,所有预制错误也会显示在对话框中。

灯光映射的预制件支持Bakery的所有功能,例如LOD,地形,定向光照贴图,RNM,SH,逐顶点模式和阴影蒙版。为了使荫罩正常工作,您还需要将灯光也包含在同一预制件中。

Bulbgraph.png 请注意,由于API的限制,预制荫罩只能在Unity 2017.4或更高版本上使用。

烘焙后,将将名为“ BakeryPrefabLightmapData”的对象添加到预制中。该对象保存一个脚本,其中包含应用光照贴图的所有必要数据。

此外,Lightmapped Prefab允许使用两个按钮保存当前渲染设置并将其加载回任何当前打开的场景:


面包店直接光

image

带GI的纯正直射光

image

左:阴影散布= 0.01,右:0.05。请注意阴影如何开始锐化并随着距离逐渐变得模糊。

无限远的定向光(例如太阳)。

如果同一对象同时启用了Unity和Bakery光源,但它们不匹配,则会出现两个按钮:


面包房天窗

image

带GI的纯天光

无限远的阴影环境光(天空)。

Bulbgraph.png 旋转天光的GameObject将相应地旋转来自立方体贴图的光照。

如果天光的设置与当前场景的天窗不匹配,将出现两个按钮:


烘焙灯网

image

左:近采样数= 0,远采样数=4096。
中:近采样数= 0,远采样数=128。
右:近采样数= 16,远采样数=128。
请注意照明外观如何相似,但使用的合并采样数较少。

任何形状的发射网格。应与“网格渲染器”组件或设置为“区域”模式的“灯光”组件一起使用。

面包店会根据发射表面的接近程度将两种不同的算法混合用于面光源。在接近光源时,其工作方式类似于GI算法,而在远处,光源近似为虚拟点光源的云。

Bulbgraph.png

image

弯曲的轻型网格

如果网格材质和灯光设置不匹配,将出现两个按钮:

轻型网格物体和发光材料之间的区别

发光材料:

浅网格:


面包点光

image

左:阴影扩展= 0.5,右:阴影扩展= 1。

点光源,没有面积。尽管物理上不可能,但它对于游戏还是有用的,并且是匹配Unity点光源和聚光灯的唯一方法。

Bulbgraph.png 聚光灯只是带有附加投影蒙版的点光源。

image

从左到右:Omni,Cookie(默认斑点纹理),Cubemap,IES。

如果同一对象同时启用了Unity和Bakery光源,但它们不匹配,则会出现两个按钮:


面包卷

[图片上传失败...(image-11f534-1606989692482)]

体积生成3D纹理,每个体素存储光探测器(L1球谐和阴影蒙版),使其成为常规Unity光探测器的可行替代品。

| | Unity光探头 | 统一LPPV | 面包卷 |
| 手动放置每个探针 | 是 | 是 | 没有 |
| 在一个对象上插值多个探针 | 没有 | 是 | 是 |
| 在运行时可移动 | 没有 | 没有 | 是 |
| 可以放入预制件 | 没有 | 没有 | 是 |
| 完整的脚本API | 没有 | 没有 | 是 |
| 铃声 | 可能 | 可能 | 固定 |
| 去噪 | 没有 | 没有 | 是 |
| 运行时开销 | CPU:低;GPU:低。 | CPU:中等;GPU:中等。 | CPU:无;GPU:中等。 |

Bakery Volume是一个边界框,它链接到一组3D纹理(如果需要,可以包含3个SH纹理和一个阴影遮罩),非常易于使用和编写脚本。卷可以在运行时轻松地交换,移动,装载或卸载,也可以链接到预制件。他们也不需要任何光探针组和手动探针放置;整个体积充满了均匀的探针体素网格。光线/阴影的泄漏会自动按照与光照贴图相同的方式进行修复(尽管对于大型体素而言,薄的双面壁可能是个问题,但可以通过在不同侧面使用不同的体积来避免这种情况)。由于体素栅格具有统一的特性,因此还可以对它们应用类似光照贴图的降噪,而常规的光探头则无法做到。此外,烘焙着色器使用Geomerics采样技巧 为了完全消除“振铃”伪影,有时在高对比度HDR照明下会产生球形谐波。

因此,Volumes可以为动态对象(即来自静态对象并影响动态对象的照明,而不是相反的对象)产生干净,细腻,高质量的烘焙照明。

体积方法的唯一缺点是较高的每像素着色成本。成本与LPPV相似(根据屏幕上受阴影影响的像素数量缩放),但与LPPV不同,Volume本身一旦烘焙就永远不会更新。可以通过将它们稍微重叠来避免多次混合。

设定音量转换

image

体积小物件

当将BakeryVolume添加到GameObject时,一个边框Gizmo将出现在场景视图中。将其拖动到小方块将对其进行缩放。还有其他更改音量大小和位置的方法:

解析度

启用“自适应分辨率”时,体素的数量由“每单位体素”控制。禁用它可以手动输入分辨率。对于大多数单位为1米= 1米的游戏,合理的“每单位体素”值为2,但是在某些情况下(例如动态门)使用较小但分辨率较高的体积是有益的。

其他设定

用法

可以使用体积感知着色器将体积分配给对象。Bakery带有实现它的“ Bakery Standard”着色器,以及HDRP和URP图。有关应用体积的各种方法,请参见example_volumes场景。

提示

技术信息

卷可以自​​动工作(检查示例场景),但是也可以编写脚本使用方式。

可以通过以下公共属性从组件检索体积数据:

所有bakedTexture *映射均使用RGBAHalf(每个体素8个字节)格式,并且掩码为ARGB32(每个体素4个字节)。

因此,卷的字节大小=宽度高度深度* 3 * 8 +(仅当使用荫罩时)宽度高度深度* 4。

可以对卷使用常规纹理压缩,但是尚未实现。对于低密度的卷,可能会导致明显的伪影,但对于高密度的卷可能有用。

要采样体积,需要一个特殊的着色器,并且这些着色器包含在Bakery中。要将卷添加到自定义着色器,请检查HDRP / URP软件包中包含的BakeryDecodeLightmap.hlsl中的BakeryVolume_float()函数。


面包店总是渲染

如果将Bakery添加到对象,则即使在禁用其渲染器的情况下,烘焙时也始终将其考虑在内。


面包包作为单方形

如果添加到对象,则Bakery会将该对象及其子对象的UV视为单个组合的正方形,并且在自动图集打包或在具有“打包图集”模式的“光照贴图组”中,切勿使它们彼此远离。整个儿童等级将被打包为一个。

材料相容性

反照率和排放

面包店通过利用Meta Pass系统支持大多数Unity材料。所有内置,曲面,LWRP和HDRP着色器均已定义了正确的元通道。

如果您有Unlit shader,请按照Unity文档中的说明手动添加meta pass。

如果不存在该传递,则Bakery将_MainTex,_BaseColorMap或_Color(如果未设置纹理)属性设为材质反照率,并将_EmissionMap和_EmissionColor设为发光色。

为了发射工作,Material.globalIlluminationFlags必须设置为MaterialGlobalIlluminationFlags.BakedEmissive。标准着色器会自动设置此值。

不透明度

image

材质参数转换为切口

当前,Bakery始终从_MainTex或_BaseColorMap的alpha值中获取完全分辨率的不透明度,并将其视为抠图(1位透明度)。

image

将蓝噪声用作Alpha

为了使不透明度起作用,着色器的RenderType标记必须是以下值之一:

如果存在名为_Cutoff的属性,它将影响剪切(因此“标准着色器剪切”滑块会自动工作)。

如果材料RenderType是透明或TreeLeaf,则α值_Color将另外修改截止:finalCutoff = 1 - (1 -截止)阿尔法*

对于半透明效果,请阅读有关背面GI地下散射的信息

Bulbgraph.png 提示:虽然Bakery目前不支持半透明的阴影投射器,但是您仍然可以利用随机透明性,即:将具有不同截止值的噪波纹理用作alpha。射线平均和去噪将使其看起来是半透明的。建议使用蓝噪声纹理

法线贴图

自定义曲面法线可以与“烘焙法线贴图”模式结合使用。不幸的是,Unity的Meta Pass不输出常规信息,因此默认情况下,常规是从名为_BumpMap的纹理中获取的,该纹理还由_MainTex_ST进行了转换。

但是,可以使完全自定义的着色器具有与烘焙兼容的高级法线贴图功能(例如,混合多层)。为此,您需要:

1.如Unity docs中所述,在您的着色器中定义一个Meta Pass 。

2.将其命名为“ META_BAKERY”,而不仅仅是“ META”。

3.包括“ BakeryMetaPass.cginc”。

4.添加#pragma顶点vert_bakerymt

5.如果unity_MetaFragmentControl.z变量不为0,则着色器应返回世界空间法线。返回的法线应该使用BakeryEncodeNormal函数进行编码。

Assets / Bakery / examples / shaders中包含两个实现此扩展Meta Pass的示例着色器。

您可以复制和修改BakeryMetaPass.cginc以适合您的需要,例如,从顶点着色器传递其他数据。

正面/背面

无论在着色器上使用哪种剔除模式,Bakery都将所有背面视为不透明,这意味着任何直接光线都不会通过背面,就像不会通过正面一样。但是,如果使用Backface GI,则背面可以部分发射正面接收到的光线。

蒙皮的网格渲染器支持

从v1.65开始,面包店支持蒙皮网格。但是,有一些限制:

着色器调整

image

左:默认双线性过滤。右:三次过滤。

image

左:两个阴影都烤了。
中心:球形阴影是动态的,其他阴影是静态的。与乘法结合在一起。
右:与中心相同,但与默认最小值组合。

Bakery提供了可选的着色器修改,这些修改可应用于Unity着色器,以改善光照贴图采样并匹配更接近光照贴图的实时光照。着色器调整菜单可以通过Bakery-> Shader Tweaks访问。

这些选项将修补大多数内置和第三方着色器使用的基本Unity着色器包含(来自CGIncludes文件夹)。所有修改将影响使用此版本的编辑器打开的所有项目,但也可以轻松还原。着色器调整会影响标准着色器和表面着色器的工作方式。HDRP,LWRP和其他SRP不受影响。

所有可用的修改都显示为按钮。按下按钮应用修改,它将保持按下状态。取消按下按钮以删除修改。当前可用的选项:

Bulbgraph.png 您可能需要以管理员身份运行Unity编辑器以使CGIncludes修补工作

衰减调整可能不适用于> 2017 Unity版本。此外,默认情况下,SRP具有正确的衰减。

烘焙着色器

Bakery包括自己的着色器,支持顶点光照贴图以及RNM和SH定向模式。它还允许从方向数据计算近似烘焙的镜面反射。常规彩色光照贴图,阴影蒙版和“主导方向”模式不需要面包着色器,因为大多数Unity着色器仍然支持这些功能。

标准渲染管道

面包店/标准:扩展常规的标准着色器。其他选项:

Bulbgraph.png 所有“允许”切换都会在着色器中启用特定的代码路径。出于性能原因,建议仅在材料中使用一个“允许”选项。

image

标准SH光探头与非线性探头

烘焙/标准镜面:与标准相同,但适用于镜面工作流程。

HDRP和URP

要提取其他HDRP / URP着色器,请打开Bakery随附的Bakery_ShaderGraphHDRP.unitypackage或Bakery_ShaderGraphURP.unitypackage。在内部,您可以找到可在自己的Shader Graph中使用的Shader子图以及一些示例材料。

跨着色器的功能支持

| | 大多数Unity着色器 | 大多数HDRP和URP着色器 | 面包房标准 | HDRP图 | URP图 |
| HDR彩色光照贴图 | 是 | 是 | 是 | 是 | 是 |
| 荫罩 | 是 | 是 | 是 | 是 | 否(URP不支持阴影蒙版) |
| 主导方向 | 是 | 是 | 是 | 是 | 是 |
| RNM | 没有 | 没有 | 是 | 是 | 是 |
| SH | 没有 | 没有 | 是 | 是 | 是 |
| 光照贴图高光 | 没有 | 没有 | 是 | 是的,主导方向和SH | 是,代表主要方向(请参阅链接) |
| 双三次过滤 | 是,

着色器调整

| 没有 | 是,

着色器调整

| 没有 | 没有 |
| 顶点光照贴图 | 没有 | 没有 | 是 | 单色,无逐顶点SH,方向或阴影蒙版(阴影图限制) | 单色,无逐顶点SH,方向或阴影蒙版(阴影图限制) |
| 非线性光探头 | 没有 | 没有 | 是 | 没有 | 没有 |
| 卷数 | 没有 | 没有 | 是 | 是 | 是 |

Bulbgraph.png 除常规彩色光照贴图外,所有其他功能至少都需要Shader Model 3.0才能正常工作。

Bulbgraph.png 由于内插器的限制,具有SH模式的顶点光照贴图至少需要Shader Model 4.0。

Bulbgraph.png 更新与主导方向镜面URP图可下载这里

关于HDRP / URP的注意事项

将软件包导入HDRP或URP项目后,通常可以立即使用它,但需要注意以下几点:

升级面包店

在升级资产时,建议执行以下步骤:

请注意,如果没有先关闭Unity,则导入可能由于锁定的DLL文件而失败(打印消息,例如“ alphabuffergen.dll:访问被拒绝。”)。

如果将Bakery文件夹(资产/ Bakery和Assets / Editor / x64 / Bakery)移动到其他位置,则可能需要在更新之前将它们移回以防止获得软件包的两个冲突副本。

脚本API

获取和修改渲染设置:

ftLightmapsStorage storage = ftRenderLightmap.FindRenderSettingsStorage();

可用设置的完整列表可以在ftLightmapsStorage.cs中看到。

获取lightmapper实例和(重新)加载设置:

ftRenderLightmap面包店= ftRenderLightmap.instance!=空吗?ftRenderLightmap.instance:新的ftRenderLightmap(); bakery.LoadRenderSettings();

渲染光照贴图(还可以将光照贴图设置为L1模式):

bakery.RenderButton(bool showMsgWindows)

仅渲染光探头:

bakery.RenderLightProbesButton(bool showMsgWindows)

仅渲染反射探针:

bakery.RenderReflectionProbesButton(bool showMsgWindows)

showMsgWindows告知是否可以显示任何对话框/确认。如果设置为false,则被抑制。

检查是否正在进行烘烤:

ftRenderLightmap.bakeInProgress

有关用法示例,请检查Batch Scene Baker脚本。

上一篇 下一篇

猜你喜欢

热点阅读