延迟渲染需要在前面阶段,将计算的内容保留在N张G-buffer中,但是网上的文章只是提及了G-buffer应该压缩,并且尽量少用,没有说明G-buffer所占带宽应该是多少,我将在下面介绍G-buffer所占显存带宽的详细计算方法

G-buffer的存储内容

为了减少G-buffer的内容,现在基本会对G-buffer内容进行压缩

我原来有段时间很喜欢玩《killing floor2》这个游戏,是拿ue3引擎做的,

(《killing floor》的发展史和虚幻引擎发展有着密不可分的关系,一代在当时就有很好的效果)

下面这张图是《killing floor2》的G-buffer存储方法

可以看到除了深度模板视图,总共用了4张RT去存储G-buffer信息

G-buffer所占显存带宽的计算

首先每张RT有RGBA四个通道,每个通道是8bit,那么总共是4*8=32bit的通道信息

如果屏幕是1920*1080p的,一张RT整张屏幕存储的通道信息就为1920*1080*4*8bit

如果游戏流畅运行需要60fps(《杀戮空间2》是射击游戏,需要高刷新率),那么在一秒中一张RT所传递的信息就为

1920*1080*4*8*60bit=3981312000bit/s,大概是0.46GB

那么《杀戮空间2》用了四张G-buffer,单一次单向传输就用了将近2G/s的带宽

它的发售时间为2016年末,那时候平常游戏玩家用的卡的带宽在148.8GB/s

但是需要看游戏的最低要求配置,是GeForce GTS 250,这张显卡的显存频率为

1100MHz,显存位宽为256bit,带宽粗略为35G/s,但是显卡需要这个带宽去处理别的事情,可见显存带宽的宝贵性

关于移动端延迟渲染的障碍

移动端的瓶颈在带宽

带宽是电量消耗和发热的大客户。带宽是一种共享资源,因此使用过多会以不可预知的方式限制整个系统的性能。访问外部存储器需要大量功率,因此减少带宽使用可降低功耗,移动端GPU和CPU是共享内存的,因此 GPU 的高带宽使用会降低 CPU 性能

手机游戏的性能优化,要以极低的配置目标做优化,那我们选择一个几年前的手机去做计算

小米6的内存是LPDDR4X 1866MHZ,32bit 双通道

所以内存带宽是,1866 * 32 / 8 * 2 * 2

算下来大概为30 GB/s

再算上屏幕缓冲区加上深度缓冲区,读写宽带,overdraw,cpu内存读取等开销

总共用30GB/s的带宽,可见移动端的开销是非常紧迫的

这时候上延迟渲染就很难了

不过,在ue5.1中,在关闭静态光的情况下, 使用三张G-buffer支持了桌面端全部的shadingmodel, 并在源码里预留了第四张gbuffer的开关

关于延迟渲染和ssaa与msaa

这个问题的争议比较大,我对这个问题的结论是,可以实现,但是效果可能不正确

延迟渲染和ssaa

ssaa是放大屏幕分辨率,最后再缩放,采样多个映射的子像素点进行插值

在前向渲染中,最后结果都在高分辨率的颜色缓冲区中,在高分辨率的颜色缓冲区中采样再进行插值计算,得到最后的结果

再延迟渲染中,在最后的光照计算后,也得到的是高分辨率的颜色缓冲区,也可以进行插值计算,得到最后的结果,但是在计算光照之前,需要多张高分辨率的G-buffer去存储信息,这个开销巨大

延迟渲染和msaa

msaa是在ssaa的基础上发展而来的,通过测试的子像素才能复制中心像素的颜色,一个像素只计算一次,最后再写入颜色缓冲区

再延迟渲染中,这个像素周围的信息已经丢失了,无法进行采样了,那么有没有办法解决这个问题呢

当然有办法了

在计算得到每一张G-buffer的时候,执行一遍子像素测试,这时候的每一张G-buffer都是取完插值的结果,这时候就保留了每一个像素的周边情况,最后再和光照做计算就没问题

但是,插值得到保留法线和深度的G-buffer可能插值不正确

所以msaa完全可以用延迟渲染,但是计算结果可能不正确

