大家好,我是阿赵,接下来会介绍一下URP的使用
一、URP的介绍
URP(Universal Render Pipeline)通用渲染管线,是Unity在2019.3版本之后推出的一种新的渲染管线。
对比起默认的渲染管线,他的使用上会产生了一些变化,包括了摄像机的使用、Shader的编写等。
传统的渲染管线在渲染多光源的情况,是把每一个主要光源都使用一个Pass来计算,然后再叠加,所以在计算多光源实时光时,消耗会比较大。
URP的特点是,假定了一些特定的条件,比如主光源只能是平行光、限定附加光源数量,然后在一个pass内处理完所有光源和光照的计算。这样会解决了默认渲染管线对于多光源的计算。
URP的另外一个特点是SRP Batcher合并的支持。合并批次渲染是渲染性能优化的重要手段,之前介绍过静态合批、动态合批、GPU Instancing等,SRP Batcher也是一种非常优秀的合批的技术手段
所以URP在移动平台开发比较受欢迎,它能做出效果不错而性能也不错的实时光效果。
二、在项目中使用URP
1、安装URP
在Package Manager里面搜索并安装UniversalRP
安装后,Packages里面会增加Core RP Library好Universal RP两个package文件夹
2、把项目转变成URP
1.创建URP的Asset文件
在安装了Universal RP的package之后,会发现Create选项里面多了Rendering/Universal Render Pipeline的选项,可以创建Pipeline Asset
创建之后,会发现有2个asset文件,一个是我们自己起的名字,一个是自己起的名字加上_Renderer结尾
第一个文件是对于渲染的各项设置
第二个文件是附加的渲染设置
2.指定使用URP的Asset文件
在Project Setting里面,分别在Graphics和Quality页签指定刚才创建的管线Asset文件。
3、产生的变化
1.摄像机
在指定了URP渲染asset之后,会发现摄像机的选项发生了非常大的变化,左边的是URP摄像机,右边的是普通的摄像机
2.材质球
新创建的材质球,默认使用的shader不再是Standard,而变成Universal Render Pipeline/Lit
如果手动改回Standard,会发现材质球变成了错误的紫色,Standard在URP里面不再被支持
如果针对旧项目的Standard材质球,可以使用工具Edit/Render Pipeline/Universal Render Pipeline下面的2个选项来转换材质球,第一个是遍历项目内所有的材质球并转换成URP类型,第二个是只转换当前选择的材质球为URP类型。
不是所有的材质球都需要转换的,假如材质球原来使用的shader就不需要转换,那么会出现这样的提示
3. Shader的支持
对于Shader部分,首先,在Shader文件的Inspector面板上,会显示出了SRP Batcher的情况,说明了该Shader是否支持SRP Batcher。
然后看看URP的支持库里面,全部都是hlsl文件,这代表着如果我们想用里面提供的方法,那么我们就要把之前使用的CGPROGRAM改为HLSLPROGRAM了。
对于Unity来说,cg和hlsl的语法基本上是一致的,不过也有一些需要注意的地方,这个之后有时间会再做说明