第二十章 Unity 渲染管线

这篇具有很好参考价值的文章主要介绍了第二十章 Unity 渲染管线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

渲染管线是计算机图形中最基础最核心的部分,它是将3D场景显示到2D平面的技术过程。在DirectX课程中,我们就介绍了渲染管线,分为固定渲染管线和可编程渲染管线(Shader)。但是在DirectX 10版本之后统一了渲染架构,就是将顶点着色器和像素着色器被合二为一,成为流处理器,它将同时负责顶点着色和像素着色。这使得GPU的利用率更加高,也避免了传统架构中由于资源分配不合理引起的资源浪费现象。最新的DX11也是采用流处理器的统一渲染架构。Unity开发Windows平台下的游戏时候采用的底层图形API肯定首选DirectX,我们点击菜单栏“Edit” -> “Project Settings”,然后选择 Player 类别并导航到 Other Settings选项,如下所示:

第二十章 Unity 渲染管线

这里Unity会为我们的游戏运行平台自动选择合适的图形API。当我们取消自动勾选框的时候,Unity会给我们一个下拉选择框,让我们可以自定义使用那个图形API。大家应都清楚,最著名的图形API当属DirectX和OpenGL。我们可以看到Unity提供给我们的下拉选择框第一个就是Direct3D11,当然我们也可以选择其他(不建议)。

第二十章 Unity 渲染管线

Unity对渲染管线的支持也经历了不同的发展阶段。

截止Unity2020版本而言,可以分为三种渲染管线,如下所示:

1.内置渲染管线是Unity的默认渲染管线。这是通用的渲染管线,其自定义选项有限。

Unity的内置渲染管线是 Unity 较陈旧的渲染管线。它并非基于可编程渲染管线。

2.通用渲染管线 (URP) 是一种可快速轻松自定义的可编程渲染管线,允许您在各种平台上创建优化的图形。通用渲染管线是由 Unity 制作的预构建可编程渲染管线。URP让您在移动平台、高端游戏主机和 PC 等各种平台上快速轻松地创建优化的图形。

3.高清渲染管线 (HDRP) 是一种可编程渲染管线,可让您在高端平台上创建出色的高保真图形。高清渲染管线是由 Unity 预先构建的可编程渲染管线。借助 HDRP 可以为高端平台创建出色的高保真图形。HDRP 可以用于高品质AAA 级游戏,但需要兼容的 GPU 硬件。

URP专注于性能,偏向移动端和低端机器,它拥有很多HDRP相同的功能,但为了在所有平台达到更好的性能,其做了一定的缩减,但这并不意味着URP做不出漂亮的东西。HDRP专注于高端图形渲染,以画面为主 , 偏向高端机器和影视,但要想得到完成利用HDRP的完美表现能力,需要大量的贴图,漫反射贴图、高光贴图、金属贴图、平滑贴图、AO贴图、法线贴图、凹凸贴图、高度贴图,所以不是对效果有特别大需求的话慎入。

HDRP提供高级和丰富的光照功能,比如实时全局光照(RealTime GI),能够模拟光线反射、体积光、能模拟光穿过空气中的粒子,还有重头戏的光线跟踪,一种新的光线反射和阴影渲染技术,其原理是跟踪光线在场景中放射的路径,模拟光线在真实世界里与物体交互的效果,这技术对硬件性能非常高,但能产生非常逼真的效果,可以直接用来做电影级别的预渲染作品。另外一个区别是Shader,HDRP提供一系列高端的shader特效,例如高度、细节和parallax Maps,分别用于纹理的位移、细节和深度模拟,它还支持子面散射,用于模拟光线穿过很薄的物体,比如皮肤和衣物,它提供了高级的shader,像是stacklit,能够让你同时使用多个材质的属性,比如子面散射、彩虹色、各向异性和模糊参数化。但好东西不是都在HDRP,2D光照和阴影就是URP独占的,所以如果你在做2D游戏,就选URP。

