【Unity笔记】关于前向渲染和延迟渲染的理解

在Unity中,前向渲染和延迟渲染是两种常见的渲染技术,它们在处理不同场景几何和光照复杂度时都有各自的优劣势。

前向渲染(Forward Rendering)

前向渲染的原理是对每个物体在每个像素上进行光照计算和着色,如果场景有多个光照则需要大量的重复计算。

渲染流程:

  1. 几何阶段:将场景中的几何信息经过顶点转换、面剔除和视锥裁剪等处理生成可见的几何数据。
  2. 光照阶段:对每个可见物体进行光照计算和像素着色,生成最终的颜色值。
  3. 像素合成阶段:将每个物体的颜色值合成为最终的图像。

优点:

  1. 渲染速度快,是一种直接的渲染方法,每个像素都经历完整的光照计算和着色过程,因此可以快速生成最终图像。
  2. 适用于移动设备和简单场景,由于其相对简单的计算流程,对硬件要求较低,适用于移动设备和简单场景的实时渲染。
  3. 支持透明度处理,能够有效处理透明度,使得透明物体在渲染结果中能够正确显示。
  4. 灵活的着色模型,提供了多种自定义的着色模型,可以根据需要进行灵活的着色和材质设置。

缺点:

  1. 难以处理大量光源,当场景中存在大量光源时,前向渲染需要进行多次渲染,导致性能下降。
  2. 不适用于复杂场景,在复杂场景中,渲染开销较大,难以实现高级的光照模型和效果。
  3. 难以实现实时阴影和反射,在实时计算阴影和反射方面的效果较差。
  4. 当场景中存在大量物体和复杂的遮挡关系时,前向渲染需要在每个像素上进行大量的光照计算,包括那些最终不会对最终渲染结果产生影响的光源。这会导致渲染性能的下降,浪费计算资源。


延迟渲染(Deferred Rendering)

延迟渲染是将光照计算从每个像素上推迟到后期阶段,并通过使用几何缓冲和延迟着色的技术,将几何和材质属性存储在缓冲区中,从而避免了在每个像素上进行复杂的光照计算。

渲染流程:

  1. 几何阶段:将场景中的几何信息经过面剔除和视锥裁剪等处理生成可见的几何数据。
  2. 光照阶段:将每个物体的几何信息和材质属性存储在多个缓冲区中,并不直接进行光照计算和像素着色。
  3. 后期阶段:使用缓冲区中的几何信息和属性,对每个像素进行光照计算和像素着色,生成最终的颜色值。
  4. 像素合成阶段:将每个物体的颜色值合成为最终的图像。

优点:

  1. 支持大量光源:延迟渲染使用了几何缓冲和延迟着色的技术,可以高效处理大量光源,适合复杂场景和需要大量动态光照的情况。
  2. 实时阴影和反射:延迟渲染允许在后期阶段计算实时阴影和反射效果,使得渲染结果更真实、更具细节。
  3. 灵活的后期处理,将光照信息和几何信息分离,可以对光照和几何数据进行灵活的后期处理,如屏幕空间环境光遮蔽(SSAO)、屏幕空间反射(SSR)等效果。

缺点:

  1. 内存消耗较大,延迟渲染需要额外的缓冲区存储几何和光照信息,因此对内存的需求较高。
  2. 对移动设备和性能较低的硬件支持有限,对硬件要求较高,可能不适用于移动设备和性能较低的设备。
  3. 对透明物体的处理较复杂,在处理透明物体时存在一些限制,可能需要额外的处理步骤。
  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值