TW201907270A - 針對虛擬實境漫步式的掃視重新定向 - Google Patents

針對虛擬實境漫步式的掃視重新定向 Download PDF

Info

Publication number
TW201907270A
TW201907270A TW107123228A TW107123228A TW201907270A TW 201907270 A TW201907270 A TW 201907270A TW 107123228 A TW107123228 A TW 107123228A TW 107123228 A TW107123228 A TW 107123228A TW 201907270 A TW201907270 A TW 201907270A
Authority
TW
Taiwan
Prior art keywords
user
virtual
specific embodiment
visual suppression
redirection
Prior art date
Application number
TW107123228A
Other languages
English (en)
Other versions
TWI693531B (zh
Inventor
孫琪
安胡珥 派德尼
歐梅爾 夏皮拉
摩根 麥奎爾
亞倫 艾略特 萊福恩
大衛 派翠克 薩爾維呂布克
Original Assignee
美商輝達公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商輝達公司 filed Critical 美商輝達公司
Publication of TW201907270A publication Critical patent/TW201907270A/zh
Application granted granted Critical
Publication of TWI693531B publication Critical patent/TWI693531B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/003Navigation within 3D models or images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Architecture (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本發明揭示一種用於在使用者觀看虛擬環境的同時,將使用者之移動重新定向通過實體空間的方法、電腦可讀取媒體和系統。當使用者之雙眼在觀看顯示器裝置上所顯示虛擬場景的同時相對於使用者之頭部移動時,偵測暫時性視覺抑制事件,修改相對於使用者的虛擬場景之定向,以將使用者導向沿著通過對應於該虛擬場景的虛擬環境的規劃路徑實體移動,並且依據該經過修改定向,在該顯示器裝置上顯示該虛擬場景。

Description

針對虛擬實境漫步式的掃視重新定向 【優先權主張】
本專利申請案主張2017年7月7日所申請之標題為「針對虛擬實境漫步方式的掃視重新定向」(Saccadic Redirection for Virtual Reality Locomotion)的美國臨時專利申請案第62/529,959號和2018年6月29日所申請之標題為「針對虛擬實境漫步方式的掃視重新定向」(Saccadic Redirection for Virtual Reality Locomotion)的美國非臨時專利申請案第16/024,591號之優先權,其全部內容併入本文作為參考。
本發明係關於虛擬實境,尤其係關於在使用者觀看虛擬環境的同時,將使用者之移動重新定向通過實體空間(例如,客廳或辦公室)。
慣用的市售虛擬實境頭戴式顯示器支援針對自然漫步式體驗的房間規模方位(position)追蹤。然而,實體空間(通常係終端使用者家裡和電動遊樂場內的小型房間)通常會小於虛擬空間。虛擬實境(VR)的主要挑戰在於使干擾減至最小的同時,在小型不規則的多使用者實體空間內嵌入大型虛擬空間。理想的解決方案將在小型有限實體空間內的虛擬空間中,創建無限行走之感知。跑步機或其他實體裝置可解決該無限行走問題,但由於這些機台昂貴、笨重並且可影響使用者之平衡,同時也會妨礙跪下和跳躍等自由使用者移動,因此並非一般應用所需。而且,在使用像這些實體裝置的同時,感覺不到自然行走之加速和減速作用,這可引起不適。
對有限實體空間問題的直接解決方案,係每當使用者碰撞其房間之該等實體邊界/障礙物時,即重新設定該虛擬定向。可惜的是,對大型虛擬環境而言,該等視點經常需要重新設定,這會干擾和降低使用者體驗之品質。對僅僅重新設定該虛擬定向的替代方案係將使用者重新定向, 以避開該等實體邊界/障礙物。經過重新定向的行走技術可提升VR導覽之身歷其境和視覺前庭舒適感,但經常會受到該等實體環境之大小、形狀和內容物限制。重新定向之目標係欲動態且難以察覺地操控虛擬環境,以讓使用者碰撞房間邊界或家具等障礙物的頻率降至最低。
用於將使用者重新定向的第一種技術當使用者轉動及/或移動他或她的頭部時會提高轉動/變換增益,使得使用者在視覺上所感知的頭部轉動程度與其頭部之實際轉動略有不同。然而,必須限制可達成而不會負面影響使用者之體驗的頭部移動和重新定向量。用於將使用者重新定向的第二種技術會扭曲場景幾何形狀,以便透過經過修改的重新繪圖場景引導使用者之移動。例如,該第二種技術可使筆直走廊看來好像彎曲,以防止使用者行走時撞上邊界或障礙物。扭曲會引起失真,不適合場景內的開放空間。本領域亟需設法解決這些問題及/或與先前技術相關聯的其他問題。
【簡述】
本發明揭示一種用於在使用者觀看虛擬環境的同時,將使用者之移動重新定向通過該實體空間以依循該路徑的方法、電腦可讀取媒體和系統。當使用者之雙眼在觀看顯示器裝置的同時相對於使用者之頭部移動時偵測暫時性視覺抑制事件,修改相對於使用者的虛擬場景之定向以將使用者導向沿著通過對應於該虛擬場景的虛擬環境的規劃路徑實體移動,並且依據該經過修改定向在該顯示器裝置上顯示該虛擬場景。
100、200、240‧‧‧方法
105‧‧‧事件偵測引擎
110、120、130、210、220、225、227、230、235、245、255、260、262‧‧‧步驟
115、215‧‧‧重新定向引擎
125‧‧‧圖形處理單元(GPU)
132‧‧‧路徑
134、136‧‧‧定位點
135‧‧‧虛擬環境資料
140‧‧‧使用者路徑和障礙物
142‧‧‧障礙物
144、146‧‧‧視覺抑制事件
145‧‧‧顯示器裝置;立體顯示器裝置
150、250‧‧‧虛擬實境系統;系統
160‧‧‧實體空間;實體環境或實體空間
165‧‧‧實體路徑
170‧‧‧虛擬空間;虛擬環境或虛擬空間
175‧‧‧虛擬路徑
205‧‧‧路徑規劃引擎
270‧‧‧虛擬空間
272‧‧‧具有定位點的虛擬路徑
274‧‧‧預先所規劃的經過重新定向路徑
275‧‧‧實體空間
276‧‧‧動態經過修改預先所規劃的經過重新定向路徑
300‧‧‧平行處理單元(PPU)
302‧‧‧互連線
304‧‧‧記憶體裝置;記憶體
305‧‧‧輸入/輸出(I/O)單元
310‧‧‧高速NVLink;NVLink
315‧‧‧前端單元
320‧‧‧排程器單元
325‧‧‧工作分派單元
330‧‧‧集線器
350‧‧‧一般處理叢集(GPC)
370‧‧‧交叉開關(XBar)
380‧‧‧分區單元;記憶體分區單元
410‧‧‧管線管理器
415‧‧‧前點陣化運算(PROP)單 元;前點陣化運算(PROP)
420‧‧‧資料處理叢集(DPC)
425‧‧‧著色引擎
430‧‧‧M管線控制器(MPC)
435‧‧‧圖元引擎
440‧‧‧可編程串流多處理器(SM);串流多處理器(SM);串流多處理器
450‧‧‧點陣化運算(ROP)單元
460‧‧‧2階(L2)快取
470‧‧‧記憶體介面
480‧‧‧工作分派交叉開關(WDX)
490‧‧‧記憶體管理單元(MMU)
500‧‧‧處理系統
505‧‧‧指令快取
510‧‧‧交換器
510(K)‧‧‧排程器單元
515‧‧‧分派單元
520‧‧‧暫存器檔案
525‧‧‧平行處理模組;平行處理系統
530‧‧‧中央處理單元(CPU);中央處理單元
535‧‧‧網路介面
540‧‧‧主記憶體
545‧‧‧顯示器裝置
550‧‧‧處理核心;核心
552‧‧‧特殊功能單元(SFU)
554‧‧‧載入/儲存單元(LSU)
560‧‧‧輸入裝置
565‧‧‧示例性系統;系統
570‧‧‧共用記憶體/1階(L1)快取
575‧‧‧通訊匯流排
580‧‧‧互連網路
600‧‧‧圖形處理管線
601‧‧‧輸入資料
602‧‧‧輸出資料
610‧‧‧輔助儲存器;資料組合階段
620‧‧‧頂點著色階段
630‧‧‧圖元組合階段
640‧‧‧幾何著色階段
650‧‧‧視埠縮放、剔除及剪切(VSCC)階段;視埠縮放、剔除及剪切(SCC)階段
660‧‧‧點陣化階段
670‧‧‧片段著色階段
680‧‧‧點陣化運算階段
第一A圖例示依據具體實施例在暫時性視覺抑制事件期間用於漫步式重新定向的方法之流程圖。
第一B圖例示依據具體實施例的使用者路徑和障礙物。
第一C圖例示依據具體實施例在實體空間和虛擬空間中的使用者之路徑之圖式。
第一D圖例示依據具體實施例的虛擬實境系統之方塊圖。
第二A圖例示依據具體實施例用於通過虛擬環境的漫步式的靜態-動態路徑規劃的方法之流程圖。
第二B圖例示依據具體實施例的虛擬實境系統之另一方塊 圖。
第二C圖例示依據具體實施例的靜態-動態路徑規劃。
第二D圖例示依據具體實施例用於靜態-動態路徑規劃和漫步式重新定向的方法之另一流程圖。
第二E圖例示依據具體實施例用於靜態-動態路徑規劃和漫步式重新定向的虛擬碼(pseudo-code)。
第三圖例示依據具體實施例的平行處理單元。
第四A圖例示依據具體實施例在第三圖之平行處理單元內的一般處理叢集。
第四B圖例示依據具體實施例的第三圖之平行處理單元之記憶體分區單元。
第五A圖例示依據具體實施例的第四A圖之串流多處理器。
第五B圖係依據具體實施例使用第三圖之PPU實施的處理系統之概念圖。
第五C圖例示其中可實施各種先前具體實施例之各種架構及/或功能性的示例性系統。
第六圖係依據具體實施例的第三圖之PPU所實施的圖形處理管線之概念圖。
經過重新定向的漫步式在當相較於虛擬環境較小或包括障礙物的實體空間中,能有逼真的虛擬實境體驗。說明當使用者之雙眼相對於其頭部進行快速移動時,用於偵測自然發生的視覺抑制事件的技術。一旦偵測到該視覺抑制事件,就可使用多種技術將使用者之路徑重新定向。重新定向或重新定向係修改使用者之虛擬相機,以降低離開實體空間或碰撞實體障礙物(例如,家具)之可性的技術。由於視覺抑制事件期間該虛擬相機中的微小改變一般難以察覺,因此修改該虛擬相機方位有助於提供更豐富的體驗,而無需使用者注意該重新定向。將通過虛擬空間的使用者之路徑重新定向,因此使用者維持在實體空間內。慣用上,只有當使用者之頭部轉動且不考慮視覺抑制事件時,才將使用者之路徑重新定向。如本說明 書進一步說明,可當使用者之頭部轉動時,而且當使用者之雙眼相對於其頭部快速移動時(甚至當該頭部未轉動時)的視覺抑制事件期間和稍微之後,將該虛擬相機重新定向,從而提供機會以便引用更頻繁且更大量之重新定向。
第一A圖例示依據具體實施例在暫時性視覺抑制事件期間用於漫步式重新定向的方法100之流程圖。儘管方法100係在處理單元之情況下進行說明,但也可透過程式、自訂電路,或透過自訂電路和程式之組合進行方法100。例如,可透過圖形處理單元(Graphics processing unit,GPU)、中央處理單元(Central processing unit,CPU),或能夠偵測視覺抑制事件的任何處理器執行方法100。再者,熟習該項技藝者將可理解,進行方法100的任何系統係在本發明之具體實施例之範疇與精神內。
在步驟110,當使用者之雙眼在觀看顯示器裝置上所顯示虛擬場景的同時相對於其頭部移動時,偵測視覺抑制事件。例如,當使用者之雙眼相對於其頭部快速轉動時,會發生視覺抑制事件。使用者之頭部可在該頭部移動期間轉動,或使用者之頭部可靜止。在下列說明之情況下,當使用者之雙眼相對於他或她的頭部(與頭部移動之方向一致或反向轉動)至少100°/秒轉動時,他或她的雙眼會「快速」移動。視覺抑制事件之一個範例係掃視抑制,即人類在改變注視點時的快速動眼(eye movement)期間體驗到暫時性眼盲的現象。掃視會頻繁發生,但人類之高階視覺系統防止有意識察覺該眼盲。該視覺系統也會在該世界本身尚未改變的假設下,在掃視之後重新校正其定向。在正常觀看期間,掃視會在一秒內發生是次,並且含有極快速動作(高達900°/秒)。
該視覺抑制事件之持續時間在該掃視開始之前開始,並且在該掃視已結束之後延長附加持續時間,在這期間該人類視覺系統會暫時失去視覺敏銳度。與VR畫面持續時間(10-20ms)相比,掃視期間該眼睛動作之持續時間可很長(20-200ms)。由於該暫時性眼盲,因此掃視期間該虛擬場景定向中的小改變難以察覺,因而可用於有效經過重新定向的行走。掃視係在觸發暫時性感知抑制的許多行為之中。視覺抑制事件之其他範例包括透過圖案(其中特定視覺圖案之呈現會抑制我們在視覺上處理斑馬之條紋 等場景的能力,使得個人難以分辨獸群)、閃光抑制(其中呈現給一隻眼睛的影像之閃光會使得呈現給另一隻眼睛的另一影像受到抑制)、感觸掃視(其中我們透過碰觸感知表面的能力會由於動作而受到抑制)和眨眼(眨眼期間和之後的視覺抑制)遮蔽。可使用凝視追蹤(或腦電波記錄等其他技術)偵測視覺抑制事件。在具體實施例中,眼睛追蹤式頭戴式顯示器裝置係構成追蹤虛擬實境使用者之凝視位置(location),以識別何時會發生視覺抑制事件。
在步驟120,在該視覺抑制事件期間修改相對於使用者的虛擬場景之定向,以將使用者導向沿著通過對應於該虛擬場景的虛擬環境的規劃路徑實體移動。例如,可修改該虛擬場景之定向(平移及/或轉動),以將使用者重新定向可確保使用者不會與該實體環境中的障礙物碰撞,並且係朝著該虛擬環境中的定位點(waypoint)導向的所需路徑。在具體實施例中,為了將使用者之行走方向重新定向,在視覺抑制事件期間對該虛擬場景施加以虛擬空間中使用者之目前方位為中心的轉動。在具體實施例中,可使用重新定向避開靜態及/或動態障礙物。相較於慣用的重新定向技術,可在整個虛擬和實體空間之較廣泛範圍中留存如實的視覺和前庭體驗。
在步驟130,依據該經過修改定向在該顯示器裝置上顯示該虛擬場景。當該視覺抑制事件並未如將使用者重新定向所需要頻繁發生時,可將微小凝視方向事件插入該虛擬場景中,以促成掃視行動。該凝視方向事件在使用者之視覺周邊中提供視覺分散,以誘發掃視。重要的是,在具體實施例中,該凝視方向事件係在顯示時間進行,並且不會影響該虛擬場景之繪圖或內容物。
現將就各種視需要架構和特徵(憑藉其可依使用者所需實施前述框架)而論闡述更多例示性資訊。應深切注意,下列資訊係為了例示性目的而闡述,而不應以任何方式構成限制。可視需要排除或不排除所說明的其他特徵併入下列特徵任一者。
第一B圖例示依據具體實施例的使用者路徑和障礙物140。兩定位點134、136係透過路徑132交集。每個視覺抑制事件144、146提供將使用者之行走方向重新定向的機會。在該等視覺抑制事件144、146期間,可對該虛擬場景施加以虛擬空間(即是,該虛擬環境)中使用者之目前 方位為中心的轉動。該轉動可將使用者朝著定位點136沿著路徑132定向,同時確保使用者避開障礙物142。障礙物142可在固定位置或可正在移動(即是,動態)。
在每個時間t,假設向使用者所顯示的目前/最後畫面之該等凝視方位係。在具體實施例中,當凝視方位改變之速率快於每秒轉動程度上的掃視臨界值時,識別視覺抑制事件144、146。在具體實施例中,該掃視臨界值係200°/秒。該掃視臨界值可固定、經過運算或經過編程。在下列說明之情況下,快於掃視臨界值的凝視方位改變之速率係視為快速動眼。當使用者之頭部靜止或在使用者之頭部正在轉動的同時,可發生該快速動眼。重要的是,視覺抑制事件期間的轉動速率係使用者之雙眼相對於使用者之頭部之轉動速率。
當偵測到視覺抑制事件144、146時,對該虛擬場景施加方向性操控(即是,相對於該虛擬場景中使用者之方位轉動相機方位)。在具體實施例中,當使用者之凝視速度高於180°/秒時,使用者不會偵測到小於12.6°/秒之相機轉動(每秒90幅0.14°畫面)。該相機所轉動的重新定向轉動值可固定、經過運算或經過編程。在具體實施例中,該相機轉動可為了較長的視覺抑制事件而線性增加。重要的是,該虛擬場景不會扭曲。而是,在具體實施例中,與傳統重新定向技術對比,該相機方位轉動而未平移。
當使用者將他或她的頭部快速轉動頭部轉動臨界值(例如,10°/秒)時,與當偵測到視覺抑制事件時相比,可對該虛擬場景施加較高的轉動增益(例如,45°/秒)。因此,基於視覺抑制事件的經過重新定向的行走係與僅基於頭部轉動的傳統經過重新定向的行走正交,可同時使用該等兩種技術。
當將使用者之凝視重新定向的機會的發生頻率不足以將使用者之路徑重新定向避開該等實體障礙物時,可誘發視覺抑制事件。該等視覺抑制事件144、146之一或多個可受到誘發的視覺抑制事件。可使用微小凝視方向(SGD)將觀看者之凝視導向特定目標,以誘發視覺抑制事件。當在周邊區域中施加時,SGD事件可將使用者之注意力導向而不會影響該場景之淨感知。可產生SGD事件以動態且細微提高視覺抑制事件之頻率,從 而為該虛擬環境之難以察覺的轉動創造更多機會。與修改虛擬空間中該虛擬環境的傳統微小凝視方向技術對比,可在影像空間中產生SGD事件而未修改所繪圖的虛擬環境。而是,修改該虛擬環境之場景之所繪圖畫面中的一或多個像素。在影像空間中引用該SGD事件可減少從引發該SGD事件到使用者可見該SGD事件的延遲。
在具體實施例中,對使用者之視覺周邊中的像素施加時序調變,以產生SGD事件。為了改進該等調變之效益,內容物察覺方法優先考慮用於刺激放置的高對比度影像區域。搜尋具有高區域對比度的像素可昂貴的每幅畫面運算。在具體實施例中,為了加速,在該目前畫面之降低所取樣的版本上運算該所繪圖影像之對比度。在具體實施例中,透過為該目前畫面產生「multim in parvo」(意為Many things in a small place.=在很小的地方有很多東西)紋理映射(即是,MIPMAP)得到該降低所取樣的版本。在估計和找出具有最大區域對比度的區域之後,透過調變包括一或多個像素的高對比度區域之中心周圍的高斯形區域之亮度,產生該SGD刺激。在表1中顯示可用於在該所繪圖畫面之降低所取樣的版本中,搜尋該高對比度區域的範例演算法。
第一C圖例示依據具體實施例在實體空間160和虛擬空間170中的使用者之路徑之圖式。使用者之實體路徑165受到約束,以維持在實體環境或實體空間160內。然而,使用者感知他或她沿著虛擬環境或虛擬空間170中的虛擬路徑175行進。在具體實施例中,方法100對該無限行走問題提供動態解決方案,並且對小至12.25m2的實體面積而言有效。 12.25m2之面積符合該等所建議的用戶HMD房間規模安裝範圍。在相對於頭部方位的眼動所引起的視覺抑制事件期間以及對由頭部轉動導致的眼動而言將使用者重新定向,由於有將使用者重新定向的更多機會,因此可實現更積極的重新定向。
第一D圖例示依據具體實施例的虛擬實境系統150之方塊圖。視覺抑制事件期間的重新定向之效能會依幾項因素而定,其中包括視覺抑制事件之頻率和持續時間、視覺抑制事件期間的影像位移之感知容差,以及系統150之眼睛追蹤到顯示延遲。
虛擬實境系統150包括一事件偵測引擎105、一重新定向引擎115、一GPU 125、虛擬環境資料135和一顯示器裝置145。在具體實施例中,事件偵測引擎105係眼睛追蹤裝置。在具體實施例中,對每位使用者會校正該眼睛追蹤裝置。在具體實施例中,事件偵測引擎105實施試探法(heuristic)以偵測視覺抑制事件。在每幅畫面之開始處,該等先前兩個凝視取樣係用於估計使用者之凝視之目前角速度。若該角速度大於180°/秒,則視覺抑制事件不是目前正在進行就是最近已結束。可每幅畫面至少一次會透過事件偵測引擎105獲取凝視取樣。在具體實施例中,使用者之左側和右側凝視位置之平均方位係用於每個凝視取樣,以有助於減少偵測位置上和估計速度上的雜訊。
由於當代眼睛追蹤器以及VR繪圖和顯示管線之延遲,因此視覺抑制事件之偵測一般會落後實際視覺抑制事件幾十毫秒。然而,由於視覺抑制事件之持續時間在20-200ms之間,並且視覺抑制會在視覺抑制事件開始之後持續100ms,因此偵測相對較容許追蹤和繪圖延遲,尤其是對具有大角度幅度的視覺抑制事件而言。
在具體實施例中,當在畫面內偵測到視覺抑制事件時,重新定向引擎115稍微將該虛擬相機重新定向轉動值。在具體實施例中,該轉動值係0.14°/畫面。將該虛擬相機之經過修改定向提供給GPU 125,以便為下一幅畫面繪圖該虛擬環境之經過重新定向的場景。如先前所解說,用於視覺抑制事件的重新定向可與用於僅頭部重新定向的重新定向結合。儘管頭部移動期間的轉動允許較大量之重新定向,但大幅頭部轉動的頻率低於 視覺抑制事件,因此當針對視覺抑制事件和僅頭部移動兩者進行重新定向時,預期可整體改進經過重新定向的行走。
為了引導使用者遠離靜止和移動障礙物兩者,重新定向引擎115必須動態運算每幅畫面中的虛擬相機定向。現有的離線映射方法需求並非以互動速度進行的預處理,因此與即時動態且不可預測地發生的視覺抑制事件不相容。此外,在具體實施例中,透過僅施加剛性(rigid)虛擬相機變換(即是,轉動)將使用者重新定向,可避免虛擬場景扭曲所引起的視覺失真。
GPU 125基於虛擬環境資料135和重新定向引擎115所提供的虛擬相機之方位繪圖該虛擬場景畫面。在具體實施例中,虛擬環境資料135係儲存在可透過GPU 125存取的記憶體中。可在GPU 125內快取虛擬環境資料135之至少一部分。在顯示器裝置145處輸出和顯示GPU 125所繪圖的每幅虛擬場景畫面。在具體實施例中,GPU 125產生該虛擬場景之影像對,以便在立體顯示器裝置145上進行立體觀看。在具體實施例中,該虛擬場景畫面係儲存在可透過GPU 125、重新定向引擎115和顯示器裝置145之一或多個存取的記憶體中。
重新定向引擎115也可構成產生SGD事件,以誘發視覺抑制事件。重新定向引擎115可在特定場景物件之該等擴散紋理或材料上,將物件-空間SGD進行為亮度調變。一般來說,會選擇突出物件作為SGD之目標。在具體實施例中,基於使用者之凝視以及從使用者之虛擬視點到每個物件的距離,在虛擬空間中選擇目標物件集,並且從該目標物件集選擇SGD物件。當進行物件-空間SGD時,重新定向引擎115將經過修改物件屬性提供給GPU 125。相對而言,當重新定向引擎115係構成進行影像空間SGD時,重新定向引擎115會處理該虛擬場景畫面以識別具有最大區域對比度的虛擬場景畫面之區域,然後修改該區域中的一或多個像素。在具體實施例中,修改一或多個像素以在使用者之凝視之周邊面積中實施基於對比度的微小凝視方向。
針對虛擬實境漫步方式的靜態-動態路徑規劃
可改進針對虛擬實境漫步方式的使用者體驗的第二組件係靜態-動態路徑規劃工具。內容物察覺路徑規劃工具可適應於動態環境改 變,並且產生將使用者遠離靜態和動態障礙物導向的路徑。最初,基於該場景中的定位點為使用者規劃靜態路徑。為使用者運算該規劃路徑,以避開該實體環境中的靜態障礙物(例如,牆壁和家具)。隨著使用者及/或障礙物在該實體環境內移動,更新該規劃路徑。隨著使用者在該實體環境中移動,重新定向使用者之漫步式,以便使用者之實際路徑與該規劃路徑會合。如先前所解說,在視覺抑制事件期間將使用者之實際路徑重新定向。
第二A圖例示依據具體實施例用於VR漫步式的靜態-動態路徑規劃的方法200之流程圖。儘管方法200係在處理單元之情況下進行說明,但也可透過程式、自訂電路,或透過自訂電路和程式之組合進行方法200。例如,可透過圖形處理單元(GPU)、中央處理單元(CPU),或能夠進行靜態-動態路徑規劃的任何處理器執行方法200。再者,熟習該項技藝者將可理解,進行方法200的任何系統係在本發明之具體實施例之範疇與精神內。
在步驟210,判定通過虛擬環境的路徑,以供使用者沿著實體移動。基於定位點和使用者所在實體環境之至少一特性判定該路徑。在下列說明之情況下,該實體環境之特性可包括該實體環境中的實體屏障(例如,牆壁、地板等),以及靜態和動態物件(例如,家具、固定物、動物、樹木、人等)。
在步驟220,針對使用者接收方位資料,從而指出使用者所採取的目前路徑已偏離該路徑。在下列說明之情況下,針對使用者的方位資料可包括對應於使用者上或與其接近的一或多個位置的實體環境及/或虛擬環境內的坐標。在具體實施例中,也可針對該實體環境中的任何動態障礙物接收方位資料。
在步驟230,基於該等定位點和該實體環境之至少一特性運算通過該虛擬環境的經過更新路徑。在具體實施例中,將使用者重新定向沿著該經過更新路徑行進。在具體實施例中,誘發視覺抑制事件,以提供將使用者重新定向的機會。在另一具體實施例中,當偵測到視覺抑制事件或僅頭部移動時,發生重新定向。
現將就可依使用者所需實施前述框架所憑藉的各種視需要 架構和特徵而論闡述更多例示性資訊。應深切注意,下列資訊係為了例示性目的而闡述,並且不應以任何方式構成限制。可視需要併入下列特徵任一者,而排除或不排除所說明的其他特徵。
第二B圖例示依據具體實施例的虛擬實境系統250之方塊圖。透過相機操控和SGD將使用者重新定向,讓使用者能夠體驗該虛擬環境。為了引導使用者遠離靜止和移動障礙物兩者,系統250動態更新該路徑且運算每幅畫面中的虛擬相機定向,從而如重新定向所需要修改該定向。透過感知因素(例如,SGD)、該實體環境之特性和GPU平行化驅動該即時動態路徑規劃方法。
虛擬實境系統250包括事件偵測引擎105、一重新定向引擎215、一路徑規劃引擎205、GPU 125、虛擬環境資料135和顯示器裝置145。在具體實施例中,當偵測到視覺抑制事件時,重新定向引擎215會依據路徑規劃引擎205所實施的靜態-動態路徑規劃工具修改該場景定向。在重新定向引擎115基於重新定向轉動值、使用者之方位和實體環境資料運算該經過修改定向的同時,重新定向引擎215會基於重新定向轉動值、使用者之方位和實體環境資料,以及該經過更新路徑上的至少一定位點之位置運算該經過修改定向。GPU 125基於虛擬環境資料135和重新定向引擎215所提供的虛擬相機之經過修改定向繪圖該虛擬場景畫面。
對給定畫面t和2D虛擬方位x=(x,y)而言,可使用該等虛擬和實體空間之間的仿射變換M模擬該對應實體方位u=(u,v):u(x ,t)=M(t)(x-x C (t))+x C (t) (1)
M[R|T]
其中x C (t)係使用者之目前虛擬空間方位。方程式(1)中的公式將xu解譯為該等下一個虛擬和真實使用者方位,以允許稍後最佳化以避開障礙物。
該即時路徑規劃工具之目標係找出該經過修改定向之下一幅畫面之最佳平移T(t+1)和轉動R(t+1)分量,以便視覺抑制事件期間經過重新定向的行走路徑可引導使用者遠離靜態和動態實體障礙物。在一些情 況下,已發現R比具有視覺抑制事件和頭部轉動的T更有效得多,因此在具體實施例中,T(t)係設定為零以減少該即時多維的運算工作負載:
其中該重新定向角△θ經過最佳化。
第二C圖例示依據具體實施例的靜態-動態路徑規劃。在具體實施例中,定義搜尋任務,其中預期使用者會通過虛擬空間270中的定位點之預先定義序列尋找和行走。具有定位點的虛擬路徑272係通過定位點之預先定義序列的靜態路徑。預先所規劃的經過重新定向路徑274可避開實體空間275中的障礙物,同時也帶著使用者通過定位點之預先定義序列(該等定位點係位於虛擬空間中)。
對每幅畫面而言,經過最佳化行走方向(θ)係模擬為時間(t)之基於半徑的函數(Radius-based function,RBF):
其中t i 係該第i個暫時所取樣的節點、g係標準高斯導數,並且C i 係用於適當估計的RBF參數。因此,該速度(v(t))係
其中係結束該等原始任務(即是,到達該等定位點)而未重新定向之平均速度。
實際上,使用者可能不會依循預先所規劃的經過重新定向路徑274,因此可實施動態校正流程:
其中()說明在時間時,預先所規劃的經過重新定向路徑274之使用者偏心度之極坐標。可透過取樣大量()對施加學習程序。在即時虛擬實境應用中,給定使用者之偏心值,該等所取樣()對可擇適合一新基礎函數、或可在該等最接近的所取樣值之中施加雙線性插值。重要的是,動態經過修改預先所規劃的經過重新定向路徑276讓使用者避開實體空間275中的障礙物,同時也限制畫面之間的重新定向不會超過該重新定向轉動值。
在具體實施例中,在視覺抑制事件和頭部轉動期間僅施加來 自該經過最佳化△θ(t)的剛性轉動。由於未使用失真能量項,因此該運算與基於扭曲的技術相比較為容易。應注意,來自視覺抑制事件的感知上難以注意到的角度增益係限於[-△θ max,△θ max],其中△θ max係12.6°/秒。為了在得到回應使用者之動態視覺抑制事件的即時效能的同時符合該12.6°/秒約束,可將該最佳化實施為基於GPU的列搜尋方法。憑藉該經過最佳化△θ,當事件偵測引擎105偵測到視覺抑制事件及/或頭部轉動時,會依據重新定向引擎215所運算的經過修改定向將該虛擬相機重新定向。
第二D圖例示依據具體實施例用於靜態-動態路徑規劃和漫步式重新定向的方法240之另一流程圖。儘管方法240係在處理單元之情況下進行說明,但也可透過程式、自訂電路,或透過自訂電路和程式之組合進行方法240。例如,可透過GPU、中央處理單元(CPU),或能夠執行靜態-動態路徑規劃的任何處理器執行所述方法240。再者,熟習該項技藝者將可理解,進行方法240的任何系統係在本發明之具體實施例之範疇與精神內。
在步驟210,路徑規劃引擎205會判定通過虛擬環境的路徑,以供使用者沿著實體移動。在步驟225,重新定向引擎215會判定是否已發生重新定向機會。重新定向機會由事件偵測引擎105偵測到視覺抑制事件導致。若在步驟225尚未發生重新定向機會,則在步驟235,重新定向引擎215會判定是否需求重新定向。若使用者和障礙物之間的碰撞即將發生、若使用者已與該規劃路徑偏離超過預定量,或者若自施加重新定向以來已經過預定持續時間,則可需求重新定向。若在步驟235重新定向引擎215判定無需重新定向,則在步驟262會在該顯示器裝置上顯示該虛擬場景。可基於該目前相機定向而未施加重新定向,透過GPU 125繪圖該虛擬場景。
若在步驟225已發生重新定向機會,則在步驟227重新定向引擎215會判定是否需求重新定向。若在步驟227重新定向引擎215判定無需重新定向,則在步驟262會在該顯示器裝置上顯示該虛擬場景。除此之外,在步驟227當需求重新定向時,則在步驟245路徑規劃引擎205會基於定位點、實體環境資料和使用者之方位運算經過更新路徑。
若在步驟235重新定向引擎215判定需求重新定向,則在步驟220重新定向引擎215會誘發視覺抑制事件。重新定向引擎215可產生SGD事件,以誘發視覺抑制事件。在具體實施例中,路徑規劃引擎205不論是否需求重新定向,會週期性運算經過更新路徑。在具體實施例中,每當使用者與該規劃路徑偏離臨界值距離時,路徑規劃引擎205會運算經過更新路徑。
在步驟245,重新定向引擎215修改相對於使用者的虛擬場景之定向,以將使用者導向沿著通過對應於該虛擬場景的虛擬環境的經過更新規劃路徑實體移動。在步驟260,在返回步驟225之前,依據該經過修改定向在該顯示器裝置上顯示該虛擬場景。
第二E圖例示依據具體實施例用於靜態-動態路徑規劃和漫步式重新定向的虛擬碼。在每幅畫面之前,進行重新定向和動態路徑規劃。首先,偵測視覺抑制事件,並且判定針對虛擬相機重新定向的可接受的感知臨界值(即是,重新定向轉動值)。然後,進行該路徑規劃最佳化。在具體實施例中,對每幅畫面而言,使用該等目前和先前凝視定向偵測視覺抑制事件,從而識別重新定向的機會。若該目前畫面擇由於正在進行的視覺抑制事件或頭部轉動而用於重新定向,則可透過對人類感知限制的量值在所需重新定向之方向上定向該相機視點。
如第二E圖中所示,透過針對該虛擬相機施加經過修改定向偵測視覺抑制事件,並且進行路徑校正。在第1列至第5列中,測量頭部轉動和凝視方向上的改變,以偵測第8列至第10列中的視覺抑制事件,並且估計基於最大凝視的重新定向角ΓG。在第15列和第16列中,測量基於最大頭部轉動的重新定向角ΓH
透過首先判定α(與該預先所規劃路徑的偏離)且運算△θ(使用者之目前方向和該預先所規劃路徑之方向之間的轉動差異),在第11列至第14列中進行路徑規劃和校正。基於頭部轉動上的改變之該等符號和該轉動差異之間的比較,判定轉動調整值λ(在第15列處)。使用該轉動調整值運算該基於最大頭部轉動的重新定向角ΓH且更新△θ(在第16列和第17列中),以運算第18列中的經過修改虛擬相機定向。在基於該經過更新虛擬相 機定向的繪圖期間,可施加物件-空間SGD以誘發第19列中的視覺抑制事件。在第20列中的繪圖之後,可進行影像-空間SGD以誘發第21列中的視覺抑制事件。
在視覺抑制事件期間將使用者重新定向可大幅提高重新定向期間的該等轉動增益,而不會引用視覺失真或模擬器故障。因此,該等方法100、200和240係特別適用於針對具有靜態及/或動態障礙物的房間規模VR的大型開放虛擬空間和小型實體環境。
平行處理架構
第三圖例示依據具體實施例的平行處理單元(Parallel processing unit,PPU)300。在具體實施例中,PPU 300係實施在一或多個積體電路裝置上的多執行緒處理器。PPU 300係設計成平行處理許多執行緒的延遲隱藏架構。執行緒(即是,執行之執行緒)係構成透過PPU 300執行的指令集之實例化。在具體實施例中,PPU 300係構成實施圖形繪圖管線的圖形處理單元(GPU),該圖形繪圖管線用於處理三維(Three-dimensional,3D)圖形資料以產生二維(Two-dimensional,2D)影像資料,以供在液晶顯示器(Liquid crystal display,LCD)裝置等顯示器裝置上顯示。在其他具體實施例中,可利用PPU 300進行通用運算。儘管文中為了例示性目的而提供一示例性平行處理器,但應深切注意,闡述這樣的處理器僅係為了例示性目的,並且可採用任何處理器補足及/或進行代換。
可將一或多個PPU 300構成加速數千個高效能運算(High Performance Computing,HPC)、資料中心和機器學習應用。可將PPU 300構成加速眾多深度學習系統和應用,其中包括自走式車輛平台、深度學習、高準確度言語、影像和文字辨識系統、智慧視訊分析、分子模擬、藥物開發、疾病診斷、天氣預報、大數據分析、天文學、分子動力學模擬、金融模型化、機器人系統、工廠自動化、即時語言翻譯、線上搜尋最佳化和個人化使用者建議及其類似物。
如第三圖中所示,PPU 300包括一輸入/輸出(Input/Output,I/O)單元305、一前端單元315、一排程器單元320、一工作分派單元325、一集線器330、一交叉開關(crosshar,XBar)370、一或多個一般處理叢集 (General processing cluster,GPC)350和一或多個分區單元380。PPU 300可經由一或多個高速NVLink 310互連線連接到主機處理器或其他PPU 300。PPU 300可經由互連線302連接到主機處理器或其他周邊裝置。PPU 300也可連接到包含若干記憶體裝置304的系統內記憶體。在具體實施例中,該系統內記憶體可包含若干動態隨機存取記憶體(Dynamic random access memory,DRAM)裝置。該等DRAM裝置可構成為高頻寬記憶體(High-bandwidth memory,HBM)子系統,其中每個裝置內堆疊多個DRAM晶粒。
NVLink 310互連線使系統能夠擴展和包括與一或多個CPU結合的一或多個PPU 300、支援該等PPU 300和CPU之間的快取一致性,以及CPU主控。可透過集線器330由NVLink 310將資料及/或命令傳輸到PPU 300之其他單元/從其傳輸,例如一或多個複製引擎、一視訊編碼器、一視訊解碼器、一電源管理單元等(未明確顯示)。連同第五B圖更詳細說明NVLink 310。
I/O單元305係構成透過互連線302從主機處理器(未顯示)傳輸和接收通訊(即是,命令、資料等)。I/O單元305可經由互連線302或透過記憶體橋等一或多個中間裝置直接與該主機處理器通訊。在具體實施例中,I/O單元305可經由互連線302與一或多個PPU 300等一或多個其他處理器通訊。在具體實施例中,I/O單元305實施用於透過快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)匯流排的通訊的PCIe介面,並且互連線302係PCIe匯流排。在替代性具體實施例中,I/O單元305可實施用於與外部裝置通訊的其他類型之已習知介面。
I/O單元305會解碼經由互連線302接收的封包。在具體實施例中,該等封包代表構成使得PPU 300進行各種運算的命令。由於該等命令可指定,I/O單元305將該等經過解碼命令傳輸到PPU 300之各種其他單元。例如,一些命令可傳輸到前端單元315。其他命令可傳輸到集線器330或PPU 300之其他單元,例如一或多個複製引擎、視訊編碼器、視訊解碼器、電源管理單元等(未明確顯示)。換言之,I/O單元305係構成在PPU 300之各種邏輯單元之間和之中路由通訊。
在具體實施例中,該主機處理器所執行的程式會在將工作負載提供給PPU 300進行處理的緩衝區中編碼命令流。工作負載可包含即將透過那些指令處理的數個指令和資料。該緩衝區係可透過該主機處理器和PPU 300兩者存取(即是,讀取/寫入)的記憶體中的區域。例如,I/O單元305可構成經由透過互連線302傳輸的記憶體請求,存取連接到互連線302的系統記憶體中的緩衝區。在具體實施例中,該主機處理器將該命令流寫入到該緩衝區,然後將指向該命令流之開始的指標(pointer)傳輸到PPU 300。前端單元315會接收指向一或多個命令流的指標。前端單元315會管理一或多個串流、從該等串流讀取命令,並且將命令轉送到PPU 300之各種單元。
前端單元315係耦接到排程器單元320,其配置各種GPC 350以處理一或多個串流所定義的任務。排程器單元320係構成追蹤與排程器單元320所管理的各種任務相關的狀態資訊。該狀態可指出任務係分派給哪個GPC 350、該任務是否現行(active)或非現行(inactive)、與該任務相關聯的優先層級等。排程器單元320會管理一或多個GPC 350上的複數任務之執行。
排程器單元320係耦接到工作分派單元325,其係構成分派(dispatch)任務以供在該等GPC 350上執行。工作分派單元325可追蹤從排程器單元320接收的若干經過排程任務。在具體實施例中,工作分派單元325會為每個該等GPC 350管理待處理任務池和現行任務池。該待處理任務池可包含若干時槽(slot)(例如,32個時槽),其含有經過分派要透過特定GPC 350處理的任務。該現行任務池可包含用於任務的若干時槽(例如,4個時槽),其係透過該等GPC 350現行處理。隨著GPC 350結束任務之執行,將該任務從用於GPC 350的現行任務池逐出,並且選擇和排程來自該待處理任務池的其他任務之一,以供在GPC 350上執行。若現行任務已在GPC 350上閒置,例如在等待解析資料相依性時,則可將該現行任務從GPC 350逐出並回傳到該待處理任務池,同時選擇和排程該待處理任務池中的另一任務,以供在GPC 350上執行。
工作分派單元325經由XBar 370與一或多個GPC 350通 訊。XBar 370係將PPU 300之許多該等單元耦接到PPU 300之其他單元的互連網路。例如,XBar 370可構成將工作分派單元325耦接到特定GPC 350。儘管未明確顯示,但PPU 300之一或多個其他單元也可經由集線器330連接到XBar 370。
該等任務係透過排程器單元320管理,並且透過工作分派單元325分派到GPC 350。GPC 350係構成處理該任務且產生結果。該等結果可透過GPC 350內的其他任務消耗、經由XBar 370路由到不同GPC 350,或儲存在記憶體304中。可經由該等分區單元380(其實施用於將資料寫入到記憶體304/從其讀取的記憶體介面)將該等結果寫入到記憶體304。可經由NVLink 310將該等結果傳輸到另一PPU 304或CPU。在具體實施例中,PPU 300包括數量U之分區單元380,其等於耦接到PPU 300的分開且相異記憶體304之數量。以下將連同第四B圖更詳細說明分區單元380。
在具體實施例中,主機處理器會執行實施能夠在該主機處理器上執行一或多個應用的應用程式界面(Application programming interface,API)從而排程在PPU 300上執行運算的驅動程式核心。在具體實施例中,透過PPU 300同時執行多個運算應用,並且PPU 300為該等多個運算應用提供隔離、服務品質(Quality of service,QoS)和獨立位址空間。應用可產生指令(即是,API呼叫),其使得該驅動程式核心產生一項或多項任務以供透過PPU 300執行。該驅動程式核心將任務輸出到透過PPU 300處理的一或多個串流。每項任務可包含相關執行緒之一或多個群組,其於文中指稱為一執行緒集。在具體實施例中,一執行緒集包含32個相關執行緒,其可平行執行。協同執行緒可指稱包括進行該任務的指令的複數執行緒,並且其可透過共用記憶體交換資料。連同第五A圖更詳細說明執行緒和協同執行緒。
第四A圖例示依據具體實施例的第三圖之PPU 300之GPC 350。如第四A圖中所示,每個GPC 350包括若干硬體單元,其用於處理任務。在具體實施例中,每個GPC 350包括一管線管理器410、一前點陣化運算單元4(Pre-raster operations,PROP)15、一著色引擎425、一工作分派交叉開關(Work distribution crossbar,WDX)480、一記憶體管理單元 (Memory management unit,MMU)490和一或多個資料處理叢集(Data Processing Cluster,DPC)420。將可瞭解,第四A圖之GPC 350可包括替代或除了第四A圖中所示該等單元之外的其他硬體單元。
在具體實施例中,透過管線管理器410控制GPC 350之運算。管線管理器410會管理用於處理調配(allocated)給GPC 350的任務的一或多個DPC 420之配置。在具體實施例中,管線管理器410可配置一或多個DPC 420中至少一者,以實施圖形繪圖管線之至少一部分。例如,一DPC 420可構成在可編程串流多處理器(Streaming multiprocessor,SM)440上執行頂點著色器程式。管線管理器410也可構成將從工作分派單元325接收的封包路由到GPC 350內的該等適當邏輯單元。例如,一些封包可路由到PROP 415及/或著色引擎425中的固定功能硬體單元,而其他封包可路由到DPC 420以供透過圖元引擎435或SM 440處理。在一具體實施例中,管線管理器410可構成一或多個DPC 420之至少一者,以實行一神經網路模型及/或一運算管線。
連同第四B圖更詳細說明PROP單元415係構成將著色引擎425和該等DPC 420所產生的資料路由到一點陣化運算(Raster Operations,ROP)單元。PROP單元415也可構成針對色彩混色進行最佳化、組織像素資料、進行位址轉譯及其類似物。
著色引擎425包括若干固定功能硬體單元,其構成進行各種點陣化運算。在具體實施例中,著色引擎425包括一設置引擎、一粗略著色引擎、一剔除(culling)引擎、一剪切引擎、一精細著色引擎和一色塊聚結(tile coalescing)引擎。該設置引擎會接收經過變換頂點,並且產生與該等頂點所定義的幾何圖元相關聯的平面方程式。將該等平面方程式傳輸到該粗略著色引擎,以針對該圖元產生涵蓋資訊(例如,用於色塊的x、y覆蓋遮罩)。將該粗略著色引擎之輸出傳輸到該剔除引擎,其中剔除未通過z測試的與該圖元相關聯的片段且將其傳輸到剪切引擎,其中剪切位於視見平截頭體(viewing frustum)外部的片段。可將經過剪切和剔除的那些片段傳遞到該精細著色引擎,以基於該設置引擎所產生的該等平面方程式為該等像素片段產生屬性。著色引擎425之輸出包含片段,其即將例如透過實施在DPC 420內的片段著色器處理。
包括在GPC 350中的每個DPC 420包括一M管線控制器(M-Pipe Controller,MPC)430、一圖元引擎435和一或多個SM 440。MPC 430會控制DPC 420之運算,從而將從管線管理器410接收的封包路由到DPC 420中的該等適當單元。例如,可將與頂點相關聯的封包路由到圖元引擎435,其係構成從記憶體304提取與該頂點相關聯的頂點屬性。對照下,有關著色器程式的封包可傳輸到SM 440。
SM 440包含一可編程串流處理器,其係構成處理若干執行緒所代表的任務。每個SM 440係多執行緒,並且構成並行執行來自特定執行緒群組的複數執行緒(例如,32個執行緒)。在具體實施例中,SM 440實施單指令多資料(Single-Instruction,Multiple-Data,SIMD)架構,其中執行緒群組(即是,執行緒集(warp))中的每個執行緒係構成基於相同指令集來處理不同資料集。該執行緒群組中的所有執行緒會執行相同指令。在另一具體實施例中,SM 440會實施單指令多執行緒(Single-Instruction,Multiple Thread,SIMT)架構,其中執行緒群組中的每個執行緒係構成基於相同指令集處理不同資料集,但其中允許該執行緒群組中的個別執行緒在執行期間脫離(diverge)。在具體實施例中,為每個執行緒集維護程式計數器、呼叫堆疊和執行狀態,從而當該執行緒集內的執行緒偏離時,實現執行緒集之間的並行性以及執行緒集內的串列執行。在另一具體實施例中,為每個個別執行緒維護程式計數器、呼叫堆疊和執行狀態,從而實現所有執行緒之間、執行緒集內和之間的相等並行性。當為每個個別執行緒維護執行狀態時,執行相同指令的執行緒可平行會合和執行以獲得最大效率。以下將連同第五A圖更詳細說明SM 440。
MMU 490在GPC 350和分區單元380之間提供介面。MMU 490可提供將虛擬位址轉譯成實體位址、記憶體保護、和記憶體請求之仲裁。在具體實施例中,MMU 490提供用於在記憶體304中將虛擬位址轉譯成實體位址的一或多個轉譯後備緩衝區(Translation lookaside buffer,TLB)。
第四B圖例示依據具體實施例的第三圖之PPU 300之記憶體分區單元380。如第四B圖中所示,記憶體分區單元380包括一點陣化 運算(ROP)單元450、一2階(Level two,L2)快取460和一記憶體介面470。記憶體介面470係耦接到記憶體304。記憶體介面470可實施用於高速資料傳送的32、64、128、1024位元資料匯流排及其類似物。在具體實施例中,PPU 300併入U個記憶體介面470,每對分區單元380有一記憶體介面470,其中每對分區單元380係連接到對應的記憶體裝置304。例如,PPU 300可連接到多達Y個記憶體裝置304,例如高頻寬記憶體堆疊或圖形雙倍資料速率的版本5的同步動態隨機存取記憶體或其他類型之持續儲存器。
在具體實施例中,記憶體介面470實施HBM2記憶體介面,並且Y等於U的一半。在具體實施例中,該等HBM2記憶體堆疊係位於與PPU 300相同的實體封裝上,從而提供與慣用GDDR5 SDRAM系統相比可觀的功率和面積節省。在具體實施例中,每個HBM2堆疊包括四個記憶體晶粒,並且Y等於4,其中HBM2堆疊包括每個晶粒兩個128位元通道,總共8個通道和1024位元之資料匯流排寬度。
在具體實施例中,記憶體304支援單錯誤校正雙錯誤偵測(Single-Error Correcting Double-Error Detecting,SECDED)錯誤校正碼(Error Correction Code,ECC)以保護資料。ECC可為對資料毀損敏感的運算應用提供更高可靠度。在PPU 300長時間處理龐大資料集及/或運行應用的大規模叢集運算環境中,可靠度尤其重要。
在具體實施例中,PPU 300實施多階記憶體階層。在具體實施例中,記憶體分區單元380支援統一記憶體,以為CPU和PPU 300記憶體提供單個統一虛擬位址空間,從而實現虛擬記憶體系統之間的資料共用。在具體實施例中,追蹤透過PPU 300存取位於其他處理器上的記憶體之頻率,以確保將記憶體頁面移動到正在更頻繁存取該等頁面的PPU 300之實體記憶體。在具體實施例中,NVLink 310支援位址轉譯服務,其允許PPU 300直接存取CPU之分頁表(page tables),並且提供透過PPU 300完全存取CPU記憶體。
在具體實施例中,複製引擎會在多個PPU 300之間或在PPU 300和CPU之間傳送資料。該等複製引擎可為未映射到該等分頁表中的位址產生分頁錯誤(page faults)。記憶體分區單元380隨後可服務該等分頁錯 誤,從而將該等位址映射到該分頁表中,之後該複製引擎可進行該傳送。在慣用系統中,針對多個處理器之間的多個複製引擎運算固定住(即是,不可分頁)記憶體,從而實質減少該可用記憶體。憑藉硬體分頁錯誤,可將位址傳遞到該等複製引擎,而無需擔心該等記憶體頁面是否常駐,並且該複製程序為透通。
可透過記憶體分區單元380提取來自記憶體304或其他系統記憶體的資料,並且將其儲存在位於晶片上且在各種GPC 350之間共用的L2快取460中。如所示,每個記憶體分區單元380包括L2快取460之一部分,其與對應的記憶體裝置304相關聯。隨後可在該等GPC 350內的各種單元中實施較低階快取。例如,每個該等SM 440可實施1階(Level one,L1)快取。該L1快取係專用於特定SM 440的專用記憶體。可提取來自L2快取460的資料,並且將其儲存在每個該等L1快取中以供在該等SM 440之該等功能單元中處理。L2快取460係耦接到記憶體介面470和XBar 370。
ROP單元450會進行與像素色彩相關的圖形點陣化運算,例如色彩壓縮、像素混色及其類似物。ROP單元450也會連同著色引擎425實施深度測試,接收有關於來自著色引擎425之剔除引擎的像素片段的取樣位置之深度。深度是與該片段相關聯的取樣位置的深度緩衝區中的對應深度來測試該深度。若該片段通過針對該取樣位置的深度測試,則ROP單元450更新該深度緩衝區,並且將該深度測試之結果傳輸到著色引擎425。將可瞭解,分區單元380之數量可不同於GPC 350之數量,因此每個ROP單元450可耦接到每個該等GPC 350。ROP單元450會追蹤從該等不同GPC 350接收的封包,並且判定ROP單元450所產生的結果係透過XBar 370路由到哪個GPC 350。儘管ROP單元450係包括在第四B圖中的記憶體分區單元380內,但在其他具體實施例中,ROP單元450可在記憶體分區單元380外部。例如,ROP單元450可常駐在GPC 350或另一單元中。
第五A圖例示依據具體實施例的第四A圖之串流多處理器440。如第五A圖中所示,SM 440包括一指令快取505、一或多個排程器單元510(K)、一暫存器檔案520、一或多個處理核心550、一或多個特殊功能單元(Special function unit,SFU)552、一或多個載入/儲存單元(Load/store unit,LSU)554、一互連網路580、一共用記憶體/L1快取570。
如以上所說明,工作分派單元325會分派在PPU 300之該等GPC 350上執行的任務。該等任務係分配給GPC 350內的特定DPC 420,並且若該任務係與著色器程式相關聯,則該任務可分配給SM 440。排程器單元510(K)會從工作分派單元325接收該等任務,並且為分派給SM 440的一或多個執行緒區塊管理指令排程。排程器單元510(K)會排程執行緒區塊以供作為平行執行緒之執行緒集執行,其中每個執行緒區塊係調配至少一執行緒集。在具體實施例中,每個執行緒集會執行32個執行緒。排程器單元510(K)可管理複數不同的執行緒區塊,從而將該等執行緒集分配給該等不同的執行緒區塊,然後在每個時脈週期期間,將來自該等複數不同協同式群組的指令分派到各種功能單元(即是,核心550、SFU 552和LSU 554)。
協同式群組係用於組織通訊執行緒之群組的編程模型,其允許開發者表達執行緒進行通訊的詳盡性(granularity),從而實現更豐富、更有效的平行分解之表達。協同式啟動API支援用於執行平行演算法的執行緒區塊之中的同步化。慣用編程模型可提供用於同步化協同執行緒的單一簡單構想:跨越執行緒區塊之所有執行緒的屏障(即是,syncthreads( )函數)。然而,程式設計師經常會希望以小於執行緒區塊詳盡性定義執行緒之群組,並且在該等經過定義群組內同步化,以實現形式為集合群組級功能介面的更高的效能、設計靈活性和軟體重複使用。
協同式群組讓程式設計師能夠以子區塊(即是,小到單個執行緒)和多區塊詳盡性明確定義執行緒之群組,並且進行集合運算,例如在協同式群組中的該等執行緒上的同步化。該編程模型支援跨越軟體邊界的無障礙(clean)組成,使得程式庫和公用程式功能可在其區域背景內安全同步化,而無需關於會合做出假設。協同式群組圖元可實現全新模式之協同式平行性,其中包括生產者-用戶平行性、機會平行性,及跨執行緒區塊之整個格點(grid)的全域同步化。
一分派單元515係構成將指令傳輸到該等功能單元之一或多個。在該具體實施例中,排程器單元510(K)包括兩個分派單元515,其實現在每個時脈週期期間分派來自相同執行緒集的兩個不同指令。在替代性 具體實施例中,每個排程器單元510(K)可包括一單個分派單元515或附加分派單元515。
每個SM 440包括一暫存器檔案520,其為SM 440之該等功能單元提供暫存器集。在具體實施例中,在每個該等功能單元之間劃分暫存器檔案520,使得每個功能單元係調配暫存器檔案520之專用部分。在另一具體實施例中,在SM 440所執行的該等不同執行緒集之間劃分暫存器檔案520。暫存器檔案520可為連接到該等功能單元之該等資料路徑的運算元(operand)提供暫時性儲存。
每個SM 440包含L個處理核心550。在具體實施例中,SM 440包括大量(例如,128個等)相異處理核心550。每個核心550可包括一完全管線的單精確度、倍精確度及/或混合精確度處理單元,其包括一浮點算術邏輯單元和一整數算術邏輯單元。在具體實施例中,該等浮點算術邏輯單元會實施針對浮點算術的IEEE 754-2008標準。在具體實施例中,該等核心550包括64個單精確度(32位元)浮點核心、64個整數核心、32個倍精確度(64位元)浮點核心和8個張量核心。
構成進行矩陣運算的張量核心,以及在具體實施例中,一或多個張量核心係包括在該等核心550中。特別是,該等張量核心係構成進行深度學習矩陣算術,例如用於類神經網路訓練和推論的卷積(convolution)運算。在具體實施例中,每個張量核心在4×4矩陣上運算,並且進行矩陣相乘和累加運算D=A×B+C,其中A、B、C和D係4×4矩陣。
在具體實施例中,該等矩陣相乘輸入A和B係16位元浮點矩陣,而該等累加矩陣C和D可16位元浮點或32位元浮點矩陣。張量核心以32位元浮點累加對16位元浮點輸入資料進行運算。該16位元浮點相乘需求64次運算,並且產生隨後使用32位元浮點加法累加的完全精確度乘積,其中其他中間乘積用於4×4×4矩陣相乘。實際上,使用張量核心進行從這些較小元素建構的更大型許多的二維或更高維矩陣運算。API(例如CUDA 9 C++ API)會揭露專門矩陣載入、矩陣相乘和累加以及矩陣儲存運算,以有效使用來自CUDA-C++程式的張量核心。在該CUDA階,該執行緒集階介面假設16×16大小的矩陣跨距(spanning)該執行緒集之所有32個執 行緒。
每個SM 440也包含M個SFU 552,其會進行特殊功能(例如,屬性評估、互反平方根及其類似物)。在具體實施例中,該等SFU 552可包括一構成尋訪階層樹狀資料結構的樹狀尋訪(tree traversal)單元。在具體實施例中,該等SFU 552可包括構成進行紋理映射過濾運算的紋理單元。在具體實施例中,該等紋理單元係構成從記憶體304載入紋理映射(例如,紋素(texel)之2D陣列),並且取樣該等紋理映射以生成用於SM 440所執行著色器程式的經過取樣紋理值。在具體實施例中,該等紋理映射係儲存在共用記憶體/L1快取470中。該等紋理單元會實施紋理運算,例如使用MIP映射(mip-maps)(即是,不同細節層級之紋理映射)的過濾運算。在具體實施例中,每個SM 340包括兩個紋理單元。
每個SM 440也包含N個LSU 554,其會在共用記憶體/L1快取570和暫存器檔案520之間實施載入和儲存運算。每個SM 440包括一互連網路580,其將每個該等功能單元連接到暫存器檔案520,並且將LSU 554連接到暫存器檔案520、共用記憶體/L1快取570。在具體實施例中,互連網路580為交叉開關,其可構成將該等功能單元之任一者連接到暫存器檔案520中的該等暫存器之任一者,並且將該等LSU 554連接到共用記憶體/L1快取570中的暫存器檔案和記憶體位置。
共用記憶體/L1快取570係晶片上記憶體之陣列,允許SM 440和圖元引擎435之間及SM 440中的執行緒之間的資料儲存和通訊。在具體實施例中,共用記憶體/L1快取570包含128KB之儲存容量,並且係在從SM 440到分區單元380的路徑中。可使用共用記憶體/L1快取570快取讀取和寫入。共用記憶體/L1快取570、L2快取460和記憶體304之一或多個係備份儲存。
將資料快取和共用記憶體功能性結合到單個記憶體區塊中,可為兩種類型之記憶體存取提供最佳整體效能。可透過未使用共用記憶體的程式將該容量用作快取。例如,若共用記憶體係構成使用該容量之一半,則紋理和載入/儲存運算可使用該剩餘容量。共用記憶體/L1快取570內的整合使得共用記憶體/L1快取570能夠用作高傳輸量管道,以供串流資 料同時提供對頻繁重複使用資料的高頻寬和低延遲存取。
當針對通用平行運算進行配置時,與圖形處理相比可使用較簡單的配置。具體而言,會繞過第三圖中所示該等固定功能圖形處理單元,從而創建更簡單許多的編程模型。在該通用平行運算配置中,工作分派單元325會直接將執行緒之區塊分派和分配給該等DPC 420。區塊中的該等執行緒會執行相同程式,從而在該計算中使用獨特執行緒ID以確保每個執行緒產生獨特結果,從而使用SM 440執行該程式且進行計算、使用共用記憶體/L1快取570在執行緒之間通訊,並且使用LSU 554透過共用記憶體/L1快取570和記憶體分區單元380讀取和寫入全域記憶體。當針對通用平行運算進行配置時,SM 440也可寫入排程器單元320可將其用於在該等DPC 420上啟動新工作的命令。
PPU 300可包括在桌上型電腦、膝上型電腦、平板電腦、伺服器、超級電腦、智慧型手機(例如,無線、手持式裝置)、個人數位助理(Personal digital assistant,PDA)、數位相機、車輛、頭戴式顯示器、手持式電子裝置及其類似物中。在具體實施例中,PPU 300係體現在單一半導體基板上。在另一具體實施例中,PPU 300係包括在系統單晶片(System-on-a-chip,SoC)中,其伴隨一或多個其他裝置,例如附加PPU 300、記憶體204、精簡指令集電腦(Reduced instruction set computer,RISC)CPU、記憶體管理單元(Memory management unit,MMU)、數位類比轉換器(Digital-to-analog converter,DAC)及其類似物。
在具體實施例中,PPU 300可包括在圖形卡上,其包括一或多個記憶體裝置304。該圖形卡可構成與桌上型電腦之主機板上的PCIe插槽介接。在又另一具體實施例中,PPU 300可包括在該主機板之晶片組中的整合式圖形處理單元(integrated graphics processing unit,iGPU)或平行處理器。
示例性運算系統
隨著開發人員在人工智慧運算等應用中揭露和運用更多平行性,在多種產業中使用配備多個GPU和CPU的系統。為了解決越來越龐大的問題,已在資料中心、研究機構和超級電腦中部署具有數十至成千 上萬個運算節點的高效能GPU加速系統。隨著該等高效能系統內的處理裝置之數量增加,需要擴展該等通訊和資料傳送機制以支援該所增加的頻寬。
第五B圖係依據具體實施例使用第三圖之PPU 300實施的處理系統500之概念圖。示例性系統565可構成實施第一A圖中所示方法100、第二A圖中所示方法200或第二D圖中所示方法240。處理系統500包括一CPU 530、交換器510和多個PPU 300及其各自記憶體304。NVLink 310可提供每個該等PPU 300之間的高速通訊鏈路(links)。儘管第五B圖中例示特定數量之NVLink 310和互連線302連接,但到每個PPU 300和CPU 530的連接之數量可變化。交換器510在互連線302和CPU 530之間介接。該等PPU 300、記憶體304和NVLink 310可位於單一半導體平台上,以形成平行處理模組525。在具體實施例中,交換器510支援在各種不同連接及/或鏈路之間介接的兩個或多個協定。
在另一具體實施例(未顯示)中,NVLink 310可提供每個該等PPU 300之間的一或多個高速通訊鏈路,並且CPU 530和交換器510在互連線302和每個該等PPU 300之間介接。該等PPU 300、記憶體304和互連線302可位於單一半導體平台上,以形成平行處理模組525。在又另一具體實施例(未顯示)中,互連線302可提供每個該等PPU 300之間的一或多個通訊鏈路,並且CPU 530和交換器510使用NVLink 310在每個該等PPU 300之間介接,以提供該等PPU 300之間的一或多個高速通訊鏈路。在另一具體實施例(未顯示)中,NVLink 310可提供透過交換器510在該等PPU 300和CPU 530之間的一或多個高速通訊鏈路。在又另一具體實施例(未顯示)中,互連線302可直接提供每個該等PPU 300之間的一或多個通訊鏈路。NVLink 310高速通訊鏈路之一或多個可實施為實體NVLink互連線,或擇一實施為使用與NVLink 310相同的協定的晶片上或晶粒上互連線。
在本發明所說明內容之情況下,單一半導體平台可指稱在晶粒或晶片上製造的單獨的個體半導體型積體電路。應注意,該用語單一半導體平台也可指稱連接性提高的多晶片模組,其模擬晶片上運算且在利用慣用匯流排實作方面做出可觀改進。當然,也可依使用者所需將各種電路或裝置分開或以半導體平台之各種組合設置。或者,平行處理模組525可 實施為電路板基板,並且每個該等PPU 300及/或記憶體304可經過封裝裝置。在具體實施例中,CPU 530、交換器510和平行處理模組525係位於單一半導體平台上。
在具體實施例中,每個NVLink 310之發信率(signaling rate)係200至250億位元/秒,並且每個PPU 300包括六個NVLink 310介面(例如,第五B圖中所示,每個PPU 300包括五個NVLink 310介面)。每個NVLink 310在每個方向上提供250億位元組/秒之資料傳送速率,其中六個鏈路提供3,000億位元組/秒。當CPU 530也包括一或多個NVLink 310介面時,可專為如第五B圖中所示PPU到PPU通訊,或PPU到PPU和PPU到CPU之一些組合使用該等NVLink 310。
在具體實施例中,NVLink 310允許從CPU 530到每個PPU 300之記憶體304的直接載入/儲存/基原(atomic)存取。在具體實施例中,NVLink 310支援一致性運算,從而允許將從記憶體304讀取的資料儲存在CPU 530之快取階層中,減少CPU 530的快取存取延遲。在具體實施例中,NVLink 310包括支援位址轉譯服務(Address Translation Services,ATS),從而允許PPU 300直接存取CPU 530內的分頁表。該等NVLink 310之一或多個也可構成在低功率模式下運算。
第五C圖例示其中可實施各種先前具體實施例之各種架構及/或功能性的示例性系統565。示例性系統565可構成實施第一A圖中所示方法100、第二A圖中所示方法200或第二D圖中所示方法240。
如所示,所提供的系統565包括至少一中央處理單元530,其係連接到通訊匯流排575。可使用任何合適協定實施通訊匯流排575,例如周邊組件互連(Peripheral Component Interconnect,PCI)、快速周邊組件互連(PCI-Express)、加速圖形埠(Accelerated Graphics Port,AGP)、HyperTransport、或任何其他匯流排或點對點通訊協定。系統565也包括一主記憶體540。將控制邏輯(軟體)和資料儲存在可採取隨機存取記憶體(Random access memory,RAM)之形式的主記憶體540中。
系統565也包括輸入裝置560、平行處理系統525和顯示器裝置545,亦即慣用陰極射線管(Cathode ray tube,CRT)、液晶顯示器(Liquid crystal display,LCD)、發光二極體(Light emitting diode,LED)、電漿顯示器或其類似物。可從該等輸入裝置560(例如,鍵盤、滑鼠、觸控板、麥克風及其類似物)接收使用者輸入。每個前述模組及/或裝置甚至可位於單一半導體平台上,以形成系統565。或者,也可依使用者所需將各種模組分開或以半導體平台之各種組合設置。
再者,可為了通訊目的而透過網路介面535將系統565耦接到網路,例如電信網路、區域網路(Local area network,LAN)、無線網路、網際網路等廣域網路(Wide area network,WAN)、對等(Peer-to-Peer)網路、有線網路及其類似物。
系統565也可包括一輔助儲存器(未顯示)。輔助儲存器610包括例如一硬碟機及/或一可拆卸儲存磁碟機,其代表軟式磁碟機、磁帶機、光碟機、數位影音光碟(Digital versatile disk,DVD)機、記錄裝置、通用串列匯流排(Universal serial bus,USB)快閃記憶體。該可拆卸儲存磁碟機會以已習知方式寫入到可拆卸儲存單元及/或從其讀取。
可將電腦程式或電腦控制邏輯演算法儲存在主記憶體540及/或該輔助儲存器中。當執行這樣的電腦程式時,會使得系統565能夠進行各種功能。記憶體540、該儲存器及/或任何其他儲存器係電腦可讀取媒體之可範例。
可在一般電腦系統、電路板系統、專用於娛樂目的之遊戲機系統、特定應用系統及/或任何其他所需系統之情況下,實施各種先前圖式之架構及/或功能性。例如,系統565可採取桌上型電腦、膝上型電腦、平板電腦、伺服器、超級電腦、智慧型手機(例如,無線、手持式裝置)、個人數位助理(PDA)、數位相機、車輛、頭戴式顯示器、手持式電子裝置、行動電話裝置、電視、工作站、遊戲機、嵌入式系統及/或任何其他類型之邏輯之形式。
儘管以上已說明各種具體實施例,但應可理解其僅係藉由範例而非限制進行說明。因此,較佳具體實施例之廣度和範疇不應受到該等以上所說明的示例性具體實施例任一者限制,而是應僅依據下列諸申請專利範圍及其相等物進行定義。
圖形處理管線
在具體實施例中,PPU 300包含一圖形處理單元(GPU)。PPU 300係構成接收指定用於處理圖形資料的著色器程式的命令。可將圖形資料定義為圖元集,例如點、線、三角形、四邊形、三角形條帶及其類似物。通常,圖元包括資料,其針對該圖元指定若干頂點(例如,在模型空間坐標系中),以及與該圖元之每個頂點相關聯的屬性。PPU 300可構成處理該等圖形圖元,以產生畫面緩衝區(即是,用於該顯示器之每個該等像素的像素資料)。
應用程式將用於場景的模型資料(即是,頂點和屬性之集合)寫入到系統記憶體或記憶體304等記憶體。該模型資料定義可在顯示器上可見的每個該等物件。該應用程式隨後對該驅動程式核心進行API呼叫,請求即將繪圖和顯示的模型資料。該驅動程式核心會讀取該模型資料,並且將命令寫入一或多個串流,以進行處理該模型資料的運算。該等命令可參照即將在包括頂點著色器、輪廓著色器(Hull shader)、網域著色器、幾何著色器和像素著色器之一或多個的PPU 300之該等SM 440上實施的不同著色器程式。例如,該等SM 440之一或多個可構成執行處理該模型資料所定義的若干頂點的頂點著色器程式。在具體實施例中,該等不同SM 440可構成並行執行不同著色器程式。例如,SM 440之第一子集可構成執行頂點著色器程式,而SM 440之第二子集可構成執行像素著色器程式。SM 440之第一子集會處理頂點資料以生成經過處理頂點資料,並且將該經過處理頂點資料寫入到L2快取460及/或記憶體304。在將該經過處理頂點資料點陣化(即是,在螢幕空間中從三維資料變換成兩維資料)以生成片段資料之後,SM 440之第二子集會執行像素著色器以生成經過處理片段資料,隨後將其與其他經過處理片段資料混合且寫入到記憶體304中的畫面緩衝區。該頂點著色器程式和像素著色器程式可並行執行,從而以管線方式處理來自相同場景的不同資料,直到已將用於該場景的所有模型資料描繪到該畫面緩衝區。然後,將該畫面緩衝區之該等內容傳輸到顯示控制器,以供在顯示器裝置上顯示。
第六圖係依據具體實施例的第三圖之PPU 300所實施的圖 形處理管線600之概念圖。圖形處理管線600係實施以從3D幾何資料產生2D電腦產出影像的該等處理步驟之摘要流程圖。如已習知,管線架構可透過將該運算分成複數階段更有效進行長延遲運算,其中每個階段之輸出係耦接到該下一個連續階段之輸入。因此,圖形處理管線600會接收係從圖形處理管線600之一個階段傳輸到該下一個階段的輸入資料601,以產生輸出資料602。在具體實施例中,圖形處理管線600可代表該OpenGL® API所定義的圖形處理管線。選擇上,可在該等先前圖式及/或任何後續圖式之功能性和架構之情況下實施圖形處理管線600。
如第六圖中所示,圖形處理管線600包含一管線架構,其包括若干階段。該等階段包括但不限於一資料組合階段610、一頂點著色階段620、一圖元組合階段630、一幾何著色階段640、一視埠縮放、剔除及剪切(Viewport scale,cull,and clip,VSCC)階段650、一點陣化階段660、一片段著色階段670和一點陣化運算階段680。在具體實施例中,輸入資料601包含命令,其配置該等處理單元實施圖形處理管線600之該等階段,以及即將透過該等階段處理的幾何圖元(例如,點、線、三角形、四邊形、三角形條帶或扇形等)。輸出資料602可包含像素資料(即是,色彩資料),其係複製到記憶體中的畫面緩衝區或其他類型之表面資料結構中。
資料組合階段610會接收指定用於高階表面、圖元及其類似物的頂點資料的輸入資料601。資料組合階段610會例如透過從包括指向記憶體中一緩衝區的一指標的主機處理器接收命令且從該緩衝區讀取該頂點資料,在暫時性儲存器或佇列中收集該頂點資料。隨後將該頂點資料傳輸到頂點著色階段620進行處理。
頂點著色階段620會透過針對每個該等頂點進行一次運算集(即是,頂點著色器或程式)處理頂點資料。可將頂點例如指定為有關一或多個頂點屬性(例如,色彩、紋理坐標、表面法線等)的4個坐標向量(即是,<x,y,z,w>)。頂點著色階段620可操控個別頂點屬性,例如方位、色彩、紋理坐標及其類似物。換言之,頂點著色階段620會對與頂點相關聯的該等頂點坐標或其他頂點屬性進行運算。這樣的運算普遍包括打光(lighting)運算(即是,修改頂點的色彩屬性)和變換運算(即是,修改頂點的坐標空間)。 例如,可使用物件坐標空間中的坐標指定頂點,其係透過將該等坐標乘以將該等坐標從該物件坐標空間轉譯成世界空間或正規化裝置坐標(Normalized-device-coordinate,NCD)空間的矩陣進行變換。頂點著色階段620會產生係傳輸到圖元組合階段630的經過變換頂點資料。
圖元組合階段630會收集頂點著色階段620所輸出的頂點,並且將該等頂點群組成幾何圖元以供透過幾何著色階段640處理。例如,圖元組合階段630可構成將每三個連續頂點群組為幾何圖元(即是,三角形),以供傳輸到幾何著色階段640。在一些具體實施例中,可將指定頂點重複用於連續幾何圖元(例如,三角形條帶中的兩個連續三角形可共用兩個頂點)。圖元組合階段630將幾何圖元(即是,相關聯頂點之集合)傳輸到幾何著色階段640。
幾何著色階段640會透過對該等幾何圖元進行運算集(即是,幾何著色器或程式)處理幾何圖元。平面填充(tessellation)運算可從每個幾何圖元產生一或多個幾何圖元。換言之,幾何著色階段640可將每個幾何圖元細分成兩個或多個幾何圖元之更精細網格(mesh),以供透過圖形處理管線600之其餘部分處理。幾何著色階段640將幾何圖元傳輸到視埠SCC階段650。
在具體實施例中,圖形處理管線600可在串流多處理器內運算,並且頂點著色階段620、圖元組合階段630、幾何著色階段640、片段著色階段670及/或與其相關聯的硬體/軟體可順序進行處理運算。一旦該等順序處理運算完成,在具體實施例中,視埠SCC階段650就可利用該資料。在具體實施例中,可將圖形處理管線600中的該等階段之一或多個所處理的圖元資料寫入到快取(例如,L1快取、頂點快取等)。在這種情況下,在具體實施例中,視埠SCC階段650可存取該快取中的資料。在具體實施例中,將視埠SCC階段650和點陣化階段660實施為固定功能電路。
視埠SCC階段650會進行該等幾何圖元之視埠縮放、剔除及剪切。經過繪圖到的每個表面係與摘要相機方位相關聯。該相機方位代表看著該場景的觀看者之位置,並且定義封圍該場景之該等物件的視見平截頭體。該視見平截頭體可包括一觀看平面、一後側平面和四個剪切平面。 由於該幾何圖元將無助於該最後經過繪圖場景,因此可剔除(即是,廢除)完全在該視見平截頭體外部的任何幾何圖元。可剪切部分在該視見平截頭體內部而部分在該視見平截頭體外部的任何幾何圖元(即是,變換成封圍在該視見平截頭體內的新幾何圖元)。再者,可將每個幾何圖元基於該視見平截頭體之深度進行縮放。隨後將所有潛在可見的幾何圖元傳輸到點陣化階段660。
點陣化階段660將該等3D幾何圖元轉換成2D片段(例如,能夠用於顯示等)。點陣化階段660可構成利用該等幾何圖元之該等頂點設置從其可內插各種屬性的平面方程式集。點陣化階段660也可運算用於複數像素的覆蓋遮罩,其指出針對該像素的一或多個取樣位置是否攔截該幾何圖元。在具體實施例中,也可進行z測試以判定已被點陣化的其他幾何圖元是否遮擋該幾何圖元。點陣化階段660會產生係傳輸到片段著色階段670的片段資料(即是,有關每個所涵蓋像素的特定取樣位置的經過內插頂點屬性)。
片段著色階段670會透過對每個該等片段進行運算集(即是,片段著色器或程式)處理片段資料。片段著色階段670可例如透過使用針對該片段的經過內插紋理坐標進行打光運算或取樣紋理映射,產生該片段的像素資料(即是,色彩值)。片段著色階段670會產生係傳輸到點陣化運算階段680的像素資料。
點陣化運算階段680可對該像素資料進行各種運算,例如進行初級(alpha)測試、模板測試,以及將該像素資料與對應於與該像素相關聯的其他片段的其他像素資料混合。當點陣化運算階段680已結束處理該像素資料(即是,輸出資料602)時,可將該像素資料寫入到畫面緩衝區、色彩緩衝區或其類似物等繪圖目標。
將可瞭解,除了以上所說明的該等階段之一或多個之外或進行替代,圖形處理管線600中可包括一或多個附加階段。該摘要圖形處理管線之各種實作可實施不同階段。再者,在一些具體實施例中,可從該圖形處理管線排除以上所說明的該等階段之一或多個(例如幾何著色階段640)。將其他類型之圖形處理管線設想為在本發明所揭示內容之範疇內。再 者,可透過PPU 300等圖形處理器內的一或多個專用硬體單元實施圖形處理管線600之該等階段任一者。可透過PPU 300之SM 440等可編程硬體單元實施圖形處理管線600之其他階段。
可經由CPU等主機處理器所執行的應用程式實施圖形處理管線600。在具體實施例中,裝置驅動程式可實施應用程式界面(API),其定義應用程式可利用以便產生顯示用圖形資料的各種功能。該裝置驅動程式係包括控制PPU 300之運算的複數指令的軟體程式。該API會為程式設計師提供摘要,其讓程式設計師利用PPU 300等專門圖形硬體產生該圖形資料,而不會要求該程式設計師利用針對PPU 300的特定指令集。該應用程式可包括一API呼叫,其係路由到用於PPU 300的裝置驅動程式。該裝置驅動程式會解譯該API呼叫且進行各種運算以回應該API呼叫。在一些實例中,該裝置驅動程式可透過在該CPU上執行指令進行運算。在其他實例中,該裝置驅動程式可至少部分透過利用該CPU和PPU 300之間的輸入/輸出介面在PPU 300上啟動運算進行運算。在具體實施例中,該裝置驅動程式係構成利用PPU 300之硬體實施圖形處理管線600。
可在PPU 300內執行各種程式,以便實施圖形處理管線600之各種階段。例如,該裝置驅動程式可啟動PPU 300上的核心,以在一個SM 440(或多個SM 440)上進行頂點著色階段620。該裝置驅動程式(或PPU 400所執行的初始核心)也可啟動PPU 400上的其他核心,以進行圖形處理管線600之其他階段,例如幾何著色階段640和片段著色階段670。此外,可在固定單元硬體(例如,實施在PPU 400內的點陣化器或資料組合器)上實施圖形處理管線600之一些該等階段。將可瞭解,可在透過SM 440上的後續核心處理之前,透過一或多個介於其間的固定功能硬體單元處理來自一個核心的結果。
機器學習
在PPU 300等處理器上開發的深度類神經網路(Deep neural network,DNN)已用於多種多樣使用案例,從自動駕駛汽車到更快的藥物開發,以及從線上影像資料庫中的自動影像字幕到視訊聊天應用程式中的智慧即時語言翻譯。深度學習技術會模擬人類大腦之類神經學習過程、持續 學習、持續變得更聰明,並且隨著時間而更快速提供更準確的結果。兒童最初係由成人教導正確識別和分類各種形狀,最後無需任何指導就能識別形狀。同樣地,深度學習或類神經學習系統需要在物件辨識和分類方面進行訓練,以便在識別基本物件、被遮擋的物件等時變得更聰明有效,同時也會對物件指定背景。
在最簡單的層級上,人類大腦中的神經元會看著所接收到的各種輸入、對每個這些輸入指定重要層級,並且將輸出傳遞到其他神經元進行作用。人工神經元或感知元(perceptron)係類神經網路之最基本的模型。在一個範例中,感知元可接收代表該感知元經過訓練進行辨識和分類的物件之各種特徵的一或多個輸入,並且基於該特徵在定義物件之形狀方面之重要性對每個這些特徵指定特定權重。
深度類神經網路(DNN)模型包括多層之許多所連接的感知元(例如,節點),其可以大量輸入資料進行訓練以在高準確度情況下快速解決複雜問題。在一個範例中,該DLL模型之第一層將汽車之輸入影像分解成各種區段,並且尋找線和角度等基本圖案。該第二層會組合該等線以尋找車輪、擋風玻璃和鏡子等更高層級圖案。該下一層會識別車輛之類型,並且該等最後幾層會為該輸入影像產生標記,從而識別出特定汽車品牌之車款。
一旦該DNN經過訓練,就可在已知為推論的程序中部署該DNN並且將其用於識別和分類物件或圖案。推論(DNN從給定輸入提取有用資訊所透過的程序)之範例包括識別存入自動櫃員機(ATM machines)中的支票上的手寫數字、識別照片中朋友之影像、向超過五千萬名使用者提供電影推薦、識別和分類不同類型之汽車、行人以及無人駕駛車的道路危險,或即時翻譯人類言語。
在訓練期間,資料會在正向傳播階段中流過該DNN,直到生成指出對應於該輸入的標記的預測。若該類神經網路未正確標記該輸入,則會分析該正確標記和該所預測標記之間的誤差,並且在逆向傳播階段期間針對每個特徵調整該等權重,直到該DNN在訓練資料集中正確標記該輸入和其他輸入。訓練複雜的類神經網路需求大量平行運算效能,其中 包括PPU 300所支援的浮點乘算和加算。進行推論所需要的運算比進行訓練少,從而係延遲敏感程序,其中將經過訓練的類神經網路施加於其從未見過的新輸入以分類影像、翻譯言語,並且一般來說推知新資訊。
類神經網路極度仰賴矩陣數學運算,並且複雜的多層網路在效率和速度方面需求大量浮點效能和頻寬。憑藉數千個處理核心、針對矩陣數學運算進行最佳化,並且提供每秒數十至數百兆次浮點運算(TFLOPS)之效能,PPU 300係能夠提供基於深度類神經網路的人工智慧和機器學習應用所需求效能的運算平台。

Claims (20)

  1. 一種電腦實施方法,包括:當使用者之雙眼在觀看一顯示器裝置的同時相對於使用者之頭部移動時,偵測一暫時性視覺抑制事件;修改相對於使用者的一虛擬場景之一定向,以將使用者導向沿著通過對應於該虛擬場景的一虛擬環境的規劃路徑以實體移動;及依據該經過修改定向在該顯示器裝置上顯示該虛擬場景。
  2. 如申請專利範圍第1項之電腦實施方法,其中該暫時性視覺抑制事件包含一掃視。
  3. 如申請專利範圍第1項之電腦實施方法,其中依據一重新定向轉動值限制該定向之修改。
  4. 如申請專利範圍第1項之電腦實施方法,其更包括修改該顯示器裝置之至少一像素以誘發一暫時性視覺抑制事件。
  5. 如申請專利範圍第4項之電腦實施方法,其中該至少一像素係在使用者之凝視之一周邊區域中。
  6. 如申請專利範圍第4項之電腦實施方法,其更包括,在修改該至少一像素之前,判定在一持續時間內尚未發生一暫時性視覺抑制事件。
  7. 如申請專利範圍第4項之電腦實施方法,其更包括,在修改該至少一像素之前,判定使用者將與使用者所在一實體環境中的一障礙物碰撞。
  8. 如申請專利範圍第1項之電腦實施方法,其更包括修改該虛擬環境中的至少一物件之一屬性以誘發一暫時性視覺抑制事件。
  9. 如申請專利範圍第8項之電腦實施方法,其更包括基於使用者之凝視及從使用者之一虛擬視點到該至少一物件的距離,選擇該至少一物件。
  10. 如申請專利範圍第1項之電腦實施方法,其中當使用者之凝視改變一掃視臨界值時,識別該暫時性視覺抑制事件。
  11. 一種系統,包括:一事件偵測引擎,其構成當使用者之雙眼在觀看一顯示器裝置的同時相對於使用者之頭部移動時,偵測一暫時性視覺抑制事件;一重新定向引擎,其耦接到該事件偵測引擎並且構成修改相對於使 用者的虛擬場景之一定向,以將使用者導向沿著通過對應於該虛擬場景的一虛擬環境的規劃路徑以實體移動;及一圖形處理單元,其耦接到該重新定向引擎,並且構成依據該經過修改定向在該顯示器裝置上顯示該虛擬場景。
  12. 如申請專利範圍第11項之系統,其中該暫時性視覺抑制事件包括一掃視。
  13. 如申請專利範圍第11項之系統,其中依據一重新定向轉動值限制該定向之修改。
  14. 如申請專利範圍第11項之系統,其中該圖形處理單元係更構成修改該顯示器裝置之至少一像素以誘發一暫時性視覺抑制事件。
  15. 如申請專利範圍第14項之系統,其中該至少一像素係在使用者之凝視之一周邊區域中。
  16. 如申請專利範圍第14項之系統,其中該重新定向引擎係更構成判定在該至少一像素經過修改之前,在一持續時間內是否已發生一暫時性視覺抑制事件。
  17. 如申請專利範圍第14項之系統,其中該重新定向引擎係更構成判定在該至少一像素經過修改之前,使用者是否將與使用者所在一實體環境中的一障礙物碰撞。
  18. 如申請專利範圍第14項之系統,其中該重新定向引擎係更構成修改該虛擬環境中的至少一物件之一屬性以誘發一暫時性視覺抑制事件。
  19. 如申請專利範圍第18項之系統,其中基於使用者之凝視及從使用者之一虛擬視點到該至少一物件的距離,選擇該至少一物件。
  20. 一種儲存指令的非暫時性電腦可讀取儲存媒體,其中該等指令當透過一處理單元執行時,使該處理單元:當使用者之雙眼在觀看一顯示器裝置的同時相對於使用者之頭部移動時,偵測一暫時性視覺抑制事件;修改相對於使用者的虛擬場景之一定向,以將使用者導向沿著通過對應於該虛擬場景的一虛擬環境的規劃路徑以實體移動;及依據該經過修改定向在該顯示器裝置上顯示該虛擬場景。
TW107123228A 2017-07-07 2018-07-03 針對虛擬實境漫步式的掃視重新定向 TWI693531B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762529959P 2017-07-07 2017-07-07
US62/529,959 2017-07-07
US16/024,591 US10573061B2 (en) 2017-07-07 2018-06-29 Saccadic redirection for virtual reality locomotion
US16/024,591 2018-06-29

Publications (2)

Publication Number Publication Date
TW201907270A true TW201907270A (zh) 2019-02-16
TWI693531B TWI693531B (zh) 2020-05-11

Family

ID=64666438

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107123228A TWI693531B (zh) 2017-07-07 2018-07-03 針對虛擬實境漫步式的掃視重新定向

Country Status (3)

Country Link
US (2) US10573061B2 (zh)
DE (1) DE102018116552A1 (zh)
TW (1) TWI693531B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10981060B1 (en) 2016-05-24 2021-04-20 Out of Sight Vision Systems LLC Collision avoidance system for room scale virtual reality system
US10650591B1 (en) 2016-05-24 2020-05-12 Out of Sight Vision Systems LLC Collision avoidance system for head mounted display utilized in room scale virtual reality system
JP7051457B2 (ja) * 2018-01-17 2022-04-11 キヤノン株式会社 画像処理装置、画像処理方法、及びプログラム
US11250617B1 (en) * 2019-09-25 2022-02-15 Amazon Technologies, Inc. Virtual camera controlled by a camera control device
US20210232210A1 (en) * 2020-01-28 2021-07-29 Facebook Technologies, Llc Virtual path generation in a virtual environment that is based on a physical environment
US11557105B2 (en) * 2020-09-16 2023-01-17 Concordia University Managing real world and virtual motion
TWI799012B (zh) * 2021-12-17 2023-04-11 王一互動科技有限公司 呈現立體空間模型的電子裝置及方法
US20230316663A1 (en) * 2022-03-30 2023-10-05 Tmrw Foundation Ip S. À R.L. Head-tracking based media selection for video communications in virtual environments

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649061A (en) 1995-05-11 1997-07-15 The United States Of America As Represented By The Secretary Of The Army Device and method for estimating a mental decision
US6369952B1 (en) 1995-07-14 2002-04-09 I-O Display Systems Llc Head-mounted personal visual display apparatus with image generator and holder
US6154211A (en) 1996-09-30 2000-11-28 Sony Corporation Three-dimensional, virtual reality space display processing apparatus, a three dimensional virtual reality space display processing method, and an information providing medium
AT505338B1 (de) 2007-06-12 2009-03-15 Ernst Dipl Ing Dr Pfleger Verfahren zur wahrnehmungsmessung
US8259117B2 (en) 2007-06-18 2012-09-04 Brian Mark Shuster Avatar eye control in a multi-user animation environment
JP5873982B2 (ja) 2012-10-09 2016-03-01 パナソニックIpマネジメント株式会社 3次元表示装置、3次元画像処理装置および3次元表示方法
US10231614B2 (en) 2014-07-08 2019-03-19 Wesley W. O. Krueger Systems and methods for using virtual reality, augmented reality, and/or a synthetic 3-dimensional information for the measurement of human ocular performance
US20140240351A1 (en) 2013-02-27 2014-08-28 Michael Scavezze Mixed reality augmentation
US9256072B2 (en) 2013-10-02 2016-02-09 Philip Scott Lyren Wearable electronic glasses that detect movement of a real object copies movement of a virtual object
US10459254B2 (en) 2014-02-19 2019-10-29 Evergaze, Inc. Apparatus and method for improving, augmenting or enhancing vision
US10424103B2 (en) 2014-04-29 2019-09-24 Microsoft Technology Licensing, Llc Display device viewer gaze attraction
AU2015297036B2 (en) 2014-05-09 2017-09-28 Google Llc Systems and methods for discerning eye signals and continuous biometric identification
EP3155560B1 (en) 2014-06-14 2020-05-20 Magic Leap, Inc. Methods and systems for creating virtual and augmented reality
US20160027218A1 (en) 2014-07-25 2016-01-28 Tom Salter Multi-user gaze projection using head mounted display devices
US9599821B2 (en) 2014-08-08 2017-03-21 Greg Van Curen Virtual reality system allowing immersion in virtual space to consist with actual movement in actual space
US20160147408A1 (en) 2014-11-25 2016-05-26 Johnathan Bevis Virtual measurement tool for a wearable visualization device
US20160210780A1 (en) 2015-01-20 2016-07-21 Jonathan Paulovich Applying real world scale to virtual content
CN105988219B (zh) 2015-03-17 2020-11-10 精工爱普生株式会社 头部佩戴型显示装置以及头部佩戴型显示装置的控制方法
US10678897B2 (en) 2015-04-16 2020-06-09 Tobii Ab Identification, authentication, and/or guiding of a user using gaze information
US9588593B2 (en) 2015-06-30 2017-03-07 Ariadne's Thread (Usa), Inc. Virtual reality system with control command gestures
US20170148214A1 (en) 2015-07-17 2017-05-25 Ivd Mining Virtual reality training
US20170090194A1 (en) 2015-09-24 2017-03-30 Halo Augmented Reality Ltd. System And Method For Subtractive Augmented Reality And Display Contrast Enhancement
EP3353632B1 (en) 2015-09-24 2022-10-05 Tobii AB Eye-tracking enabled wearable devices
US10338677B2 (en) 2015-10-28 2019-07-02 Microsoft Technology Licensing, Llc Adjusting image frames based on tracking motion of eyes
US20170123488A1 (en) 2015-10-28 2017-05-04 Microsoft Technology Licensing, Llc Tracking of wearer's eyes relative to wearable device
US10761327B2 (en) 2015-11-18 2020-09-01 Facebook Technologies, Llc Directed display architecture
KR102534849B1 (ko) 2015-12-11 2023-05-18 삼성전자주식회사 배터리의 이온 농도 및 쿨롱 카운팅 soc를 실시간으로 조정하는 방법
US10908279B2 (en) 2016-03-11 2021-02-02 Facebook Technologies, Llc Ultrasound/radar for eye tracking
US10481682B2 (en) 2016-03-29 2019-11-19 Google Llc System and method for generating virtual marks based on gaze tracking
WO2017177187A1 (en) 2016-04-08 2017-10-12 Vizzario, Inc. Methods and systems for obtaining. analyzing, and generating vision performance data and modifying media based on the data
CA3023488C (en) 2016-04-14 2022-06-28 The Research Foundation For The State University Of New York System and method for generating a progressive representation associated with surjectively mapped virtual and physical reality image data
US10019131B2 (en) 2016-05-10 2018-07-10 Google Llc Two-handed object manipulations in virtual reality
US10311641B2 (en) * 2016-12-12 2019-06-04 Intel Corporation Using saccadic eye movements to improve redirected walking
US9866286B1 (en) 2017-02-15 2018-01-09 Oculus Vr, Llc Positional tracking assisted beam forming in wireless virtual reality systems

Also Published As

Publication number Publication date
US20200160590A1 (en) 2020-05-21
US10573061B2 (en) 2020-02-25
DE102018116552A1 (de) 2019-01-10
TWI693531B (zh) 2020-05-11
US20190012824A1 (en) 2019-01-10
US10922876B2 (en) 2021-02-16

Similar Documents

Publication Publication Date Title
US10573071B2 (en) Path planning for virtual reality locomotion
TWI693531B (zh) 針對虛擬實境漫步式的掃視重新定向
US11182649B2 (en) Generation of synthetic images for training a neural network model
US10930022B2 (en) Motion adaptive rendering using variable rate shading
US10970816B2 (en) Motion blur and depth of field reconstruction through temporally stable neural networks
US10762620B2 (en) Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene
US10948985B2 (en) Retina space display stabilization and a foveated display for augmented reality
US20210181674A1 (en) System and method for near-eye light field rendering for wide field of view interactive three-dimensional computer graphics
US11790609B2 (en) Reducing level of detail of a polygon mesh to decrease a complexity of rendered geometry within a scene
US11734890B2 (en) Three-dimensional model recovery from two-dimensional images
CN113393564B (zh) 利用全局照明数据结构的基于水塘的时空重要性重采样
CN115379185A (zh) 使用可变速率着色的运动自适应渲染
US20210027520A1 (en) Performance of ray-traced shadow creation within a scene
US11875478B2 (en) Dynamic image smoothing based on network conditions
US11270161B2 (en) Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene
US11055381B1 (en) Estimating product integrals using a composition of warps
US11966765B2 (en) Memory bandwidth throttling for virtual machines
US20200177798A1 (en) Machine Learning of Environmental Conditions to Control Positioning of Visual Sensors
US11783532B1 (en) View synthesis using attribute correspondences and geometric relationship constraints