糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > URP渲染管线与Buildin管线的区别

URP渲染管线与Buildin管线的区别

时间:2021-04-14 12:15:03

相关推荐

URP渲染管线与Buildin管线的区别

URP介绍

UPR前身是LWRP,区别是URP集成了postProcessing。主要是为移动平台设计。UPR相当于SBP(可编程渲染管线)里的一个模板。Universal RP包里可以看到源码。

区别:

1.光照:

传统Bulidin渲染管线的光照是多Pass渲染,每多一个动态光就多一个Pass,这个光影响的物体就要多画一遍。eg:所有物体都受动态光影响,则m个动态光,n个物体,绘制次数m*n。

URP实现了单Pass渲染光照。也就是上面的例子,最后绘制只需要n次。但URP中限制了灯光的数量。目前是支持1詹平行光,每个对象最多只能接受4个动态光。(版本不同可能不一样)

2.URP的shader可以使用 Shader Graph,HLSL编写的shader,CG语言因为已经停止更新很多年,所以使用的代码库是HLSL。也支持CG,比如:Bulidin管线中使用CG的Unlit Shader可以延用。Bulidin管线中的其他shader都不能支持。

3.批处理:

之前Unity支持:动态批处理,静态批处理,GPU Instancing。SRP在原来的基础上还支持SRP Batcher。SRP Batcher不会减少Draw Call数量,但可以减少Set Pass Call的数量。并减少绘制命令的开销。

减少绘制命令的开销的原因:CPU不需要每帧都给GPU发送渲染数据,如果数据没有变化,就保存在GPU内存中,每个绘制仅调用包含一个指向正确内存位置的偏移量。(值传递变成了引用传递?!)

减少Set Pass Call的原因:传统批处理的前提是同一材质,SRP的判断依据是Shader 变种是否变化,Shader变种相同,即使是不同材质都不会被打断。

底层原理:

SRP会在主存中将模型的坐标信息、材质信息、主光源信息阴影参数和非主光源阴影参数分别保存到不同的CBUFFER(常量缓冲区)中,只有CBUFFER发生变化才会重新提交到GPU并保存。

CBUFFER在Shader中就是包含各种声明的Property。所以支持CG的UnlitShader是不能使用SRP

Batcher的。只有使用了名为UnityPerMaterial的CBUFFER才能使用SRP Batcher。

官网上的对比:

如果觉得《URP渲染管线与Buildin管线的区别》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。