延迟渲染G-buffer所占显存带宽计算(解决移动端和抗锯齿的若干疑问)相关推荐

  1. 关于模型训练中显存占用过大的或直接报显存爆炸的解决方法

    模型训练显存爆炸解决方法 在模型训练中,应该理解梯度.反向传播.图层.显存这些概念,在模型训练过程中,一般会分为训练+验证+测试 ,在这些过程中,一般在训练过程中会比较占用显存,因为涉及到反向传播,需 ...

  2. GPU-Z的像素填充率、纹理填充率、显存带宽计算公式

    GPU-Z中像素填充率.纹理填充率.显存带宽的计算公式: (1)像素填充率是指显卡在每个单位时间内所能渲染的像素数量,单位是GPixel/s(每秒十亿像素) 像素填充率(Pixel Fillrate) ...

  3. GPU显存爆炸如何解决?

    问题:在使用GPU训练网络时,出现RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 11.17 GiB tot ...

  4. ICLR2021 | 清华大学黄高团队:显存不够?不妨抛弃端到端训练

    智源导读:本文主要介绍清华大学黄高团队被ICLR2021接收的一篇文章:Revisiting Locally Supervised Learning: an Alternative to End-to ...

  5. ICLR 2021 | 显存不够?不妨抛弃端到端训练

    ©作者|王语霖 学校|清华大学自动化系博士生 研究方向|机器学习和计算机视觉 本文主要介绍我们被 ICLR 2021 接收的一篇文章,代码已经在 Github 上面开源. 论文标题: Revisiti ...

  6. Linux 查看显存带宽,Vega 20规格与Vega 10相近,显存带宽翻倍,但目前只能跑Linux - 超能网 - IT帮...

    AMD在Next Horizon大会上发布了全球首款7nm GPU Vega 20,在331mm2的核心面积中集成了132亿晶体管,并且支持PCI-E 4.0,与上代产品相比在相同功耗情况下,性能提升 ...

  7. 关于模型训练的时候所需要的GPU显存的计算以及模型参数,计算量的计算

    对于模型参数以及模型计算的时候计算量的计算我懂的,但是对于所需要的显存计算,我一脸懵逼. 幸亏看到了一篇较好的文章参考这篇文章(按照这个模型中的方法来计算) 然后基于我目前的一个模型,我计算了下- 写 ...

  8. 游戏显示计算机空间不足,打游戏显示“显存不足”怎么解决?图解显存不足的方法步骤...

    玩大型游戏的时候出现显卡内存不足的提示,根本无法进行游戏,那该怎么办呢?这种情况大多出现在玩运行大型游戏或者运行3D室内软件之类.下面,就随小编一起看看该问题的解决方法. 懂电脑的朋友都知道显卡是我们 ...

  9. #科技 #资讯 #生活 微信测试更多图片打开方式,神州圆满发射,英伟达或停产性价比神卡,SAMSUNG新一代显存带宽容量双翻倍,这就是今天的其它大新闻

    今天是2022年12月01日 十一月初八 现在是中午12:10 下面是今天的其他大新闻 #NEWS 1 # 微信测试用不同小程序打开图片:快捷调用小程序打开图片.视频.文件 ( 新浪科技 ) 据悉,微 ...

最新文章

  1. 函数作用域的静态变量
  2. 【图论】【最短路】【Dijkstra】最小花费(ssl 2206/luogu 1576)
  3. js生成的cookie在yii2中获取不到的解决办法
  4. 计算机专业跨专业考文科,给07年想跨专业考湖大计算机专业的同学
  5. Lyft出售自动驾驶部门给丰田子公司:作价5.5亿美元
  6. HDU1249 三角形【切割平面】
  7. 搞搞Linux命令--grep
  8. paip.discuz x2.5 用户及积分账户的接口attilax总结
  9. Degree and Closeness Centrality
  10. Amesim(七):amesim自带demo动力学模型研究
  11. hdu1175连连看
  12. linux ubi 分区,ubi卷重分区及卷创建流程解析
  13. 生成器(generator)理解
  14. 生成密钥、配送密钥和更新密钥
  15. mysql连接错误state 08S01
  16. 新人学习EJB!ejb到底是什么?
  17. CentOS8 源码编译安装 lamp环境 (apache24 + php7.3 + mysql57)
  18. python柱状图zzt_Python torch.diag方法代碼示例
  19. java计算机毕业设计新能源汽车租赁管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  20. Html5的废弃与新增全局属性及元素

热门文章

  1. wkwebview替换uiwebview_UIWebView完美切换至WKWebView
  2. 文字常量区与栈区分析
  3. vue实战025:配置TinyMCE富文本编辑器
  4. python stdout stderr 一起输出,Python日志记录在stdout和stderr之间拆分
  5. 计算机实验室管理培训心得,实验室管理心得体会【范文两篇】
  6. Angular 服务端渲染 Angular Universal 实例
  7. python里map函数_python中map()函数的用法讲解
  8. 00942 ora 表存在_ORA-00942:写入数据库中的表时,表或视图不存在错误
  9. windows cmd 命令行 切换屏幕
  10. java8 metaspacesize_Metaspace 之三--jdk8 Metaspace 调优