如何評價 Apple 為 iOS 8 推出的 Metal 圖形 API?

參考

Metal Programming Guide: About Metal and this Guide

Metal Shading Language Guide: Introduction


自答補充一下自己的想法:

  1. Apple的軟硬體平台本身不開放,無須使用Android所需的OpenGL ES標準。除了跳過一些跨平台層的適應性介面可以提升性能,從商業上考慮,同一跨平台遊戲在iOS的表現較運行Android的好,即使硬體是一樣的。估計未來評測君可大造文章了。
  2. 提升性能估計應該是減少CPU方面的額外開銷,並且在CPU上可以預先進行一些工作(例如shader編譯、預先組建command buffer)等。這些有可能也能減少GPU閒置時間。但這些性能優化,可能更重要的是令硬體更連續地工作,減少耗電。對於draw-call多但shader簡單的2D遊戲來說可能更明顯。
  3. 以前iOS和Android遊戲開發可以統一使用OpenGL。現在需要更改引擎,雖然對支持跨平台的引擎來說不會太難,最麻煩的是shader的移植。為了支持A7前的設備大概要兩套shader。可能會出現HLSL/GLSL/MSL的cross-compiler,或是要從更high level的語言編譯成這些目標語言。


如果你和一個人合作,必須圖兩條,至少之一。第一是這個人確實有能力,或者是這個人抓了你的把柄。那麼我們談談 Apple 為什麼要和 Khronos 合作(或者為什麼最終決定放棄合作)。

談能力的話,Vulkan 是人們在 OpenGL 2.1 時代對 Khronos 即將推出的 3.0 的期待。現實中是到了 OpenGL 4.4,Khronos 撐不住了說我們以前的 APIs 都廢了吧重新做。做出來了又怎麼樣?早就失去信任了。所以拿 Vulkan 的具體功能去談問題,都是極端不了解歷史的體現。

談把柄,Apple 讓 macOS/iOS 離開 open standard 當然有代價。可是 Apple 放眼一看,Unreal 什麼的對多 APIs 支持的不錯啊。而且大家發現寫 graphics 程序和別的東西不一樣,寫別的東西的時候最開始直接用 button handler 或者 bitmap pointer 都能應付一陣子,寫 graphics 的時候你直接用 texture ID 試一下?寫不出 200 行邏輯就亂掉了,所以你必須上來就自己寫一個 texture 的封裝。個人開發者,這兩年被 OpenGL 虐的,其實代碼里也早有同時支持 GL 和 DX 的適配層。那 tm 還有什麼把柄啊!

Khronos 對於 Apple 來說,是一個即缺乏能力,又不掌握任何把柄的合作方。Apple 沒有意願與其合作。


其實跟DirectX12沒有本質區別。都是把圖形介面搞成了類似console的樣子,通過允許用戶預創建命令列表來給驅動預先初始化的機會,從而減少驅動層面的CPU開銷,將絕大多數CPU工作交給應用靈活處理。都是一樣的東西,每個廠商都搞自己的硬體層API只會給開發者帶來麻煩而已。另外我覺得現在關於圖形介面實在是過度炒作。其實都沒啥內涵。


其實我覺得這個使得app更像遊戲主機了,至少在圖形上進一步,支持更多直接訪問底層硬體的操作,因為opengl或者ios的圖形庫在手機晶元上跑,開銷還是太大,所以需要開放更多直接訪問。

當然和遊戲主機直接跑在內核模式,圖形庫全靠遊戲自帶,你要樂意的話完全自創圖形API還是差得遠


從llvm到swift到metal,君不見這些都是apple的封閉商業理念結果么?從圖形api這個本身來說,opengl也好,dx也好,mantle也好,metal也好,性能不會相差太多。gl api要用的好相對難一點,但每家shader優化都是個痛。metal不會多好,但是apple可以對opengles支持的差一點,結果就是在apple平台上gl死掉,metal獨霸ios。將來的格局就是

GL android, pc cad, steam, ps4

DX pc gaming, xb1

Mantle, pc gaming

Metal, apple

看看apple那麼點市場份額,就算在ios全面制霸metal,也改變不了什麼圖形的大格局。


Metal不是為了取代OpenGL或者對抗DirectX的。

Apple設計Metal向下是為了進一步壓榨硬體性能。加強針對硬體的定向優化。向上籠絡各大遊戲引擎提供商,引入廣泛支持。

說到底這是進軍客廳,對抗遊戲主機的戰略儲備。雖然目前的A7還不能完全跟PS4、XO這樣的次時代主機比肩,但是憑藉定向優化,超越一切同時代Android解決方案還是遊刃有餘的。事實上PS、Xbox這樣的主機能賣很多年不換芯主要就是靠定向優化。Metal這招算是師夷長技以制夷。

另外:預計短期內Metal不會很快登錄OS X。Macbook系列硬體滿負荷運轉後散熱還是太吃力了。

補充 1:定向優化為什麼不可以是針對OpenGL的?

