您现在的位置是:首页 > 正文

Unity 升级项目到Urp(通用渲染管线)以及画面后处理 热门推荐

2024-01-30 20:23:32阅读 3

前言:

Urp全称为Universal Render Pipeline,即通用渲染管线

在开始学习Urp之前,需要了解一下,什么是Render PipeLine(渲染管线),渲染管线也称为渲染流水线或像素流水线或像素管线,是显示芯片内部处理图形信号相互独立的的并行处理单元

在最开始之前,Unity使用的是固定渲染管线,这样对于游戏开发者就没有个性化的调整空间,有一定的限制,所以后来出现了可编程渲染管线Srp

关于可编程渲染管线:

  • Unity中,可编程渲染管线底层使用C++封装一些接口来提供给C#去调用,帮助游戏开发者可以在脚本中使用这些接口
  • 可编程渲染管线有UrpHdrp两者,而Urp主要是面向低性能终端的一种渲染方式
  • 最开始Urp名字是Lwrp,后来改名为Urp,未来也许会作为Unity的默认渲染管线

Urp是一种SRP(可编程渲染管线),相比于默认渲染管线,在提升画面表现的同时,也可以通过一定的优化提升游戏的性能表现

升级项目为Urp:


1、 开始升级前准备

在开始之前,需要你备份你的项目,确保在升级过程中出现问题还有挽回的空间

关于项目的备份:

  • 可以打包成Package来导出项目

在你做好备份后,就可以正式开始项目的升级工作,我们可以在导航栏中的Window选项中找到Package Manager,点击进去,找到Universal RP,然后点击安装即可完成安装

在这里插入图片描述

2,将默认渲染管线替换为Urp渲染管线

导入Urp插件后,在Project面板右键选择Create -> Rendering - >Universal Render Pipeline -> Pipeline Asset创建一个Urp的Asset命名为UrpTest
在这里插入图片描述

接下来在Edit中打开Project Setting面板,选择Graphics,然后再其中的Scriptable Render Pipeline settings中选择UrpTest

在这里插入图片描述
完成上面的设置,就完成了将默认渲染管线替换为Urp渲染管线的步骤。

返回场景,这个时候你就会“惊喜”的发现,你的场景变成一片粉色:

项目升级到Urp产生的几个负面效果:

  • 第一:就是标准材质失效,可以通过一键修改回来
  • 第二:自己创建地形Tarren所刷的树同样丢失,而且很难一键改回
  • 第三:就是自己编写的大多Shader也会失效,只能够重新编写

在这里插入图片描述
此时的你无助,彷徨,怎么办?怎么办?脑袋中不停的回想,产生这种现象的原因,是因为材质之前的Shader无法被Urp所识别渲染,所以需要我们去改变其材质的Shader类型

关于材质Shader类型:

  • 在默认渲染管线中模型的Material的默认shaderStandard,而当我们将项目升级为Urp时,这中Shader类型不能被Urp所识别渲染

  • Urp有其可以支持的Shader类型,我们可以手动把材质Shader调整为Urp支持的类型

虽然可以一个个的手动调整,但是场景中模型太多的话,也是会消耗大量的时间精力的,有没有好的方法来快速替换呢,还真有,我们点击Edit -> Render Pipeline -> Universal Render Pipeline -> 看图(太长的英文)

在这里插入图片描述

点击该选项后,我们就会发现场景中的一部分模型显示正常,还有一部分不是很正常,这是因为某些材质的Shader是手动编写的,或者是某些特定的Shader,没法自动替换为默认材质,需要我们手动去调整, 具体调整的细节可以自行百度

3,项目升级为Urp出现的问题:

3.1、 自己编写的Shader不兼容

  • 没有办法,只能重新编写,或者使用Shader Graph创建一个Shader

3.2、关于多相机问题

  • 发现场景中使用多相机没法混合,这个时候需要调整在除主相机外其他相机上的Camera组件上的Rander Type改为Overlay,同时在主相机上的Camera组件中的Stack功能区添加上需要混合的相机

