百度百科定义:渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的并行处理单元。

实际上就是把原始图形数据,经过一个输送管道,期间经历各种变换处理,最终输出到屏幕的一个过程。 可以理解为被拆分成两个部分: 1、3D坐标转2D坐标。 2、2D坐标转屏幕像素。

Unity的渲染管线类型

大致分两种。

  1. 内置渲染管线 Buildin Render Pipeline
  2. 可编程渲染管线: Scriptable Render Pipeline

可编程渲染管线又可分为HDRP(高清渲染管线)、LWRP(轻量渲染管线) LWRP渲染管线又衍生出URP(通用渲染管线)

内置渲染管线(Buildin Render Pipeline)

优点:

  • 项目初期大量依赖于内置资源(Build-in shader、default resource),不会需要花费过多额外的时间定制管线,快速迭代。
  • 兼容性。

缺点:

  • Build-in管线考虑兼容性,过于冗余。
  • 性能。
  • 无法对外提供定制化接口。
  • 不支持Unity的一些图形功能(比如shader Graph,HDRP中的Decal)

可编程渲染管线(Scriptable Render Pipeline)

是内置渲染管线的替代方案。暴露了一系列渲染接口,可以通过C# 脚本控制和定制渲染方式。 以package的形式存在。 shader不兼容Build-in,需要升级使用新的着色器。

HDRP

优点:

拥有强大的光照系统,画面AAA级。支持前向渲染和延迟渲染。

缺点:

需要支持compute shader,有些GPU不支持。不适合移动端。 opengl也是支持compute shader的,但是HDRP不支持opengl opengles.

URP:

  • 移动端的性能大幅提升。单通道前向渲染。

    什么是单通道?指的是渲染pass(渲染管线的单次运行,图像渲染到内存中的帧缓冲中) build-in中的前向渲染是一种传统的渲染技术。 他是通过ForwardBase Pass计算主光,ForwardAdd Pass计算其他光照叠加的实现方式。 也就是说光源越多,调用的pass越多。然而在urp中,是在一个pass遍历光源进行的光照计算。

SRP Batcher: 关于SRP Batcher, 通过ConstantBuffer将对象的基本信息存储在GPU上,避免重复提交数据。他是针对shader的。对于URP所提供的shader都可以做到srp Batcher,自定义Urp shader需要把需要缓存的变量也到CBUFFER宏中。