总结:如果是真实地游戏开发,尤其是手机端开发的话,可以考虑使用URP;如果是PC端游戏开发,并且有足够的美术人员支持,可以考虑使用HDRP开发AAA级游戏。很明显,三种渲染管线逐级提升游戏画面的品质,当然也需要高性能的GPU的支持。对于我们学习来讲,Unity的默认渲染管线就已经足够了。

如何在我们工程使用选择那个渲染管线呢?

首先是创建工程的时候,我们就可以进行选择,如下所示:

第二十章 Unity 渲染管线

我们之前选择的“3D”就是Unity的默认渲染管线,其他两个红色线框标注的分别是“HDRP”和“URP”,从他们的名字上我们就能够看出来。下面是一个“URP”的工程,Unity会自动给我们创建一个默认场景,如下所示。

第二十章 Unity 渲染管线

我们直接Play运行后的效果如下

第二十章 Unity 渲染管线

如果忽略一些细节的话,整体的渲染效果还是不错的,场景中的地面,墙面以及木棍等等游戏对象都很栩栩如生,光影效果也非常不错。相比于多年前的一些国内游戏,画面提升很多。

相对于普通的“3D”工程(默认渲染管线)而言,他们之间有什么区别呢?

我们可以从“Package Manger”窗口查看一下,下面是普通的“3D”工程。

第二十章 Unity 渲染管线

下面是“URP”工程的截图

第二十章 Unity 渲染管线

我们发现,增加了一个“Univeral RP”的包,这就是Unity自定义的通用渲染管线。请大家注意的是,渲染管线的选择只是提升我们的游戏画质,模拟更加逼真的三维场景,对于我们的游戏逻辑影响并不是很大,更多的在于美术设计人员的工作内容。

当然,我们还可以继续创建一个“HDRP”工程,Unity也同样给我们提供了一个默认的场景,我们可以运行查看它的效果,如下所示:

第二十章 Unity 渲染管线

我们可以查看它的“Package Manger”窗口

第二十章 Unity 渲染管线

这个HDRP场景是三个房间,我们可以直接Play运行,查看效果。

第二十章 Unity 渲染管线

鼠标可以选择视角,使用WASD进行移动,我们进入下一个房间

第二十章 Unity 渲染管线

我们还可以继续向前移动,进入第三个房间

第二十章 Unity 渲染管线

如果你是NVIDIA GeForce RTX系列的显卡,那么效果比截图更加逼真。

接下来,我们介绍一下如何将默认的渲染引擎升级到通用渲染引擎,首先我们创建一个“U3DProject”的“3D”工程。为了演示升级渲染引擎的效果,我们创建一个平面Plane和一个立方体Cube游戏对象,如下所示

第二十章 Unity 渲染管线

两个游戏对象都位于世界坐标系的原点(0,0,0)位置。这里需要注意的是,由于Cube的轴心位于中心位置,并且Cube的默认尺寸就是一个Unity单位长度(1米)。因此,我们将Cube置于世界坐标系原点的时候,它有一半的部分是在地面的下面的。因此,我们将Cube的Position属性的Y值提高到0.5即可。这样整个Cube就位于平面的上面了。接下来,我们分别创建两个颜色材质,一个名称为CubeMaterial,一个名称为PlaneMaterial。

创建材质的方式为,在Project工程面板空白处右击,然后选择“Create”->“Material”。新创建的材质文件,默认处于重命名状态,我们直接录入材质名称即可。如下所示

第二十章 Unity 渲染管线

接下来,我们分别点击选中两个材质文件,并在其Inspector检视面板中修改颜色值。

第二十章 Unity 渲染管线

点击那个“吸管”旁边的白色矩形颜色框,会弹出一个“色环”窗口。

第二十章 Unity 渲染管线

我们在“环”上选中一个主色系,然后在里面的“矩形”中选择一个具体的颜色值即可。

第二十章 Unity 渲染管线

这样,我们就完成了一个颜色的材质。然后我们将Project工程面板中的“PlaneMaterial”材质拖拽到场景中的Plane平面游戏对象上面。

