KR20180072806A - 그래픽 프로세싱 유닛에서의 전자 디스플레이 안정화 - Google Patents

그래픽 프로세싱 유닛에서의 전자 디스플레이 안정화 Download PDF

Info

Publication number
KR20180072806A
KR20180072806A KR1020187014757A KR20187014757A KR20180072806A KR 20180072806 A KR20180072806 A KR 20180072806A KR 1020187014757 A KR1020187014757 A KR 1020187014757A KR 20187014757 A KR20187014757 A KR 20187014757A KR 20180072806 A KR20180072806 A KR 20180072806A
Authority
KR
South Korea
Prior art keywords
frame
pose
eds
gpu
hmd system
Prior art date
Application number
KR1020187014757A
Other languages
English (en)
Other versions
KR102093619B1 (ko
Inventor
존 폴 베이츠
에? 코케비스
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20180072806A publication Critical patent/KR20180072806A/ko
Application granted granted Critical
Publication of KR102093619B1 publication Critical patent/KR102093619B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/147Digital output to display device ; Cooperation and interconnection of the display device with other functional units using display panels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/0093Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00 with means for monitoring data relating to the user, e.g. head-tracking, eye-tracking
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B27/0172Head mounted characterised by optical features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/18Image warping, e.g. rearranging pixels individually
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/001Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/001Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background
    • G09G3/003Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background to produce spatial visual effects
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/30Image reproducers
    • H04N13/332Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
    • H04N13/344Displays for viewing with the aid of special glasses or head-mounted displays [HMD] with head-mounted left-right displays
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0179Display position adjusting means not related to the information to be displayed
    • G02B2027/0187Display position adjusting means not related to the information to be displayed slaved to motion of at least a part of the body of the user, e.g. head, eye
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/02Improving the quality of display appearance
    • G09G2320/0261Improving the quality of display appearance in the context of movement of objects on the screen or movement of the observer relative to the screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • G09G2340/0435Change or adaptation of the frame rate of the video stream
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2354/00Aspects of interface with display user

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Optics & Photonics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • User Interface Of Digital Computer (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Geometry (AREA)
  • Processing Or Creating Images (AREA)

Abstract

HMD(head mounted display) 시스템[100]의 CPU(central processing unit)[102]에서 실행되는 애플리케이션[104]은 GPU(graphics processing unit)[106]에 대한 프레임 드로잉 커맨드들[125]의 세트들을 생성하고, 프레임 드로잉 커맨드들의 각각의 세트에 대해, GPU는 대응하는 프레임[130, 131]을 복수의 프레임 버퍼들[120, 122] 중 하나에 렌더링한다. 주기적 프리엠션 포인트들에서, GPU는 가장 최근 프레임 번호를 가지는, 복수의 프레임 버퍼들에 저장된 프레임을 선택하며, 현재 포즈[124]와 선택된 프레임과 함께 저장된 포즈 정보 사이의 차이에 기반하여 프레임에 전자 디스플레이 안정화 워프[238]를 적용한다.

Description

그래픽 프로세싱 유닛에서의 전자 디스플레이 안정화
본 개시내용은 일반적으로, HMD(head mounted display) 시스템들에 관한 것으로, 더 구체적으로, HMD(head mounted display) 시스템들에서의 전자 디스플레이 안정화에 관한 것이다.
VR(Virtual reality) 시스템들 및 AR(augmented reality) 시스템들은 컴퓨터-생성 3D(three-dimensional) 이미저리(imagery)를 사용하여 인공적인 또는 부분적으로 인공적인 환경을 생성한다. VR 및 AR 시스템들의 주요 목표는 생성된 환경에서 사용자에게 "현실"감을 제공하는 것이다. 이러한 현실감은 사용자의 움직임들과 통합된 디스플레이 디바이스의 사용을 통해 가능해진다. 예컨대, 일부 VR 및 AR 시스템들은 별개의 좌안용(left-eye) 및 우안용(right-eye) 디스플레이들을 제공하는 HMD(head mounted display)를 사용한다. 디스플레이들은 표현되는 세계에서 장면의 스테레오스코픽(stereoscopic) 또는 3D 표현을 함께 제시하며, 여기서, 제시된 장면은 사용자의 현재 포즈(pose)(즉, 도시되는 장면에 대한 기준 좌표 프레임에 관한 사용자의 머리의 위치 및 방향)에 기반하여 장면의 사용자의 상대적 관점을 반영한다.
HMD-기반의 VR 및 AR 시스템들은 3D 이미저리를 디스플레이 프레임들의 시퀀스로서 디스플레이하며, 각각의 디스플레이 프레임은 대응하는 검출된 머리 포즈에 기반하여 렌더링되고, 특정 시간 기간 동안 지속된다. 그러나, 디스플레이 프레임들의 프로세싱에서의 지연들로 인해, 사용자의 머리는 프레임의 렌더링의 개시와 그 결과의 렌더링된 프레임의 디스플레이 사이의 시간에 크게 회전되거나 또는 그렇지 않으면 포지션을 변경할 수 있다. 이로써, 특정 시점에 HMD에 디스플레이된 이미저리는 사용자의 머리 움직임들보다 뒤처질 수 있다. 장면 내에서의 사용자의 인지된 방향 및 HMD 상에 제시된 장면의 관점에서의 방향 사이의 이러한 불일치(dissonance)는, 사용자 방향 상실(disorientation), 또는 "가상 현실 멀미"로 종종 지칭되는 것으로 이어질 수 있다. 사용자의 불편을 감소시키거나 또는 제거하고, 그에 의해 개선된 현실감을 제공하기 위해, HMD-기반의 VR 및 AR 시스템들은 모션-투-광자 레이턴시(motion-to-photon latency), 즉, 사용자의 머리/눈 움직임과, 결과적인 새로운 포즈로부터의 장면을 나타내는 광자들이 사용자의 눈을 히트(hit)할 때 사이의 레이턴시를 최소화하려고 추구한다.
첨부한 도면들을 참조함으로써 당업자들에 의해 본 개시내용이 더 잘 이해될 수 있으며, 당업자들에게 본 개시내용의 많은 특징들 및 이점들이 명백해진다. 상이한 도면들에서의 동일한 참조 부호들의 사용은 유사한 또는 동일한 항목들을 표시한다.
도 1은 본 개시내용의 적어도 하나의 실시예에 따른, HMD(head mounted display) 시스템의 블록 다이어그램이다.
도 2는 본 개시내용의 적어도 하나의 실시예에 따른, 도 1의 HMD 시스템의 GPU(graphics processing unit)에 의한 EDS(electronic display stabilization)에 대한 프레임의 선택을 예시하는 블록 다이어그램이다.
도 3은 본 개시내용의 적어도 하나의 실시예에 따른, GPU에서 렌더링하는 프레임의 완료에 기반하여 도 1의 HMD 시스템에서의 EDS에 대한 프레임의 선택을 예시하는 블록 다이어그램이다.
도 4는 본 개시내용의 적어도 하나의 실시예에 따른, GPU에 저장된 프레임들의 시퀀스로부터 프레임을 선택함으로써 HMD 시스템의 GPU에서 EDS를 수행하는 방법의 흐름 다이어그램이다.
도 5는 본 개시내용의 적어도 하나의 실시예에 따른, 도 1의 HMD 시스템에 의해 사용되는 EDS 프리엠션 포인트(preemption point)들의 위치를 예시하는 블록 다이어그램이다.
도 1-5는 EDS(electronic display stabilization) 프로세스에서 CPU(central processing unit)에 의한 낮은 레벨의 관여로 HMD(head mounted display) 시스템에서 EDS를 수행하기 위한 기법들을 예시한다. CPU에서 실행되는 애플리케이션은 HMD 시스템의 GPU(graphics processing unit)에 대한 프레임 드로잉(drawing) 커맨드들의 세트들을 생성하고, 프레임 드로잉 커맨드들의 각각의 세트에 대해, GPU는 대응하는 프레임을 복수의 프레임 버퍼들 중 하나에 렌더링한다. 각각의 프레임은, 시간이 지남에 따라 생성되는 프레임들의 시퀀스 내의 프레임의 위치를 표시하는 프레임 번호를 포함하거나 또는 이와 연관되도록 생성된다. 또한, 각각의 프레임은 프레임이 생성될 때 HMD 시스템의 포즈를 표시하는 포즈 정보를 포함하거나 또는 이와 연관되도록 생성된다. 주기적 EDS 프리엠션 포인트들에서, GPU는 가장 최근 프레임 번호를 가지는, 복수의 프레임 버퍼들에 저장된 프레임을 선택하고, HMD 시스템의 현재 포즈를 식별하며, 현재 포즈와 선택된 프레임과 함께 저장된 포즈 정보 사이의 차이에 기반하여 EDS 워프(warp)로 본원에서 지칭되는 수정을 프레임에 적용한다. 프레임 번호 및 포즈 정보가 프레임 자체와 함께 저장되기 때문에, EDS 프리엠션 포인트들은 GPU에서의 프레임 커맨드 세트들의 생성과 비동기적일 수 있다. 이것은 CPU 및 GPU의 오버헤드를 감소시키고, EDS 프리엠션 포인트들이, 프레임이 디스플레이에 스캔 아웃되는(scanned out) 시간에 가깝게 배치될 수 있게 하여, EDS 프로세스의 효율성을 개선한다.
도 1은 본 개시내용의 적어도 하나의 실시예에 따른, 현실 세계 또는 상상 세계에서 VR 또는 AR 현실감을 제공하기 위한 HMD 시스템(100)을 예시한다. 설명을 목적으로, HMD 시스템은 사용자의 머리의 움직임들에 커플링된 HMD 디바이스를 포함하거나 또는 이에 통합되는 것으로 가정된다. 예컨대, HMD 디바이스는, 디바이스가 사용자의 머리에 장착되며, 비교적 고정된 포지션에서 사용자의 눈들에 근접하게 포지셔닝되는 고글 또는 안경 형태 팩터를 가질 수 있다. 그러나, 일부 상황들에서, 사용자는 사용자의 얼굴까지 태블릿 컴퓨터 또는 다른 핸드-헬드 디바이스를 들고, 사용자의 머리가 움직일 때에도 사용자의 머리로의 핸드-헬드 디바이스의 방향이 비교적 고정되도록 핸드-헬드 디바이스의 움직임을 제약할 수 있다. 그러한 사례들에서, 이러한 방식으로 동작되는 핸드-헬드 디바이스는, 사용자의 머리에 물리적 부착을 통해 "장착"되지 않음에도 불구하고, HMD 디바이스의 구현으로 또한 고려될 수 있다.
도 1의 예시된 예에서, HMD 시스템(100)은 CPU(102), DSP(digital signal processor)(103), IMU(inertial measurement unit)(105), GPU(106) 및 디스플레이 패널들(110 및 112)을 포함한다. CPU(102)는 VR 애플리케이션(104)과 같은 VR 또는 AR 애플리케이션들을 포함하는 컴퓨터 프로그램들로서 조직화되는 명령들의 세트들을 실행하도록 일반적으로 구성된 프로세싱 유닛이다. 본원에서 추가로 설명되는 바와 같이, VR 애플리케이션(104)은, HMD 시스템(100)의 포즈들을 시간이 지남에 따라 식별함으로써 그리고 사용자에게 디스플레이하기 위한 프레임들을 생성하는 그러한 포즈들에 기반하여, HMD 시스템(100)의 사용자에 대한 가상 현실 경험을 제공하도록 일반적으로 구성된 프로그램이다. 따라서, 사용자는 현실 세계에서의 자신들의 움직임들이 VR 애플리케이션(104)에 의해 생성된 가상 현실에서의 움직임들이라는 인상을 제공받는다.
포즈 식별을 지원하기 위해, HMD 시스템(100)은 IMU(105) 및 DSP(103)를 포함한다. IMU(105)는 HMD 시스템(100)의 움직임을 표시하는 전기 신호들을 생성하는 하나 또는 그 초과의 가속도계들, 자이로스코프들, 자력계들 또는 다른 센서들을 포함한다. DSP(103)는 HMD 시스템(100)의 포즈를 표시하는, 도 1에서 포즈(124)로 지정되는 정보를 생성하기 위해 IMU(105)에 의해 생성된 전기 신호들을 샘플링, 필터링 및 프로세싱하도록 구성된 프로세싱 유닛이다. 포즈(124)는, 이를테면, HMD 시스템(100)에 대한 기준 프레임에서의 좌표들의 세트를 통해, 다양한 포맷들 중 임의의 포맷으로 표현될 수 있다. 적어도 하나의 실시예에서, DSP(103)는 포즈(124)가 HMD 시스템(100)의 비교적 최근 포즈를 항상 나타내도록 포즈(124)를 주기적으로 업데이트한다. 추가로, DSP(103)는 (VR 애플리케이션(104)의 동작들을 포함하는) CPU(102) 및 GPU(106)의 동작들과 비동기적으로 포즈(124)를 업데이트할 수 있다. 포즈(124)는 그것이 DSP(103)와의 동기화 없이 필요에 따라 CPU(102) 및 GPU(106)에 의해 액세스될 수 있도록 공유 메모리(도시되지 않음)에 저장되며, 그에 의해 HMD 시스템(100)에서의 오버헤드를 감소시킬 수 있다.
포즈(124) 및 다른 입력 정보, 이를테면, 저장된 가상 현실 환경 파일들, 사용자 입력 정보 등(도시되지 않음)에 기반하여, VR 애플리케이션(104)은 프레임 드로잉 커맨드들(125)과 같은 커맨드들의 세트들을 주기적으로 생성하며, 여기서, 각각의 커맨드 세트는 디스플레이 패널들(110 및 112)에 디스플레이하기 위한 대응하는 프레임을 생성하는 것이다. 시간이 지남에 따라 생성된 프레임들은 프레임들의 시퀀스를 구성하고, 커맨드들의 각각의 세트는 시퀀스 내의 대응하는 프레임의 번호를 표시한다. 따라서, 예컨대, VR 애플리케이션(104)은 5개의 프레임들의 시퀀스에 대한 프레임 드로잉 커맨드들을 생성할 수 있으며, 시퀀스 내의 첫 번째 프레임은 프레임 번호 0을 가지고, 시퀀스 내의 두 번째 프레임은 프레임 번호 1을 가지는 식이다. 프레임 드로잉 커맨드들의 각각의 세트에 대한 프레임 번호를 포함하는 것 이외에, VR 애플리케이션(104)은 커맨드 세트에서 드로잉 커맨드들의 세트를 생성하는 데 사용되는 포즈(124)를 포함한다.
예를 통해 예시하자면, 주어진 시간 T에서, VR 애플리케이션(104)은 다른 프레임이 생성될 것임을 식별한다. 이에 대한 응답으로, VR 애플리케이션(104)은 포즈(124)를 판독하여 HMD 시스템(100)에 대한 가장 최근에 캡처된 포즈 정보를 식별한다. 포즈(124) 및 다른 입력 정보, 이를테면, VR 환경 파일들(도시되지 않음)에 기반하여, VR 애플리케이션(104)은 대응하는 프레임을 드로잉하기 위한 프레임 드로잉 커맨드들(125)을 생성한다. VR 애플리케이션(104)은 커맨드들 중 적어도 하나의 커맨드에서, 생성될 프레임에 대한 프레임 번호 및 포즈(124)를 포함하기 위한 프레임 드로잉 커맨드들을 생성한다. 아래에서 추가로 설명되는 바와 같이, 이러한 정보는 GPU(106)에 의해 사용되어 프레임 드로잉 커맨드들(125)의 생성과 비동기적으로 프레임에 EDS 워프를 적용하며, 그에 의해, GPU(106) 및 CPU(102)의 동작들 사이의 동기화의 오버헤드를 감소시킬 수 있다. 적어도 하나의 실시예에서, EDS 데몬(109)은 "Electronic Display Stabilization for Head Mounted Display"라는 명칭으로 2015년 6월 12일자로 출원된 미국 특허 출원 일련 번호 제 62/174,602 호(대리인 도켓: G15012-PR)에서 설명되는 기법들을 사용하여 EDS 워프를 생성 및 적용하고, 상기 미국 특허 출원 전체가 본원에 인용에 의해 포함된다.
예컨대, 일 실시예에서, EDS 데몬(109)에 의해 사용되는 워핑 프로세스는, 워핑된 또는 수정된 프레임을 생성하기 위해, 포즈 정보에서 상이한 것으로 표시된 머리 회전에 기반하여, 프레임에 저장된 포즈 정보로 표시되는 바와 같은 원래의 머리 포즈 및 EDS 데몬(109)에 의해 결정되는 바와 같은 업데이트된 머리 포즈로부터의 호모그래피 회전(homography rotation)에 대한 결정, 및 프레임으로의 이러한 호모그래피 회전의 (선형 변환의 형태로의) 적용을 포함한다. 추가로, HMD 시스템(100)(도시되지 않음)의 접안 렌즈들은, 접안 렌즈들을 통해 굴절될 때 분리되는 광의 상이한 파장들로 인해, 광학 왜곡뿐만 아니라 색수차들 또는 색 분리를 도입할 수 있고, 따라서, EDS 데몬(109)에 의해 사용되는 워핑 프로세스는 광학 왜곡, 색수차들, 렌즈들의 에지들을 향하는 암화(darkening), 다른 소스들로부터의 컴포지트 텍스처(composite texture)들 등 중 하나 또는 그 초과를 보상할 수 있다. 호모그래피 회전에 의해 제공되는 임시 워핑은, 보상 왜곡(또는 "전치왜곡")을 도입하기 위해 왜곡/색수차 정정 프로세스들에 의해 활용되는 LUT(look-up table) 값들에 호모그래피 회전을 적용하고, 이어서 호모그래피 회전 및 다른 정정/보상 프로세스들 둘 모두를 동시에 구현하도록 프레임에 결과적인 수정된 LUT 값들을 적용함으로써 구현될 수 있다.
GPU(106)는 프로세싱 모듈(107) 및 프레임 버퍼들(121 및 122)을 포함한다. 프로세싱 모듈은 커맨드들의 세트들을 실행하기 위한 하나 또는 그 초과의 명령 파이프라인들, 컴퓨트 유닛들 또는 다른 프로세싱 회로를 포함한다. 도 1의 예시된 예에서, GPU(106)는 본원에서 데몬들로 지칭되는 2개의 상이한 프로세스들을 실행한다. 특히, GPU(106)는 프레임 드로잉 데몬(108) 및 EDS 데몬(109)을 실행한다. 프레임 드로잉 데몬(108)은 CPU(102)로부터 프레임 드로잉 커맨드들의 세트들을 수신하고, 그리고 각각의 세트에 기반하여 대응하는 프레임을 프레임 버퍼들(121 및 122) 중 하나에 렌더링하도록 구성된다.
적어도 하나의 실시예에서, 프레임 드로잉 데몬(108)은 자신이 프레임들을 생성할 때 2개의 프레임 버퍼들(121 및 122) 사이에서 교번한다. 따라서, 프레임 드로잉 데몬(108)은 프레임 버퍼들(121 및 122)을 더블 프레임 버퍼로서 사용하여, 다른 프레임 버퍼가 디스플레이 패널들(110 및 112) 중 하나 또는 둘 모두에 스캔되는 동안 하나의 프레임 버퍼에 렌더링한다. 예를 통해 예시하자면, 프레임 드로잉 데몬(108)은 시퀀스 내의 첫 번째 프레임인 지정된 프레임(130)을 프레임 버퍼(121)에 렌더링할 수 있다. 프레임 드로잉 커맨드들의 다음 세트에 기반하여, 프레임 드로잉 데몬(108)은 시퀀스 내의 다음 프레임인 지정된 프레임(131)을 프레임 버퍼(122)에 렌더링한다. 프레임(131)이 프레임 버퍼(122)에 렌더링되는 동안, 프레임(130)은 디스플레이 패널들(110 및 112) 중 하나 또는 둘 모두에서 디스플레이하기 위해 스캔 아웃될 수 있다. 프레임(130)이 스캔 아웃된 이후에, 프레임 드로잉 데몬(108)은, 프레임 버퍼(122)에서 프레임(131)이 디스플레이하기 위해 스캔 아웃되는 동안, 시퀀스 내의 다음 프레임(도시되지 않음)을 프레임 버퍼(121)에 렌더링할 수 있다.
도 1의 예시된 실시예에서, HMD 시스템(100)이 프레임 버퍼들의 쌍을 사용하지만, 다른 실시예들에서, HMD 시스템(100)은 본원에서 설명되는 기법들을 여전히 사용하면서 3개 또는 그 초과의 프레임 버퍼들을 포함할 수 있다는 것이 인식될 것이다. 추가로, 일부 실시예들에서, HMD 시스템(100)은 디스플레이 패널들(110 및 112) 각각에 대해 다수의 독립적 프레임 버퍼들을 사용할 수 있거나, 또는 본원에서 설명되는 기법들을 사용하면서 포비티드 이미징(foveated imaging)을 지원하기 위해, 섹션들로 분리된 프레임 버퍼들을 사용할 수 있다.
프레임 드로잉 데몬(108)은 프레임(131)의 예로 표시되는 바와 같은 적어도 3가지 타입들의 정보: VR 애플리케이션(104)에 의해 생성된 프레임들의 시퀀스 내의 프레임의 순서를 표시하는 프레임 번호(예컨대, 프레임 번호(132)), 프레임이 기반하였던 드로잉 커맨드들을 생성하는 데 사용되는 포즈 정보를 표시하는 포즈 정보(예컨대, 포즈(133)), 및 디스플레이될 프레임에 대한 픽셀 값들을 나타내는 디스플레이 데이터(예컨대, 디스플레이 데이터(134))를 포함하거나 또는 이들과 연관되도록 각각의 프레임을 렌더링한다. 프레임 번호는 순차적 번호, 타임스탬프, 또는 프레임들의 시퀀스 내의 프레임의 순서를 표시하는 다른 식별자일 수 있다. 적어도 하나의 실시예에서, 프레임 드로잉 데몬(108)은, 프레임 번호 및 포즈 정보가 프레임의 "비-가시적" 부분에 저장되도록 ― 즉, 디스플레이 패널들(110 및 112)에 의해 스캔 아웃되지 않는 프레임 버퍼의 메모리 위치들에 저장되며, 그에 따라서, HMD 시스템(100)의 사용자에게 가시적이지 않도록 ― 각각의 프레임을 생성한다. 다른 실시예들에서, 프레임 번호 및 포즈 정보 중 하나 또는 그 초과는, 프레임의 가시적이지만 비교적 눈에 띄지 않는 부분, 이를테면, 프레임의 에지 가까이에 저장될 수 있다. 또 다른 실시예들에서, 프레임 번호 및 포즈 정보 중 하나 또는 둘 모두는 대신에, 프레임 외부에 저장될 수 있지만, (예컨대, 테이블, 링크된 리스트 등을 통해) 적합한 방식으로 프레임과 연관될 수 있다.
디스플레이 패널들(110 및 112)은 프레임 버퍼들(121 및 122) 중 하나를 교번적 방식으로 주기적으로 선택하고, 그리고 선택된 버퍼에 저장된 프레임의 가시적 부분을 스캔 아웃하도록 구성되고, 그에 의해 디스플레이 패널에서 프레임을 디스플레이한다. 적어도 하나의 실시예에서, 디스플레이 패널들(110, 112)은 각각, 사용자의 상이한 눈에 대한 디스플레이에 대응한다 ― 예컨대, 디스플레이 패널(110)은 좌안용 디스플레이 패널이고, 디스플레이 패널(112)은 우안용 디스플레이 패널이다 ―. 적어도 하나의 실시예에서, HMD 시스템(100)은 디스플레이 패널들(110 및 112) 각각에 대해 상이한 그리고 다수의 전용 프레임 버퍼들을 포함할 수 있다.
EDS 데몬(109)은 프레임 버퍼들(121 및 122) 중 하나에 저장된 선택된 프레임에 EDS 워프를 주기적으로 적용하도록 구성된다. EDS 데몬이 EDS 워프의 생성 및 적용을 개시하는 시간은 본원에서 EDS 프리엠션 포인트로 지칭된다. 적어도 하나의 실시예에서, EDS 프리엠션 포인트들은 클럭 신호로 표시되는 바와 같이, 고정 스케줄에 따라 관리되지만, 고정 스케줄은 본원에서 추가로 설명되는 바와 같이, CPU(102)에 의한 드로잉 커맨드들의 생성 및 프레임 드로잉 데몬(108)에 의한 프레임들의 렌더링과 비동기적이다.
EDS 프리엠션 포인트를 식별하는 것에 대한 응답으로, EDS 데몬(109)은 프레임들의 대응하는 디스플레이 번호에 기반하여 프레임 버퍼들(121 및 122)에 저장된 프레임들 중 하나를 선택한다. 적어도 하나의 실시예에서, EDS 데몬(109)은 대응하는 프레임 버퍼로 완전히 렌더링된 가장 높은 프레임 번호(즉, 프레임 시퀀스 내의 가장 최근 프레임)를 가지는 프레임을 선택한다. EDS 데몬(109)은 선택된 프레임에 저장된 포즈 정보를 판독하고, 또한 포즈(124)를 판독하여 HMD 시스템(100)의 가장 최근에 식별된 포즈를 결정한다. 프레임 포즈 정보와 포즈(124) 사이의 차이는, 프레임에 대한 프레임 드로잉 커맨드들이 생성되었을 때의 HMD 시스템(100)의 포즈와, HMD 시스템(100)의 가장 최근에 식별된 포즈 사이의 차이를 표시한다. 이러한 차이에 기반하여, EDS 데몬(109)은 EDS 워프를 식별한다. 워프는, 프레임이 HMD 시스템(100)의 현재 포즈를 더 밀접하게 반영하도록 선택된 프레임에 대한 디스플레이 데이터의 조정을 나타내며, 그에 따라서, 픽셀 위치들의 변환(translation), 픽셀 강도들 또는 색의 조정들 등을 나타낼 수 있다. EDS 데몬(109)은 선택된 프레임에 EDS 워프를 적용하며, 그에 의해, 사용자 모션으로부터 발생할 수 있는 지터 또는 다른 불일치적(dissonant) 효과들을 감소시킨다.
위에서 표시된 바와 같이, EDS 데몬(109)에 대한 EDS 프리엠션 포인트들은 CPU(102)에 의한 프레임 드로잉 커맨드들의 생성과 비동기적일 수 있다. 이것은 CPU(102) 및 GPU(106)의 동작들을 동기화할 시 오버헤드를 감소시켜서 프로세싱 속도 및 효율성을 개선하며, 추가로, 프레임이 디스플레이하기 위해 스캔 아웃될 때 EDS 워프가 포인트에 시간적으로 더 밀접하게 적용될 수 있게 허용하며, 그에 의해 EDS 프로세스의 유효성을 개선한다. 예시하자면, 종래의 시스템들에서, EDS 워프가 생성되고, 프레임 드로잉 커맨드들의 세트가 완료되었다는 CPU로부터의 신호들에 대한 응답으로, 저장된 프레임에 GPU에 의해 적용된다. 그러나, 생성될 프레임들의 다양한 가시적 복잡성(사용자가 포즈들을 변경할 때 가상 환경의 복잡성의 변동들을 반영함)으로 인해, 프레임 드로잉 커맨드들의 세트들의 완료의 타이밍은 실질적으로 변할 것이다. 이것은 차례로 EDS 워프들을 생성하는 데 사용되는 포즈 정보의 상대적 차이량의 변동들을 야기하고, 차례로 EDS 프로세스의 바람직하지 않은 변동들을 야기할 수 있다. 각각의 프레임의 프레임 번호 및 포즈 정보를, 그것이 EDS 데몬(109)에 의해 비동기적으로 판독될 수 있도록 배치함으로써, HMD 시스템(100)은 이러한 변동들을 감소시키며, 그에 의해 EDS 프로세스의 유효성을 개선한다.
도 2는 적어도 하나의 실시예에 따른, HMD 시스템(100)의 예시적 동작을 예시한다. 예시되는 예에서, VR 애플리케이션(104)은 프레임 드로잉 커맨드 세트들을 (상이한 시간들에) 생성하여 2개의 상이한 프레임들 ― 프레임(130) 및 프레임(131) ― 을 생성한다. 각각의 프레임은 프레임 번호, 포즈 정보 및 드로잉 데이터를 포함하도록 생성된다. 따라서, 프레임(130)은 5의 프레임 번호, 및 지정된 시간 T1에 식별된 포즈 정보를 포함한다. 프레임(131)은 6의 프레임 번호(프레임(131)이 프레임(130) 이후에 생성되었음을 표시함) 및 (시간 T1 이후의) 지정된 시간 T2에 식별된 포즈 정보를 포함한다.
EDS 프리엠션 포인트를 식별하는 것에 대한 응답으로, EDS 데몬(109)은 프레임 버퍼들(121 및 122)에 저장된 프레임들(130 및 131)을 리뷰하며, 둘 모두가 그들의 개개의 프레임 버퍼로 충분히 렌더링되었음을 먼저 식별한다. 그에 따라서, EDS 데몬(109)은 EDS에 대한 선택에 적합한 것으로서 프레임들(130 및 131) 둘 모두를 식별한다. 이어서, EDS 데몬(109)은, 프레임(131)이 가장 높은 프레임 번호를 가지며, 그에 따라서, 가장 최근 프레임임을 식별한다. 이에 대한 응답으로, EDS 데몬(109)은 EDS 워프의 적용을 위해 프레임(131)을 선택한다.
일부 실시예들에서, EDS 데몬(109)은 가장 높은 프레임 번호를 가지는 프레임 이외의 프레임을 선택할 수 있다. 예컨대, 적어도 하나의 실시예에서, 후속 프레임이 프레임 버퍼들 중 하나에 충분히 렌더링되는 경우에도, EDS 데몬(109)은, 두 번째 프레임마다 또는 네 번째 프레임마다 선택하는 바과 같이, 세팅된 패턴에 기반하여 프레임을 선택할 수 있다. 이것은 EDS 프로세스가 프레임들의 시퀀스를 통해 애니메이션들의 디스플레이에 악영향을 미치는 것을 방지하는 데 유용할 수 있다.
프레임(131)을 선택하는 것에 대한 응답으로 또는 이와 동시에, EDS 데몬(109)은 포즈(124)를 판독한다. 프레임들(130 및 131)에 대한 프레임 드로잉 커맨드들이 생성된 이후 포즈 정보가 업데이트되어서, 포즈(124)가 시간 T2 및 시간 T1 이후의 지정된 시간 T3에 식별된 포즈 정보를 반영한다. 프레임(131)에 레코딩된 바와 같이, 시간 T3에서의 포즈와 시간 T2에서의 포즈 사이의 차이에 기반하여, EDS 데몬(109)은 데이터가 시간 T3에 포즈를 반영하도록 프레임(131)의 디스플레이 데이터에 대한 조정을 나타내는 EDS 워프(238)를 생성한다. EDS 데몬은 프레임(131)에 EDS 워프를 적용하고, 그에 의해, 디스플레이될 데이터를 안정화하고, 가상 현실 멀미 또는 사용자 경험에 대한 다른 영향들의 가능성을 감소시킨다.
위에서 표시된 바와 같이, EDS 프로세스가 디스플레이된 데이터에서의 에러들을 도입하는 것을 방지하기 위해, EDS 데몬(109)은 단지, 프레임 버퍼들(120 및 121) 중 하나에 완전히 렌더링된 프레임들만을 선택한다. 본 개시내용의 적어도 하나의 실시예에 따른 예가 도 3에서 예시된다. 특히, 도 3의 예에서, 프레임(131)은 프레임(130)의 프레임 번호(7)보다 높은 프레임 번호(8)를 가진다. 그러나, 프레임(131)의 디스플레이 데이터는 불완전하다 ― 즉, 프레임(131)에 대한 모든 디스플레이 데이터는 프레임 드로잉 데몬(108)에 의해 프레임 버퍼에 완전히 렌더링되지 않았다 ―. 프레임(131)이 완전히 렌더링되지 않았을 때 프레임(131)으로의 EDS 워프의 적용은 프레임이 디스플레이하기 위해 스캔 아웃될 때 바람직하지 않은 가시적 아티팩트들의 도입을 야기할 수 있다. 따라서, EDS 데몬은 EDS 워프(238)를 생성하여 이를 적용하기 위해 프레임(130)을 선택한다.
도 4는 본 개시내용의 적어도 하나의 실시예에 따른, GPU에 저장된 프레임들의 시퀀스로부터 프레임을 선택함으로써 HMD 시스템의 GPU에서 EDS를 수행하는 방법(400)의 흐름 다이어그램을 예시한다. 설명을 목적으로, 방법(400)은 도 1의 HMD 시스템(100)에서의 예시적 구현에 대해 설명된다. 블록(402)에서, CPU(102)는 포즈(124)를 판독하여 HMD 시스템(100)의 최근 포즈를 식별한다. 블록(404)에서, 블록(402)에서 판독된 포즈 및 다른 입력 정보에 기반하여, VR 애플리케이션(104)은 프레임을 드로잉하기 위해 프레임 드로잉 커맨드들(125)을 생성한다. GPU(106)는 프레임 드로잉 커맨드들(125)을 수신하며, 커맨드들에 기반하여, 프레임 드로잉 데몬(108)은 대응하는 프레임을 생성한다. 블록(406)에서, 프레임 드로잉 데몬(108)은 프레임에서, 프레임 드로잉 커맨드들(125)로 표시되는 바와 같이, 프레임의 프레임 번호를 저장한다. 또한, 블록(408)에서, 프레임 드로잉 데몬(108)은 프레임에서, 프레임 드로잉 커맨드들(125)로 표시되는 바와 같이, 블록(402)에서 식별된 포즈를 저장한다. 프레임 드로잉 데몬(108)은 프레임 번호 및 포즈를 포함하는 프레임을 프레임 버퍼들(120 및 121) 중 하나에 렌더링한다.
블록(410)에서, EDS 데몬(109)은 EDS 프리엠션 포인트를 식별한다. 적어도 하나의 실시예에서, EDS 프리엠션 포인트의 타이밍은 프레임 드로잉 커맨드들(125)의 생성 및 프레임 드로잉 데몬(108)에 의한 프레임의 대응하는 렌더링과 비동기적이다. 블록(412)에서, EDS 프리엠션 포인트를 식별하는 것에 대한 응답으로, EDS 데몬(109)은 프레임 버퍼들(120 및 121)에 저장된 프레임들을 리뷰하며, 프레임들로 표시되는 바와 같은, 가장 높은 프레임 번호를 가지는 완료된 프레임(즉, 프레임 버퍼에 완전히 렌더링된 프레임)을 선택한다. 블록(414)에서, EDS 데몬(109)은 선택된 프레임에 저장된 포즈 정보를 판독하고, 또한 포즈(124)를 판독하여 HMD 시스템(100)에 대한 가장 최근에 식별된 포즈를 식별한다. 블록(416)에서, 블록(414)에서 식별된 2개의 포즈들 사이의 차이에 기반하여, EDS 데몬(109)은 하나 또는 그 초과의 알려진 EDS 워프 기법들에 따라 EDS 워프를 생성한다. 블록(418)에서, EDS 데몬(109)은 선택된 프레임에 생성된 EDS 워프를 적용하고, 그에 의해, HMD 시스템(100)에서 프레임들의 디스플레이를 안정화한다.
일부 실시예들에서, 도 1의 HMD 시스템(100)은 디스플레이 패널들(110 및 112) 각각에 대한 전용 디스플레이 버퍼들을 사용하며, 각각의 디스플레이 패널에 대한 프레임들 상에서 EDS를 수행하는 것 사이에서 교번한다. 그러나, 이것은, 각각의 디스플레이 패널에 대한 마지막 프레임의 렌더링 이후에 너무 오래 발생하고, 그에 의해 지터 또는 다른 바람직하지 않은 디스플레이 에러들을 야기하는 EDS 프리엠션 포인트를 회피하기 위해 각각의 디스플레이 패널에 대한 EDS 프리엠션 포인트의 신중한 스케줄링을 요구할 수 있다. 이러한 문제는 CPU(102)에서 드로잉 커맨드 세트들의 생성에서 상응하는 가변성으로부터 발생하는 렌더링 시간들에서 가변성에 의해 악화될 수 있다. 따라서, 적어도 하나의 실시예에서, GPU(106)는 디스플레이 패널에 대한 EDS 프리엠션 포인트가 그 디스플레이 패널에 대한 렌더링 기간으로부터 떨어진 시점에서 발생하도록 디스플레이 패널들에 대한 EDS 프리엠션 포인트들을 배치한다. 본 개시내용의 적어도 하나의 실시예에 따른 예가 도 5에서 예시된다.
도 5는 GPU(106)에서의 EDS 프리엠션의 2개의 인스턴스들인 지정된 인스턴스(515) 및 인스턴스(516)를 예시한다. 인스턴스(515)에 대해, GPU는 기간(502) 동안 프레임을 좌안용 디스플레이 패널(디스플레이 패널(110))에 대한 프레임 버퍼에 렌더링한다. 추가로, GPU(106)는 기간(502)과 오버랩되는 기간(503) 동안 우안용 디스플레이 패널(디스플레이 패널(112))에 대한 EDS 프리엠션 포인트를 배치한다. 유사하게, (기간(502)의 직후의) 기간(504) 동안, GPU(106)는 프레임을 우안용 디스플레이 패널(112)에 대한 프레임 버퍼에 렌더링하며, 기간(504)과 오버랩되는 기간(505) 동안 좌안용 디스플레이 패널(110)에 대한 프리엠션 포인트를 배치한다. 기간(504) 다음에 기간(506)이 이어지며, 그 동안 GPU(106)는 프레임을 좌안용 디스플레이 패널(110)에 대한 프레임 버퍼에 렌더링한다. 또한, GPU(106)는 기간(506)과 오버랩되는 기간(507) 동안 우안용 디스플레이 패널(112)에 대한 프리엠션 포인트를 배치한다. EDS 프리엠션 포인트들 각각 동안, GPU(106)는 그 디스플레이 패널에 대한 가장 최근의 완전히 렌더링된 프레임을 사용하여 도 1에 대해 위에서 설명된 바와 같이 EDS를 수행한다. 따라서, 예컨대, 우안용 EDS 프리엠션 기간(507) 동안, GPU(106)는 기간(504) 동안 렌더링된 우안용 프레임을 사용하여 EDS를 수행한다.
디스플레이 패널의 EDS 프리엠션 포인트들을, 그들이 그 패널에 대한 대응하는 프레임 렌더링 기간으로부터 다소 떨어져 있도록 스케줄링함으로써, GPU(106)는 CPU(102)에 의해 생성된 프레임 드로잉 커맨드들의 세트들의 타이밍 및 복잡성의 변동들로부터 발생하는, 프레임 렌더링 기간들의 변동들을 고려할 수 있다. 좌안용 디스플레이 패널(110)에 대한 프레임 렌더링 기간(508)이 도 1의 프레임 렌더링 기간(502)과 비교하여 상대적으로 일찍 완료되는 인스턴스(516)에 의해 예가 예시된다. 이것은 차례로, 우안용 EDS 프리엠션 기간(510)이 프레임 렌더링 기간(508)보다는 오히려 프레임 렌더링 기간(509)과 오버랩되도록, 우안용 디스플레이 패널(112)에 대한 다음의 프레임 렌더링 기간(509)이 일찍 시작하게 한다. 추가로, 좌안용 디스플레이 패널(110)에 대한 EDS 프리엠션 포인트(511)는, 프레임 렌더링 기간(509) 이후에 발생하며, 프레임 렌더링 기간과 오버랩되지 않는다. 그러나, EDS 프리엠션 포인트들이 사전에 렌더링된 완료된 프레임을 사용하기 때문에, EDS 프리엠션 포인트들은 렌더링 시간들에 시간적으로 충분히 가깝게 발생하여 지터의 가능성이 실질적으로 감소된다.
적어도 하나의 실시예에서, GPU(106)는 EDS 프리엠션 포인트들이 언제 EDS에 대해 사용되는 프레임들로부터 시간적으로 너무 떨어지게 되는지를 식별할 수 있다. 이에 대한 응답으로, GPU(106)는 CPU(102)와 함께 또는 독립적으로 프레임 레이트 ― 즉, 그것이 프레임들을 렌더링 및 디스플레이하는 레이트 ― 를 느리게 할 수 있다. 이것은 EDS가 각각의 프레임의 디스플레이 시간으로부터 시간적으로 너무 떨어져 있을 가능성을 감소시키며, 그에 의해, EDS 프로세스의 유효성을 개선하고, 상응적으로 사용자 경험을 개선할 수 있다.
일부 실시예들에서, 위에서 설명된 기법들의 특정 양상들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 또는 그 초과의 프로세서들에 의해 구현될 수 있다.  소프트웨어는 비-일시적 컴퓨터 판독가능한 저장 매체 상에 저장되거나, 또는 그렇지 않으면 유형적으로(tangibly) 구현된 실행가능한 명령들의 하나 또는 그 초과의 세트들을 포함한다.  소프트웨어는, 하나 또는 그 초과의 프로세서들에 의해 실행될 때, 위에서 설명된 기법들의 하나 또는 그 초과의 양상들을 수행하기 위해 하나 또는 그 초과의 프로세서들을 조작하는 명령들 및 특정 데이터를 포함할 수 있다. 비-일시적 컴퓨터 판독가능한 저장 매체는, 예컨대, 자기 또는 광학 디스크 저장 디바이스, 플래시 메모리(Flash memory)와 같은 솔리드 스테이트(solid state) 저장 디바이스들, 캐시(cache), RAM(random access memory) 또는 다른 비-휘발성 메모리 디바이스 또는 디바이스들 등을 포함할 수 있다. 비-일시적 컴퓨터 판독가능한 저장 매체 상에 저장된 실행가능한 명령들은 소스 코드(source code), 어셈블리 언어 코드(assembly language code), 오브젝트 코드(object code), 또는 하나 또는 그 초과의 프로세서들에 의해 해석되거나 또는 그렇지 않으면 실행가능한 다른 명령 포맷으로 되어 있을 수 있다.
비-일시적 컴퓨터 판독가능한 저장 매체는 명령들 및/또는 데이터를 컴퓨터 시스템에 제공하기 위해, 사용 동안 컴퓨터 시스템에 의해 액세스가능한 임의의 저장 매체, 또는 저장 매체들의 조합을 포함할 수 있다. 그러한 저장 매체들은 광학 매체들(예컨대, CD(compact disc), DVD(digital versatile disc), 블루-레이 디스크(Blu-Ray disc)), 자기 매체들(예컨대, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예컨대, RAM(random access memory) 또는 캐시), 비-휘발성 메모리(예컨대, ROM(read-only memory) 또는 플래시 메모리), 또는 MEMS(microelectromechanical systems)-기반 저장 매체들을 포함할 수 있지만, 이들로 제한되는 것은 아니다. 컴퓨터 판독가능한 저장 매체는 컴퓨팅 시스템 내에 임베딩될 수 있거나(예컨대, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착될 수 있거나(예컨대, 자기 하드 드라이브), 컴퓨팅 시스템에 탈착가능하게 부착될 수 있거나(예컨대, 광학 디스크 또는 USB(Universal Serial Bus)-기반 플래시 메모리), 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 커플링될 수 있다(예컨대, NAS(network accessible storage)).
일반적 설명에서 위에서 설명된 모든 활동들 또는 엘리먼트들이 요구되는 것은 아니고, 특정 활동 또는 디바이스의 일부분이 요구되지 않을 수 있으며, 설명된 것들 이외에 하나 또는 그 초과의 추가적 활동들이 수행될 수 있거나 또는 엘리먼트들이 포함될 수 있다는 점이 주목된다. 여전히 추가로, 활동들이 열거되는 순서가 반드시 활동들이 수행되는 순서는 아니다. 또한, 개념들은 특정 실시예들을 참조하여 설명되었다. 그러나, 당업자는 아래의 청구항들에서 기재되는 바와 같은 본 개시내용의 범위로부터 벗어나지 않으면서 다양한 수정들 및 변화들이 이루어질 수 있다는 것을 인식한다. 따라서, 명세서 및 도면들은 제한적 의미가 아니라, 예시적 의미로 간주되어야 하고, 모든 그러한 수정들은 본 개시내용의 범위 내에 포함되도록 의도된다.
이익들, 다른 이점들 및 문제들에 대한 솔루션들은 특정 실시예들에 대해 위에서 설명되었다. 그러나, 이익들, 이점들, 문제들에 대한 솔루션들, 및 임의의 이익, 이점 또는 솔루션이 발생하게 하거나 또는 더 확연해지게(pronounced) 할 수 있는 임의의 특징(들)은 임의의 또는 모든 청구항들의 중요하거나, 요구되거나, 또는 필수적인 특징들로서 해석되지 않아야 한다. 더욱이, 개시되는 청구 대상은 본원에서의 교시 사항들의 이익을 가지는 당업자들에게 명백한 상이하지만 동등한 방식들로 수정 및 실시될 수 있으므로, 위에서 개시된 특정 실시예들은 예시적일 뿐이다. 아래의 청구항들에서 설명되는 것 이외에, 본원에서 도시되는 구성 또는 설계의 세부사항들에 대해 어떠한 제한들도 의도되지 않는다. 그러므로, 위에서 개시된 특정 실시예들은 변경되거나 또는 수정될 수 있고, 모든 그러한 변동들은 개시되는 청구 대상의 범위 내에서 고려된다는 것이 분명하다. 따라서, 본원에서 추구되는 보호는 아래의 청구항들에서 기재되는 바와 같다.

Claims (20)

  1. HMD(head mounted display) 시스템[100]에서 구현되는 방법으로서,
    상기 HMD 시스템의 제1 포즈[124]에 기반하여, 디스플레이하기 위한 복수의 프레임들의 첫 번째 프레임[131]을 생성하는 단계;
    상기 HMD 시스템의 GPU(graphics processing unit)[106]에서, 상기 복수의 프레임들의 시퀀스 내의 상기 첫 번째 프레임의 포지션을 표시하는 첫 번째 프레임 번호[132]에 기반하여 상기 첫 번째 프레임[132]을 선택하는 단계; 및
    상기 GPU에서, 상기 HMD 시스템의 상기 제1 포즈 및 제2 포즈에 기반하여 선택된 첫 번째 프레임에 제1 EDS(electronic display stabilization) 워프(warp)[238]를 적용하는 단계를 포함하고,
    상기 제2 포즈는 상기 제1 포즈 이후에 발생하는, HMD 시스템[100]에서 구현되는 방법.
  2. 제1 항에 있어서,
    상기 복수의 프레임들의 첫 번째 프레임을 생성하는 단계는, 상기 HMD 시스템의 CPU(central processing unit)[102]에서, 커맨드들[125]의 세트를 생성하는 단계를 포함하고; 그리고
    상기 첫 번째 프레임을 선택하는 단계는, 상기 GPU에서, 상기 CPU가 상기 커맨드들의 세트를 생성하는 것과 비동기적으로 상기 첫 번째 프레임을 선택하는 단계를 포함하는, HMD 시스템[100]에서 구현되는 방법.
  3. 제1 항에 있어서,
    상기 첫 번째 프레임을 선택하는 단계는,
    상기 첫 번째 프레임에 저장된 프레임 번호 정보에 기반하여 상기 첫 번째 프레임 번호를 식별하는 단계를 포함하는, HMD 시스템[100]에서 구현되는 방법.
  4. 제1 항에 있어서,
    상기 첫 번째 프레임을 선택하는 단계는,
    상기 첫 번째 프레임이 프레임 버퍼로 완전히 렌더링되었다는 표시에 추가로 기반하여 상기 첫 번째 프레임을 선택하는 단계를 포함하는, HMD 시스템[100]에서 구현되는 방법.
  5. 제1 항에 있어서,
    상기 제1 EDS 워프를 적용하는 단계는,
    상기 첫 번째 프레임에 저장된 정보[133]에 기반하여 상기 제1 포즈를 식별하는 단계를 포함하는, HMD 시스템[100]에서 구현되는 방법.
  6. 제1 항에 있어서,
    상기 HMD 시스템의 제3 포즈에 기반하여, 상기 복수의 프레임들의 두 번째 프레임[130]을 생성하는 단계;
    상기 GPU에서, 상기 복수의 프레임들의 시퀀스 내의 상기 두 번째 프레임의 포지션을 표시하는 두 번째 프레임 번호에 기반하여 상기 두 번째 프레임을 선택하는 단계; 및
    상기 GPU에서, 상기 HMD 시스템의 상기 제3 포즈와 제4 포즈에 기반하여 선택된 두 번째 프레임에 제2 EDS 워프를 적용하는 단계를 더 포함하고,
    상기 제4 포즈는 상기 제3 포즈 이후에 발생하는, HMD 시스템[100]에서 구현되는 방법.
  7. 제6 항에 있어서,
    상기 첫 번째 프레임은 상기 HMD 시스템의 좌안용(left-eye) 디스플레이 패널[110]에 디스플레이하기 위한 프레임을 포함하고, 상기 두 번째 프레임은 상기 HMD 시스템의 우안용(right-eye) 디스플레이 패널[112]에 디스플레이하기 위한 프레임을 포함하는, HMD 시스템[100]에서 구현되는 방법.
  8. 방법으로서,
    HMD(head mounted display) 시스템[100]의 GPU(graphics processing unit)[106]에서, 상기 HMD 시스템의 CPU(central processing unit)[102]로부터 수신된 커맨드들[125]에 기반하여 디스플레이하기 위한 복수의 프레임들을 렌더링하는 단계; 및
    상기 복수의 프레임들을 렌더링하는 것과 비동기적으로, EDS(electronic display stabilization) 워프[238]의 적용을 위해 상기 복수의 프레임들의 첫 번째 프레임[131]을 선택하는 단계를 포함하는, 방법.
  9. 제8 항에 있어서,
    상기 첫 번째 프레임을 선택하는 단계는 상기 프레임에 저장된 프레임 번호[132]에 기반하여 상기 첫 번째 프레임을 선택하는 단계를 포함하고,
    상기 프레임 번호는 프레임들의 시퀀스 내의 상기 첫 번째 프레임의 순서를 표시하는, 방법.
  10. 제9 항에 있어서,
    상기 첫 번째 프레임을 선택하는 단계는 상기 첫 번째 프레임이 상기 HMD 시스템의 프레임 버퍼로 완전히 렌더링되었다는 표시에 기반하여 상기 프레임을 선택하는 단계를 더 포함하는, 방법.
  11. 제8 항에 있어서,
    상기 첫 번째 프레임에 저장된 포즈 정보에 기반하여 상기 첫 번째 프레임과 연관된 상기 HMD 시스템의 제1 포즈[124]를 식별하는 단계; 및
    상기 제1 포즈에 기반하여 상기 EDS 워프를 적용하는 단계를 더 포함하는, 방법.
  12. 제11 항에 있어서,
    상기 GPU에서, 상기 HMD 시스템의 제2 포즈를 식별하는 단계를 더 포함하고,
    상기 EDS 워프를 적용하는 단계는 상기 제1 포즈와 상기 제2 포즈 사이의 차이에 기반하여 상기 EDS 워프를 적용하는 단계를 더 포함하는, 방법.
  13. 제12 항에 있어서,
    상기 제2 포즈를 식별하는 단계는 상기 제1 포즈를 식별한 이후에 상기 제2 포즈를 식별하는 단계를 포함하는, 방법.
  14. HMD(head mounted display) 시스템[100]으로서,
    상기 HMD 시스템의 제1 포즈[124]에 기반하여, 디스플레이하기 위한 복수의 프레임들의 첫 번째 프레임[131]을 생성하기 위한 커맨드들[125]의 세트를 생성하는 CPU(central processing unit)[102]; 및
    GPU(graphics processing unit)[106]를 포함하고,
    상기 GPU[106]는,
    상기 복수의 프레임들의 시퀀스 내의 상기 첫 번째 프레임의 포지션을 표시하는 첫 번째 프레임 번호[132]에 기반하여 상기 첫 번째 프레임을 선택하고; 그리고
    상기 HMD 시스템의 상기 제1 포즈 및 제2 포즈에 기반하여 선택된 첫 번째 프레임에 제1 EDS(electronic display stabilization) 워프[238]를 적용하고,
    상기 제2 포즈는 상기 제1 포즈 이후에 발생하는, HMD 시스템[100].
  15. 제14 항에 있어서,
    상기 GPU는 상기 CPU가 상기 커맨드들의 세트를 생성하는 것과 비동기적으로 상기 첫 번째 프레임을 선택하는, HMD 시스템[100].
  16. 제14 항에 있어서,
    상기 GPU는 상기 첫 번째 프레임에 저장된 프레임 번호 정보에 기반하여 상기 첫 번째 프레임 번호를 식별하는, HMD 시스템[100].
  17. 제14 항에 있어서,
    상기 GPU는 상기 첫 번째 프레임 번호에 기반하여 그리고 상기 첫 번째 프레임이 상기 HMD 시스템의 프레임 버퍼로 완전히 렌더링되었다는 표시에 기반하여 상기 첫 번째 프레임을 선택하는, HMD 시스템[100].
  18. 제14 항에 있어서,
    상기 GPU는 상기 첫 번째 프레임에 저장된 정보[133]에 기반하여 상기 제1 포즈를 식별하는, HMD 시스템[100].
  19. 제14 항에 있어서,
    상기 GPU는,
    상기 HMD 시스템의 제3 포즈에 기반하여, 상기 복수의 프레임들의 두 번째 프레임[130]을 생성하고;
    상기 복수의 프레임들의 시퀀스 내의 상기 두 번째 프레임의 포지션을 표시하는 두 번째 프레임 번호에 기반하여 상기 두 번째 프레임을 선택하고; 그리고
    상기 HMD 시스템의 상기 제3 포즈와 제4 포즈에 기반하여 선택된 두 번째 프레임에 제2 EDS 워프를 적용하고,
    상기 제4 포즈는 상기 제3 포즈 이후에 발생하는, HMD 시스템[100].
  20. 제19 항에 있어서,
    좌안용 디스플레이 패널[110]; 및
    우안용 디스플레이 패널[112]을 더 포함하고,
    상기 첫 번째 프레임은 상기 HMD 시스템의 좌안용 디스플레이 패널에 디스플레이하기 위한 프레임을 포함하고, 상기 두 번째 프레임은 상기 HMD 시스템의 우안용 디스플레이 패널에 디스플레이하기 위한 프레임을 포함하는, HMD 시스템[100].
KR1020187014757A 2016-02-09 2016-12-19 그래픽 프로세싱 유닛에서의 전자 디스플레이 안정화 KR102093619B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/018,941 US10089725B2 (en) 2016-02-09 2016-02-09 Electronic display stabilization at a graphics processing unit
US15/018,941 2016-02-09
PCT/US2016/067517 WO2017139026A1 (en) 2016-02-09 2016-12-19 Electronic display stabilization at a graphics processing unit

Publications (2)

Publication Number Publication Date
KR20180072806A true KR20180072806A (ko) 2018-06-29
KR102093619B1 KR102093619B1 (ko) 2020-03-26

Family

ID=57796994

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187014757A KR102093619B1 (ko) 2016-02-09 2016-12-19 그래픽 프로세싱 유닛에서의 전자 디스플레이 안정화

Country Status (6)

Country Link
US (1) US10089725B2 (ko)
EP (1) EP3414754A1 (ko)
JP (1) JP6648385B2 (ko)
KR (1) KR102093619B1 (ko)
CN (1) CN108885851B (ko)
WO (1) WO2017139026A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10580200B2 (en) * 2017-04-07 2020-03-03 Intel Corporation Virtual reality apparatus and method including prioritized pixel shader operations, alternate eye rendering, and/or augmented timewarp
US10204394B2 (en) * 2017-04-10 2019-02-12 Intel Corporation Multi-frame renderer
US11049211B2 (en) 2017-07-06 2021-06-29 Channel One Holdings Inc. Methods and system for asynchronously buffering rendering by a graphics processing unit
KR102604738B1 (ko) 2017-12-22 2023-11-22 삼성전자주식회사 와핑 처리를 수행하는 그래픽 프로세서, 이를 포함하는 렌더링 시스템 및 그래픽 프로세서 동작방법
US10650791B2 (en) 2017-12-28 2020-05-12 Texas Instruments Incorporated Display system
CA3044477A1 (en) * 2018-06-01 2019-12-01 Gregory Szober Display buffering methods and systems
US10520739B1 (en) 2018-07-11 2019-12-31 Valve Corporation Dynamic panel masking
US11164496B2 (en) 2019-01-04 2021-11-02 Channel One Holdings Inc. Interrupt-free multiple buffering methods and systems
US10802287B2 (en) * 2019-01-14 2020-10-13 Valve Corporation Dynamic render time targeting based on eye tracking
JP6655751B1 (ja) * 2019-07-25 2020-02-26 エヌ・ティ・ティ・コミュニケーションズ株式会社 映像表示制御装置、方法およびプログラム
US20210192681A1 (en) * 2019-12-18 2021-06-24 Ati Technologies Ulc Frame reprojection for virtual reality and augmented reality

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004109994A (ja) * 2002-08-30 2004-04-08 Olympus Corp 頭部装着型画像表示システム装置及びその画像処理方法
WO2015068656A1 (ja) * 2013-11-11 2015-05-14 株式会社ソニー・コンピュータエンタテインメント 画像生成装置および画像生成方法
US20150310665A1 (en) * 2014-04-29 2015-10-29 Ashraf Ayman Michail Stabilization plane determination based on gaze location
JP2016019199A (ja) * 2014-07-10 2016-02-01 Kddi株式会社 予測カメラ姿勢に基づくarオブジェクトを実時間に合わせて描画する情報装置、プログラム及び方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4241709B2 (ja) * 2005-10-11 2009-03-18 ソニー株式会社 画像処理装置
JP4734640B2 (ja) * 2006-02-10 2011-07-27 国立大学法人岐阜大学 仮想現実画像表示装置
US20100149073A1 (en) * 2008-11-02 2010-06-17 David Chaum Near to Eye Display System and Appliance
WO2009126264A2 (en) * 2008-04-06 2009-10-15 David Chaum Proximal image projection system
JP5047090B2 (ja) * 2008-07-31 2012-10-10 キヤノン株式会社 システム
US8957835B2 (en) * 2008-09-30 2015-02-17 Apple Inc. Head-mounted display apparatus for retaining a portable electronic device with display
AU2011220382A1 (en) 2010-02-28 2012-10-18 Microsoft Corporation Local advertising content on an interactive head-mounted eyepiece
US8692845B2 (en) 2010-10-28 2014-04-08 Eastman Kodak Company Head-mounted display control with image-content analysis
US8594381B2 (en) 2010-11-17 2013-11-26 Eastman Kodak Company Method of identifying motion sickness
US8976086B2 (en) 2010-12-03 2015-03-10 Esight Corp. Apparatus and method for a bioptic real time video system
JP2013026952A (ja) * 2011-07-25 2013-02-04 Sony Corp 画像処理方法、エンコード装置、デコード装置および画像処理装置
US10137361B2 (en) * 2013-06-07 2018-11-27 Sony Interactive Entertainment America Llc Systems and methods for using reduced hops to generate an augmented virtual reality scene within a head mounted system
US9443355B2 (en) * 2013-06-28 2016-09-13 Microsoft Technology Licensing, Llc Reprojection OLED display for augmented reality experiences
CN107430786A (zh) 2015-06-12 2017-12-01 谷歌公司 用于头戴式显示器的电子显示稳定
US9832451B2 (en) * 2015-11-17 2017-11-28 Survios, Inc. Methods for reduced-bandwidth wireless 3D video transmission

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004109994A (ja) * 2002-08-30 2004-04-08 Olympus Corp 頭部装着型画像表示システム装置及びその画像処理方法
WO2015068656A1 (ja) * 2013-11-11 2015-05-14 株式会社ソニー・コンピュータエンタテインメント 画像生成装置および画像生成方法
US20150310665A1 (en) * 2014-04-29 2015-10-29 Ashraf Ayman Michail Stabilization plane determination based on gaze location
JP2016019199A (ja) * 2014-07-10 2016-02-01 Kddi株式会社 予測カメラ姿勢に基づくarオブジェクトを実時間に合わせて描画する情報装置、プログラム及び方法

Also Published As

Publication number Publication date
JP2019503615A (ja) 2019-02-07
CN108885851B (zh) 2022-04-29
US20170228855A1 (en) 2017-08-10
JP6648385B2 (ja) 2020-02-14
EP3414754A1 (en) 2018-12-19
US10089725B2 (en) 2018-10-02
CN108885851A (zh) 2018-11-23
KR102093619B1 (ko) 2020-03-26
WO2017139026A1 (en) 2017-08-17

Similar Documents

Publication Publication Date Title
KR102093619B1 (ko) 그래픽 프로세싱 유닛에서의 전자 디스플레이 안정화
CN110402425B (zh) 具有彩色虚拟内容扭曲的混合现实系统及使用该系统生成虚拟内容的方法
JP7442608B2 (ja) 仮想現実および拡張現実ディスプレイシステムのための連続時間ワーピングおよび両眼時間ワーピングおよび方法
KR102564801B1 (ko) 그래픽 처리 시스템
CN110431599B (zh) 具有虚拟内容扭曲的混合现实系统及使用该系统生成虚拟内容的方法
US11087540B2 (en) Light-field viewpoint and pixel culling for a head mounted display device
KR20150091474A (ko) 멀티 디스플레이 장치 상에서의 로우 레이턴시 이미지 디스플레이 기법
JP2023015119A (ja) 前の目線からのレンダリングされたコンテンツおよびレンダリングされなかったコンテンツを使用した新しいフレームの生成
WO2020003860A1 (ja) 情報処理装置、情報処理方法、及びプログラム
JP2008090818A (ja) 効率的にモーションブラー効果を提供する3次元グラフィックスレンダリング方法及び装置
US20210377515A1 (en) Information processing device, information processing method, and program
US9478068B2 (en) Computer-readable medium, image processing device, image processing system, and image processing method
CN112470464B (zh) 场顺序显示器中的场内子码时序
WO2021040010A1 (ja) 情報処理装置、制御方法
US10317991B2 (en) Pixel adjusting at display controller for electronic display stabilization
WO2021070692A1 (ja) 表示制御装置、表示制御方法および表示制御プログラム
JP2006338163A (ja) 仮想現実感提示装置及び仮想現実感提示方法、並びにプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right