【转载】Unity官方TA手册《Unity关键工具集和工作流程》(二)

648 阅读10分钟

原文链接

Unity官方TA手册《Unity关键工具集和工作流程》 | 高鹏涛

原文写得很好,但是主题格式我不太喜欢,所以我对文章的格式以及部分翻译有误的地方进行了修整,方便自己日后阅读

正文

Hello . 大家好
今天给大家带来的是 Unity 官方 TA 手册《Unity 关键工具集和工作流程》Part 2 我是高鹏涛

image.png

近日,Unity 官方发布了一本名为《关键工具集和工作流程》的免费电子书,该手册整合了 “所有 Unity 系统、功能和工作流程的详细摘要”。这份 91 页的指南汇集了经验丰富的技术美术师的意见,包括《Enemies》、《The Heretic》、《Book of the Dead》以及其他创作者的演示。

本书介绍了渲染管线、世界构建、着色、照明、动画、视觉特效、过场动画。以及还有一些章节讨论了脚本编写、分析和调试项目以及 2D 游戏开发。

而本篇连载将以中文翻译的形式分享给大家,英文阅读能力不错的同学可以直接去官方下载原版文档。

由于个人能力有限,如有纰漏之处欢迎留言指出。

image.png

渲染管线

Unity 中的图形模块,可以为你提供一个更加精准的控制体系,并在一系列的平台上,制作出优质的视觉效果,比如,从移动到桌面和高端游戏机。渲染管线执行的是一系列的操作,来获取场景的内容,并将其显示在屏幕上。在一个较高的平台上,这些这些操作是 culling, rendering, and post-processing

Unity 为不同的目标平台,提供了三种渲染管线:较早的内置渲染管线 Built-in Render Pipeline,以及两个较新的可编写脚本的渲染管线 Scriptable Render Pipelines (SRPs) —— 通用渲染管线 Universal Render Pipeline (URP)(它是目前默认的渲染管线)和高清渲染管线 High Definition Render Pipeline(HDRP)。你还可以创建定制的 SRPs。渲染管线的选择,取决于你的目标平台,以及你所寻求的视觉保真度和定制化程度。

1 渲染路径

渲染路径是用于渲染灯光和阴影的一系列操作。不同的渲染路径具有不同的功能和性能特征。以下是 Unity 渲染管线常用的渲染路径:

2 Forward rendering 前向渲染管线

Forward rendering 前向渲染是 Built-in Render Pipeline 和通用渲染管线 URP 中的默认的渲染路径。它是一种通用的渲染路径,其限制了可能影响对象像素的实时光的数量。

每个影响物体的光照都是有成本开销的。当它们超过一定数量时,灯光将以一种近似的方式影响物体(在 URP 中,所有光线都是按像素计算的,并且可以更改限制)。如果你的项目没有使用 大量的实时灯光(移动或 VR 项目),那么这个渲染路径可能是一个很好的选择,因为它不是对场景中的每一盏灯都进行一遍全屏 Passes 计算,这对于 tile-based GPUs 来说是昂贵的

然而,HDRP 中的 tile(分片)/cluster architecture(集群架构),仍然允许若干灯光影响前向渲染中的每个对象,并且通常在两个渲染路径之间提供等同的功能。它还提供了比 延迟 G-buffer 渲染 更精确的渲染质量,使其适合于视觉保真度高于性能的 HDRP 项目。更多有关 HDRP 渲染路径的文档请参阅

  • 前向渲染管线 image.png

3 Deferred Shading rendering 延迟着色渲染

Deferred Shading rendering 延迟着色渲染需要更高级别的 GPU 特性支持,通常是台式机、控制台和高端移动设备上的功能(但对某些渲染功能有限制)。如果您的项目需要几个实时灯光和高水平的照明保真度,同时针对高端手机、PC 或控制台平台,当使用内置渲染管道或 URP 时,这种渲染管线可能是正确的选择。

  • 延迟着色渲染 image.png

4 Universal Render Pipeline 通用渲染管线

URP 通用渲染管道管线在包括手机、PC、主机、WebGL 和 VR 在内的广泛平台上,提供了最优化的图形性能。这是由于围绕光照和阴影的一些权衡而实现的。应用了某些限制,并禁用了低端设备不支持的功能。这样,开发人员可以不用过多担心如何优化他们的工作,而更多地专注于开发能够接触到更多受众的项目。

另一个好处是 URP 是可扩展的。高级开发人员可以自定义它,用来控制项目中特定的效果。如前所述,URP 将取代内置渲染管道作为 Unity 的 默认渲染管线

  • URP 在 Unity 中的演示 image.png

默认情况下,URP 是在光循环(light loop)中渲染,从而可以在单个 Pass 中执行前向渲染。相比之下,内置渲染管线中的前向渲染,是在一定的范围内计算每像素光照过程。这意味着使用 URP 会使用 较少 的 draw calls。

URP 是 Unity 中 2D 游戏开发的 最佳解决方案,因为它提供了 2D 渲染器、2D 灯光和照明效果,以及 2D 像素摄像机,用于在项目中实现像素化的视觉风格。

要开始使用 URP,请查看文档并访问 Unity 2021 LTS 或更新版本的 Unity Hub

5 High Definition Render Pipeline 高清渲染管线

HDRP 是一种高保真 SRP,用于针对现代平台并且兼容计算着色器。它的功能使艺术家和开发人员能够快速实现高清视觉效果。主要应用在 AAA 质量级别的游戏、汽车演示、建筑应用、虚拟生产、电影或任何其他需要高保真图像的内容中使用 HDRP。

  • I Am Fish,由 Bossa 工作室有限公司,在 Steam 和X box 上创建 HDRP 图片

