【Arm 專欄】Arm 如何與生態系夥伴合作開發光線追蹤手機遊戲?

光線追蹤 (Ray Tracing) 是一種電腦繪圖的技術,藉由模擬個別光線在場景四週投射的路徑產生逼真的光照和陰影,透過 Arm、聯發科技與騰訊的合作,將為行動遊戲玩家實現逼真的遊戲體驗。
評論
Arm 提供
評論

光線追蹤 (Ray Tracing) 是一種電腦繪圖的技術,它透過模擬個別光線在場景四週投射的路徑來產生逼真的光照和陰影。這項技術已經存在數十年,並且可以產生高度逼真的效果,但是直到桌上型 PC 於 2018 年導入硬體加速的光線追蹤後,才開始為遊戲帶來即時光線追蹤體驗。最新世代的遊戲主機加入硬體加速功能,使得遊戲開發商在他們的遊戲作品中,能善用光線追蹤技術,產生令人印象深刻的視覺效果。這項技術可以在《要塞英雄》、《當個創世神》、《電馭叛客 2077》、《蜘蛛人》、《拉捷特與克拉克:時空裂縫》等遊戲中看到。

根據市調公司 Newzoo 報告指出,高解析度行動遊戲正在全球各地快速成長。在中國,高解析度行動遊戲作品的營收佔比從 2016 年的 42%,到 2020 年成長至 70%。在北美洲,佔比則從 2016 年的 6%,成長到 2020 年的 33%。有鑑於市場對於複雜的遊戲的需求越來越大,開發人員已經開始思考如何迎合受眾的需求。

不過,天下沒有白吃的午餐,即便當硬體加速時,使用光線追蹤的開發人員仍必須小心地在視覺品質與最終幀率之間取得平衡,以便為玩家打造引人入勝的體驗;即使光線追蹤技術已經比以前更有效率,但它仍會消耗可觀的電力。

當我們開始探索把光線追蹤技術應用到行動裝置內容時,瞭解品質、每秒幀數與功耗間的平衡相當重要,原因是適用大螢幕、高功耗的桌上型與電玩主機的內容,不適用於行動市場,因為行動市場的螢幕較小(但畫素密度很高),且電池續航力極大化是留住玩家的關鍵。我們還必須考慮在市場各種多元行動裝置上進行的遊戲類型,光線追蹤可能會讓人賞心悅目,但逼真的光影能否讓你在挑戰行動裝置極限的高度競爭多玩家遊戲中取得優勢呢?行動裝置開發人員服務的社群是否會歡迎這樣的做法呢?

這些是必須回答的問題,而現在就可以開始了!Arm 正著手為全球最受歡迎的行動繪圖處理器 Arm Mali 促成光線追蹤功能,包括現今玩家手中的數十億個裝置。此外,在 Arm Vision Day 舉行的「下一代的 Arm 架構」影片中,Arm 已經宣布未來的 Mali GPU 將提供硬體加速,可以在行動裝置上顯著提升光線追蹤技術的效率。另外,Arm 最近也發表最新世代的 Mali GPU,包括與 Arm Mali-G78 相比效能與效率提升 20% 的 Mali-G710。

在這篇文章中,Arm 會解釋其如何持續開發具光線追蹤功能的行動遊戲內容,以及如何與像騰訊及聯發科技等合作夥伴攜手合作,讓開發人員更容易探索光線追蹤可以為行動遊戲世界帶來的好處。

標準的 API;優良的開發人員體驗

驅動全球智慧手機的 Arm 技術,藉由合作夥伴取得授權後進行配置與擴充,並製造出橫跨所有地理區域、價格點與手機外型的多元裝置。全球 28 億的行動遊戲玩家促成規模達 907 億美元的行動遊戲市場,而遊戲開發公司也瞭解營收若要極大化,必須極大化他們的潛在市場,例如,《Free Fire - 我要活下去》之所以大獲成功,部份原因是這款遊戲佔用的記憶體與下載的檔案大小都不大,因此可以應對 97.4% 的市場,並在 2020 年擄獲超過 6.66 億名用戶。Arm 的合作夥伴 King 公司也指出,他們之所以能夠把電玩主機界最受肯定的系列遊戲《古惑狼:全速沖鋒》導入行動市場,關鍵的一點是透過擴充性與優化產生大眾市場訴求。Newzoo 最新的報告也進一步強化這點,並描述遊戲作品的規格如何影響接受度與潛在市場。

Arm 提供