第二十章 Unity 渲染管线

如果角色颜色不好看的话,还可以继续修改材质颜色,平面颜色会同步显示的。

接下来,我们以同样的方式来给Cube添加一个颜色,最终如下所示

第二十章 Unity 渲染管线

 第二十章 Unity 渲染管线

设置完毕之后,我们调整一下相机的位置,方便观察平面和立方体。

第二十章 Unity 渲染管线

接下来,我们保持相机选中状态,我们点击菜单栏“GameObject”->“Align View to Selected”

第二十章 Unity 渲染管线

接下来,我们直接Play运行工程

第二十章 Unity 渲染管线

可能大家角色Scene窗口中的游戏对象明显没有Game窗口中的“亮”一些。这是因为Scene窗口中的“灯光”效果没有打开,我们可以点击Scene窗口中的那个“灯泡”的按钮。

第二十章 Unity 渲染管线

现在,即使不Play运行工程,Scene窗口与Game窗口中的亮度都一样了。

接下来,我们添加“Univeral RP”通用渲染管线包。

我们选择打开Window > Package Manager窗口。

第二十章 Unity 渲染管线

点击“Packages: InProject”下拉框,选择“Unity Registry”

第二十章 Unity 渲染管线

在列表中找到“Univeral RP”,然后点击“Install”安装。

然后,我们再切换回“Packages: InProject”查看

第二十章 Unity 渲染管线

已经存在“Univeral RP”通用渲染管线包,同时在我们的“Project”视图中也能看到

第二十章 Unity 渲染管线

接下来,我们在Project工程面板中的Assets目录空白处右键选择Create -> Rendering -> Universal Render Pipeline -> Pipeline Asset(Forward Renderer),点击后生成下面两个文件。

第二十章 Unity 渲染管线

这两个文件分别是

“UniversalRenderPipelineAsset.asset”和“UniversalRenderPipelineAsset_Renderer.asset”。

然后在菜单栏选择Edit -> Project Settings -> Graphics选项。

第二十章 Unity 渲染管线

然后我们要将“UniversalRenderPipelineAsset.asset”拖拽到上面的红框标识的地方。

第二十章 Unity 渲染管线

接下来,我们就会发现场景中的游戏对象的材质全部丢失了。

第二十章 Unity 渲染管线

很明显,这个问题就是我们安装并启用通用渲染管线造成的。

这里,我们需要将材质升级一下就能解决,点击菜单栏:Edit -> Render Pipeline -> Universal Render Pipeline -> Upgrade Project Materials to UniversalRP Materials

很明显,这是升级URP材质的意思,然后会有一个小弹框,如下:

第二十章 Unity 渲染管线

我们选择“Proceed”即可,然后场景中的材质就回来了。

第二十章 Unity 渲染管线

接下来,我们重新Play当前工程,查看运行效果

第二十章 Unity 渲染管线

仔细对比前后两种渲染效果,我们发现灯光打在平面上面的颜色变得更加明显。同时,立方体的的颜色以及阴影效果也有了差异。可能也是因为我们的场景比较单一,如果是稍微复杂的自然场景,可能区分会大一些。我们以之前的“RoleDemoProject”工程来举例。

第二十章 Unity 渲染管线

升级到URP渲染管线后如下

第二十章 Unity 渲染管线

仔细观察,在颜色,明亮,以及一些细节上面,都有很大的区别。文章来源地址https://www.toymoban.com/news/detail-469493.html