3.3、关于Terrain

  • 首先第一条,刷在地形上的植物没法自动调整Shader,需要手动调整,树叶材质Shader可以调整为:SpeedTree8,而树干调整为SpeedTree7即可

  • 第二条,对于地形的材质也需要自己进行更改,在Terrian组件中有一个齿轮的按钮里面找到Material并替换成下面这样正确的材质即可:
    -在这里插入图片描述

  • 第三条,发现在相机在渲染远距离用刷子刷出的植物颜色都是蓝色,这是因为Terrain的设置选项中Fade Length参数的印象,调大这个参数,这种情况就会发生在更远的地方
    在这里插入图片描述

3.4、关于预制体问题

  • 发现在调整完材质Shader后,场景中的预制体显示正常,但是在Project面板预制体图标显示依旧是粉色,这个时候不方面编辑场景,可以先把预制体的Mesh Rander隐藏然后在显示,就可以正常加载出来了

3.5、关于场景中物体最大受光影响数量问题

  • 默认渲染管线该参数的调整是在Player Setting中的Quality中调整,但是升级到Urp后,需要在Urp的配置文件(即之前创建的UrpTest)中来调整

Urp提升游戏画面表现


一、首先对于Urp的配置文件进行参数调整

1,调整物体阴影:

在Urp配置文件中,即之前创建的`UrpTest文件中找到Shadows,调整其中的参数,就可以获得不同效果的一个阴影,但是请注意,显示效果是和性能成反比的,不要一味的追求显示效果而消耗大量的性能:

在这里插入图片描述

关于这些参数的具体含义为,如果你想了解就可以看看下面的:

  • Distance:显示阴影的最大距离
  • Cascades:可以通过分级来在不同的距离显示不同的阴影效果
  • Depth Bias:深度偏移,保证阴影正常在其他物体上显示的一种技术
  • Normal Bias:用来调整阴影的虚实效果,数值越大,阴影越虚

另外阴影的质量和Lighting中的haow Resolution同样有关系,其数值越大,阴影的质量越好:
在这里插入图片描述

2,调整游戏画面质量

同样在配置文件中找到Quality,既可调整游戏画面质量,首先就是HDR,可以很大程度的提升游戏的对比度,使得游戏细节更加丰富,接下来就是Anti Aliasing,即锯齿,调整数值越大,画面越干净清晰,最后的Render Scale数值越大,游戏细节越多,为零时就接近马赛克的效果
在这里插入图片描述

二、游戏画面后处理

终于来到了重头戏,Urp画面表现的关键,即游戏的后处理,这一环节主要是在游戏的后期进行,可以进行一些风格化的画面调整,也可以为游戏画面加上一些高级的效果,比如说景深,滤镜等等东西

操作步骤:

首先在Hierarchy面板右键,选择创建Volume,然后选择Global Volume,即全局效果的后处理
在这里插入图片描述

接下来就可以点击New创建一个Profile,这样就可以添加一些后处理的效果:
在这里插入图片描述
需要什么样的效果,可以通过点击Add Override添加,类似于Unity的对象添加组件,这里面列出几个关键的后处理效果:

Bloom:

关于Bloom的几个参数:

在这里插入图片描述

  • Threshold :设置URP应用Bloom的伽玛空间亮度值。URP不会应用于场景中亮度低于此值的任何像素。最小值为0,不过滤任何内容。默认值为0.9。没有最大值

  • Intensity:设置Bloom滤镜的强度,范围为0到1。默认值为0,这表示Bloom效果被禁用

  • Scatter:将光晕效果的半径设置在0到1的范围内。值越大,半径越大。默认值为0.7

  • Tink:使用颜色选择器选择要使用的Bloom效果的颜色

  • High Quality Fittering:高质量

  • Deir Testure:分配一个纹理,以将灰尘(例如污迹或灰尘)的效果施加到镜头上

  • Dirt Intensity:设置镜头污垢效果的强度

通过对于一些参数调整就可以获得风格化的画面,下面是一个简单的对比前后的效果:
在这里插入图片描述

Depth Of Field:

另外一个可以显著提升游戏质感的后处理方案是Depth Of Field,即画面的景深效果,可以通过对于焦距和光圈的调整来得到一个比较好的景深效果,但是它不是那么智能,没有自动对焦的功能,所以只能在特定的距离获得一个背景虚化的效果,如果追求动态的背景需要是比较难的:

在这里插入图片描述
下面依旧列出几个关键参数:

  • Mode:有BokehGaussian,即焦外虚化和高斯模糊

  • Focuse Distance :设置到摄像机的距离,在此距离远场开始模糊

  • Focuse Length:设置相机传感器和相机镜头之间的距离(以毫米为单位)值越大,景深越浅

  • Aperture:设置光圈比(称为光圈值或f值),值越小,景深越浅

通过调整光圈和焦距就会获得一个比骄傲好的显示虚化效果:
在这里插入图片描述

Channel Mixer

通道混合器效果可修改每个输入颜色通道对输出通道整体混合的影响。例如,如果增加绿色通道对红色通道的整体混合的影响,则最终图像中所有绿色(包括中性/单色)的区域都会变得偏红色

可以通过该技术来实现下面的效果:

在这里插入图片描述

总结:

项目升级Urp主要遇到是Material显示不出来问题,需要修改MaterialShader来解决,Unity提供一键解决方案,但是对于某些特殊情形并不起效,需要我们通过手动调节来更改其显示效果

而升级Urp主要的优势在于其强大的后处理能力,可以为我们游戏画面表现提供更多风格化的表现形式,所以多花些心思在你的画面表现上面的,会很有成就感的

网站文章

  • android9.0与5g,5G双卡+Android9.0!vivo年度最强旗舰机曝光

    android9.0与5g,5G双卡+Android9.0!vivo年度最强旗舰机曝光

    原标题:5G双卡+Android9.0!vivo年度最强旗舰机曝光伴随着2019年的临近,5G时代越来越近,高通、英特尔、华为、三星等都陆续宣布将会推出5G基带,高通更是在近期宣布开始量产基于7nm工...

    2024-01-30 20:23:26
  • html一张图片水平居中,CSS 图片水平居中

    html一张图片水平居中,CSS 图片水平居中

    使用CSS让图片中网页中水平居中代码:text-align:center内容居中text-align:center介绍:text-align:center为水平内容居中功能,图片放入网页中是使用img...

    2024-01-30 20:22:58
  • 通过AWS云平台 构建云上勒索病毒防护体系,轻松保护数据完整性

    通过AWS云平台 构建云上勒索病毒防护体系,轻松保护数据完整性

    因为AWS采用责任分担模型来明确用户和AWS之间的安全责任,当您选择使用这些服务时,您将不再需要将精力放在如何给操作系统安装补丁,如何保护操作系统的密钥,是否有防病毒措施等安全问题上,这些工作将由AW...

    2024-01-30 20:22:52
  • 深入理解JVM 一GC(下) G1 Garbage Collector

    深入理解JVM 一GC(下) G1 Garbage Collector

    关于java程序性能当我们调优java程序时,通常的目标有两个: 响应能力 或者 吞吐量响应能力响应能力指一个程序或者系统对请求的是否能够及时响应。 比如: 一个桌面UI能多快的响应一个事件; 一个网站能够多快返回一个页面请求; 数据库能够多快返回查询的数据;对于这类对响应能力敏感的场景,长时间的停顿是无法接受的。吞吐量吞吐量关注的是,在一个指定的时间内,最大化一个应用的工作量。 如下方

    2024-01-30 20:22:46
  • 【Linux】系统调用文件操作

    【Linux】系统调用文件操作

    Linux系统没有文本和二进制之分,所有的东西都是文件,文件描述符是一个整形数字,储存在PCB的文件描述符表中(一个数组)

    2024-01-30 20:22:19
  • linux用户管理常用命令

    主题:linux用户管理常用命令 1)管理用户(user)的工具或命令; useradd 注:添加用户 adduser 注:添加用户 passwd 注:为用户设置密码 usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等; pwcov 注:同步用户从/etc/passwd 到/etc/shadow pwck 注:pwck是校验用户配置文件/etc/passwd

    2024-01-30 20:22:12
  • npm 下载包失败解决方案

    npm 下载包失败解决方案

    npm下载依赖包失败解决方案

    2024-01-30 20:22:04
  • flink归纳总结

    1.14 Flink1 简单介绍一下 FlinkFlink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能。Flin...

    2024-01-30 20:21:58
  • Spring Cache详解

    从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当调用一个缓存方法时会把该方法参...

    2024-01-30 20:21:28
  • SparkStreaming 介绍及 wordcount 案例

    SparkStreaming 介绍及 wordcount 案例

    一、介绍1、Spark Streaming 是什么?Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitte...

    2024-01-30 20:21:21