URP入门(学习整理)

**

URP的基本概念

**

1.要使用通用渲染管线(URP),必须创建一个URP资产,并在图形设置中分配资产。 URP资产控制通用渲染管线的几个图形特性和质量设置。它是一个可编写脚本的对象,继承自“RenderPipelineAsset”。当你在图形设置中分配资产时,Unity会从内置的渲染管道切换到URP。然后,您可以直接在URP中调整相应的设置,而不是在其他地方寻找它们。 2.您可以拥有多个URP资产并在它们之间进行切换。例如,你可以设置一个打开阴影和一个关闭阴影。如果你切换属性来查看效果,你不必每次都手动切换相应的阴影设置。但是,由于渲染管道不兼容,您不能在HDRP/SRP和URP资产之间切换。

URP的优势 最核心的优势是相比内置管线提高渲染效率,附带提高渲染效果。手机上,渲染效果的限制主要是性能方面,而不是技术方面。 另一个优势是方便定制管线,可以单独更新package,在不更新unity版本的情况下单独更新URP代码。

为什么使用URP

游戏是从PC端游发展起来的,我们拿传统的向前渲染管线中的光源来举例,向前渲染管线支持任意多的重要光源,每个重要光源,Unity 都要基于这个光照来绘制一次物体,这样导致pass次数非常的多,性能消耗开销非常大,于是就有静态光照,静态烘焙等。随着手机游戏的发展,人们不满足于假的静态光照,需要实时光照,又要保证很好的性能。这个时候,就需要开发者做一个权衡和选择在特定的满足手游开发需求前提下,最大限度的提升性能,于是URP渲染管线就出来了,他假定了些特定条件如主光源只能是平行光,其它的附加光源在配置文件中限定数目,在一个pass内处理完所有的光源与光照计算。加上这些限制条件后,URP渲染管线能开发出满足手机游戏的实时光照的很好效果,同时又能最大限度获得最好的性能。URP渲染管线是对使用环境做一些限定,基于这些限定来定制渲染策略,获得很好效果的同时还有很好的性能。所以慢慢的很多公司都采用URP渲染管线来做手机游戏
URP渲染管线,是基于Unity游戏引擎的可编程渲染管线机制,结合URP渲染管线的前提,实现的高清渲染策略。从渲染来说他有重新定制了摄像机,光照计算,阴影计算,后期处理,特有的一套Shader等(基于URP的PBR shader,以前的向前渲染管线的PBR Shader不能用了)。

URP的架构

Unity的渲染管线Universal Render Pipeline (简称为URP),它是一个高性能、可扩展的轻量级渲染管线。URP的架构概览:

1.渲染器:渲染器是用户界面中的核心模块,主要负责渲染操作。渲染器会从相机获取渲染命令,然后执行相应的渲染操作,包括Geometry Pass、Shadow Pass、Forward Pass、Deferred Pass等等。

当使用URP渲染管线时,渲染过程可以简单地分为以下几个步骤:

几何体渲染:在这一步骤中,几何体被渲染到G缓冲区。这包括几何体的位置,法线,颜色和深度等信息。

阴影渲染:在这一步骤中,所有的阴影图都被渲染到阴影缓冲区。

延迟渲染:这是一个可选步骤,仅在使用延迟渲染时才会发生。在这个步骤中,光照和材质的计算会在延迟渲染缓冲区进行。

前向渲染:在这一步骤中,使用前向渲染算法对所有几何体进行渲染。这是最耗费性能的步骤。

后期处理:最后,应用各种后期处理效果,例如调色板,深度模糊,边缘检测等。

2。脚本染管线(SRP):SRP是urp的一个可编程染管线,它允许开发者通过编写C#代码来自定义渲染流程和渲染效果。提供了许多基础的渲染流程,开发者可以在此基础上进行修改或者自定义。

3.Render Pass: Render Pass是SRP中的一个概念,表示一个渲染阶段。每个Render Pass都可以包含多个SubPass,每个Sub Pass都可以执行不同的渲染操作。

4.shader Graph:shader Graph是Unity官方提供的可视化Shader编辑器,它允许开发者通过拖拽节点和连接线的方式来创建Shader。URP中支持Shader Graph,开发者可以使用ShaderGraph来创建各种复杂的渲染效果。

5.PostProcessing:PostProcessing是URP中的一个模块,用于在染完成后对渲染结果进行后处理。PostProcessing包括各种特效,例如Bloom、color Grading、Lens Distortion等等。

总的来说,URP的架构可以分为渲染器、SRP、Render Pass、Shader Graph和PostProcessing等几个部分,其中SRP是URP的核心,它提供了可编程的渲染管线,让开发者能够自由地定制渲染流程和效果。

关于URP的Geometry Pass:

当使用Universal Render Pipeline (URP) 时,场景中的每个可见物体都会通过渲染管线的Geometry Pass来生成一个G-buffer,该G-buffer存储了每个像素的几何信息,包括位置法线、颜色和纹理坐标等等。

下面是URP中Geometry Pass的主要过程:

Culling: 在Geometry Pass开始前,先进行视锥体裁剪。URP使用基于Tile的GPUculling算法,可以减少不必要的渲染操作,提高渲染性能。2. Depth Prepass: 对于不透明物体,先进行深度预染 (Depth Prepass) ,记录每个像素的深度值和法线信息。这样可以在后续的光照计算中避免不必要的像素着色,提高渲染效率。