想要讓遊戲開發人員的工作更易於管理,重點是要在各種裝置間達成標準化。2020 年 11 月發表的 Vulkan Ray Tracing 擴充技術實現了光線追蹤的標準化,讓 Arm 與合作夥伴可以依據其 API 協同一致,確保具光線追蹤功能的內容可以在 Arm 生態系中的各種裝置間移植,不會有功能性問題。

硬體架構師有義務指導軟體生態系如何讓行動裝置發揮最大作用,而 Arm 也相當認真看待這個責任,Arm 已經把 Vulkan 樣本捐贈給國際標準組織 Khronos,為 Android 作業系統開發免費的效能分析工具,並針對繪圖開發人員推出廣泛的教育訓練內容。Arm 正在引領行動光線追蹤的發展,並透過與聯發科技及騰訊的合作,讓生態系作好迎接這項技術的準備。

啟動調查的軟體實作

Arm 目前正在開發 Vulkan 光線追蹤API 的軟體實作,特別是 Ray Query 的元件,這為行動裝置開發人員在他們的遊戲中增添光線追蹤效果提供了一個最簡便的方法。這項實作已經開發為 Vulkan Layer,開發人員在運行時可以把它載入,以便在選用的平台上無縫地為繪圖驅動程式增添光線追蹤功能。

這項結果可在 Arm 內部開發人員的 Bonza Demo Video 中看到:

在此影片中,Bonza 在搭載 Mali-G78 的裝置上運行,利用光線追蹤來產生所有的陰影。在這個室內場景中,您可以看到兩種光源:來自戶外的陽光(您可以看到來自窗戶的陰影穿過走道),以及一個室內點光源,以協助凸顯焦點 Bonza 雕像的陰影效果。無人機在這個場景中移動,教導我們如何更新 Vulkan Ray Query API 用來判定特定光線照射處的加速結構,這點相當重要的原因是,現代的遊戲已非靜態,因此任何光線追蹤的實際應用都必須與遊戲中基於物理架構的可銷毀地形場景配合使用,例如《戰地風雲 5》遊戲。

除了 Arm 針對動態陰影方面的工作之外,騰訊一直在尋找產生柔和的淡陰影的有效方法,以及使用 Ray Query 來改善環境光遮蔽的品質。這是一種繪圖技術,它藉由近似特定點周圍的幾何量來增加場景逼真度,因此環境光線的數量將落在這個點之上。

騰訊遊戲引擎技術事業群副總監 Nan Wei 表示:「想想照明如何在人類以視覺體驗真實世界中扮演不可或缺的角色,即時光線追蹤被公認為是我們這一代電腦繪圖上珍貴的技術,在我們的工程師與美術人員投注大量心力,以及在聯發科技與 Arm 的鼎力相持下,我們已經準備好開啟由革命性的光線追蹤技術賦能的高傳真行動遊戲的下一個篇章。」

您可以在騰訊最新的部落格,閱讀更多有關騰訊針對行動裝置光線追蹤採取的方法。

這些展示雖然仍在持續發展中,但它已經教會了我們很多有關如何為行動裝置打造優化的光線追蹤內容,不管硬體能多高效地處理 Ray Query,還是會希望:

  1. 盡量減少實現特定視覺效果所需的光線數量;
  2. 隨著物件在場景內移動、創建或銷毀時,有效率地維持您的加速結構。

欲瞭解更多技術細節,請觀看 Arm、騰訊及聯發科技於 2021 年 7 月遊戲開發者大會 (GDC 2021) 的演講。在這場演講中,概述了 Arm 在軟體模擬層的工作,以及正在開發中有關行動光線追蹤的最佳實務作法。

為了進一步協助生態系統及相關技術的應用,聯發科技為開發人員推出 MediaTek RTSDK, 其強大的 Dimensity 5G 晶片組運用於全球數百萬支智慧手機,為開發人員提供了廣大的用戶群,可以隨時體驗新的遊戲光影、反射與折射等視覺效果。 MediaTek RTSDK 與 Khronos 標準完全相容,讓 PC 開發人員可以順利遷移至行動平台,提供一個創建核心光線追蹤功能的管道,包括路徑追蹤、螢幕 - 空間觸動的光線追蹤陰影(避免陰影 - 圖形的鋸齒問題)、多重反彈折射(避免物件排序)以及任意表面反射。

