KR102606469B1 - 멀티 서버 클라우드 가상 현실(vr) 스트리밍 - Google Patents
멀티 서버 클라우드 가상 현실(vr) 스트리밍 Download PDFInfo
- Publication number
- KR102606469B1 KR102606469B1 KR1020227041340A KR20227041340A KR102606469B1 KR 102606469 B1 KR102606469 B1 KR 102606469B1 KR 1020227041340 A KR1020227041340 A KR 1020227041340A KR 20227041340 A KR20227041340 A KR 20227041340A KR 102606469 B1 KR102606469 B1 KR 102606469B1
- Authority
- KR
- South Korea
- Prior art keywords
- render
- split
- game
- video
- processor system
- Prior art date
Links
- 238000009877 rendering Methods 0.000 claims abstract description 73
- 239000000872 buffer Substances 0.000 claims description 30
- 230000004044 response Effects 0.000 abstract description 6
- 230000002452 interceptive effect Effects 0.000 description 47
- 238000004891 communication Methods 0.000 description 36
- 239000012634 fragment Substances 0.000 description 35
- 238000012545 processing Methods 0.000 description 35
- 238000000034 method Methods 0.000 description 34
- 230000033001 locomotion Effects 0.000 description 33
- 238000004088 simulation Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 21
- 230000008569 process Effects 0.000 description 14
- 238000013515 script Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 201000003152 motion sickness Diseases 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 239000002245 particle Substances 0.000 description 4
- 241000699666 Mus <mouse, genus> Species 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000005484 gravity Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000004434 saccadic eye movement Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 210000003128 head Anatomy 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 229910052751 metal Inorganic materials 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000002567 electromyography Methods 0.000 description 1
- 230000004424 eye movement Effects 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 150000002739 metals Chemical class 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 230000004461 rapid eye movement Effects 0.000 description 1
- 238000001454 recorded image Methods 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/21805—Source of audio or video content, e.g. local disk arrays enabling multiple viewpoints, e.g. using a plurality of cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/20—Input arrangements for video game devices
- A63F13/24—Constructional details thereof, e.g. game controllers with detachable joystick handles
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/32—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/33—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
- A63F13/335—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections using Internet
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/1613—Constructional details or arrangements for portable computers
- G06F1/163—Wearable computers, e.g. on a belt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
- G06F3/012—Head tracking input arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0346—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/52—Network services specially adapted for the location of the user terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/535—Tracking the activity of the user
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/194—Transmission of image signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/275—Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals
- H04N13/279—Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals the virtual viewpoint locations being selected by the viewers or determined by tracking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/222—Secondary servers, e.g. proxy server, cable television Head-end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/222—Secondary servers, e.g. proxy server, cable television Head-end
- H04N21/2223—Secondary servers, e.g. proxy server, cable television Head-end being a public access point, e.g. for downloading to or uploading from clients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/226—Characteristics of the server or Internal components of the server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
- H04N21/6587—Control parameters, e.g. trick play commands, viewpoint selection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/816—Monomedia components thereof involving special video data, e.g 3D video
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/80—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
- A63F2300/8082—Virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Processing Or Creating Images (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
스플릿 계층 그래픽 프로세서 시스템은 VR 환경에서 프리미티브를 생성하기 위해 네트워크를 통해 수신된 클라이언트 디바이스의 입력에 응답하여 가상 현실 (VR) 애플리케이션을 실행하는 마스터 노드를 포함한다. 그래픽 프로세서 시스템은 VR 환경의 위치에서 취해진 VR 환경으로의 뷰를 위한 프리미티브를 기반으로 렌더링을 수행하는 렌더 노드를 포함하고, 뷰는 VR 환경의 그리드 맵에 대응한다. 각각의 렌더 노드는 대응하는 뷰의 대응하는 프레임 시퀀스를 렌더링, 인코딩하고 그릭 클라이언트 디바이스에 스트리밍한다. 프로세서 시스템은 VR 환경을 구축하는데 사용되는 오브젝트에 대한 입력 지오메트리를 저장하는 자산 라이브러리를 포함하고, 자산 라이브러리의 오브젝트는 마스터 노드와 렌더 노드에서 액세스 가능하다.
Description
본 개시는 컴퓨터 생성 이미지에 관한 것으로, 보다 상세하게는 컴퓨터 생성 그래픽의 실시간 렌더링(rendering)에 관한 것이다.
렌더링 파이프 라인에서 가상 현실 (VR) 장면의 컴퓨터 렌더링은 중앙 처리 유닛 (CPU : central processing unit) 및 그래픽 처리 유닛 (GPU : Graphic processing unit) 자원을 필요로 한다. VR 장면은 넓은 시청 범위에서 렌더링될 수 있지만 해당 시청 범위의 작은 부분만 디스플레이된다. 또한 VR 장면은 전통적인 장면보다 더 복잡할 수 있으며 사용자의 멀미(motion sickness)를 방지하기 위해 이미지 처리에 더 높은 프레임 속도가 필요할 수도 있다.
VR 장면은 예를 들어, 주어진 위치로부터 큐브의 측면으로 VR 장면을 투영하는데 사용되는 큐브 맵으로서 생성될 수 있다. 큐브는 뷰가 생성되는 위치를 둘러싼다. 구체적으로, 큐브 맵의 각각의 측면은 VR 환경에서 해당 위치의 대응하는 뷰에 대한 VR 장면을 렌더링함으로써 생성된다. 큐브 맵 뷰어는 주어진 뷰 포인트(viewpoint)에 대한 하나 이상의 뷰를 VR 환경에 블렌딩(blend)시킬 것이다.
전형적으로, CPU와 GPU를 모두 포함하는 단일 컴퓨팅 자원은 큐브 맵에 대한 뷰의 렌더링을 수행하는데 사용된다. 그러나, 컴퓨팅 자원은 처리 파워 측면에서 일부 비용 절감 조치를 구현하지 않으면 사용자에게 멀미를 유발하지 않고는 VR 장면을 처리할 수 없을 수 있다. 예를 들어, VR 환경에 대한 사용자의 뷰 포인트를 생성하는데 사용되지 않는 큐브 맵의 뷰는 뷰 포인트를 생성하는데 사용되는 해당 뷰들보다 낮은 해상도로 생성될 수 있다. 즉, 사용자가 VR 환경 (예를 들어, 캐릭터의 위치에 대응)으로 280-40도 (포워드(forward)) 범위 사이에서 보고 있는 경우 180도 (백워드(backward))에 대응하는 큐브 맵 뷰가 저 해상도로 렌더링된다. 그러나, 사용자가 VR 환경의 다른 영역을 보기 위해 물리적으로 고개를 돌리면 (예를 들어, 180도 방향으로 백워드로 회전) HMD (head mounted display)에 표시되는 뷰는 저해상도 이미지로 생성된다. 이 경우 사용자는 고해상도에서 저해상도 뷰로 이동할 때 멀미에 매우 취약할 수 있다.
이러한 맥락에서 본 개시의 실시예가 발생한다.
본 개시의 실시예는 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하기 위해 클라우드 시스템에서 구현되는 스플릿 계층(split hierarchy) 그래픽 프로세서 시스템에 관한 것이다. 예를 들어, 스플릿 계층 그래픽 처리 시스템은 별도의 렌더 노드(render node)/서버에서 그리드 맵의 각각의 측면 생성을 통해 구현된 VR 콘텐츠의 스트리밍을 수행하도록 구성되며, 렌더 노드는 애플리케이션 로직을 수행하는 마스터 노드에 의해 제어된다 (예를 들어, 게임 애플리케이션 실행). 본 개시의 몇몇 발명 실시예가 이하에 설명된다.
일 실시예에서, 클라우드 시스템에서 구현된 스플릿 계층 그래픽 프로세서 시스템은 VR 환경의 복수의 오브젝트에 대해 복수의 프리미티브(primitive)를 생성하기 위해 네트워크를 통해 수신된 사용자의 클라이언트 디바이스로부터의 입력에 응답하여 가상 현실 (VR) 애플리케이션을 실행하는 마스터 노드를 포함한다. 그래픽 프로세서 시스템은 VR 환경의 위치로부터 취해진 VR 환경으로 복수의 뷰에 대한 복수의 프리미티브에 기초하여 렌더링을 수행하는 복수의 렌더 노드를 포함하고, 상기 복수의 뷰는 VR 환경의 그리드 맵(grid map)에 대응하고, 각각의 렌더 노드는 대응하는 뷰의 대응하는 프레임 시퀀스를 렌더링, 인코딩하고 그리고 클라이언트 디바이스에 스트리밍한다. 그래픽 프로세서 시스템은 VR 환경을 구축하는데 사용되는 복수의 오브젝트에 대한 입력 지오메트리(input geometry)를 저장하는 자산 라이브러리(asset library)를 포함하며, 상기 자산 라이브러리의 복수의 오브젝트는 마스터 노드와 복수의 렌더 노드에 의해 액세스 가능하다.
일 실시예에서, 클라우드 시스템의 스플릿 계층 그래픽 프로세서 시스템을 사용하여 그래픽 처리를 수행하는 방법이 개시된다. 상기 방법은 VR 애플리케이션의 VR 환경에서 복수의 오브젝트에 대한 복수의 프리미티브를 생성하기 위해 사용자의 클라이언트 디바이스로부터의 입력에 응답하는 VR 애플리케이션을 클라우드 시스템의 마스터 노드에서 실행하는 단계를 포함한다. 상기 방법은 복수의 뷰에 대한 복수의 프리미티브에 기초하여 복수의 렌더 노드에서 복수의 프레임 시퀀스를 VR 환경의 위치로부터 취해진 VR 환경으로 렌더링하는 단계를 포함하고, 상기 복수의 뷰는 VR 환경의 그리드 맵에 대응하고, 대응하는 프레임 시퀀스는 대응하는 뷰와 관련된다. 상기 방법은 자산 라이브러리에 복수의 오브젝트에 대한 입력 지오메트리를 저장하는 단계를 포함하고, 상기 복수의 오브젝트는 VR 환경 구축에 사용되고, 상기 자산 라이브러리의 복수의 오브젝트는 마스터 노드 및 복수의 렌더 노드에 의해 액세스 가능하다. 방법은 각각의 렌더 노드에서 대응하는 프레임 시퀀스를 인코딩하는 단계를 포함한다. 방법은 각각의 렌더 노드로부터 대응하는 프레임 시퀀스를 클라이언트 디바이스로 스트리밍하는 단계를 포함한다.
다른 실시예에서, 비 일시적 컴퓨터 판독 가능 매체는 클라우드 시스템의 스플릿 계층 그래픽 프로세서 시스템을 사용하여 그래픽 처리를 수행하기 위한 컴퓨터 프로그램을 저장한다. 컴퓨터 판독 가능 매체는 VR 애플리케이션의 VR 환경에서 복수의 오브젝트에 대한 복수의 프리미티브를 생성하기 위해 사용자의 클라이언트 디바이스로부터의 입력에 응답하는 VR 애플리케이션을 클라우드 시스템의 마스터 노드에서 실행하기 위한 프로그램 지침을 포함한다. 컴퓨터 판독 가능 매체는 복수의 뷰에 대한 복수의 프리미티브에 기초하여 복수의 렌더 노드에서 복수의 프레임 시퀀스를 VR 환경의 위치로부터 취해진 VR 환경으로 렌더링하기 위한 프로그램 지침을 포함하고, 상기 복수의 뷰는 VR 환경의 그리드 맵에 대응하고, 대응하는 프레임 시퀀스는 대응하는 뷰와 관련된다. 컴퓨터 판독 가능 매체는 자산 라이브러리에 복수의 오브젝트에 대한 입력 지오메트리를 저장하기 위한 프로그램 지침을 포함하고, 상기 복수의 오브젝트는 VR 환경 구축에 사용되고, 상기 자산 라이브러리의 복수의 오브젝트는 마스터 노드 및 복수의 렌더 노드에 의해 액세스 가능하다. 컴퓨터 판독 가능 매체는 각각의 렌더 노드에서 대응하는 프레임 시퀀스를 인코딩하기 위한 프로그램 지침을 포함한다. 컴퓨터 판독 가능 매체는 각각의 렌더 노드로부터 대응하는 프레임 시퀀스를 스트리밍하기 위한 프로그램 지침을 포함한다.
본 개시의 다른 양태들은 본 개시의 원리를 예로서 예시하는 첨부 도면과 함께 취해진 이하의 상세한 설명으로부터 명백해질 것이다.
본 개시는 첨부된 도면과 관련하여 취해진 이하의 설명을 참조하여 가장 잘 이해될 수 있다:
도 1a는 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 생성된 VR 콘텐츠로 대화형 경험을 제공하도록 구성된 시스템을 예시하고, 일부 입력 제어는 핸드 헬드 컨트롤러를 통해 제공될 수 있고, 일부 입력 제어는 본 개시의 일 실시예에 따라 카메라를 통해 구현되는 신체 부위의 추적을 통해 관리될 수 있다.
도 1b는 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 생성된 VR 콘텐츠로 대화형 경험을 제공하도록 구성된 시스템을 예시하고, 편집을 위한 일부 입력 제어는 핸드 헬드 컨트롤러를 통해 제공될 수 있고, 일부 입력 제어는 카메라를 통해 구현된 신체 부위(body part) 추적을 통해 관리될 수 있고, 카메라는 또한 본 개시의 일 실시예에 따라 HMD로 데이터를 송신하는 RF 에미터의 빔 추적을 목적으로 HMD의 움직임을 추적한다.
도 1c는 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 생성된 VR 콘텐츠에 대한 대화형 경험을 제공하도록 구성된 시스템을 예시하고, 편집을 위한 일부 입력 제어는 핸드 헬드 컨트롤러를 통해 제공될 수 있고, 일부 입력 제어는 본 개시의 일 실시예에 따라 자기 소스(magnetic source)를 통해 부분적으로 구현되는 신체 부위의 자기 추적을 통해 관리될 수 있다.
도 2는 본 개시의 일 실시예에 따라, 비디오 게임을 실행하고 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 생성된 VR 콘텐츠를 디스플레이하기 위한 HMD의 기능을 개념적으로 예시한다.
도 3은 본 개시의 일 실시예에 따라 스플릿 계층 그래픽 프로세서 시스템을 구현하기 위해 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하는 클라우드 시스템에서 VR 콘텐츠의 생성을 예시하는데이터 흐름도이다.
도 4는 본 개시의 일 실시예에 따라, 게임 애플리케이션의 게임 로직을 실행하고 렌더 노드의 동기화를 관리하기 위한 마스터 노드 및 큐브 맵의 6개의 측면에 대한 뷰를 생성하는 6 개의 렌더 노드를 포함하는 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하는 클라우드 시스템에서 VR 콘텐츠의 생성을 예시하는데이터 흐름도이다.
도 5는 그래픽 파이프 라인을 구현하도록 구성된 스플릿 계층 프로세서 시스템을 예시하고, 본 개시의 일 실시예에 따라, 게임 로직을 실행하고 그리드 맵의 각각의 측면에 대한 이미지 프레임을 독립적으로 렌더링하기 위해, 중앙 처리 유닛 (CPU) 및/또는 그래픽 처리 유닛(GPU)의 기능을 수행하기 위해 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드에 걸쳐 스플릿 계층 구조가 구현된다.
도 6은 본 개시의 일 실시예에 따른, 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 그래픽 파이프 라인을 구현하는 방법의 단계를 예시하는 흐름도이다.
도 7은 본 개시의 일 실시예에 따른, 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 그래픽 파이프 라인을 구현하는 컴퓨터 시스템을 도시한다. 하이퍼바이저 시스템
도 8은 본 개시의 일 실시예에 따른, 본 개시의 다양한 실시예들의 양태들을 수행하는데 사용될 수 있는 예시적인 디바이스의 컴포넌트들을 예시한다.
도 9는 본 개시의 다양한 실시예들에 따른 게임 시스템의 블록도이다.
도 1a는 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 생성된 VR 콘텐츠로 대화형 경험을 제공하도록 구성된 시스템을 예시하고, 일부 입력 제어는 핸드 헬드 컨트롤러를 통해 제공될 수 있고, 일부 입력 제어는 본 개시의 일 실시예에 따라 카메라를 통해 구현되는 신체 부위의 추적을 통해 관리될 수 있다.
도 1b는 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 생성된 VR 콘텐츠로 대화형 경험을 제공하도록 구성된 시스템을 예시하고, 편집을 위한 일부 입력 제어는 핸드 헬드 컨트롤러를 통해 제공될 수 있고, 일부 입력 제어는 카메라를 통해 구현된 신체 부위(body part) 추적을 통해 관리될 수 있고, 카메라는 또한 본 개시의 일 실시예에 따라 HMD로 데이터를 송신하는 RF 에미터의 빔 추적을 목적으로 HMD의 움직임을 추적한다.
도 1c는 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 생성된 VR 콘텐츠에 대한 대화형 경험을 제공하도록 구성된 시스템을 예시하고, 편집을 위한 일부 입력 제어는 핸드 헬드 컨트롤러를 통해 제공될 수 있고, 일부 입력 제어는 본 개시의 일 실시예에 따라 자기 소스(magnetic source)를 통해 부분적으로 구현되는 신체 부위의 자기 추적을 통해 관리될 수 있다.
도 2는 본 개시의 일 실시예에 따라, 비디오 게임을 실행하고 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 생성된 VR 콘텐츠를 디스플레이하기 위한 HMD의 기능을 개념적으로 예시한다.
도 3은 본 개시의 일 실시예에 따라 스플릿 계층 그래픽 프로세서 시스템을 구현하기 위해 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하는 클라우드 시스템에서 VR 콘텐츠의 생성을 예시하는데이터 흐름도이다.
도 4는 본 개시의 일 실시예에 따라, 게임 애플리케이션의 게임 로직을 실행하고 렌더 노드의 동기화를 관리하기 위한 마스터 노드 및 큐브 맵의 6개의 측면에 대한 뷰를 생성하는 6 개의 렌더 노드를 포함하는 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하는 클라우드 시스템에서 VR 콘텐츠의 생성을 예시하는데이터 흐름도이다.
도 5는 그래픽 파이프 라인을 구현하도록 구성된 스플릿 계층 프로세서 시스템을 예시하고, 본 개시의 일 실시예에 따라, 게임 로직을 실행하고 그리드 맵의 각각의 측면에 대한 이미지 프레임을 독립적으로 렌더링하기 위해, 중앙 처리 유닛 (CPU) 및/또는 그래픽 처리 유닛(GPU)의 기능을 수행하기 위해 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드에 걸쳐 스플릿 계층 구조가 구현된다.
도 6은 본 개시의 일 실시예에 따른, 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 그래픽 파이프 라인을 구현하는 방법의 단계를 예시하는 흐름도이다.
도 7은 본 개시의 일 실시예에 따른, 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하여 그래픽 파이프 라인을 구현하는 컴퓨터 시스템을 도시한다. 하이퍼바이저 시스템
도 8은 본 개시의 일 실시예에 따른, 본 개시의 다양한 실시예들의 양태들을 수행하는데 사용될 수 있는 예시적인 디바이스의 컴포넌트들을 예시한다.
도 9는 본 개시의 다양한 실시예들에 따른 게임 시스템의 블록도이다.
이하의 상세한 설명이 예시의 목적을 위해 많은 특정 세부 사항을 포함하지만, 당업자라면 이하의 세부 사항에 대한 많은 변형 및 변경이 본 개시의 범위 내에 있음을 이해할 것이다. 따라서, 이하에서 설명되는 본 개시의 양태는 본 설명을 따르는 청구 범위에 대한 일반성을 잃지 않고 제한을 부여하지 않고 설명된다.
일반적으로 말하면, 본 개시의 다양한 실시예는 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하기 위해 클라우드 시스템에서 구현되는 스플릿 계층 그래픽 프로세서 시스템을 위한 시스템 및 방법을 설명한다. 예를 들어, 스플릿 계층 그래픽 처리 시스템은 별도의 렌더 노드/서버에서 그리드 맵의 각각의 측면의 생성을 통해 구현된 VR 콘텐츠의 스트리밍을 수행하도록 구성된다. 특히, 스플릿 계층 그래픽 프로세서 시스템은 클라우드 시스템에 다수의 서버/컴퓨팅 노드를 포함한다. 예를 들어, 마스터 노드는 게임 로직을 실행하도록 구성된다. 마스터 노드는 또한 복수의 렌더 노드의 동작을 동기화할 수 있으며(예를 들어, 동기화 패킷을 통해), 이들 각각은 그리드 맵의 대응하는 뷰에 대한 비디오 프레임을 렌더링한다. 일 구현예에서, 마스터 노드와 렌더 노드는 통신 목적으로 서버 랙(server rack)에 배치된다. 추가하여, 멀티 서버 시스템이 하나의 랙에 구현되기 때문에 렌더 노드간에 동기화가 내재(inherent)되어 있다. 전통적인 VR 시스템은 처리 파워가 모든 그래픽 처리 및/또는 렌더링을 수행하는 단일 하드웨어 시스템으로 제한되기 때문에 VR 장면의 모든 각도를 처리하기 위해 해상도 품질을 희생해야 한다 (예를 들어, 낮은 해상도로 그리드 맵의 보이지 않는 측면 렌더링). 즉, 사용자가 전통적인 시스템을 사용하여 공간에서 HMD를 회전함에 따라 디스플레이는 저해상도와 고해상도 사이를 스위칭하는 뷰를 표시하여 사용자에게 멀미를 유발한다. 한편, 본 개시의 실시예는 사용자의 VR 환경에 현재 뷰 포인트를 생성하기 위해 어떤 뷰가 사용되든 간에 가장 높은 해상도로 그리드 맵의 각각의 측면에 대한 뷰의 생성을 제공한다. 즉, 본 개시의 실시예는 그래픽 파이프 라인을 구현하는 스플릿 아키텍처로 인해 클라우드 시스템에서 실행 엔진 (예를 들어, 게임 및/또는 대화형 VR 애플리케이션을 실행)에 추가 CPU 및/또는 GPU 자원을 승인할 수 있다. 그리드 맵의 측면에 대응하는 모든 뷰의 가장 높은 해상도로 렌더링하기 위해 적어도 제공하는 CPU 및/또는 GPU 자원이 증가함에 따라, 한 가지 이점은 사용자의 멀미를 줄이는 것을 포함한다. 예를 들어, 사용자에게 제공되는 이미지는 고해상도로 유지되며, 특히 사용자가 VR 환경의 다양한 뷰를 보기 위해 공간에서 HMD를 회전할 때 저해상도 뷰와 고해상도 뷰 간에 전혀 스위칭되지 않는다. 본 개시의 몇몇 발명 실시예가 이하에 설명된다.
다양한 실시예의 상기 개괄적인 이해와 함께, 이제 실시예의 예시적인 세부 사항이 다양한 도면을 참조하여 설명될 것이다.
명세서 전반에 걸쳐, "게임 애플리케이션(gaming application)"에 대한 언급은 입력 명령의 실행을 통해 지시되는 임의의 유형의 대화형 애플리케이션을 나타내는 것을 의미한다. 설명 목적으로만 대화형 애플리케이션은 게임, 워드 프로세싱, 비디오 처리, 비디오 게임 처리 등을 위한 애플리케이션을 포함한다. 더구나, 용어 비디오 게임과 게임 애플리케이션은 서로 바꿔 사용할 수 있다.
도 1a는 본 개시의 일 실시예에 따른 VR 장면 또는 환경 (예를 들어, 게임 애플리케이션의 대화형 게임 플레이)과의 사용자 상호 작용을 제공하기 위한 시스템을 예시한다. 사용자 (100)는 HMD (102)를 착용하고 있으며, HMD (102)는 안경, 고글 또는 헬멧과 유사한 방식으로 착용되고, 대화형 게임 애플리케이션으로부터의 비디오 게임 또는 대화형 애플리케이션으로부터의 다른 콘텐츠를 사용자 (100)에게 디스플레이하도록 구성된다. HMD (102)는 사용자의 눈에 매우 근접한 디스플레이 메커니즘의 프로비전(provision) 덕분에 사용자에게 매우 몰입감 있는 경험을 제공한다. 따라서, HMD (102)는 사용자의 시야(field of view)의 큰 부분 또는 심지어 전체를 차지하는 사용자의 눈 각각에 디스플레이 영역을 제공 할 수 있다.
일 실시예에서, HMD (102)는 컴퓨터 또는 게임 콘솔 (106)에 연결될 수 있다. 컴퓨터 (106)에 대한 연결은 유선 또는 무선일 수 있다. 일부 구현에서, HMD (102)는 또한 HMD (102) 및 컴퓨터 (106) 둘 모두가 연결되는 네트워크 (112)를 통한 것과 같은 대안적인 메커니즘 또는 채널을 통해 컴퓨터와 통신할 수 있다. 컴퓨터 (106)는 게임 콘솔, 퍼스널 컴퓨터, 랩탑, 태블릿 컴퓨터, 모바일 디바이스, 휴대폰, 태블릿, 씬 클라이언트(thin client), 셋탑(set-top) 박스, 미디어 스트리밍 디바이스 등을 포함하지만 이에 한정되지 않는 당업계에 알려진 임의의 범용 또는 특수 목적 컴퓨터일 수 있다. 일 실시예에서, 컴퓨터 (106)는 게임 애플리케이션 및/또는 대화형 VR 애플리케이션을 실행하고 HMD (102)에 의한 렌더링을 위해 게임 또는 VR 애플리케이션으로부터 비디오 및 오디오를 출력하도록 구성될 수 있다. 컴퓨터 (106)는 게임 애플리케이션을 실행하는 것으로 제한되지 않고, HMD (102)에 의한 렌더링을 위해 VR 콘텐츠 (191)를 출력하는 대화형 애플리케이션을 실행하도록 구성될 수도 있다.
다른 실시예에서, 컴퓨터 (106)는 클라우드 시스템 (114) 또는 백엔드(back-end) 서버 시스템과 네트워크를 통해 통신하는 씬 클라이언트로서 기능한다. 이러한 방식으로, 클라우드 시스템 (114)은 사용자 (102)에 의해 재생되는 게임 애플리케이션 및/또는 대화형 VR 애플리케이션을 유지하고 실행한다. 로컬 컴퓨터 (106)는 HMD (102), 컨트롤러 (104) 및 카메라 (108)로부터의 입력을 클라우드 시스템 (114)으로 송신하고, 이는 실행중인 게임 및/또는 VR 애플리케이션의 게임 상태에 영향을 미치도록 입력을 처리한다. 비디오 데이터, 오디오 데이터 및 햅틱 피드백 데이터와 같은 실행 애플리케이션의 출력은 컴퓨터 (106)로 송신된다. 컴퓨터 (106)는 송신 전에 데이터를 추가로 처리하거나 관련 디바이스로 데이터를 직접 송신할 수 있다. 예를 들어, 비디오 및 오디오 스트림이 HMD (102)에 제공되는 반면, 햅틱 피드백 데이터는 컨트롤러 (104)에 제공되는 진동 피드백 명령을 생성하는데 사용된다.
일 실시예에서, 클라우드 시스템은 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하기 위한 스플릿 계층 그래픽 프로세서 시스템을 구현하도록 구성된다. 예를 들어, 클라우드 시스템 (114)은 마스터 노드 (310) 및 복수의 렌더 노드 (320)를 포함하는 실행 엔진(executing engine) (300) (예를 들어, 게임 엔진)을 포함한다. 마스터 노드 (310)는 게임 및/또는 대화형 VR 애플리케이션을 실행할 때 시뮬레이션 수행, 스크립트 실행, 렌더링 수행을 위해 필요한 입력 (예를 들어, 프리미티브(primitive))을 그래픽 엔진에 제공하는 것과 같은 CPU 기능을 수행하도록 구성된다. 마스터 노드 (310)는 또한 렌더 노드의 동기화를 수행할 수 있다. 복수의 렌더 노드 (320)는 그리드 맵의 각각의 측면에 대한 프레임의 렌더링을 수행하도록 구성된다. 예를 들어, 6 개의 측면이 있는 큐브 맵의 경우, 6 개의 렌더 노드가 큐브 맵의 각각의 측면에 대한 뷰를 생성하는데 사용되며, 각각의 렌더 노드는 큐브 맵의 대응하는 뷰에 대한 이미지 및/또는 비디오 프레임을 생성한다.
사용자 (100)는 게임 및/또는 대화형 VR 애플리케이션에 대한 입력을 제공하기 위해 컨트롤러 (104)를 동작시킬 수 있다. 컴퓨터 (106)에 대한 연결은 유선 또는 무선일 수 있다. 추가로, 카메라 (108)는 사용자 (100)가 위치된 대화형 환경의 하나 이상의 이미지를 캡처하도록 구성될 수 있다. 이러한 캡처된 이미지는 사용자 (100), 사용자의 일부 (예를 들어, 입력 명령에 대한 손 제스처 추적), HMD (102) 및 컨트롤러 (104)의 위치 및 움직임을 결정하기 위해 분석될 수 있다. 일 실시예에서, 컨트롤러 (104)는 그 위치 및 방위를 결정하기 위해 추적될 수 있는 조명 또는 다른 마커 엘리먼트를 포함한다. 추가적으로, HMD (102)는 HMD (102)의 위치 및 방위를 결정하기 위해 추적될 수 있는 하나 이상의 광을 포함할 수 있다. 카메라 (108)에 의해 부분적으로 구현되는 추적 기능은 컨트롤러 (104) 및/또는 사용자 (100)의 신체 부위 (예를 들어, 손)의 움직임을 통해 생성된 입력 명령을 제공한다. 카메라 (108)는 대화형 환경으로부터 사운드를 캡처하기 위해 하나 이상의 마이크로폰을 포함할 수 있다. 마이크 어레이에 의해 캡처된 사운드는 사운드 소스의 위치를 식별하기 위해 처리될 수 있다. 식별된 위치로부터의 사운드는 식별된 위치로부터가 아닌 다른 사운드를 배제하도록 선택적으로 활용되거나 처리될 수 있다. 또한, 카메라 (108)는 다수의 이미지 캡처 디바이스 (예를 들어, 입체(stereoscopic) 카메라 쌍), IR 카메라, 깊이 카메라 및 이들의 조합을 포함하도록 정의될 수 있다.
일 실시예에서, HMD (102), 컨트롤러 (104) 및 카메라 (108)는 그들 자체가 클라우드 시스템 (114)과 통신하기 위해 네트워크 (150)에 연결되는 네트워크 디바이스들일 수 있다. 예를 들어, 컴퓨터 (106)는 그 외에는 비디오 게임 처리를 수행하지 않지만 네트워크 트래픽 통과를 가능하게 하는 라우터와 같은 로컬 네트워크 디바이스일 수 있다. HMD (102), 컨트롤러 (104) 및 카메라 (즉, 이미지 캡처 디바이스) (108)에 의한 네트워크 연결은 유선 또는 무선일 수 있다.
또 다른 실시예에서, 컴퓨터 (106)는 게임 애플리케이션의 일부를 실행할 수 있는 반면, 게임 애플리케이션의 나머지 부분은 클라우드 시스템 (114)에서 실행될 수 있다. 다른 실시예에서, 게임 애플리케이션의 일부는 또한 HMD (102)에서 실행될 수 있다. 예를 들어, 컴퓨터 (106)로부터 게임 및/또는 대화형 VR 애플리케이션을 다운로드하기 위한 요청은 클라우드 시스템 (114)에 의해 서비스될 수 있다. 요청이 서비스되는 동안, 클라우드 시스템 (114)은 게임 및/또는 대화형 VR 애플리케이션의 일부를 실행하고, HMD (102)에서 렌더링하기 위해 게임 콘텐츠를 컴퓨터 (106)에 제공할 수 있다. 컴퓨터 (106)는 네트워크 (150)를 통해 클라우드 시스템 (114)과 통신할 수 있다. HMD (102), 컨트롤러 (104) 및 카메라 (108)로부터 수신된 입력은 게임 애플리케이션이 컴퓨터 (106)로 다운로드되는 동안 클라우드 시스템 (114)으로 송신된다. 클라우드 시스템 (114)은 실행중인 게임 및/또는 대화형 VR 애플리케이션의 게임 상태에 영향을 미치는 입력을 처리한다. 비디오 데이터, 오디오 데이터 및 햅틱 피드백 데이터와 같은 실행중인 게임 및/또는 대화형 VR 애플리케이션으로부터의 출력은 개별 디바이스로의 계속적인 송신을 위해 컴퓨터 (106)로 송신된다.
게임 및/또는 대화형 VR 애플리케이션이 컴퓨터 (106)에 완전히 다운로드되면, 컴퓨터 (106)는 게임 및/또는 대화형 VR 애플리케이션을 실행하고 클라우드 시스템 (114)에서 중단되었던 게임 및/또는 대화형 VR 애플리케이션의 게임 플레이를 재개할 수 있다. HMD (102), 컨트롤러 (104) 및 카메라 (108)로부터의 입력은 컴퓨터 (106)에 의해 처리되고, 게임 애플리케이션의 게임 상태는 HMD (102), 컨트롤러 (104) 및 카메라 (108)로부터 수신된 입력에 응답하여 조정된다. 그러한 실시예에서, 컴퓨터 (106)에서의 게임 및/또는 대화형 VR 애플리케이션의 게임 상태는 클라우드 시스템 (114)에서의 게임 상태와 동기화된다. 동기화는 컴퓨터 (106) 및 클라우드 시스템 (114) 둘 모두에서 게임 및/또는 대화형 VR 애플리케이션의 상태를 최신으로 유지하기 위해 주기적으로 수행될 수 있다. 컴퓨터 (106)는 출력 데이터를 관련 디바이스에 직접 송신할 수 있다. 예를 들어, 비디오 및 오디오 스트림이 HMD (102)에 제공되는 반면, 햅틱 피드백 데이터는 컨트롤러 (104)에 제공되는 진동 피드백 명령을 생성하는데 사용된다.
도 1b는 본 개시의 일 실시예에 따라 VR 콘텐츠와 대화형 경험을 제공하도록 구성된 시스템을 예시하고, VR 콘텐츠는 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하기 위해 스플릿 계층 그래픽 프로세서 시스템을 사용하여 생성된다. 특히, 시스템 (예를 들어, HMD (102), 컴퓨터 (106) 및/또는 클라우드 (114))은 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하도록 구성된다. 전술한 바와 같이, 클라우드 시스템 (114)은 마스터 노드 (310) (예를 들어, 시뮬레이션 수행, 게임 로직, 스크립트 실행, 프리미티브 생성, 동기화 수행 등) 및 각각이 그리드 맵의 대응하는 측면에 대한 프레임을 렌더링하도록 구성되는(뷰를 생성하기 위해) 복수의 렌더 노드 (320)를 포함하는 실행 엔진(300)(예를 들어, 게임 엔진)을 포함한다. 도 1b는 도 1a에 설명된 시스템과 유사하고, 예를 들어, RF 신호를 통해 HMD (102) 로의 데이터 전달을 위해 구성된 송신기/수신기 (트랜시버) (110)를 추가하였다. 트랜시버 (110)는 렌더링을 위해 게임 애플리케이션으로부터 HMD (102)로 비디오 및 오디오를 (유선 연결 또는 무선 연결에 의해) 송신하도록 구성된다. 일 실시예에서, 트랜시버 (110)는데이터 스루풋 (예를 들어, 정보의 효율적인 송신)을 최적화할 목적으로 빔 성형(beam forming) 또는 빔 조향(beam steering)을 위해 구성된다. 또한, 트랜시버 (110)는 3D 디지털 콘텐츠의 이미지, 비디오 및 오디오를 송신하도록 구성된다. 이 구현예에서, 옵션의 카메라 (108)는 HMD (102)의 움직임을 추적하도록 구성될 수 있어서, 본 개시의 일 실시예에 따라 트랜시버 (110)는 RF 파워 (예를 들어, RF 방사 패턴을 통해 전달된) 의 대부분을 HMD (102)에 빔 조향할 수 있다 (예를 들어, 데이터 전달 목적으로). 즉, 일단 HMD의 위치가 공간에서 그리고 트랜시버 (110)와 관련하여 알려지면, 해당 정보는 트랜시버로 피드백되어 트랜시버가 그것의 대부분의 전송 파워 (예를 들어, 빔 조향)을 HMD (102)의 방향으로 지향시킬 수 있도록 한다. HMD (102)는 또한 유선 또는 무선 (예를 들어, 블루투스, Wi-Fi 등) 통신 경로를 통해 부수 또는 보조 채널 (191)을 통해 컴퓨터 (106)와 통신하여 HMD (102)와 정보를 전달하도록 구성된다.
도 1c는 본 개시의 일 실시예에 따라 VR 콘텐츠와 대화형 경험을 제공하도록 구성된 시스템을 예시하고, VR 콘텐츠는 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하기 위해 스플릿 계층 그래픽 프로세서 시스템을 사용하여 생성된다. 특히, 시스템 (예를 들어, HMD (102), 컴퓨터 (106) 및/또는 클라우드 (114))은 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하도록 구성된다. 전술한 바와 같이, 클라우드 시스템 (114)은 마스터 노드 (310) (예를 들어, 시뮬레이션 수행, 게임 로직, 스크립트 실행, 프리미티브 생성, 동기화 수행 등) 및 각각이 그리드 맵의 대응하는 측면에 대한 프레임을 렌더링하도록 구성되는(뷰를 생성하기 위해) 복수의 렌더 노드 (320)를 포함하는 실행 엔진(300)(예를 들어, 게임 엔진)을 포함한다. 도 1c는 도 1a에 설명된 시스템과 유사하고, HMD (102), 컨트롤러 (104) (예를 들어, 인터페이스 컨트롤러로 구성됨) 또는 자기 센서/안테나 (예를 들어, 장갑, 신체 부위에 위치된 스트립 -- 예컨대, 손가락 등)로 구성된 임의의 오브젝트의 자기 추적을 가능하게 하기 위해 자기장을 방출하도록 구성된 자기 소스 (116)를 추가하였다. 예를 들어, 자기 센서는 유도성 엘리먼트일 수 있다. 특히, 자기 센서는 자기 소스 (116)에 의해 방출되는 자기장 (예를 들어, 강도, 방위)을 검출하도록 구성될 수 있다. 자기 센서로부터 수집된 정보는 입력 명령을 제공하기 위해 HMD (102), 컨트롤러 (104) 및 다른 인터페이스 오브젝트 등의 위치 및/또는 방위를 결정하고 추적하는데 사용될 수 있다. 일 실시예에서, 자기 추적은 카메라 (108) 및/또는 HMD (102), 컨트롤러 (104) 및/또는 다른 인터페이스 오브젝트 내의 관성 센서를 통해 수행되는 추적과 결합된다.
일부 구현예에서, 인터페이스 오브젝트 (예를 들어, 컨트롤러 (104))는 HMD (102)에 관련하여 추적된다. 예를 들어, HMD (102)는 인터페이스 오브젝트를 포함하는 이미지를 캡처한 외부를 향하는 카메라를 포함할 수 있다. 다른 실시예에서, HMD (102)는 인터페이스 오브젝트와 같은 외부 오브젝트를 추적하기 위해 사용되는 IR 에미터(emitter)를 포함할 수 있다. 즉, HMD (102)는 HMD (102)에 대한 인터페이스 오브젝트 (예를 들어, 컨트롤러 (104))의 상대적 위치를 결정하기 위해 신호 (192) (예를 들어, IR 에미터, 자기 센서 등)를 통해 컨트롤러 (104)를 독립적으로 추적하도록 구성된다. 예를 들어, 캡처된 이미지는 HMD (102)와 관련된 인터페이스 오브젝트의 위치/방위를 결정하기 위해 분석될 수 있고, HMD (102)의 알려진 위치/방위를 사용하여 로컬 환경에 인터페이스 오브젝트의 위치/방위 및/또는 움직임을 결정할 수 있다.
사용자 (100)가 HMD (102)에 디스플레이되는 게임 애플리케이션의 가상 현실 장면 또는 대화형 VR 환경과 인터페이스하는 방식은 변화할 수 있으며, 인터페이스 오브젝트 (예를 들어, 컨트롤러 (104))에 추가하여 다른 인터페이스 디바이스가 사용될 수 있다. 예를 들어, 양손 컨트롤러 (104) 뿐만 아니라 다양한 종류의 한 손 컨트롤러가 사용될 수 있다. 일부 구현예에서, 컨트롤러 (104) 자체는 컨트롤러에 포함된 광을 추적하거나 컨트롤러 (104)와 관련된 형상, 센서 및 관성 데이터를 추적함으로써 추적될 수 있다. 이러한 다양한 유형의 컨트롤러 (104) 또는 하나 이상의 카메라 및 자기 센서에 의해 만들어지고 캡처되는 단순한 손 제스처를 사용하여, HMD(102)에 제시된 가상 현실 게임 환경과 인터페이스, 제어, 조작, 상호 작용 및 참여할 수 있다.
도 2는 VR 콘텐츠 (291)의 디스플레이와 관련하여 HMD (102)의 기능을 개념적으로 예시하며, 여기서, VR 콘텐츠는 네트워크를 통해 VR 콘텐츠를 전달하는 백엔드 클라우드 시스템에서 생성된다. VR 콘텐츠는 예를 들어, 게임 애플리케이션 및/또는 대화형 VR 애플리케이션으로부터 생성될 수 있다. 특히, 클라우드 시스템은 HMD (102)상의 디스플레이를 위해 HMD (102) 및/또는 로컬 컴퓨터 (106)로 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하기 위한 스플릿 계층 그래픽 프로세서 시스템을 포함할 수 있다. 예를 들어, 클라우드 시스템은 마스터 노드(예를 들어, 시뮬레이션 수행, 게임 로직, 스크립트 실행, 프리미티브 생성, 동기화 수행 등) 및 각각이 그리드 맵의 대응하는 측면에 대한 프레임을 렌더링하도록 구성되는(뷰를 생성하기 위해) 복수의 렌더 노드를 포함하는 실행 엔진(예를 들어, 게임 엔진)을 포함할 수 있다.
일부 실시예에서, HMD (102)는 VR 콘텐츠를 독립적으로 생성하도록 구성될 수 있다. 다른 실시예에서, VR 콘텐츠 엔진 (220)은 HMD (102)에 통신 가능하게 결합되고 및/또는 HMD (102)와 결합된 컴퓨터 (106) (미도시)에서 실행되고 있다. 컴퓨터는 HMD (예를 들어, 근거리 통신망의 일부)에 로컬이거나 원격 (예를 들어, 광역 통신망, 클라우드 네트워크 등의 일부)에 있고 네트워크를 통해 액세스될 수 있다. HMD (102)와 컴퓨터 (106) 간의 통신은 유선 또는 무선 연결 프로토콜을 따를 수 있다.
일 예에서, 애플리케이션을 실행하는 VR 콘텐츠 엔진 (220)은 게임 애플리케이션 및/또는 대화형 VR 애플리케이션을 실행하는 비디오 게임 엔진일 수 있고, 게임 애플리케이션의 게임 상태를 업데이트하기 위한 입력을 수신하도록 구성된다. 도 2의 이하의 설명은 간결함과 명료 함을 위해 게임 및/또는 대화형 VR 애플리케이션을 실행하는 VR 콘텐츠 엔진 (220)의 맥락에서 설명되며, VR 콘텐츠 (291)를 생성할 수 있는 임의의 애플리케이션의 실행을 나타내도록 의도된다. 전술한 바와 같이, VR 콘텐츠 엔진은 백엔드 클라우드 시스템, 로컬 게임 콘솔, HMD (102) 자체 또는 이들의 임의의 조합에서 구현될 수 있다. 게임 애플리케이션의 게임 상태는 오브젝트의 존재 및 위치, 가상 환경의 조건, 이벤트의 트리거, 사용자 프로필, 원근 뷰(view perspective) 등과 같은 현재 게임 플레이의 다양한 양태를 정의하는 비디오 게임의 다양한 파라미터의 값에 의해 적어도 부분적으로 정의될 수 있다.
예시된 실시예에서, VR 콘텐츠 엔진 (220)은 예로서 컨트롤러 입력 (261), 오디오 입력 (262) 및 모션 입력 (263)을 수신한다. 컨트롤러 입력 (261)은 핸드 헬드 게임 컨트롤러 (104) (예를 들어, 소니 DUALSHOCK®4 무선 컨트롤러, 소니 PlayStation®Move 모션 컨트롤러) 또는 웨어러블 컨트롤러 예컨대, 웨어러블 장갑 인터페이스 컨트롤러 등과 같은 HMD (102)와 분리된 게임 컨트롤러의 작동으로부터 정의될 수 있다. 예를 들어, 컨트롤러 입력 (261)은 방향 입력, 버튼 누르기, 트리거 활성화, 움직임, 제스처 또는 게임 컨트롤러의 작동으로부터 처리되는 다른 종류의 입력을 포함할 수 있다. 오디오 입력 (262)은 HMD (102)의 마이크로폰 (251), 또는 이미지 캡처 디바이스(208)에 포함된 마이크로폰 또는 로컬 시스템 환경 내의 다른 곳으로부터 처리될 수 있다. 모션 입력 (263)은 HMD (102)에 포함된 모션 센서 (259)로부터 또는 HMD (102)의 이미지를 캡처하는 이미지 캡처 디바이스 (108)로부터 처리될 수 있다. 예를 들어, 게임 애플리케이션을 실행하는 경우, VR 콘텐츠 엔진 (220)은 게임 엔진으로 동작하는 콘텐츠 엔진 (220)의 구성에 따라 처리되는 입력을 수신하여 비디오 게임의 게임 상태를 업데이트한다. 엔진 (220)은 사용자에게 제공될 콘텐츠를 정의하기 위해 게임 상태 데이터를 처리하는 다양한 렌더링 모듈에 게임 상태 데이터를 출력한다.
예시된 실시예에서, 비디오 렌더링 모듈 (283)은 HMD (102)에 제시를 위해 비디오 스트림을 렌더링하도록 정의된다. 예를 들어, 비디오 렌더링은 그래픽 파이프 라인의 기능을 수행할 수 있다. 비디오 렌더링 (283)의 컴포넌트 및/또는 기능은 CPU 또는 GPU, 또는 이들의 조합 내에서 수행될 수 있다.
일 실시예에서, 하나 이상의 디코더 (330)는 클라우드 시스템 (예를 들어, 백엔드 게임 및/또는 대화형 VR 애플리케이션 서버)에 의해 렌더링되는 인코딩된 프레임을 수신하도록 구성된다. 디코더 (330)는 인코딩된 프레임을 그것들의 원래 및/또는 미가공(raw) 상태 또는 일부 유사한 상태로 다시 디코딩하도록 구성된다. 앞에서 네트워크 (예를 들어, 인터넷)를 통한 효율적인 송신을 위해 프레임이 인코딩 (압축 적용)되었으며, 인코딩된 프레임 스트림이 그리드 맵 (예를 들어, 6개의 측면이 있는 큐브 맵)의 각각의 측면에 대해 생성되었다. 각각의 디코더는 그리드 맵의 대응하는 측면에 대해 생성된 프레임을 디코딩한다. 디코딩 후, 디코딩된 프레임은 하나 이상의 버퍼 (335)에 저장된다. 예를 들어, 그리드 맵의 측면에 대응하는 디코딩된 프레임의 각각의 스트림은 대응하는 버퍼에 저장될 수 있다. 또는 그리드 맵의 다수의 측면에 대응하는 다수의 스트림이 하나의 버퍼에 저장될 수 있으며, 각각의 스트림은 버퍼로부터 독립적으로 액세스될 수 있다. 큐브 맵 뷰어 (450)는 사용자의 현재 시점(point-of-view)을 VR 장면으로 생성하기 위해 그리드 맵 (예를 들어, 그리드 맵의 하나 이상의 측면)으로부터의 뷰 중 하나 이상을 블렌딩하도록 구성된다.
HMD (102)의 광학 기기(270)의 렌즈는 VR 콘텐츠 (291)를 시청하기 위해 구성된다. 디스플레이 스크린 (1304)은 광학 기기(270)의 렌즈 뒤에 배치되어, 광학 기기 (270)의 렌즈는 사용자가 HMD (102)를 착용할 때 디스플레이 스크린 (1304)과 사용자의 눈 (260) 사이에 있다. 이러한 방식으로, 비디오 스트림은 디스플레이 스크린/프로젝터 메커니즘 (1304)에 의해 제공될 수 있고 사용자의 눈 (260)에 의해 광학 기기 (270)를 통해 시청할 수 있다. HMD 사용자는 HMD를 착용함으로써 대화형 VR 콘텐츠 (291) (예를 들어, VR 비디오 소스, 비디오 게임 콘텐츠 등)와 상호 작용하도록 선택할 수 있다. 비디오 게임으로부터의 대화형 가상 현실 (VR) 장면은 HMD의 디스플레이 스크린 (1304) 상에 렌더링될 수 있다. 이러한 방식으로, 게임 전개 중에 HMD (102)는 사용자가 대화형 VR 장면을 편집하고 검토할 수 있게 한다. 또한 게임 플레이 (편집 검토 포함) 동안에, HMD는 사용자의 눈에 가까운 HMD의 디스플레이 메커니즘을 프로비저닝하여 사용자가 게임 플레이에 완전히 몰입할 수 있도록 한다. 콘텐츠를 렌더링하기 위해 HMD의 디스플레이 스크린에 정의된 디스플레이 영역은 사용자의 시야 전체 또는 큰 부분을 차지할 수 있다. 전형적으로, 각각의 눈은 하나 이상의 디스플레이 스크린을 시청하는 광학 기기 (270)의 관련 렌즈에 의해 지지된다.
오디오 렌더링 모듈 (282)은 사용자가 청취하기 위해 오디오 스트림을 렌더링하도록 구성된다. 일 실시예에서, 오디오 스트림은 HMD (102)와 관련된 스피커 (152)를 통해 출력된다. 스피커 (152)는 오픈 에어(air) 스피커, 헤드폰, 또는 오디오를 제공할 수 있는 임의의 다른 종류의 스피커의 형태를 취할 수 있다는 것이 이해되어야 한다.
일 실시예에서, 사용자의 시선(gaze)을 추적할 수 있도록 시선 추적 센서(gaze tracking sensor) (265)가 HMD (102)에 포함된다. 단지 하나의 시선 추적 센서 (265)가 포함되지만, 사용자의 시선을 추적하기 위해 하나 이상의 시선 추적 센서가 사용될 수 있다는 점에 유의해야 한다. 시선 추적 센서 (265)는 카메라, 광학 센서, 적외선 센서, EMG (electromyography) 센서, 광학 반사기 센서, 레인진 센서(range senor) 및 광학 흐름 센서, 도플러 센서, 마이크로폰 및 유사한 것 중 하나 이상일 수 있다. 일반적으로, 센서 (265)는 눈 움직임 방향, 가속도 및 속도의 변화와 같은 빠른 눈 움직임을 검출하도록 구성될 수 있다. 예를 들어, 시선 추적 카메라는 사용자의 시선 방향을 결정하기 위해 분석되는 사용자의 눈 이미지를 캡처한다. 일 실시예에서, 사용자의 시선 방향에 관한 정보는 비디오 렌더링에 영향을 미치도록 이용될 수 있다. 예를 들어, 사용자의 눈이 특정 방향을 보고 있다고 판단되면 해당 방향에 대한 비디오 렌더링에 우선 순위화 되거나 강조될 수 있다. 사용자의 시선 방향은 헤드 마운트 디스플레이와 관련하여, 사용자가 위치한 실제 환경과 관련하여 및/또는 헤드 마운트 디스플레이에 렌더링되는 가상 환경에 관련하여 정의될 수 있다는 것이 이해되어야 한다. 시선 방향은 HMD의 스크린을 기준으로 정의될 수 있으므로, 시선 방향은 스크린 상의 위치로 변환될 수 있다.
광범위하게 말하면, 시선 추적 센서 (265)에 의해 캡처된 이미지의 분석은 단독으로 고려될 때 HMD (102)에 관?링? 사용자의 시선 방향을 제공한다. 그러나 HMD (102)의 추적된 위치 및 방위와 함께 고려할 때, HMD (102)의 위치 및 방위가 사용자 머리의 위치 및 방위와 동의어이기 때문에 사용자의 실제 시선 방향이 또한 결정될 수 있다. 즉, 사용자의 실제 시선 방향은 사용자 눈의 위치 움직임을 추적하고 HMD (102)의 위치 및 방위를 추적함으로써 결정될 수 있다. 가상 환경의 뷰가 HMD (102)에서 렌더링될 때, 사용자의 현실 세계 시선 방향이 가상 환경에서 사용자의 가상 세계 시선 방향을 결정하기 위해 적용될 수 있다.
추가적으로, 촉각 피드백 모듈 (281)은 HMD (102) 또는 컨트롤러 (104)와 같은 HMD 사용자에 의해 작동되는 다른 디바이스에 포함된 촉각 피드백 하드웨어에 신호를 제공하도록 구성된다. 촉각 피드백은 진동 피드백, 온도 피드백, 압력 피드백 등과 같은 다양한 종류의 촉각 감각의 형태를 취할 수 있다.
도 3은 본 개시의 일 실시예에 따라 스플릿 계층 그래픽 프로세서 시스템을 구현하기 위해 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드를 사용하는 클라우드 시스템(114)에서 VR 콘텐츠의 생성을 예시하는데이터 흐름도이다. 일반적으로, 클라우드 시스템 (114)은 그리드 맵의 다수의 측면 각각에 대한 렌더링 및 인코딩 프레임을 포함하도록 게임 애플리케이션 및/또는 VR 대화형 애플리케이션을 실행하며, 여기서, 각각의 측면은 주어진 위치에 대한 VR 환경에 대한 뷰에 대응한다. 인코딩된 프레임은 디코딩, 블렌딩 및 디스플레이를 위해 네트워크 (150)를 통해 클라이언트 디바이스 (106)로 스트리밍된다.
클라우드 시스템 (114)은 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하도록 구성된 스플릿 계층 그래픽 프로세서 시스템을 포함한다. 특히, 스플릿 계층 그래픽 프로세서 시스템은 마스터 노드 (310) 및 복수의 렌더 노드 (320)와 같은 클라우드 시스템 (114)상의 다수의 서버/컴퓨팅 노드를 포함한다.
마스터 노드는 게임 로직, 애플리케이션 로직, 애플리케이션에서 스크립트 실행, VR 환경/VR 애플리케이션 세계에서 제공되는 오브젝트의 시뮬레이션 수행과 같은 게임 애플리케이션 및/또는 대화형 VR 애플리케이션을 실행하도록 구성된다. 예를 들어, 마스터 노드는 오브젝트의 시뮬레이션을 수행하도록 구성된 시뮬레이션 모델러(modeler) (301)를 포함할 수 있다. 예를 들어, 마스터 노드는 주어진 입력 데이터 세트에 대해 오브젝트를 배경으로 자연 또는 정의된 물리 법칙 (예를 들어, 자연 또는 게임 특정 법칙, 규칙, 스크립트 등)의 시뮬레이션을 적용하도록 구성된 물리 현상 시뮬레이션 모델러를 포함 할 수 있다. 또한, 마스터 노드 (310)는 애플리케이션에 제공되는 스크립트 (예를 들어, 물리 법칙을 적용하는 스크립트, 특정 가상 세계에 대한 게임 물리 법칙 적용 등)를 실행하기 위한 스크립트 엔진 (302)을 포함할 수 있다. 일반적으로, 마스터 노드 (310)는 그래픽 파이프 라인의 CPU 기능을 수행하도록 구성되며, 이는 도 5와 관련하여 후술될 것이다. 예를 들어, 마스터 노드는 네트워크 (150)를 통해 수신된 사용자의 클라이언트 디바이스 (106)로부터의 입력 (예를 들어, 제어 입력 (303))에 응답하는 대화형 VR 애플리케이션을 실행하여 VR 애플리케이션 장면/ VR 환경의 복수의 오브젝트에 대한 복수의 프리미티브 (미도시)를 생성하도록 구성된다.
특히, 클라우드 시스템 (114)은 VR 환경의 위치로부터 취해진 VR 환경으로 복수의 뷰에 대한 복수의 프리미티브에 기초하여 렌더링을 수행하도록 구성된 복수의 렌더 노드 (320)를 포함한다. 예를 들어, 각각의 렌더 노드는 래스터화(rasterization), 프래그먼트 음영(fragment shading), 출력 병합(output merging), 프레임 버퍼링(frame buffering) 등과 같은 렌더 작업을 수행하여 클라이언트 디바이스로 스트리밍하기 위한 비디오 프레임 시퀀스를 생성하도록 구성된다.
또한, 스플릿 계층 그래픽 프로세서 시스템은 VR 환경을 구축하는데 사용되는 복수의 오브젝트에 대한 입력 지오메트리(505)를 저장하도록 구성된 자산 라이브러리 (350)를 포함한다. 대응하는 입력 지오메트리로 표현되는 오브젝트는 마스터 노드 (310) 및 복수의 렌더 노드 (320)에 의해 액세스 가능하다. 특히, 마스터 노드는 입력 지오메트리 및 제어 입력 (303)에 기초하여 오브젝트에 대한 프리미티브를 생성한다. 각각의 렌더 노드는 마스터 노드의 출력 (예를 들어, 물리 현상 시뮬레이션 적용 후 오브젝트의 움직임)을 기반으로 오브젝트의 렌더링을 수행한다 (입력 지오메트리에 의해 표시됨).
스플릿 계층 구조이기 때문에, 뷰에 대한 비디오 프레임의 시퀀스 각각은 최고 해상도 (예를 들어, 풀(full) 해상도)로 렌더링된다. 복수의 뷰는 해당 위치에 대한 VR 환경의 그리드 맵에 대응한다. 일 실시예에서, 각각의 렌더 노드는 그리드 맵의 대응하는 뷰에 대한 비디오 프레임을 렌더링한다. 예를 들어, 렌더 노드 1 (320a)은 그리드 맵의 대응하는 뷰에 대한 비디오 프레임 (323a)의 시퀀스를 생성하도록 구성된 렌더러(renderer) (321a)를 포함한다. 유사하게, 렌더 노드 2 (320b)는 그리드 맵의 대응하는 뷰에 대한 비디오 프레임 시퀀스 (323b)를 생성하도록 구성된 렌더러 (321b); 렌더 노드 3 (320c)은 그리드 맵의 대응하는 뷰에 대해 비디오 프레임 (323c)의 시퀀스를 생성하도록 구성된 렌더러 (321c)를 포함하고... 및 렌더 노드 n (320n)은 그리드 맵의 대응하는 뷰에 대한 비디오 프레임 시퀀스 (323n)를 생성하도록 구성된 렌더러 (321n)를 포함한다.
또한, 복수의 렌더 노드 (320) 각각은 대응하는 프레임 스트림을 인코딩한다. 일반적으로 네트워크 (150)를 통해 스트리밍되는 비디오 프레임의 시퀀스를 압축하여 통신 효율을 높이기 위해 인코딩을 수행한다. 예를 들어, 렌더 노드 1 (320a)은 인코딩된 프레임 (323a')의 시퀀스를 생성하도록 구성된 인코더 (322a)를 포함하고; 렌더 노드 2 (320b)는 인코딩된 프레임 (323b')의 시퀀스를 생성하도록 구성된 인코더 (322b)를 포함하고; 렌더 노드 3 (320c)은 인코딩된 프레임 (323c')의 시퀀스를 생성하도록 구성된 인코더 (322c)를 포함하고 ... 및 렌더 노드 n (320n)은 인코딩된 프레임 (323n')의 시퀀스를 생성하도록 구성된 인코더 (322n)를 포함한다.
인코딩된 프레임의 시퀀스 (그리드 맵의 뷰에 대응하는 각각의 시퀀스) 각각은 네트워크 (150)를 통해 클라이언트 디바이스 (106)의 디코더 (330)로 스트리밍된다. 스트리밍되는 프레임의 대응하는 시퀀스의 프레임은 각각 식별자 (예를 들어, 인덱스 번호)와 관련될 수 있으며, 하나 이상의 프레임 시퀀스 및 VR 환경으로의 시점(point-of-view)에 기반하여 VR 환경의 3D 뷰로 디코딩 및 어셈블링되도록 구성될 수 있다. 일 실시예에서, 인코딩된 프레임의 시퀀스는 단방향 브로드 캐스트 (예를 들어, UDP, 유니티(Unity) UDP, 멀티 캐스트 등)를 통해 클라이언트 디바이스로 스트리밍된다. 클라이언트 디바이스는 복수의 렌더 노드로부터 수신된 인코딩된 스트림을 디코딩 및 버퍼링하도록 구성된 하나 이상의 디코더를 포함한다. 예를 들어, 일 실시예에서, 디코더는 다수의 디코더로 분할된다. 일 구현예에서, 하나의 디코더가 일대일 기반으로 대응하는 인코더로부터 전달된 프레임을 디코딩하도록 할당된다. 물론, 다른 실시예에서, 하나의 디코더는 하나 이상의 인코딩된 프레임 시퀀스를 디코딩할 수 있다. 예를 들어, 렌더 노드 1 (320a)로부터 인코딩된 프레임 (323a')의 시퀀스는 경로 (380a)를 통해 클라이언트 디바이스 (106)의 디코더 (330-a)로 스트리밍된다. 디코더 (330-a)는 인코딩된 프레임 (323a')을 디코딩하고 원래 또는 미가공 상태 (또는 일부 유사한 상태)로 되돌 리도록 작동하여 VR 장면의 그리드 맵의 제 1 뷰에 대응할 수 있는 프레임 시퀀스 (323a)를 생성한다. 인코딩된 프레임의 다른 시퀀스 각각에 대해 유사한 기능이 수행된다. 특히, 렌더 노드 2 (320b)로부터, 인코딩된 프레임 (323b')의 시퀀스는 경로 (380b)를 통해 디코더 (330-b)로 스트리밍되어 그리드 맵의 제 2 뷰에 대응할 수 있는 디코딩된 프레임 (323b)의 시퀀스를 생성한다. 또한, 렌더 노드 3 (320c)로부터, 인코딩된 프레임 (323c')의 시퀀스는 경로 (380c)를 통해 디코더 (330-c)로 스트리밍되어 그리드 맵의 제 3 뷰에 대응할 수 있는 디코딩된 프레임 (323c)의 시퀀스를 생성한다. 프로세스는 렌더 노드 n (320n)으로부터를 포함하여 인코딩된 프레임의 각각의 시퀀스에 대해 계속되며, 인코딩된 프레임 (323n')의 시퀀스는 경로 (380n)를 통해 디코더 (330-n)로 스트리밍되어 그리드 맵의 제 3 뷰에 대응할 수 있는 디코딩된 프레임 (323n)의 시퀀스를 생성한다.
또한, 디코딩 후, 디코딩된 프레임 시퀀스는 하나 이상의 버퍼 (335)에 저장된다. 예를 들어, 그리드 맵의 제 1 뷰에 대응하는 프레임 (323a)의 디코딩된 시퀀스는 제 1 버퍼 (335-a)에 저장되고; 그리드 맵의 제 2 뷰에 대응하는 디코딩된 프레임 시퀀스 (323b)는 제 2 버퍼 (335-b)에 저장되고; 그리드 맵의 제 3 뷰에 대응하는 디코딩된 프레임 시퀀스 (323c)는 제 3 버퍼 (335-c)에 저장되고 ... 및 그리드 맵의 n 번째 뷰에 대응하는 프레임 (323n)의 디코딩된 시퀀스는 n 번째 버퍼 (335-n)에 저장된다. 주어진 위치에 대한 VR 환경으로의 대응하는 뷰의 인코딩된 프레임의 하나 이상의 디코딩된 시퀀스에 기초하여, 클라이언트 디바이스는 VR 환경을 지켜보는 사용자에 대응하는 현재 시점을 생성하도록 구성된다.
일 실시예에서, 마스터 노드는 또한 복수의 렌더 노드의 동작을 동기화할 수 있으며(예를 들어, 동기화 패킷을 통해), 이들 각각은 그리드 맵의 대응하는 뷰에 대한 비디오 프레임을 렌더링한다. 다른 구현예에서, 마스터 노드와 렌더 노드가 통신을 위해 서버 랙 (370)에 배치될 때, 랙 내부의 통신 경로의 구성으로 인해 그리드 맵의 각각의 측면에 대한 프레임의 렌더링 뿐만 아니라 통신의 동기화가 실현될 수 있다. 예를 들어, 마스터 노드에 의해 프리미티브를 복수의 렌더 노드 각각에 브로드 캐스트 (예를 들어, UDP, 유니티 UDP, 멀티 캐스트 등)함으로써 각각의 렌더 노드에 대한 통신이 동시에 성취된다. 또 다른 실시예에서, 동기화는 렌더 노드에서 타임 스탬프(timestamp)의 애플리케이션을 통해 달성될 수 있다. 특히, 각각의 렌더 노드는 타임 스탬프 또는 프레임 번호를 대응하는 프레임 시퀀스의 프레임에 첨부하도록 구성된다. 타임 스탬프는 클라이언트 디바이스에서 서로 다른 프레임 시퀀스의 프레임 동기화에 사용된다. 예를 들어, 클라이언트 디바이스는 동일하거나 유사한 타임 스탬프를 갖는 프레임 만 블렌딩 및/또는 디스플레이할 수 있다.
도 4는 본 개시의 일 실시예에 따라, 게임 애플리케이션의 게임 로직을 실행하고 렌더 노드의 동기화를 관리하기 위한 마스터 노드 및 큐브 맵의 6개의 측면에 대한 뷰를 생성하는 6 개의 렌더 노드를 포함하는 멀티 서버 및/또는 컴퓨팅 노드를 사용하는 클라우드 시스템(114)에서 VR 콘텐츠의 생성을 예시하는데이터 흐름도이다. 실행 엔진 (예를 들어, 게임 엔진) (300) 내에서 구현되는 스플릿 계층 그래픽 프로세서 시스템의 구성은 마스터 노드 (310) 및 복수의 렌더 노드 (320)와 같은 클라우드 시스템 (예를 들어, 클라우드 시스템 (114))상의 멀티 서버/컴퓨팅 노드를 포함한다.
구체적으로, 도 4는 그리드 맵에 기초하여 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하도록 구성된 도 3의 포괄적인 스플릿 계층 그래픽 프로세서 시스템의 일 구현예이다. 특히, 도 4는 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하기 위해 6 개의 측면을 갖는 큐브 맵 (410)에 대한 뷰를 렌더링하도록 구성된 스플릿 계층 그래픽 프로세서 시스템을 도시한다. 스플릿 계층 그래픽 프로세서 시스템은 앞서 설명된 마스터 노드 (310) 및 복수의 렌더 노드 (320)를 포함한다.
특히, 마스터 노드 (310)는 전술한 바와 같이 게임 애플리케이션 및/또는 대화형 VR 애플리케이션을 실행하도록 구성된다. 예를 들어, 마스터 노드 (310)는 게임 로직, 애플리케이션 로직을 실행하고, 스크립트를 실행하고, 오브젝트의 시뮬레이션을 수행 (예를 들어, 자연적 또는 사용자 정의 물리 법칙의 시뮬레이션을 오브젝트에 적용하도록 구성된 물리현상 시뮬레이션 모델러 실행) 등을 수행한다. 일반적으로, 마스터 노드 (310)는 클라이언트 디바이스 (106)로부터의 입력에 응답하여 대화형 VR 애플리케이션을 실행하기 위해 그래픽 파이프 라인의 CPU 기능을 수행하도록 구성된다. 마스터 노드는 VR 환경에서 오브젝트에 대한 복수의 프리미티브를 생성한다.
또한, 복수의 렌더 노드 (320)는 복수의 뷰에 대한 프리미티브에 기초하여 VR 환경의 위치에서 취해진 VR 환경으로의 렌더링을 수행하도록 구성된다. 뷰는 큐브 맵 (410)의 각각의 측면에 대응한다. 특히, 각각의 렌더 노드는 래스터화, 프래그먼트 음영, 출력 병합, 프레임 버퍼링 등과 같은 대응하는 뷰에 대한 비디오 프레임 시퀀스를 생성하기 위해 렌더링 작업을 수행하도록 구성된다. 비디오 프레임 시퀀스는 클라이언트 디바이스로 스트리밍된다. 스트리밍 전에, 복수의 렌더 노드 (320) 각각은 네트워크 (150)를 통해 클라이언트 (106)로 스트리밍될 때 통신 효율을 위해 비디오 프레임의 시퀀스를 압축하기 위해 프레임의 대응하는 스트림을 인코딩한다.
클라이언트 (106)에서, 디코더 (330)는 인코딩된 프레임 시퀀스의 스트림을 수신한다. 디코더 (330)는 복수의 렌더 노드 (320)로부터 수신된 인코딩된 스트림을 디코딩 및 버퍼링 (버퍼 (335)에 저장)하도록 구성된다. 예를 들어, 일 실시예에서, 디코더는 다수의 디코더로 분할된다. 일 구현예에서, 하나의 디코더가 일대일 기반으로 대응하는 인코더로부터 전달된 프레임을 디코딩하도록 할당된다. 예를 들어, 디코더 (330-1)는 인코더 (320-1)와 페어링(pair)되고; 디코더 (330-2)는 인코더 (320-2)와 페어링되고; 디코더 (330-3)는 인코더 (320-3)와 페어링되고; 디코더 (330-4)는 인코더 (320-4)와 페어링되고; 디코더 (330-5)는 인코더 (320-5)와 페어링되고; 디코더 (330-6)는 인코더 (320-6)와 페어링된다. 물론, 다른 실시예에서, 하나의 디코더는 하나 이상의 인코딩된 프레임 시퀀스를 디코딩할 수 있다.
특히, 도 4는 큐브 맵의 각각의 측면에 대한 인코딩 및 디코딩 프로세스를 예시한다. 예를 들어, 렌더 노드 (320-1)는 제 1 뷰를 생성하고, 제 1 뷰를 디스플레이하기 위해 준비된 프레임들의 인코딩된 시퀀스를 디코딩하고 버퍼링하는 디코더 (330-1)로 제 1 뷰를 인코딩하고 스트리밍하고 (예를 들어, 업 뷰(up view) (410a)); 렌더 노드 (320-2)는 제 2 뷰를 생성하고, 제 2 뷰를 디스플레이하기 위해 준비된 프레임들의 인코딩된 시퀀스를 디코딩하고 버퍼링하는 디코더 (330-2)로 제 2 뷰를 인코딩하고 스트리밍하고 (예를 들어, 전면 뷰 (front view)(410b)); 렌더 노드 (320-3)는 제 3 뷰를 생성하고, 제 3 뷰를 디스플레이하기 위해 준비된 프레임들의 인코딩된 시퀀스를 디코딩하고 버퍼링하는 디코더 (330-3)에 제 3 뷰를 인코딩하고 스트리밍하고 (예를 들어, 좌측 뷰(left view) (410c)); 렌더 노드 (320-4)는 제 4 뷰를 생성하고, 제 4 뷰를 디스플레이하기 위해 준비된 프레임들의 인코딩된 시퀀스를 디코딩하고 버퍼링하는 디코더 (330-4)로 제 4 뷰를 인코딩하고 스트리밍하고 (예를 들어, 하단 뷰(bottom view) (410d)); 렌더 노드 (320-5)는 제 5 뷰를 생성하고, 제 5 뷰를 디스플레이하기 위해 준비된 프레임들의 인코딩된 시퀀스를 디코딩하고 버퍼링하는 디코더 (330-5)로 제 5 뷰를 인코딩하고 스트리밍하고(예를 들어, 우측 뷰(right view) (410e)); 렌더 노드 (320-6)는 제 6 뷰를 생성하고, 제 6 뷰를 디스플레이하기 위해 준비된 프레임들의 인코딩된 시퀀스를 디코딩하고 버퍼링하는 디코더 (330-6)로 제 6 뷰를 인코딩하고 스트리밍한다 (예를 들어, 백 뷰(back view) (410f)).
도시된 바와 같이, 큐브 맵의 뷰 각각에 대응하는 프레임의 디코딩된 스트림은 하나 이상의 버퍼 (335)에서 버퍼링된다. 뷰는 큐브 맵 뷰어 (450)에 의해 호출될 때 디스플레이할 준비가 된다. 특히, 큐브 맵 뷰어 (450)는 VR 환경에서 주어진 위치에 대한 사용자의 시점에 대한 현재 뷰를 생성하도록 구성된다. 현재 뷰는 큐브 맵 뷰의 인코딩된 프레임의 하나 이상의 디코딩된 시퀀스를 기반으로 한다. 예를 들어, 사용자의 시점의 예는 좌측 뷰 (410c), 전면 뷰 (410b) 및 하단 뷰 (410d)의 일부를 포함할 수 있다. 따라서, 사용자의 현재 뷰는 이러한 세 가지 뷰의 조합이며, 큐브 맵 뷰어 (450)는 좌측 뷰, 전면 뷰 및 하단 뷰를 조합 및/또는 블렌딩하여 POV(point-of-view)(420)를 생성하도록 구성된다.
도 5는 본 개시의 일 실시예에 따른, 렌더링 파이프 라인 (500)을 구현하도록 구성된 스플릿 계층 프로세서 시스템을 예시한다. 특히, 스플릿 계층 프로세서 시스템은 CPU 및/또는 GPU의 기능을 수행하여 로직을 실행하고 게임 애플리케이션 및/또는 대화형 VR 애플리케이션에 대한 렌더링을 수행하기 위해 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드에 걸쳐 구현된다. 그리드 맵의 각각의 측면에 대한 이미지 프레임은 앞에서 설명한 것처럼 독립적으로 렌더링된다. 렌더링 파이프 라인 (500)에 도시된 프로세스는 그리드 맵의 측면의 하나의 뷰와 관련하여 수행될 수 있다. 렌더링 파이프 라인 (500)은 앞서 설명한 바와 같이 HMD (102), 컴퓨터 (106) 및 클라우드 게임 서버 (114) 내에서 단독으로 또는 조합하여 구현될 수 있다.
렌더링 파이프 라인 (500)은 3D (3 차원) 다각형 렌더링 프로세스를 사용하여 이미지를 렌더링하기 위한 일반적인 프로세스를 예시한다. 렌더링된 이미지에 대한 렌더링 파이프 라인 (500)은 디스플레이 (예를 들어, HMD)의 각각의 픽셀에 대한 대응하는 색상 정보를 출력하며, 여기서 색상 정보는 질감 및 음영 (예를 들어, 색상, 그림자(shadowing) 등)을 나타낼 수 있다. 렌더링 파이프 라인 (500)은 도 1a-1c 및 3-4와 관련하여 이전에 설명된 클라우드 시스템의 스플릿 계층 프로세서 시스템 내에서 구현될 수 있다.
렌더링 파이프 라인 (500)은 오브젝트 애니메이션을 수행하도록 구성되며, 마스터 노드 (310)의 컴퓨팅 쉐이더 (506), 및 처리 정점 데이터(processing vertex data)를 포함하여 렌더링하도록 구성된 렌더 노드 (320) 중 하나를 나타내는 프로그래밍 가능한 쉐이더(shader)를 포함하고, 정점을 프리미티브(primitive) (예를 들어, 다각형)로 어셈블링하고, 래스터화를 수행하여 디스플레이에 관하여 프리미티브에서 프래그먼트를 생성한 다음 각각의 프래그먼트에 대한 색상 및 깊이 값을 계산하고 뿐만 아니라 디스플레이를 위해 프레임 버퍼에 저장하기 위해 픽셀 단위로 프래그먼트를 블렌딩한다. 마스터 노드 (310)에서 컴퓨팅 쉐이더 (506)에 의해 수행되는 동작은 (예를 들어, 애니메이션을 위해) CPU 또는 GPU에서 수행될 수 있지만, 예시를 위해 CPU에서 수행되는 것으로 도시된다. 렌더 노드 (320)로서 프로그래밍 가능한 쉐이더에 의해 수행되는 동작은 일반적으로 더 나은 성능 및 효율성을 위해 GPU에서 실행하기에 더 적합하다.
도시된 바와 같이, 렌더링 파이프 라인 (500)은 3D 환경 내의 오브젝트에 대응하는 입력 지오메리 (505)를 수신한다. 예를 들어, 입력 지오메트리 (505)는 3D 게임 세계 내의 정점 및 정점 각각에 대응하는 정보를 포함할 수 있다. 게임 세계 내의 주어진 오브젝트는 정점에 의해 정의된 다각형 (예를 들어, 삼각형)을 사용하여 표현될 수 있으며, 대응하는 다각형의 표면은 렌더링 파이프 라인 (500)의 나머지 부분을 통해 (예를 들어, 렌더 노드 (320)을 통해) 처리되어 최종 효과 (예를 들어, 색상, 질감 등)를 달성한다. 정점 속성은 법선 (예를 들어, 정점에 대한 광의 방향), 색상 (예를 들어, RGB-빨간색, 녹색 및 파란색 트리플 등) 및 질감 조정/매핑 정보를 포함할 수 있다. 설명의 편의를 위해, 3D 게임 세계에 대한 입력 지오메트리는 마스터 노드 (310)의 쉐이더 (506)를 계산하기 위해 입력되는 것으로 보여 지지만, 지오메트리는 파티클(particle) 시스템에 대한 지오메트리가 컴퓨팅 쉐이더에 입력되고 나머지 지오메트리는 렌더 노드 (320)로서 프로그래밍 가능한 쉐이더의 정점 쉐이더 (510)에 입력된다. 예를 들어, 입력 지오메트리는 쉐이더간에 공유될 수 있는 정점 버퍼에 입력될 수 있다.
특히, 마스터 노드 (310)의 컴퓨팅 쉐이더 (506)는 물체에 의해 인가되는 및/또는 오브젝트 상에 발휘도는 힘 (예를 들어, 중력 등의 외부 물리적 힘과 움직임을 유도하는 물체의 내부 힘)에 따라 프레임 마다 오브젝트 애니메이션/시뮬레이션을 수행한다 (예를 들어, 오브젝트 및/또는 파티클 모션을 계산하는 등). 일반적으로, 제 1 프레임부터 다음 프레임까지, 마스터 노드 (310)의 컴퓨팅 쉐이더 (506)는 오브젝트를 애니메이션화하거나 오브젝트에 모션을 제공하는 동작을 수행한다. 특히, 렌더링된 각각의 프레임에 대해 오브젝트의 애니메이션 (예를 들어, 위치, 방위, 속도 등)이 이산의 시간 단계 (예를 들어, 프레임 별)로 업데이트된다. 예를 들어, 애니메이션/시뮬레이션 모듈 (507)은 (예를 들어, 물리현상의 적용을 통해) 오브젝트에 애니메이션 또는 움직임을 제공하고, 특히 이산 시간 단계에(예를 들어, 프레임 마다) 움직임을 (예를 들어, 오브젝트 위치 또는 오브젝트의 정점을 업데이트함으로써) 제공하도록 구성된다. CPU 역할을 하는 마스터 노드 (310)의 컴퓨팅 쉐이더 (506)는 그런 다음 렌더 노드 (320)에 의해 수행되는 다각형 정점에 대한 드로우(draw) 명령을 발행한다.
컴퓨팅 쉐이더 (506)의 출력은 오브젝트의 프리미티브 (예를 들어, 정점, 다각형 등)를 포함할 수 있다. GPU 구성 내에서 구현된 대로, 나머지 컴포넌트 (예를 들어, 래스터라이저(rasterizer), 프래그먼트 쉐이더 및 렌더러-출력 병합기 및 프레임 버퍼 포함)는 유휴 상태이므로 컴퓨팅 쉐이더 (506)의 출력은 그런 다음 렌더링을 포함하는 보다 전통적인 GPU 동작을 수행하기 위해 렌더링 노드 (320)로서 프로그래밍 가능한 쉐이더와 공유 및/또는 전달된다. 물론, CPU 구현예에서, 마스터 노드 (310)는 컴퓨팅 쉐이더 (506) 및 오브젝트 시뮬레이션 모듈 (507)만을 포함하도록 간략화될 수 있다.
특히, 컴퓨팅 쉐이더 (506)에 의해 생성된 애니메이션 결과는 정점 버퍼에 저장될 수 있으며, 이 버퍼는 디스플레이(예를 들어, HMD의)에 다각형 정점의 투영 및 다각형 정점을 렌더링하기 위해 투영된 다각형의 테셀레이션(tessellation)을 수행하도록 구성된 렌더 노드 (320)에 의해 액세스된다. 즉, 렌더링시 렌더 노드 (320)는 장면의 조명에 따라 달라지는 다각형에 대한 조명, 그림자 및 음영 계산 수행을 포함하기 위해 3D 가상 환경 내에서 오브젝트를 구성하는 다각형 및/또는 프리미티브를 추가로 구축하도록 구성될 수 있다.
구체적으로, 애니메이션된 오브젝트는 렌더 노드 (320)에 의해 수행되는 동작을 사용하여 프레임 마다 드로잉된다. 특히, 마스터 노드의 컴퓨팅 쉐이더 (506)로부터의 애니메이션 결과는 정점 버퍼에 저장되고, 그런 다음 렌더 노드 (320)에 입력된다 (예를 들어, 정점 쉐이더 (510)에 의해 액세스됨). 정점 버퍼의 값은 그래픽 파이프 라인 (500)의 스테이지 간에 공유될 수 있다. 보다 구체적으로, 정점 쉐이더 (510)는 이전에 설명된 바와 같이 컴퓨팅 쉐이더 (506)로부터 직접 입력 지오메트리 (505)를 수신하고 3D 장면 내에서 오브젝트를 구성하는 다각형 또는 프리미티브를 구축한다. 정점 쉐이더 (510)는 컴퓨팅 쉐이더 (506)에 의해 완료되지 않은 경우 애니메이션된 오브젝트에 대한 프리미티브를 추가로 구축할 수 있다. 즉, 정점 쉐이더 (510)는 게임 세계 내에 배치된 프리미티브를 사용하여 오브젝트를 구축한다. 예를 들어, 정점 쉐이더 (510)는 장면에 대한 조명에 의존하는 다각형에 대한 조명 및 그림자 계산을 수행하도록 구성될 수 있다. 프리미티브는 정점 프로세서 (510)에 의해 출력되고 그래픽 파이프 라인 (500)의 다음 단계로 전달된다. 클리핑(clipping) (예를 들어, 게임 세계에서 시청 위치에 의해 정의된 시청 각뿔대(frustum) 외부에 있는 프리미티브를 식별하고 무시함)과 같은 추가 동작이 정점 프로세서 (510)에 의해 수행될 수도 있다.
정점 프로세서 (510)에 의해 출력된 프리미티브는 3D 게임 세계 (예를 들어, 카메라 위치, 사용자 눈 위치 등)에서 시청 위치에 의해 정의된 2 차원 (2D) 이미지 평면에 장면의 오브젝트를 투영하도록 구성된 래스터라이저(rasterizer) (520)로 공급된다. 단순한 레벨에서, 래스터라이저 (520)는 각각의 프리미티브를 지켜 보고 대응하는 프리미티브에 의해 영향을 받는 픽셀을 결정한다. 특히, 래스터라이저 (520)는 프리미티브를 픽셀 크기의 프래그먼트로 분할하며, 각각의 프래그먼트는 디스플레이의 픽셀 및/또는 렌더링 시점 (예를 들어, 카메라 뷰)과 관련된 기준 평면(reference plane)에 대응한다. 즉, 프리미티브의 프래그먼트는 프리미티브를 픽셀 크기의 프래그먼트로 쪼개는데 사용될 수 있으며, 각각의 프래그먼트는 디스플레이의 픽셀 및/또는 렌더링 시점과 관련된 기준 평면에 대응한다. 예컨대, 클리핑(clipping) (시청 각뚤대 외부에 있는 프래그먼트 식별 및 무시) 및 시청 위치에 대한 컬링(culling) (가까운 오브젝트에 의해 가려진 프래그먼트 무시)와 같은 추가 작업이 래스터라이저 (520)에 의해 수행될 수 있다.
그 코어에 있는 프래그먼트 프로세서 (530)는 프리미티브의 색상 및 휘도가 이용 가능한 조명에 따라 어떻게 변하는지를 결정하기 위해 프래그먼트에 음영 연산을 수행한다. 예를 들어, 프래그먼트 프로세서 (530)는 각각의 프래그먼트에 대한 깊이, 색상, 법선 및 질감 조정 (예를 들어, 질감 세부 사항)를 결정할 수 있고, 프래그먼트에 대한 적절한 레벨의 빛, 어두움 및 색상을 추가로 결정할 수 있다. 특히, 프래그먼트 프로세서 (530)는 색상 및 다른 속성 (예를 들어, 시청 위치로부터의 거리에 대한 z-깊이 및 투명도에 대한 알파 값)을 포함하는 각각의 프래그먼트의 특색을 계산한다. 추가하여, 프래그먼트 프로세서 (530)는 대응하는 프래그먼트에 영향을 미치는 이용 가용한 조명에 기초하여 프래그먼트에 조명 효과를 적용한다. 또한, 프래그먼트 프로세서 (530)는 프래그먼트별로 그림자 효과를 적용할 수 있다. 프래그먼트 프로세서 (530)의 출력은 처리된 프래그먼트 (예를 들어, 그림자를 포함하는 질감 및 음영 정보)를 포함하고 렌더링 파이프 라인 (500)의 다음 단계로 전달된다.
출력 병합 컴포넌트 (540)는 각각의 대응하는 픽셀에 기여 및/또는 영향을 미치는 프래그먼트에 따라 각각의 픽셀의 특색을 계산한다. 즉, 3D 게임 세계의 모든 프리미티브의 프래그먼트가 디스플레이를 위해 2D 색상 픽셀로 조합된다. 예를 들어, 대응하는 픽셀에 대한 질감 및 음영 정보에 기여하는 프래그먼트가 조합되어 렌더링 파이프 라인 (500)에서 다음 단계로 전달되는 픽셀에 대한 최종 색상 값을 출력한다. 출력 병합 컴포넌트 (540)는 프래그먼트 프로세서 (530)로부터 결정된 프래그먼트 및/또는 픽셀 간의 값의 옵션 블렌딩을 수행할 수 있다. 즉, 이미지를 디스플레이할 때 하나 이상의 프래그먼트가 대응하는 픽셀의 색상에 기여할 수 있다는 점에 유의하는 것이 중요하다. 예를 들어, 3D 가상 환경에있는 모든 프리미티브의 주어진 픽셀 프래그먼트가 디스플레이를 위해 픽셀로 조합된다. 이와 같이 해당 픽셀에 대한 전체 질감 및 음영 정보가 조합되어 픽셀에 대한 최종 색상 값을 출력한다.
각 픽셀에 대한 이러한 색상 값은 프레임 버퍼 (550)에 저장될 수 있으며, 프레임 버퍼 (550)는 프레임 베이스로 장면의 대응하는 이미지를 디스플레이할 때 대응하는 픽셀에 대해 전통적인 GPU 파이프 라인에서 스캔될 수 있다. 그러나, 프레임 시퀀스를 디스플레이에 전달하는 대신, 본 개시의 실시예에서, 렌더 노드 (320)는 그리드 맵 (예를 들어, 큐브 맵)의 특정 뷰/측면에 대한 프레임을 렌더링하고 해당 시퀀스를 인코딩하고 (예를 들어, 인코더 (335)를 통해), 그런 다음 인코딩된 프레임 시퀀스를 클라이언트 디바이스로 스트리밍하도록 구성된다. 해당 렌더 노드에서 렌더링된 프레임은 사용자에게 디스플레이되는 현재 시점 (예를 들어, HMD)에 기여하거나 기여하지 않을 수 있다. 그러나, 그리드 맵의 하나 이상의 뷰에 대응하는 하나 이상의 시퀀스의 프레임에 기초하여, 예를 들어 클라이언트 디바이스의 큐브 맵 뷰어 (도 4 참조)를 통해 현재 시점이 생성될 수 있다.
게임 콘솔, HMD 및 클라우드 게임 서버의 다양한 모듈에 대한 상세한 설명과 함께, 클라우드 시스템의 스플릿 계층 그래픽 프로세서 시스템을 사용하여 그래픽 처리를 수행하는 방법이 본 개시의 일 실시예에 따라 도 6의 흐름도 (600)와 관련하여 이제 설명된다. 전술한 바와 같이, 흐름도 (600)는 로직을 실행하고 게임 애플리케이션 및/또는 대화형 VR 애플리케이션을 위한 렌더링을 수행하기 위해 CPU 및/또는 GPU의 기능을 수행하기 위해 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드에 걸쳐 스플릿 계층 프로세서 시스템을 구현하는데 수반된 작업의 프로세스 및 데이터 흐름을 예시한다. 특히, 흐름도 (600)의 방법은 도 1-5의 마스터 노드 (310) 및 복수의 렌더 노드 (320)에 의해 적어도 부분적으로 수행될 수 있다.
(610)에서, 방법은 VR 애플리케이션의 VR 환경에서 복수의 오브젝트에 대한 복수의 프리미티브를 생성하기 위해 사용자의 클라이언트 디바이스로부터의 입력에 응답하는 VR 애플리케이션을 클라우드 시스템의 마스터 노드에서 실행하는 단계를 포함한다. 특히, 마스터 노드는 전술한 바와 같이 게임 애플리케이션 및/또는 대화형 VR 애플리케이션을 실행하도록 구성된다. 예를 들어, 마스터 노드 (310)는 게임 로직 및/또는 애플리케이션 로직 실행, 스크립트 실행, 오브젝트 시뮬레이션 수행 (예를 들어, 자연적 또는 사용자 정의 물리 법칙의 시뮬레이션을 오브젝트에 적용하도록 구성된 물리 현상 시뮬레이션 모델러 실행) 등을 포함하여 클라이언트 디바이스의 입력에 응답하여 CPU 기능을 수행하도록 구성된다. 마스터 노드는 VR 환경에서 오브젝트에 대한 복수의 프리미티브를 생성한다.
(620)에서, 방법은 VR 환경의 위치로부터 취해진 VR 환경으로 복수의 뷰에 대한 복수의 프리미티브에 기초하여 복수의 렌더 노드에서 복수의 프레임 시퀀스를 렌더링하는 단계를 포함한다. 예를 들어, 복수의 뷰는 VR 환경의 그리드 맵의 측면에 대응하고, 대응하는 프레임 시퀀스는 대응하는 뷰와 관련된다. 특히, 각각의 렌더 노드는 래스터화, 프래그먼트 음영, 출력 병합, 프레임 버퍼링 등과 같은 대응하는 뷰에 대한 비디오 프레임 시퀀스를 생성하기 위해 렌더링 작업을 수행하도록 구성된다.
또 다른 실시예에서, 각각의 노드는 특정 기능을 수행하도록 구성된다. 예를 들어, 그리드 맵의 측면 렌더링을 수행하는 대신 노드가 계산 집약적인 특정 컴퓨터 기능을 수행하도록 할당될 수 있다. 전용 노드에서 컴퓨터 기능을 수행함으로써, 나머지 노드 (예를 들어, 마스터 노드)는 계산 집약적인 기능을 수행하기 위해 자원을 소비하지 않고도 다른 중요한 기능을 자유롭게 수행할 수 있다.
(630)에서, 방법은 자산 라이브러리에 복수의 오브젝트에 대한 입력 지오메트리를 저장하는 단계를 포함하며, 자산 라이브러리에 있는 복수의 오브젝트는 마스터 노드 및 복수의 렌더 노드에 의해 액세스 가능하다. 대응하는 입력 지오메트리로 표현되는 복수의 오브젝트는 VR 환경을 구축하는데 사용된다. 입력 지오메트리 및 제어 입력을 기반으로, 마스터 노드는 오브젝트 시뮬레이션 등을 적용한 후 오브젝트에 대한 프리미티브를 생성한다. 렌더 노드는 마스터 노드의 출력 (예를 들어, 물리 현상 시뮬레이션 적용 후 오브젝트의 움직임)을 기반으로 오브젝트의 렌더링을 수행한다 (입력 지오메트리에 의해 표시됨). 일 실시예에서, 마스터 노드 및 렌더 노드는 서버 랙 내에 구성되고, 따라서 마스터 노드에서 각각의 렌더 노드로 프리미티브를 브로드 캐스팅함으로써 통신 공간 내에서 동기화가 달성된다.
(640)에서, 방법은 각각의 렌더 노드에서 대응하는 프레임 시퀀스를 인코딩하는 단계를 포함한다. 네트워크를 통해 클라이언트 디바이스로 스트리밍될 때 통신 효율성을 위해 비디오 프레임 시퀀스를 압축하도록 인코딩이 수행된다. 인코딩 후 (650)에서, 방법은 각각의 렌더 노드로부터 대응하는 프레임 시퀀스를 클라이언트 디바이스로 스트리밍하는 단계를 포함하며, 여기서 각각의 대응하는 프레임 시퀀스는 그리드 맵의 측면 또는 뷰에 대응한다. 클라이언트 디바이스는 인코딩된 프레임의 시퀀스 각각을 디코딩하고, 호출될 때 디스플레이를 위해 인코딩된 프레임의 디코딩된 시퀀스를 복수의 버퍼에 저장하도록 구성된다. 또한, 클라이언트 디바이스는 VR 환경의 그리드 맵의 인코딩된 뷰 프레임의 하나 이상의 디코딩된 시퀀스에 기초하여 VR 환경의 주어진 위치에서 시점(point-of-view)을 생성하도록 구성된다.
도 7은 본 개시의 다양한 실시예들의 양태들을 수행하는데 사용될 수 있는 예시적인 디바이스(700)의 컴포넌트들을 예시한다. 특히, 도 7은 본 개시의 일 실시예에 따른 대화형 VR 애플리케이션 및/또는 게임 애플리케이션에 대한 렌더링을 수행하고 로직을 실행하기 위해 CPU 및/또는 GPU의 기능을 수행하기 위해 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드에 걸쳐 스플릿 계층 프로세서 시스템을 구현하는 컴퓨터 시스템을 예시한다. 일 구현예에서, 도 7은 클라우드 시스템의 멀티 서버 및/또는 컴퓨팅 노드에 걸쳐 스플릿 계층 프로세서 시스템을 구현하기에 적합한 예시적인 하드웨어 시스템을 예시한다. 다른 실시예에서, 컴퓨터 시스템은 클라우드 서비스 내에서 가상 머신 (VM : virtual machine)으로 구현될 수 있다. 예를 들어, 클라우드 서비스는 가상 스토리지 및 컴퓨팅 파워를 제공하는 하나 이상의 VM을 지원하는 가상화 층(virtualization layer)을 포함할 수 있다. 가상화 층은 가상화된 공간 외부에서 액세스할 수 있는 하지의(underlying) 하드웨어 및 물리적 데이터 스토리지를 활용한다. 이 블록도는 본 개시의 실시예를 실행하기에 적합한, 서버 컴퓨터, 가상화된 컴퓨터, 퍼스널 컴퓨터, 비디오 게임 콘솔, 퍼스널 디지털 어시스턴트 또는 다른 디지털 디바이스일 수 있거나 또는 통합할 수 있는 디바이스 (700)를 예시한다. 디바이스 (700)는 소프트웨어 애플리케이션 및 옵션으로 운영 체제를 실행하기 위한 중앙 처리 유닛 (CPU) (702)를 포함한다. CPU (702)는 하나 이상의 동종 또는 이종 처리 코어로 구성될 수 있다. 예를 들어, CPU (702)는 하나 이상의 처리 코어를 갖는 하나 이상의 범용 마이크로 프로세서이다. 추가 실시예는 앞서 설명된 디스플레이를 시청하는 사용자와 관련하여 정의된 단속 운동(saccade) 도중 및/또는 종료시에 사용자의 눈 (들)의 시선 방향과 관련된 디스플레이에서 랜딩 포인트(landing point)의 예측을 제공하도록 구성된 애플리케이션 또는 미디어 및 대화형 엔터테인먼트 애플리케이션과 같은 고도로 병렬 및 계산 집약적인 애플리케이션에 특별히 적응된 마이크로 프로세서 아키텍처를 가진 하나 이상의 CPU를 사용하여 구현될 수 있다.
메모리 (704)는 CPU (702)에 의해 사용되는 애플리케이션 및 데이터를 저장한다. 스토리지 (706)는 애플리케이션 및 데이터를 위한 비 휘발성 스토리지 및 다른 컴퓨터 판독 가능 매체를 제공하며, 고정 디스크 드라이브, 이동식 디스크 드라이브, 플래시 메모리 디바이스 및 CD-ROM, DVD-ROM, 블루레이(Blu-ray), HD-DVD 또는 다른 광학 스토리지, 뿐만 아니라 신호 송신 및 스토리지 매체를 포함할 수 있다. 사용자 입력 디바이스 (708)는 키보드, 마우스, 조이스틱, 터치 패드, 터치 스크린, 스틸 또는 비디오 레코더/카메라, 제스처 인식을 위한 추적 디바이스 및/또는 마이크를 포함할 수 있는 하나 이상의 사용자로부터의 사용자 입력을 디바이스(700)로 통신한다. 네트워크 인터페이스 (714)는 디바이스 (700)가 전자 통신 네트워크를 통해 다른 컴퓨터 시스템과 통신할 수 있게하고, 근거리 통신망 및 인터넷과 같은 광역 통신망을 통한 유선 또는 무선 통신을 포함할 수 있다. 오디오 프로세서 (712)는 CPU (702), 메모리 (704) 및/또는 스토리지 (706)에 의해 제공된 지침 및/또는데이터로부터 아날로그 또는 디지털 오디오 출력을 생성하도록 적응된다. CPU (702), 메모리 (704), 데이터 스토리지 (706), 사용자 입력 디바이스 (708), 네트워크 인터페이스 (710) 및 오디오 프로세서 (712)를 포함하는 디바이스 (700)의 컴포넌트는 하나 이상의 데이터 버스 (722)를 통해 연결된다.
그래픽 서브 시스템 (714)은 또한 데이터 버스 (722) 및 디바이스(700)의 컴포넌트와 연결된다. 그래픽 서브 시스템 (714)은 그래픽 처리 유닛 (GPU) (716) 및 그래픽 메모리 (718)를 포함한다. 그래픽 메모리 (718)는 출력 이미지의 각각의 픽셀에 대한 픽셀 데이터를 저장하는데 사용되는 디스플레이 메모리 (예를 들어, 프레임 버퍼)를 포함한다. 그래픽 메모리 (718)는 GPU (716)와 동일한 디바이스에 통합될 수 있고, GPU (716)와 별도의 디바이스로서 연결되고/되거나 메모리 (704) 내에 구현될 수 있다. 픽셀 데이터는 CPU (702)로부터 직접 그래픽 메모리 (718)로 제공될 수 있다. 대안적으로, CPU (702)는 GPU (716)가 하나 이상의 출력 이미지의 픽셀 데이터를 생성하는 원하는 출력 이미지를 정의하는데이터 및/또는 지침을 GPU (716)에 제공한다. 원하는 출력 이미지를 정의하는데이터 및/또는 지침은 메모리 (704) 및/또는 그래픽 메모리 (718)에 저장될 수 있다. 일 실시예에서, GPU (716)는 장면에 대한 지오메트리, 조명, 음영, 텍스처링, 모션 및/또는 카메라 파라미터를 정의하는 지침 및 데이터로부터 출력 이미지에 대한 픽셀 데이터를 생성하기 위한 3D 렌더링 기능을 포함한다. GPU (716)는 쉐이더 프로그램을 실행할 수 있는 하나 이상의 프로그램 가능한 실행 유닛을 더 포함할 수 있다.
그래픽 서브 시스템 (714)은 디스플레이 디바이스 (710)에 디스플레이되거나 프로젝션 시스템 (740)에 의해 투영될 그래픽 메모리 (718)로부터의 이미지에 대한 픽셀 데이터를 주기적으로 출력한다. 디스플레이 디바이스 (710)는 CRT, LCD, 플라즈마 및 OLED 디스플레이를 포함하는 디바이스(700)로부터의 신호에 응답하여 시각 정보를 디스플레이할 수 있는 임의의 디바이스일 수 있다. 디바이스 (700)는 예를 들어, 아날로그 또는 디지털 신호를 디스플레이 디바이스 (710)에 제공할 수 있다.
도 7에 도시된 바와 같이, 디바이스 (700)는 VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하기 위한 스플릿 계층 그래픽 프로세서 시스템을 구현하도록 구성될 수 있다. 예를 들어, 디바이스 (700)는 클라우드 시스템 내에 구성될 수 있고, 마스터 노드 (310) 및 복수의 렌더 노드 (320)를 더 포함하는 실행 엔진 (300) (예를 들어, 게임 엔진)을 포함할 수 있다. 마스터 노드 (310)는 게임 및/또는 대화형 VR 애플리케이션을 실행할 때 시뮬레이션 수행, 스크립트 실행, 렌더링 수행을 위해 필요한 입력 (예를 들어, 프리미티브)을 그래픽 엔진에 제공하는 것과 같은 CPU 기능을 수행하도록 구성된다. 복수의 렌더 노드 (320)는 그리드 맵의 각각의 측면에 대한 프레임의 렌더링을 수행하도록 구성된다.
본 출원에 설명된 실시예는 임의의 유형의 클라이언트 디바이스에서 실행될 수 있음을 이해해야 한다. 일부 실시예에서, 클라이언트 디바이스는 헤드 마운트 디스플레이 (HMD) 또는 프로젝션 시스템이다. 도 8은 본 개시의 일 실시예에 따른, 헤드 마운트 디스플레이 (102)의 컴포넌트를 예시하는 다이어그램이 도시된다. HMD (102)는 디스플레이를 시청하는 사용자와 관련하여 정의된 단속 운동 도중 및/또는 종료시에 사용자의 눈 (들)의 시선 방향과 관련된 HMD의 디스플레이에서 랜딩 포인트를 예측하고 예측된 랜딩 포인트를 지연 업데이트 작업에서 GPU에 제공하도록 구성될 수 있다.
헤드 마운트 디스플레이 (102)는 프로그램 지침을 실행하기 위한 프로세서 (800)를 포함한다. 메모리 (802)는 저장 목적으로 제공되며 휘발성 및 비 휘발성 메모리를 모두 포함할 수 있다. 사용자가 시청할 수 있는 시각적 인터페이스를 제공하는 디스플레이 (804)가 포함된다. 배터리 (806)는 헤드 마운트 디스플레이 (102)를 위한 전원으로서 제공된다. 모션 검출 모듈 (808)은 자기력계 (810A), 가속도계 (812) 및 자이로스코프 (814)와 같은 다양한 종류의 모션 감응 하드웨어 중 임의의 것을 포함할 수 있다.
가속도계는 가속도 및 중력에 의한 반력을 측정하기 위한 디바이스이다. 단일 및 다수의 축 모델을 사용하여 다양한 방향에서 가속도의 크기와 방향을 검출할 수 있다. 가속도계는 기울기, 진동 및 충격을 감지하는데 사용된다. 일 실시예에서, 3 개의 가속도계 (812)가 중력의 방향을 제공하는데 사용되며, 이는 2 개의 각도 (세계 공간 피치(pitch) 및 세계 공간 롤(roll))에 대한 절대 기준을 제공한다.
자기력계는 헤드 마운트 디스플레이 근처에서 자기장의 강도와 방향을 측정한다. 일 실시예에서, 3 개의 자기력계 (810A)가 헤드 마운트 디스플레이 내에서 사용되어 세계 공간 요(world-space yaw) 각도에 대한 절대 기준을 보장한다. 일 실시예에서, 자기력계는 ± 80 마이크로 테슬라인 지구 자기장에 걸치도록(span) 디자인된다. 자기력계는 금속의 영향을 받으며 실제 요와 단조로운 요 측정을 제공한다. 환경의 금속으로 인해 자기장이 왜곡되어 요 측정에 왜곡(warp)이 발생할 수 있다. 필요한 경우 자이로스코프 또는 카메라와 같은 다른 센서의 정보를 사용하여 이 왜곡을 캘리브레이션할 수 있다. 일 실시예에서, 가속도계 (812)는 헤드 장착형 디스플레이 (102)의 기울기 및 방위각을 획득하기 위해 자기력계 (810A)와 함께 사용된다.
자이로스코프는 각각의 운동량의 원리에 기초하여 방위를 측정하거나 유지하기 위한 디바이스이다. 일 실시예에서, 3 개의 자이로스코프 (814)는 관성 감지에 기초하여 개별 축 (x, y 및 z)을 가로 지르는 움직임에 대한 정보를 제공한다. 자이로스코프는 빠른 회전을 검출하는데 도움이 된다. 그러나 자이로스코프는 절대 기준 없이 시간이 지나면서 드리프트(drift)될 수 있다. 이를 위해서는 주기적으로 자이로스코프를 재설정해야 하며, 이는 물체, 가속도계, 자기력계 등의 시각적 추적을 기반으로 한 위치/방위 결정과 같은 다른 이용 가능한 정보를 사용하여 수행될 수 있다.
실제 환경의 이미지 및 이미지 스트림을 캡처하기 위해 카메라 (816)가 제공된다. 헤드 마운트 디스플레이 (102)에는 후방을 향하는 카메라 (사용자가 헤드 마운트 디스플레이 (102)의 디스플레이를 시청할 때 사용자로부터 멀어지는 방향), 및 전방을 향하는 카메라 (사용자가 헤드 마운트 디스플레이 (102)의 디스플레이를 시청할 때 사용자를 향함)를 포함하여 하나 이상의 카메라가 포함될 수 있다. 또한, 실제 환경에서 물체의 깊이 정보를 감지하기 위한 깊이 카메라 (818)가 헤드 마운트 디스플레이 (102)에 포함될 수 있다.
일 실시예에서, HMD의 전면에 통합된 카메라는 안전에 관한 경고를 제공하기 위해 사용될 수 있다. 예를 들어, 사용자가 벽이나 물체에 접근하는 경우, 사용자는 경고될 수 있다. 일 실시예에서, 사용자에게 그것들의 존재를 경고하기 위해 방에 있는 물리적 오브젝트의 아웃라인(outline) 뷰가 사용에 제공될 수 있다. 예를 들어, 아웃라인은 가상 환경의 오버레이(overlay)일 수 있다. 일부 실시예에서, HMD 사용자는 예를 들어, 바닥에 오버레이된 기준 마커에 대한 뷰를 제공받을 수 있다. 예를 들어, 마커는 사용자가 게임을 하고있는 방의 중심 위치에 대한 기준을 사용자에게 제공할 수 있다. 이것은 예를 들어, 사용자가 방의 벽이나 다른 물체에 부딪히지 않도록 이동해야하는 위치에 대한 시각적 정보를 사용자에게 제공할 수 있다. 사용자에게 또한 촉각 경고 및/또는 오디오 경고를 제공하여 사용자가 HMD를 착용하고 게임을 하고 플레이하거나 콘텐츠를 탐색할 때 더 많은 안전을 제공할 수 있다.
헤드 마운트 디스플레이 (102)는 오디오 출력을 제공하기 위한 스피커 (252)를 포함한다. 또한, 주변 환경의 사운드, 사용자의 음성 등을 포함하여 실제 환경의 오디오를 캡처하기 위한 마이크로폰 (251)이 포함될 수 있다. 헤드 마운트 디스플레이 (102)는 사용자에게 촉각 피드백을 제공하기 위한 촉각 피드백 모듈 (281)을 포함한다. 일 실시예에서, 촉각 피드백 모듈 (281)은 사용자에게 촉각 피드백을 제공하기 위해 헤드 마운트 디스플레이 (102)의 움직임 및/또는 진동을 유발할 수 있다.
LED (826)가 헤드 마운트 디스플레이 (102)의 상태에 대한 시각적 표시자로서 제공된다. 예를 들어, LED는 배터리 잔량, 전원 켜짐 등을 표시할 수 있다. 헤드 마운트 디스플레이 (102)가 메모리 카드에 대한 정보를 판독하고 기록할 수 있도록 카드 판독기 (828)가 제공된다. USB 인터페이스 (830)는 주변 디바이스의 연결을 가능하게 하거나 다른 휴대용 디바이스, 컴퓨터 등과 같은 다른 디바이스와의 연결을 가능하게 하는 인터페이스의 일례로 포함된다. 헤드 마운트 디스플레이 (102)의 다양한 실시예에서, 헤드 마운트 디스플레이 (102)의 더 큰 연결을 가능하게 하기 위해 임의의 다양한 종류의 인터페이스가 포함될 수 있다.
무선 네트워킹 기술을 통해 인터넷에 연결할 수 있도록 Wi-Fi 모듈 (832)이 포함된다. 또한, 헤드 마운트 디스플레이 (102)는 다른 디바이스에 무선 연결을 가능하게 하는 블루투스 모듈 (834)을 포함한다. 다른 디바이스로의 연결을 위해 통신 링크 (836)가 또한 포함될 수 있다. 일 실시예에서, 통신 링크 (836)는 무선 통신을 위해 적외선 송신을 이용한다. 다른 실시예에서, 통신 링크 (836)는 다른 디바이스와의 통신을 위해 다양한 무선 또는 유선 송신 프로토콜 중 임의의 것을 이용할 수 있다.
입력 버튼/센서 (838)는 사용자에게 입력 인터페이스를 제공하기 위해 포함된다. 버튼, 터치 패드, 조이스틱, 트랙볼 등과 같은 다양한 종류의 입력 인터페이스가 포함될 수 있다. 초음파 통신 모듈 (840)은 초음파 기술을 통해 다른 디바이스와의 통신을 가능하게 하기 위해 헤드 마운트 디스플레이 (102)에 포함될 수 있다.
바이오 센서 (842)가 사용자로부터 생리학적 데이터를 검출할 수 있도록 포함된다. 일 실시예에서, 바이오 센서 (842)는 사용자의 피부를 통해 사용자의 생체 전기 신호를 검출하기 한 하나 이상의 건식 전극을 포함한다.
포토 센서 (844)가 3 차원 물리적 환경에 배치된 에미터 (예를 들어, 적외선 기지국)로부터의 신호에 응답하기 위해 포함된다. 게임 콘솔은 포토 센서 (844) 및 에미터로부터의 정보를 분석하여 헤드 마운트 디스플레이 (102)와 관련된 위치 및 방위 정보를 결정한다.
추가하여, 시선 추적 시스템 (820)이 포함되고 사용자의 시선을 추적할 수 있도록 구성된다. 예를 들어, 시스템 (820)은 사용자의 시선 방향을 결정하기 위해 분석되는 사용자 눈의 이미지를 캡처하는 시선 추적 카메라(예를 들어, 센서)를 포함할 수 있다. 일 실시예에서, 사용자의 시선 방향에 관한 정보는 비디오 렌더링에 영향을 미치고 및/또는 사용자의 시선이 단속 운동 도중 또는 종료시에 향하는 디스플레이상의 랜딩 포인트를 예측하기 위해 사용될 수 있다. 또한, 시선 방향의 비디오 렌더링은 예를 들어, 더 자세한 정보, 중심와가 있는(foveated) 렌더링을 통한 더 높은 해상도를 제공하고, 중심와 영역(foveal region)에 디스플레이되는 파티클 시스템 효과의 더 높은 해상도, 중심와 영역 외부에 디스플레이되는 파티클 시스템 효과의 더 낮은 해상도 또는 또는 사용자가 지켜보고 있는 영역의 빠른 업데이트를 제공함으로써 우선 순위화되거나 강조될 수 있다.
헤드 마운트 디스플레이 (102)의 전술한 컴포넌트는 헤드 마운트 디스플레이 (102)에 포함될 수 있는 단지 예시적인 컴포넌트로서 설명되었다. 본 개시의 다양한 실시예에서, 헤드 마운트 디스플레이 (102)는 전술한 다양한 컴포넌트 중 일부를 포함하거나 포함하지 않을 수 있다. 헤드 마운트 디스플레이 (102)의 실시예는 본 출원에서 설명된 본 개시의 양태를 가능하게 하기 위해 현재 설명되지 않았지만 당업계에 공지된 다른 컴포넌트를 추가로 포함할 수 있다.
본 개시의 다양한 실시예에서, 전술한 헤드 마운트 디바이스는 다양한 대화형 기능을 제공하기 위해 디스플레이상에 디스플레이되는 대화형 애플리케이션과 함께 이용될 수 있다는 것을 당업자는 이해할 것이다. 본 출원에 설명된 예시적인 실시예는 제한이 아닌 예로서 만 제공된다.
넓은 지리적 영역에 걸쳐 전달되는 현재 실시예의 게임에 대한 액세스를 제공하는 것과 같은 액세스 서비스는 종종 클라우드 컴퓨팅을 사용한다는 점에 유의해야 한다. 클라우드 컴퓨팅은 동적으로 확장 가능하고 종종 가상화된 자원이 인터넷을 통해 서비스로 제공되는 컴퓨팅 스타일이다. 사용자는 자신을 지원하는 "클라우드"의 기술 인프라스트럭처에 대한 전문가일 필요는 없다. 클라우드 컴퓨팅은 IaaS (Infrastructure as a Service), PaaS (Platform as a Service) 및 SaaS (Software as a Service)와 같은 상이한 서비스로 분할될 수 있다. 클라우드 컴퓨팅 서비스는 종종 웹 브라우저에서 액세스하는 온라인 비디오 게임과 같은 흔한 애플리케이션을 제공하는 반면 소프트웨어 및 데이터는 클라우드의 서버에 저장된다. 용어 클라우드는 인터넷이 컴퓨터 네트워크 다이어그램에 표시되는 방식에 따라 인터넷에 대한 메타포어(metaphor)로 사용되며 숨겨진 복잡한 인프라스트럭처에 대한 추상적 개념이다.
게임 처리 서버 (GPS) (또는 간단히 "게임 서버")는 게임 클라이언트가 단일 및 멀티 플레이어 비디오 게임을 플레이하는데 사용된다. 인터넷을 통해 플레이되는 대부분의 비디오 게임은 게임 서버에 대한 연결을 통해 작동한다. 전형적으로, 게임은 플레이어로부터 데이터를 수집하여 다른 플레이어에게 배포하는 전용 서버 애플리케이션을 사용한다. 이는 피어 투 피어 배열보다 더 효율적이고 효과적이지만 서버 애플리케이션을 호스팅하려면 별도의 서버가 필요하다. 다른 실시예에서, GPS는 중앙 집중식 GPS에 의존하지 않고 정보를 교환하기 위해 플레이어와 개별 게임 플레이 디바이스 사이의 통신을 수립한다.
전용 GPS는 클라이언트와 독립적으로 실행되는 서버이다. 이러한 서버는 일반적으로 데이터 센터에 위치된 전용 하드웨어에서 실행되어 더 많은 대역폭과 전용 처리 파워를 제공한다. 전용 서버는 대부분의 PC 기반 멀티 플레이어 게임에서 게임 서버를 호스팅하는데 선호되는 방법이다. 대규모 멀티플레이어 온라인 게임은 일반적으로 게임 타이틀을 소유한 소프트웨어 회사에서 호스팅하는 전용 서버에서 실행되므로 콘텐츠를 제어하고 업데이트할 수 있다.
사용자는 적어도 CPU, 디스플레이 및 I/O를 포함하는 클라이언트 디바이스를 사용하여 원격 서비스에 액세스한다. 클라이언트 디바이스는 PC, 휴대폰, 넷북, PDA 등일 수 있다. 일 실시예에서, 게임 서버에서 실행되는 네트워크는 클라이언트에 의해 사용되는 디바이스의 유형을 인식하고 사용되는 통신 방법을 조정한다. 다른 경우에, 클라이언트 디바이스는 html과 같은 표준 통신 방법을 사용하여 인터넷을 통해 게임 서버의 애플리케이션에 액세스한다.
본 개시의 실시예는 핸드 헬드 디바이스, 마이크로프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능한 소비자 전자 기기, 미니 컴퓨터, 메인 프레임 컴퓨터 등을 포함하는 다양한 컴퓨터 시스템 구성으로 수행될 수 있다. 본 개시는 또한 유선 기반 또는 무선 네트워크를 통해 링크된 원격 처리 디바이스에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실행될 수 있다.
주어진 비디오 게임 또는 게임 애플리케이션은 특정 플랫폼 및 특정 관련 컨트롤러 디바이스를 위해 개발될 수 있음을 이해해야 한다. 그러나, 이러한 게임이 본 출원에 제시된 게임 클라우드 시스템을 통해 이용 가능하게될 때, 사용자는 다른 컨트롤러 디바이스를 사용하여 비디오 게임에 액세스할 수 있다. 예를 들어, 게임은 게임 콘솔 및 관련 컨트롤러용으로 개발된 반면 사용자는 키보드와 마우스를 사용하는 퍼스널 컴퓨터에서 게임의 클라우드 기반 버전에 액세스할 수 있다. 이러한 시나리오에서, 입력 파라미터 구성은 사용자의 이용 가능한 컨트롤러 디바이스 (이 경우, 키보드 및 마우스)에 의해 생성될 수 있는 입력에서 비디오 게임 실행에 허용되는 입력으로의 매핑을 정의할 수 있다.
다른 예에서, 사용자는 태블릿 컴퓨팅 디바이스, 터치 스크린 스마트 폰 또는 다른 터치 스크린 구동 디바이스를 통해 클라우드 게임 시스템에 액세스할 수 있다. 이 경우, 클라이언트 디바이스와 컨트롤러 디바이스는 동일한 디바이스에 함께 통합되며, 감지된 터치 스크린 입력/제스처를 통해 입력이 제공된다. 이러한 디바이스의 경우, 입력 파라미터 구성은 비디오 게임에 대한 게임 입력에 대응하는 특정 터치 스크린 입력을 정의할 수 있다. 예를 들어, 버튼, 방향 패드 또는 다른 유형의 입력 엘리먼트는 비디오 게임을 실행하는 동안 디스플레이되거나 오버레이되어 사용자가 게임 입력을 생성하기 위해 터치할 수 있는 터치 스크린의 위치를 나타낼 수 있다. 특정 방향으로 스와이프(swipe)하거나 특정 터치 동작과 같은 제스처도 게임 입력으로 감지될 수 있다. 일 실시예에서, 예를 들어, 비디오 게임의 게임 플레이를 시작하기 전에, 터치 스크린상의 제어의 동작에 사용자를 순응시키기 위해, 게임 플레이를 위해 터치 스크린을 통해 입력을 제공하는 방법을 나타내는 튜토리얼(tutorial)이 사용자에게 제공될 수 있다.
일부 실시예에서, 클라이언트 디바이스는 컨트롤러 디바이스에 대한 연결 지점의 역할을 한다. 즉, 컨트롤러 디바이스는 무선 또는 유선 연결을 통해 클라이언트 디바이스와 통신하여 컨트롤러 디바이스에서 클라이언트 디바이스로 입력을 송신한다. 클라이언트 디바이스는 결국 이러한 입력을 처리한 다음 네트워크를 통해 클라우드 게임 서버로 입력 데이터를 송신할 수 있다 (예를 들어, 라우터와 같은 로컬 네트워킹 디바이스를 통해 액세스됨). 그러나, 다른 실시예에서, 컨트롤러는 클라이언트 디바이스를 통해 이러한 입력을 먼저 통신할 필요없이 네트워크를 통해 클라우드 게임 서버로 직접 입력을 통신할 수 있는 능력을 가진 네트워크 디바이스일 수 있다. 예를 들어, 컨트롤러는 로컬 네트워킹 디바이스 (예를 들어, 앞서 언급한 라우터)에 연결하여 클라우드 게임 서버와 데이터를주고 받을 수 있다. 따라서, 클라이언트 디바이스는 클라우드 기반 비디오 게임에서 비디오 출력을 수신하고 로컬 디스플레이상에 그것을 렌더링해야 할 수 있지만, 클라이언트 디바이스를 우회하여, 컨트롤러가 네트워크를 통해 클라우드 게임 서버로 직접 입력을 발송할 수 있도록 함으로써 입력 레이턴시(latency)를 줄일 수 있다.
일 실시예에서, 네트워크로 연결된 컨트롤러 및 클라이언트 디바이스는 컨트롤러에서 클라우드 게임 서버로 직접 특정 유형의 입력을 발송하고 클라이언트 디바이스를 통해 다른 유형의 입력을 발송하도록 구성될 수 있다. 예를 들어, 감지가 임의의 추가 하드웨어나 컨트롤러 자체와 별도로 처리에 의존하지 않는 입력은 클라이언트 디바이스를 우회하여 네트워크를 통해 컨트롤러에서 클라우드 게임 서버로 직접 발송될 수 있다. 이러한 입력에는 버튼 입력, 조이스틱 입력, 내장된 모션 감지 입력 (예를 들어, 가속도계, 자기력계, 자이로스코프) 등이 포함될 수 있다. 그러나, 추가 하드웨어를 사용하거나 클라이언트 디바이스의 처리가 필요한 입력은 클라이언트 디바이스에서 클라우드 게임 서버로 발송될 수 있다. 이들은 클라우드 게임 서버로 발송되기 전에 클라이언트 디바이스에 의해 처리될 수 있는 게임 환경에서 캡처된 비디오 또는 오디오를 포함할 수 있다. 추가적으로, 컨트롤러의 모션 감지 하드웨어로부터의 입력은 캡처된 비디오와 함께 클라이언트 디바이스에 의해 처리되어 컨트롤러의 위치와 모션을 검출할 수 있으며, 이는 이후에 클라이언트 디바이스에 의해 클라우드 게임 서버로 전달될 것이다. 다양한 실시예에 따른 컨트롤러 디바이스는 또한 클라이언트 디바이스로부터 또는 클라우드 게임 서버로부터 직접 데이터 (예를 들어, 피드백 데이터)를 수신할 수 있다는 것을 이해해야 한다.
특히, 도 9는 본 개시의 다양한 실시예들에 따른 게임 시스템 (900)의 블록도이다. 게임 시스템 (900)은 단일 플레이어 모드 또는 멀티 플레이어 모드에서와 같이 네트워크 (915)를 통해 하나 이상의 클라이언트 (910)에 비디오 스트림을 제공하도록 구성된다. 게임 시스템 (900)은 전형적으로 비디오 서버 시스템 (920) 및 옵션의 게임 서버 (925)를 포함한다. 비디오 서버 시스템 (920)은 최소한의 서비스 품질로 하나 이상의 클라이언트 (910)에 비디오 스트림을 제공하도록 구성된다. 예를 들어, 비디오 서버 시스템 (920)은 비디오 게임의 상태 또는 시점을 변경하는 게임 명령을 수신할 수 있고, 최소한의 지연 시간으로 이러한 상태 변화를 반영하는 업데이트된 비디오 스트림을 클라이언트 (910)에 제공할 수 있다. 비디오 서버 시스템 (920)는 아직 정의되는 포맷을 포함한 다른 다양한 비디오 포맷에서의 비디오 스트림을 제공하도록 구성될 수 있다. 또한, 비디오 스트림은 매우 다양한 프레임 속도로 사용자에게 제시하도록 구성된 비디오 프레임을 포함할 수 있다. 전형적인 프레임 속도는 초당 30 프레임, 초당 80 프레임 및 초당 820 프레임이다. 그러나 더 높거나 더 낮은 프레임 속도가 본 개시의 대안적인 실시예에 포함된다.
본 출원에서 개별적으로 (910A, 910B) 등으로 언급된 클라이언트 (910)는 헤드 마운트 디스플레이, 단말기, 퍼스널 컴퓨터, 게임 콘솔, 태블릿 컴퓨터, 전화기, 셋탑 박스, 키오스크, 무선 디바이스, 디지털 패드, 독립형 디바이스, 핸드 헬드 게임 플레이 디바이스 등을 포함할 수 있다. 전형적으로, 클라이언트 (910)는 인코딩된 비디오 스트림을 수신하고 (즉, 압축), 비디오 스트림을 디코딩하고, 사용자, 예를 들어, 게임의 플레이어에 결과로 생성된 비디오를 제시하도록 구성된다. 인코딩된 비디오 스트림을 수신하고 /하거나 비디오 스트림을 디코딩하는 프로세스는 전형적으로 클라이언트의 수신 버퍼에 개별 비디오 프레임을 저장하는 것을 포함한다. 비디오 스트림은 클라이언트 (910)에 통합된 디스플레이 또는 모니터 또는 텔레비전과 같은 별도의 디바이스에서 사용자에게 제공될 수 있다. 클라이언트 (910)는 하나 이상의 게임 플레이어를 지원하도록 옵션으로 구성된다. 예를 들어, 게임 콘솔은 2, 3, 4 또는 그 이상의 동시 플레이어를 지원하도록 구성될 수 있다. 이들 플레이어 각각은 별도의 비디오 스트림을 수신할 수 있거나, 단일 비디오 스트림은 각각의 플레이어에 대해 특별히 생성된, 예를 들어 각각의 플레이어의 시점에 기반하여 생성된 프레임의 영역을 포함할 수 있다. 클라이언트(910)은 옵션으로 지리적으로 분산되어 있다. 게임 시스템 (900)에 포함된 클라이언트의 수는 1 또는 2에서 수천, 수만 또는 그 이상까지 폭넓게 변할 수 있다. 본 출원에서 사용되는, 용어 "게임 플레이어"는 게임을 하는 사람을 지칭하기 위해 사용되며, 용어 "게임 플레이 디바이스"는 게임을 하기 위해 사용되는 디바이스를 지칭하기 위해 사용된다. 일부 실시예에서, 게임 플레이 디바이스는 사용자에게 게임 경험을 전달하기 위해 협업하는 복수의 컴퓨팅 디바이스를 지칭할 수 있다. 예를 들어, 게임 콘솔과 HMD는 비디오 서버 시스템 (920)과 협업하여 HMD를 통해 시청한 게임을 전달할 수 있다. 일 실시예에서, 게임 콘솔은 비디오 서버 시스템 (920)으로부터 비디오 스트림을 수신하고, 게임 콘솔은 렌더링을 위해 비디오 스트림 또는 비디오 스트림에 대한 업데이트를 HMD로 포워딩한다.
클라이언트(910)는 네트워크(915)를 통해 비디오 스트림을 수신하도록 구성된다. 네트워크 (915)는 전화 네트워크, 인터넷, 무선 네트워크, 전력선 네트워크, 근거리 네트워크, 광역 네트워크, 사설 네트워크 및/또는 유사한 것을 포함하는 임의의 유형의 통신 네트워크 일 수 있다. 전형적인 실시예에서, 비디오 스트림은 TCP/IP 또는 UDP/IP와 같은 표준 프로토콜을 통해 전달된다. 대안적으로, 비디오 스트림은 독점 표준을 통해 전달된다.
클라이언트(910)의 전형적인 예는 프로세서, 비 휘발성 메모리, 디스플레이, 디코딩 로직, 네트워크 통신 성능 및 입력 디바이스를 포함하는 퍼스널 컴퓨터이다. 디코딩 로직은 컴퓨터 판독 가능 매체에 저장된 하드웨어, 펌웨어 및/또는 소프트웨어를 포함할 수 있다. 비디오 스트림을 디코딩 (및 인코딩)하기 위한 시스템은 당업계에 잘 알려져 있으며 사용되는 특정 인코딩 기법에 따라 달라진다.
클라이언트 (910)는 수신된 비디오를 수정하도록 구성된 시스템을 더 포함할 수 있지만 필수는 아니다. 예를 들어, 클라이언트는 추가로 렌더링하고, 하나의 비디오 이미지를 다른 비디오 이미지에 오버레이하고, 비디오 이미지를 자르고 및/또는 유사한 것을 수행하도록 구성될 수 있다. 예를 들어, 클라이언트 (910)는 I-프레임, P-프레임 및 B-프레임과 같은 비디오 프레임의 다양한 유형을 수신하고, 사용자에게 디스플레이를 위해 이미지로 이들 프레임을 처리하도록 구성될 수 있다. 일부 실시예에서, 클라이언트 (910)의 멤버는 비디오 스트림에 대해 추가 렌더링, 음영, 3-D 로의 변환 또는 유사한 동작을 수행하도록 구성된다. 클라이언트 (910)의 멤버는 옵션으로 하나 이상의 오디오 또는 비디오 스트림을 수신하도록 구성된다. 클라이언트 (910)의 입력 디바이스는 예를 들어, 한 손 게임 컨트롤러, 양손 게임 컨트롤러, 제스처 인식 시스템, 시선 인식 시스템, 음성 인식 시스템, 키보드, 조이스틱, 포인팅 디바이스, 힘 피드백 디바이스, 모션 및/또는 위치 감지 디바아스, 마우스, 터치 스크린, 신경 인터페이스, 카메라, 아직 개발되지 않은 입력 디바이스 및/또는 유사한 것을 포함할 수 있다.
클라이언트 (910)에 의해 수신된 비디오 스트림 (및 옵션으로 오디오 스트림)은 비디오 서버 시스템 (920)에 의해 생성되고 제공된다. 본 출원의 다른 곳에서 더 설명되는 바와 같이, 이 비디오 스트림은 비디오 프레임을 포함한다 (그리고 오디오 스트림은 오디오 프레임을 포함한다). 비디오 프레임은 사용자에게 디스플레이되는 이미지에 의미있게 기여하도록 구성된다 (예를 들어, 그것들은 적절한 데이터 구조의 픽셀 정보를 포함한다). 본 출원에서 사용되는 용어 "비디오 프레임"은 예를 들어, 사용자에게 보여지는 이미지 성취하는데 기여하도록 구성된 정보를 주로 포함하는 프레임을 지칭하기 위해 사용된다. "비디오 프레임"에 관한 본 출원의 교리의 대부분은 "오디오 프레임"에도 적용될 수 있다.
클라이언트 (910)는 전형적으로 사용자로부터 입력을 수신하도록 구성된다. 이러한 입력에는 비디오 게임의 상태를 변경하거나 다른 식으로 게임 플레이에 영향을 미치도록 구성된 게임 명령이 포함될 수 있다. 게임 명령은 입력 디바이스를 사용하여 수신될 수 있고/있거나 클라이언트 (910)에서 실행되는 명령을 계산하여 자동으로 생성될 수 있다. 수신된 게임 명령은 네트워크 (915)를 통해 클라이언트 (910)로부터 비디오 서버 시스템 (920) 및/또는 게임 서버 (925)로 전달된다. 예를 들어, 일부 실시예에서, 게임 명령은 비디오 서버 시스템 (920)을 통해 게임 서버 (925)로 전달된다. 일부 실시예에서, 게임 명령의 개별 복사본은 클라이언트 (910)로부터 게임 서버 (925) 및 비디오 서버 시스템 (920)으로 전달된다. 게임 명령의 전달은 옵션으로 명령의 아이덴티티(identity)에 따라 달라진다. 게임 명령은 클라이언트 (910A)에 오디오 또는 비디오 스트림을 제공하는데 사용되는 다른 경로 또는 통신 채널을 통해 클라이언트 (910A)로부터 옵션으로 전달된다.
게임 서버 (925)는 옵션으로 비디오 서버 시스템 (920)과 다른 엔티티에 의해 작동된다. 예를 들어, 게임 서버 (925)는 멀티 플레이어 게임의 발행자(publisher)에 의해 운영될 수 있다. 이 예에서, 비디오 서버 시스템 (920)은 옵션으로 게임 서버 (925)에 의해 클라이언트로 보여지고, 옵션으로 게임 서버 (925)의 시점에서 종래 기술 게임 엔진을 실행하는 종래 기술 클라이언트로 출현하도록 구성된다. 비디오 서버 시스템(920)과 게임 서버(925) 사이의 통신은 옵션으로 네트워크(915)를 통해 일어난다. 이와 같이, 게임 서버 (925)는 게임 상태 정보를 다수의 클라이언트에 발송하는 종래 기술의 멀티 플레이어 게임 서버일 수 있으며, 그 중 하나는 게임 서버 시스템 (920)이다. 비디오 서버 시스템 (920)은 게임 서버 (925)의 다수의 인스턴스와 동시에 통신하도록 구성될 수 있다. 예를 들어, 비디오 서버 시스템 (920)은 복수의 상이한 비디오 게임을 상이한 사용자에게 제공하도록 구성될 수 있다. 이러한 서로 다른 비디오 게임 각각은 다른 게임 서버 (925)에 의해 지원되거나 다른 엔티티에 의해 공개될 수 있다. 일부 실시예에서, 비디오 서버 시스템 (920)의 여러 지리적으로 분산된 인스턴스는 복수의 상이한 사용자에게 게임 비디오를 제공하도록 구성된다. 비디오 서버 시스템 (920)의 각각의 인스턴스는 게임 서버 (925)의 동일한 인스턴스와 통신할 수 있다. 비디오 서버 시스템 (920)과 하나 이상의 게임 서버 (925) 사이의 통신은 옵션으로 전용 통신 채널을 통해 발생한다. 예를 들어, 비디오 서버 시스템 (920)은 이들 두 시스템 사이의 통신 전용인 고 대역폭 채널을 통해 게임 서버 (925)에 연결될 수 있다.
비디오 서버 시스템 (920)은 적어도 비디오 소스 (930), I/O 디바이스 (945), 프로세서 (950) 및 비 일시적 스토리지 (955)를 포함한다. 비디오 서버 시스템 (920)은 하나의 컴퓨팅 디바이스를 포함하거나 복수의 컴퓨팅 디바이스에 분산될 수 있다. 이러한 컴퓨팅 디바이스는 로컬 영역 네트워크와 같은 통신 시스템을 통해 옵션으로 연결된다.
비디오 소스 (930)는 비디오 스트림, 예를 들어, 스트리밍 비디오 또는 동영상을 형성하는 일련의 비디오 프레임을 제공하도록 구성된다. 일부 실시예에서, 비디오 소스 (930)는 비디오 게임 엔진 및 렌더링 로직을 포함한다. 비디오 게임 엔진은 플레이어로부터 게임 명령을 수신하고 수신된 명령에 기초하여 비디오 게임 상태의 사본을 유지하도록 구성된다. 이 게임 상태에는 전형적으로 시점 뿐만 아니라 게임 환경에서 오브젝트의 위치가 포함된다. 게임 상태는 또한 오브젝트의 속성, 이미지, 색상 및/또는 질감을 포함할 수 있다.
게임 상태는 전형적으로 게임 규칙 뿐만 아니라 이동, 회전, 공격, 포커스 설정, 상호 작용, 사용 및/또는 유사한 것과 같은 게임 명령을 기반으로 유지된다. 게임 엔진의 일부는 옵션으로 게임 서버(925) 내에 배치된다. 게임 서버(925)는 지리적으로 분산된 클라이언트를 사용하여 다수의 플레이어로부터 수신된 게임 명령에 기초하여 게임 상태의 사본을 유지할 수 있다. 이러한 경우에, 게임 상태는 게임 서버 (925)에 의해 비디오 소스 (930)에 제공되고, 게임 상태의 사본이 저장되고 렌더링이 수행된다. 게임 서버 (925)는 네트워크 (915)를 통해 클라이언트 (910)로부터 직접 게임 명령을 수신할 수 있고/있거나 비디오 서버 시스템 (920)을 통해 게임 명령을 수신할 수 있다.
비디오 소스 (930)는 전형적으로 스토리지 (955)와 같은 컴퓨터 판독 가능 매체에 저장된 렌더링 로직, 예를 들어, 하드웨어, 펌웨어 및/또는 소프트웨어를 포함한다. 이 렌더링 로직은 게임 상태에 따라 비디오 스트림의 비디오 프레임을 생성하도록 구성된다. 렌더링 로직의 전부 또는 일부는 그래픽 처리 디바이스 (GPU) 내에 옵션으로 배치된다. 렌더링 로직은 전형적으로 게임 상태 및 뷰 포인트에 기초하여 오브젝트 간의 3 차원 공간적인 관계를 결정하고 /하거나 적절한 질감 등을 적용하도록 구성된 처리 스테이지를 포함한다. 렌더링 로직은 일반적으로 클라이언트 (910)와 통신하기 전에 인코딩된 미가공(raw) 비디오를 생성한다. 예를 들어, 미가공 비디오는 Adobe Flash® 표준, .wav, H.264, H.263, On2, VP6, VC-1, WMA, Huffyuv, Lagarith, MPG-x. Xvid. FFmpeg, x264, VP6-8, realvideo, mp3 또는 유사한 것에 따라 인코딩될 수 있다. 인코딩 프로세스는 원격 디바이스의 디코더에 전달하기 위해 옵션으로 패키징되는 비디오 스트림을 생성한다. 비디오 스트림은 프레임 크기와 프레임 속도가 특징이다. 전형적인 프레임 크기에는 800 x 600, 1280 x 720 (예를 들어, 720p), 1024 x 768이 포함되지만 임의의 다른 프레임 크기도 사용할 수 있다. 프레임 속도는 초당 비디오 프레임 수이다. 비디오 스트림은 다른 유형의 비디오 프레임을 포함할 수 있다. 예를 들어 H.264 표준에는 "P" 프레임과 "I" 프레임이 포함된다. I-프레임은 디스플레이 디바이스의 모든 매크로 블록/픽셀을 리프레시(refresh)하기 위한 정보를 포함하고, P-프레임은 그 서브 세트를 리프레시하기 위한 정보를 포함한다. P-프레임은 전형적으로 I-프레임보다 데이터 크기가 더 작다. 본 출원에서 사용되는, 용어 "프레임 크기(frame size)"는 프레임 내의 다수의 픽셀을 지칭하는 것을 의미한다. 용어 "프레임 데이터 크기"는 프레임을 저장하는데 필요한 바이트 수를 나타내는데 사용된다.
대안적인 실시예에서, 비디오 소스 (930)는 카메라와 같은 비디오 레코딩 디바이스를 포함한다. 이 카메라는 컴퓨터 게임의 비디오 스트림에 포함될 수 있는 지연 또는 라이브 비디오를 생성하는데 사용될 수 있다. 결과로 생성된 비디오 스트림은 옵션으로 렌더링된 이미지와 스틸(still) 또는 비디오 카메라를 사용하여 레코딩된 이미지를 모두 포함한다. 비디오 소스 (930)는 또한 비디오 스트림에 포함될 이전에 레코딩된 비디오를 저장하도록 구성된 스토리지 디바이스를 포함할 수 있다. 비디오 소스 (930)는 또한 오브젝트, 예를 들어 사람의 모션 또는 위치를 검출하도록 구성된 모션 또는 포지셔닝(positioning) 감지 디바이스, 및 게임 상태를 결정하거나 검출된 모션 및/또는 위치에 기초하여 비디오를 생성하도록 구성된 로직을 포함할 수 있다.
비디오 소스(930)은 다른 비디오에 배치되도록 구성된 오버레이를 제공하도록 옵션으로 구성된다. 예를 들어, 이러한 오버레이는 명령 인터페이스, 로그인 지침, 게임 플레이어에 대한 메시지, 다른 게임 플레이어의 이미지, 다른 게임 플레이어의 비디오 피드 (예를 들어, 웹캠 비디오)를 포함할 수 있다. 터치 스크린 인터페이스 또는 시선 감지 인터페이스를 포함하는 클라이언트 (910A)의 실시예에서, 오버레이는 가상 키보드, 조이스틱, 터치 패드 등을 포함할 수 있다. 오버레이의 한 예에서 플레이어의 음성은 오디오 스트림에 오버레이된다. 비디오 소스(930)은 옵션으로 하나 이상의 오디오 소스를 더 포함한다.
비디오 서버 시스템 (920)이 하나 초과의 플레이어로부터의 입력에 기초하여 게임 상태를 유지하도록 구성된 실시예에서, 각각의 플레이어는 뷰의 위치 및 방향을 포함하는 상이한 시점을 가질 수 있다. 비디오 소스 (930)는 그것들의 시점에 기초하여 각각의 플레이어에 대해 별도의 비디오 스트림을 제공하도록 옵션으로 구성된다. 또한, 비디오 소스 (930)는 클라이언트 (910) 각각에 다른 프레임 크기, 프레임 데이터 크기 및/또는 인코딩을 제공하도록 구성될 수 있다. 비디오 소스 (930)는 옵션으로 3-D 비디오를 제공하도록 구성된다.
I/O 디바이스 (945)는 비디오 서버 시스템 (920)이 정보 예컨대, 비디오, 명령, 정보 요청, 게임 상태, 시선 정보, 디바이스 동작, 디바이스 위치, 사용자 모션, 클라이언트 아이덴티티, 플레이어 아이덴티티, 게임 명령, 보안 정보, 오디오 및/또는 유사한 것을 발송 및/또는 수신하도록 구성된다. I/O 디바이스 (945)는 전형적으로 네트워크 카드 또는 모뎀과 같은 통신 하드웨어를 포함한다. I/O 디바이스 (945)는 게임 서버 (925), 네트워크 (915) 및/또는 클라이언트 (910)와 통신하도록 구성된다.
프로세서 (950)는 본 출원에서 논의되는 비디오 서버 시스템 (920)의 다양한 컴포넌트 내에 포함된 로직, 예를 들어 소프트웨어를 실행하도록 구성된다. 예를 들어, 프로세서 (950)는 비디오 소스 (930), 게임 서버 (925) 및/또는 클라이언트 퀄리파이어(client Qualifier) (960)의 기능을 수행하기 위해 소프트웨어 지침으로 프로그래밍될 수 있다. 비디오 서버 시스템 (920)은 하나 초과의 프로세서 (950) 인스턴스를 옵션으로 포함한다. 프로세서 (950)는 또한 비디오 서버 시스템 (920)에 의해 수신된 명령을 실행하거나 본 출원에서 논의된 게임 시스템 (900)의 다양한 엘리먼트의 동작을 조정하기 위해 소프트웨어 명령으로 프로그래밍될 수 있다. 프로세서 (950)는 하나 이상의 하드웨어 디바이스를 포함할 수 있다. 프로세서(950)는 전자 프로세서이다.
스토리지 (955)는 비 일시적인 아날로그 및/또는 디지털 스토리지 디바이스를 포함한다. 예를 들어, 스토리지(955)는 비디오 프레임을 저장하도록 구성된 아날로그 스토리지 디바이스를 포함할 수 있다. 스토리지 (955)는 컴퓨터 판독 가능 디지털 스토리지, 예를 들어, 하드 드라이브, 광학 드라이브 또는 고체 상태 스토리지를 포함할 수 있다. 스토리지(955)는 비디오 프레임, 인공 프레임, 비디오 프레임과 인공 프레임을 모두 포함하는 비디오 스트림, 오디오 프레임, 오디오 스트림 및/또는 유사한 것을 저장 하도록 (예를 들어, 적절한 데이터 구조 또는 파일 시스템에 의해) 구성된다. 스토리지 (955)는 옵션으로 복수의 디바이스에 분산된다. 일부 실시예에서, 스토리지 (955)는 본 출원의 다른 곳에서 논의된 비디오 소스 (930)의 소프트웨어 컴포넌트를 저장하도록 구성된다. 이들 컴포넌트는 필요할 때 프로비저닝되도록 준비된 포맷으로 저장될 수 있다.
비디오 서버 시스템 (920)은 옵션으로 클라이언트 퀄리파이어 (960)를 더 포함한다. 클라이언트 퀄리파이어 (960)는 클라이언트 (910A 또는 910B)와 같은 클라이언트의 성능을 원격으로 결정하도록 구성된다. 이러한 성능은 클라이언트 (910A) 자체의 성능 뿐만 아니라 클라이언트 (910A)와 비디오 서버 시스템 (920) 사이의 하나 이상의 통신 채널 성능 둘 모두를 포함할 수 있다. 예를 들어, 클라이언트 퀄리파이어 (960)는 네트워크 (915)를 통해 통신 채널을 테스트하도록 구성될 수 있다.
클라이언트 퀄리파이어 (960)는 클라이언트 (910A)의 성능을 수동으로 또는 자동으로 결정 (예를 들어, 발견)할 수 있다. 수동 결정은 클라이언트 (910A)의 사용자와 통신하고 사용자에게 성능을 제공하도록 요청하는 것을 포함한다. 예를 들어, 일부 실시예에서, 클라이언트 퀄리파이어 (960)는 클라이언트 (910A)의 브라우저 내에서 이미지, 텍스트 등을 디스플레이하도록 구성된다. 일 실시예에서, 클라이언트 (910A)는 브라우저를 포함하는 HMD이다. 다른 실시예에서, 클라이언트 (910A)는 HMD에 디스플레이될 수 있는 브라우저를 갖는 게임 콘솔이다. 디스플레이된 오브젝트는 사용자가 클라이언트 (910A)의 운영 체제, 프로세서, 비디오 디코더 유형, 네트워크 연결 유형, 디스플레이 해상도 등과 같은 정보를 입력하도록 요청한다. 사용자가 입력한 정보는 클라이언트 퀄리파이어 (960)로 다시 전달된다.
예를 들어, 클라이언트 (910A)에서 에이전트를 실행하고 /하거나 클라이언트 (910A)에 테스트 비디오를 발송함으로써 자동 결정이 발생할 수 있다. 에이전트는 웹 페이지에 내장되거나 애드온(add-on)으로 설치된 자바 스크립트와 같은 컴퓨팅 지침을 포함할 수 있다. 에이전트는 클라이언트 퀄리파이어 (960)에 의해 옵션으로 제공된다. 다양한 실시예에서, 에이전트는 클라이언트 (910A)의 처리 파워, 클라이언트 (910A)의 디코딩 및 디스플레이 성능, 클라이언트 (910A)와 비디오 서버 시스템 (920) 간의 통신 채널 대역폭 및 지연 시간 신뢰성, 클라이언트 (910A)의 디스플레이 유형, 클라이언트 (910A)에 있는 방화벽, 클라이언트 (910A)의 하드웨어, 클라이언트 (910A)에서 실행되는 소프트웨어, 클라이언트 (910A) 내의 레지스트리 엔트리 및/또는 유사한 것을 알아낼 수 있다.
클라이언트 퀄리파이어(960)은 컴퓨터 판독 가능 매체에 저장된 하드웨어, 펌웨어 및/또는 소프트웨어를 포함한다. 클라이언트 퀄리파이어(960)은 옵션으로 비디오 서버 시스템(920) 의 하나 이상의 다른 엘리먼트와 분리된 컴퓨팅 디바이스에 배치된다. 예를 들어, 일부 실시예에서, 클라이언트 퀄리파이어 (960)는 클라이언트 (910)와 하나 초과의 비디오 서버 시스템 (920) 인스턴스 사이의 통신 채널의 특성을 결정하도록 구성된다. 이들 실시예에서, 클라이언트 퀄리파이어에 의해 발견된 정보는 클라이언트 (910) 중 하나에 스트리밍 비디오를 전달하기에 가장 적합한 비디오 서버 시스템 (920)의 인스턴스를 결정하는데 사용될 수 있다.
VR 콘텐츠의 멀티 서버 클라우드 VR 스트리밍을 수행하기 위한 스플릿 계층 그래픽 프로세서 시스템을 구현하기 위해 특정 실시예가 제공되었지만, 이들은 제한이 아닌 예로서 설명된다. 본 개시를 읽은 당업자는 본 개시의 취지 및 범위 내에 속하는 추가 실시예를 실현할 것이다.
본 출원에 정의된 다양한 실시예는 본 출원에 개시된 다양한 특징을 사용하여 특정 구현으로 결합되거나 어셈블링될 수 있음을 이해해야 한다. 따라서, 제공된 예는 더 많은 구현을 정의하기 위해 다양한 엘리먼트를 결합함으로써 가능한 다양한 구현예에 제한되지 않고 가능한 예일뿐이다. 일부 예들에서, 일부 구현예들은 개시된 또는 동등한 구현들의 사상에서 벗어나지 않고 더 적은 엘리먼트들을 포함할 수 있다.
본 개시의 실시예는 핸드 헬드 디바이스, 마이크로 프로세서 시스템, 마이크로 프로세서 기반 또는 프로그램 가능한 소비자 전자 기기, 미니 컴퓨터, 메인 프레임 컴퓨터 등을 포함하는 다양한 컴퓨터 시스템 구성으로 실행될 수 있다. 본 개시의 실시예는 또한 유선 기반 또는 무선 네트워크를 통해 링크된 원격 처리 디바이스에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실행될 수 있다.
상기 실시예를 염두에 두고, 본 개시의 실시예는 컴퓨터 시스템에 저장된 데이터를 포함하는 다양한 컴퓨터 구현 동작을 사용할 수 있다는 것을 이해해야 한다. 이러한 작업은 물리량의 물리적 조작이 필요한 작업이다. 본 개시의 실시예의 일부를 형성하는 본 출원에서 설명된 임의의 동작은 유용한 기계 동작이다. 본 개시의 실시예는 또한 이러한 동작을 수행하기 위한 디바이스 또는 장치에 관한 것이다. 장치는 필요한 목적을 위해 특별히 구성될 수 있거나, 장치는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 옵션으로 활성화되거나 구성되는 범용 컴퓨터일 수 있다. 특히, 다양한 범용 기계는 본 출원의 교리에 따라 기록된 컴퓨터 프로그램과 함께 사용될 수 있거나, 필요한 작업을 수행하기 위해 보다 전문화된 장치를 구성하는 것이 더 편리할 수 있다.
본 개시는 또한 컴퓨터 판독 가능 매체 상의 컴퓨터 판독 가능 코드로서 구체화될 수 있다. 컴퓨터 판독 가능 매체는데이터를 저장할 수 있는 임의의 데이터 스토리지이며, 이후 컴퓨터 시스템에 의해 판독될 수 있다. 컴퓨터 판독 가능 매체의 예로는 하드 드라이브, NAS (Network Attached Storage), 판독 전용 메모리, 랜덤 액세스 메모리, CD-ROM, CD-R, CD-RW, 자기 테이프 및 다른 광학 및 비 광학 데이터 스토리지 디바이스를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 코드가 분산된 방식으로 저장되고 실행되도록 네트워크 결합 컴퓨터 시스템에 분산된 컴퓨터 판독 가능 유형 매체를 포함할 수 있다.
방법 동작이 특정 순서로 설명되었지만, 다른 하우스 키핑 동작이 동작 사이에 수행될 수 있거나 또는 동작은 약간 다른 시간에 발생하도록 조정될 수 있으며, 오버레이 동작의 처리가 원하는 방법으로 수행되는 한 처리와 관련된 다양한 간격에서 처리 동작의 발생을 허용하는 시스템에 분산될 수 있다.
이해의 명료함을 위해 전술한 개시 내용이 일부 상세하게 설명되었지만, 특정 변경 및 수정이 첨부된 청구 범위 내에서 실행될 수 있음이 명백할 것이다. 따라서, 본 실시예는 제한적인 것이 아니라 예시적인 것으로 간주되어야 하며, 본 개시의 실시예는 본 출원에 제공된 세부 사항에 제한되지 않고 첨부된 청구 범위의 범위 및 등가물 내에서 수정될 수 있다.
Claims (18)
- 클라우드 시스템의 스플릿 계층 그래픽 프로세서 시스템(split hierarchy graphics processor system)에 있어서, 상기 스플릿 계층 그래픽 프로세서 시스템은:
애플리케이션에 의해 생성된 가상 현실(VR) 환경 내의 복수의 뷰에 대한 복수의 프리미티브에 기초하여 병렬로 렌더링을 수행하는 서버에서의 복수의 렌더 노드(render node); 및
복수의 인코더
를 포함하고,
상기 복수의 뷰는 상기 가상 현실 환경의 그리드 맵의 복수의 측면(sides)에 대응하며,
상기 복수의 렌더 노드 각각은 상기 복수의 뷰의 대응하는 뷰의 고해상도에서 대응하는 프레임 시퀀스를 렌더링하고,
상기 복수의 인코더 각각은 상기 복수의 렌더 노드의 대응하는 렌더 노드에 위치하며, 상기 복수의 인코더 각각은 상기 대응하는 프레임 시퀀스를 인코딩하고 클라이언트 디바이스에 인코딩된 상기 대응하는 프레임 시퀀스를 스트리밍하며,
상기 그리드 맵은 상기 가상 현실 환경의 위치를 중심으로 상기 가상 현실 환경의 3 차원 표현을 제공하는, 스플릿 계층 그래픽 프로세서 시스템. - 제1항에 있어서,
상기 복수의 프리미티브를 생성하기 위해, 상기 애플리케이션을 실행하는 상기 서버에서의 마스터 노드를 더 포함하는, 스플릿 계층 그래픽 프로세서 시스템. - 제2항에 있어서,
상기 마스터 노드는, 상기 복수의 렌더 노드 각각에 의해 생성된 상기 대응하는 프레임 시퀀스 내의 프레임들에 타임 스탬프(timestamps) 또는 프레임 번호들을 적용하여, 상기 복수의 렌더 노드에 의해 수행된 렌더링을 동기화하도록 구성되는, 스플릿 계층 그래픽 프로세서 시스템. - 제1항에 있어서,
상기 그리드 맵은 6 개의 측면을 포함하는 큐브 맵(cube map)인, 스플릿 계층 그래픽 프로세서 시스템. - 제1항에 있어서,
상기 복수의 렌더 노드 각각과 상기 그리드 맵의 대응하는 측면 사이에 일대일(one-to-one) 관계가 있는, 스플릿 계층 그래픽 프로세서 시스템. - 제1항에 있어서,
상기 그리드 맵의 복수의 측면 각각은 상기 가상 현실 환경 내로의 상기 복수의 뷰 중 하나에 대응하는, 스플릿 계층 그래픽 프로세서 시스템. - 제1항에 있어서,
상기 클라이언트 디바이스는 상기 복수의 렌더 노드 각각으로부터 인코딩되어 스트리밍된 상기 대응하는 프레임 시퀀스를 디코딩 및 버퍼링하도록 구성된 하나 이상의 디코더를 포함하고,
상기 클라이언트 디바이스는, 고해상도에서 디스플레이하기 위한 상기 가상 현실 환경 내로 시점(point-of-view)을 생성하기 위해, 하나 이상의 복수의 뷰 중 인코딩된 하나 이상의 대응하는 프레임 시퀀스를 선택 및 디코딩하도록 구성되는, 스플릿 계층 그래픽 프로세서 시스템. - 클라우드 시스템의 스플릿 계층 그래픽 프로세서 시스템(split hierarchy graphics processor system)에 있어서, 상기 스플릿 계층 그래픽 프로세서 시스템은:
애플리케이션에 의해 생성된 가상 현실 환경 내의 복수의 뷰에 대한 복수의 프리미티브에 기초하여 병렬로 렌더링을 수행하는 서버에서의 복수의 렌더 노드(render node)를 포함하고,
상기 복수의 뷰는 상기 가상 현실 환경의 그리드 맵의 복수의 측면에 대응하며, 상기 복수의 렌더 노드 각각은 상기 복수의 뷰의 대응하는 뷰의 고해상도에서 대응하는 프레임 시퀀스를 렌더링하며,
상기 그리드 맵은 상기 가상 현실 환경의 위치를 중심으로 상기 가상 현실 환경의 3 차원 표현을 제공하는, 스플릿 계층 그래픽 프로세서 시스템. - 제8항에 있어서,
상기 복수의 프리미티브를 생성하기 위해, 상기 애플리케이션을 실행하는 상기 서버에서의 마스터 노드를 더 포함하는, 스플릿 계층 그래픽 프로세서 시스템. - 제9항에 있어서,
상기 마스터 노드는, 상기 복수의 렌더 노드 각각에 의해 생성된 상기 대응하는 프레임 시퀀스 내의 프레임들에 타임 스탬프(timestamps) 또는 프레임 번호들을 적용하여, 상기 복수의 렌더 노드에 의해 수행된 렌더링을 동기화하도록 구성되는, 스플릿 계층 그래픽 프로세서 시스템. - 제9항에 있어서,
상기 가상 현실 환경을 구축하기 위해 사용되는 복수의 오브젝트에 대한 입력 지오메트리(input geometry)를 저장하는 자산 라이브러리(asset library)를 더 포함하며,
상기 자산 라이브러리 내의 상기 복수의 오브젝트는 상기 마스터 노드 및 상기 복수의 렌더 노드에 의해 액세스 가능한, 스플릿 계층 그래픽 프로세서 시스템. - 제8항에 있어서,
상기 복수의 렌더 노드 각각에서 생성된 상기 대응하는 프레임 시퀀스는 하나 이상의 인코더에 의해 인코딩되어 클라이언트 디바이스로 스트리밍되는, 스플릿 계층 그래픽 프로세서 시스템. - 제12항에 있어서,
상기 렌더 노드 각각은, 상기 대응하는 프레임 시퀀스를 렌더링하기 위해, 일대일 관계로 상기 하나 이상의 인코더 중 하나를 포함하는, 스플릿 계층 그래픽 프로세서 시스템. - 제13항에 있어서,
상기 클라이언트 디바이스는 상기 하나 이상의 인코딩되어 스트리밍된 상기 대응하는 프레임 시퀀스를 디코딩 및 버퍼링하도록 구성된 하나 이상의 디코더를 포함하고,
상기 클라이언트 디바이스는, 고해상도에서 디스플레이하기 위한 상기 가상 현실 환경 내로 시점을 생성하기 위해, 하나 이상의 복수의 뷰 중 인코딩된 하나 이상의 대응하는 프레임 시퀀스를 선택 및 디코딩하도록 구성되는, 스플릿 계층 그래픽 프로세서 시스템. - 제8항에 있어서,
상기 복수의 렌더 노드 각각과 상기 그리드 맵의 대응하는 측면 사이에 일대일(one-to-one) 관계가 있는, 스플릿 계층 그래픽 프로세서 시스템. - 제8항에 있어서,
상기 그리드 맵은 6 개의 측면을 포함하는 큐브 맵(cube map)인, 스플릿 계층 그래픽 프로세서 시스템. - 제8항에 있어서,
상기 그리드 맵의 복수의 측면 각각은 상기 가상 현실 환경 내로의 상기 복수의 뷰 중 하나에 대응하는, 스플릿 계층 그래픽 프로세서 시스템. - 제8항에 있어서,
상기 복수의 렌더 노드는 서버 랙(server rack) 내에 배치되는, 스플릿 계층 그래픽 프로세서 시스템.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/993,064 | 2018-05-30 | ||
US15/993,064 US11232532B2 (en) | 2018-05-30 | 2018-05-30 | Multi-server cloud virtual reality (VR) streaming |
PCT/US2019/023621 WO2019231525A1 (en) | 2018-05-30 | 2019-03-22 | Multi-server cloud virtual reality (vr) streaming |
KR1020207037983A KR102472152B1 (ko) | 2018-05-30 | 2019-03-22 | 멀티 서버 클라우드 가상 현실 (vr) 스트리밍 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207037983A Division KR102472152B1 (ko) | 2018-05-30 | 2019-03-22 | 멀티 서버 클라우드 가상 현실 (vr) 스트리밍 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220164072A KR20220164072A (ko) | 2022-12-12 |
KR102606469B1 true KR102606469B1 (ko) | 2023-11-30 |
Family
ID=66041774
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227041340A KR102606469B1 (ko) | 2018-05-30 | 2019-03-22 | 멀티 서버 클라우드 가상 현실(vr) 스트리밍 |
KR1020207037983A KR102472152B1 (ko) | 2018-05-30 | 2019-03-22 | 멀티 서버 클라우드 가상 현실 (vr) 스트리밍 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207037983A KR102472152B1 (ko) | 2018-05-30 | 2019-03-22 | 멀티 서버 클라우드 가상 현실 (vr) 스트리밍 |
Country Status (6)
Country | Link |
---|---|
US (3) | US11232532B2 (ko) |
EP (1) | EP3804340A1 (ko) |
JP (2) | JP7273068B2 (ko) |
KR (2) | KR102606469B1 (ko) |
CN (1) | CN112470483B (ko) |
WO (1) | WO2019231525A1 (ko) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2555378B (en) * | 2016-10-18 | 2021-06-09 | Virtually Live Switzerland Gmbh | HMD delivery system and method |
JP7159057B2 (ja) * | 2017-02-10 | 2022-10-24 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 自由視点映像生成方法及び自由視点映像生成システム |
KR102138977B1 (ko) * | 2018-10-10 | 2020-07-28 | 민코넷주식회사 | 클라우드 컴퓨터를 이용한 게임 플레이 동영상 제공 시스템 |
US11625806B2 (en) * | 2019-01-23 | 2023-04-11 | Qualcomm Incorporated | Methods and apparatus for standardized APIs for split rendering |
US11328471B2 (en) * | 2019-05-24 | 2022-05-10 | Nvidia Corporation | Fine grained interleaved rendering applications in path tracing for cloud computing environments |
US11159776B2 (en) * | 2019-08-16 | 2021-10-26 | At&T Intellectual Property I, L.P. | Method for streaming ultra high definition panoramic videos |
CN111179437B (zh) * | 2019-12-30 | 2023-08-08 | 上海曼恒数字技术股份有限公司 | 一种Cloud VR无连接串流系统及连接方法 |
GB2594714B (en) * | 2020-05-04 | 2022-12-07 | Createc Robotics Ltd | Virtual view generation |
US11350138B2 (en) * | 2020-05-20 | 2022-05-31 | Sony Corporation | Managing a multi-view event comprising several streams, stream buffers, and rendering onto a single canvas |
US11637913B2 (en) * | 2020-07-15 | 2023-04-25 | Stryker Corporation | Automatic correspondence of encoders and decoders to video ports |
EP3958574A1 (en) * | 2020-08-19 | 2022-02-23 | XRSpace CO., LTD. | Method and system for rendering virtual environment |
CN114640670B (zh) * | 2020-11-30 | 2023-07-21 | 中移(成都)信息通信科技有限公司 | 虚拟现实vr信息共享的方法、装置及设备 |
CN112835621B (zh) * | 2021-01-13 | 2024-04-02 | 西安飞蝶虚拟现实科技有限公司 | 跨平台虚拟现实资源处理方法及处理系统 |
WO2022159630A1 (en) * | 2021-01-22 | 2022-07-28 | Zinn Labs, Inc. | Gaze sensors and display elements for detection of gaze vectors and user control at headset |
US11599338B2 (en) * | 2021-06-18 | 2023-03-07 | Qingdao Pico Technology Co., Ltd. | Model loading method and apparatus for head-mounted display device, and head-mounted display device |
CN113476830A (zh) * | 2021-07-26 | 2021-10-08 | 西安万像电子科技有限公司 | 云游戏数据处理方法、装置、游戏终端及处理器 |
KR102669261B1 (ko) * | 2021-10-15 | 2024-05-28 | (주)이머시브캐스트 | 클라우드 xr 기반의 프로그램 가상화 방법 |
CN113645484B (zh) * | 2021-10-16 | 2021-12-21 | 成都中科合迅科技有限公司 | 基于图形处理器的数据可视化加速渲染方法 |
US20230117444A1 (en) * | 2021-10-19 | 2023-04-20 | Microsoft Technology Licensing, Llc | Ultra-low latency streaming of real-time media |
US11962867B2 (en) | 2021-11-04 | 2024-04-16 | Tencent America LLC | Asset reusability for lightfield/holographic media |
US20230308846A1 (en) * | 2022-02-08 | 2023-09-28 | Meta Platforms Technologies, Llc | Systems and methods for multicast communication for ar/vr system |
TWI807860B (zh) * | 2022-06-14 | 2023-07-01 | 啟雲科技股份有限公司 | 虛擬實境網路表演者系統及電腦程式產品 |
CN115190156B (zh) * | 2022-07-05 | 2023-03-21 | 深圳市弘南科通信设备有限公司 | 一种双网数据传输方法及虚拟现实系统 |
US20240108984A1 (en) * | 2022-09-29 | 2024-04-04 | Sony Interactive Entertainment Inc. | Game asset optimization over network at optimizer server |
CN116563085B (zh) * | 2023-07-06 | 2023-09-01 | 湖南马栏山视频先进技术研究院有限公司 | 一种离线渲染的大规模并行处理方法及系统 |
CN117472188B (zh) * | 2023-12-07 | 2024-04-19 | 联通沃音乐文化有限公司 | Vr姿态信息控制装置与方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060059024A1 (en) * | 2002-11-07 | 2006-03-16 | Flytecomm, Inc. | Advanced travel management system |
US20070024594A1 (en) * | 2005-08-01 | 2007-02-01 | Junichiro Sakata | Information processing apparatus and method, and program |
US20090265661A1 (en) * | 2008-04-14 | 2009-10-22 | Gary Stephen Shuster | Multi-resolution three-dimensional environment display |
US20120154527A1 (en) * | 2010-12-21 | 2012-06-21 | Priya Dwivedula | Method and System for Frame Rate Conversion of 3D Frames |
US20120307096A1 (en) * | 2011-06-05 | 2012-12-06 | Apple Inc. | Metadata-Assisted Image Filters |
US20130070051A1 (en) * | 2011-09-20 | 2013-03-21 | Cheng-Tsai Ho | Video encoding method and apparatus for encoding video data inputs including at least one three-dimensional anaglyph video, and related video decoding method and apparatus |
US20140210819A1 (en) * | 2013-01-30 | 2014-07-31 | Qualcomm Incorporated | Output ordering of domain coordinates for tessellation |
US20170104819A1 (en) * | 2015-10-11 | 2017-04-13 | Microsoft Technology Licensing, Llc | Synchronization scheme for physics simulations |
US20170227765A1 (en) * | 2016-02-10 | 2017-08-10 | Advanced Micro Devices, Inc. | Method and system for streaming information in wireless virtual reality |
US20180034583A1 (en) * | 2016-08-01 | 2018-02-01 | Sony Interactive Entertainment America Llc | Forward error correction for streaming data |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7120205B2 (en) * | 2002-01-15 | 2006-10-10 | Jawad Ahmed Salehi | Method and system for multiple-shift code acquisition of optical orthogonal codes in optical CDMA systems |
US7068722B2 (en) * | 2002-09-25 | 2006-06-27 | Lsi Logic Corporation | Content adaptive video processor using motion compensation |
CA2569671A1 (en) * | 2004-06-01 | 2006-07-06 | L-3 Communications Corporation | Method and system for wide area security monitoring, sensor management and situational awareness |
CN101197647A (zh) * | 2006-12-13 | 2008-06-11 | 四川川大智胜软件股份有限公司 | 多通道实时三维视景渲染显示方法 |
US8553028B1 (en) | 2007-10-29 | 2013-10-08 | Julian Michael Urbach | Efficiently implementing and displaying independent 3-dimensional interactive viewports of a virtual world on multiple client devices |
US8605863B1 (en) * | 2008-03-18 | 2013-12-10 | Avaya Inc. | Method and apparatus for providing state indication on a telephone call |
US9454847B2 (en) * | 2009-02-24 | 2016-09-27 | Google Inc. | System and method of indicating transition between street level images |
WO2012100219A1 (en) * | 2011-01-20 | 2012-07-26 | Zoll Medical Corporation | Systems and methods for collection, organization and display of ems information |
US9892298B2 (en) * | 2012-02-06 | 2018-02-13 | Cognex Corporation | System and method for expansion of field of view in a vision system |
KR101609812B1 (ko) * | 2012-04-09 | 2016-04-20 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 프로세싱 로드 분배 |
GB2506727A (en) | 2012-07-30 | 2014-04-09 | Nvidia Corp | Server-rendering of graphics for remote client |
EP2711670B1 (en) * | 2012-09-21 | 2019-01-30 | NavVis GmbH | Visual localisation |
CA2885501C (en) * | 2014-03-20 | 2023-12-19 | Nanjing Yuyan Information Technology Ltd. | Efficient software for transcoding to hevc on multi-core processors |
US20150301708A1 (en) * | 2014-04-21 | 2015-10-22 | VMIX Media, Inc. | Video Editing Graphical User Interface |
US11122251B2 (en) * | 2014-09-03 | 2021-09-14 | Apple Inc. | Methods and apparatus for receiving and/or playing back content |
WO2016053337A1 (en) * | 2014-10-02 | 2016-04-07 | Siemens Aktiengesellschaft | Programming automation in a 3d graphical editor with tightly coupled logic and physical simulation |
GB2534136A (en) * | 2015-01-12 | 2016-07-20 | Nokia Technologies Oy | An apparatus, a method and a computer program for video coding and decoding |
US10319071B2 (en) * | 2016-03-23 | 2019-06-11 | Qualcomm Incorporated | Truncated square pyramid geometry and frame packing structure for representing virtual reality video content |
US10068366B2 (en) | 2016-05-05 | 2018-09-04 | Nvidia Corporation | Stereo multi-projection implemented using a graphics processing pipeline |
EP3485646B1 (en) | 2016-07-15 | 2022-09-07 | Koninklijke KPN N.V. | Streaming virtual reality video |
JP6620079B2 (ja) * | 2016-09-08 | 2019-12-11 | 株式会社ソニー・インタラクティブエンタテインメント | 画像処理システム、画像処理方法およびコンピュータプログラム |
US10379611B2 (en) | 2016-09-16 | 2019-08-13 | Intel Corporation | Virtual reality/augmented reality apparatus and method |
US10410376B1 (en) * | 2016-09-26 | 2019-09-10 | Amazon Technologies, Inc. | Virtual reality media content decoding of portions of image frames |
US10356417B2 (en) * | 2016-09-30 | 2019-07-16 | Intel Corporation | Method and system of video coding using projected motion vectors |
US10412412B1 (en) * | 2016-09-30 | 2019-09-10 | Amazon Technologies, Inc. | Using reference-only decoding of non-viewed sections of a projected video |
US10917564B2 (en) * | 2016-10-12 | 2021-02-09 | Qualcomm Incorporated | Systems and methods of generating and processing files for partial decoding and most interested regions |
CN106780769B (zh) * | 2016-12-23 | 2020-11-13 | 太炫科技(南京)有限公司 | 一种减少近距离对象遮挡的三维模型绘制系统及绘制方法 |
US20180191868A1 (en) * | 2017-01-03 | 2018-07-05 | Black Sails Technology Inc. | Method and System for Downloading Multiple Resolutions Bitrate for Virtual Reality (VR) Video Streaming Optimization |
CN109214248B (zh) * | 2017-07-04 | 2022-04-29 | 阿波罗智能技术(北京)有限公司 | 用于识别无人驾驶车辆的激光点云数据的方法和装置 |
US11595381B2 (en) * | 2017-08-23 | 2023-02-28 | Visa International Service Association | Secure authorization for access to private data in virtual reality |
-
2018
- 2018-05-30 US US15/993,064 patent/US11232532B2/en active Active
-
2019
- 2019-03-22 WO PCT/US2019/023621 patent/WO2019231525A1/en unknown
- 2019-03-22 JP JP2020566269A patent/JP7273068B2/ja active Active
- 2019-03-22 KR KR1020227041340A patent/KR102606469B1/ko active IP Right Grant
- 2019-03-22 KR KR1020207037983A patent/KR102472152B1/ko active IP Right Grant
- 2019-03-22 CN CN201980048535.7A patent/CN112470483B/zh active Active
- 2019-03-22 EP EP19715751.4A patent/EP3804340A1/en active Pending
-
2022
- 2022-01-21 US US17/581,697 patent/US11636568B2/en active Active
-
2023
- 2023-04-25 US US18/306,922 patent/US20230260073A1/en active Pending
- 2023-04-27 JP JP2023073069A patent/JP7538284B2/ja active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060059024A1 (en) * | 2002-11-07 | 2006-03-16 | Flytecomm, Inc. | Advanced travel management system |
US20070024594A1 (en) * | 2005-08-01 | 2007-02-01 | Junichiro Sakata | Information processing apparatus and method, and program |
US20090265661A1 (en) * | 2008-04-14 | 2009-10-22 | Gary Stephen Shuster | Multi-resolution three-dimensional environment display |
US20120154527A1 (en) * | 2010-12-21 | 2012-06-21 | Priya Dwivedula | Method and System for Frame Rate Conversion of 3D Frames |
US20120307096A1 (en) * | 2011-06-05 | 2012-12-06 | Apple Inc. | Metadata-Assisted Image Filters |
US20130070051A1 (en) * | 2011-09-20 | 2013-03-21 | Cheng-Tsai Ho | Video encoding method and apparatus for encoding video data inputs including at least one three-dimensional anaglyph video, and related video decoding method and apparatus |
US20140210819A1 (en) * | 2013-01-30 | 2014-07-31 | Qualcomm Incorporated | Output ordering of domain coordinates for tessellation |
US20170104819A1 (en) * | 2015-10-11 | 2017-04-13 | Microsoft Technology Licensing, Llc | Synchronization scheme for physics simulations |
US20170227765A1 (en) * | 2016-02-10 | 2017-08-10 | Advanced Micro Devices, Inc. | Method and system for streaming information in wireless virtual reality |
US20180034583A1 (en) * | 2016-08-01 | 2018-02-01 | Sony Interactive Entertainment America Llc | Forward error correction for streaming data |
Also Published As
Publication number | Publication date |
---|---|
KR102472152B1 (ko) | 2022-11-30 |
JP2021525911A (ja) | 2021-09-27 |
JP2023100769A (ja) | 2023-07-19 |
CN112470483A (zh) | 2021-03-09 |
WO2019231525A1 (en) | 2019-12-05 |
JP7538284B2 (ja) | 2024-08-21 |
JP7273068B2 (ja) | 2023-05-12 |
KR20210018870A (ko) | 2021-02-18 |
US11636568B2 (en) | 2023-04-25 |
US20230260073A1 (en) | 2023-08-17 |
CN112470483B (zh) | 2023-02-03 |
EP3804340A1 (en) | 2021-04-14 |
KR20220164072A (ko) | 2022-12-12 |
US11232532B2 (en) | 2022-01-25 |
US20220188964A1 (en) | 2022-06-16 |
US20190370926A1 (en) | 2019-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102606469B1 (ko) | 멀티 서버 클라우드 가상 현실(vr) 스트리밍 | |
US11210807B2 (en) | Optimized shadows in a foveated rendering system | |
US10740951B2 (en) | Foveal adaptation of particles and simulation models in a foveated rendering system | |
US11222444B2 (en) | Optimized deferred lighting in a foveated rendering system | |
EP3265864B1 (en) | Tracking system for head mounted display | |
JP6959365B2 (ja) | 中心窩レンダリングシステムにおけるシャドーの最適化及びメッシュスキンの適応 | |
JP7050883B2 (ja) | 中心窩レンダリングシステムにおける、遅延ライティングの最適化、パーティクルの中心窩適応、及びシミュレーションモデル | |
US11806615B2 (en) | Asynchronous virtual reality interactions | |
US11107183B2 (en) | Adaptive mesh skinning in a foveated rendering system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |