开发中的“软”与“硬”:高画质移动游戏开发之道
在今年的Unity亞洲開發(fā)者大會上,高通公司半導體事業(yè)部資深經(jīng)理劉曉光從硬件芯片、引擎優(yōu)化、OpenGL ES 3.0支持,以及開發(fā)工具等角度,分享了如何軟硬件雙管齊下,開發(fā)及優(yōu)化出優(yōu)秀的移動游戲。
高通公司半導體事業(yè)部資深經(jīng)理劉曉光
高通深植無線領(lǐng)域已逾25年,一直引領(lǐng)無線領(lǐng)域的創(chuàng)新,到目前為止芯片出貨量已超過150億。高通僅2013年在R&D方面投入了50億美元,這在所有高科技公司中,每年50億美元的R&D投入是非常大的。劉曉光表示“到目前為止高通擁有超過84000多個合作伙伴,我們的市值也已經(jīng)達到1280億美元。”
到現(xiàn)在為止高通覆蓋了市場中超過1350款終端,而且還有500款正在緊鑼密鼓地研發(fā)過程中。截止至目前,與已經(jīng)有超過100個廠家采用高通處理器研制手機。
采用高通Snapdragon的平板電腦
高通和微軟進行了深度合作,在Windows Phone領(lǐng)域中,高通是最大的供貨商,100%的Windows Phone都是采用的高通處理器。同時,我們也是最先支持Windows Phone和Windows 8的芯片供應(yīng)商。到目前為止,已經(jīng)有超過50款Windows Phone和RT設(shè)備面世,將來還會有更多Windows Phone平臺設(shè)備會應(yīng)用到高通處理器。
移動游戲與芯片
移動游戲這幾年的發(fā)展突飛猛進,其增長率甚至超過了整個游戲領(lǐng)域增長率。據(jù)Gartner分析報告顯示,從2013到2015年,移動游戲領(lǐng)域收入將會翻倍,實現(xiàn)從132億至220億美元的增長。而且將會有更多的游戲開發(fā)商和設(shè)備生產(chǎn)商被吸引至移動平臺上來。到底是什么使移動游戲如此流行?劉曉光認為真正原因還是用戶體驗。如果對比2010年狂野飆車的界面和2013年狂野飆車8的界面,渲染、背景,儼然是兩個時代的產(chǎn)品。
高通的處理器不僅僅是面向高端領(lǐng)域,從低端入門到高端的產(chǎn)品均有涉獵,從低到幾百元的智能手機,到最高端的智能手機,大多數(shù)用的都是高通驍龍芯片。高通驍龍芯片有四個特點,提供最完整的單芯片解決方案,有強大的圖形處理器,以及異步對稱多處理(aSMP)CPU架構(gòu),這是現(xiàn)在很多芯片所不具備的。
在CPU構(gòu)架方面,高通在移動領(lǐng)域上是唯一支持異步對稱多處理架構(gòu)的公司。留意一下關(guān)于手機芯片的新聞你會發(fā)現(xiàn)一個問題,有很多性能比較高的芯片進入市場,但是為什么在手機上很少見呢?那是因為高性能并不是全部,高性能和低功耗相結(jié)合才是剛需。異步處理器,在性能和功耗能效上具備最佳平衡,只有異步處理器,才能保證當手機忙的時候,讓所有的核都工作起來,讓手機性能達到最高,但是手機空閑的時候,不同的CPU可以單獨工作,讓功耗降至最低。
“在SoC嵌入式GPU領(lǐng)域,高通市場份額第一,占有32.3%的市場份額,Nvidia占1.4%,剩下的48家廠商則占66.3%”劉曉光表示,“GPU在移動領(lǐng)域發(fā)展非常迅速,甚至超過了整個PC領(lǐng)域。高通在短短幾年內(nèi),從最早的GPU的Adreno A200開始到現(xiàn)在最新的Adreno A420的處理器,將其整體性能提升了65倍。”
觀眾現(xiàn)場體驗采用高通技術(shù)的平板電腦
基于OpenGL ES 3.0進行優(yōu)化
高通不僅支持從DX9.3到DX11.1版本,也是全球第一個支持OpenGL ES 2.0和OpenGL ES 3.0的芯片,并在GDC上宣布支持OpenGL ES 3.1。
以實例化幾何渲染(Instaced Geometry Rendering)為例,大家繪制比較復(fù)雜的圖形時,經(jīng)常會遇到一些需要重復(fù)渲染的小元素,比如說天上的鳥,地上的螞蟻等類似場景,以前需要對它們逐一渲染,這會占用很多CPU資源,非常耗電。而現(xiàn)在繪制一個實例,GPU可以一次渲染多個類似對象,這讓游戲繪制流暢很多。
對于OpenGL ES 3.0的遮擋查詢(Occlusin Queries)方面。我們在移動設(shè)備做事情講的最多的就是提高效率,我們也想了很多方法來提高效率,比如說有景深的畫面,如果前面的元素遮擋了后面的元素,那么后面的元素是不需要渲染的。而這在以前開發(fā)過程中需要全部渲染出來,做了許多無用功。我們用遮擋查詢,可以讓繪圖效率達到最高,通過查詢簡單的查詢,可以判斷邊界是否被遮擋,比如在做鏡頭光暈效果時,可以查詢太陽是否可見,并且只渲染鏡頭光暈。
另外高通對陰影PCF做了很多優(yōu)化,讓整個陰影更加的流暢,包括延遲著色和光照,對于幾何物體,在第一遍著色時就會被渲染,在第二遍著色時,只有在有光照的情況下才會最終被渲染成像素。可以說,OpenGL ES 3.0開啟了移動領(lǐng)域的延遲光照,這需要GPU支持多渲染目標和浮點紋理。“我們可以同時對多個目標進行渲染,我們的浮點紋理處理性能也非常高。”劉曉光表示。
很多開發(fā)者可能都有過這樣的體會,當你做紋理壓縮的時候,OpenGL ES 2.0就是個惡夢,直到3.0定義了紋理壓縮格式。“希望大家盡快遷移到3.0版本,因為OpenGL 2.0做游戲,要針對不同的GPU做不同的紋理壓縮包。不是讓應(yīng)用體積增大,就是需要你在用的時候下載不同的擴展包。對于小白用戶來說,他不知道自己的手機是什么樣的,也不知道,這個游戲是不是為他所用的設(shè)備生產(chǎn)的,有那么多的下載資源,如果游戲下載到手機上,發(fā)現(xiàn)沒法玩的時候,受害最大的還是開發(fā)者,如果遷移到3.0上的話,這些問題就迎刃而解了。”
對GPU的歷史熟悉的朋友肯定知道,以前GPU曾有兩派,一種是可編程單元式頂點著色器和像素著色器用不同的單元做,另一種則是同一單元可以做頂點著色,也可以做像素著色。各有各的好處,到移動領(lǐng)域,最優(yōu)解是同樣的處理單元可以做不同的工作。現(xiàn)在GPU畫圖時,如果頂點處理的任務(wù)和像素處理的任務(wù),并沒有完全充分利用到現(xiàn)在的處理單元的話,有一部分單元是空閑的。在移動領(lǐng)域最不容忍的就是浪費效率和浪費能耗。
廣泛支持引擎中間件
高通跟很多游戲引擎中間件都有合作,包括包括游戲引擎Unity、Unreal、CryENGINE、Unigine,物理引擎Box2D、havok、Bullet,音頻引擎FMOD、SRS、Dolby、Wwise,以及高級渲染引擎Lighting Engine、Enlighten、ALG、Procedural Texturing,讓開發(fā)者無需接觸GPU開發(fā),可以直接通過這些引擎達到GPU優(yōu)化的目的。
高通針對第三方引擎我們做了很多優(yōu)化,首先是渲染和用戶界面,讓游戲引擎針對我們的GPU進行優(yōu)化,包括最新的API調(diào)用,以及GPU的特性。針對物理和AI的引擎,則讓它充分利用到高通GPU的多線程的特性,并且讓它利用高效的處理單元,甚至DSP以最低功耗最快的速度處理你需要的數(shù)據(jù)。在視頻和音頻方面,讓解碼器用DPS,把最完美的圖像做出來。高通芯片支持所有的網(wǎng)絡(luò)協(xié)議,在LTE Cat6的下載速度可以達到300Mbps的水平,通過與游戲引擎公司合作,讓他們在網(wǎng)絡(luò)層面進行充分優(yōu)化,讓需要聯(lián)網(wǎng)的應(yīng)用或游戲網(wǎng)絡(luò)延遲更小。
Unity CEO參觀高通展位
多種工具助力開發(fā)及優(yōu)化
高通為開發(fā)者提供了Adreno的SDK和調(diào)試工具Adreno Profiler。Adreno SDK在桌面上可以模擬OpenGl ES,高通有實例和教程,可以掌握OpenGL ES的用法。調(diào)試工具對于開發(fā)者來說非常必要,它能夠?qū)PU的利用率進行細致分析。同時,高通還有工具庫,幫開發(fā)者做紋理壓縮和混合優(yōu)化。
大家在開發(fā)過程中可能會碰到各種各樣的問題,以前靠猜問題出在哪兒,甚至走很多彎路。Adreno GPU分析器,它有兩種模式,一個是“洗滌器模式”,在一幀里著色紋理,所有調(diào)用信息實時進行處理,讓你知道繪制這個圖的時候,你的程序給GPU下了什么指令,GPU做的動作是什么。另外一個是“繪圖器模式”,實時監(jiān)視并分析所有數(shù)據(jù),包括每種3D場景,GPU調(diào)用的實施情況,你可以從中知道GPU是否在想要的狀態(tài)下工作。
高通驍龍覆蓋低端、中端、高端移動終端。高通和Unity一起基于高通處理器對Unity 4.3做了優(yōu)化,大家可以享受高通處理器優(yōu)化的功能。同時,高通還未為開發(fā)者提供工具和文檔,節(jié)約開發(fā)時間。劉曉光表示,對于優(yōu)秀的頂級廠商,還有應(yīng)用開發(fā)商,高通還會為大家的應(yīng)用提供更多的展示機會。
總結(jié)
以上是生活随笔為你收集整理的开发中的“软”与“硬”:高画质移动游戏开发之道的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度paddle框架学习(二):使用经典
- 下一篇: Linux常见系统故障