当前位置:网站首页>Unity教程:URP渲染管线实战教程系列【1】
Unity教程:URP渲染管线实战教程系列【1】
2022-07-31 04:42:00 【Clank的游戏栈】
URP渲染管线实战解密(一)
现在越来越多的手游开发都采用URP渲染管线,来代替之前Unity引擎默认的向前渲染管线,本节通过一下几个方面来阐述URP 渲染管线,对URP渲染管线有个全面认识。
(1)为什么使用URP渲染管线;
(2)如何创建一个URP渲染管线的项目;
(3)基于URP渲染管线的全局配置
这里有个游戏开发交流小组 大家可一起来学习哦
1为什么使用URP渲染管线
游戏是从PC端游发展起来的,我们拿传统的向前渲染管线中的光源来距离,向前渲染管线支持任意多的重要光源,每个重要光源, Unity 都要基于这个光照来绘制一次物体, 这样导致pass次数非常的多,性能消耗开销非常大,于是就有静态光照,静态烘培等。随着手机游戏的发展,人们不满足于假的静态光照,需要实时光照,又要保证很好的性能。这个时候,就需要开发者做一个权衡和选择,在特定的满足手游开发需求前提下,最大限度的提升性能,于是URP渲染管线就出来了,他假定了一些特定条件如主光源只能是平行光,其它的附加光源在配置文件中限定数目,在一个pass内处理完所有的光源与光照计算。加上这些限制条件后,URP渲染管线能开发出满足手机游戏的实时光照的很好效果,同时又能最大限度的获得最好的性能。URP渲染管线是对使用环境做一些限定,基于这些限定来定制渲染策略, 获得很好效果的同时还有很好的性能。所以慢慢的很多公司都采用URP渲染管线来做手机游戏。
URP渲染管线,是基于Unity游戏引擎的可编程渲染管线机制,接合URP渲染管线的前提,实现的渲染策略。从渲染来说他有重新定制了摄像机,光照计算,阴影计算,后期处理,特有的一套Shader等(基于URP的PBR shader,以前的向前渲染管线的PBR Shader不能用了)。Unity在新版本中把URP渲染管线做成一个工程项目模板,我们使用这个模板来创建URP渲染管线项目非常容易,后续我们也会讲如何把老项目升级成URP渲染管线项目。
2 如何创建一个URP渲染管线的项目
接下来我们使用Unity 2020.2.3f1 来创建一个URP渲染管线的项目,基于这个项目来学习URP。打开Unity Hub,选择新建项目会出现URP项目模板,如图 1.1-1所示:

图1.1-1
创建完成以后,我们就能看到一个标准的基于URP渲染的项目与开发环境(Packages下都有URP的渲染管线代码与Shader,项目目录下有一些URP相关的一些设置等。),基于这个环境来开发自己的项目与代码就可以了,其实和普通的没有什么差别。如图1.1-2:

图1.1-2
接下来从文件夹入手来分析一下URP的示例场景与项目的组织方式。实例场景给出了URP的几个重要部分,如图1.1-3:

图1.1-3
URP摄像机: Main Camera, 下面再写关于base摄像机与Overlay摄像机。
主光源与附加光源:主光源是平行光,可以多个平行光叠加,附加光源再场景中部署如图1.1-4:

图1.1-4
画面的后期处理: 画面后期处理的控制,主要是渲染完成后针对,加一些后期的渲染效果,分为全局与局部模式,后面的教程再讲解。如图1.1-5所示:

图1.1-5
接下来看下URP项目文件夹,URP项目组织其实和普通的差不多,Packages下安装好了URP相关的依赖,在Assets下和普通的稍有不同,主要在于URP的配置文件,一起来看下。

图1.1-6

图1.1-7
1.1-7中ExampleAssets与Materials文件夹我们导自己项目里面直接可以删除,到时候用项目的资源目录相关代替就可以了。Presets文件夹里面存放了一些全局的设定,一般带到项目就可以了。Scenes / Scripts文件夹存放场景与代码,和普通项目一样,可以随意的删除与修改。Settings文件夹存放了渲染管线的配置文件相关如图1.1-8,不要删除。

图1.1-8
TutorialInfo文件夹项目中可以删除,没有任何实际的作用。

图1.1-9
URP渲染管线Shader相关都存放在这里,做项目开发的时候要使用基于URP的Shader,自己开发Shader也要符合URP的规范。
3基于URP渲染管线的全局配置
URP渲染管线的决定渲染关键性的全局配置参数在PipeLine的配置里面。如何打开全局配置,打开Project Settings窗口啊, 选择Graphics,如图1.1-10

图1.1-10
这里有光照,雾以及预加载的Shader以外,就是有一个Scriptable Render Pipeline Settings, 这里就是渲染管线的一些配置,而这个文件关联的就是项目中Settings文件夹中的设置,如图1.1-11所示:

图1.1-11
URP渲染管线的设置分成了3个等级,每个等级一个配置文件,分为:
高渲染质量等级:UniversalRP-HighQuality
中渲染质量等级: UniversalRP-MediumQuality
低渲染质量等级:UniversalRP-LowQuality
渲染设置的主要参数如下,如图1.1-12所示

图1.1-12
你可以根据手机的性能来切换渲染等级,从而在不同的性能手机上来在性能与效果之间获得很好的平衡。
今天的分享就到这里,关注我们,下一节我们将会继续讲解解URP渲染管线实战教程。
边栏推荐
- [Linear Neural Network] softmax regression
- BUG消灭者!!实用调试技巧超全整理
- How Zotero removes auto-generated tags
- 【SemiDrive源码分析】【MailBox核间通信】44 - 基于Mailbox IPCC RPC 实现核间通信(RTOS侧 IPCC_RPC Server 消息接收及回复 原理分析篇)
- input输入框展示两位小数之precision
- HCIP Day 10_BGP Route Summary Experiment
- Explanation of
- Redis uses sorted set to cache latest comments
- 开放原子开源基金会秘书长孙文龙 | 凝心聚力,共拓开源
- VScode+ESP32快速安装ESP-IDF插件
猜你喜欢

重磅 | 基金会为白金、黄金、白银捐赠人授牌

Learning DAVID Database (1)

Recursive implementation of the Tower of Hanoi problem

Solved (the latest version of selenium framework element positioning error) NameError: name 'By' is not defined

C language from entry to such as soil, the data store

C语言表白代码?

Notes on the establishment of the company's official website (6): The public security record of the domain name is carried out and the record number is displayed at the bottom of the web page

MySQL数据库安装配置保姆级教程(以8.0.29为例)有手就行

ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法

mysql数据库安装(详细)
随机推荐
【线性神经网络】softmax回归
[Paper reading] Mastering the game of Go with deep neural networks and tree search
Explanation of
扫雷游戏(c语言写)
【wpf】wpf中的那些模板之深度解析
高等数学---第九章二重积分
Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
【小土堆补充】Pytorch学习笔记_Anaconda虚拟环境使用
Can't load /home/Iot/.rnd into RNG
ENSP,划分VLAN、静态路由,三层交换机综合配置
数字经济时代的开源数据库创新 | 2022开放原子全球开源峰会数据库分论坛圆满召开
XSS shooting range (3) prompt to win
volatile内存语义以及实现 -volatile写和读对普通变量的影响
Understanding of the presence of a large number of close_wait states
ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
Redis uses sorted set to cache latest comments
[CV project debugging] CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT problem
(4) Recursion, variable parameters, access modifiers, understanding main method, code block
问题1:给你1-10的列表,实现列表输出,单数在左边,双数在右边。
(6) Enumeration and annotation