找回密码
 立即注册
查看: 352|回复: 1

Unity URP渲染管线学习笔记1

[复制链接]
发表于 2022-3-15 19:37 | 显示全部楼层 |阅读模式
前言

由于公司最近项目升级使用URP管线,我也开始了自己的URP管线学习之旅。所以打算开一个专栏写一些个人学习URP的心得体会,在正式开始之前还是有必要先说一些事情,首先就是实在不想看到太多人误会,或者想当然的认为在Unity中使用了URP渲染管线=画质牛逼。这是完全错误的想法,可能Unity官方为了宣传新管线,所以做了许多耀眼的Demo(当然这里不是怪罪Unity的意思),于是许多人就想当然认为用了新管线,我们的画质就提升了,可能你问他啥是渲染管线,他都答不上来,就想当然的自以为是,我认为对于任何新的知识,不懂的知识,还是要保持相应的敬畏之心,不要人云亦云,网上随便看两篇文章,看了个官方Demo,就觉得自己用了URP也能让画面大提升,我觉得学习任何东西都不要浮躁,而应该脚踏实地,如我之前的一个技术交流群中大佬说的,别认为知道个技术名词=我会了。我认为URP渲染管线只是提升了上限,上限是什么,就像两个人比武,一个人你给他把倚天剑,但是他不会武功,去和一个手持木剑的绝代宗师打,也不会有胜算的,所以东西再好,会不会用,也很重要。我们需要正确的看待新的渲染管线,它是什么,它能干什么,用它能帮助我们解决什么问题,如果是已经开发了一半的项目,现在换它会有什么样的代价,想清楚了这些东西,再考虑用不用。
由于是我个人的学习笔记,本着实事求是的态度,我只说我确定的,我知道的一些东西,但也因为是刚开始学习,难免文中会有疏漏,或者错误的地方,如有大佬路过看到,也欢迎指正。废话不多说,下面正式开始。
<hr/>一、什么是URP渲染管线?
在学习URP渲染管线之前,得先知道什么是渲染管线,网上和书上有许多详细的解释,可能听上去会比较难以理解,我个人理解的用简单的话来描述其实就是把物体按照流程最终渲染到你的屏幕上的这个流程就是渲染管线,中间会经过许多阶段,所以它是一个管道,一个流水线一样,一步一步的。比如两个物体在摄像机前,谁在前谁在后,通常都会认为那当然是谁离摄像机更近,当然谁渲染在前面,当然这只是通常认为的情况,但如果你非要逆其道而行之可不可以呢,也是可以的,所以Unity提供了SRP也就是所谓的可编程渲染管线,这个渲染的流程就可以通过你自己编程来控制了,而Unity老得built-in渲染管线就是一套复合了绝大多数需求的一套管线,而URP就是基于SRP来的,叫做通用渲染管线,这里有个小插曲,曾经它被Unity官方称为LWRP,轻量级渲染管线,后来Unity自己也怕这个名字会误导用户,让用户以为这个渲染管线是实现一些低画质游戏用的,其实不然,它使用的好的话,一样能够使画面惊艳,所以后来改名了叫URP,通用二字也是为了体现,其实它可以满足绝大多数情况下的渲染需求和画质要求。关于它怎么在Unity中导入和使用,网上实在有太多的介绍,我这里就不再赘述了。
二、URP渲染管线的一些设置的介绍


里面有些设置和老管线里差不多,比如Quality,Lighting的一些设置,前面的DepthTexture如果开启的话,URP就会为你生成一个深度纹理供的每个相机使用,对应的OpaqueTexture就是在渲染透明物体之前,先为你生成一个不包含透明物体的纹理。这俩设置也可以在你的每一个相机的相关设置上去单独去选择是否开启他们。
Quality里最常见的就是是否开启HDR和抗锯齿,Lighting里的设置也和原来光线设置差不多,主要区分一个主副光源,默认是只有主光源开启了阴影。至于区分主副光源,就是你Light组件里是important的光源就是主的,其他为副。
后处理的设置,我目前也不是很清楚,还未用到,一会儿补充说一下URP下后期处理的使用(只是这里的设置没有做修改,不是指没用到后处理)。而高级设置里红框的SRP Batcher这个很重要,貌似是URP特有的,老管线不支持的。主要是给那些不同材质,shader变体较少的情况下,优化些渲染效率,他的使用有限制,只对MeshRenderer生效,SkinMeshRenderer不支持,并且现在只对URP的自己的Shader支持URP的 Lit Unlit等。
三、URP渲染管线里使用后处理
URP里不同于老管线里用的PostProcessingV2的插件包,它有自己的一套后处理叫Volume,看官方的说法是好像2020.1里URP将只会支持自己的那套,就不支持PPV2了。



使用的时候只需要给物体添加Volume组件就行,用法基本和PPV2大同小异,也需要事先在工程里生成对应的Profile资源,在里面做你的后处理配置,唯一区别好像是这个不支持自定义的后处理效果。
四、URP中使用多相机
不同于老管线里的多摄像机使用的时候,只需要设置他们的优先级,然后叠加使用就行,它多了一些参数的设置。


最主要的是第一个RenderType和后面的Stack,RenderType里分一个base和overlay,base一般就是画面底部,至少应该有一个base相机,然后overlay是往上面叠加的相机。具体就是在下面的stack中设置,这个设置也是有顺序的,似乎是越靠下的越渲染在上层。其他的一些设置和以前的相机大同小异,也不赘述,无非是多了一些真对URP管线资源里的设置,只不过可以针对摄像机单独设置而已。再就是每个相机最后会增加一个UniversalAdditionalCameraData的组件,这个也不可移除,里面存储着URP管线用到的一些相机的数据。
那么关于URP学习笔记的第一篇,就先写到这里,由于我也是刚刚开始学习,更新完全不定时,因为也要看用到多少东西,学到多少东西,积累到一定程度,才能拿出来分享。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2022-3-15 19:42 | 显示全部楼层
自揪自己文章中的一处错误,SRP Batcher是新管线特有的,动态和静态Batching老管线也支持
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 16:47 , Processed in 0.066517 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表