HDRP 遵循 三个主要原则 :

  • 基于物理的渲染(PBR)、
  • 统一连贯独立的照明和渲染管线、
  • 渲染路径无关。

它建立在所有这些新的渲染程序和着色器的基础上,并对场景中的照明进行了巨大的改进。

该管线使用了一个混合了 Deferred / Forward – Tile / Cluster 渲染器,因此,照明的扩展性比任何其他渲染管道都好。在 HDRP 中,延迟渲染和前向渲染在 HDRP 中有相同的功能,只是在效果的质量和准确性上有 微小的变化。可以使用 自定义 Pass自定义后处理 效果来自定义 HDRP。

HDRP 是专门为那些追求 3D PC 和主机图像,最高质量视觉保真度的小型开发团队而设计的。它不适合移动平台。阅读文档并观看此演示,以深入介绍 HDRP。

  • LEGO Builder’s Journey by Light Brick Studios,是用 HDRP 和光线跟踪与 NVIDIA DLSS 的 PC 和控制台版本开发制作的。 image.png

阅读文档并观看此演示,以深入介绍 HDRP。

6 创建一个自定义渲染管线

为了在你的项目中,对各种渲染单元进行更多的控制,你可以创建一个自定义的 SRP 或者 URP 和 HDRP 的版本。

要创建一个自定义 SRP,你需要使用 Unity 提供的 SRP Core API。它包含可重用的代码,以帮助您创建自己的渲染管线,包括使用特定平台的图形 api 的代码模板,以及应用于常见的渲染计算的工具函数,以及 URP 和 HDRP 都使用的着色器库。

一个自定义的 SRP 需要编写 C# 脚本来配置和调度渲染命令。 ScriptableRenderContext 类作为 C# 脚本和 Unity 的低级图形代码之间的接口。

SRP 通过延迟执行进行操作。首先使用ScriptableRenderContext 来构建一个渲染命令列表,然后,在低级图形体系结构向图形 API 发送指令之前让 Unity 执行它们。

Unity 文档提供了如何创建自定义渲染的说明,包括自定义版本的 URP 和 HDRP(见下一节)。SRP 源代码也可以在 GitHub 上找到。

7 URP 中的自定义渲染过程

在 URP 中,您可以使用层遮罩(Layer Masks) 来自定义如何使用自定义的渲染 Passes 来渲染特定类别的对象。

在 Unity 2021 LTS 和更新版本中,URP 的渲染对象渲染器(Render Objects Renderer)为你提供了,基于图层访问的自定义渲染通道,通过图层可以过滤需要渲染的 GameObjects 。这让美术人员能够创造高级的视觉效果或游戏机制,如渲染隐藏在墙后的角色轮廓,而无需编写代码。观看这个视频教程,看看它是如何操作的。

  • 在下面的例子中,不同的材质,被应用到 不透明图层遮罩 下的物体对象。 image.png

在 HDRP 中,自定义 Passes 是以一种稍微不同的方式进行的。你可以在文档示例项目中找到更多关于它们的信息。

8 Dynamic resolution and upscaling methods 动态分辨率和放大方法

游戏项目中常用的性能优化方案是使用动态分辨率,这在 Unity 中可以作为内置渲染管线、URP 和 HDRP 的摄像机设置。当应用程序的帧速率受到 GPU 的限制而下降时,分辨率会将逐渐降低以保持恒定的帧速率。您也可以通过脚本手动触发它。

利用 HDRP 更先进的解决方案,比如支持 NVIDIA GPU 的 NVIDIA 深度学习超级采样 (DLSS), AMD FidelityFX™ 超级分辨率(FSR) 和 Temporal Anti-Aliasing(TAA)。当然,URP 也支持 AMD FSR 。

9 在 Windows 平台使用 NVIDIA RTX GPU的DLSS

在 Unity 2021 LTS 和更新版本中的 HDRP 原生支持 NVIDIA DLSS。它使用了先进的人工智能渲染,来产生与原生分辨率相似的图像质量,同时只是传统渲染像素的一小部分。通过实时光线追踪和 NVIDIA DLSS,您可以在 NVIDIA RTX GPU 上以更高的帧率和分辨率创建美丽的世界。DLSS 还为传统的光栅化图形提供了显著的性能提升。更多信息请访问 NVIDIA 的 Unity 开发者页面和博客,以及我们的文档

  • 阅读这篇博客,了解更多关于 DLSS 技术的内部工作原理,24 Entertainment 公司的《Naraka: Bladepoint永劫无间》4K 下运行效果 image.png

10 AMD FidelityFX 超级分辨率(跨平台)

在 Unity 2021 LTS 中可以调用 AMD FidelityFX Super Resolution(FSR)。同时,在 HDRP 和 URP 中,同样的也提供了原生态的支持。要使用 FSR,请在 HDRP 资产和摄像机中启用 动态分辨率,然后在 Upscale filter 选项中选择 FidelityFX Super Resolution 1.0

FSR 是一个开源的、高质量的解决方案,可以从低分辨率的输入图像中产生高分辨率的画面。它使用了一系列的算法,特别强调创建高质量的边缘。这大大提高了性能,特别是与原始分辨率渲染进行相对比。换句话说,FSR 能够为昂贵的渲染操作提供 "实用的性能",比如硬件光线追踪。

AMD 的 Unity 网页和论坛上了解更多信息

  • AMD 的 FidelityFX 超级分辨率(FSR)技术是如何在 Unity 演示飞船中使用的,可在 Steam 上获得。 图片

本指南支持那些想要在项目中利用 URP 的新用户和有经验的 Unity用户。涵盖的主题包括设置 URP,渲染器功能,着色器编码,视觉创作,照明技术,性能考虑因素,等等。

更多资料