在VR技術中音頻會是一個較好的切入點,給一名VR用帶來更準確的定位。意味著逼真的音頻是在虛擬現(xiàn)實中建立臨場感的重要先決條件。對虛擬世界中的聽者而言,聲音位置準確,也不能創(chuàng)建臨場感。傳統(tǒng)方法不足以創(chuàng)建臨場感的原因是,現(xiàn)實世界的聲學要比這種近似估算的范圍更加復雜。音頻對VR為何重要,AMD又是如何去解決這一難題。
對于虛擬現(xiàn)實中的音頻處理,我們需要一種新的思考方法。在游戲和視頻的多年發(fā)展歷史中,音頻渲染的逼真度標準相對較低,特別是與同時期的圖形和電影視頻渲染相比時更是如此。盡管聽覺固有地具有立體感,但是平面屏幕游戲和電影/視頻的音頻通常是最小化使用3D和其他先進的音頻渲染技術,因為所有的圖形和視頻都呈現(xiàn)在你的面前。當你對著一個2D屏幕時,如果你聽到背后傳來聲音并轉過頭來,你所看到的只是一個揚聲器或者公寓的墻壁。除了部分FPS游戲外,平板電腦或電影的音頻如果過于逼真,其有時會令玩家分神,尤其是如果它不符合視覺體驗。例如,電影院環(huán)繞聲幾乎普遍使用后置和側面揚聲器來實現(xiàn)環(huán)境填充效果,但幾乎從不使用重要的聽覺提示,因為這樣做會分散觀眾的注意力。
但現(xiàn)在頭顯改變了一切。用戶可以轉向任何方向,并看到一個連續(xù)的視覺場景。另外,隨著技術的進步,用戶已經可以在虛擬世界中獨立行走。先進的虛擬現(xiàn)實系統(tǒng)有望為用戶提供一個接近共識現(xiàn)實的臨場感。研究顯示,逼真的音頻是在虛擬現(xiàn)實中建立臨場感的重要先決條件。
1. 逼真音頻的基礎
實現(xiàn)逼真音頻的“秘方”到底是什么?通常來說,通過頭部相關傳輸函數(shù)(HRTF)實現(xiàn)的精確空間和位置音頻渲染足以產生逼真的音頻。如果用戶固定在一個位置或者是置放于“魔毯之旅”上的場景,同時音頻設計師在每個預置聲音中都包含混響、遮擋、反射、衍射、吸收和擴散等所有環(huán)境效果,這可能是正確的說法,因為HRTF負責定位每個聲音。但一旦用戶開始在場景中自由移動(即使是有效的區(qū)域內),這一過程將變得不夠充分。當用戶在運動或改變頭部的中心位置時,每個聲音的反射路徑和環(huán)境效果都在不斷變化。預先烘烤場景中每種聲音的環(huán)境效果已經不再實際可行。所采用的典型快捷近似估算方式是將所有這些效果合并到一個混響插件中,然后在特定情況下為整個場景使用一個混響設置,或者將多個設置分配到場景中的不同房間。行業(yè)自20世紀90年代以來便一直在使用提供這種渲染功能的技術。
對虛擬世界中的聽者而言,即使聲音的位置非常準確,這種近似估算也不能創(chuàng)建臨場感。舉一個例子,一名VR用戶沿著走廊前進,走廊左前方有一個大門敞開的房間,用戶能聽到房間中傳來聲音,用戶走過門口后,聲音也仍在。但在現(xiàn)實世界中,用戶在聲音環(huán)境效果中則會聽到持續(xù)的變化:
房間墻壁的遮擋;在門口的衍射;墻壁,地板和天花板的表面反射;構成建筑物內墻/地板/天花板表面的材料及其物體或家具的擴散和吸收。
在錄音棚中提取房間混響的傳統(tǒng)音頻設計和渲染方法,通過對聲源增加簡單衰減和低通濾波,并使用HRTF進行定位,可以產生可靠的聲音呈現(xiàn),但無法創(chuàng)建臨場感。即使音頻設計師努力使用逼真的曲線實現(xiàn)距離衰減和聲源濾波,并且隨著聽者耳朵或聲源改變位置而不斷更新HRTF位置,結果也同樣如此。
傳統(tǒng)方法不足以創(chuàng)建臨場感的原因是,現(xiàn)實世界的聲學要比這種近似估算的范圍更加復雜,而且通過大量的接觸和適應,人類大腦已經訓練有素,能夠識別真實世界的聲學并精確區(qū)分它們。人類聽覺是一個關鍵的生存進化,因為聲音往往是危險出現(xiàn)的第一個信號,而且從嘈雜的環(huán)境中判斷聲音方向和距離的能力是一個關鍵的生存技能。對于這種能力,一個例子就是所謂的“雞尾酒會效應”,亦即人類的一種聽覺選擇能力。當人類把注意力集中在某一個人的談話時,其可以忽略背景中其他的對話或噪音。
2. 用物理建模音頻環(huán)境
如果環(huán)境聲音渲染要更接近真實世界的聲學,我們需要對傳播聲音的物理學模型進行建模,這被稱為可聽化(auralizaTIon)。行業(yè)已經提出并實施了多種用于聲傳播建模的方法,而它們在復雜性和準確性之間做出了各種平衡。當前VR系統(tǒng)的實時計算能力仍無法滿足完美的建模(為每個聲音傳播事件求解聲波方程),但借助AMD TrueAudio Next所帶來的實時GPU計算功能,我們可以大幅度提升單憑CPU難以實現(xiàn)的可聽化能力。一種可以在關鍵頻段內為音頻遮擋和音頻反射顯著提升逼真可聽化的方法是:幾何聲學。
幾何聲學一開始的切入點是每個聲源與聽者耳朵位置之間的光線追蹤路徑(通常是采樣子集),并將一組算法應用于追蹤路徑的數(shù)據(jù)集和路徑反彈中遇到的材料屬性,以生成每個聲音,每個耳朵的獨特脈沖響應。除了路徑反射、擴散和遮擋之外,衍射效果(如有限邊緣衍射)和HRTF濾波器也可以在這個框架內建模,并疊加到每個時變脈沖響應。在渲染過程中,隨著聲源和聽者改變位置而不斷更新的脈沖響應將與相應的音頻源信號卷積。然后,這些信號將根據(jù)每個耳朵分別混合,以生成可聽見的輸出音頻波形。這種方法具有可擴展性,并已通過AMD TrueAudio Next在CPU上實現(xiàn)。TrueAudio Next能夠顯著增強可被支持的物理建模聲源的數(shù)量。應用程序可以通過“借用”小量的GPU計算單元子集(大約10%-15%)來擴展環(huán)境音源,而不是局限于一小部分的主要聲音提示。當部署多個GPU或者APU和GPU的組合時,質量可以在更大的維度上進行擴展。
3. 通過TrueAudio Next和FireRays加速音頻物理幾何聲學渲染所需的兩個主要算法是時變卷積(位于音頻處理組件)和射線追蹤(位于傳播組件)。對于AMD的Radeon GPU,AMD的開源FireRays庫可以加速光線追蹤;而AMD的TrueAudio Next庫可以加速時變實時卷積。
AMD TrueAudio Next庫是一種高性能的,基于OpenCL的實時數(shù)學音頻加速庫,其特別注重于GPU計算加速。除了低延遲,時變卷積外,TrueAudio Next庫同時還支持高效的FFT和Fast Hartley Transforms(FHT)。
TrueAudio Next支持x86 CPU和AMD Radeon GPU。
4. 綜合所有上文已經說明TrueAudio Next庫是一個關鍵的解決方案,但我們仍需回答兩個重要的問題:
GPU計算著色器上是否可以支持這種技術,同時不會導致干擾圖形渲染并導致抖動和/或關鍵幀速率丟失呢?
在VR游戲或高級電影渲染場景中,高性能GPU音頻是否真的能夠實現(xiàn)無雜訊,低延遲渲染呢?
雖然傳統(tǒng)的觀點告訴我們說,GPU上的音頻渲染會導致不可接受的延遲,并干擾圖形性能,但上述兩個問題的答案是肯定的,而這指向了AMD TrueAudio Next的另一根重要支柱:基于異步計算的預留計算單元(Compute Unit ReservaTIon)。
作為LiquidVR TIme Warp和Direct-to-GPU渲染功能的關鍵組件,AMD的異步計算技術在VR渲染空間中已經是眾所周知。在一個有效硬件調度程序的控制下,異步計算具備可變的執(zhí)行優(yōu)先級,允許多個隊列的函數(shù)同時使用不同的CU集合,而不是說所有的圖形著色函數(shù)都在單個隊列中等待,以便在CU的整個數(shù)組中執(zhí)行。
AMD的預留計算單元(Compute Unit ReservaTIon)功能則進一步深化了這一思想:只要啟用的應用程序需要,就可以劃分和保留一組有限的CU,并且通過預留的實時隊列訪問。例如,在具有32個CU的GPU中,可以保留4個或8個CU為TrueAudio Next專用,其余的24個到28個CU則可用于圖形。預留CU可完全在啟用TrueAudio Next的應用程序,插件或引擎中執(zhí)行(不是在啟動時),當應用程序主動釋放它們(CU)或退出時,CU將重獲自由。另外,對于稍低優(yōu)先級的內核,可以為預留的CU分配額外的“中等優(yōu)先級”隊列。在時變卷積的情況下,對于必須是低延遲,絕對無雜訊的音頻數(shù)據(jù)通道,其可以使用實時隊列;而稍不那么關鍵的脈沖響應更新則使用中等優(yōu)先級隊列。
預留計算單元(Compute Unit Reservation)提供了一系列支持音頻與圖形共存的關鍵優(yōu)勢:
在插件的指導和音頻引擎供應商的建議下,預留CU的數(shù)量完全由游戲開發(fā)者自行決定。音頻引擎在使用優(yōu)秀分析工具來擴展可用CPU資源上具備豐富的經驗。AMD TrueAudio Next只是增加了一個更高的維度:一個大型、可靠、可配置的私有沙箱。
避免措手不及。可以在游戲開發(fā)的早期階段分配CU預留值。音設計頻和圖形設計可以獨立進行,無需擔心音頻可能在無意中“偷走”任何圖形計算資源。與運行通用OS的多核CPU相比,預留計算單元實際上提供了更緊密(但更大)的沙箱。
圖形獨立于音頻,音頻獨立于圖形。只有內存帶寬為共享資源,而對于這一點,音頻占用的比例遠小于圖形;DMA傳輸延遲則不足以形成影響。可以通過超過2秒的脈沖響應實現(xiàn)低至1.33毫秒(48kHz 64采樣)的無雜訊卷積濾波器延遲,而典型的音頻游戲引擎則需要5到21毫秒的總緩沖延遲。
預留計算單元是一個提供給NDA合作伙伴的驅動程序功能。另外,有無預留計算單元都可使用TrueAudio Next庫。
AMD TrueAudio Next開源庫和由驅動程序控制的預留計算單元將能為虛擬現(xiàn)實帶來更高水平的音頻渲染真實感。我們十分期待開發(fā)者利用它們所創(chuàng)造的作品。
注:最高的技術級別一般稱為Fellow,級別上Fellow一般與VP平級。