省流总结 小芯片为何能玩大型游戏 手机GPU和PC显卡有何不同 (省流是啥意思)

省流总结 小芯片为何能玩大型游戏 手机GPU和PC显卡有何不同 (省流是啥意思)

小芯片为何能玩大型游戏

【省流总结】手机GPU和PC显卡有何不同?小芯片为何能玩大型游戏

摩尔线程、象帝先、芯动科技:是的孩子们,这个我们很熟悉

这里就解释了摩尔线程为何用IMG的POWERVR上PC端根本就不好使的原因了

github.com/Swung0x48/TriangleBin

超分其实也是很重要的一个迭代,不过即使是GCN的显卡也能享受到优化

不过从本期来看确实也证明了IMG POWERVR的移动端GPU和桌面端GPU的设计思路的区别以及生态的分裂,拿着移动端GPU架构并不能直接改出能用的桌面CPU

所以还是扣1复活S3扣2复活3DFX扣3复活SIS吧,至于指望IMG或者图芯之类的还是拉倒吧

可能已经习惯了在你的手机上玩游戏

这个手机这么一个小身板

那也是理所当然的 是吧

手机刚刚引入大型游戏的时候

比如当年的《无尽之剑》问世的时候

很多玩家看到那个画面

就我作为一个多年的PC玩家

就凭手机里这么一颗小芯片

它是怎么跑动那些大型游戏的呢?

为了让你在掌心上也能体验到游戏的乐趣

那他们到底做了些什么呢?

从设计思路上有什么根本性的不同呢?

今天我们就来好好跟大家聊一聊这里边的故事

根本上都来自一个在移动端发扬光大的渲染技术

之前我们在视频里已经简单聊过TBR

就是提前把要渲染的整张画面分成很多很多片

移动端为什么要这样渲染呢?

我们首先就得提到一个在手机GPU领域

玩机玩得久的同学一定听说过PowerVR这个名字

它是曾经的行业巨头 Imagination公司

PowerVR最早做的是游戏厅的街机GPU

在那个显卡行业勃勃生机万物竞发的年代

PowerVR之所以能混得风生水起

他们在GPU行业里有着一个独到的技术创新

核心就是我们上面提到的TBR

我们先来看看NVIDIA和ATI这些传统GPU

用的是“直接渲染”的管线

它具体是怎么工作的呢?

首先 游戏运行的第一步

CPU会告诉显卡需要绘制什么东西

比如你要绘制一个立方体

这些指令通过图形接口和显卡驱动来传递

它里面会包含物体的三维坐标

顶点连接关系等等重要信息

这些数据会被存在显存里面

会把物体的三维坐标“翻译”成屏幕上的二维投影

相当于从某个角度去看一个三维模型

然后把它拍成一张平面的图片

GPU需要把它切割成无数个小格子

这个切割过程叫做“光栅化”

GPU还要决定每个像素的具体颜色

像素着色器会根据物体的材质啊

纹理贴图以及光照效果

计算出每个像素该显示的颜色

所有像素的颜色都确定好后

这些数据会被写入帧缓冲区

然后就能展示出一帧完整的游戏画面了

就是GPU和显存之间的数据交换非常频繁

尤其是在后半段像素着色的时候

有大量数据需要在显存和GPU间来回传递

这就带来了两个大麻烦

一是显存带宽不够用了

二是显存功耗会非常高

它的显存给得够大够宽

包括街机 游戏机 移动设备

还有各种各样对成本敏感

对空间和散热敏感的产品来说

就很难喂饱吞吐量巨大的 GPU

PowerVR多年来就是在耕耘街机游戏机这些市场

人家的GPU最擅长的就是花小钱、出小力、办大事

率先引入了一种全新的渲染技术

但是你不直接一笔画完整个画布

而是把它切分成很多小块

整个场景的数据都要一次性送往显存

屏幕被切割成了很多小“块”

你可以把这些Tiles想象成一个个小“存储箱”

每个箱子里都存放着和这个区域相关的几何信息

然后为了避免浪费资源

TBR管线里也会用到另外一些技术

来先计算物体之间的遮挡关系

判断哪些部分在视野中是不可见的

就没必要去计算了 对吧

TBR会在每个Tile内部进行光栅化和着色

在现代GPU引入缓存机制之后

所以Tile上着色完的像素信息

是用不着立即传输到显存的

而是可以保存在GPU内部的缓存中

在需要的时候就能低延迟地调用

执行完透明度测试和后期深度测试后

GPU才把这个 Tile 渲出的一小块画面

送进显存的帧缓冲队列里面

TBR就可以节省海量的传输消耗

虽然切割Tile这件事情本身

也要消耗一些额外的资源

但和节省下来的性能功耗比起来

另外 TBR还有一个特别的优点

就是它对诸如MSAA这样的抗锯齿技术非常友好

开启抗锯齿会增加显存占用的

对需要做抗锯齿的物体的边缘读写4倍的framebuffer

但用上TBR之后就不需要直接在显存上读写了

就可以用更低的规格 少得多的内存带宽

实现不逊于竞争对手中档GPU的性能

他们当时推出的KYRO架构的显卡

确实都是瞄着性价比去的

我们之前就做视频聊过

英伟达在1999年的GeForce 256上实现了硬件T&L

直接在性能层面降维打击所有对手

甚至连3dfx这种巨头都败下阵来

最终PC显卡行业只留下了NV和ATi两根独苗

PowerVR也是在这个过程中被淘汰了

和最新的DX8接口的支持上慢了NV一拍之外

当时的开发者也普遍不太喜欢他们的TBR管线

可能由于驱动写得比较烂的关系