「與 Arm 及騰訊的合作使我們能夠將光線追蹤等先進的繪圖功能導入我們的 Dimensity 5G 晶片。遊戲開發人員使用我們嶄新的 RT SDK 解決方案,可以輕鬆地為他們的遊戲更新與增添全新的功能,並強化遊戲體驗。」,聯發科技運算與人工智慧技術本部協理曹友銘博士說。「由於全球數百萬支智慧手機已經搭載 Dimensity 5G 晶片,透過我們先進的技術為廣大的消費者帶來最栩栩如生的視覺效果。」

即將於 10 月 19 日到 21 日線上登場的 Arm DevSummit,將有更多有關光線追蹤的內容。DevSummit 是免費參加的,並包括一系列精彩的技術演講,特別的是有許多針對繪圖與行動裝置開發人員的演講,同時也涵蓋雲端、汽車、物聯網、人工智慧、高效能運算與硬體設計。可以在這裡報名,並能提早於 10 月 6 日開始率先觀看「科技中心」超過 60 個隨選隨看影片,立即報名以保留席次。

責任編輯:Mia
核稿編輯:Anny




開發者享受 CI/CD 價值!運用 Amazon EKS 整合 GitLab 創建自動化部署

企業如何在 Amazon EKS(Elastic Kubernetes Services)上使用 GitLab 創建自動化部署,減輕人力負擔,提升專案服務運作效率?
評論
評論

所謂現代化智慧 IT,所有工程師最希望的境界,莫過於只要輕鬆點幾下設定,系統就會自動跑起來,管理者再也不用隨時待命在機台旁邊,從此工作悠哉又快樂!儘管這樣情境還沒到來,但隨著敏捷式開發的流行,除了 DevOps 人員,有越來越多開發者將 CI/CD 概念融入到工作流程當中,例如從 build code、執行 unit test、到部署應用程式。

打造第一個在 AWS 上的應用程式

上述種種反覆步驟自動化執行,也就能提昇服務品質、主動通知開發人員以減輕人力負擔,讓專案服務能持續運作。

其中,GitLab 是執行 CI/CD 常用的工具之一,也是開發者使用程式碼儲存庫的地方。為了讓 GitLab Runner 在雲端快速實踐 CI/CD,《AWS 開發者系列》透過影片分享,如何在 Amazon EKS(Elastic Kubernetes Services)上使用 GitLab 創建自動化部署。

以下節錄工作坊影音內容,幫助開發者快速理解如何運用 Amazon EKS 的高可用性且安全的叢集,將修補、部署節點、更新等關鍵任務,全部做到自動化設定。同時影片也會示範 Amazon EKS 搭配 GitLab 如何展開自動部署,幫助工程團隊實踐 CI/CD 價值。

Amazon EKS 對容器管理輕鬆簡單、維運省時省力

容器化服務越來越興盛,當容器(Container)越來越多,在複雜的微服務(Microservice)系統環境之下,運維團隊的管理成本可能相對會增加不少,為了有效調度容器部署, 導入Kubernetes 無疑是近年企業熱門的話題之一。

建構 Kubernetes Cluster 流主要可區分兩大塊,一是安排容器調度的Control Plane、另一則是容器運行時需要用到的 Worker Node。

Control Plane 裡面涵蓋有儲存狀態的 ETCD、CoController manager 、Scheduler 的調度管理、甚至是操作時進行互動的 APIServer,若是自己創建 的 Kubernetes Cluster ,需要自己安裝這些元件,後續仍需要對 Control Plane 進行相關管理、維護、升級工作。為了減少上述 Components 的繁複維護,在透過 AWS EKS 代管的 Kubernete Control Plane 部可以獲得以下三大好處。

透過 AWS 增加雲端技能 在組織發揮影響力

Amazon EKS 一鍵式部署,展現三大優勢

第一,Amazon EKS代管的 Control Plane實踐了跨AZ的高可用部署,使用者不需要擔心單一節點故障的風險。

第二,Amazon EKS 支持至少四個 Kubernetes版本,持續跟進每季 CNCF 的發佈,同時 EKS 也完全符合上游 CNCF 規範。

第三,部署 Amazon EKS 之後,可直接使用 AWS 平台上現成的服務工具,在安全性管理、網路設定方面,可以做到無縫整合。

最後 AWS 台灣解決方案架構師也提到,若想在容器環境進行 CI/CD 及應用程式的管理,可以進一步透過 IaC 整合部署 Amazon EKS 叢集,透過使用 Console、把 EKS 變成 Cloudformation 的模板、使用 AWS 所開發出來的 eksctl.io、或指令是採用 AWS CDK 可以讓開發者用自身熟悉的語言,在 AWS 平台整合 CI/CD 工具進行維運及部署 EKS。