OpenGL現在面向移動設備的主要標準叫OpenGL ES。這個標準是通用標準考慮到了廣泛的兼容性。但是作為倡導硬體嚴格為軟體服務的蘋果,為了強化自己的軟體平台,裁剪公共標準,增補自身優勢已經成了必須的手段。既然已經自創了A7這一處理器標準,那還有什麼理由不動OpenGL呢?

補充 2: @澤淹的問題:會不會移植到桌面?

我個人認為,短時間內看不到希望。理由有兩方面:

首先,Mac仍不是良好的遊戲設備。在當前整個Mac產品線中,幾乎所有設備內部空間都設計的十分緊湊。雖然Mac Pro的表現不詳,但是Macbook、iMac的發熱和滿負荷時的噪音都讓人沒法享受遊戲樂趣。

其次,Metal主打的就是定向優化,而目前Mac系列產品則是開放式的硬體組合。CPU和顯卡每一代都會有所不同。不利於定向優化。而且,在遊戲主機中所使用的CPU和GPU都是經過細緻的定製,與零售版相近型號也有所不同。即便是針對某一特定型號,優化的意義也不大。相比之下硬體進化趨於平穩的iOS平台更適合Metal。


OpenGL-ES 前途堪憂,坐等 Google 來補刀。

Metal 很可能會上 Mac。Metal 和 Mantle 有關係么?長得像,名字也像。

Mac 又是用的 AMD 晶元。(誤,只有 Mac Pro 用 AMD)

寫遊戲引擎的開心了,一年內支持了兩個新的 API。

MSL 長得很像 HLSL。

Metal 是 Obj-C 的,不過考慮到只能在蘋果平台使用,也無所謂。

(待續)

2015-0902 更新,Metal 果然上 Mac 了,Google 果然補刀了,我真是神預言。


apple重新發明了Direct3D和DirectCompute


至少我更新了IOS8,更新了狂野飆車之後發現那效果提升的非常明顯。


以我這幾天看到的資料

metal是和opengl並行的

也就是說不是替代的關係而是並存的關係

好處在於執行效率很高,如果要舉一個不恰當的比方,比如你小時候的傳話遊戲,你對相鄰的人說一句話,然後一個一個傳,再問最後一個人第一個人說了啥。

opengl就相當於你隔著5個人傳話

metal可能相當於隔著2個人傳話

雖然並不完全是一樣的情況,但是執行效率大概是這樣子

但是metal另外一個問題在於支持的人不算多,以及是新東西

發布會上顯示也就虛幻4、寒霜(沒說是寒霜多少)、Cry還有unity

其實ipad和iphone這麼多年了,虛幻沒多少真金白銀,unity才是潛在最大的贏家

但是支持歸支持,很多人願不願意做就是另外一回事了

總結一下:有發展總歸是好事,只能這麼說,事情肯定不會變壞,不會因為有了metal,ios的遊戲反而變差了,但是到底能不能變好,也不好說。

另外,蘋果都說了,專門針對a7深入優化的,5s、air、mini2以下的人都洗洗睡了吧,和你們沒關係


有沒有可能是為了將A7晶元用於macbook之類的平台做鋪墊呢…


和 PlayStation 4 GNM 一個節奏


SCE在ps3上搞libGCM, amd在R顯卡上搞Mantle, 微軟搞close to metal的Direct3D 12....

蘋果這套算是業界技術潮流方向的一個體現吧


移到 mac os 上 N卡是如何支持的?老黃不會給開發驅動吧?還是蘋果就範讓老黃干。。


引用樓上 劉義 大哥的話

Matel的確是一個好橋梁,但希望Apple的出發點真的至想搭好這橋梁而不是想獨立特製自己的規範在藉由市場壟斷而胡作非為,Apple和Google到底誰為地球的永續資源和人類文明付出比較多...


這讓u3d,ue 等商業引擎的優勢更大了

針對apple家做訂製的引擎模塊,這又是而外的工作和風險。


Metal的出現是為了終結ios平台的opengles 的,因為apple想要hold住自己的圖形管線渲染層。

你仔細看看ios平台上的遊戲,真正用opengles的已經不多了。現在的情況是很多大遊戲商的遊戲引擎都metal化了。

另外,3D的渲染效率和*R的發展也需要新的渲染框架api出現,來解決問題。。。。

metal的好處不只是簡單的gpu提升,還包括cpu的指令線程優化。Github上已經有類似的圖像圖形處理框架可供使用了,如MetalImage之類的,樓主可以去看看。

https://github.com/erickingxu/MetalImage.git


推薦閱讀:

為什麼 iOS 圓角四邊形圖標在放大和縮小過程中圓角有一個較突然的收縮過程?
iOS 的內存管理和虛擬內存機制具體是怎麼運作的?
iOS開發中用過的優秀三方庫?
剛買 iPad Air 2,已越獄,應該幹些什麼?
iOS 8 和 OS X Yosemite 的 Continuity / Handoff 特性有何使用場景?

TAG:計算機圖形學 | iOS8 | Metal |