大家好,
上一次我们介绍了我们目前的风格化游戏项目是如何使用HDRP。很多人说可以使用URP来实现相同的效果。最近几周我们实际上已经从HDRP迁移到URP,主要是因为UITK着色器的支持以及HDRP长期未修复的bug。随着支持的结束,我们认为现在是避免生产中出现问题的最佳时机。
你可能会问:是否值得?简短的答案是是!
我们在Steam Deck上的演示中将FPS从约30提高到约60!这不是一个苹果与苹果的比较,因为我们在过程中切换到了Forward+从HDRP的延迟渲染器。我们的编辑器性能也大大改善了,空的健身房场景从原来的120FPS现在达到了300FPS以上,进入编辑模式也变得非常快。
然而,过程并不是像你想的那样简单。所以我想分享一下我们在迁移过程中遇到的更多深入的障碍。第一步是将URP包添加到同一个项目中,以便在同一个Unity项目中同时拥有HDRP和URP包。
1. 体积雾和闪电
最大的问题是没有内置系统与HDRP相比。我们尝试了Unity Asset Store中的多个付费资产以及开源项目以获取开始。许多只是屏幕空间效果,并且不适用于我们的游戏,因为我们需要适用于2.5D设置的正确的光线追踪效果。换句话说,你需要看到体积雾的神光线,即使你不看方向光线。
我们最终使用了一个开源项目并修改了它以满足我们的需求。视频中可以看到HDRP和URP的比较。调整HDRP和URP中的光源值非常麻烦,因为值大小不同(例如,600,000 vs 1)。但是更大的问题是,每个光源都附带了HDRP和/或URP的额外数据。因此,如果你同时使用HDRP和URP,你会同时看到两个值。然后你想删除HDRP组件,这会导致问题,会迫使你删除整个光源组件。我们建议等到删除HDRP包时再调整场景中的光源值,因为脚本将缺失,之后你可以在所有光源上删除缺失的脚本引用而无问题。
2. VFX图形
我们需要迁移数百个VFX图形从HDRP到URP。如果输出是“无灯光”节点,那么就很简单,不需要做任何事情。如果你使用自定义Shader Graph(SG),那么你需要更改着色器并添加“URP”到“Active Targets”设置中。重要的是在添加新的URP目标后,你需要更新所有VFX图形和SG。然后你需要确保它们在URP中工作并表现得一样,然后你应该删除HDRP目标,因为否则你会在SG和VFX图形中看到不必要的着色器变体,这会增加构建时间。
如果你有一个“HDRP灯光”输出节点,你需要手动添加一个“URP灯光”输出节点来在选择URP渲染管线时看到任何输出(或构建)。在验证一切正常后,所有“HDRP灯光”输出节点都应该从所有VFX图形中删除。
唯一真正的bug是当你同时使用两个渲染管线时,如果你在VFX图形中使用Decal输出,那么你需要使用“HDRP灯光Decal”输出节点,这会在开启URP渲染目标时破坏你的VFX图形。它会在尝试打开它时抛出错误。我们建议在切换到URP之前删除“HDRP灯光Decal”输出节点,然后添加“URP灯光Decal”输出节点。
我们遇到的另一个bug是当删除HDRP包后,VFX图形在进入编辑模式时会抛出警告。似乎在删除HDRP包后,仍然存在一些HDRP的东西,HDRP着色器无法找到。我们找到的唯一解决方案是复制粘贴所有VFX节点,删除旧的节点。超级麻烦和枯燥的工作,但它有效,我们现在有一个干净的项目。
最后,打开数百个VFX图形会在新标签中打开它们。这会使你的布局和编辑器变得混乱。我们建议在任务完成后保存你的布局,然后恢复之前的布局。
3. 全屏效果
我们目前使用的是Unity 6.3 LTS,我们直接使用RenderGraph以合并渲染通道来获得最佳性能。学习曲线有一定的难度,但它值得为性能优势和对各种效果的访问。我们使用它来实现玩家受伤效果,将来还会使用它来实现水下效果等。
4. 着色器图形
非常直接,只需要添加URP活动目标,并且在HDRP中有相同的输出设置。然后不要忘记从着色器图形中删除HDRP活动目标,因为否则你也会看到不必要的着色器变体,这会增加构建时间。我们在项目中不使用SG,因为我们使用HDRP中的HLSLuber着色器来重现Unity灯光着色器。
5. 材质
我们可以给出的最重要建议是,在迁移之前设置材料结构。这样你就可以使用材料变体来使用主材料。我们使用这个来迁移项目中的数百个材料。例如,你可以有一个“环境主材料”,以及“植物blah”材料变体(MTV),它是“环境主材料”的材料变体(MT)。这是一个父子设置,MTV会继承所有重要的设置。它还允许你在主材料中切换使用的着色器,并且完成了任务。每个MTV都会使用新的URP着色器,而不是旧的HDRP着色器。我们在重写URPuber着色器时使用了相同的关键字(除了我们想改变一些关键字外),这使得自动迁移更好地工作了(例如,“enableVertexAnimation”)。这比我们预期的更好,并且迁移所有MTV时感觉非常有成就感。
有人有类似的经历,或者正在计划由于迫切性而进行类似的操作?如果你有更多问题,我们很乐意回答。如果有些东西不清楚,请随时问。希望至少有人在这篇文章中找到了有用的信息。
评论 (0)