了解 Amazon EKS 整合 GitLab ,獲得三面向價值

對開發者而言,想把 Amazon EKS 整合到 CI/CD 工具之一的 GitLab 平台上,可以看到那些實際的優勢?

在 DevOps 開發者示範工作坊當中,GitLab 資深解決方案架構師指出,GitLab 使用到 Kubernetes 技術,主要有三種搭配方法,包含 GitLab Server、GitLab Runner、以及創建 Deployment Environment。

本次示範教學會主要聚焦在 GitLab Runner 如何採取 Auto-scaled 方式進行 Build、Test、Package Apps;以及在 Deployment Environment 運用 Kubernetes 技術,做到 Auto Deploy、Review App。

正因為 Amazon EKS 能夠在 DevOps 過程提供所需要的彈性計算資源,幫助開發者在 GitLab 平台上面獲得以下三個層次的優勢:

  • 在 GitLab 內建的部署工作流程當中,自動生成整套 CI/CD 最佳實踐腳本。
  • Review App 過程,從 Merge Request 中可直接訪問應用程式 /App 的 UI 介面,並且根據 Git branch 名稱、專案名稱,自動生成 Review App 的 URL,以及在 Merge 前的最後防線進行 Approval 檢查。
  • 加速 CI/CD 流水線,GitLab Runner 運行時候還可藉由 Amazon EKS Cluster 進行 Auto-scaled 的支援。

Amazon EKS 整合 GitLab ,需要兩大流程

影片最後,GitLab 資深解決方案架構師示範如何把 Amazon EKS 整合至 GitLab 執行 Auto Deploy,主要可分為兩大區塊流程,第一部分聚焦在 Amazon EKS cluster 的設置,第二部分則執行 Auto Deploy 設置。

第一塊可拆分為四個階段,首先教學怎麼創建 EC2 節點的 EKS cluster,第二階段示範把 EKS Cluster 連接到開發者的 GitLab Instance、Group 或 Project,下一步則使用 Cluster Management Project Template 創建一個 Cluster Management Project,以及最後一階段透過 Cluster Management Project 自帶的 Helm Chart,安裝在 Cluster 所需要的內建 App。

第二塊執行 Auto Deploy 設置,針對需要部署的 App 創建一個 GitLab Project,接著再把 gitlab-ci.yml 添加到 Project,並從 Web IDE 選擇及導入 Auto Deploy 的 CI 模版,讓 GitLab 自動生成最佳實踐的整套流水線。

幫助開發者更了解 Amazon EKS 整合 GitLab 的 QA 系列

Q:使用 Amazon EKS 之後,如何更有效率或優化資源去配置 Worker Node 的機器數量,以及如何有效空管開發維運的成本?

A:Kubernetes 除了本身有 HPA(Horizontal Pod Autoscaling)可根據使用程度自動調整資源流量,另外也能延伸使用 AWS Auto Scaling 方案,針對可擴展資源去設定自動擴展管理。另外在成本管控,雖然 Amazon EKS 會收取額外管理費用,但可透過 AWS 平台的 Calculato r計算每個 EKS 的價格,你會發現自動化部署及管理的費用,相對工程師人力的成本更加便宜。

Q:越來越多客戶考慮把現有 Application 變成容器部署,大多是爲了加快部署的效率,那麼變成容器模式之後,對 CI/CD 的工作流程有什麽影響嗎?

A:運用容器技術最直接的效果,可以讓應用程式的環境更一致化,例如 testing 環節、stage production,讓容器避開一些差異問題。至於 CD 部分要 delivery 一些 usage 不太一樣的時候,容器會幫忙做配置,所以 CI/CD 對容器的效益是相輔相成的。

Q: 客戶在開發流程漸漸會把 Infrastructure 變成代碼或文檔,是不是可以把程式碼跟現有的應用程式的 CI/CD 流水線整合在一起,達到一套完整的 CI/CD 部署流程?

A:觀察目前市場作法,主要分成兩個階段去做整體部署。如果規模比較小的團隊,會把 Infrastructure 代碼跟 App 代碼分開,在管理上會比較靈活;如果企業規模比較大,會有另外一個 Infrastructure 團隊來控制部署事情,這種情况之下,APP 的項目會生成一個 APP package,主要做到 delivery 這個階段爲止。而 Infrastructure 的項目會指定把需要版本的文檔,部署到他們的 Kubernetes Cluster。

填寫表單 找到適合的快速上雲服務與工具!