当前位置: 首页 > news >正文

GPU PRO 5 - 4.2 Deferred Rendering Techniques on Mobile Devices 笔记

本笔记仅为个人的理解,如果有误欢迎指出。

Deferred Rendering Techniques on Mobile Devices

移动设备上的延迟渲染技术

延迟渲染是一种将场景光照计算延后到第二个渲染阶段进行的技术。。应用程序首先完成场景几何信息的渲染,并在第二个 Pass 中,在所有进行光照计算所需的信息都已经准备好之后,再统一执行光照计算。

这种技术将光照计算和几何计算解耦,因此相比于前向渲染,延迟渲染对于多光源场景更加友好。但延迟渲染不代表没有代价,因为他是在屏幕空间中完成几何体的着色,因此要求每个像素的所有光照相关信息都必须事先存储在G-buffer中。

但G-Buffer的大小随着分辨率改变而改变,1920 x 1080 的分辨率中G-Buffer的大小可能达到数十MB。并且每一帧写入和读取。这增加了内存占用,内存宽带的消耗,这个在PC设备上还好,但是在移动设备上这就成为了延迟渲染主要的瓶颈之一,移动设备的GPU中因为要考虑散热、能耗等问题GPU的带宽比GPU的计算能力更加的宝贵。

本文介绍了三种延迟渲染技术,他们在G-Buffer中存储的数据各有不同,分别为:

1,延迟渲染(Deferred Rendering)(Hargreaves 和 Harris,2004)

2,Light Pre-Pass Rendering(光照预处理渲染 / 光照预通道渲染)(Engel,2008)

3,Light Indexed Rendering(光源索引渲染)(Treblico,2009)

1,延迟渲染:

G-Buffer 是延迟渲染概念中的核心之一,在传统的延迟渲染中G-Buffer主要存储以下数据:

漫反射颜色、法线、深度。

延迟渲染对物体的渲染一般会有两个Pass以上,第一个Pass中会将这些数据写入到G-buffer中,随后在另外一个单独的光照计算的Pass中针对场景中的每一个光源依次读取G-buffer中的数据并混合,最终累积得到最后的光照。

2,Light Pre-Pass Rendering(光照预处理渲染 / 光照预通道渲染)

LPPR和DR 的主要区别在于他的G-Buffer中存储每个像素的光照信息,而不是完整的几何信息。这样带来的好处就是减少G-Buffer的大小进而减少内存带宽的消耗。

LPPR中主要存储以下数据:

( 光源颜色 )点乘((光照方向) 叉乘(法线) )

当然依照光照模型的不同,这公式可以是多样的,最后在光照计算中结合物体自身的漫反射纹理生成最终图像。

3,Light Indexed Rendering(光源索引渲染)

LIR和前两项技术不同,前两项技术在G-Buffer中存储的是光照计算所需要的信息,而LIR中G-Buffer换名为Light Index Texture,存储的是一个影响该像素的光源的索引。再利用这个索引去采样最终保存了光源信息的纹理。

具体过程如下:

第一步:为每个光源分配一个索引值,在屏幕空间上受影响的像素会将该光源的索引记录到RGBA中的其中一个通道上。

因此这个技术每个像素最多只有4个光源能够参与到计算,但因为颜色通道是8位的所以场景中可以存在256个不同的光源,因为一张Light Index Texture最多存储4个光源的索引,在选择要存储哪个光源就要另外做判断了。

但如果不限制Light Index Texture的数量的话,每个像素理论上是可以支持任意数量的光源参与到计算的,只要增加Light Index Texture的数量即可。

第二步:这一阶段对于屏幕上的每一个像素首先会根据Light Index Texture上的光源索引,通过这个光源索引去查询存储了光源信息的纹理,比如光源位置纹理、光源颜色纹理、光源衰减纹理等,最终再结合应用程序传入的漫反射纹理、法线等着色数据信息渲染出最终的颜色。

总结:

技术G-buffer 中保存的数据光照如何计算最大优势最大缺点
Deferred RenderingAlbedo、Normal、Depth 等完整几何信息根据 G-buffer 逐光源计算实现简单,支持大量光源G-buffer 大,带宽占用高
Light Pre-Pass RenderingNormal、Depth + 光照结果第二次几何 Pass 结合材质完成着色G-buffer 更小,节省带宽需要两次几何渲染
Light Indexed Rendering每个像素只保存光源索引根据索引查询光源数据后计算几乎不需要 G-buffer,可支持硬件 MSAA,内存带宽占用最低光源管理复杂,每像素可保存的光源数量有限,需要排序和裁剪

从移动 GPU 的角度来看,这三种方案实际上是在不同资源之间做权衡:

  • Deferred Rendering:用显存和带宽换取较低的几何处理开销。
  • Light Pre-Pass Rendering:减少 G-buffer 带宽,增加一次几何渲染。
  • Light Indexed Rendering:进一步减少 G-buffer 开销,将问题转移到光源索引管理和光源数据查询上,并且能够支持硬件 MSAA,因此更适合带宽受限、但需要较高图像质量的移动平台。
http://www.cnnetsun.cn/news/3074153.html

相关文章:

  • 【Java踩坑笔记】14_Collections.singletonList的坑:不能add也不能set
  • 2026年6月GESP真题及题解(C++一级):去旅行
  • pthread_create通过加锁设置线程启动竞争条件
  • 如何高效使用Diablo Edit2:暗黑破坏神2存档编辑器的完整指南
  • 查新报告分为哪几种?科技查新、查收查引与专利查新区别
  • Advanced XRay技术深度解析:如何通过方块渲染优化实现高效矿石定位
  • 5分钟免费让Windows拥有macOS优雅鼠标指针的完整指南
  • 用Backtrader回测DMI指标:一个Python量化新手的实战踩坑记录(附完整代码)
  • 基于sigrity的TDR/TDT仿真设计
  • 数据安全检查,这3个API盲区最容易被问穿
  • 如何用中文工作流轻松玩转AI绘画?这份完整指南让你从入门到精通
  • 第018章:ComfyUI文生图Z-Image模型创建数字人模特(二)
  • 01 静态分析(Static Analysis)
  • PKMS+AppOps 双权限体系:隐私管控、特权白名单全流程源码剖析
  • 2026年桌面风扇类型选购要点:从四个核心部件看懂一台风
  • Java实现字符串匹配:别再让算法理论画饼,实际应用才是王道
  • 把 ES Repository 纳入 CMS 轨道,一套更稳的 SAP PI 内容传输治理方式
  • Bebas Neue:开源字体设计的几何美学革命
  • 与你的 Elasticsearch 数据对话:使用 Google ADK 和 MCP 构建一个实时语音 agent ,分为 3 个组件
  • 从零理解 RAG:把“向量化“和“检索“讲成人话
  • 怎么用AI做历史课件视频?用 seedance2.0 制作趣味历史微课实战教程与对比
  • 机顶盒B860AV2.1-M刷机攻略
  • 高效XPath定位神器:xpath-helper-plus深度解析与实战指南
  • Java volatile 关键字相关用法总结:面试版详解
  • MYSQL--查询的执行流程
  • PC大型3A 角色扮演游戏(RPG)《怪物猎人物语3:命运双龙》网盘下载 免BIOS 中文版
  • 极低成本 AI 服务:独立开发者的多模型混合路由与流量网关设计
  • Python判断数字?别被isdigit()坑了!浮点负数全阵亡
  • UE5 插件版本 - PS添加PostProcess Pass
  • Beyond Compare 5永久激活:3步解决文件对比工具授权限制