【IMR、TBR、TBDR】【RenderTexture、Cbuffer】学习

1. 渲染架构比较

原文 GPU 渲染架构介绍和比较分析

1.1 IMR (Immediate Mode Rendering)

IMR是PC和主机GPU使用的渲染方式,指每一次渲染API的调用,都会直接绘制图形对象。所以每一次物体颜色和深度的渲染都会读写Frame Buffer和Depth Buffer。IMR架构需要大量的带宽,这点可以通过L1和L2缓存优化,但对于移动端GPU的尺寸和功耗需求,不能使用IMR

1.2 内存带宽消耗问题

在IMR中,三角形提交的顺序决定了访问顺序,但这种访问顺序是无序的,所以可能会导致访问效率低下。也可能会遇到较高的缓存未命中率,GPU缓存中的数据经常不是渲染下一个像素所需要的数据,导致频繁的内存访问。

在这里插入图片描述

1.3 Tiled Memory

贴图内存是一种优化内存带宽使用的技术,它将内存划分为多个二维的矩形区域,即“贴图”或“瓦片”。

工作原理:

  • 瓦片化内存:每个缓存行覆盖帧缓冲和深度缓冲中的一个瓦片区域。与传统的线性缓存相比,这种布局使得渲染操作在缓存内部执行的更多,减少了对外部内存的访问
  • 缓存命中率提高:由于相邻的三角形在渲染时往往连续提交,瓦片化的缓存可以更好地利用缓存行,提高缓存的命中率
  • 减少内存带宽使用:由于更多的渲染操作在缓存内完成,因此与内存的传输变得更少

1.4 Rasterizing within tiles

在现实世界中,帧缓冲区相对于缓存瓦片来说可能会大得多,如果三角形特别大,屏幕上的每一行可能覆盖的瓦片数量超过了缓存能容纳的范围。所以我们可以改变三角形内像素的光栅化顺序:可以先绘制三角形覆盖的一个瓦片内的所有像素,然后再移动到下一个瓦片。

  • 减少缓存失效:通过在一个瓦片内完成所有相关像素的渲染,不需要在渲染过程中频繁地加载和卸载瓦片
  • 提高缓存利用率:因为一旦瓦片被加载到缓存中,就可以处理该瓦片内所有三角形的像素,而不是仅仅处理一个三角形

1.5 分箱 Binning

我们需要确定哪些三角形会影响每个瓦片。当几何体被提交渲染时,它不是立即被光栅化,而是被“分箱”到一个内存结构中,这个结构决定了它可能影响的瓦片。注意这个过程涉及到顶点着色(确定三角形在屏幕上的位置),因为这影响着三角形的位置,但不包括片段着色。

04-26 4836
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值