Amplify Imposter Custom Baking
请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com
原文地址
介绍 标准烘焙器收集延迟的 GBuffer 信息,其中包含典型 PBR 渲染的所有材质数据。然而,这可能并不总是必要的,甚至可能不够。在某些情况下,想要为其创建替代者的对象具有一些特殊的实时着色器效果,而简单的 PBR 渲染无法涵盖这些效果。在其他情况下,可能只想减少生成的数据量,因为有更高的平台限制(即移动设备)。自定义烘焙背后的想法是允许告诉工具想要烘焙什么以及希望如何根据具体情况进行渲染。
##要求 为本指南创建着色器可能非常困难,因此我们在包中包含了可与 Amplify Shader Editor 插件一起使用的必要模板和节点,从而使该过程变得更加轻松快捷。如果不熟悉它,Amplify Shader Editor 是我们自己的屡获殊荣的着色器编辑器,可以在基于节点的图形编辑器中创建着色器,而无需了解着色器代码。本指南假设使用 Amplify Shader Editor,因此如果对直观的基于节点的着色器创作工具感兴趣,请随时在此处查看其商店页面。还可以在此处的 wiki 页面中了解更多信息。
可以在软件包的目录AmplifyImpostors/Examples/Scenes/CustomBaking中找到本指南的文件和示例。如果是高级用户,并且想要手动创建着色器,仍然可以通过将结果与给定的示例进行比较来遵循指南。
Shader Graph 限制了使用自定义代码的能力,从而阻止了对 Amplify Impostors 的支持。请考虑使用替代方案Amplify Shader Editor,它从头开始设计,可扩展并可适应任何管道要求。
描述 本指南演示了创建与示例中相同的自定义替代器的过程。目的是为包含特殊动态着色器的对象创建替代器。此着色器在对象顶部添加了一个程序化油漆层。此油漆层是程序化的,因为它使用对象位置来计算油漆的伪随机颜色。如果我们为这个对象烘焙一个常规替代器,我们将失去这种程序行为,最终得到一个静态版本。
为了实现这一点,需要两个特殊的着色器。一个着色器将使用被代替的物体的原始着色器来烘焙不同的纹理贴图。此着色器包含不同的输出,这些输出将用于生成不同的纹理及其通道所包含的内容。称为“烘焙着色器”。另一个着色器将使用生成的纹理,并使用可能正在寻找的预期自定义效果,正确渲染地impostor。这是将在产品中使用的创建imposter效果的着色器。我们将其称为“运行时着色器”。最后,需要设置输出并将着色器链接到它们,使用可以在Impostor组件中创建和引用的预设资产文件来执行此操作。
创建烘焙着色器 在的项目中单击鼠标右键,然后创建一个新的 Impostor Bake 着色器。 注意:如果看不到此条目,请确保在着色器编辑器之后导入 Impostors 包,并打开着色器编辑器画布以检测更改。 在编辑器中打开着色器后,首先放置纹理采样器并将它们打包到所选输出,并确保属性名称与原始着色器匹配。 然后创建与我们可以烘焙到地图中的静态部分相对应的图形节点和连接,在我们的例子中,这是除程序颜色部分之外的所有内容。此外,因为我们稍后需要特殊遮罩来重新创建最终的程序效果,并且因为我们想要节省一些纹理内存,所以我们会将其与剩余数据一起打包并将其连接到同一个输出。 添加“Pack Normal Depth”着色器功能节点,它将法线转换为必要的空间并在 Alpha 通道中创建深度信息。 (可选)如果的对象着色器使用“剪切”效果,请确保通过减去剪辑蒙版值并将其连接到“剪辑”输出来模仿它。 创建运行时着色器 在的项目中单击鼠标右键并创建一个新的 Impostor Runtime 着色器。 在编辑器中添加一个新的“Amplify Impostor 节点”,将 Albedo、World Normal 和 Alpha 输出连接到主节点中的可用输入。点击 ASE 画布中的保存按钮。 注意:这样做应该会编译一个使用烘焙中最重要的数据的 Impostor 兼容着色器,但我们仍然需要进一步定制它以支持预期的程序效果。 在我们的例子中,我们想要获取原始输出中没有的自定义地图,我们通过选择 Impostor 节点并将“Extra Samplers”字段更改为适当的数字(在我们的例子中为 1)并连接一个带有名称的纹理对象节点来实现此目的,稍后将使用该名称来引用此地图。在本例中,我们将其称为“_Mask”。 我们现在需要从原始着色器创建程序逻辑,该着色器使用波函数中的对象 XZ 位置来生成颜色。 最后,从额外输出将程序颜色过滤到蒙版,并将适当的通道连接到其输出。保存。 创建烘焙预设 通过转到“Assets > Create > Amplify Impostor Bake Preset”或点击 impostor 组件中的“New”按钮来创建新预设。在所选项目位置中选择它。 将着色器分配给预设并添加或删除输出,直到拥有与在 [步骤 2] 中创建的着色器相同数量的可用输出。 配置输出以表示它们所保存的数据。在本例中,第一个输出保存 RGB 中的反照率颜色数据,因此我们将其标记为 sRGB 颜色空间。务必标记包含 alpha 通道的输出,在本例中它是第一个,因此我们保留单选按钮不变。 现在,只需在 impostor 组件中选择新的预设,必要时覆盖字段并点击“Bake Impostor” 最终结果 这是最终结果,请注意右侧的替代器现在可以模仿原始对象的效果并按预期显示程序颜色。此外,这些替代器仅使用三个贴图来实现它,而不是像标准替代器那样使用四个贴图。