G-buffer: 对于每个像素,通过渲染物体的各个Pass (例如Forward Pass或DeferredPass)来生成G-buffer。在URP中,通常使用基于Metallic-Roughness (金属度-粗糙度)模型的PBR材质,将物体的表面属性存储到G-buffer中,包括位置、法线、颜色、金属度和粗糙度等等

Skybox: 如果场景中有天空盒,则在Geometry Pass中渲染天空盒。在URP中,可以使用Skybox Volume和Skybox参数来渲染动态天空盒

总的来说,Geometry Pass是URP中的一个重要步骤,用于生成每个像素的几何信息,并存储到G-buffer中,为后续的光照计算和材质渲染提供支持。通过深度预渲染和基于Tile的GPU culling等优化,URP能够高效地处理大型场景和大量物体的渲染。

关于Forward Pass:

在Universal Render Pipeline(URP)中,Forward Pass是主要的渲染通道之一,负责对场景中的物体进行渲染。下面是URP中Forward Pass的主要过程:

Culling:在开始Forward Pass之前,需要进行视锥体裁剪来剔除视锥体外的物体。

设置摄像机参数:为了正确渲染场景,需要设置一些摄像机参数,例如投影矩阵、视图矩阵、摄像机位置等。

设置渲染状态:在Forward Pass中,需要设置一些渲染状态,例如深度测试、混合模式、光照模式等。

渲染物体:在渲染物体时,需要进行一系列操作:

设置物体参数:为了正确渲染物体,需要设置一些物体参数,例如变换矩阵、材质、纹理等。

设置光照参数:在Forward Pass中,需要设置光照参数,包括灯光的方向、颜色、强度等。

执行着色器:在Forward Pass中,使用着色器对物体进行渲染。着色器通常由顶点着色器、片段着色器和几何着色器组成。

应用光照:在着色器中,使用光照计算物体的最终颜色。

渲染到屏幕:最后,将渲染结果绘制到屏幕上。

渲染透明物体:如果场景中有透明物体,那么需要在Forward Pass中进行额外的透明物体渲染。在透明物体渲染时,通常需要进行深度排序和混合操作,以正确处理透明物体之间和透明物体和不透明物体之间的关系。

总的来说,Forward Pass是URP中用于渲染场景中物体的主要渲染通道。通过视锥体裁剪、光照计算、着色器渲染和深度排序等技术,可以高效地渲染场景中的物体。同时,URP还支持多种渲染效果,例如全局光照、屏幕空间反射、抗锯齿等。

关于URP中的Deferred Pass:

在Universal Render Pipeline(URP)中,Deferred Pass是一种用于渲染场景的渲染通道,它的主要特点是将所有物体的信息存储到几个G-Buffer中,然后在屏幕空间中对这些信息进行光照计算和渲染,从而获得高效而准确的渲染效果。下面是URP中Deferred Pass的主要过程:

G-Buffer Pass:在开始Deferred Pass之前,需要进行G-Buffer Pass,将场景中所有物体的信息存储到几个G-Buffer中。通常,G-Buffer包含以下几个缓冲区:

深度缓冲区:记录每个像素的深度信息。

法线缓冲区:记录每个像素的法线信息。

颜色缓冲区:记录每个像素的颜色信息。

材质属性缓冲区:记录每个像素的材质属性信息,例如金属度、粗糙度等。

光照计算:在Deferred Pass中,需要进行光照计算,从而得到最终的渲染结果。光照计算通常包括以下几个步骤:

建立光照缓冲区:创建一些缓冲区,记录光照信息,例如光照颜色、位置等。

计算光照:将光照信息应用到G-Buffer中的像素上,从而得到每个像素的最终颜色。

合并光照:将所有的光照信息合并在一起,得到最终的光照结果。

渲染到屏幕:最后,将渲染结果绘制到屏幕上。

Deferred Pass的主要优点在于可以高效地处理大量光源和复杂材质,从而获得更真实的渲染效果。同时,由于G-Buffer中存储了所有物体的信息,可以方便地进行后期处理,例如景深、运动模糊等。但是,Deferred Pass也有一些缺点,例如不支持半透明物体、不支持动态阴影等。因此,在选择渲染通道时,需要根据场景的特点和要求来选择合适的渲染通道

**

URP原理到应用

**
有需要的可以去相关博客去查看(博主已经讲得很详细)
https://blog.csdn.net/mango9126/article/details/126418176?spm=1001.2014.3001.5502

URP中优化项目的方法

管线(URP) 在构建时就将优化的实时光照考虑到了,在URP Forward Renderer中,每个对象最多可以有8个实时光源。台式机每个摄像机最多可以有256个实时光源,移动端每个相机最多可以有32个实时光源。通用渲染管线还允许在管线资源中配置每个对象的光照设置以进一步控制光照,但其实改善场景性能的最好的一个方法,就是在需要时尽可能地烘培场景,实时光照可能开销巨大,而烘培光照 则可能是提升性能的好方法,尤其是当场景中的灯光要一直移动时

猜你喜欢

转载自blog.csdn.net/Mq110m/article/details/129765879