【Metal2剖析(二):传统延迟渲染和TBDR】

本文深入探讨Metal2中的延迟渲染技术,包括传统双Pass延迟渲染和单Pass延迟渲染(TBDR)。重点分析了Metal2的新特性如光栅顺序组(ROG)和图像数据块(ImageBlocks)如何优化延迟渲染,特别是如何利用Tile Based渲染架构减少带宽消耗。此外,介绍了Xcode的抓帧调试工具在分析延迟渲染流程中的应用。

在这里插入图片描述

针对延迟渲染,官方给出了一个Demo,分别实现了传统的双Pass延迟渲染和利用Metal的特性实现的单一Pass延迟渲染。单Pass延迟渲染主要依靠iOS和tvOS平台的Tile based特性来实现。这篇文章主要根据官方的延迟渲染Demo来分析两种延迟渲染的原理区别,扩展Programmable blending特性实现延迟渲染和ImageBlock实现延迟渲染进行优化的原理,挖掘总结用到的Metal引擎特性和相关知识点。

官方Metal Demo列表地址:https://developer.apple.com/metal/sample-code/

延迟渲染Demo地址:https://developer.apple.com/documentation/metal/deferred_lighting?language=objc

一、 关键词

  • Xcode抓帧调试;
  • TBDR;
  • Programmable blending;
  • ImageBlock(Implicit,Explicit);
  • Tile Memory;
  • Multiple Raster Order Groups

二、延迟渲染原理回顾

延迟渲染相比于前向渲染可以更加高效的渲染大量的光源场景。前向渲染中,对于场景中通过深度测试的每个物体,要依次针对每个光源进行光照计算,当场景复杂、光源数量增多,计算量会急剧增加,效率低下;
而在延迟渲染中,光照计算推迟到第二步,对于每个光源场景在屏幕空间只进行一次光照计算,光源的增加对计算量影响线性的。

延迟渲染的实现方式目前依托不同的硬件结构有两种,像macOS等PC平台由于GPU是IMR(immediate mode rendering)架构,延迟渲染的实现至少需要两个Pass。而iOS等移动平台的GPU支持TBDR架构,利用tile memory可以实现在一个Pass中进行延迟渲染,减少CPU和GPU之间的数据带宽,提高了渲染效率。

2.1 传统延迟渲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_厚厚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值