到了这里,关于第二十章 Unity 渲染管线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第二次CCF计算机软件能力认证

    给定 n 个 不同的 整数,问这些数中有多少对整数,它们的值正好相差 1。 输出格式 输入的第一行包含一个整数 n,表示给定整数的个数。 第二行包含所给定的 n 个整数。 输出格式 输出一个整数,表示值正好相差 1 的数对的个数。 数据范围 1≤n≤1000, 给定的整数为不超

    2024年02月13日
    浏览(32)
  • 计算机串口第二次实验报告

    一、实验目的 熟练使用Linux下io函数read、write和epoll等 熟练处理流式通信数据 二、实验过程 1、向STC单片机下载下面的程序 下载程序后,单片机将使用1200波特率发送自身序列号,格式同上一节课(3.3节内容)相同。请记录下该序列号。 这里可以选择使用串口助手,很容易就

    2024年02月05日
    浏览(46)
  • Unity URP渲染管线与内置渲染管线的性能差别

    首先,我们来了解一下Unity的内置渲染管线。内置渲染管线是Unity较早版本中使用的默认渲染管线,它使用的是传统的图形渲染技术。内置渲染管线提供了一系列的渲染功能,如阴影、反射、抗锯齿等。但是,由于其较为庞大且复杂的设计,它的性能相对较低。在高质量图形效

    2024年02月08日
    浏览(28)
  • 第二章:计算机系统基础知识之计算机网络

      计算机网络是利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,并依靠网络软件及通信协议实现资源共享和信息传递的系统。   计算机网络技术主要涵盖 通信技术、网络技术、组网技术和网络工程 等四个方面。 数据通信

    2024年04月27日
    浏览(38)
  • 第二章:指令:计算机的语言(防遗忘)

    指令 :计算机硬件所能理解并服从的命令。 存储程序概念 :多种类型的指令和数据均以数字形式存储于存储器中的概念。 字 :计算机中的基本访问单位,通常是32位为一组,在MIPS体系结构中与寄存器大小相同。 数据传送指令 :在存储器和寄存器之间移动数据的命令 地址

    2024年02月05日
    浏览(37)
  • 计算机组成原理---第二章 习题详解版

    1.                       1.写出下列各整数的原码、反码和补码表示(用8位二进制表示)。其中MSB是最高位(符号位),LSB是最低位。 (1)-35        (2) -128   (3)-127         (4)-1 答:(1)-35   原: 1011 0101  反:1100 1010  补码:1100 1011       (2) -128   在八

    2024年02月04日
    浏览(32)
  • 【计算机组成原理 - 第二章】系统总线(完结)

    本章参考王道考研相关课程: 【2019版】6.1.1 总线的概念与分类_哔哩哔哩_bilibili 【2019版】6.1.2 总线的性能指标_哔哩哔哩_bilibili 【2019版】6.2 总线仲裁_哔哩哔哩_bilibili 【2019版】6.3 总线操作和定时_哔哩哔哩_bilibili 【2019版】6.4 总线标准_哔哩哔哩_bilibili 目录 一、总线的概述

    2023年04月08日
    浏览(35)
  • 第二届全国高校计算机技能竞赛——Java赛道

    签到题 找数 签到题 打分 签到题 注意cnt等于0的情况 最大值取-0x3f3f3f3f 最小值取0x3f3f3f3f 注意当cnt = 0时,说明无人打出大于0的分数。 此时选手的分数为0分,注意保留2位小数 找子串 不断截取子串,判断后,找出最大串和最小串 ​ 矩阵距离 宽搜bfs 队列存点对,往上下左右四个

    2024年02月08日
    浏览(38)
  • Unity学习 渲染管线介绍

    SRP: (Scriptable Render Pipeline,可编程渲染管线/脚本化渲染管线),可以在Unity通过C#脚本调用API配置或执行渲染命令的方式来实现渲染流程,SRP将这些命令传递给Unity底层图形体系结构(low-level graphics architecture),然后再将指令发送给图形API(Graphics API),最终由GPU进行处理

    2024年02月04日
    浏览(29)
  • 计算机视觉与图形学-神经渲染专题-NeRF汇总大礼包-I

    (说明:如果您认为下面的文章对您有帮助,请您花费一秒时间点击一下最底部的广告以此来激励本人创作,谢谢!!!) 原始NeRF论文 001 NeRF Representing Scenes as Neural Radiance Fields for View Synthesis NeRF综述类 002 NEURAL VOLUME RENDERING NERF AND BEYOND 025 Multimodal Image Synthesis and Editing: A Survey 数

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包