很多时候需要做额外的适配工作

然后他们显然也做不到跟NV正面硬刚性能

用在成熟的桌面显卡市场大家不愿意去配合

那如果用在一个不成熟的新市场

是不是一开始就能被大家接受呢?

PowerVR就瞄准了一个从来没人挖掘过的新方向

彼时的手机还刚从大哥大演进为彩屏呢

毕竟以当时人们的认知

他们做移动GPU一方面是看好便携式游戏设备

他们觉得未来手机会有越来越复杂的图形界面

手机这样重交互的设备

厂商一定会做出各种2D 3D的系统动画效果

这些交互动画会需要很多图形算力

仅仅凭借当时ARM9处理器那点CPU性能恐怕没法满足

给手机配备专用GPU绝对是有意义的

又特别适合用在手机上

因为手机恰恰就是缺内存带宽

实现手机上可用的图形效果了

世界上第一款手机专用GPU诞生了

这家伙后来被搭载在了很多的设备上

当时手机处理器的业界标杆

那使用这款芯片的最最经典的机型

N95在当年是真正的旗舰机皇

我上学那会同学里有富哥买了N95的

指望人家开恩借来玩一玩

用于支持iPhoneOS的界面动画和游戏娱乐

诺基亚的塞班旗舰和苹果的全触屏新机

这两个业界标杆都先用上了GPU

PowerVR算是借着智能机的东风

让GPU从CPU手里接管了顶点处理和光照计算

手机上也第一次拥有了可编程渲染管线

TBR的渲染流程也受益于此

可以更早地开始遮挡剔除的判断工作

SGX5这代GPU甚至可以说是现代移动GPU的开端

它也被用在了更多的设备里

摩托罗拉里程碑等一众

采用三星和德仪处理器的安卓机

甚至英特尔的Atom处理器里

应该有不少同学以前玩机的时候也接触过

这段时间也是Imagination混得最好的一段时间

手机图形标准也在慢慢完善

OpenGL专门为移动端做了ES标准

去适应低功耗低带宽的设备

所以其中很多优化就和TBR的特性契合上了

而其它厂商看到TBR技术很管用

从一开始就使用了TBR管线

而高通的Adreno就有点特殊了

他们最早是从ATi手里买来的IMR的GPU

正是 PowerVR 和他们发展的 TBR 技术

塑造了今天手机端的游戏渲染管线

既然TBR技术看起来如此多快好省

为什么当时的NV和ATI不去用它呢?

桌面端的独显不也可以受益吗?

哎 这个事情还是有点复杂的

除了我们前面讲到的PC开发者先入为主之外

TBR其实也有一些实打实的缺点的

TBR 这一套流程能够有效执行的前提

是前面切Tiles切片来处理顶点的代价

要小于后续处理整张图片的代价

切片行为本身不能消耗太多性能

很多时候游戏的模型做得太复杂

那么TBR的优势就会被削弱

并不会有意识地去考虑这件事

比如可能会给模型减面

尽可能让TBR发挥出更高的效率

TBR在特性上是比较依赖GPU自带的缓存的

但是像PC游戏上的环境光遮蔽啊

全局光照甚至光追这些进阶技术

往往都要借助其他数据

来协助计算现有Tile上的结果

这种时候本地缓存就没用了

因为还是要写回显存再读取出来

来给大家玩一个有意思的互动的小东西吧

这次我们也写了一个小软件来检测渲染顺序

在像素着色器的每次调用里

然后超过固定的数量就停止渲染

我们就可以知道你的GPU是按照什么顺序

给画面上的像素着色的了

这个小程序我们也作为一个课堂教具

大家可以自己下载下来玩玩看啊

来 你看 我们现在用的是一个桌面GPU

也不是像前面讲的那种严格的

严格地从上往下 从右往左去着色

也有一些分块的现象出现

GPU 还是按照一个个图元的顺序来处理

所以这个肯定不属于 TBR 的范畴

高通的 Adreno 就有点不一样了

它似乎在这种帧缓冲比较小

条件比较简单的情况下

转而去使用它 GPU 自带的大缓存

来直接执行类似 IMR 的步骤

而即使在几何比较复杂的时候

它在 Tiles 里也是先执行了类似于 IMR 的操作

先算好每个图元的可见性

再去给每个像素着色的

但是各家的方案还真是有点不一样的

OK 相信你看到这里也大概清楚了

TBR 是在移动端 SoC 硬件能力受限的背景下

诞生的一种丢芝麻捡西瓜的渲染策略

还是让用户能在手机上顺利地玩游戏

也并不只是出现在手机上

这几年来 我们熟悉的桌面端显卡

从英伟达的Maxwell也就是9系卡开始

就是把更多数据交换留在L2缓存上

来减少显存带宽的压力

如果硬件资源并不匮乏的情况下

像高通 Adreno GPU 在我们的测试里就是能伸能屈

当然前提也是它有尖端制程的大容量缓存加持

逐渐阔绰的移动端并没有忘记 IMR 的绝对性能

而多年来大手大脚惯了的桌面端

其实背地里也已经开始勤俭持家了

我觉得它们在技术上的更迭

其实都是为了更好地发挥硬件性能

我们关于手机GPU渲染管线的科普就告一段落了

但是希望大家看完能有所收获

不知道大家等会儿玩游戏的时候

会不会突然开始在意起这个画面

到底是怎么渲染出来的呢?

如果你觉得这期视频有干货的话呢

也别忘了关注我们频道 极客湾

那我们就下次再见了 拜拜

分享 举报

文章很值,打赏犒劳作者一下

打赏 “首席”打赏官正虚席以待! 关注
声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。