Lazy loaded image
Unity Shader
Unity渲染管线
Words 1407Read Time 4 min
2024-1-27
2025-4-3
type
status
date
slug
summary
tags
category
icon
password
😀
渲染管线是游戏开发中绕不开的词,前段时间了解了下各渲染管线的渲染流程,本文做一个记录。
 

1. 内置渲染管线(Built-in Rendering Pipeline)

Unity的内置渲染管线是默认的渲染方式,提供了一套完整的渲染解决方案,适用于大多数常见的游戏和应用场景。

渲染流程:

  1. Camera Setup:设置摄像机的投影矩阵和视图矩阵。
  1. Culling:剔除不可见的渲染对象,采用视锥体剔除和遮挡剔除等技术。
  1. Rendering
      • Forward Rendering Path
        • 渲染不透明物体:渲染每个物体,逐个光照计算。预处理Shadow和Lightmaps。
        • 渲染半透明物体:按距离摄像机的顺序从后向前渲染。
      • Deferred Rendering Path
        • G-buffer渲染:先渲染所有不透明物体的Albedo, Normal, Depth等信息到不同的G-buffer中。
        • 光照计算:后处理所有光照。
        • 半透明物体处理:类似于前向渲染模式(Forward Rendering Path)。

2.通用渲染管线(Universal Render Pipeline, URP)

在2019.3版本之后推出的一种新的渲染管线。与传统的内置渲染管线比,在处理多光源和着色器编写等方面有改进。URP假定了一些特定的条件,例如主光源只能是平行光、限定附加光源数量,从而在一个pass内完成所有光源和光照的计算,有助于提高渲染性能。URP还支持SRP Batcher合并技术,进一步优化渲染性能。

渲染流程:

  1. Setup:初始化摄像机和渲染目标。
  1. Culling:与内置管线类似的剔除步骤。
  1. Rendering
      • Rendering Modes
        • Forward Rendering
          • 渲染所有不透明物体到深度图。
          • 渲染所有不透明物体,并计算逐个物体的光照。
          • 渲染半透明物体。
        • Scriptable Renders:通过ScriptableRenderPass实现自定义后处理效果。
  1. Post-Processing
      • 应用全局后处理效果,包括抗锯齿、颜色校正、模糊等。
  1. Final Pass:最后将整个渲染结果输出到屏幕。

3.可编程渲染管线(Scriptable Render Pipeline, SRP)

Unity 2018引入的新功能,允许开发者通过脚本按需构建自己的渲染过程。为开发者提供了一个高度灵活的框架,可以根据项目需求进行定制化的渲染管线设置。通过继承RenderPipeline类并重写其中的方法,可以完全控制渲染流程,实现高度定制化的渲染效果。

渲染流程:

SRP是一个框架,允许开发者创建自己定制的渲染管线,典型示例流程:
  1. Initialization:初始化渲染资源和配置。
  1. Culling:进行视锥体剔除和遮挡剔除。
  1. Sorting:对需要渲染的对象进行排序。
  1. Rendering
      • Custom Render Passes:实现自定义的渲染通道(Render Pass),如深度预处理、阴影映射、光照计算等。
  1. Post-Processing
      • 应用自定义的后处理效果。
  1. Final Pass:渲染最终结果到屏幕。

4.高清渲染管线(High Definition Render Pipeline, HDRP)

Unity的一款高端渲染管线,提供更接近真实世界的照明效果。HDRP利用各种功能扩展了Unity的照明系统,例如物理照明单位和曝光控制、高级光照、天空景色、雾效果、体积系统等。HDRP还支持高级阴影和反射效果,提供了基于物理的着色和光照模型。HDRP基于可编程渲染管线构建,允许开发者进行扩展和定制化开发。

渲染流程:

  1. Render Setup:初始化渲染目标、设置摄像机和配置信息。
  1. Culling:进行高级剔除算法(视锥体剔除、遮挡剔除)。
  1. G-buffer Pass
      • 渲染所有不透明物体的G-buffer信息(Albedo, Normal, Specular等)。
  1. Shadows and Light
      • 渲染阴影映射。
      • 光照计算:光照计算分多个阶段进行,包括环境光(Ambient Light)、体积光照(Volumetric Lighting)、反射(Reflections)等。
  1. Deferred Lighting Pass:基于G-buffer和光照信息进行光照计算。
  1. Forward Pass:处理半透明物体,并进行多次光照计算。
  1. Post-Processing
      • 高级的后处理效果(如HDR、体积雾、色调映射等)。
  1. Final Pass:将渲染结果输出到屏幕。

渲染管线对比

  • 内置管线:易用性高,适合初学者和快速开发,但对高端功能和性能优化支持有限。
  • URP:性能与视觉效果之间的平衡,适用于大多数平台,包括移动设备、PC和控制台。
  • SRP:高度自定义性,适合有特殊需求的开发,可以实现高度特化的渲染效果。
  • HDRP:专注于高保真视觉效果,适用于高端PC和主机平台,对复杂光照和图形效果提供强大支持。
 
💡
每种渲染管线都有其特定的应用场景和优化特性,选择适合的渲染管线可以极大提高项目的开发效率和最终效果。
 
上一篇
Unity中Outline和Shadow组件顺序导致的赋值问题
下一篇
TCP与UDP_三次握手_四次挥手

Comments
Loading...