KR102564801B1 - 그래픽 처리 시스템 - Google Patents

그래픽 처리 시스템 Download PDF

Info

Publication number
KR102564801B1
KR102564801B1 KR1020180069954A KR20180069954A KR102564801B1 KR 102564801 B1 KR102564801 B1 KR 102564801B1 KR 1020180069954 A KR1020180069954 A KR 1020180069954A KR 20180069954 A KR20180069954 A KR 20180069954A KR 102564801 B1 KR102564801 B1 KR 102564801B1
Authority
KR
South Korea
Prior art keywords
frame
rendered
view
data
display
Prior art date
Application number
KR1020180069954A
Other languages
English (en)
Other versions
KR20180138181A (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 KR20180138181A publication Critical patent/KR20180138181A/ko
Application granted granted Critical
Publication of KR102564801B1 publication Critical patent/KR102564801B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/1423Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/003Reconstruction from projections, e.g. tomography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/698Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20228Disparity calculation for image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30242Counting objects in image

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Geometry (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)

Abstract

씬의 제1 포워드 뷰를 나타내는 제1 프레임을 렌더링하는 것과 아울러, 그래픽 처리 시스템은, 상이한 시점 및/또는 뷰 방향에 근거하여 상기 씬의 또 다른 뷰를 각각 나타내는 하나 이상의 또 다른 버전들의 상기 제1 프레임을 렌더이한다. 그리고, 상기 제1 프레임 및/또는 상기 하나 이상의 또 다른 버전들의 하나 이상에 대해 “타임워프”및/또는 “스페이스워프”처리가 실시되어 표시용 출력 “타임워프된”및/또는 “스페이스워프된”화상을 생성할 수도 있다.

Description

그래픽 처리 시스템{GRAPHICS PROCESSING SYSTEMS}
본 발명은, 그래픽 처리 시스템에 관한 것으로, 특히 가상현실(VR) 및/또는 증강현실(AR)(헤드 장착) 표시 시스템용 디스플레이를 위한 화상들을 제공하는 그래픽 처리 시스템에 관한 것이다.
도 1은 중앙처리장치(CPU) 1, 그래픽 처리 장치(GPU) 2, 표시 제어기4, 및 메모리 제어기6으로 이루어진 호스트 프로세서를 구비하는 시스템 온칩(SoC) 그래픽 처리 시스템10의 일례를 도시한 것이다. 그래픽 처리 시스템10의 예는, 비디오 엔진 3도 구비한다. 도 1에 도시된 것처럼, 이들의 장치들은 인터커넥트5를 통해 통신하고 오프칩 메모리7에 액세스한다. 이 시스템에서, 그래픽 처리 장치(GPU)2는 프레임들(화상들)을 표시되게 하고 나서, 상기 표시 제어기4는 그 프레임들을 표시 패널8에 제공하여 표시한다.
이 시스템의 사용시에, 상기 호스트 프로세서(CPU)1상에서 실행하는 게임과 같은 애플리케이션은, 예를 들면, 상기 디스플레이 8상에 프레임들의 표시를 필요로 한다. 이를 행하기 위해서, 상기 애플리케이션은, 적절한 코맨드들과 데이터를 상기 CPU 1상에 실행중인 그래픽 처리 장치(GPU) 2용 드라이버에 제출한다. 그리고, 그 드라이버는 적절한 코맨드들과 데이터를 생성하여서 그 그래픽 처리 장치(GPU)2에 대해 표시용 적절한 프레임들을 렌더링시켜 그 프레임들을 적절한 프레임 버퍼들, 예를 들면 주 메모리 7)에 저장시킨다. 그리고, 표시 제어기 4는, 그 프레임들을 상기 표시용 버퍼에 판독하고나서 이 버퍼로부터 판독되어 상기 표시의 표시 패널 8상에 표시한다.
그래픽 처리 시스템10은 표시용 프레임들을 제공하도록 구성되고, 이에 대응하게, 상기 그래픽 처리 장치(GPU) 2는 적절한 속도로, 이를테면 초당 30프레임으로 프레임들을 렌더링하도록 구성된다.
도 1에 도시된 것과 같은 그래픽 처리 시스템의 이용 예는, 가상현실(VR) 또는 증강현실(AR) 헤드 장착 디스플레이(HMD) 시스템을 제공하는 것이다. 이 경우에 상기 디스플레이 8은 일종의 헤드 장착 디스플레이다.
헤드 장착 디스플레이 동작에 있어서, 각 눈에 표시되는 적절한 프레임들(화상들)은, 상기 애플리케이션, 이를테면 상기 디스플레이를 필요로 하는 게임(예를 들면, CPU 1상에서 실행중임)으로부터 적절한 코맨드들과 데이터에 응답하여 상기 그래픽 처리 장치(GPU) 2에 의해 렌더링된다.
이러한 구성에서, 상기 시스템은, 또한, 헤드의 이동/유저의 응시를 추적하도록(소위 헤드 포즈(방향) 추적) 동작한다. 그리고, 이 헤드 방향(포즈) 데이터를 사용하여 그 화상들이 현재의 헤드 위치(뷰 방향(포즈)에 대한 유저에게 실제로 어떻게 표시되는지를 결정하고, 이에 따라 그 화상들(프레임들)을 (예를 들면, 상기 헤드 방향 데이터에 근거하여 카메라 방향(뷰포인트와 뷰 방향)을 설정함으로써) 렌더링하여, 유저의 현재의 뷰 방향에 근거하여 적절한 화상(프레임)을 표시할 수 있다.
가상현실(VR) 또는 증강현실(AR) 시스템에서 표시되는 프레임을 렌더링하는 그래픽 처리 장치(GPU) 2의 시작에서 헤드 방향(포즈)을 결정하고 나서, 렌더링되었다면 그 프레임으로 상기 디스플레이 8을 갱신하는 것이 간단할 것이지만, 렌더링 프로세스에서 지연 때문에, 유저의 헤드 방향(포즈)은 상기 프레임의 렌더링의 초기의 헤드 방향(포즈)의 감지와 실제로 그 프레임을 표시(상기 디스플레이 8에 대해 스캔 아웃)할 때의 시간과의 사이에서 변경된다고 말할 수 있다. 게다가, 그래픽 처리장치(GPU) 2가 프레임들을 렌더링할 수 있을 가능성이 있는 것보다 빠른 속도로 가상현실(VR) 또는 증강현실(AR) 시스템에서 표시하기 위한 프레임들을 제공할 수 있는 것이 바람직한 경우가 많다.
이를 고려하여, "타임워프(timewarp)"로서 알려진 프로세스는, 헤드 장착 표시 시스템을 위해 제안되어 있었다. 이 프로세스에서, 먼저 "애플리케이션" 프레임은, 이 프레임을 렌더링하는 상기 그래픽 처리 장치(GPU) 2의 초기에 감지된 상기 헤드 방향(포즈) 데이터에 근거하여 상기 그래픽 처리 장치(GPU) 2에 의해 렌더링되지만, 화상이 실제로 상기 디스플레이 8에 표시되기 전에, 또 다른 헤드 방향(포즈) 데이터가 감지되고, 그 갱신된 헤드 방향(포즈) 센서 데이터는 상기 갱신된 헤드 방향(포즈) 데이터를 고려하는 상기 애플리케이션 프레임의 "갱신" 버전을 생성하기 위해 상기 그래픽 처리 장치(GPU) 2가 렌더링한 애플리케이션 프레임을 변환하는데 사용된다. 그리고, 상기 애플리케이션 프레임의 "타임워프된" 갱신 버전을 상기 디스플레이 8에 표시한다.
그래픽 처리 장치(GPU) 2가 렌더링한 애플리케이션 프로그램을 "타임워프"하는데 필요한 처리는, 일반적으로, 그래픽 처리 장치(GPU) 2가 프레임을 렌더링하는데 필요한 시간보다 훨씬 짧은 시간내에 행해질 수 있다. 따라서, "타임워프" 처리를 행함으로써, 감지되는 헤드 방향(포즈) 데이터와 상기 감지된 헤드 방향(포즈) 데이터를 사용하여 갱신되는 상기 디스플레이 8상에 표시된 화상과의 사이의 시간은, 그래픽 처리 장치(GPU) 2가 "타임워프" 처리 없이 상기 디스플레이 8에 표시될 각 화상을 직접 렌더링하는 것과 비교하여 감소될 수 있다. 이것의 효과는, "타임워프" 처리를 사용함으로써, 상기 디스플레이 8에 표시된 화상이 유저의 최근 헤드 방향(포즈)과 보다 근접하게 일치할 수 있어, 예를 들면, 가상현실(VR) 또는 증강현실(AR) 경험을 보다 실현적으로 될 수 있다.
마찬가지로, "타임워프" 처리는, 그래픽 처리 장치(GPU) 2가 프레임들, 이를테면 초당 30프레임으로 렌더링할 수 있을 가능성이 있는 것보다 빠른 속도, 이를테면 초당 90 또는 120 프레임으로 행해질 수 있다. 따라서, "타임워프" 처리를 사용하여, 이와는 달리 "타임워프" 처리를 사용하지 않고 가능한 것보다 빠른 속도로 감지된 헤드 방향(포즈)에 근거하여 갱신되어 있던 표시용 프레임들을 제공할 수 있다. 이는 "저더(judder)" 아티팩트를 감소시키는데 도움이 될 수 있고, 보다 부드러운 가상현실(VR) 또는 증강현실(AR) 경험 등을 제공할 수 있다.
도 2, 3 및 4는, 상기 "타임워프" 프로세스를 보다 상세히 도시한 것이다.
도 2는 뷰어가 바로 앞을 보고 있을 때의 프레임 20 예와, 유저의 시각이 헤드 회전으로 인해 변경할 때의 그 프레임 21의 필요한 "타임워프" 투영의 표시를 도시한 것이다. 도 2로부터 알 수 있는 것은, 상기 프레임 21에 대해서는, 상기 프레임 20의 변경된 버전을 표시해야 한다는 것이다.
이에 대응하게, 도 3은 표시를 위해 상기 "타임워프된" 프레임들 32을 제공하기 위해 애플리케이션 프레임들 30의 "타임워프" 렌더링 31을 도시한 것이다. 도 3에 도시된 것처럼, 렌더링되어 있던 주어진 애플리케이션 프레임 30은 새로운 애플리케이션 프레임이 렌더링되는 것을 기다리는 동안에 연속적인 간격으로 상기 애플리케이션 프레임 30의 적절한 "타임워프된" 버전 32를 표시하기 위한 2개(이상) "타임워프" 프로세스들 31이 실시되어도 된다. "타임워프" 처리 31은 "비동기 타임워프"(ATW) 처리라고 하는 애플리케이션 프레임 30의 렌더링(에 대한 상이한 쓰레드를 사용하여) 병렬로(즉, 비동기적으로) 행해질 수 있다.
또한, 도 3은 애플리케이션 프레임 30에 대해 적용되어야 하는 적절한 "타임워프"변형을 결정하여 그 프레임을 그들의 헤드 방향(포즈)에 근거하여 유저에게 표시하는데 사용되는 헤드 방향(포즈) 데이터의 레귤러 샘플링 33을 도시한 것이다.
도 4는 애플리케이션 프레임 40을 "타임워프"함으로써 표시하기 위해 생성된 4개의 각각의 "타임워프된" 프레임들 41A-D와 함께 렌더링된 애플리케이션 프레임 40의 예에 대한 개략적인 설명을 도시한 것이다. 그래픽 처리 장치(GPU) 2가 렌더링한 애플리케이션 프레임 데이터가 헤드 이동 가능한 범위에 대해 "타임워프되게" 이용 가능한 것을 보장하도록, 애플리케이션 프레임들은 상기 그래픽 처리 장치(GPU) 2에 의해 실제로 유저에게 표시되는 출력 "타임워프된" 프레임들의 시야보다 넓은 시야에 근거하여 렌더링되는 것이 일반적이다. 애플리케이션 프레임의 시야는, 예를 들면, 상기 애플리케이션 프레임이 유효하다고 하는 기간에 허가된 또는 예상된(최대) 헤드 움직임(예를 들면, 회전 및/또는 병진운동) 양에 기초하여도 된다. 그리고, 상기 애플리케이션 프레임을 표시할 때, "타임워프" 프로세스를 사용하여, 효과적으로 상기 애플리케이션 프레임의 보다 넓은 시야로부터 취해진 적절한 윈도우("레터박스")를 렌더링한다. 따라, 도 4의 개략적인 예에 있어서, 애플리케이션 프레임 40은, 16x8 평방 시야에 근거한 씬을 렌더링하여서 제공되지만, "타임워프된" 프레임들 41A-D는 표시를 위해 상기 보다 넓은 시양로부터 취해진 5x4평방 시야만으로 제공된다.
또한, 각 "타임워프된" 프레임은, 예를 들면, 상술한 것처럼, 사용을 위해 표시되는 실제의 출력 화상을 제공하는 보다 최근의 헤드 방향(포즈) 정보에 근거하여, 변환된다("타임워프된다"). 따라서, 도 4의 예에 도시된 것처럼, 헤드 방향(포즈)의 변화가 검출될 때, 애플리케이션 프레임 40은, 오브젝트 42가, 헤드 방향(포즈)의 변화가 검출되지 않을 때(41A)와 비교하여, "타임워프된" 프레임들 41B-D에서 적절하게 시프트된 위치에 나타나도록, 변환된다. 따라서, 도 4에 도시된 것처럼, 헤드의 우측 이동이 검출될 때, 오브젝트 42는 좌측으로 시프트되는 것이 나타나고(41B); 헤드의 우측으로의 보다 큰 이동이 검출될 때, 오브젝트 42는 좌측으로 보다 멀리 시프트되는 것이 나타나고(41C); 및 헤드의 좌측으로의 이동이 검출될 때, 오브젝트 42는, 헤드 방향(포즈)의 변화가 검출되지 않을 때(41A)와 비교하여, 우측으로 시프트되는 것이 나타난다(41D).
따라서, "타임워프" 처리에 있어서, 먼저, 애플리케이션 프레임은, 애플리케이션 프레임을 렌더링하는 초기에 감지된 제1 뷰 방향(포즈)에 근거하여 렌더링되기 때문에, 필수적으로 상기 제1 뷰 방향(포즈)이 감지되었던 시점에서 유저에게 보이는 것처럼 렌더링되는 상기 씬의 정적 "스냅샷"을 나타낸다. 그리고, "타임워프" 처리를 사용하여, 하나 이상의 각각의 나중의 시점에 감지된 하나 이상의 제2 뷰 방향(포즈)에 근거하여 상기 정적 "스냅샷" 애플리케이션 프레임을 갱신(변환)하여, 그 애플리케이션 프레임을 렌더링한 후에, 그 각각의 나중의 시점에서 상기 씬의 갱신된 뷰를 각각 나타내는 일련의 하나 이상의 연속적인 "타임워프된" 프레임들을 제공할 수 있다.
상기 제1 뷰 헤드 방향(포즈)을 감지하는 시점과 각각의 제2 뷰 방향(포즈)을 감지하는 시점 사이의 기간동안에, 상기 "타임워프" 처리가 뷰 방향(포즈)에 대한 변화를 고려하지만, 동일한 기간동안에 상기 씬내의 오브젝트들의 이동으로 인한 어떠한 변화도 고려하지 않고, 그래서 "타임워프된" 프레임들이 보이지 않는다는 것을 인식하고 있다. 이것이 의미하는 것은, 동적 씬, 즉 이동 오브젝트를 포함하는 씬을 나타내는 렌더링된 애플리케이션 프레임의 "타임워프" 처리가, 유저에게 표시되는 것에 있어서 왜곡을 도입할 수 있다는 것이다.
"타임워프" 처리를 행할 때 오브젝트 움직임을 고려하기 위해서, "스페이스워프(spacewarp)" 처리로서 알려진 프로세스를 제안하였다. 이 프로세스는, 예상된, 나중의 시점에서의 위치들에 대해 상기 애플리케이션 프레임에 도시된 이동 오브젝트들을 외삽함으로써, 상기 나중의 시점에서 감지된 뷰 방향(포즈)에 근거하여 애플리케이션 프레임을 "타임워프"하여서 "타임워프된" 프레임을 생성할 때 어떠한 오브젝트들의 움직임도 고려하려고 하고, 이때 상기 "타임워프" 처리는 상기 외삽 오브젝트들에 기초하여 행해진다. 그리고, 그 "타임워프된" 및 "스페이스워프된" 상기 애플리케이션 프레임의 갱신된 버전은 상기 디스플레이 8상에 표시된다.
출원인이 믿는 것은, 그래픽 처리 시스템, 특히 가상현실(VR) 및/또는 증강현실(AR)(헤드 장착) 표시 시스템의 표시를 위해 "타임워프된" 및/또는 "스페이스워프된" 화상들을 제공하는 그래픽 처리 시스템에 개선의 여지가 남아 있다는 것이다.
본 발명의 제1 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 생성하는 그래픽 처리 시스템의 동작방법을 제공하고, 이 방법은,
제1 시점에서, 제1 뷰포인트로부터 및 제1 뷰 방향으로, 씬의 제1 뷰를 나타내는 제1 프레임을 렌더링하는 단계;
상기 렌더링된 제1 프레임으로부터 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하기 전에, 상기 제1 시점 후의 또 다른 시점에서 및/또는, 또 다른 뷰포인트 및/또는 또 다른 뷰 방향으로, 상기 씬의 또 다른 뷰를 나타내는 각각의 또 다른 버전인, 상기 제1 프레임의 하나 이상의 또 다른 버전들을 렌더링하는 단계;
상기 렌더링된 제1 프레임 및 상기 제1 프레임의 하나 이상의 렌더링된 또 다른 버전들로부터 표시용 출력 프레임을 생성하는데 사용하는 렌더링된 데이터를 선택하는 단계; 및 상기 선택된 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하는 단계를 포함한다.
본 발명의 제2 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 처리회로에 의해 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 처리회로에 의해 생성하도록 구성된, 그래픽 처리 시스템을 제공하고;
상기 그래픽 처리 시스템은, 제1 시점에서, 제1 뷰포인트로부터 및 제1 뷰 방향으로, 씬의 제1 뷰를 나타내는 제1 렌더링을 처리회로에 의해 렌더링하고,
상기 렌더링된 제1 프레임으로부터 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하기 전에, 상기 제1 시점 후의 또 다른 시점에서 및/또는, 또 다른 뷰포인트 및/또는 또 다른 뷰 방향으로, 상기 씬의 또 다른 뷰를 나타내는 각각의 또 다른 버전인, 상기 제1 프레임의 하나 이상의 또 다른 버전들을 처리회로에 의해 렌더링하고 나서,
상기 렌더링된 제1 프레임 및 상기 제1 프레임의 상기 하나 이상의 렌더링된 또 다른 버전들로부터 표시용 출력 프레임을 생성하는데 사용하는 렌더링된 데이터를 선택하고, 상기 선택된 렌더링된 데이터를 사용하여 표시용 출력 프레임을 처리회로에 의해 생성하도록 더 구성된다.
본 발명은, 수신된 뷰(헤드 또는 디스플레이) 방향(포즈) 데이터에 근거한 렌더링된 프레임들을 변환함으로써(예를 들면, 및 일 실시예에서는 "타임워프" 처리에 의해), 및/또는 오브젝트 움직임, 예를 들면, 상기 렌더링된 프레임들로부터의 상기 오브젝트 움직임(예를 들면, 오브젝트 병진운동 및/또는 회전)을 외삽합으로써(예를 들면, 및 일 실시예에서는 "스페이스워프" 처리에 의해), 렌더링된 프레임들로부터 표시용 출력 프레임들을 생성하는 그래픽 처리 시스템에 관한 것이다.
특히 바람직한 실시예에서, 상기 그래픽 처리 시스템은, (예를 들면, 상술한 것처럼) 가상현실(VR) 및/또는 증강현실(AR) 헤드 장착 디스플레이 시스템의 표시용 출력(변환된) "타임워프된" 프레임 및/또는 "스페이스워프된" 프레임을 생성한다. 따라서, 바람직한 실시예에서, 그래픽 처리 시스템(의 그래픽 처리장치(GPU))은, (애플리케이션) 프레임들의 렌더링과, 상기 가상현실(VR) 및/또는 증강현실(AR) 헤드 장착 디스플레이 시스템에 의해 감지된(헤드 장착 디스플레이 시스템으로부터 수신된) 헤드(뷰) 방향(포즈) 데이터에 근거하여 상기 렌더링된(애플리케이션) 프레임들을 "타임워프"함으로써 그 렌더링된(애플리케이션) 프레임들의 변환과, 및/또는 상기 렌더링된(애플리케이션) 프레임들을 오브젝트 움직임에 근거하여 "스페이스워프"함으로써 그 렌더링된(애플리케이션) 프레임들에 이동 오브젝트들을 외삽하고, 그래서 "타임워프된"(그래서 변환된) 및/또는 그래서 "스페이스워프된"(그래서 외삽된) 출력 프레임들(화상들)을 제공하여 상기 가상현실(VR) 및/또는 증강현실(AR) 헤드 장착 디스플레이 시스템의 헤드 장착 디스플레이에의 표시를, 행한다.
본 발명에서는, "타임워프" 및/또는 "스페이스워프" 처리를 행하는 공지된 구성에서와 같이, 제1 뷰포인트와, 제1 뷰 방향으로, 예를 들면, 및 일 실시예에서, 그래픽 처리 시스템이 표시용 화상들을 제공하는 중인 가상현실(VR) 및/또는 증강현실(AR) 헤드 장착 디스플레이 시스템(또는, 상기 가상현실(VR) 및/또는 증강현실(AR) 헤드 장착 디스플레이 시스템)에 의해 제1 시점에서 감지되었던 상기 제1 헤드(뷰) 방향(포즈)에 근거하여, 제1 시점에서의 씬의 제1 뷰를 나타내는, 제1(애플리케이션) 프레임을 (상기 그래픽 처리 시스템(GPU))에 의해 렌더링한다. 따라서, 상기 제1(애플리케이션) 프레임은, 상기 제1 시점에서 감지된 상기 헤드 장착 디스플레이 시스템의 유저의 상기 감지된 제1 헤드(뷰) 방향(포즈)에 대해 상기 씬의 "바로 앞" 뷰 또는 "포워드" 뷰를 나타내는 것이 바람직하다.
그렇지만, 공지된 구성과 대조하여, 본 발명에서는, 실제로 렌더링된 제1(애플리케이션) 프레임으로부터 표시하기 위한 출력(예를 들면, "타임워프된" 및/또는 "스페이스워프된") 프레임을 생성(하여 표시)하기 전에, 또 다른(상이한) 시점에서, 및/또는 또 다른(상이한) 뷰포인트로부터 및/또는 또 다른(상이한) 뷰 방향으로, 예를 들면, 및 일 실시예에서, 상기 (감지된) 제1 헤드(뷰) 방향(포즈)에 대해 또 다른(상이한) 헤드(뷰) 방향(포즈)에 근거하여, 및/또는 상기 제1 시점 후 또 다른 시점에서, 상기 씬의 또 다른 뷰를 나타내는 또 다른 버전(또는 버전들)의 상기 제1(애플리케이션) 프레임을 (상기 그래픽 처리 장치(GPU))에 의해 렌더링한다.
한층 더 후술하는 것처럼, 상기 제1(애플리케이션) 프레임이 근거하여 또 다른 버전을 렌더링하는 상기 또 다른 뷰포인트 및/또는 다른 뷰 방향(뷰 방향(포즈))은, 예를 들면, 헤드 장착 디스플레이의 유저가, 상기 제1(애플리케이션) 프레임을 사용하여 표시하는 기간동안에, 상기 근거하여 상기 제1(애플리케이션) 프레임을 렌더링하였던 상기 감지된(제1) 헤드 방향(포즈)(제1 뷰포인트 및 뷰 방향)(으로부터 시작하는)에 비례하여 이루어질지도 모르는, 예측 또는 가정된 헤드 움직임, 이를테면 헤드 회전 및/또는 병진운동을 나타낼 수 있다. 따라서, 각기 또 다른 렌더링된 버전은, 예를 들면, 사람들이 상기 감지된(제1) 헤드 방향(포즈)(제1 뷰포인트와 뷰 방향)(으로부터 시작하여)에 대해 그 헤드를 회전 및/또는 병진운동시키면 유저에게 보이는 것처럼 상기 씬(의 영역)의 뷰를 나타낼 수 있다.
예를 들면, 이것이 의미하는 것은, 뷰 회전만(예를 들면, 요(yaw), 피치, 및 롤(roll))을 고려하는 "타임워프" 처리, 즉 3자유도(3-DOF) "타임워프" 처리뿐만 아니라, 본 발명은 뷰 회전들(예를 들면, 요, 피치 및 롤)과 뷰 병진운동(예를 들면, 업/다운, 좌/우 및 앞/뒤) 양쪽을 고려하는 6자유도(6-DOF) "타임워프" 처리를 행하는데 사용될 수 있다는 것이다.
따라서, 예를 들면 및 일 실시예에서, (3자유도(3-DOF) "타임워프" 처리를 행할 때와 아울러, 예를 들면 상기 (제1) 애플리케이션 프레임을 렌더링하는 초기에(제1 시점에서) 감지되었던 "바로 앞"(제1) 헤드 방향(포즈)(제1 뷰포인트와 뷰 방향)에 근거하여 정상(제1) 애플리케이션 프레임을 렌더링할 때에, 추가의(또 다른) 버전들의 상기(제1) 애플리케이션 프레임(의 영역)도 예를 들면, 상기(제1) 애플리케이션 프레임을 렌더링하는 초기에 감지되었던 상기 "바로 앞"(제1) 헤드 방향(포즈)에 대해, 좌측으로 20도, 우측으로 20도와, 좌측으로 40도, 우측으로 40도 등의 또 다른 헤드 방향들(회전들)을 가정하여 렌더링된다. 6자유도(6-DOF)"타임워프" 처리를 행할 때, 상기(제1) 애플리케이션 프레임을 렌더링하는 초기에 감지되었던 상기 "바로 앞"(제1) 헤드 방향(포즈)에 대해, 헤드 병진운동 및/또는 헤드 회전에 근거하여 추가의(또 다른) 버전들을 렌더링하는 것이 바람직하다.
추가로 또는 이와는 달리, 또 다른 버전의 상기 제1(애플리케이션) 프레임은, 또 다른 시점에 근거하여, 예를 들면, 생성되는 출력 ("타임워프된" 및/또는 "스페이스워프된") 프레임이 상기 씬의 뷰를 나타내는 등의 상기 씬의 뷰를 나타낸 후에, 렌더링될 수 있다. 이 경우에, 따라서, 상기 또다른 렌더링된 버전은, 예를 들면, 상기 또 다른 시점에서 상기 씬의 뷰를 나타낼 수 있고, 이 때문에, 상기 예를 들면, 상기 또 다른 시점에서 나타나야 하는(또는 예측 또는 가정되어야 하는) 위치에서 이동 오브젝트를 보일 수 있다.
따라서, 예를 들면, 및 일 실시예에서, "타임워프" 및/또는 "스페이스워프" 처리를 행할 때, 출력 "타임워프된" 및/또는 "스페이스워프된" 프레임이 생성되어 표시되기 전에, 상기 애플리케이션 프레임을 렌더링하는 시작부분에서 상기 제1 시점에서 상기 씬의 제1 뷰를 나타내는 정상(제1) 애플리케이션 프레임이, 나중의 시점에서 상기 씬의 뷰를 나타내는 추가의(또 다른) 버전의 상기(제1) 애플리케이션 프레임과 함께, 렌더링된다.
따라서, (공지된 구성에서와 같이) 제1 시점에서 감지된 뷰(헤드) 방향(포즈)에 근거하여 씬의 (제1) 뷰를 렌더링하는 (그래픽 처리 장치(GPU)) 것과 아울러, 본 발명의 바람직한 실시예에서, 상기 씬(의 적어도 일 영역)의 또 다른 상이한 뷰들도, 상기 감지된 뷰(헤드) 방향(포즈)(으로부터 시작하는)에 대해 예측된 또는 가정된 (가능한) 뷰(헤드) 움직임들(회전들 및/또는 병진운동들)에 근거하고, 및/또는 또 다른 시점에 근거하여, (그래픽 처리 장치(GPU))에 의해) 렌더링된다. 그리고, 출력(예를 들면, "타임워프된" 및/또는 "스페이스워프된") 프레임은, 복수의 렌더링된 뷰들로부터 렌더링된 데이터의 합성을 사용하여 생성될 수 있다(그리고, 생성될 수 있는 것이 바람직하다).
한층 더 후술하는 것처럼, 상기 또 다른 렌더링된 버전(들)은, 아티팩트들과 왜곡들이 보다 적고, 또 효율적으로 보다 실현적인 가상현실(VR) 및/또는 증강현실(AR) 경험을 제공하기 위해 "타임워프" 및/또는 "스페이스워프"될 수 있는 추가의(그래픽 처리 장치(GPU)) 렌더링된 데이터를 제공할 수 있다.
특히, 출원인이 인식한 것은, "타임워프"와 "스페이스워프" 처리에 의해 특정한 아티팩트들(이를테면, 저더)을 감소시킬 수 있지만, 공지된 구성에서의 렌더링된 애플리케이션 프레임의 상기 "타임워핑" 및/또는 "스페이스워핑"은 자신의 왜곡을 일으킬 수 있다는 것이다.
예를 들면, 출원인이 인식한 것은, "타임워프"(및 "스페이스워프") 처리를 행하는 공지된 구성에서, 상기 그래픽 처리 장치(GPU) 2는 상기 그래픽 처리 장치(GPU) 2가 상기 애플리케이션 프레임을 렌더링하는 시작부분에서 감지되었던 단일의 뷰(헤드) 방향에 근거한 애플리케이션 프레임 데이터만을 렌더링한다는 것이다. 뷰(헤드) 방향의 변화가 검출되면, 오래된 뷰(헤드) 방향에 근거하여 렌더링된 애플리케이션 프레임 데이터는, 새로운 변화된 뷰(헤드) 방향에 근거한 "타임워프" 처리에 의해 변환된다.
그렇지만, "타임워프" 처리는, 뷰(헤드) 방향의 변화의 결과로서 명백해야 하고 상기 새로운 뷰(헤드) 방향에 근거하여 새로운 애플리케이션 프레임이 렌더링되면 명백할 것이라는 모든 변화를 고려할 수 없는 것이 일반적이다. 이에 따라, 유저에게 표시하는 것에 있어서 왜곡될 수 있고, 이러한 왜곡은 특히 눈에 띄고, (뷰포인트에 대해) 카메라에 가깝고, 예를 들면 시차효과로 인한 뷰(헤드) 방향(포즈)의 아주 상당한 변화가 있는, 상기 씬에서의 오브젝트들에 대한 공지된 구성에서는 보다 심할 수도 있다.
게다가, "타임워프" 처리는, 오브젝트 움직임으로 인해 명백해야 되는 변화들을 고려할 수 없는 것이 일반적이다. 예를 들면, 상기 씬에서의 배경 오브젝트들에 대해 이동중인 오브젝트를 포함하는 동적 씬일 경우에, 상기 배경 오브젝트들에 대한 상기 이동 오브젝트의 위치는, 그 오브젝트의 움직임으로 인해 시간의 변화에 나타나야 한다. 따라서, "갱신된" 버전의 애플리케이션 프레임을 나중의 시점에서 나타내는 "타임워프된" 프레임일 경우에, 상기와 같은 이동 오브젝트는 상기 애플리케이션 프레임에 표시된 것과 다른 배경 오브젝트들에 대한 위치에 상기 "타임워프된" 프레임에서 보여야 한다. 또한, 연속적인 "갱신된" 버전의 단일의 애플리케이션 프레임을 연속적인 나중의 시점에서 나타내는 일련의 연속적인 "타임워프된" 프레임들일 경우에, 상기 이동 오브젝트는, 상기 연속적인 "타임워프된" 프레임들의 각각에 있어서 상이한 상대 위치에 보여야 한다.
그렇지만, "타임워프" 처리가 이러한 임의의 오브젝트 움직임을 고려하지 않으므로, 애플리케이션 프레임으로부터 생성된 각 "타임워프된" 프레임은, 상기 애플리케이션 프레임에 나타내어진 배경 오브젝트들에 대한 동일한 위치에 상기와 같은 이동 오브젝트를 나타낼 것이다. 따라서, 이동 오브젝트는, "타임워프된" 프레임에서 부정확한 (상대) 위치에 보일 수도 있고, 게다가, 동일한 애플리케이션 프레임으로부터 생성된 연속적인 "타임워프된" 프레임들에 있어서 정적으로 보여, 유저에게 왜곡들과 아티팩트들로 표시되게 된다.
또한, 뷰(헤드) 방향의 변화로, 오래된 뷰(헤드) 방향의 뷰의 포인트가 보여질 수 있는 것이 가려졌던 오브젝트 및/또는 오브젝트의 영역이 생기게 되는 경우도 있을 수 있다. 예를 들면, 보다 가까운 오브젝트에 의해 가려졌던 배경 오브젝트나 영역, 및/또는 자체적으로 가려졌던 오브젝트의 영역은 뷰(헤드) 방향의 변화의 결과로서 보여질 수 있을 가능성도 있다. 그렇지만, 공지된 구성에서, 임의의 새롭게 볼 수 있는 "가려지지 않은", 오브젝트들 및/또는 영역들에 대한 데이터는, 상기 그래픽 처리 장치(GPU)2에 의해 렌더링되어 있지 않았을 것이다.
마찬가지로, 동적 씬에서의 오브젝트들이 움직여서, 나중의 시점에서 보여질 수 있는 제1 시점에서 가려졌던 오브젝트들 및/또는 오브젝트들의 영역들이 될 수 있다. 그렇지만, "스페이스워프" 처리를 행하는 공지된 구성에서는, 상기 렌더링된 애플리케이션 프레임으로부터 오브젝트들의 움직임으로 인해 "스페이스워프된" 프레임에서 "가려지지 않은" 임의의 상기와 같은 오브젝트들 및/또는 영역들에 대해 상기 그래픽 처리 장치(GPU)2에 의해, 데이터를 직접 렌더링하지 않는다.
이에 따라, 공지된 구성에서는, 상기 (오래된) 뷰(헤드) 방향의 뷰의 포인트로부터 및/또는 이에 근거하여 상기 애플리케이션 프레임을 렌더링하였던 시점에서 오브젝트들 및/또는 영역들이 가려졌기 때문에 상기 오브젝트들 및/또는 영역들을 나타내지 않는 렌더링된 애플리케이션 프레임을 사용하여, "타임워프" 및/또는 "스페이스워프" 처리를 행하여도 된다. 이에 따라, 유저에 보여진 것에 있어서 한층 더 왜곡들 및 아티팩트들이 생기게 될 수 있다.
따라서, 본 발명에서는, 공지된 구성과 대조하여, 하나 이상의 또 다른(추가의) 버전들의 상기 제1(애플리케이션) 프레임을 렌더링한다. 상기 또 다른(추가의) 버전들은, 임의의 "가려지지 않은" 오브젝트들 및/또는 영역들, 즉, 상기 제1 뷰(헤드) 방향의 뷰의 포인트로부터 및/또는 상기 제1 시점에서 가려지지만, 상기 각각의 또 다른 뷰(헤드) 방향(또는 방향들)의 뷰의 포인트로부터 및/또는 각각의 또 다른 시점에서 볼 수 있는, 오브젝트들 및/또는 영역들을 나타낼 수 있다(그리고 나타내는 것이 바람직하다). 한층 더 후술하는 것처럼, 또한, (또는 그 대신에) 상기 또 다른(추가의) 버전들은, 특히 "타임워프" 처리에 의해 왜곡될 수도 있는 임의의 가까운 오브젝트 및/또는 이동 오브젝트(들)를 나타낼 수 있다(그리고, 나타내는 것이 바람직하다).
이에 따라, "타임워프" 및/또는 "스페이스워프" 처리를 행할 때, 상기 제1 프레임의 상기 또 다른(추가의) 버전들은, 상기와는 달리 "타임워프" 및/또는 "스페이스워프" 처리에 의해 크게 왜곡될 수 있는 상기 씬의 영역들, 예를 들면 및 바람직하게는, 가까운 오브젝트 및/또는 이동 오브젝트 및/또는, (그리고, 바람직하게는) 상기 제1 뷰(헤드) 방향(포즈) 및/또는 제1 시점에 기초하여 가려지지만, 뷰(헤드) 방향(포즈)의 변화 및/또는 오브젝트 움직임으로 인해 보여질 수 있는 오브젝트들 및/또는 영역들에 대한 렌더링된 데이터를 제공할 수 있다(그리고, 제공하는 것이 바람직하다). 이것이 의미하는 것은, 한층 더 후술하는 것처럼, "타임워프" 및/또는 "스페이스워프" 처리에 의해 생길 수 있는 왜곡들 및 아티팩트들을 피할 수 있거나 감소시킬 수 있다는 것이다. 예를 들면, 보다 부드러운 가상현실(VR) 또는 증강현실(AR) 경험을 제공할 수 있다.
이 때문에, 본 발명이 개선된 그래픽 처리 시스템, 특히 가상현실(VR) 및/또는 증강현실(AR)(헤드 장착) 디스플레이 시스템의 표시를 위한 "타임워프된" 화상 및/또는 "스페이스워프된" 화상을 제공하는 개선된 그래픽 처리 시스템을 제공한다는 것을 알 것이다.
상기 (렌더링된) 제1 프레임은, 씬의 제1 뷰를 나타내는 임의의 적절하고 원하는 프레임이어도 된다. 일 실시예에서, 상기 제1 프레임은, 애플리케이션, 이를테면 게임의 표시를 위해 생성된(렌더링된) 프레임(화상)이다.
상기 제1 프레임은, 데이터 요소들(샘플링 위치들)(예를 들면, 화소들)의 어레이를 포함하여도 되고, 각각에 대해 적절한 데이터(예를 들면, 일 세트의 색값들)가 렌더링된다.
상기 제1 프레임은 임의의 적절하고 원하는 방식으로 렌더링될 수 있다. 일 실시예에서, 상기 제1 프레임은, 상기 그래픽 처리 시스템의 그래픽 처리 장치(GPU)(그래픽 프로세서)에 의해 렌더링되지만, 또한 또는 그 대신에, 필요한 경우, 상기 그래픽 처리 시스템의 다른 구성요소나 구성요소들, 이를테면 CPU나 비디오 프로세서에 의해 생성 또는 제공될 수 있다.
상기 렌더링된 제1 프레임은, 원하는 대로 이후의 이용을 위해 메모리에 저장(기록)되어도 된다. 예를 들면, 상기 제1 프레임을, 메모리의 프레임 버퍼에 저장하고, 이 버퍼로부터 (예를 들면, 후술된 것처럼) 또 다른 처리 및/또는, 표시 제어기에 의한 표시를 위해, 판독할 수 있다. 이러한 메모리는, 임의의 적절한 메모리로 이루어져도 되고, 임의의 적절하고 원하는 방식으로 구성되어도 된다. 예를 들면, 그것은, 그래픽 처리 장치(GPU)를 갖는 칩상에 있는 메모리이어도 되거나, 외부 메모리이어도 된다. 일 실시예에서, 그것은 외부 메모리, 이를테면, 상기 그래픽 처리 시스템의 주 메모리이다. 그것은, 이 목적을 위한 전용 메모리이어도 되거나, 그 밖의 데이터에도 사용되는 메모리의 일부이어도 된다.
상기 제1 프레임은, 각각의 시점에서 상기 씬의 연속적인 뷰들을 나타내는 연속적인 이러한 렌더링된 프레임들의 시퀀스에서 렌더링된 프레임인 것이 바람직하다.
상기 제1 프레임이 뷰를 나타내는 상기 씬은, 종래기술에서 공지된 것처럼, 스페이스(예를 들면, 월드 스페이스)에서 원하는 대로(예를 들면, 애플리케이션(또는 상기 애플리케이션)에 의해) 배치되게 렌더링될 하나 이상의 오브젝트들을 포함한다. 상기 제1 프레임은, 그 스페이스에서의 포인트로부터, 즉 상기 제1 뷰포인트로부터, 및 예를 들면 및 일 실시예에서(상기 제1 시점에서 감지된) (감지된) 제1 뷰(헤드 또는 디스플레이) 방향(포즈)에 대응한, 제1 뷰 방향으로, 상기 씬의 제1 뷰를 나타낸다.
상기 제1 프레임이 뷰를 나타내는 상기 씬은, 원하는 대로, 하나 이상의 정적 오브젝트들 및/또는 (예를 들면, (상기) 정적(예를 들면, 배경) 오브젝트들)에 대해 이동중인) 하나 이상의 이동 오브젝트들로 이루어져도 된다. 상기 제1 프레임은 상기 제1 시점에서 상기 씬의 제1 뷰를 나타내고, 이 때문에 상기 이동 오브젝트들은, 상기 제1 시점에서 상기 씬의 위치들(및 방향들)에서 제1 프레임에 나타내져야 한다.
일반적으로, 상기 씬의 상기 제1 뷰는, 상기 씬 스페이스의 (제1) 뷰 절두체(볼륨)내에 있는 오브젝트들(만)의 뷰이다. 상기 (제1) 뷰 절두체는, 종래기술에 공지된 것처럼, 상기 제1 뷰 방향에 수직한 근(near) 평면 및/또는 원(far) 평면으로 막혀 있어도 된다. 상기 (제1) 뷰 절두체는, 예를 들면, 정점이 제1 뷰포인트에 위치하고 축이 상기 제1 뷰 방향을 따라 향하는 직각 피라미드의 절두체, 또는 다른 적절한 볼륨을 나타내어도 된다.
따라서, 상기 (제1) 뷰 절두체의 외부에 있는 상기 씬의 오브젝트들은, 상기 제1 뷰에 포함되지 않아도 되어서, 상기 제1 프레임에 나타나지 않을 수도 있다. 예를 들면, 상기 제1 뷰포인트에 상기 (제1) 뷰 절두체의 근 평면보다 (상기 씬 스페이스에서) 가까운 오브젝트들은, 상기 제1 뷰에 포함되지 않을 수도 있고, 마찬가지로, 상기 제1 뷰포인트로부터 상기 (제1) 뷰 절두체의 상기 원 평면보다 (상기 씬 스페이스에서) 멀리 있는 오브젝트들은 상기 제1 뷰에 포함되지 않을 수도 있다.
상기 제1 프레임이 상기 씬의 뷰를 나타내는 제1 시점은, 임의의 적절하고 원하는 시점에서 상기 씬의 뷰를 나타낸다. 상기 제1 시점은, 상기 제1 프레임을 렌더링하는 (상기 그래픽 처리장치(GPU))의 초기에 시점인 것이 바람직하다. 바람직하게는, 상기 제1 시점은, 상기 제1 뷰포인트와, 상기에 근거하여 제1 프레임을 렌더링하는 상기 제1 뷰 방향(뷰 방향(포즈))은, (그래픽 처리 시스템이 표시를 위해 화상들을 제공하는 중인 상기 가상현실(VR) 및/또는 증강현실(AR)(헤드 장착) 디스플레이 시스템에 의해) 감지된다.
바람직한 실시예에서, 상기 제1 프레임은, (상기 제1 프레임을 렌더링하는 초기에) 상기 제1 시점에서 감지된 (상기 제1 뷰포인트와 상기 제1 뷰 방향에 대응한) 제1 뷰(헤드 또는 디스플레이) 방향(포즈)에 근거하여 렌더링되지만, 제2 시점에서, 상기 제1 프레임을 초기에 렌더링한 후에 감지된 제2(상이한) 뷰(헤드 또는 디스플레이) 방향(포즈)에 근거하여 표시(변환)될, 프레임(화상)이다. 예를 들면, 및 바람직한 실시예에서, 상기 제1 프레임은, (3 또는 6자유도("DOF")) "타임워프" 처리에 의해, 예를 들면 상술한 것처럼, 표시를 위해 (상기) 출력 "타임워프된" (변환된) 프레임(화상)을 제공하도록 변환될 "애플리케이션" 프레임이다.
추가로 또는 이와는 달리, 바람직한 실시예에서, 상기 제1 프레임은, (상기 제1 프레임을 렌더링하는 초기에) 상기 제1 시점에서 상기 씬의 제1 뷰를 나타내지만, 상기 제1 프레임을 렌더링한 후, 제2 시점(또는 상기 제2 시점)에서의 상기 씬의 뷰를 나타내는 외삽 버전의 상기 제1 프레임을 생성하여 표시하도록 오브젝트 움직임에 근거하여 외삽 동작(변환)이 실시되는, 프레임(화상)이다. 예를 들면, 및 바람직한 실시예에서, 상기 제1 프레임은, 예를 들면 상술한 것처럼, 표시를 위해 (상기) 출력 "스페이스워프된"(외삽된) 프레임(화상)을 제공하기 위해 "스페이스워프" 처리에 의해 외삽(변환)될 "애플리케이션" 프레임이다.
특히 바람직한 실시예에서, 상기 제1(애플리케이션) 프레임은 (가상현실(VR) 및/또는 증강현실(AR)) 헤드 장착 디스플레이 시스템을 위해 렌더링된 프레임(화상)이고, 여기서, 변환된("타임워프된" 및/또는 "스페이스워프된") 버전의 상기 제1(애플리케이션) 프레임은 상기 (가상현실(VR) 및/또는 증강현실(AR)) 헤드 장착 디스플레이 시스템(의 헤드 장착 디스플레이)에 표시하도록 제공되는 것이 바람직하다.
이러한 (가상현실(VR) 및/또는 증강현실(AR)) 헤드 장착 디스플레이 시스템은, 사용중(그 (가상현실(VR) 및/또는 증강현실(AR)) 헤드 장착 디스플레이 시스템의 상기 헤드 장착 디스플레이상에 유저에게 화상들이 표시중인 동안에) 유저의 헤드(및/또는 그들의 뷰(응시) 방향)의 방향(포즈)(예를 들면, 회전 및/또는 병진운동)을 감지(추적)하는 하나 이상의 센서를 구비하여도 된다.
이 경우에, 상기 제1(애플리케이션) 프레임이 근거하여 렌더링되는 상기 제1 뷰포인트와 제1 뷰 방향은, 상기 (가상현실(VR) 및/또는 증강현실(AR)) 헤드 장착 디스플레이 시스템(의 하나 이상의 센서들)에 의해 상기 제1 시점에서, 바람직하게는 상기 제1(애플리케이션) 프레임을 렌더링하는 (상기 그래픽 처리장치(GPU)) 초기에, 감지되는 상기 (가상현실(VR) 및/또는 증강현실(AR)) 헤드 장착 디스플레이 시스템의 유저의 제1 헤드(뷰) 방향(포즈)에 대응하는 것이 바람직하다.
따라서, 상기 제1(애플리케이션) 프레임은, 상기 제1(애플리케이션) 프레임을 렌더링하는 (상기 그래픽 처리장치(GPU))의 초기에 상기 제1 시점에서 (상기 (가상현실(VR) 및/또는 증강현실(AR)) 헤드 장착 디스플레이 시스템에 의해) 감지되는 것이 바람직한, 유저의 (제1) 뷰포인트로부터와 상기 유저의 (제1) 헤드(뷰) 방향(포즈)에 대응한 (제1) 뷰 방향으로 상기 씬의 (제1)(포워드) 뷰를 나타내는 것이 바람직하다.
그렇지만, 한층 더 후술하는 것처럼, 다른 실시예에서, 상기 제1(애플리케이션) 프레임은, 헤드 미장착 디스플레이 시스템, 이를테면 핸드헬드(가상현실(VR) 및/또는 증강현실(AR)) 디스플레이 시스템, 예를 들면, 휴대폰 또는 태블릿을 위해 렌더링된다. 이러한 시스템이 작동하여 상기 디스플레이(예를 들면, 상기 휴대폰이나 태블릿의) 자체의 이동(방향(회전 및/또는 병진운동)을 추적하여도 되기 때문에, 상기 제1(애플리케이션) 프레임이 근거하여 렌더링되는 상기 제1 뷰포인트와 제1 뷰 방향은, (가상현실(VR) 및/또는 증강현실(AR)) 디스플레이 시스템(의 하나 이상의 센서들)에 의해 상기 제1 시점에서, 바람직하게는 상기 제1(애플리케이션) 프레임을 렌더링하는 (상기 그래픽 처리장치(GPU)) 초기에, 감지되는 것이 바람직한 상기 (가상현실(VR) 및/또는 증강현실(AR)) 디스플레이 시스템의 디스플레이의 제1 디스플레이(뷰) 방향(포즈)에 대응하는 것이 바람직하다.
상기 제1(애플리케이션) 프레임은 임의의 적절하고 원하는 사이즈일 수 있다. 그렇지만, 바람직한 실시예에서, 상기 제1(애플리케이션) 프레임은, (상기) 출력(변환된("타임워프된" 및/또는 "스페이스워프된")) 버전의 상기 제1(애플리케이션) 프레임이 근거하여 표시될 시야보다 (바람직하게는 2차원으로) 넓은 시야에 근거하여 렌더링된다. 상기 제1(애플리케이션) 프레임의 시야는, 예를 들면, 상기 제1(애플리케이션) 프레임이 유효하다고 하는 기간에, 허가된 또는 예상된(최대) 양의 뷰(헤드 또는 디스플레이) 방향(포즈) 이동(예를 들면, 회전 및/또는 병진운동)에 기초하여도 된다.
상기 하나 이상의 또 다른 버전들의 (각) 또 다른 버전의 상기 제1 프레임은, 데이터 요소들(샘플링 위치들)(예를 들면, 화소들)의 어레이를 구비하여도 되고, 각 데이터 요소에 대해 적절한 데이터(예를 들면, 일 세트의 색값들)가 렌더링된다.
상기 하나 이상의 또 다른 버전들의 상기 제1 프레임은, 출력(예를 들면, 변환된 및/또는 외삽된) 버전의 상기 제1 프레임을 나타내는 (상기) 출력 프레임이 생성되기 전에, 바람직하게는, 상기 출력 프레임이 (디스플레이(또는 상기 디스플레이)에) 표시되기 전에, 렌더링되어야 한다. 이와는 달리, (각) 또 다른 버전의 상기 제1 프레임은, 임의의 적절하고 원하는 방식으로 렌더링될 수 있다.
일 실시예에서, (각) 또 다른 버전은, 상기 그래픽 처리 시스템의 그래픽 처리 장치(GPU)(그래픽 프로세서)(또는 상기 그래픽 처리 장치(GPU)(그래픽 프로세서))에 의해 렌더링되지만, 또한 또는 그 대신에, 원하는 경우, 상기 그래픽 처리 시스템의 다른 부품 또는 부품들, 이를테면, CPU(또는 상기 CPU) 또는 비디오 프로세서(또는 상기 비디오 프로세서)에 의해 생성되거나 제공될 수 있다.
(각) 또 다른 버전은, 상기 제1 프레임에 대해 상기 그래픽 처리 시스템의 상이한 부품에 의해 렌더링되어도 된다. 그렇지만, 바람직한 실시예에서, (각) 또 다른 버전은, 상기 제1 프레임의 렌더링과 같은 상기 그래픽 처리 시스템(예를 들면, 상기 그래픽 처리장치(GPU))의 부품에 의해 렌더링된다.
(각) 렌더링된 또 다른 버전은, 원하는 대로, 이후의 사용을 위해 메모리에 저장(기록)되어도 된다. 예를 들면, (각) 또 다른 버전은, 메모리의 (각각의) 프레임 버퍼에 저장되어도 되고, 그리고 이 버퍼로부터 (예를 들면, 후술하는 것처럼) 또 다른 처리를 위해, 및/또는 표시 제어기(또는 상기 표시 제어기)에 의한 표시를 위해, 판독될 수 있다.
이러한 메모리는, 임의의 적절한 메모리로 이루어져도 되고, 임의의 적절하고 원하는 방식으로 구성되어도 된다. 예를 들면, 상기 그래픽 처리 장치(GPU)를 갖는 칩 상에 있는 메모리이어도 되거나, 외부 메모리이어도 된다. 일 실시예에서는, 외부 메모리, 이를테면 상기 그래픽 처리 시스템의 주 메모리이다. 이 목적을 위해 전용 메모리이어도 되거나, 다른 데이터에 사용되는 메모리의 일부이어도 된다.
(각) 또 다른 버전은, 상기 렌더링된 제1 프레임에 대해 상이한 메모리에 저장되어도 된다. 그렇지만, 바람직한 실시예에서, (각) 또 다른 버전은, 상기 제1 프레임과 같은 메모리에 저장된다.
일반적으로, 상기 제1 프레임의 (각) 또 다른 버전은, 예를 들면 상술한 것과 마찬가지로, 상기 씬 스페이스의 각각의 또 다른 뷰 절두체(체적)내에 있는 오브젝트들(만)의 뷰를 나타낸다.
상기 제1 프레임이 뷰를 나타내지만, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 (각) 또 다른 버전은, (각각의) 또 다른(상이한) 시점에서, 및/또는 (각각의) 또 다른(상이한) 뷰포인트로부터, 및/또는 (각각의) 또 다른(상이한) 뷰 방향으로, 동일한 씬의 (각각의) 또 다른 뷰를 나타내어야 한다.
따라서, 상기 제1 프레임의 (각) 또 다른 버전은, (i) (각각의) 또 다른 시점; (ii) (각각의) 또 다른 뷰포인트로부터; 및 (iii) (각각의) 또 다른 뷰 방향으로의 하나 이상에 근거하여 렌더링되어야 한다. 예를 들면, (각) 또 다른 버전은 (각각의) 또 다른 시점에서; (각각의) 또 다른 뷰포인트로부터; 또는 (각각의) 또 다른 뷰 방향으로, 상기 씬의 뷰를 나타낼 수 있다. 또는, (각) 또 다른 버전은, (각각의) 또 다른 시점과 (각각의) 또 다른 뷰포인트로부터; (각각의) 또 다른 시점과 (각각의) 또 다른 뷰 방향으로; 또는 (각각의) 또 다른 뷰포인트로부터와 (각각의) 또 다른 뷰 방향으로, 상기 씬의 뷰를 나타낼 수 있다. 또는, (각) 또 다른 버전은, (각각의) 또 다른 시점에서; (각각의) 또 다른 뷰포인트로부터; 및, (각각의) 또 다른 뷰 방향으로, 상기 씬의 뷰를 나타낼 수 있다.
따라서, 상기 제1 프레임의 (각) 또 다른 버전이 근거하여 렌더링되는 상기 시점, 상기 뷰포인트 및 상기 뷰 방향 중 적어도 하나는, 상기 제1 프레임이 근거하여 렌더링되는 것과 달라야 한다(또한, 다른 것이 바람직하다). 이에 대응하게, 상기 제1 프레임의 (각) 또 다른 버전이 근거하여 렌더링되는 상기 시점, 상기 뷰포인트 및 상기 뷰 방향의 하나 이상(하지만 전부가 아님)은, 상기 제1 프레임이 근거하여 렌더링되는 것과 같아도 된다. 따라서, 상기 제1 프레임의 (각) 또 다른 버전은, 제1 프레임이 나타내는 상기 씬의 상기 제1 뷰에 대해 상기 씬의 상이한 뷰를 나타내야 한다(나타내는 것이 바람직하다).
상기 제1 프레임의 복수의 또 다른 버전이 렌더링되는 경우, 바람직한 실시예에서, 상기 복수의 또 다른 버전들의 또 다른 버전이 근거하여 렌더링되는 상기 시점, 상기 뷰포인트 및 상기 뷰 방향 중 적어도 하나는, 상기 복수의 또 다른 버전들의 그 밖의 또 다른 버전 또는 버전들이 근거하여 렌더링되는 것과 다르다. 이에 대응하게, 상기 복수의 또 다른 버전들의 또 다른 버전이 근거하여 렌더링되는 상기 시점, 상기 뷰포인트 및 상기 뷰 방향의 하나 이상(하지만 바람직하게는 전부가 아님)은, 상기 복수의 또 다른 버전들의 상기 그 밖의 또 다른 버전 또는 버전들이 근거하여 렌더링되는 것과 같아도 된다. 따라서, 상기 복수의 또 다른 버전들의 (각) 또 다른 버전은, 상기 복수의 또 다른 버전들의 상기 그 밖의 또 다른 버전(들)이 나타내는 상기 씬의 상기 뷰(들)에 대해 상기 씬의 상이한 뷰를 나타내는 것이 바람직하다.
상기 제1 프레임의 또 다른 버전이 (상기 제1 프레임이 근거하여 렌더링되는 상기 제1 시점과 다른) 또 다른 시점에 근거하여 렌더링되는 경우, 상기 또 다른 시점은 임의의 원하는 시점일 수 있다.
바람직한 실시예에서, 상기 또 다른 시점은, 상기 제1 프레임이 상기 씬의 뷰를 나타내는 상기 제1 시점 후(바람직하게는, 상기 제1 프레임이 렌더링된 후)이지만, 바람직하게는, 렌더링된 프레임들의 상기 시퀀스에서 상기 제1 프레임 다음의 프레임이 상기 씬의 뷰를 나타내는 시점 전인, 시점이다.
바람직한 실시예에서, 상기 또 다른 시점은, 생성될 (상기) 출력(변환된 및/또는 외삽된, 예를 들면, "타임워프된" 및/또는 "스페이스워프된") 프레임이 상기 씬의 뷰를 나타낼 시점이고, 바람직하게는, (제2) 뷰 방향 데이터를 감지하여 예를 들면, (상기) 제2 시점에 근거하여 ("타임워프" 처리에 의해) 상기 제1 프레임을 변환하는 시점이다.
바람직한 실시예에서, 또 다른 시점에 근거하여 렌더링되는 (각) 또다른 버전은, 각각의 또 다른 시점에서 보여야 하거나, 보일 것이라고 예측 또는 가정될 때 상기 씬의 또 다른 뷰를 나타낸다. 따라서, 예를 들면, 상기 씬이 하나 이상의 이동 오브젝트들을 포함하는 경우, 또 다른 시점에 근거하여 렌더링되는 상기 제1 프레임의 또 다른 버전은, 이동 오브젝트들의 움직임에 근거하여, 상기 제1 프레임과 비교하여 적절하게 이동된(예를 들면, 병진운동된, 회전된 및/또는 크기 조정된) 상기 이동 오브젝트들을 나타내야 한다.
이러한 오브젝트 움직임은, 원하는 대로 제공 또는 결정되어도 된다. 예를 들면, 오브젝트 움직임은, 예를 들면 연속 프레임들의 적절한 비교에 의해 결정될 수 있다. 그렇지만, 바람직한 실시예에서, 오브젝트 움직임은, 상기 제1 프레임(및 또 다른 버전(들))이 생성되는 (상기) 애플리케이션에 의해 나타내어지거나 예측된다.
복수의 상이한 뷰들의 하나 이상으로부터 렌더링된 데이터를 사용하여 출력 프레임을 생성하기 전에, 상이한 시점에서 상기 씬의 상이한 뷰들을 나타내는 씬의 복수의 뷰들을 렌더링하는 아이디어는 그 권리에 있어서 신규하고 진보성이 있다고 믿는다.
따라서, 본 발명의 제3 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 생성하는 그래픽 처리 시스템의 동작방법을 제공하고, 이 방법은,
제1 시점에서의 씬의 제1 뷰를 나타내는 제1 프레임을 렌더링하는 단계;
또 다른 시점에서 상기 씬의 또 다른 뷰를 각각 나타내는, 상기 제1 프레임의 하나 이상의 또 다른 버전들을 렌더링하는 단계; 및
상기 렌더링된 제1 프레임으로부터의 렌더링된 데이터 및/또는, 상기 제1 프레임의 상기 하나 이상의 렌더링된 또 다른 버전의 하나 이상으로부터의 렌더링된 데이터를 사용하여, 표시용 출력 프레임을 생성하는 단계를 포함한다.
본 발명의 제4 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 처리회로에 의해 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 처리회로에 의해 생성하도록 구성된, 그래픽 처리 시스템을 제공하고;
상기 그래픽 처리 시스템은, 제1 시점에서의 씬의 제1 뷰를 나타내는 제1 렌더링된 프레임에 대해:
또 다른 시점에서 상기 씬의 또 다른 뷰를 각각 나타내는, 제1 프레임의 하나 이상의 또 다른 버전들을 처리회로에 의해 렌더링하고 나서;
상기 렌더링된 제1 프레임으로부터의 렌더링된 데이터 및/또는, 상기 제1 프레임의 상기 하나 이상의 렌더링된 또 다른 버전의 하나 이상으로부터의 렌더링된 데이터를 사용하여, 표시용 출력 프레임을 처리회로에 의해 생성하도록, 한층 더 구성된다.
당업자라면 알 듯이, 본 발명의 이 측면들 및 실시예들은, 적절하게, 여기서 설명된 본 발명의 상기 바람직한 및 선택적 특징들 중 하나 이상, 바람직하게는 전부를 포함할 수 있고, 바람직하게는 포함한다.
예를 들면, 이 측면들 및 실시예들에서, 상기 제1 프레임의 (각) 또 다른 버전은, 상기 제1 프레임이 근거하여 렌더링되는 상기 (제1) 뷰포인트로부터와 상기 (제1) 뷰 방향으로이지만, 상이한(또 다른), 바람직하게는, 나중의, 시점에서, 상기 씬의 (각각의) 또 다른 뷰를 나타내는 것이 바람직하다. 그렇지만, 상기 제1 프레임의 (각) 또 다른 버전은, 상기 제1 프레임에 대해, 상이한(또 다른) 뷰포인트 및/또는 상이한(또 다른) 뷰 방향으로(그리고, 상이한(또 다른), 바람직하게는, 나중의, 시점에서) 상기 씬의 (각각의) 또 다른 뷰를 나타낼 수 있다.
상기 제1 프레임의 또 다른 버전이 (상기 제1 프레임이 근거하여 렌더링되는 제1 뷰포인트와 다른) 또 다른 뷰포인트에 근거하여 렌더링되는 경우, 상기 또 다른 뷰포인트는 임의의 원하는 뷰포인트일 수 있다. 마찬가지로, 상기 제1 프레임의 또 다른 버전은 (상기 제1 프레임이 근거하여 렌더링되는 제1 뷰 방향과 다른) 또 다른 뷰 방향에 근거하여 렌더링되는 경우, 상기 또 다른 방향은 임의의 원하는 뷰 방향일 수 있다.
바람직한 실시예에서, 상기 제1 프레임이 근거하여 렌더링되는 상기 제1 뷰포인트와 상기 제1 뷰 방향은 제1 뷰(헤드 또는 디스플레이)에 대응하고, 상기 제1 프레임의 (각) 또 다른 버전이 근거하여 렌더링되는 상기 또 다른 뷰포인트와 또 다른 뷰 방향은, (상기 제1 뷰 방향(포즈)와 다른) (각각의) 또 다른 뷰(헤드 또는 디스플레이) 방향(포즈)에 대응한다.
(뷰 방향(포즈)(예를 들면, 상기 또 다른 뷰 방향(포즈))은, 상기 뷰 방향(포즈)가 대응하는 상기 뷰포인트와 상기 뷰 방향의 적어도 하나가, 다른 뷰 방향(포즈)가 대응하는 상기 뷰포인트와 상기 뷰 방향 각각과 다른 경우, 다른 뷰 방향(포즈)(예를 들면, 상기 제1 뷰 방향(포즈))과 다르다는 것을 알 것이다.)
이 경우, 또 다른 버전이 근거하여 렌더링되는 (각) 또 다른 뷰 방향(포즈)는, 상기 제1 프레임이 근거하여 렌더링되는 상기 (감지된) 제1 뷰 방향(포즈)에 대해 규정되어, 상기 (감지된) 제1 뷰(헤드 또는 디스플레이) 방향(포즈)로부터의 (헤드 또는 디스플레이) 이동(예를 들면, 회전 및/또는 병진운동)을 나타내는 것이 바람직하다.
따라서, 예를 들면, (각) 또 다른 뷰 방향(포즈)은, (상기 헤드 또는 디스플레이)를 우측 또는 좌측(요), 위 또는 아래(피치)로 전환(회전)하는 것, 및/또는 상기 제1 뷰(헤드 또는 디스플레이) 방향(포즈)에서 시작하여 상기 헤드를 좌측 또는 우측으로(롤) 롤링하는 것, 및/또는 상기 제1 뷰(헤드 또는 디스플레이) 방향(포즈)에서 시작하여 (상기 헤드 또는 디스플레이)를 우측 또는 좌측, 위 또는 아래, 및/또는 순방향 또는 역방향으로 이동하는 것을 나타낼 수도 있다.
(각) 또 다른 뷰(헤드 또는 디스플레이) 방향(포즈)(회전 및/또는 병진운동)은, 원하는 대로, 이를테면, 상기 제1 뷰(헤드 또는 디스플레이) 방향(포즈)에 대해, 하나 이상의(오일러) 각도들 또는 쿼터니온들, 및/또는 하나 이상의 (병진운동) 거리들 또는 벡터들의 형태로 규정되어도 된다.
복수의 상이한 뷰들의 하나 이상으로부터 렌더링된 데이터를 사용하여 출력 프레임을 생성하기 전에, 상이한 뷰 방향(포즈)에 근거하여 상기 씬의 상이한 뷰들을 나타내는 씬의 복수의 뷰들을 렌더링하는 아이디어는 그 권리에 있어서 신규하고 진보성이 있다고 믿는다.
따라서, 본 발명의 제5 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 생성하는 그래픽 처리 시스템의 동작방법을 제공하고, 이 방법은,
제1 뷰 방향에 근거하여 씬의 제1 뷰를 나타내는 제1 프레임을 렌더링하는 단계;
또 다른 뷰 방향에 근거하여 상기 씬의 또 다른 뷰를 각각 나타내는, 제1 프레임의 하나 이상의 또 다른 버전들을 렌더링하는 단계; 및
상기 렌더링된 제1 프레임으로부터의 렌더링된 데이터 및/또는, 상기 제1 프레임의 상기 하나 이상의 렌더링된 또 다른 버전의 하나 이상으로부터의 렌더링된 데이터를 사용하여, 표시용 출력 프레임을 생성하는 단계를 포함한다.
본 발명의 제6 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 처리회로에 의해 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 처리회로에 의해 생성하도록 구성된, 그래픽 처리 시스템을 제공하고;
상기 그래픽 처리 시스템은, 제1 뷰 방향에 근거하여 씬의 제1 뷰를 나타내는 제1 렌더링된 프레임에 대해:
또 다른 뷰 방향에 근거하여 상기 씬의 또 다른 뷰를 각각 나타내는, 제1 프레임의 하나 이상의 또 다른 버전들을 처리회로에 의해 렌더링하고 나서;
상기 렌더링된 제1 프레임으로부터의 렌더링된 데이터 및/또는, 상기 제1 프레임의 상기 하나 이상의 렌더링된 또 다른 버전의 하나 이상으로부터의 렌더링된 데이터를 사용하여, 표시용 출력 프레임을 처리회로에 의해 생성하도록, 한층 더 구성된다.
당업자라면 알듯이, 본 발명의 이 측면들 및 실시예들은, 적절하게, 여기서 설명된 본 발명의 상기 바람직한 및 선택적 특징들 중 하나 이상, 바람직하게는 전부를 포함할 수 있고, 바람직하게는 포함한다.
예를 들면, 이 측면들 및 실시예들에서, 상기 제1 프레임의 (각) 또 다른 버전은, 상기 제1 프레임이 상기 씬의 뷰를 나타내는 상기 (제1 시점이지만, (상이한(또 다른) 뷰포인트로부터 및/또는 상이한(또 다른) 뷰 방향으로) 상이한(또 다른) 뷰 방향(포즈)에 근거하여, 상기 씬의 (각각의) 또 다른 뷰를 나타내는 것이 바람직하다. 그렇지만, 상기 제1 프레임의 (각) 또 다른 버전은, 상기 제1 프레임에 대해, 상이한(또 다른), 바람직하게는, 나중의, 시점에서(그리고 상이한(또 다른) 뷰 방향(포즈)으로부터)) 상기 씬의 (각각의) 또 다른 뷰를 나타낼 수 있다.
출원인이 인식한 것은, 본 발명의 방식으로 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들을 렌더링하는 것이 특정한 이점들(예를 들면, 상술한 것과 같이)을 제공할 수 있지만, 또한 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들을 렌더링하지 않고 상기 제1 프레임을 렌더링하는 것과 비교하여 처리 요구사항이 증가될 수도 있다는 것이다. 이 때문에, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들을 렌더링하는데 필요한 처리를 감소, 회피 또는 최적화시키는 것이 바람직할 수도 있다. 이것은, 예를 들면, 휴대기기들이 처리원들(예를 들면, 휴대폰들 또는 태블릿들)을 제한하는 상황에 있어서, 특히 바람직할 수도 있다.
예를 들면, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 (각) 또 다른 버전은 상기 렌더링된 데이터를 필요로 하는 포인트에서, 예를 들면, 상기 렌더링된 데이터를 표시하기 위해 필요로 할 때, (상기 그래픽 처리 장치(GPU)에 의해) 렌더링될 수 있지만, 바람직한 실시예에서는, 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는 각각)은 상기 제1(애플리케이션) 프레임의 렌더링(과 거의 동시에)과 함께 (상기 그래픽 처리 장치(GPU)에 의해) 렌더링된다.
이에 관해서, 상기 출원인이 인식한 것은, (각) 또 다른 버전을 렌더링하는데 필요한 많은 상기 입력 데이터(예를 들면, 정점 데이터)가, 상기 제1(애플리케이션) 프레임을 렌더링하는데 필요한 입력 데이터와 같아도 되어, 상기 제1(애플리케이션) 프레임의 렌더링(과 거의 동시에)과 함께 (각) 또 다른 버전을 렌더링함으로써, 본 입력 데이터는, 렌더링 동안에 (상기 그래픽 처리 장치(GPU)에 의해) 재사용될 수 있어, 그것은 한번 캐시되기만 하여도 되고, 예를 들면 렌더링 프로세스가 보다 효율적으로 된다는 것이다.
따라서, 바람직한 실시예에 의하면, 상기 방법(상기 시스템)은, 제1 입력 데이터를 사용하여 상기 제1 프레임을 렌더링하는 것; 및 상기 제1 입력 데이터의 적어도 일부를 사용하여 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나(바람직하게는 각각)를 렌더링하는 것을 포함한다(포함하도록 구성된다).
다른 예와, 및 일 실시예에서, 상기 제1 프레임의 상기 하나 이상의 또 다른(추가의) 버전들은, 아티팩트들과 왜곡들의 가능성(심각성)을 감소시키기 위해서 필요할 가능성이 높을 때(만) 렌더링된다.
예를 들면, 상술한 것처럼, 상기 출원인이 인식한 것은, 시차 효과들로 인해, "타임워프" 및/또는 "스페이스워프" 처리를 행할 때의 왜곡들 및 아티팩트들이, 특히 명백하고, 카메라에(뷰포인트에) 가까운 오브젝트들이 있는 경우와, 뷰 방향(포즈)으로 보다 상당한 변화가 있는 경우에 보다 심할 수도 있다는 것이다.
따라서, 바람직한 실시예에 의하면, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)은, 상기 씬의 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가깝다고 결정될 때(만) 렌더링된다.
상기 씬의 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하는 것은, 임의의 적절하고 원하는 방식으로 행해질 수 있다. 일반적으로, 상기 씬의 오브젝트들이 배치되는 (월드) 스페이스내의 제1 뷰포인트에 오브젝트가 공간적으로 가까운지를, 그 스페이스내의 적절한 거리를 판정하고 그 판정된 거리를 적절한 (임계)값과 비교함으로써, 판정하는 것을 포함한다.
이러한 거리는, 임의의 적절하고 원하는 거리, 이를테면, 상기 씬의 제1 뷰에서의 오브젝트(또는 그 오브젝트의 엣지(들))와 적절한 기준(이를테면, 기준점(예를 들면, 제1 뷰포인트)이나, 기준면(예를 들면, 상기(제1) 뷰 절두체의 근 평면))과의 사이의 최단 거리 및/또는 평균 거리를 나타낼 수 있다.
이러한 거리는, 임의의 적절한 방향으로 규정되어도 되지만, 바람직하게는, 상기 씬 내부로(예를 들면, 상기(제1) 뷰 절두체의 근 평면으로부터 상기(제1) 뷰 절두체의 원 평면을 항하여, 제1 뷰 방향으로)의 깊이(Z값)을 나타낸다.
바람직하게는, 상기 판정된 거리(예를 들면, 깊이(Z값)가 하나 이상의(임계) 값들과 비교되어, 예를 들면, 상기 거리(예를 들면, 깊이(Z값)가 상기 하나 이상의(임계) 값들에 대해 하나 이상의 부등식들을 충족시키는지를 판정한다. 그후, 상기 씬의 제1 뷰에서의 오브젝트는, 상기 오브젝트와 상기 기준과의 사이의) 상기 거리가 상기 하나 이상의(임계) 값들에 대해 하나 이상의 부등식들을 충족시킬 때 상기 제1 뷰포인트에 가깝다고 판정되는 것이 바람직하다.
따라서, 예를 들면, 상기 씬의 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하는 것은, 거리(또는 상기 거리)(예를 들면, 깊이(Z값))가 (하이 및 로우 (임계) 값들에 의해 규정된) 특정한 범위내에 있거나, 어떤(임계) 값 미만(또는 이하)인지를 판정하는 것을 포함하여도 된다.
특히 바람직한 실시예에서, 상기 씬의 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하는 것은, 상기 씬내의 상기 오브젝트의 깊이(Z값)가 임계값 미만(또는 이하)인지를 판정하는 것과, 상기 씬의 제1 뷰에서의 오브젝트가, 상기 씬내의 상기 오브젝트의 깊이(Z값)가 임계값 미만(또는 이하)이다고 판정될 때 상기 제1 뷰포인트에 가깝다고 판정하는 것을 포함한다.
깊이(또는 상기 깊이)를 임계값과 비교하는 경우, 상기 임계값은 원하는 대로 선택될 수 있다. 그것은, 예를 들면, 상기 제1 프레임을 생성하는 상기 애플리케이션에 의해 설정(규정)된 고정된 임계값이어도 된다. 이와는 달리, 상기 임계값은, 예를 들면, (상기 기준으로부터의) 거리가 판정되는 중인 상기 오브젝트의 특성(또는 특성들)(이를테면, 상기 오브젝트의 사이즈 및/또는 형상)에 따라, 가변할 수도 있다.
상기 씬의 상기 제1 뷰가 (제1)(또는 상기 제1) 뷰 절두체내에 있는 오브젝트들(만)의 뷰인 경우, 상기 씬의 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하는 것은, 상기(제1) 뷰 절두체내에 있는 (가시적) 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하는 것을 포함하는 것을 알 것이다.
또한, 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하는 것은, 상기 제1 프레임을 렌더링하기 전에, 동시에, 또는 후에 행해질 수 있다는 것을 알 것이다.
상기 씬의 상기 제1 뷰에서 복수의 오브젝트들이 있는 경우, 상기 씬의 상기 제1 뷰에서 복수의 오브젝트들의 복수 및 바람직하게는 각각이 상기 제1 뷰포인트에 가까운지를 판정하는 것이 바람직할 것이다. 이에 따라, 상기 씬의 상기 제1 뷰에서 복수의 오브젝트들이 상기 제1 뷰포인트에 가깝다고 판정될 수도 있다는 것을 알 것이다.
상기 씬의 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하는 것은 상기 복수의 오브젝트들의 각각에 대해 개별적으로 행해질 수 있거나, 상기 복수의 오브젝트들은 예를 들면, 서로에 대한 공간적 근접성에 근거하여 상기 복수의 오브젝트들의 하나 이상을 각각 포함하는 하나 이상의 그룹들로 그룹화될 수 있고, 상기 판정은 상기 하나 이상의 그룹들의 하나 이상에 대해 행해질 수 있다.
따라서, 바람직한 실시예에서는, 하나 이상의 오브젝트들의 그룹이 상기 제1 뷰포인트에 가까운지를 판정한다. 이것은, 원하는 대로; 예를 들면, 상기 하나 이상의 오브젝트들의 그룹에서의 오브젝트와 기준(또는 상기 기준)과의 사이의 최단 거리를 판정함으로써, 또는, 예를 들면, 실질적으로 상술한 것처럼, 상기 하나 이상의 오브젝트들과 기준(또는 상기 기준)과의 사이의 평균 거리를 판정함으로써, 행해질 수 있다.
따라서, 바람직한 실시예에서, (상기(제1) 뷰 절두체내에 있는) 상기 씬의 상기 제1 뷰에서의 오브젝트(들)(의 그룹)가 상기 제1 뷰포인트에 가깝다고 판정될 때, 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는 각각)이 렌더링된다.
오브젝트가 상기 뷰포인트에 가깝다고 판정될 때(만) 상기 하나 이상의 또 다른(추가의) 버전들을 렌더링함으로써, 상기 또 다른(추가의) 버전들을 렌더링하는데 필요한 임의의 추가의 처리는, 아티팩트들과 왜곡들의 가능성(및 심각성)을 감소시키기 위해서 필요할 가능성이 높을 때만 행해질 수 있다. 이에 따라, "타임워프" 및/또는 "스페이스워프" 처리를 행할 때의 아티팩트들 및 왜곡들은, 효율적으로, 즉 상기 필요한 처리를 불필요하게 증가시키지 않고, 감소될 수 있다.
마찬가지로, 출원인이 인식한 것은, 상기 씬이 하나 이상의 이동 오브젝트들들을 포함하는 동적 씬인 경우에(만), (상기 제1 프레임이 상기 씬의 뷰를 나타내는 상기 제1 시점과 다른) 또 다른 시점에서 상기 씬의 또 다른 뷰를 나타내는 상기 제1 프레임의 또 다른 버전을 렌더링하는 것이 바람직할 수도 있다는 것이다.
따라서, 바람직한 실시예에서, 상기 방법(상기 시스템)은, 상기 씬의 상기 제1 뷰가 하나 이상의 이동 오브젝트들(의 그룹)을 포함하는지를 판정하는 것과, 상기 씬의 상기 제1 뷰가 하나 이상의 이동 오브젝트들(의 그룹)을 포함한다고 판정될 때, (상기 제1 시점과 다른) 또 다른 시점에서 상기 씬의 또 다른 뷰를 각각 나타내는 상기 제1 프레임의 하나 이상의 또 다른 버전들을 렌더링하는 것을 포함한다(포함하도록 구성된다).
상기 씬의 상기 제1 뷰가 하나 이상의 이동 오브젝트들(의 그룹)을 포함하는지를 판정하는 것은, 임의의 적절하고 원하는 방식으로 행해질 수 있다. 예를 들면, 이동 오브젝트들의 존재는, 예를 들면, 연속적 프레임들의 적절한 비교를 사용하여 판정될 수 있다. 그렇지만, 바람직한 실시예에서, 상기 씬의 상기 제1 뷰에서의 임의의 이동 오브젝트들의 존재는, 상기 제1 프레임(및 또 다른 버전(들)을 생성하는 상기 애플리케이션에 의해 나타내어진다.
다른 예와, 일 실시예에서, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)은 상기 그래픽 처리 시스템이 그렇게 행할 수 있을 때(만) 렌더링되어도 된다.
이에 관해서, 출원인이 인식한 것은, 일부의 경우에, 예를 들면, 상기 추가의 처리가 상기 시스템 능력을 초과하여서 예를 들면, 상기 제1 프레임의 렌더링에 영향을 미칠 수 있기 때문에 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들을 렌더링하도록 행해지는 상기 처리에 한정하는 것이 바람직할 수도 있다는 것이다. 이 경우에, 상기 제1 프레임의 상기 렌더링된 또 다른 버전들의 수를 감소시키거나, 실제로, 전혀 또 다른 버전도 렌더링하지 않고, 그 대신에 상기 제1 프레임만을 렌더링하는 것이 바람직할 수도 있다.
따라서, 바람직한 실시예에 의하면, 상기 방법(상기 시스템)은, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)을 렌더링하는 것이, 행해지는 경우, 상기 그래픽 처리 시스템의 처리 한계를 초과하지 않을 것인지를 판정하는 것; 및 상기 처리 한계가 초과되지 않을 것이라고 판정될 때, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 상기 하나 이상(바람직하게는, 각각)을 렌더링하는 것을 포함한다(포함하도록 구성된다).
이에 대응하게, 바람직한 실시예에서, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)을 렌더링하는 것이, 행해지는 경우, 상기 그래픽 처리 시스템의 처리 한계를 초과할 것인지와, 상기 처리 한계를 초과할 것이라고 판정될 때, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상(각각)이 렌더링되지 않는지를, 판정되어도 된다.
다른 예와, 일 실시예에서, 상기 하나 이상의 또 다른 버전들이 근거하여 렌더링되는, 렌더링되는 또 다른 버전들의 수 및/또는 상기 또 다른 시점, 및/또는 또 다른 뷰포인트들 및/또는 또 다른 뷰 방향들(또 다른 뷰 방향들(포즈들))은, 상기 렌더링된 또 다른 버전들을 사용하여 달성될 것이라고 예측되는(또는 달성될), 및/또는 허용될 것과 같은(또는 허용될) 상기 출력(화상) 품질에 대해, 상기 또 다른 버전들을 렌더링하는데 필요한 상기 추가의 처리에 근거하여 선택되는 것이 바람직하다. 바람직하게는, 상기 선택은, 이러한 방식으로 행해져, 상기 추가의 처리 요구사항과 상기(잠재적)(화상) 품질과의 사이의 최적의 균형을 이룬다(이루려고 한다), 예를 들면 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들을 렌더링하는데 필요한 상기 추가의 처리와, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들을 렌더링하여서 제공될 수도 있는 상기 가상현실(VR) 및/또는 증강현실(AR) 경험에 대한 상기(잠재적) 향상과 사이의 "트레이드-오프"를 이룬다.
예를 들면 및 바람직한 실시예에서, 상기 (예를 들면, 헤드 장착) 디스플레이 시스템의 유저가 상기 제1 프레임을 사용하여 표시할 기간동안에 할지도 모르는 상기 (헤드 또는 디스플레이) 이동은, 예측 또는 가정되어도 되고, 상기 제1 프레임의 (각) 또 다른 버전이 근거하여 렌더링되는, 또 다른 시점, 및/또는 뷰포인트 및/또는 뷰 방향(뷰 방향(포즈))을 선택하는데 사용되어도 된다.
따라서, 바람직한 실시예에서, 상기 제1 프레임의 (각) 또 다른 버전이 근거하여 렌더링되는 또 다른 뷰(헤드 또는 디스플레이)방향(포즈)은, 상기 제1(애플리케이션) 프레임이 표시를 위해 사용중인 기간 동안에, 상기 제1(애플리케이션) 프레임이 근거하여 렌더링되는 상기 제1 뷰(헤드 또는 디스플레이) 방향(포즈)(으로부터 시작하여)에 대해 상기 (예를 들면, 헤드 장착) 디스플레이의 유저가 할지도 모르는 예측된 또는 가정된(헤드 또는 디스플레이) 이동(예를 들면, 회전 및/또는 병진운동)을 나타낸다.
따라서, 바람직한 실시예에서, 또 다른 뷰 방향(포즈)(뷰포인트 및/또는 뷰 방향)에 근거하여 렌더링되는 (각) 또 다른 버전은, 상기(예를 들면, 헤드 장착) 디스플레이의 유저가, 상기 제1(애플리케이션) 프레임을 표시를 위해 사용중인 기간동안에, 상기 제1(애플리케이션) 프레임이 근거하여 렌더링되는 상기 제1 뷰(헤드 또는 디스플레이) 방향(포즈)(으로부터 시작하여)에 대해 상기 (예를 들면, 헤드 장착) 디스플레이의 유저가 행할지도 모르는 예측된 또는 가정된(헤드 또는 디스플레이) 이동(예를 들면, 회전 및/또는 병진운동)에 근거하여 보일 때 상기 씬의 또 다른 뷰를 나타낸다.
다른 바람직한 실시예에서, (각) 또 다른 버전이 근거하여 렌더링되는 또 다른 시점, 및/또는 뷰포인트 및/또는 뷰 방향(뷰 방향(포즈))은, ("타임워프" 및/또는 "스페이스워프" 처리를 행할 때) 아티팩트들과 왜곡들로부터 겪을 가능성이 높을 수도 있는 상기 씬의 영역들에 렌더링된 데이터를 제공하도록, 선택된다.
예를 들면, 일 실시예에서, (예를 들면, 오브젝트 깊이 및/또는 오브젝트 움직임 정보를 사용하여) 가려짐 효과가 일어날 가능성이 높은 경우 또는 높을 때, 판정될 수도 있고, 그리고, 또 다른 뷰(또는 뷰들)이 근거하여 렌더링되는 상기 또 다른 시점, 및/또는 뷰포인트 및/또는 뷰 방향은, 그 가려짐 효과들을 완화하기 위해 렌더링된 데이터를 제공하도록 선택된다.
일 실시예에서, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)은, 특별한, 바람직하게는 선택된, 바람직하게는 소정의, 하나 이상의 또 다른 시점, 및/또는 또 다른 뷰포인트 및/또는 또 다른 뷰 방향(또 다른 뷰 방향들(포즈들))(의 고정된 수)의 세트로부터 취해진, 각각의 또 다른 시점, 및/또는 또 다른 뷰포인트 및/또는 또 다른 뷰 방향(또 다른 뷰 방향(포즈))에 근거하여, 각각 렌더링될 수도 있다. 이러한 세트는, 예를 들면, 런타임 전(렌더링 전)에, 애플리케이션(또는 상기 애플리케이션)에 의해 규정(설정)되어도 된다. 그것은, 예를 들면, 이력적(헤드 또는 디스플레이) 추적(방향(포즈)) 데이터, 및/또는 시점들에 근거하여, 예측된(헤드 또는 디스플레이)이동(회전 및/또는 병진운동)의 적절한 범위를 커버하도록, 선택되어도 된다.
다른 실시예에서, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)은, 예를 들면, 런타임에서 결정된 파라미터들이나 특성들에 근거하여, 예를 들면 런타임에서 감지된 (헤드 또는 디스플레이) 추적(방향(포즈)) 정보에 근거하여, 사용중 동적으로 선택되는, 각각의 또 다른 시점, 및/또는, 또 다른 뷰포인트 및/또는 또 다른 뷰 방향(또 다른 뷰 방향(포즈))에 근거하여, 각각 렌더링되어도 된다.
예를 들면 및 일 실시예에서, 상기 하나 이상의 또 다른 버전들이 근거하여 렌더링되는, 렌더링된 상기 제1 프레임의 또 다른 버전들의 수 및/또는 상기 또 다른 시점, 및/또는 또 다른 뷰포인트들 및/또는 또 다른 뷰 방향들(또 다른 뷰 방향들(포즈들))은, 예를 들면, 상기 제1 뷰포인트에 가깝다고 판정되고 및/또는 이동중이라고 판정된 상기 오브젝트(들)(의 그룹)에 관련된 하나 이상의 인자, 이를테면, 상기 오브젝트(들)(의 그룹)의 사이즈, 형상 또는 속도 및/또는 상기 씬에서의 상기 오브젝트(들)(의 그룹)의 깊이에 따라 가변되어도 된다.
예를 들면, 상기 제1 프레임의 보다 높은 수의 또 다른 버전들은, 오브젝트(들)(의 그룹)이 상기 제1 뷰포인트에 보다 가깝고, 보다 크고, 및/또는 보다 빨리 이동하는 경우에, 예를 들면 적절한 렌더링된 데이터가 이용 가능하는 것을 보장하도록, 렌더링되어도 된다.
추가로 또는 이와는 달리, 상기 하나 이상의 또 다른 버전들이 근거하여 렌더링되는, 렌더링된 또 다른 버전들의 수 및/또는 또 다른 시점들, 및/또는 또 다른 뷰포인트들 및/또는 또 다른 뷰 방향들(또 다른 뷰 방향들(포즈들))은, 상기 (가상현실(VR) 및/또는 증강현실(AR)(헤드 장착) 디스플레이 시스템(의 하나 이상의 센서들)에 의해 감지된) 최근의 뷰(헤드) 추적(방향(포즈)) 정보에 근거하여 선택되어도 된다.
예를 들면, 최신 뷰(헤드) 추적(방향(포즈)) 정보는 상기 헤드 장착 디스플레이의 유저가 만들 가능성이 높은 차후(future) 뷰(헤드)이동(회전 및/또는 병진운동)을 예측하는데 사용되어도 되고, 상기 하나 이상의 또 다른 버전들이 근거하여 렌더링되는, 또 다른 버전들의 수 및/또는 또 다른 시점들, 및/또는 또 다른 뷰포인트들 및/또는 또 다른 뷰 방향들(또 다른 뷰 방향들(포즈들))은 상기 예측된 뷰(헤드)이동(회전 및/또는 병진운동)에 근거하여 선택되어도 된다.
예를 들면, 최신 뷰(헤드 또는 디스플레이)추적(방향(포즈)) 정보가 상기(헤드 장착) 디스플레이의 유저가 자신의 헤드(또는 디스플레이)를 특별한 방향으로 이동한(회전한 및/또는 병진운동시킨) 것을 나타내면, 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는 각)은 뷰(헤드)이동(회전 및/또는 병진운동)을 그 방향으로 나타내는 또 다른 뷰포인트 및/또는 뷰 방향에 근거하여 렌더링되어도 되어, 예를 들면 유저가 자신의 헤드를 그 방향으로 계속 이동중(회전중 및/또는 병진운동중)이라면, 적절한 또 다른 버전이 렌더링되어 있었을 것이다.
다른 예에서, 최신 뷰(헤드)추적(방향(포즈)) 정보가 유저가 자신의 헤드(또는 디스플레이)를 신속하게 이동중(회전중 및/또는 병진운동중)이었다는 것을 나타내면, 또 다른 버전들의 수는 감소될 수도 있고, 및/또는 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)은, 상기 최신 뷰(헤드)추적(방향(포즈)) 정보가 유저가 자신의 헤드(또는 디스플레이)를 보다 느리게(이와는 반대로) 이동중(회전중 및/또는 병진운동중)이었다는 것을 나타내면, 이와는 달리 선택되는 것보다 큰 뷰(헤드)이동(회전 및/또는 병진운동)을 나타내도록 선택되어도 되어, 예를 들면, 유저가 자신의 헤드(또는 디스플레이)를 신속하게(또는 느리게) 계속 이동중(회전중 및/또는 병진운동중)이라면, 적절한 또 다른 버전(들)이 렌더링되어 있었을 것이다.
추가로 또는 이와는 달리, 상기 하나 이상의 또 다른 버전들이 근거하여 렌더링되는, 또 다른 버전들의 수 및/또는 또 다른 시점들, 및/또는 또 다른 뷰포인트들 및/또는 또 다른 뷰 방향들(또 다른 뷰 방향들(포즈들))은, 가능성이 높은 유저 뷰(헤드) 이동들(회전들 및/또는 병진운동들)에 근거하여, 예를 들면, 상기 제1 프레임(및 또 다른 버전(들))이 렌더링되는 상기 애플리케이션에 의해 (런타임에) 제공된 정보에 근거하여, 선택되어도 된다.
예를 들면, 유저가, 예를 들면, 유저가 단일의 바람직한 방향으로 볼 것으로 예상되기 때문에, 자신의 헤드(또는 디스플레이)를 이동할 가능성이 적을 때, 또는, 유저가, 예를 들면, 게임중 앉아 있기 때문에, 자신의 헤드를 크게 움직일 가능성이 적을 때, 또 다른 버전들의 수는 감소될 수도 있고, 및/또는 (바람직하게는, 각각) 또 다른 버전이 근거하여 렌더링되는 또 다른 뷰포인트 및/또는 뷰 방향(뷰(헤드) 방향(포즈))은, 유저가 자신의 헤드(또는 디스플레이)를 (크게)(이와는 반대로) 이동할 가능성이 보다 높은 경우 달리 선택되는 것보다 작은 뷰(헤드)이동(회전 및/또는 병진운동)을 나타내도록 선택되어도 된다.
마찬가지로, 유저가, 예를 들면, 유저가 게임중 막 코너를 돌려고 하고 있기 때문에(또는 도는 중이기 때문에) 자신의 헤드(또는 디스플레이)를 특별한 방향으로 이동할 가능성이 보다 높을 때, 또 다른 버전들의 수는 증가될 수도 있고, 및/또는 (바람직하게는, 각각) 또 다른 버전이 근거하여 렌더링되는 또 다른 뷰포인트 및/또는 뷰 방향(뷰(헤드) 방향(포즈))은, 특별한 방향으로 뷰(헤드)이동(회전 및/또는 병진운동)을 나타내도록 선택되어도 되어, 예를 들면, 유저가 자신의 헤드(또는 디스플레이)를 그 방향으로 이동(회전 및/또는 병진운동)하도록, 예를 들면, 상기 코너를 둘러보면, 적절한 또 다른 버전이 렌더링되어 있었을 것이다.
추가로 또는 이와는 달리, 이미 언급된 것처럼, 상기 하나 이상의 또 다른 버전들이 근거하여 렌더링되는, 또 다른 버전들의 수 및/또는 또 다른 시점들, 및/또는 또 다른 뷰포인트들 및/또는 또 다른 뷰 방향들(또 다른 뷰 방향들(포즈들))은, 예를 들면, 상기 그래픽 처리장치(GPU) 및/또는 그래픽 처리 시스템 전체의 타이밍 및/또는 처리 능력에 따라 가변될 수도 있다. 예를 들면, 제1 프레임의 렌더링된 또 다른 버전들의 수는, 상기 그래픽 처리 시스템의 처리 능력을 초과할 때 감소될 수도 있다.
따라서, 바람직한 실시예에 의하면, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들(의 바람직하게는, 각각)이 근거하여 렌더링되는, 또 다른 시점, 및/또는 뷰포인트 및/또는 뷰 방향은, (i)상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정된 오브젝트(들)(의 그룹)의 하나 이상의 특성들; (ii) 수신된 뷰(헤드)방향(포즈)데이터;(iii) 상기 제1 프레임이 렌더링중인 애플리케이션에서 제공한 정보; 및 (iv) 상기 그래픽 처리 시스템의 처리능력 중, 적어도 하나에 근거하여 선택된다.
상술한 것처럼, 눈마다 제1 프레임(및 각각의 또 다른 버전(들))이 렌더링되어도 된다는 것을 알 것이다. 따라서, 일 실시예에 의하면, 제1 프레임과 상기 제1 프레임의 적어도 하나의 또 다른 버전은, (상기) 출력 프레임이 상기(각각) 눈에 대해 생성되기 전에) (바람직하게는, 각각) 눈에 대해 렌더링된다. 따라서, 일 실시예에 의하면, 상기 씬의 적어도 3개의 상이한 뷰들이, 예를 들면 및 바람직하게는, (적어도) 제1 눈에 대한 제1(애플리케이션) 프레임, 다른쪽 눈에 대한 다른(애플리케이션) 프레임, 및 적어도 하나의 또 다른 버전의 상기 제1 또는 상기 다른 프레임이, 렌더링된다.
이에 관해서, 출원인이 인식한 것은, 일부의 상황에 있어서, 다른쪽 눈에 대한 한쪽의 눈에 대해 렌더링된 데이터를 사용함으로써, 별도로 요구될 처리를 절감하는 것이 가능할 수도 있다는 것이다. 예를 들면, 상기 제1 프레임으로부터 및/또는 한쪽 눈에 대해 렌더링된 상기 하나 이상의 또 다른 버전들 중 하나 이상으로부터의, 렌더링된 데이터는, 제1 프레임에 대한, 및/또는 다른 쪽 눈에 대한 하나 이상의 또 다른 버전들에 대한, 렌더링된 데이터로서 사용되어도 된다. 이것은, 예를 들면, 한쪽 눈에 대한 데이터가 근거하여 렌더링되는, 상기(시점), 뷰포인트 및 뷰방향이, 다른 쪽 눈에 대한 데이터 근거하여 렌더링될 상기(시점), 뷰포인트 및 뷰방향과 같은(또는 (충분히) 유사한) 경우에 가능할 수도 있다.
따라서, 일 실시예에 의하면, 상기 방법(상기 시스템)은, 제1 눈에 대한 데이터가 근거하여 렌더링되는 상기(시점), 뷰포인트 및 뷰방향이 다른 쪽 눈에 대한 데이터가 근거하여 렌더링될 상기(시점), 뷰포인트 및 뷰방향과 같을(또는 유사할) 때를 인식하는 것과, 상기 제1 눈에 대한 데이터가 근거하여 렌더링되는 상기(시점), 뷰포인트 및 뷰방향이 다른 쪽 눈에 대한 데이터가 근거하여 렌더링될 (상기 시점), 뷰포인트 및 뷰방향과 같다(또는 유사하다)고 인식될 때, 다른 쪽 눈에 대한 상기 데이터를 렌더링하는 것을 생략하는 것과, 대신에 다른 쪽 눈에 대한 상기 제1 눈에 대해 렌더링된 상기 데이터를 사용하는 것을 포함한다(포함하도록 구성된다).
다른 예와, 일 실시예에서, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)은, 렌더링되고 및/또는, 상기 제1 프레임에 대해 보다 낮은(화상) 품질로 ((상기)메모리에) 저장되어, 예를 들면, 상기 또 다른 버전들을 렌더링 및/또는 저장 및/또는 처리하는데 필요한 처리 및/또는 저장이 상기 제1 프레임과 같은 (화상) 품질로 상기 또 다른 버전들을 렌더링 및/또는 저장하는 것과 비교하여, 감소된다. 예를 들면, (각) 또 다른 버전은, 바람직하게는, 상기 제1 프레임에 대해 ((화상 면적당) 데이터 요소들이 보다 적은) 보다 낮은 해상도로 렌더링된다. 추가로 또는 이와는 달리, (각) 또 다른 버전은, 바람직하게는, 상기 제1 프레임에 대해 보다 낮은 (색) 정밀도(비트 깊이)로 렌더링된다. 마찬가지로, 다른 실시예에서, (각) 또 다른 버전은, 바람직하게는, 상기 제1 프레임에 대해 같거나 보다 낮은 (화상) 품질(예를 들면, 같거나 보다 낮은 해상도 및/또는 정밀도)로 초기에 렌더링되지만, 바람직하게는 로시(lossy) 압축방식을 사용하여 상기 제1 프레임보다 큰 정도로 압축되어, 예를 들면 상기 제1 프레임의 상기 또 다른 버전(들)에 대해 비교적 보다 낮은 (화상) 품질로 (상기) 메모리에 저장된다.
추가로 또는 이와는 달리, 상기 제1 프레임의 또 다른 버전들은, 상기 제1 프레임(에 대해 보다 낮은 비율로)보다 (상기 그래픽 처리 장치(GPU)에 의해) 가끔 갱신되는 것이 바람직하여, 예를 들면 또 다른 버전의 상기 제1 프레임은 상기 제1 프레임보다 많은 표시용 출력 프레임들을 생성하는데 사용되도록 이용 가능하다. 따라서, 바람직한 실시예에서, 상기 방법(상기 시스템)은, 제1 속도로 상기 제1 프레임을 갱신하는 것; 및 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)의 상기 제1 프레임을 상기 제1 속도보다 낮은(느린) 제2 속도로 갱신하는 것을 포함한다(포함하도록 구성된다). 따라서, 일 실시예에서, 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)의 제1 렌더링된(애플리케이션) 프레임은, 바람직하게는, 또 다른 버전의 다른(예를 들면, 다음의)(애플리케이션) 프레임으로서 재사용된다.
다른 예와, 일 실시예에서, 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)의 상기 제1 프레임은, 상기 제1(애플리케이션) 프레임의 영역(region)(만), 예를 들면 및 바람직한 실시예에서, 가까운 오브젝트 및/또는 이동 오브젝트를 포함하는 상기 제1(애플리케이션) 프레임의 영역에 해당한다.
출원인이 인식한 것은, (예를 들면, 가까운 오브젝트 및/또는 이동 오브젝트를 포함하는) 상기 제1(애플리케이션) 프레임의 영역(만)을 렌더링함으로써, 상기 또 다른(추가의) 버전을 렌더링하는데 필요한 추가의 처리는, 아티팩트들 및 왜곡들로부터 겪을 가능성이 보다 높은 상기 제1(애플리케이션) 프레임의 영역들, 예를 들면, 상기 카메라(상기 뷰포인트)에 가깝고 및/또는 이동중인 오브젝트들을 포함하는 영역들에 한정될 수 있다는 것이다.
따라서, 바람직한 실시예에서, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상(바람직하게는, 각각)은, 바람직하게는, 상기 제1 뷰포인트에 가깝다고 판정된 (상기) 오브젝트(들)(의 그룹) 및/또는 이동중이라고 판정된 (상기) 오브젝트(들)(의 그룹)를 포함하는 상기 제1 프레임의 영역에 해당한다.
이 경우에, 상기 제1 프레임의 (각각의) 또 다른 버전(들)이 리렌더링되는 (상기 제1 포인트에 가깝고 및/또는 이동이라고 판정된 상기 오브젝트(들)(의 그룹)를 포함하는) 상기 제1 프레임의 (각) 영역은, 원하는 대로 판정될 수 있다. 리렌더링하기 위한 상기 영역들이 하나 이상 있을 수도 있다. 예를 들면, 영역이 하나일 수도 있고, 이때 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 전부가 동일한 단일의 영역에 대해 리렌더링되거나, 각 또 다른 버전의 상기 제1 프레임은 상이한 영역에 대해 리렌더링되어도 된다.
상기 제1 프레임에서 나타낸 상기 제1 뷰에서의 단일의 오브젝트만이 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정되는 경우, 단일의 오브젝트를 포함하는 상기 제1 프레임의 단일의 영역만이, (상기 하나 이상의 또 다른 버전들의 각각, 일부 또는 전부를 리렌더링하기 위해) 판정되어도 된다.
그렇지만, 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정되어 있던 복수의 오브젝트들이 있는 경우에, 리렌더링하기 위한 각각의 영역은, (상기 하나 이상의 또 다른 버전들의 각각, 일부 또는 전부에 대해) 상기 판정된 복수의 오브젝트들의 각각에 대해 판정되어도 된다. 이 경우에, (상기 하나 이상의 또 다른 버전들의 각각, 일부 또는 전부에 대해) 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정된 복수의 오브젝트들 중 단일의 오브젝트를 각각 포함하는, 리렌더링하기 위한 복수의 영역들이 있다.
이와는 달리, 오브젝트들은, 예를 들면, (예를 들면, 상술한 것처럼) 서로 공간적 근접성에 근거하여, 하나 이상의 오브젝트들을 각각 포함하는 하나 이상의 그룹들로 그룹화되어도 되고, 리렌더링하기 위한 각각의 영역은, (상기 하나 이상의 또 다른 버전들의 각각, 일부 또는 전부에 대해) 상기 판정된 복수의 오브젝트들의 각각의 그룹마다 판정되어도 된다. 이 경우에, (상기 하나 이상의 또 다른 버전들의 각각, 일부 또는 전부에 대해) 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정되는 복수의 오브젝트들 중 하나 이상의 그룹화된 오브젝트들을 각각 포함하는, 리렌더링하기 위한 하나 이상의 영역들이 있다.
이와는 달리, 리렌더링하기 위한 단일의 영역은, (상기 하나 이상의 또 다른 버전들의 각각, 일부 또는 전부에 대해) 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정된 복수의 오브젝트들의 전부를 포함한다고 판정되어도 된다.
이미 언급된 것처럼, 리렌더링하기 위한 (바람직하게는, 각) 영역은, 상기 제1 프레임의 일부 또는 전부를 커버하여도 된다. 예를 들면, 일 실시예에서, 전체 제1 프레임을 커버하는(또, 상기 가까운 및/또는 이동 오브젝트(들)(의 전부)를 포함하는) 리렌더링하기 위한 단일의 영역이 판정되어, 상기 (각) 또 다른 버전은 상기 제1 프레임과 같은 사이즈로 리렌더링된다. 다른 실시예에서, 리렌더링하기 위한 (바람직하게는, 각) 영역은, 상기 제1 프레임의 일부만을 커버하여, 상기 (각) 각각의 또 다른 버전은, (단지 일부이지 전부가 아닌 상기 제1 프레임을 포함하는) 상기 제1 프레임보다 작다.
리렌더링하기 위한 (각) 영역이 상기 제1 프레임의 일부만을 커버하는 경우, 상기 (각) 영역이 커버하는 상기 제1 프레임의 일부는, 바람직하게는, (각) 각각의 가까운 오브젝트 및/또는 이동 오브젝트(의 일부 또는 전부)를 포함하고, 이와 달리 원하는 대로 판정될 수 있다.
예를 들면, 리렌더링하기 위한 상기 (각) 영역은, 원하는 대로, 다른 하나 이상의 영역과 중첩할 수 있거나 중첩하지 않을 수 있다. 상기 (각) 영역은 상기 제1 프레임에 정확히 보일 때 상기 (각) 영역이 포함하는 (각) 각각의 가까운 오브젝트 및/또는 이동 오브젝트의 형상과 일치하여도 되거나, 원하는 경우 여백을 포함할 수 있다.
바람직한 실시예에서, 리렌더링하기 위한 상기 (각) 영역은, 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정된 상기 (각기 각각의) 오브젝트를 둘러싸는 (바람직하게는, 직사각형의) 경계 박스를 판정하여서 판정되어도 된다. 이러한 경계 박스는, 원하는 경우, 예를 들면 및 바람직하게는, 상기 각각의 또 다른 뷰 방향(포즈)이 헤드 또는 디스플레이 이동(회전 및/또는 병진운동)을 나타내는 방향으로, 최소의 경계 박스이어도 되거나, 여백을 포함할 수 있다.
이미 언급된 것처럼, 리렌더링하기 위한 (각) 영역은, 원하는 대로, 상기 (각기 각각의) 오브젝트의 일부 또는 전부를 포함할 수 있다. 이에 관해서, 출원인이 인식한 것은, 상기 (각) 또 다른 버전을 렌더링하는데 필요한 상기 처리를 최소화하는 것이 바람직할 수도 있고, 이것은 리렌더링하기 위한 상기 (각) 영역의 사이즈를 최소화함으로써 이루어질 수도 있다는 것이다. 출원인이 추가로 인식한 것은, 보다 큰 영역들을 리렌더링하여 화질이 개선될 수도 있지만, 각각의 또 다른 버전을 렌더링하여 "타임워프" 및/또는 "스페이스워프" 처리를 행할 때 가장 심한 아티팩트들과 왜곡들의 가능성을 감소시켜야 하는 영역의 최소 사이즈는 "가려지지 않는" 상기 씬의 영역들, 즉 상기 씬의 상기 제1 뷰에서 가려지지만 (시차효과 및/또는 오브젝트 이동으로 인해) 가까운 오브젝트 및/또는 이동 오브젝트(들)에 의해 가려지지 않아서 각각의 또 다른 버전이 나타내는 상기 씬의 각각의 또 다른 뷰에서 보여질 수 있도록 상기 제1(애플리케이션) 프레임이 나타내는 상기 씬의 상기 제1 뷰에서 상기 가까운 오브젝트 및/또는 이동 오브젝트(들)(에 대해 보다 큰 깊이로) 뒤에 있는 상기 씬의 영역들과, 가까운 오브젝트 및/또는 이동 오브젝트(들)에 해당하는데, 그 이유는, "타임워프" 및/또는 "스페이스워프" 처리에 의해 크게 왜곡될 수도 있는 상기 씬의 상기와 같은 영역들이기 때문이다, 예를 들면, 그 영역들에 대한 렌더링된 데이터가 전체적으로 상기 제1(애플리케이션) 프레임으로부터 놓치고 있기 때문이다. 따라서, 리렌더링하기 위한 상기 (각) 영역은, 바람직하게는, 상기 씬의 상기 영역들(만)에 해당하여, 상기 (각) 각각의 또 다른 버전은 바람직하게는 상기 씬의 상기 영역들(만)에 대해서 렌더링된다.
따라서, 상기 제1 프레임의 각각의 또 다른 버전이 리렌더링되는 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정된 오브젝트(들)(의 그룹)을 포함하는 상기 제1 프레임의 (각) 영역은, 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정된 상기 오브젝트(들)(의 그룹)(의 전부)를 포함하는 상기 씬의 영역(이라고)과, 상기 제1 프레임이 나타내는 상기 씬의 상기 제1 뷰에서 상기 제1 뷰포인트에 가깝고 및/또는 이동이라고 판정된 상기 오브젝트(들)(의 그룹)에 의해 가려지지만, 상기 각각의 또 다른 버전이 나타내는 상기 씬의 상기 각각의 또 다른 뷰에서 상기 오브젝트(들)(의 그룹)에 의해 가려지지 않는 상기 씬의 일부(영역)(이라고)으로서, 판정되는 것이 바람직하다.
따라서, 바람직한 실시예에서, 상기 방법(상기 시스템)은, 상기 하나 이상의 또 다른 버전들의 적어도 하나(바람직하게는, 각각)에 대해: 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정된 오브젝트(들)(의 그룹)와, 상기 제1 프레임이 나타내는 상기 씬의 상기 제1 뷰에서 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정된 상기 오브젝트(들)(의 그룹)에 의해 가려지지만, 각각의 또 다른 버전이 나타내는 상기 씬의 상기 각각의 또 다른 뷰에서 상기 오브젝트(들)(의 그룹)에 의해 가려지지 않는 상기 씬의 일부를, 포함하는 상기 씬의 영역을 판정하는 것; 및 상기 씬의 상기 판정된 각각의 영역(에 근거하여 일부이지만 전부가 아닌 상기 제1 프레임)에 대해서만 상기 각각의 또 다른 버전을 렌더링하는 것을 포함한다(포함하도록 구성된다).
씬의 뷰가 가까운 오브젝트 및/또는 이동 오브젝트를 포함하는지를 판정하고 나서, 상기 가까운 오브젝트 및/또는 이동 오브젝트를 포함하는 상기 씬의 또 다른 버전들의 영역들을 렌더링하는 아이디어가, 권리에 있어서 신규하고 진보성이 있다는 믿는다.
따라서, 본 발명의 제7 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 생성하는 그래픽 처리 시스템의 동작방법을 제공하고, 이 방법은,
제1 뷰 방향에 근거하여 제1 뷰포인트로부터 씬의 제1 뷰를 나타내는 제1 프레임을 렌더링하는 단계;
상기 씬의 상기 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하는 단계; 및
상기 씬의 상기 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가깝다고 판정될 경우:
상기 제1 뷰 방향에 대해 하나 이상의 또 다른 뷰 방향의 각각에 대해, 상기 제1 뷰포인트에 가깝다고 판정된 상기 오브젝트를 포함하는 상기 제1 프레임의 각각의 또 다른 버전의 각각의 영역을 렌더링하는 단계를 포함한다.
본 발명의 제8 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 처리회로에 의해 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 처리회로에 의해 생성하도록 구성된, 그래픽 처리 시스템을 제공하고;
상기 그래픽 처리 시스템은, 제1 뷰 방향에 근거하여 제1 뷰포인트로부터 씬의 제1 뷰를 나타내는 제1 렌더링된 프레임에 대해:
상기 씬의 상기 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 처리회로에 의해 판정하고,
상기 씬의 상기 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가깝다고 판정될 경우:
상기 제1 뷰 방향에 대해 하나 이상의 또 다른 뷰 방향의 각각에 대해, 상기 제1 뷰포인트에 가깝다고 판정된 상기 오브젝트를 포함하는 프레임의 각각의 또 다른 버전의 각각의 영역을 처리회로에 의해 렌더링하도록 한층 더 구성된다.
본 발명의 제9 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 렌더링하고, 수신된 헤드 방향 데이터에 근거하여 렌더링된 프레임들을 변환하고, 이렇게 해서 표시를 위해 변환된 프레임들을 제공하는 그래픽 처리 시스템의 동작방법을 제공하고, 이 방법은,
제1 헤드 방향에 근거하여 제1 뷰포인트로부터 씬의 제1 뷰를 나타내는 제1 프레임을 렌더링하는 단계;
상기 씬의 상기 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하는 단계; 및
상기 씬의 상기 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가깝다고 판정될 경우:
상기 제1 헤드 방향에 대해 하나 이상의 또 다른 헤드 방향의 각각에 대해, 상기 제1 뷰포인트에 가깝다고 판정된 상기 오브젝트를 포함하는 상기 제1 프레임의 각각의 또 다른 버전의 각각의 영역을 렌더링하는 단계를 포함한다.
본 발명의 제10 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 렌더링하고, 수신된 헤드 방향 데이터에 근거하여 렌더링된 프레임들을 변환하고, 이렇게 해서 표시를 위해 변환된 프레임들을 제공하도로 구성된 처리회로; 및
제1 헤드 방향에 근거하여 제1 뷰포인트로부터 씬의 제1 뷰를 나타내는 제1 렌더링된 프레임에 대해, 상기 씬의 상기 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하고,
상기 씬의 상기 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가깝다고 판정될 경우:
상기 제1 헤드 방향에 대해 하나 이상의 또 다른 헤드 방향의 각각에 대해, 상기 제1 뷰포인트에 가깝다고 판정된 상기 오브젝트를 포함하는 상기 제1 프레임의 각각의 또 다른 버전의 각각의 영역을, 그래픽 처리 시스템에 대해 렌더링시키도록 구성된, 처리회로를 구비하는, 상기 그래픽 처리 시스템을 제공한다.
본 발명의 제11 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 생성하는 그래픽 처리 시스템의 동작방법을 제공하고, 이 방법은,
제1 시점에서 씬의 제1 뷰를 나타내는 제1 프레임을 렌더링하는 단계;
상기 씬의 상기 제1 뷰에서의 오브젝트가 이동중인지를 판정하는 단계; 및
상기 씬의 상기 제1 뷰에서의 오브젝트가 이동중이라고 판정될 경우:
하나 이상의 또 다른 시점들의 각각에 대해, 상기 이동중이라고 판정된 오브젝트를 포함하는 상기 제1 프레임의 각각의 또 다른 버전의 각각의 영역을 렌더링하는 단계를 포함한다.
본 발명의 제12 측면에서는, 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 처리회로에 의해 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 처리회로에 의해 생성하도록 구성된, 그래픽 처리 시스템을 제공하고;
상기 그래픽 처리 시스템은, 제1 시점에서 씬의 제1 뷰를 나타내는 제1 렌더링된 프레임에 대해:
상기 씬의 상기 제1 뷰에서의 오브젝트가 이동중인지를 처리회로에 의해 판정하고,
상기 씬의 상기 제1 뷰에서의 오브젝트가 이동중이라고 판정될 경우:
하나 이상의 또 다른 시점들의 각각에 대해, 이동중이라고 판정된 상기 오브젝트를 포함하는 상기 제1 프레임의 각각의 또 다른 버전의 각각의 영역을 처리회로에 의해 렌더링하도록 한층 더 구성된다.
당업자라면 알 듯이, 본 발명의 이 측면들 및 실시예들은, 적절하게, 여기서 설명된 본 발명의 상기 바람직한 및 선택적 특징들 중 하나 이상, 바람직하게는 전부를 포함할 수 있고, 바람직하게는 포함한다.
따라서, 예를 들면, 이 측면들 및 실시예들에서, (상기) 출력 프레임은, 상기 렌더링된 제1 프레임으로부터의 렌더링된 데이터 및/또는, 상기 제1 프레임의 상기 하나 이상의 렌더링된 또 다른 버전들의 하나 이상으로부터 렌더링된 데이터를 사용하여, 표시를 위해 생성되는 것이 바람직하다.
상기 출력 프레임은, 출력 버전의 상기 제1 프레임을 나타내야 하고, 상기 제1 프레임 후에 생성되어야 하며, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들은 상기 렌더링된 제1 프레임으로부터의 렌더링된 데이터 및/또는, 상기 제1 프레임의 상기 하나 이상의 렌더링된 또 다른 버전들의 하나 이상으로부터의 렌더링된 데이터를 사용하여, 렌더링되어 있다. 이와는 달리, 상기 출력 프레임은, 임의의 적절하고 원하는 방식으로 생성될 수 있다.
바람직한 실시예에서, 상기 출력 프레임은, 상기 제1 프레임 및/또는, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상에 대하여 변환을 실행하여, 예를 들면 및 바람직하게는(3 또는 6자유도(DOF)) "타임워프" 처리를 하여, (상기 그래픽 처리 시스템의 표시 제어기(또는, 상기 표시 제어기)에 의해) 표시를 위해 제공될 수도 있는 변환된("타임워프된") 출력 프레임(화상)을 생성함으로써, 생성된다. 또한, 또는 대신에, 그 변환은, 렌즈 왜곡 보정 변환, 색수차(왜곡) 보정 변환, "스페이스워프" 변환(외삽) 및/또는 다른 적절한 변환을 포함하여도 된다.
상기 변환은, 임의의 적절하고 원하는 방식으로 행해져도 된다. 일 실시예에서, 상기 변환(예를 들면, "타임워프" 및/또는 "스페이스워프" 처리)은, 상기 그래픽 처리 시스템의 상기 그래픽 처리 장치(GPU), 표시 제어기(또는 상기 표시 제어기) 또는, 전용 화상 프로세서에 의해 행해진다.
상기 출력(변환된) 프레임(화상)은, 데이터 요소들(샘플링 위치들)(예를 들면, 화소들)의 어레이를 포함하여도 되고, 각각에 대해 적절한 데이터(예를 들면, 일 세트의 색값들)가 (상기 변환(예를 들면, "타임워프" 및/또는 "스페이스워프" 처리)에 의해) 생성된다.
상기 출력(변환된) 프레임(화상)은, 원하는 대로 이후의 사용을 위해 메모리에 저장(기록)되어도 된다. 예를 들면, 상기 출력(변환된) 프레임(화상)을, 메모리의 프레임 버퍼에 저장하고, 이 버퍼로부터 또 다른 처리 및/또는, 표시 제어기(또는 상기 표시 제어기)에 의한 표시를 위해, 판독할 수 있다. 이러한 메모리는, 임의의 적절한 메모리로 이루어져도 되고, 임의의 적절하고 원하는 방식으로 구성되어도 된다. 예를 들면, 그것은, 그래픽 처리 장치(GPU)를 갖는 칩상에 있는 메모리이어도 되거나, 외부 메모리이어도 된다. 일 실시예에서, 그것은 외부 메모리, 이를테면, 상기 그래픽 처리 시스템의 주 메모리이다. 그것은, 이 목적을 위한 전용 메모리이어도 되거나, 그 밖의 데이터에도 사용되는 메모리의 일부이어도 된다.
상기 출력(변환된) 프레임(화상)은, 상기 제1 프레임 및/또는 상기 도 다른 버전(들)에 대해 상이한 메모리에 저장되어도 된다. 그렇지만, 바람직한 실시예에서, 상기 출력(변환된) 프레임(화상)은, 상기 제1 프레임 및/또는 상기 또 다른 버전(들)에 대해 동일한 메모리에 저장된다.
상기 제1 프레임의 또 다른 버전들이 리렌더링되지 않는 경우(예를 들면, 상기 씬의 상기 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가깝다고 판정되지 않는 경우 및/또는 상기 또 다른 버전(들)을 렌더링하는 것이 상기 그래픽 처리 시스템의 처리 한계를 초과할 것이라고 판정되는 경우), 상기 출력 프레임은, 예를 들면, 상기 제1 프레임을 변환함으로써(예를 들면, 상술한 것처럼, 종래의 방식으로, 예를 들면 "타임워프" 및/또는 "스페이스워프" 처리를 함으로써) 상기 제1 프레임만으로부터 렌더링된 데이터로부터 생성되어도 된다.
따라서, 이 경우에, 상기 제1 프레임은, 바람직하게는, 상기 제1 프레임이 렌더링된 후, 제2 시점에서 감지되고, 바람직하게는 (상기 제1 프레임이 렌더링된 후) 상기 (가상현실(VR) 및/또는 증강현실(AR)(헤드 장착)) 디스플레이 시스템의 유저의 제2 뷰(헤드 또는 디스플레이) 방향(포즈)을 나타내는, (상기(가상현실(VR) 및/또는 증강현실(AR))(헤드 장착) 디스플레이 시스템)(의 하나 이상의 센서들)에 의해 감지된) (제2) 뷰(헤드 또는 디스플레이) 방향(포즈) 데이터에 근거하여 ("타임워프" 처리에 의해) 변환되는 것이 바람직하다.
따라서, 이렇게 변환된(이렇게 "타임워프된") 출력 프레임은, 바람직하게는 상기 그래픽 처리 시스템의 표시 제어기(또는 상기 표시 제어기)에 의해, 상기 (감지된) 제2 뷰(헤드 또는 디스플레이)에 근거한 상기 씬의 뷰를 나타내는 것이 바람직하고, 상기 ((가상현실(VR) 및/또는 증강현실(AR)(헤드 장착)) 디스플레이 시스템의 (헤드 장착) 디스플레이에 대해) 표시하기 위해 제공되는 것이 바람직하다.
그렇지만, 상기 제1 프레임(의 영역)의 또 다른 버전(또는 버전들)이 렌더링되는 경우, 상기 제1 프레임(의 영역)의 상기 또 다른 버전(또는 버전들)에 대해 렌더링된 소스 데이터와 함께, 상기 제1 프레임에 대해 렌더링된 소스 데이터가 있을 것이다. 따라서, 복수의 버전들의 상기 프레임이 렌더링되어 있었을 수도 있는 영역들이 있어도 된다. 이 경우에, (표시용) 상기 출력 프레임을 생성하는데 사용하기 위한 상기 렌더링된 소스 데이터는, 상기 제1 프레임에 대한 상기 렌더링된 소스 데이터와 상기 또 다른 버전(들)에 대한 상기 렌더링된 소스 데이터로부터 선택되는 것이 바람직하다.
상기 제1 프레임에 대한 상기 렌더링된 소스 데이터와 상기 또 다른 버전(들)에 대한 상기 렌더링된 소스 데이터로부터 상기 출력 프레임을 생성하는데 사용하기 위한 상기 렌더링된 소스 데이터를 선택하는 것은, 임의의 적절하고 원하는 방식으로 행해질 수 있다. 그 선택은, 예를 들면, 상기 그래픽 처리 시스템의, 상기 그래픽 처리 장치(GPU), 상기 표시 제어기 또는 전용 화상 프로세서에 의해, 행해져도 된다.
바람직한 실시예에서, 상기 출력 프레임을 생성하는데 사용하기 위한 상기 렌더링된 소스 데이터는, 상기 제2 시점에서, 상기 제1(애플리케이션) 프레임(및 상기(및 각) 또 다른 버전)의 렌더링 후 상기 (가상현실(VR) 및/또는 증강현실(AR))(헤드 장착) 디스플레이 시스템의 유저의 뷰(헤드 또는 디스플레이) 방향(포즈)를 나타내는 것이 바람직한 제2 뷰(헤드 또는 디스플레이)(또는, 상기 제2 뷰(헤드 또는 디스플레이))에 근거하여 선택된다. 상기 제2 뷰(헤드 또는 디스플레이) 방향(포즈)은, 상기 제2 시점에서 (상기 제1 프레임(및 상기(및 각) 또 다른 버전)후) 상기 (가상현실(VR) 및/또는 증강현실(AR))(헤드 장착) 디스플레이 시스템(의 하나 이상의 센서들)에 의해 감지되는 것이 바람직한, 감지된 뷰(헤드 또는 디스플레이) 방향(포즈))이다.
추가로 또는 이와는 달리, 바람직한 실시예에서, 상기 출력 프레임을 생성하는데 사용하기 위한 상기 렌더링된 소스 데이터는, 상기 출력 프레임이, 예를 들면, 상기 제2 뷰(헤드 또는 디스플레이) 방향(포즈)이 감지되는 상기(제2) 시점에서) 상기 씬의 뷰를 나타내는 것인 상기 (제2) 시점에 근거하여 선택된다.
바람직한 실시예에서, 상기 출력 프레임을 생성하는데 사용하기 위한 상기 렌더링된 소스 데이터는, 상기 (실제의)(감지된) 제2 뷰(헤드 또는 디스플레이) 방향(포즈)에 가장 가까운 뷰(헤드 또는 디스플레이) 방향(포즈)에 근거하여 렌더링되어 있던 (상기 제1 프레임 및/또는 상기 하나 이상의 또 다른 버전들의 상기 하나 이상으로부터) 렌더링된 소스 데이터를 선택함으로써 선택된다. 추가로 또는 이와는 달리, 바람직한 실시예에서, 상기 출력 프레임을 생성하는데 사용하기 위한 상기 렌더링된 소스 데이터는, 상기 출력 프레임이, (상기 제2 뷰(헤드 또는 디스플레이) 방향(포즈)이 감지된) 상기 씬의 뷰를 나타낸 것인 상기 (실제의)(제2) 시점에 가장 가까운 (또 다른) 시점에 근거하여 렌더링되어 있던 (상기 제1 프레임 및/또는 상기 하나 이상의 또 다른 버전들의 하나 이상으로부터) 렌더링된 소스 데이터를 선택함으로써 선택된다.
상기 제1 프레임과 같은 사이즈로 (각) 또 다른 버전이 렌더링되는 경우(예를 들면, 리렌더링하기 위한 (각) 영역이 상기 제1 프레임 전부를 커버하는 경우), 상기 출력 프레임을 생성하는데 사용하기 위한 상기 렌더링된 소스 데이터를 선택하는 것은, 전체적으로 사용하기 위해, 상기 렌더링된 제1 프레임과 상기 렌더링된 또 다른 버전(들) 중, 하나로부터 소스 데이터를 선택하는 것을 포함하여도 된다. 따라서, 상기 선택은, 예를 들면, 전체 프레임에 대해 행해져도 되고, 상기 선택된 렌더링된 소스 데이터는, 상기 렌더링된 제1 프레임과 상기 렌더링된 또 다른 버전(들) 중 하나(만)으로부터 소스 데이터를 포함하여도 된다.
그렇지만, 리렌더링하기 위한 (각) 영역이 상기 제1 프레임의 일부만을 커버하여, (각)(각각의) 또 다른 버전이 상기 제1 프레임보다 작은 경우, 상기 선택은, 상기 제1 프레임에 대한 상기 렌더링된 소스 데이터와, 각각의 또 다른 버전(들)이 리렌더링되는 상기 제1 프레임의 상기 일부(들)(만)에 대한 상기(각각의) 또 다른 버전(들)에 대한 상기 렌더링된 소스 데이터로부터, 표시를 위해 사용하기 위해 상기 렌더링된 소스 데이터를 선택하는 것과, (이와는 달리) 또 다른 버전(들)이 리렌더링되는 상기 제1 프레임의 일부(들)에 대한 상기 제1 프레임으로부터 소스 데이터를 선택하는 것을, 포함하여도 된다. 이 경우에, 상기 렌더링된 소스 데이터는, 상기 렌더링된 소스 데이터와 상기 렌더링된 또 다른 버전(들)의 하나 이상으로부터 소스 데이터(의 혼합물)를 포함하여도 된다.
따라서, 이 경우에, 상기 선택된 렌더링된 소스 데이터는, (상기) 출력, 표시용 변환된("타임워프된") 프레임(화상)을 생성하기 위해 제2 뷰(헤드 또는 디스플레이) 방향(포즈)(또는 상기 제2 뷰(헤드 또는 디스플레이) 방향(포즈)에 근거하여 ("타임워프" 처리에 의해) 변환되어도 된다. 상기 제2 뷰(헤드 또는 디스플레이) 방향(포즈)은 (상기 제2 시점에서) 상기 제1(애플리케이션) 프레임(및 상기(및 각) 또 다른 버전)의 렌더링 후 상기 (가상현실(VR) 및/또는 증강현실(AR))(헤드 장착) 디스플레이 시스템의 유저의 (제2) 뷰(헤드 또는 디스플레이) 방향(포즈)를 나타내는 것이 바람직하고, (상기 제1 프레임(및 상기(및 각) 또 다른 버전)후) 상기 (가상현실(VR) 및/또는 증강현실(AR))(헤드 장착) 디스플레이 시스템(의 하나 이상의 센서들)에 의해 감지되는 것이 바람직하다.
따라서, 이렇게 변환된(이렇게 "타임워프된") 출력 프레임은, 상기 (감지된) 제2 뷰(헤드 또는 디스플레이) 방향(포즈)에 근거한 상기 씬의 뷰를 나타내는 것이 바람직하고, 상기 그래픽 처리 시스템의 표시 제어기(또는 상기 표시 제어기)에 의해, (상기 (가상현실(VR) 및/또는 증강현실(AR)(헤드 장착) 디스플레이 시스템)의 (헤드 장착) 디스플레이에 대해) 표시하기 위해 제공되는 것이 바람직하다.
추가로 또는 이와는 달리, 바람직한 실시예에서, 상기 출력 프레임을 생성하는 것은, 표시를 위해 상기 출력된, 외삽된("스페이스워프된")프레임(화상)을 생성하기 위해 오브젝트 움직임(예를 들면, "스페이스워프" 처리)에 근거하여 변환(외삽)을 포함하여도 된다. 이 경우에, 상기 출력 프레임은, 외삽된("스페이스워프된) 버전의 상기 제1(렌더링된)(예를 들면, 애플리케이션) 프레임을 나타내는 것이 바람직하고, 상기 출력 프레임 상기 씬의 뷰를 나타내는 상기 (제2) 시점에 대한 시간에 있어서 순방향으로 예상된, 예를 들면, 외삽된 위치에서의 이동 오브젝트들을 보여야 한다. 따라서, 이 경우에, 일 실시예에서 상기 출력 프레임은, (상기 제2 뷰 방향(포즈)이 감지되는) 상기 제2 시점에서 상기 씬의 뷰를 나타낸다.
따라서, 바람직한 실시예에서, 상기 방법(상기 시스템)은, 수신된(제2) 뷰(헤드 또는 디스플레이) 방향 데이터 및/또는 제2 시점에 근거하여, (i) 상기 제1 프레임에 대한 렌더링된 데이터; 및 (ii) 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 하나 이상에 대한 렌더링된 데이터 중, 적어도 하나로부터 상기 출력 프레임을 생성하는데 사용하기 위한 렌더링된 데이터를 선택하는 것을 포함한다(포함하도록 구성된다).
따라서, 바람직한 실시예에서, 상기 출력 프레임을 생성하는 것은, 상기 제1 프레임 및/또는 상기 하나 이상의 또 다른 버전들의 하나 이상으로부터, 렌더링된 데이터를 선택하고 나서, 그 선택된 렌더링된 데이터를 적절하게 조합하여 상기 출력 프레임을 생성하는 것을 포함한다.
이렇게 씬의 상이한 렌더링된 뷰들로부터 표시용 렌더링된 소스 데이터를 선택하는 아이디어는, 그 권리에 있어서 신규하고 진보성이 있다고 믿는다.
따라서, 본 발명의 또 다른 측면에서는, 디스플레이 시스템의 표시용 출력 프레임을 생성하는 방법을 제공하고, 이 생성 방법은,
상기 디스플레이 시스템에 의해 감지된 뷰 방향 데이터를 수신하는 단계; 및
상기 수신된 뷰 방향 데이터에 근거하여, 상기 출력 프레임을 생성하는데 사용하기 위한 렌더링된 데이터를,
(i) 제1 시점 및/또는 제1 뷰 방향에 근거하여 렌더링된 제1 프레임의 렌더링된 데이터; 및
(ii) 상기 제1 시점 후의 또 다른 시점 및/또는 또 다른 뷰 방향에 근거하여 렌더링되고, 상기 렌더링된 제1 프레임으로부터 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하기 전에 렌더링되는 각각의 또 다른 버전인, 상기 제1 프레임의 하나 이상의 또 다른 버전들의 렌더링된 데이터로부터 선택하는 단계; 및 상기 선택된 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하는 단계를 포함한다.
본 발명의 다른 측면에서는, 디스플레이 시스템을 제공하고, 이 디스플레이 시스템은,
상기 디스플레이 시스템의 유저의 뷰 방향을 감지하고 감지된 뷰 방향을 나타내는 뷰 방향 데이터를 제공할 수 있는 뷰 방향 감지회로; 및
상기 뷰 방향 감지회로에 의해 제공된 뷰 방향 데이터에 근거하여, 출력 프레임을 표시하는데 사용하기 위한 렌더링된 데이터를,
(i) 제1 시점 및/또는 제1 뷰 방향에 근거하여 렌더링된 제1 프레임의 렌더링된 데이터; 및
(ii) 상기 제1 시점 후의 또 다른 시점 및/또는 또 다른 뷰 방향에 근거하여 렌더링되고, 상기 렌더링된 제1 프레임으로부터 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하기 전에 렌더링되는 각각의 또 다른 버전인, 상기 제1 프레임의 하나 이상의 또 다른 버전들의 렌더링된 데이터로부터 선택하도록 구성된, 처리회로를 구비하고, 상기 선택된 레더링된 데이터를 사용하여 표시용 출력 프레임을 생성한다.
본 발명의 또 다른 측면에서서는, 헤드 장착 디스플레이 시스템의 표시용 출력 프레임을 제공하는 방법을 제공하고, 이 방법은,
상기 헤드 장착 디스플레이 시스템에 의해 감지된 헤드 방향 데이터를 수신하는 단계; 및
상기 수신된 헤드 방향 데이터에 근거하여, 상기 출력 프레임을 표시하는데 사용하기 위한 렌더링된 데이터를,
(i) 제1 헤드 방향에 근거하여 렌더링된 제1 프레임의 렌더링된 데이터; 및
(ii) 또 다른 방향에 근거하여 각각 렌더링된 상기 제1 프레임의 하나 이상의 또 다른 버전들의 렌더링된 데이터 중의 적어도 하나로부터, 선택하는 단계를 포함한다.
본 발명의 다른 측면에서는 헤드 장착 디스플레이 시스템을 제공하고, 이 헤드 장착 디스플레이 시스템은,
상기 헤드 장착 디스플레이 시스템의 유저의 헤드 방향을 감지하고 감지된 헤드 방향을 나타내는 헤드 방향 데이터를 제공할 수 있는 헤드 방향 감지회로; 및
상기 헤드 방향 감지회로에 의해 제공된 헤드 방향 데이터에 근거하여, 출력 프레임을 표시하는데 사용하기 위한 렌더링된 데이터를,
(i) 제1 헤드 방향에 근거하여 렌더링된 제1 프레임의 렌더링된 데이터; 및
(ii) 또 다른 헤드 방향에 근거하여 각각 렌더링된 상기 제1 프레임의 하나 이상의 또 다른 버전들의 렌더링된 데이터 중의 적어도 하나로부터, 선택하도록 구성된, 처리회로를 구비한다.
당업자라면 알듯이, 본 발명의 이 측면들 및 실시예들은, 적절하게, 여기서 설명된 본 발명의 상기 바람직한 및 선택적 특징들 중 하나 이상, 바람직하게는 전부를 포함할 수 있고, 바람직하게는 포함한다.
따라서, 예를 들면, 상기 제1 프레임은, 상기 제1 프레임을 렌더링하는 초기에 (상기 제1 시점에서) 감지된 제1 뷰(헤드 또는 디스플레이) 방향(포즈)에 근거하여 렌더링되어도 되고, 상기 하나 이상의 또 다른 버전들은 상기 제1 뷰(헤드 또는 디스플레이) 방향(포즈)에 대해 예측된 또는 가정된 (헤드 또는 디스플레이) 이동(회전 및/또는 병진운동)을 나타내는 또 다른 뷰(헤드 또는 디스플레이) 방향에 근거하여 각각 렌더링되어도 되고, 상기 출력 프레임을 생성하는데 사용하기 위한 상기 렌더링된 데이터는 상기 제1 프레임의 상기 렌더링 후 (제2 시점에서) 감지된 상기 수신된 (제2) 뷰(헤드 또는 디스플레이) 방향(포즈) 데이터에 근거하여 선택되어도 되고, 상기 선택된 렌더링된 데이터는 (디스플레이 상에) 표시되어도 되는, 출력된, 변환된("타임워프된") 표시용 프레임(화상)을 제공하기 위해 (상기) 수신된(제2) 뷰(헤드 또는 디스플레이) 방향(포즈) 데이터에 근거하여 변환(예를 들면, "타임워프" 처리)이 실시되어도 된다.
이에 대응하게, 상기 방법(상기 시스템)은, 상기 선택된 렌더링된 데이터를 사용하는(포함하는) (상기) 출력 프레임을 (디스플레이 상에) 표시하는 것을 포함한다(포함하도록 구성된 처리회로를 구비하는 것이 바람직하다).
여기서는 본 발명을 단일의 제1 프레임을 특별히 참조하여 설명하였지만, 복수의 제1 프레임들(예를 들면, 동영상으로 된 복수의 제1 프레임들의 시퀀스)이 있을 수도 있다는 것을 알 것이다. 이러한 각 제1 프레임은 (각각의 (제1) 뷰(헤드 또는 디스플레이)방향(포즈)에 근거하여) 각각의 뷰 방향으로 각각의 뷰포인트로부터 각각의 씬의 각각의 뷰를 나타내어도 되고, (일부 또는 전부의 각각의 영역의) 하나 이상의 각각의 또 다른 버전들의 상기와 같은 상기 제1 프레임들이 렌더링되어도 된다.
또한, 상술한 것처럼, 눈마다 렌더링된 제1 프레임(및 각각의 또 다른 버전(들))이 있을 수도 있고, 각각의 출력(변환된) 프레임(또는 프레임들)은 각 눈에 대해 적절하게 표시되어 상기 화상들을 3차원 효과를 제공할 수도 있다는 것을 알 것이다.
상기로부터 알듯이, 본 발명은, 호스트 프로세서(중앙처리장치(CPU)), 그래픽 처리장치, 표시 제어기, 비디오 프로세서(코덱), 시스템 버스, 및 메모리 제어기 중, 하나 이상을 구비하는 그래픽 처리 시스템 전체의 일부에서 또한 일부로서 구현된 실시예에 있다. 상기 처리회로는, 예를 들면, 상술한 것처럼, 상기 그래픽 처리 시스템의 상기 그래픽 처리장치, 상기 표시 제어기 및/또는 다른 적절한 부품의 일부를 형성하여도 되거나, 이와는 달리, 상기 그래픽 처리 시스템내에 설치되어도 된다. 그것은, 프로그램 가능한 및/또는 고정된 기능 처리회로를 구비하여도 되고, 및/또는 원하는 대로, 전용 처리회로 및/또는, 그 밖의 처리에도 사용된 처리회로를 구비하여도 된다.
상기 호스트 프로세서는, 상기 그래픽 처리장치에 의해 그래픽 처리를 요구하고, 적절한 코맨드들과 데이터를 그 그래픽 처리장치에 보내어 그것을 제어하여 그래픽 처리 연산들을 행하고, (본 발명의 방식에 포함하는) 상기 호스트 프로세서상에서 실행하는 애플리케이션들에서 요구한 그래픽 처리(렌더) 출력을 생성할 수 있는, 애플리케이션들을 실행하여도 된다.
이를 용이하게 하기 위해서, 상기 호스트 프로세서는, 상기 그래픽 처리장치용 드라이버와, (컴파일러가 상기 드라이버의 일부이어도 되고 바람직한 실시예에서는 상기 드라이버의 일부인) 상기 그래픽 처리장치의 프로그램 가능한 셰이딩 스테이지들에서 실행되는 셰이더 프로그램들을 컴파일링하는 컴파일러 또는 컴파일러들도, 실행해야 하고, 바람직하게는 실행한다.
따라서, 바람직한 실시예에서, 상기 그래픽 처리장치는, 상기 그래픽 처리장치용 드라이버 및/또는 상기 그래픽 처리장치용 컴파일러 또는 컴파일러들을 실행하는 (상기 그래픽 처리 시스템 전체의 일부인) 호스트 프로세서와 통신하고 있다.
마찬가지로, 본 발명의 방식으로 처리 연산들을 행하기 위한 요구사항을 포함하는 상기 호스트 프로세서상의 애플리케이션이 존재하는 것이 바람직하고, 그리고, 그 요구사항은 예를 들면, 상기 호스트 프로세서 상에서 실행하는 상기 드라이버에 의해 인식되고, 이때, 상기 호스트 프로세서 상의 예를 들면, 상기 드라이버는 상기 그래픽 처리를 지시하는 것에 의해 데이터를 렌더링하도록 연산한다.
또한, 상기 그래픽 처리장치 및/또는 호스트 마이크로프로세서는, (예를 들면, 상기 표시 제어기를 거쳐) 상기 그래픽 처리장치에 의해 생성된 상기 화상들을 표시하기 위한 (헤드 장착) 디스플레이와 통신하는 것이 바람직하다(따라서, 바람직한 실시예에서, 상기 그래픽 처리 시스템은, 상기 그래픽 처리장치에 의해 생성된 상기 화상들을 표시하기 위한 디스플레이를 더 구비한다).
마찬가지로, 상기 그래픽 처리 시스템은, (예를 들면, 상기 메모리 제어기를 거쳐) 상기 그래픽 처리장치에 의해 생성된 화상들이 예를 들면, 이후의 처리, 예를 들면 표시를 위해 저장되어도 되는 메모리를 갖거나, 메모리와 통신하고 있는 것이 바람직하다. 따라서, 바람직한 실시예에서, 상기 그래픽 처리 시스템 및/또는 그래픽 처리장치는, (예를 들면, 상기 메모리 제어기를 거쳐) 여기서 설명된 상기 데이터를 저장하고, 및/또는 여기서 설명된 상기 프로세스들을 행하기 위한 소프트웨어를 저장하는, 하나 이상의 메모리들 및/또는 메모리 디바이스들을 구비하고, 및/또는 통신하고 있다.
상기 그래픽 처리장치는, 그래픽 처리장치가 통상적으로 구비할 수 있는 상기 처리 스테이지들의 임의의 하나 이상, 및 바람직하게는 전부를 구비할 수 있고, 바람직하게는 구비한다. 따라서, 예를 들면, 상기 그래픽 처리장치는, 프리미티브 셋업 스테이지, 래스터화기 및 렌더러를 구비하는 것이 바람직하다. 바람직한 실시예에서, 상기 렌더러는 프로그램 가능한 프래그먼트 셰이더의 형태로 있거나 이 프래그먼트 셰이더를 구비한다.
상기 그래픽 처리장치는, 바람직하게는, 타일 샘플 값들을 저장하는 타일 버퍼와, 상기 타일 버퍼에 있는 상기 데이터를 외부(메인) 메모리(예를 들면, 프레임 버퍼)에 (예를 들면, 상기 타일 버퍼에 있는 상기 데이터가 완전하면) 라이트 아웃하도록 연산하는 라이트 아웃부를 구비하는, 타일기반 그래픽 처리장치이다.
당업자라면, 본 발명의 상기 설명된 측면들 및 실시예들의 전부는, 적절하게, 여기서 설명된 특징들의 임의의 하나 이상 또는 전부를 포함할 수 있고, 일 실시예에서는 포함한다는 것을 알 것이다.
본 발명은, 임의의 적절한 시스템, 이를테면 적절하게 구성된 마이크로프로세서 기반 시스템에 구현될 수 있다. 일 실시예에서, 본 발명은, 컴퓨터 및/또는 마이크로프로세서 기반 시스템에 구현된다.
본 발명은, 휴대기기, 이를테면, 및 바람직하게는, 휴대전화나 태블릿에 구현되는 것이 바람직하다. 본 발명은, 일 실시예에서는, 가상현실 및/또는 증강현실 디스플레이 디바이스, 이를테면 및 일 실시예에서, 가상현실 및/또는 증강현실 헤드셋에 구현된다. 따라서, 여기서 기재된 상기 기술의 다른 실시예는, 본 발명의 상기 실시예들의 어느 하나 이상의 상기 그래픽 처리 시스템을 구비하는 가상현실 및/또는 증강현실 디스플레이 디바이스를 구비한다. 이에 대응하게, 여기서 기재된 상기 기술의 다른 실시예는, 본 발명의 상기 실시예들의 어느 하나 이상의 방식으로 상기 가상현실 및/또는 증강현실 디스플레이 디바이스를 동작시키는 것을 포함하는, 가상현실 및/또는 증강현실 디스플레이 디바이스의 동작방법을 포함한다.
본 발명의 각종 기능들은, 임의의 원하는 적절한 방식으로 실행될 수 있다. 예를 들면, 본 발명의 기능들은, 원하는 대로, 하드웨어나 소프트웨어로 구현될 수 있다. 따라서, 예를 들면, 달리 나타내지 않으면, 본 발명의 각종 기능적 요소, 스테이지, 및 "수단"은, 적절하게 전용 하드웨어 요소(처리회로) 및/또는 원하는 방식으로 작동하도록 프로그래밍될 수 있는 프로그램 가능한 하드웨어 요소(처리회로)와 같은 각종 기능 등을 행할 수 있는, 적절한 프로세서나 프로세서들, 콘트롤러나 콘트롤러들, 기능 유닛들, 회로, 처리 로직, 마이크로프로세서 구성 등을 포함할 수도 있다.
또한, 여기서는, 당업자라면 알 수 있듯이, 본 발명의 각종 기능 등이, 주어진 프로세서상에서 병렬로 복제 및/또는 실행될 수도 있다는 것을 주목해야 한다. 마찬가지로, 각종 처리 스테이지는, 필요한 경우 처리회로 등을 공유할 수도 있다.
또한, 본 발명의 상기 처리 스테이지들의 어느 하나 이상 또는 전부는, 예를 들면, 하나 이상의 고정된 기능 유닛들(하드웨어)(처리회로)의 형태로, 및/또는 원하는 동작을 행하기 위해 프로그래밍될 수 있는 프로그램 가능한 처리회로의 형태로, 처리 스테이지 회로로서 구체화되어도 된다. 마찬가지로, 본 발명의 상기 처리 스테이지들 중 어느 하나 이상과 처리 스테이지 회로는, 그 밖의 처리 스테이지들 중 어느 하나 이상 또는 처리 스테이지 회로에 별도의 회로소자로서 제공되어도 되고, 및/또는 상기 처리 스테이지들 중 어느 하나 이상 또는 전부와 처리 스테이지 회로는 적어도 부분적으로 공유 처리회로로 형성되어도 된다.
상술한 특정 기능을 실행하는데 필요한 임의의 하드웨어에 따라, 상기 그래픽 처리 시스템의 부품들은, 다른 경우라면, 상기 부품들이 포함하는 통상의 기능 유닛의 어느 하나 이상 또는 모두 등을 포함할 수 있다.
또한, 당업자라면, 본 발명의 상술한 실시예들 모두가, 필요에 따라, 여기서 설명한 특징들 중 어느 하나 이상 또는 모두를 포함할 수 있고, 바람직하게는 포함한다는 것을 알 것이다.
본 발명에 따른 방법들은, 소프트웨어, 예를 들면 컴퓨터 프로그램을 적어도 일부 사용하여 구현되어도 된다. 이렇게 하여 안 것은, 또 다른 측면에서 볼 때, 본 발명은, 데이터 프로세서에 인스톨될 때 여기서 설명된 방법들을 실행하도록 구체적으로 구성된 컴퓨터 소프트웨어와, 데이터 프로세서상에 작동할 때 여기서 설명된 방법들을 행하기 위한 컴퓨터 소프트웨어 코드 부분을 포함한 컴퓨터 프로그램 요소와, 상기 프로그램이 데이터 처리 시스템상에 작동할 때 여기서 설명된 방법이나 방법들의 단계 모두를 행하도록 구성된 코드를 포함한 컴퓨터 프로그램을 제공한다는 것이다. 상기 데이터 프로세서는, 마이크로프로세서 시스템, 프로그램 가능한 FPGA(Field Programmable Gate Array) 등이어도 된다.
또한, 본 발명은, 표시 제어기, 또는, 데이터 프로세서를 갖는 마이크로프로세서 시스템을 작동시키는데 사용될 때 상기 데이터 프로세서와 관련지어 상기 제어기나 시스템이 본 발명의 방법들의 단계들을 실행하도록 상기 소프트웨어를 구비한 컴퓨터 소프트웨어 캐리어까지 확장된다. 이러한 컴퓨터 소프트웨어 캐리어는, ROM칩, CD ROM, RAM, 플래시 메모리나, 디스크 등의 물리적 기억매체일 수 있거나, 유선상의 전자신호, 광신호 또는 위성 등에 관한 무선신호 등의 신호일 수 있다.
본 발명의 방법들의 모든 단계들을 컴퓨터 소프트웨어로 실행할 필요가 없고 이에 따라서 또 다른 넓은 실시예에서 본 발명은 컴퓨터 소프트웨어와, 여기서 기재된 방법들의 단계들의 적어도 하나를 실행하기 위한 컴퓨터 소프트웨어 캐리어 상에 인스톨된 상기 소프트웨어를 제공한다는 것도 또한 알 것이다.
따라서, 본 발명은, 컴퓨터 시스템에 사용하기 위한 컴퓨터 프로그램 제품으로서 적절히 구체화되어도 된다. 이러한 구현은, 유형의, 비일시적 매체, 이를테면 컴퓨터 판독 가능한 매체, 예를 들면, 디스켓, CD-ROM, ROM, RAM, 플래시 메모리, 또는 하드디스크에 고정된 일련의 컴퓨터 판독 가능한 명령들을 포함할 수도 있다. 또한, 본 발명은, 광학적이거나 아날로그적 통신회선을 포함하지만 이에 한정되지 않거나, 또는, 마이크로웨이브, 적외선 또는 그 밖의 투과 기술을 포함하지만 이에 한정되지 않는 무선 기술을 무형으로 사용하는 유형의 매체 상에서, 모뎀이나 그 밖의 인터페이스 디바이스를 거쳐 컴퓨터 시스템에 전송가능한, 일련의 컴퓨터 판독 가능한 명령을 포함할 수 있었다. 상기 일련의 컴퓨터 판독 가능한 명령은, 여기서 이전에 설명된 기능성의 모두 또는 일부를 구체화한다.
당업자는, 여러 가지의 컴퓨터 아키텍처나 운영체계에 사용하기 위한 다수의 프로그래밍 언어로 상기 컴퓨터 판독 가능한 명령들을 기록할 수 있다는 것을 알 것이다. 또한, 이러한 명령들은, 반도체, 마그네틱, 또는 광학적 기술을 포함하지만 이에 한정되지 않는 현재 또는 미래의 어떠한 메모리 기술을 사용하여서도 저장될 수도 있거나, 광학적, 적외선 또는 마이크로웨이브를 포함하지만 이에 한정되지 않는 현재 또는 미래의 어떠한 통신기술을 사용하여서도 전송되어도 된다. 이러한 컴퓨터 프로그램 제품은, 인쇄된 문서나 전자 문서가 첨부되는 착탈 가능한 매체, 예를 들면, 컴퓨터 시스템, 예를 들면, 시스템 ROM이나 고정형 디스크 상에 사전 적재된 쉬링크 랩 소프트웨어로서 배포되거나, 네트워크, 예를 들면, 인터넷이나 월드 와이드 웹상에서 서버나 전자 게시판으로부터 배포되어도 된다고 생각된다.
이제, 본 발명의 각종 실시예들을 예시로만 또한 아래의 첨부도면들을 참조하여 설명한다:
도 1은 그래픽 처리 시스템의 예를 도시한 것이고,
도 2는 헤드 장착 디스플레이 시스템에서 "타임워프" 처리의 프로세스를 설명하는 것이고,
도 3은 헤드 장착 디스플레이 시스템에서 "타임워프" 처리의 프로세스의 다른 예시를 도시한 것이고,
도 4는 "타임워프된" 버전들의 상기 프레임과 함께 렌더링된 "애플리케이션" 프레임의 예를 설명하는 것이고,
도 5는 가상현실 헤드 장착 디스플레이 헤드셋의 예를 개략적으로 도시한 것이고,
도 6은 "타임워프" 처리를 행할 때 그래픽 처리 시스템에서 데이터의 흐름과 프로세스들의 상대적 타이밍들을 개략적으로 도시한 것이고,
도 7은 "타임워프" 처리를 행할 때 그래픽 처리 시스템에서 데이터의 흐름과 프로세스들의 상대적 타이밍들을 개략적으로 도시한 것이고,
도 8은 뷰 절두체의 예를 도시한 것이고,
도 9는 다른 오브젝트가 오브젝트를 가리는 씬의 예를 도시한 것이고,
도 10은 "타임워프된" 버전들의 상기 프레임과 함께, 다른 오브젝트가 오브젝트를 가리는 씬의 뷰를 나타내는 렌더링된 "애플리케이션" 프레임의 예를 설명하는 것이고,
도 11은 본 발명의 일 실시예에 따라 렌더링되는 씬의 포워드, 좌측 및 우측의 뷰의 예를 설명하는 것이고,
도 12는 본 발명의 일 실시예에 따라 렌더링되는 씬의 포워드, 부분 좌측 및 부분 우측의 뷰의 예를 설명하는 것이고,
도 13은 본 발명의 일 실시예에 따라, 씬의 포워드 뷰와 우측 뷰를 합성하여서 출력 프레임의 예의 생성을 설명하는 것이고,
도 14는 본 발명의 일 실시예에 따른 그래픽 처리 시스템의 동작을 개략적으로 도시하는 흐름도이고,
도 15는 본 발명의 일 실시예에 따라 "타임워프" 처리를 행할 때 그래픽 처리 시스템에서 데이터의 흐름과 프로세스들의 상대적 타이밍들을 개략적으로 도시한 것이고,
도 16은 본 발명의 일 실시예에 따른 그래픽 처리 시스템의 동작을 개략적으로 도시하는 흐름도이고,
도 17은 본 발명의 일 실시예에 따른 그래픽 처리 시스템의 동작을 개략적으로 도시하는 흐름도이고,
도 18은 본 발명의 일 실시예에 따른 그래픽 처리 시스템의 동작을 개략적으로 도시하는 흐름도이고,
도 19는 본 발명의 일 실시예에 따라 렌더링되는 씬의 포워드 뷰와 차후 뷰의 예를 설명하는 것이고,
도 20은 본 발명의 일 실시예에 따른 "타임워프" 처리 및/또는 "스페이스워프" 처리를 행할 때 그래픽 처리 시스템에서 데이터의 흐름과 프로세스들의 상대적 타이밍들을 개략적으로 도시한 것이고,
도 21은 본 발명의 일 실시예에 따른 그래픽 처리 시스템의 동작을 개략적으로 도시하는 흐름도이고,
도 22는 본 발명의 일 실시예에 따른 그래픽 처리 시스템의 동작을 개략적으로 도시하는 흐름도이고,
도 23은 본 발명의 일 실시예에 따른 "타임워프" 처리 및/또는 "스페이스워프" 처리를 행할 때 그래픽 처리 시스템에서 데이터의 흐름과 프로세스들의 상대적 타이밍들을 개략적으로 도시한 것이고,
도 24는 본 발명의 일 실시예에 따른 그래픽 처리 시스템의 동작을 개략적으로 도시하는 흐름도이다.
도면들에서 적절한 경우 동일한 구성요소들에 대해서는 동일한 참조부호를 사용한다.
이제, 본 발명의 바람직한 실시예에 대해서 상기 도면들을 참조하여 설명한다.
본 발명의 바람직한 실시예는, 가상현실(VR) 및/또는 증강현실(AR) 헤드 장착 디스플레이(HMD) 시스템의 표시용 프레임들(화상들)을 제공하는 것에 관한 것이다.
이러한 시스템은 도 1에 도시된(및 상술한) 것처럼 구성되어도 되고, 상기 시스템의 상기 디스플레이 8은, 그 중에서도, 상기 헤드 장착 디스플레이를 착용하는 유저가 보는 프레임들을 표시하기 위한 표시 화면이나 화면들(패널이나 패널들)과, 유저의 눈과 상기 표시 화면들 사이의 뷰 경로에서의 하나 이상의 렌즈들과, 유저에게 상기 디스플레이상에 표시중인 동안에) 사용중 유저의 헤드(및/또는 그들의 뷰(응시) 방향)의 위치(방향(포즈))를 추적하는 하나 이상의 센서들을 구비하는, 적절한 헤드 장착 디스플레이를 구비한다.
도 5는 가상현실(VR) 헤드 장착 디스플레이 50의 예를 개략적으로 도시한 것이다. 도 5에 도시된 것처럼, 상기 헤드 장착 디스플레이 50은, 예를 들면, 표시 화면(패널) 58이 장착된 하나 이상의 헤드 포즈(방향) 추적 센서들을 구비하는 적절한 표시 마운트 51을 구비한다. 한 쌍의 렌즈들(52)은, 상기 표시 화면(58)의 뷰 경로에서 렌즈 마운트 53에 장착되어 있다. 끝으로, 유저가 상기 헤드셋을 착용하는 적절한 피팅(fitting) 54가 있다.
도 1에 도시된 상기 시스템에서, 상기 헤드 장착 디스플레이 8에 표시되는 화상들은, 예를 들면, 상기 그래픽 처리 시스템의 호스트 프로세서(CPU) 1상에서 실행하는 애플리케이션으로부터 상기 렌더링하는 요구들에 응답하여 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되고, 그 프레임들을 상기 메인 메모리 7에 저장한다. 그리고, 상기 표시 제어기 4는, 상기 프레임들을 메모리 7로부터 판독하여, 적절하게 상기 헤드 장착 디스플레이 8에 제공하여 유저에게 표시한다.
그래픽 처리장치(GPU) 2는 눈마다 표시용 프레임(화상)을 렌더링하여도 된다: 하나의 화상은 좌안으로부터 보여진 것과 같은 씬을 나타내고, 하나의 화상은 우안으로부터 보여진 것과 같은 씬을 나타낸다. 그리고, 이 화상들은, 각 눈에 적절하게 상기 헤드 장착 디스플레이 8을 사용하여 표시되어 상기 화상들이 보여질 때 3차원 효과를 제공할 수도 있다.
상술한 것처럼, 그래픽 처리 시스템 10의 상기 그래픽 처리장치(GPU) 2가 하나의 프레임을 렌더링하는 시작부분에서 감지된 유저의 헤드 방향(포즈)에 근거하여 상기 헤드 장착 디스플레이 8에 표시하기 위한 각 프레임을 직접 렌더링하는 것이 가능할 것이다. 그렇지만, 렌더링 프로세스에서 각종 지연 때문에, 유저의 헤드 방향(포즈)이 상기 프레임의 렌더링의 초기에 상기 헤드 방향(포즈)의 감지와 상기 디스플레이 8에 상기 프레임을 실제로 표시할 때의 시간과의 사이에서 변경되어 있었다고 말할 수 있다. 더욱이, 일반적으로, 그래픽 처리장치(GPU) 2보다 빠른 속도로 상기 디스플레이 8을 갱신하여 예를 들면, "저더" 아티팩트들을 피하기 위해 프레임들을 렌더링할 수 있는 것이 바람직하다.
이를 고려하여, 상기 그래픽 처리 시스템 10은, 상기 그래픽 처리장치(GPU) 2에 의해 렌더링된 그 프레임들을 소위 "타임워프" 처리를 행한 후, 그 프레임들을 유저에게 표시하기 위해 상기 디스플레이 8에 제공하여도 된다.
상술한 것처럼, "타임워프" 처리에 있어서, 상기 그래픽 처리장치(GPU) 2가 상기 헤드 장착 디스플레이 8에 표시되는 각 프레임(화상)을 직접 렌더링하는 것이라기 보다는, 먼저, "애플리케이션" 프레임은, 상기 애플리케이션 프레임을 렌더링하는 상기 그래픽 처리장치(GPU) 2의 초기에 감지된 상기 헤드 방향(포즈) 데이터에 근거하여 상기 그래픽 처리장치(GPU) 2에 의해 렌더링된다. 그 후, 하지만, 실제로 화상을 상기 디스플레이 8에 표시하기 전에, 또 다른 헤드 방향 데이터가 감지되고, 상기 갱신된 헤드 방향 센서 데이터는, 상기 그래픽 처리장치(GPU) 2가 렌더링된 애플리케이션 프레임을 변환하여, 상기 갱신된 헤드 방향(포즈) 데이터를 고려하는 "갱신된" 버전의 상기 애플리케이션 프레임을 생성하는데 사용된다. 그리고, 이렇게 "타임워프된" 갱신된 버전의 상기 애플리케이션 프레임이 상기헤드 장착 디스플레이 8에 표시된다.
도 4는 하우스 42를 포함하는 다수의 오브젝트로 이루어진 씬의 뷰를 나타내는 그래픽 처리장치(GPU) 2가 렌더링한 애플리케이션 프레임 40의 예의 개략적 설명을 도시한 것이다. 본 예에서는, 애플리케이션 프레임 40은, 4개의 "타임워프" 프로세스들이 실시되어, 상기 그래픽 처리장치(GPU) 2가 새로운 애플리케이션 프레임을 렌더링하는 동안에 연속적 시간간격으로 표시되어도 되는 4개의 각각의 출력 "타임워프된" 프레임들 41A-D를 생성한다. 그리고, 새로운 애플리케이션 프레임은, 4개의 또 다른 "타임워프" 프로세스들 등이 실시되어도 된다.
이 때문에, 본 예에서, "타임워프" 처리는, 상기 그래픽 처리장치(GPU) 2가 애플리케이션 프레임들을 렌더링하는 속도(이를테면 초당 30프레임)보다 4배 빠른 속도(이를테면 초당 120프레임)로 행해지는 것을 알 것이다. 이것은 "저더" 아티팩트들을 감소시키고 예를 들면, 보다 부드러운 가상현실(VR) 또는 증강현실(AR) 경험을 제공하는데 도움이 될 수 있다.
도 4에 도시된 것처럼, 본 예에서, 애플리케이션 프레임 40은 실제로 유저에게 표시되는 상기 "타임워프된" 프레임들 41A-D의 5 x 4 정사각형 시야보다 (양쪽 차원에서) 넓은 상기 씬의 16 x 8 정사각형 시야(열 B 내지 Q, 및 행 1 내지 8)를 나타낸다. 이것은, 상기 그래픽 처리장치(GPU) 2가 렌더링한 애플리케이션 프레임이 넓은 범위의 가능한 헤드 이동(예를 들면, 회전 및/또는 병진운동)을 위해 "타임워프되는" 것이 이용 가능하도록 보장한다.
도 4의 예에서, 헤드 방향(포즈) 데이터는 (제1 시점에서) 감지되고 나서, 상기 그래픽 처리장치(GPU) 2는 그 애플리케이션 프레임 40을 이 헤드 방향(포즈) 데이터에 근거하여 렌더링한다. 그리고, 상기 헤드 장착 디스플레이(8)에 화상을 실제로 표시하기 전에, 또 다른 헤드 방향(포즈) 데이터는, (제2의 나중의 시점에서) 감지되어, 그 애플리케이션 프레임 40을 변환하여 표시용 제1 "타임워프된" 프레임 41A를 생성하는데 사용된다.
도 4에 도시된 것처럼, 상기 또 다른 헤드 방향(포즈) 데이터는, 상기 그래픽 처리장치(GPU) 2가 상기 애플리케이션 프레임 40을 렌더링하는 초기에 원래의 헤드 방향(포즈) 데이터를 감지한 이후에 유저의 헤드 방향의 변화가 일어나지 않은 것을 나타낸다. 이 때문에, 제1 "타임워프된" 프레임 41A는, 상기 애플리케이션 프레임 40의 보다 넓은 시야로부터 취해진 적절한 윈도우("레터박스")(본 예에서는, 열 G 내지 K, 행 3 내지 6)를 간단히 나타내고, "타임워프" 변환은 행해지지 않았다.
상기 (제1) 또 다른 헤드 방향(포즈) 데이터가 감지된 후, 제2 또 다른 헤드 방향(포즈) 데이터가 감지되어 다시 상기 애플리케이션 프레임 40을 변환하여 표시용 제2 "타임워프된" 프레임 41B를 생성하는데 사용된다.
본 예에서, 도 4에 도시된 것처럼, 상기 제2 또 다른 헤드 방향(포즈) 데이터는, 상기 그래픽 처리장치(GPU) 2가 상기 애플리케이션 프레임 40을 렌더링하는 초기에 원래의 헤드 방향(포즈) 데이터를 감지하였던 것과 비교하여, 유저의 헤드가 우측으로 작게 이동(예를 들면, 회전 및/또는 병진운동) 한 것을 나타낸다. 이 때문에, 제2 "타임워프된" 프레임 41B는, 보다 넓은 시야의 상기 애플리케이션 프레임 40으로부터 취해진 적절한 윈도우("레터박스")를 나타내지만, 헤드 이동이 검출되지 않은 제1 "타임워프된" 프레임 41A와 비교하여, 애플리케이션 프레임 40의 열 L이 보여질 수 있고, 열 G가 더 이상 볼 수 없도록 "타임워프" 변환이 실시되어 있다. 이것의 효과는, 오브젝트 42가, 작은 우측 헤드 이동 결과로서 (상기 제1 "타임워프된" 프레임 41A와 비교하여) 제2 "타임워프된" 프레임 41B에서 좌측으로 시프트되게 보이는 것이다.
그리고, 제3(41C) 및 그 후 제4(41D)의 "타임워프된" 프레임은, 마찬가지로, 즉 갱신된 또 다른 헤드 방향(포즈) 데이터에 각각에 근거하여 생성된다. 따라서, 도 4에 도시된 것처럼, 우측으로의 보다 큰 헤드 이동이 상기 "원래의" 헤드 방향과 비교하여 검출될 때, 오브젝트 42는 "타임워프된" 프레임 41C에서 보다 멀리 좌측으로 시프트되게 보이고; 상기 "원래의" 헤드 방향과 비교하여 좌측으로의 헤드 이동이 검출될 때, 오브젝트 42는 (헤드 이동이 검출되지 않았을 경우의 상기 제1 "타임워프된" 프레임 41A와 비교하여) "타임워프된" 프레임 41D에서 우측으로 시프트되게 보인다.
(원래의 헤드 방향에 대해) 상향 헤드 이동(회전 및/또는 병진운동)이 검출되었을 경우에, 오브젝트 42는, 출력 "타임워프된" 프레임에서 하향 시프트되게 보일 것이고; (원래의 헤드 방향에 대해) 하향 헤드 이동(회전 및/또는 병진운동)이 검출되었을 경우에, 오브젝트 42는, (헤드 이동이 검출되지 않은 상기 제1 "타임워프된" 프레임 41A와 비교하여) 각각의 출력 "타임워프된" 프레임에서 상향 시프트하게 보일 것임을 알 것이다.
도 6은, 도 4에서 설명된 것처럼, "타임워프" 처리를 행할 때, 도 1에서 설명된 것처럼, 그래픽 처리 시스템에서 데이터의 흐름과 프로세스들의 상대적 타이밍들을 개략적으로 설명한 것이다. 도 6에 도시된 것처럼, 그래픽 처리장치(GPU) 2는, 먼저, 메모리 7로부터 (CPU 1상에서 실행하는 상기 GPU 2용 드라이버에서 생성한) 적절한 코맨드들과 데이터를 페치하는 것에 의해, 상기 그래픽 처리장치(GPU) 2에 대해서, 상기 그래픽 처리장치(GPU) 2가 상기 애플리케이션 프레임을 렌더링하는 초기에 감지된 헤드 추적(방향) 데이터에 근거하여 애플리케이션 프레임을 생성시키고(렌더링시키고)(블록 61), 그 렌더링된 애플리케이션 프레임을 메인 메모리 7의 프레임 버퍼에 저장시킨다(블록 62).
그 후, 도 6에 도시된 예에서, 도 4의 예에서와 같이, 상기 렌더링된 애플리케이션 프레임에 대해 4개의 "타임워프" 프로세스들이 실시된다. 따라서, 실제로 상기 헤드 장착 디스플레이 8에 화상을 표시하기 전에, 또 다른 헤드 추적(방향) 데이터를 감지하고, 그 갱신된 헤드 추적(방향) 센서 데이터를 사용하여, 상기 그래픽 처리장치(GPU) 2에 의해 "타임워프" 처리로 상기 렌더링된 애플리케이션 프레임을 변환하여, 메인 메모리 7에서 (제1) 출력 프레임 버퍼에 저장되는(블록 64A) 제1 출력 "타임워프된" 버전의 상기 애플리케이션 프레임을 생성한다(블록 63A). 그리고, 상기 표시 제어기 4는, 상기 (제1) 프레임 버퍼에 저장된 상기 제1 출력 "타임워프된" 버전의 상기 애플리케이션 프레임을 판독하여, 상기 디스플레이 8의 상기 표시 패널에 표시한다(블록 66A).
한편, 상기 그래픽 처리장치(GPU) 2가 (블록 63A에서) 상기 렌더링된 애플리케이션 프레임을 변환하여 상기 제1 "타임워프된" 버전의 상기 애플리케이션 프레임을 생성하는 것을 종료하였다면, 그것은, 새로운 헤드 추적(방향) 데이터에 근거하여 "타임워프" 처리의 다른 인스턴스를 행하는데 이용 가능할 것이다. 따라서, 새로운 헤드 추적(방향) 데이터를 감지하고, 그 갱신된 헤드 추적(방향) 센서 데이터를 사용하여, 상기 그래픽 처리장치(GPU) 2에 의해 상기 렌더링된 애플리케이션 프레임을 다시 변환하여, 메인 메모리 7에서 (제2) 출력 프레임 버퍼에 저장되는(블록 64B) 제2 출력 "타임워프된" 버전의 상기 애플리케이션 프레임을 생성한다(블록 63B). 그리고, 상기 표시 제어기 4는, 상기 (제2) 프레임 버퍼에 저장된 상기 제2 출력 "타임워프된" 버전의 상기 애플리케이션 프레임을 판독하여, 상기 헤드 장착 디스플레이 8의 상기 표시 패널에 표시한다(블록 66B).
도 6에 도시된 예에서는, 상기 단계들을 반복하여 2개의 또 다른 출력 "타임워프된" 버전들의 상기 애플리케이션 프레임을 생성하여 상기 디스플레이 8의 상기 표시 패널에 표시한다(블록 63C, 64C, 65C, 66C; 및 블록 63D, 64D, 65D, 66D). 그리고, 전체 프로세스를 일회 또는 수회 반복하여, 하나 이상의 새로운 애플리케이션 프레임들을 생성하고, 각 새로운 애플리케이션 프레임에 대해 4개(또는 임의의 다른 원하는 수의) "타임워프" 프로세스들을 실시하여 적절한 출력 "타임워프된" 프레임들의 시퀀스를 상기 디스플레이 8에 표시한다.
도 7은, 도 4에 도시된 것처럼 "타임워프" 처리를 행할 때, 도 1에 도시된 것처럼, 그래픽 처리 시스템에서 데이터의 흐름과 프로세스들의 상대적 타이밍들의 다른 예를 개략적으로 설명한 것이다. 본 예에서는 상기 그래픽 처리장치(GPU) 2가 (도 6의 예에서와 같이) "타임워프" 처리로 렌더링된 애플리케이션 프레임들을 변환하는 것이 아니고, 상기 표시 제어기 4가 이 기능을 행한다.
따라서, 도 7에 도시된 것처럼, 도 6의 에에서와 같이, 그래픽 처리장치(GPU) 2는, 먼저, 메모리 7로부터 (상기 CPU 1상에서 실행하는 상기 GPU 2용 드라이버에서 생성한) 적절한 코맨드들과 데이터를 페치하는 것에 의해, 상기 그래픽 처리장치(GPU) 2에 대해서, 상기 그래픽 처리장치(GPU) 2가 상기 애플리케이션 프레임을 렌더링하는 초기에 감지된 헤드 추적(방향) 데이터에 근거하여 애플리케이션 프레임을 생성시키고(렌더링시키고)(블록 71), 그 렌더링된 애플리케이션 프레임을 메인 메모리 7의 프레임 버퍼)에 저장시킨다(블록 72).
그 후, 상기 렌더링된 애플리케이션 프레임에 대해 4개의 "타임워프" 프로세스들이 실시된다. 따라서, 실제로 상기 디스플레이 8에 화상을 표시하기 전에, 또 다른 헤드 추적(방향) 데이터를 감지하고, 그 갱신된 헤드 추적(방향) 센서 데이터를 사용하여, 상기 표시 제어기 4에 의해 "타임워프" 처리로 상기 렌더링된 애플리케이션 프레임을 변환하여, 제1 출력 "타임워프된" 버전의 상기 애플리케이션 프레임을 생성하고 나서(블록 75A), 상기 표시 제어기 4는, 상기 디스플레이 8의 상기 표시 패널에 직접 표시한다(블록 76A).
한편, 상기 표시 제어기 4가 (블록 75A에서) 상기 제1 "타임워프된" 버전의 상기 애플리케이션 프레임을 생성하는 처리를 종료하였다면, 그것은, 새로운 헤드 추적(방향) 데이터에 근거하여 "타임워프" 처리의 다른 인스턴스를 행하는데 이용 가능할 것이다. 따라서, 새로운 헤드 추적(방향) 데이터를 감지하고, 그 갱신된 헤드 추적(방향) 센서 데이터를 사용하여, 상기 표시 제어기 4에 의해, 상기 렌더링된 애플리케이션 프레임을 다시 변환하여, 제2 출력 "타임워프된" 버전의 상기 애플리케이션 프레임을 생성하고 나서(블록 75B), 상기 표시 제어기 4는, 상기 디스플레이 8의 상기 표시 패널에 직접 표시한다(블록 76B).
그리고, 도 7에 도시된 예에서는, 상기 단계들을 반복하여 2개의 또 다른 출력 "타임워프된" 버전들의 상기 애플리케이션 프레임을 생성하여 상기 디스플레이 8의 상기 표시 패널에 표시한다(블록 75C, 76C; 및 블록 75D, 76D). 그리고, 전체 프로세스를 일회 또는 수회 반복하여, 하나 이상의 새로운 애플리케이션 프레임들을 생성하고, 각 새로운 애플리케이션 프레임에 대해 4개(또는 임의의 다른 원하는 수의) "타임워프" 프로세스들을 실시하여 적절한 출력 "타임워프된" 프레임들의 시퀀스를 상기 디스플레이 8에 표시한다.
상기 예들에서, 각 렌더링된 (애플리케이션) 프레임은 3차원 세계 공간에 배치되는 씬의 오브젝트들의 뷰를 나타내고, 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되어서 (상기 디스플레이상에) 상기 프레임에 보이는 상기 씬의 오브젝트들은 상기 뷰 절두체라고 하는 그 공간의 체적내에 있다는 것을 알 것이다.
도 8은 (상기 디스플레이상에) 상기 프레임에 보일 수 있는 상기 세계 공간의 체적을 나타내는 뷰 절두체 80의 예를 도시한 것이다. 본 예에서, 상기 뷰 절두체 80은, 정점이 뷰포인트 83에 위치된 직사각형 피라미드의 절두체를 나타내고, 상기 뷰 방향 84에 수직한 가까운 평면 81과 먼 평면 82로 막혀 있다. 상기 뷰 절두체 80의 외부에 있는 오브젝트들이 렌더링되지 않아서, 상기 프레임에 보이지 않는다. 상기 뷰 절두체 80 내에 있는 오브젝트들은, (뷰 방향 84에서) 보다 얕은 깊이(즉, 상기 근 평면 81이나 뷰포인트 83에 보다 가까운)와 뷰 방향 84의 뷰포인트 83으로부터 상기 뷰에서 상기 오브젝트들의 앞에 있는 그 밖의 오브젝트들에 의해 가려지지 않는 한 상기 프레임에 보일 것이다.
다른 오브젝트를 가리는 씬에서 가까운 오브젝트의 일례가, 도 9에 도시되어 있다. 도 9는 뷰 방향 94에서 뷰포인트 93으로부터 본, 2개의 오브젝트, 즉 피라미드 91과 큐브 92로 이루어진 씬 90을 도시한 것이다. 상기 씬의 본 뷰에서, 큐브 92는 보다 얕은 깊이(즉, (뷰 방향 94에서) 상기 근 평면이나 상기 뷰포인트 93에 보다 가까운)와 피라미드 91의 앞에 있어, 피라미드 91의 영역은 큐브 92에 의해 가려진다.
상술한 것처럼, 출원인이 인식한 것은, 이 상황에서, 보다 가까운 오브젝트가 보다 먼 오브젝트를 가리는 경우, 상기와 같은 씬의 뷰를 나타내는 애플리케이션 프레임의 상기 "타임워핑" 및/또는 "스페이스워핑"이 왜곡들을 도입할 가능성이 높을 수도 있다는 것이다.
도 10은 상기 "타임워프"의 경우를 설명하고, 도 4에 도시된 것과 같은, 즉 상기 씬이 추가의 가까운 오브젝트 103을 포함하는 것을 제외하고, 하우스 102를 포함하는 다수의 오브젝트들로 이루어진 씬을 도시한 것이다.
본 예에서, 도 4의 상기 예에서와 같이, 애플리케이션 프레임 100은 상기 그래픽 처리장치(GPU) 2가 상기 애플리케이션 프레임 100을 렌더링하는 초기에 감지된 (제1) 헤드 방향(포즈) 데이터에 근거하여 상기 그래픽 처리장치(GPU) 2에 의해 렌더링된다. 그렇지만, 이 (제1) 헤드 방향(포즈)의 뷰의 포인트로부터, 가까운 오브젝트 103은, 하우스 102의 앞에(그리고 하우스에 대해 보다 깊은 깊이에) 있어, 하우스 102의 영역도 상기 배경의 영역도 가까운 오브젝트 103에 의해 가려진다.
도 10에 도시된 것처럼, 본 예에서, 도 4의 예에서와 같이, (애플리케이션 프레임 100이 렌더링된 후 감지된) 또 다른(제2) 감지된 헤드 방향(포즈) 데이터에 근거하여 애플리케이션 프레임 100을 변환하여 4개의 각각의 "타임워프된" 프레임 101A-D를 생성함으로써, 애플리케이션 프레임 100에 대해 4개의 "타임워프" 처리가 실시된다.
상기 제1 "타임워프된" 프레임 101A의 경우에, 상기 또 다른 감지된 헤드 방향(포즈) 데이터는, 상기 그래픽 처리장치(GPU) 2가 애플리케이션 프레임 100을 렌더링하는 초기에 원래의(제1) 헤드 방향(포즈) 데이터가 감지한 이후에 유저의 헤드 방향의 변화가 일어나지 않았다는 것을 나타낸다. 이 때문에, 제1 "타임워프된" 프레임 101A는, 상기 애플리케이션 프레임 100의 보다 넓은 시야로부터 취해진 적절한 윈도우("레터박스")를 간단히 나타내고, "타임워프" 변환은 행해지지 않았다.
그렇지만, 유저의 헤드 방향의 변화의 경우에, 그 변화된 헤드 방향에 근거하여 상기 애플리케이션 프레임 100을 변환하는 "타임워프" 변환은 행해지지만, 왜곡들을 도입하여도 된다. 이러한 왜곡은, (뷰포인트에 대해) 상기 카메라에 보다 가까운 오브젝트들에 대해, 또한, 예를 들면 시차효과로 인해, 헤드 이동들(회전들 및/또는 병진운동들)이 보다 큰 경우에, 특히 분명하고 보다 심하다.
따라서, 우측으로의 작은 헤드 이동(예를 들면, 회전 및/또는 병진운동)이 원래의(제1) 헤드 방향과 비교하여 검출될 때, 가까운 오브젝트 103은, 특히, "타임워프된" 프레임 101B에서 왜곡되게 보일 수도 있고; 우측으로의 보다 큰 헤드 이동이 검출될 때, 가까운 오브젝트 103은 "타임워프된" 프레임 101C에서 보다 왜곡되게 보일 수도 있고; 우측으로의 훨씬 보다 큰 헤드 이동이 검출될 때, 가까운 오브젝트 103은 "타임워프된" 프레임 101D에서 훨씬 보다 왜곡되게 보일 수도 있다.(그 밖의 헤드 이동들(회전들 및/또는 병진운동들), 이를테면 좌, 상 및 하의 이동으로 상기 씬에 대해 왜곡이 생기게 될 수도 있다는 것을 알 것이다.)
또한, 유저의 헤드 방향의 변화의 경우에, 상기 애플리케이션 프레임 100에서 가까운 오브젝트 103에 의해 가려진 상기 씬의 일부들이 보여질 수 있다. 따라서, 도 10의 예에 도시된 것처럼, 우측으로의 작은 헤드 이동(예를 들면, 회전 및/또는 병진운동)이 원래의(제1) 헤드 방향과 비교하여 검출될 때, 상기 애플리케이션 프레임 100에서 가려졌던 상기 씬의 작은 영역 104B가 드러내 보이고(101B); 우측으로의 보다 큰 헤드 이동이 검출될 때, 상기 씬의 보다 큰 영역 104C가 드러내 보이며(10C); 우측으로의 훨씬 보다 큰 헤드 이동이 검출될 때, 상기 씬의 훨씬 보다 큰 영역 104D가 드러내 보인다(101D). (그 밖의 헤드 이동들(회전들 및/또는 병진운동들), 이를테면 좌, 상 및 하의 이동으로 이전에 가려진 상기 씬의 일부들도 드러내 보일 수도 있다는 것을 알 것이다.)
그렇지만, 본 예에서, 새롭게 볼 수 있는 "가려지지 않은" 영역들 104B-D의 데이터는, 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되어 있지 않았는데, 그 이유는 이 영역들이, 상기 애플리케이션 프레임 100이 근거하여 렌더링되었던 상기 (제1) 헤드 방향(포즈)의 뷰의 포인트로부터 가까운 오브젝트 103에 의해 가려졌기 때문이다.
따라서, "타임워프된" 프레임들 101B-D는, 특히, 가까운 오브젝트 103과 "가려지지 않은" 영역들 104B-D를 정확하게 나타내지 않아, 유저에게 표시되는 상기 출력 "타임워프된" 프레임들 101B-D에서 왜곡들과 아티팩트들이 생기게 될 수도 있다.
마찬가지로, 상술한 것처럼, 씬이 이동 오브젝트들을 포함할 때, 그 오브젝트들의 이동으로 "가려지지 않게" 될 수 있어, "스페이스워프" 처리를 행할 때 유저에게 표시되는 것이 왜곡되게 될 수 있다.
도 11은, 본 발명의 바람직한 실시예를 설명하는 것이고, 하우스 112와 가까운 오브젝트 113을 포함하는 다수의 오브젝트들로 이루어진, 도 10과 유사한 씬을 도시하는 것이다.
본 실시예에서, 도 10의 상기 예에서와 같이, 제1(애플리케이션) 프레임 110은, 상기 그래픽 처리장치(GPU) 2가 상기 (애플리케이션) 프레임 110을 렌더링하는 초기에 (제1 시점에서) 감지된 (제1) 헤드 방향(포즈) 데이터에 근거하여 상기 그래픽 처리장치(GPU) 2에 의해 렌더링된다. 따라서, (애플리케이션) 프레임 110은, 상기 그래픽 처리장치(GPU) 2가 (애플리케이션) 프레임 110을 렌더링하는 초기에 (상기 제1 시점에서) 감지된 상기 헤드 장착 디스플레이 시스템에 의해 감지되었던 상기 (제1) 헤드 방향(포즈)에 대해 상기 씬의 "바로 앞" 뷰 또는 포워드 뷰를 나타낸다.
상기 씬의 포워드 뷰 110에 있어서, 가까운 오브젝트 113은 하우스 112의 영역을 포함하는 상기 씬의 영역을 가려, 그 포워드 뷰 110의 이 영역에 대한 데이터는 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되지 않는다.
그렇지만, 본 실시예에서는, 도 10의 예와 대조하여, 상기 포워드 뷰 110(를 나타내는 프레임)을 렌더링하고 나서, 뷰들을 사용하여 표시할 기간 동안에, 상기 포워드 뷰 110(를 나타내는 프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)(으로부터 시작하여)에 대해 상기 헤드 장착 디스플레이의 유저가 만들지도 모르는 예측된 또는 가정된 각각의 좌우 헤드 이동(예를 들면,회전들 및/또는 병진운동들)에 근거하여, 상기 그래픽 처리장치(GPU) 2가 2개의 또 다른 버전들 115, 116의 상기 씬을 렌더링하는 뷰포인트에 오브젝트 113이 가깝다고 판정할 수 있도 있다.
따라서, 좌측 뷰 115는, 상기 포워드 뷰 110(를 나타내는 프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)에 대해 그들의 헤드를 특별한 각도(예를 들면, 20도)로 유저에 의해 전환하면(회전하면)(및/또는 그들이 그들의 헤드를 특별한 거리로 이동(병진운동)하면) 보이는 것처럼 상기 씬의 뷰를 나타낸다. 마찬가지로, 우측 뷰 116은, 상기 포워드 뷰 110(를 나타내는 프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)에 대해 그들의 헤드를 특별한 각도(예를 들면, 20도)로 유저에 의해 전환하면(회전하면)(및/또는 그들이 그들의 헤드를 특별한 거리로 이동(병진운동)하면) 보이는 것처럼 상기 씬의 뷰를 나타낸다. (또한, 또는 대신에, 상기 (제1) 헤드 방향(포즈)에 대한 헤드 이동들(회전들 및/또는 병진운동들)의 상이한 및/또는 보다 많은 양 및/또는 방향(이를테면, 상 및/또는 하)에 근거한 그 밖의 또 다른 버전들의 상기 씬이 렌더링되어도 된다.)
도 11에서 알 수 있듯이, 본 실시예에서, 좌측 뷰 115와 우측 뷰 116은, 포워드 뷰 110에서 가려지는 하우스 112의 영역을 포함하는, 상기 씬의 영역들뿐만 아니라, 상기 포워드 뷰 110과 상이한 헤드 방향들(포즈들)에도 근거한 가까운 오브젝트 113을 나타내고 있다.
따라서, 상기 2개의 또 다른 버전들의 상기 씬에 대한 렌더링된 데이터, 좌측 뷰 115 및 우측 뷰 116은, "타임워프" 처리를 행할 때, 상기 "타임워프" 처리로 크게 왜곡될 수 있는 상기 씬의 영역들, 예를 들면, 가까운 오브젝트 113을 포함하는 상기 씬의 영역들과, "가려지지 않는" 즉 상기 포워드 뷰 110에서 가려지는 상기 씬의 영역들이지만, 렌더링된 뷰들을 사용하여 표시하는 기간동안에 유저의 헤드 방향(포즈)의 변화로 인해 보여질 수 있는 상기 씬의 영역들에 대해 렌더링된 데이터를 제공하는데 사용될 수 있다(바람직한 실시예에서는, 사용된다). 이것이 의미하는 것은, "타임워프" 처리에 의해 생길 수 있는 왜곡들과 아티팩트들을 피하거나 감소시킬 수 있다는 것이다.
도 12는 좌측 뷰와 우측 뷰 전체를 렌더링하는 대신에, 도 11의 실시예에서와 같이, 일부의 좌측 뷰와 우측 뷰만을 그래픽 처리장치(GPU) 2가 렌더링하는 본 발명의 다른 실시예를 설명하는 것이다. 이것은, 도 11의 실시예와 비교하여 처리 요구사항들을 감소시킬 수 있다.
도 12는 하우스 122와 가까운 오브젝트 123으로 이루어진 다수의 오브젝트들을 포함하는, 도 11과 같은 씬을 도시한 것이다. 본 실시예에서, 도 11의 실시예와 같이, (포워드 뷰를 나타내는) 제1(애플리케이션) 프레임 120은, 상기 그래픽 처리장치(GPU) 2가 상기 (애플리케이션) 프레임 120을 렌더링하는 초기에 (제1 시점에서) 감지된 (제1) 헤드 방향(포즈) 데이터에 근거하여 상기 그래픽 처리장치(GPU) 2에 의해 렌더링된다. 상기 씬의 그 포워드 뷰 120에서, 가까운 오브젝트 123은 하우스 122의 영역을 포함하는 상기 씬의 영역을 가려, 이 영역들에 대한 데이터는, 상기 포워드 뷰 120(를 나타내는 프레임)에서 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되지 않는다.
본 실시예에서는, 상기 (애플리케이션) 프레임 120을 렌더링하고 나서, 상기 그래픽 처리장치(GPU) 2가 일부 우측 뷰 125와 일부 좌측 뷰 126을 렌더링하는, 상기 뷰포인트에, 가까운 오브젝트 123이 가깝다고 판정할 수도 있다. 도 11의 실시예에서와 같이, 좌측 뷰 125는, 포워드 뷰 120(을 나타내는 상기 프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)에 대해 헤드를 특별한 각도(예를 들면, 20도)로 좌측으로 전환하는(회전하는) 것(및/또는 헤드를 특별한 거리로 이동(병진운동)하는 것)에 근거한 상기 씬의 뷰를 나타내고, 우측 뷰 126은, 포워드 뷰 120(을 나타내는 상기 프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)에 대해 헤드를 특별한 각도(예를 들면, 20도)로 우측으로 전환하는(회전하는) 것(및/또는 헤드를 특별한 거리로 이동(병진운동)하는 것)에 근거한 상기 씬의 뷰를 나타낸다.(또한, 또는 대신에, 상기 (제1) 헤드 방향(포즈)에 대한 헤드 이동들(회전들 및/또는 병진운동들)의 상이한 및/또는 보다 많은 양 및/또는 방향들(이를테면, 상 및/또는 하)에 근거한 상기 씬의 그 밖의 일부 뷰들이 렌더링되어도 된다.)
그렇지만, 도 11의 실시예와 대조하여, 일부의 우측 뷰 125와 좌측 뷰 126은, 가까운 오브젝트 123과 "가려지지 않은" 부분들(영역들) 124A, 124B, 즉, 앞 뷰 120에서 가까운 오브젝트 123에 의해 가려지지만 상기 변화된 헤드 방향(포즈)으로 인해 각각의 일부 뷰에서 드러내 보이는 부분들(영역들)을 나타내기만 한다. 따라서, 일부 우측 뷰 125의 경우에, 상기 렌더링된 영역은, (포워드 뷰 120에서 가까운 오브젝트 123에 의해 가려지지만 우측 뷰 125에서 드러내 보이는 영역에 해당한) "가려지지 않은" 영역 124A와 가까운 오브젝트 123에 해당한다. 마찬가지로, 좌측 뷰 126의 경우에, 상기 렌더링된 영역은, (포워드 뷰 120에서 가까운 오브젝트 123에 의해 가려지지만 좌측 뷰 126에서 드러내 보이는 영역에 해당한) "가려지지 않은" 영역 124B와 가까운 오브젝트 123에 해당한다.
이렇게 하여, 또 다른 뷰들을 렌더링하는데 필요한 상기 추가의 처리는, 아티팩트들과 왜곡들을 일으킬 가능성이 아주 높은 상기 프레임의 영역들, 즉 상기 포워드 뷰에서 가까운 오브젝트에 의해 가려지지만 헤드 방향(포즈)의 변화로 인해 드러내 보일 수도 있는 상기 프레임의 부분들(영역) 및 가까운 오브젝트를 포함하는 영역들에 한정될 수 있다.
마찬가지로, 다른 실시예에서, 추가로 또는 이와는 달리, 또 다른 뷰들(버전들)이 근거하여 렌더링되는 상기 회전들 및/또는 병진운동들은, 아티팩트들과 왜곡들을 일으킬 가능성이 아주 높은 상기 씬의 영역들에 대해 렌더링된 데이터를 제공하도록 선택될 수 있다. 예를 들면, 가림 효과가 일어날 가능성이 높은 깊이 정보를 사용하여 결정하고 나서, 또 다른 뷰(또는 뷰들)이 근거하여 렌더링되는 상기 뷰포인트 및/또는 뷰 방향을 선택하여 렌더링된 데이터를 제공하여 그 가림 효과들을 완화시킬 수 있었다.
출원인 한층 더 인식한 것은, 일부의 상황에서, 예를 들면, 추가의 처리가 상기 시스템 능력을 뛰어넘어서 상기 포워드 뷰 120의 렌더링에 영향을 미칠 수 있기 때문에, 상기 또 다른 (일부) 뷰들(버전들)을 렌더링하도록 행해지는 처리를 한층 더 제한하는 것이 바람직할 수도 있다. 이러한 상황은, 예를 들면, 가까운 오브젝트 123이 상기 포워드 뷰 120의 큰 부분(또는 전부)를 커버하기에 충분히 크고 및/또는 가까운 경우, 부딪힐 수도 있어, 상기 프레임의 큰 영역(또는 전부)은 상기 또 다른 뷰들(버전들)에 대해 렌더링될 필요가 있을 것이다. 이 경우에, 렌더링되는 또 다른 뷰들(버전들)의 수를 감소시키거나, 실제로 어떠한 또 다른 뷰들(버전들)도 전혀 렌더링하지 않고, 대신에 상기 포워드 뷰 120(을 나타내는 프레임)만을 렌더링하는 것이 바람직할 수도 있다.
따라서, 일 실시예에서는, 상기 또 다른 좌우측 뷰들(버전들)을 렌더링하는 것이 상기 그래픽 처리 시스템의 처리 제한을 초과하는지를 판정하고, 초과한다고 판정될 때, 렌더링되는 또 다른 뷰들(버전들)의 수는 감소, 예를 들면, 및 바람직하게는 0으로 감소되는 것이 적절하다.
이에 따라서, 도 13은 상기 씬의 또 다른 뷰들(버전들)을 렌더링하는 상기 처리 요구사항이 감소될 수 있는 다른 실시예를 설명하는 것이다. 도 13은 토끼 132와 나무 133로 이루어진 다수의 오브젝트들을 포함하는 씬을 도시한 것이다. 본 실시예에서, (포워드 뷰를 나타내는) 제1 애플리케이션 프레임 130A는, 상기 그래픽 처리장치(GPU) 2가 상기 애플리케이션 프레임 130A를 렌더링하는 초기에 (제1 시점에서) 감지된 제1 뷰 방향(포즈) 데이터에 근거하여 상기 그래픽 처리장치(GPU) 2에 의해 렌더링된다. 상기 씬의 이 포워드 뷰 130A에서, 나무 133은 토끼 132가 보여질 수 없도록 토끼 132를 포함하는 상기 씬의 영역을 가린다.
그렇지만, 유저가 그들의 헤드를 우측으로 이동(회전 및/또는 병진운동)하면, 토끼 132는, 시차 효과로 인해, "가려지지 않아야" 하고, 상기 나무 133 뒤에 보여야 한다. 따라서, 도 13에서 설명된 것처럼, 새로운 애플리케이션 프레임 130B가 이 새로운 (제2) 뷰 방향(포즈)에 근거하여 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되면, 토끼 132는 그 프레임에서 보여질 수 있을 것이다.
그렇지만, 새로운 애플리케이션 프레임 130B를 렌더링하는 대신에, 출력 "타임워프된" 프레임 131A가 상기 새로운 (제2) 뷰 방향(포즈)에 근거하여 상기 제1 애플리케이션 프레임 130A를 (6 자유도(DOF)중 3 자유도) "타임워핑"에 의해 생성되면, 상기 출력 "타임워프된" 프레임 131A는 "가려지지 않은" 영역들 134A를 정확히 나타내지 않을 수도 있는데, 그 이유는 이 영역들 134A에 대한 데이터가 상기 제1 애플리케이션 프레임 130A에서 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되어 있지 않았기 때문이다. 도 13에서 설명된 것처럼, 이것에 의해 유저에게 표시되는 것에서 왜곡들과 아티팩트들이 생길 수 있다; 예를 들면, 토끼 132는 상기 출력 "타임워프된" 프레임 131A에 나타내지지 않을 수도 있다.
이 때문에, 본 발명의 실시예에서, 출력 프레임을 생성하기 전에, 애플리케이션 프레임 130A의 3개의 또 다른 버전들(뷰들) 135, 136, 137은, 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되고, 이때의 각 또 다른 버전 135, 136, 137은 상기 애플리케이션 프레임 130A가 근거하여 렌더링되는 상기 제1 뷰 방향(포즈)과 상이한 뷰 방향(포즈)에 근거한 상기 씬의 뷰를 나타낸다.
따라서, 본 실시예에서, 좌측 뷰 135, 우측 뷰 136 및 하측 뷰 137은, 유저가 그들의 헤드를 상기 제1 뷰 방향(포즈)에 대해, 특별한 각도로 좌측으로, 우측으로 및 하측으로 각각 전환하면(회전하면) 보이는 것처럼 상기 씬의 뷰들을 나타낸다. 도 13에 설명된 것처럼, 토끼 132는 우측 뷰 136에서 나무 133 뒤에 보인다.
그리고, 본 실시예에서, 출력 프레임 131B를 (제2의 나중의 시점에서 감지된) 감지된 헤드의 우측으로의 이동에 근거하여 생성할 때, 상기 감지된 헤드 이동에 가장 가까운 뷰 방향(포즈)에 근거하여 렌더링되어 있던 상기 또 다른 버전, 즉 우측 뷰 136이 선택되어, 애플리케이션 프레임 130A와 합성되어, 토끼 132를 나타내는 상기 출력 프레임 131B를 생성한다.
그렇지만, 본 실시예에서, 도 11 및 도 12에서 설명된 실시예들과 대조하여, 각 또 다른 버전들(뷰들) 135, 136, 137은, 상기 애플리케이션 프레임 130A에 저해상도로 렌더링된다. 이것이 의미하는 것은, 상기 또 다른 버전들을 렌더링하는데 필요한 처리가 감소된다는 것이다. 그렇지만, 도 13에서 설명된 것처럼, 이것은, (토끼 132를 포함하는) 출력 프레임 131B의 "가려지지 않은" 영역들 134B를 훼손시키면서 상기 애플리케이션 프레임 130A와 같은 해상도로 상기 또 다른 버전들을 렌더링하는 경우 보다 낮은 화질로 도시되어 있다. 그럼에도 불구하고, 유저에게 표시되는 것에서의 왜곡들과 아티팩트들은, 렌더링된 또 다른 버전들의 상기 애플리케이션 프레임 130A(이를테면 출력 프레임 131A)를 이용하지 않고 생성된 출력 프레임과 비교하여 아주 상당히 감소된다.
마찬가지로, 다른 실시예에서, 상기 또 다른 버전들은, 추가로 또는 이와는 달리, 보다 낮은 속도로 애플리케이션 프레임 130A에 대해 갱신(렌더링)되어, 그들을 렌더링하는데 필요한 처리를 감소시킬 수도 있다.
도 14는 본 발명의 바람직한 실시예에 따라, 도 1에서 설명된 것처럼, 그래픽 처리 시스템의 동작을 개략적으로 도시한 것이다. 도 14에 도시된 것처럼, 본 실시예에서, 제1 뷰포인트로부터의 씬의 제1 포워드 뷰(를 나타내는 프레임)는, 상기 그래픽 처리장치(GPU) 2가 상기 제1 포워드 뷰(프레임)를 렌더링하는 초기에 (제1 시점에서) 감지된 (제1) 헤드 방향(포즈) 데이터에 근거하여 (단계 140에서) 상기 그래픽 처리 시스템의 상기 그래픽 처리장치(GPU) 2에 의해 렌더링된다.
그리고, (단계 141에서) 상기 제1 뷰포인트에 가까운 상기 제1 포워드 뷰에서 오브젝트(또는 오브젝트들)이 있는지 없는지를 선택사항으로 판정할 수도 있다. 이것은, 상기 씬의 포워드 뷰에서의 오브젝트의 깊이(예를 들면, 상기 뷰 방향으로 상기 뷰 절두체의 근 평면으로부터 상기 오브젝트까지의 거리)를 판정하고, 그 판정된 깊이를 임계값과 비교하여서 행해져도 된다. 오브젝트의 상기 깊이가 상기 임계값 미만이면, 그 오브젝트가 상기 제1 뷰포인트와 가깝다고 판정되어도 된다.
(추가로 또는 이와는 달리, 다른 실시예에서는, (단계 141에서) 상기 제1 뷰포인트에 가까운 상기 제1 포워드 뷰에서 이동 오브젝트(또는 오브젝트들)이 있는지 없는지를 판정할 수도 있다.)
도 14의 실시예에서는, 상기 제1 포워드 뷰(프레임)을 렌더링하는 단계(단계 140)는 상기 제1 뷰포인트에 오브젝트가 가까운지 아닌지를 판정하는 단계(단계 141) 전에 행해지지만, 이것은 필수적이지 않다는 것을 알 것이다. 대신에, 상기 제1 포워드 뷰(프레임)을 렌더링하는 단계(단계 140)는 상기 제1 뷰포인트에 오브젝트가 가까운지 아닌지를 판정하는 단계(단계 141) 후에 또는 동시에, 행해질 수 있다.
상기 제1 뷰포인트에 오브젝트가 가깝지 않으면, 제1 포워드 뷰(프레임)만을 사용하여, 예를 들면 상기 그래픽 처리장치(GPU) 2가 상기 제1 포워드 뷰(프레임)을 렌더링한 후 (제2의 나중의 시점에서) 감지된 (제2) 헤드 방향(포즈) 데이터에 근거한 "타임워프" 처리로 상기 제1 포워드 뷰(프레임)를 변환하고, 이렇게 하여 "타임워프된" 표시용 출력 프레임(화상)을 제공함으로써, 표시하여도 된다(단계 143).
그렇지만, 상기 제1 뷰포인트에 오브젝트(또는 오브젝트들)가 가깝다고 판정되면, 일 실시예에서, 상기 그래픽 처리장치(GPU) 2는, 예를 들면, 상기 제1 포워드 뷰(프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)으로부터 시작하여 상기 헤드의 예정된 전환(회전)(및/또는 이동(병진운동))에 근거하여, 상기 씬의 하나 이상의 또 다른 뷰들을 렌더링한다(단계 144).
상기 제1 뷰포인트에 가까운 상기 제 1 포워드 뷰에서 오브젝트(또는 오브젝트들)이 있는지 없는지를 판정하는 단계(단계 141)가 선택사항이므로, 상기 방법은, 중간의 단계를 행하지 않고 단계 140으로부터 단계 144로 직접 진행되어도 된다. 따라서, 상기 그래픽 처리장치(GPU) 2는 상기 제1 뷰포인트에 가까운 상기 제 1 포워드 뷰에서 오브젝트(또는 오브젝트들)이 있는지 없는지에 상관 없이 상기 씬의 상기 하나 이상의 또 다른 뷰들을 렌더링하여도 된다.
렌더링되는 상기 또 다른 뷰들은, 예를 들면, 상기 제1 프레임이 렌더링되는 상기 애플리케이션에 의해 (런타임에서) 제공된 정보에 근거하여, 가능성이 높은 유저 헤드 이동들(예를 들면, 회전들 및/또는 병진운동들)에 근거하여 선택되어도 된다.
예를 들면, 자동차 게임일 경우에 가정할 수도 있는 것은, 유저가 앉아 있고, 그러므로 유저의 헤드 이동들이 그 목의 이동으로 인한 회전에 제한된다는 것이다. 그 게임이 가상의 "윙 미러들"을 포함하는 경우에 가정할 수도 있는 것은, 예를 들면, 유저가 그들의 헤드를 크게 전환할 가능성이 한층 더 감소된다는 것이다. 또한, 가정할 수도 있는 것은, 유저가 보통 왕복방향으로 앞쪽으로 보고 있고, 그들의 헤드 좌측 또는 우측을 코너를 향해 전환하지만, (예를 들면, 언덕들이 있지 않으면) 그들의 헤드를 크게 위 또는 아래로 이동시킬 가능성이 없다는 것이다.
따라서, 이 경우에는, 유저의 헤드 이동들(회전들)의 최대 범위는 좌측으로 약 90도, 우측으로 90도, 하측으로 20도, 및 상측으로 20도 사이이지만, 유저가 보통, 왕복 방향으로 보고 있다고 예상될 수도 있다. 그러므로, 이 경우에, 가정된 좌우 헤드 이동들(회전들)에 근거해서만 제한된 수의 또 다른 뷰들이 렌더링될 수도 있다, 예를 들면, 상기 제1 포워드 뷰(프레임)가 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)으로부터 시작하여, 한쪽의 또 다른 뷰는 헤드를 좌측으로 35도 전환하는 것에 근거하고 다른 쪽의 또 다른 뷰는 헤드를 우측으로 35도 전환하는 것에 근거하여 렌더링될 수도 있다. 보다 많은 또 다른 뷰들은, 필요할 가능성이 높을 때, 예를 들면 또 다른 차를 추월할 때 생성될 수도 있다.
비행 시뮬레이터 애플리케이션의 경우에, 예를 들면, 가정될 수도 있는 것은, 유저가 앉아 있고, 보통 왕복 방향으로 앞으로 보고 있지만, 오브젝트들은, 자동차 게임과 비교하여 보다 넓은 범위의 방향들, 예를 들면 좌우뿐만 아니라 상하로부터도 유저에 접근할 수도 있다는 것이다. 따라서, 이 경우에, 예상될 수도 있는 것은, 헤드 이동들(회전들)의 유저의 최대 이동 범위는 좌측으로 약 90도, 우측으로 90도, 하측으로 60도, 상측으로 60도 사이에 있다는 것이다. 그러므로, 이 경우에, 유저가 그들의 헤드를 상하로 전환할 증가된 가능성을 고려하기 위해, 헤드를 35도 하측으로 35도 상측으로 전환하는 것에 근거한 또 다른 뷰들은, 상기 헤드를 35도 좌측으로 35도 우측으로 전환하는 것에 근거한 또 다른 뷰들과 아울러 렌더링되어도 된다.
1인칭 슈팅(FPS) 게임의 경우에, 가정할 수도 있는 것은, 유저가 서있고 신속하게 반응하여서, 보다 넓은 범위의 방향으로 크게 헤드 이동들(예를 들면, 회전들 및/또는 병진운동들)을 할 가능성이 보다 높을 수도 있다는 것이다. 그러므로, 상대적으로 보다 넓은 범위의 잠재적 헤드 이동들(회전들 및/또는 병진운동들)에 걸쳐 이어지는 상대적으로 보다 큰 수의 또 다른 뷰들, 예를 들면, 상기 제1 포워드 뷰(프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)으로부터 시작하여 헤드를 좌측으로 35도, 우측으로 35도, 좌측으로 60도, 우측으로 60도, 하측으로 35도, 상측으로 35도, 하측으로 60도 및 상측으로 60도 전환하는 것에 근거한 또 다른 뷰들이 렌더링되어도 된다.
추가로 또는 이와는 달리, 렌더링되는 상기 또 다른 뷰들을 선택하여, 아티팩트들과 왜곡들의 가능성(및 심각성)을 감소시킬 수도 있다.
다시 도 14를 참조하여, (단계 144에서) 상기 (선택된) 또 다른 뷰(들)가 렌더링되었으면, 표시를 위해 사용될 상기 렌더링된 데이터를, 상기 렌더링된 포워드 뷰 및 또 다른 뷰(들)(을 나타내는 프레임)으로부터 선택하여도 된다(단계 145). 이것은, 상기 그래픽 처리장치(GPU) 2가 상기 제1 포워드 뷰(프레임)을 렌더링한 후(및 상기 그래픽 처리장치(GPU) 2가 또 다른 뷰(들)을 렌더링한 후) (제2의, 나중의 시점에서) (제2) 헤드 방향(포즈) 데이터를 감지하고 나서, 상기 실제의 감지된 (제2) 헤드 방향(포즈)에 가장 가까운 헤드 방향(포즈)에 근거하여 렌더링되는 상기 렌더링된 뷰에 대해 렌더링된 데이터를 선택함으로써, 행해져도 된다.
예를 들면, 상기 제1 포워드 뷰(프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)에 대해 헤드의 좌측으로의 가정된 20도 전환(회전)에 근거하여 좌측 뷰를 렌더링하고, 상기 제1 포워드 뷰(프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)에 대해 헤드의 우측으로의 20도 전환(회전)에 근거하여 우측 뷰를 렌더링하면, 상기 좌측 뷰는, (상기 제1 포워드 뷰(프레임)가 렌더링된 후) (상기 제1 포워드 뷰(프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)에 대해) 헤드의 좌측으로 10도보다 큰 전환(회전)이 감지될 때 선택되어도 되고, 상기 우측 뷰는, (상기 제1 포워드 뷰(프레임)가 렌더링된 후) (상기 제1 포워드 뷰(프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)에 대해) 헤드의 우측으로 10도보다 큰 전환(회전)이 감지될 때 선택되어도 되고, 상기 제1 포워드 뷰(프레임)는, (상기 제1 포워드 뷰(프레임)가 렌더링된 후) (상기 제1 포워드 뷰(프레임)이 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)에 대해) 헤드의 좌측으로 10도이상 우측으로 10도 이상의 회전(전환)이 감지될 때 선택되어도 된다.
일부의 또 다른 뷰들(버전들)만이 렌더링되는 경우, 상기 선택은, 대응한 일부의 또 다른 뷰를 렌더링하는 상기 포워드 뷰(프레임)의 영역들에 관해 행해져도 되고, 상기 포워드 뷰(프레임)는 또 다른 뷰(버전)를 렌더링하지 않는 상기 포워드 뷰(프레임)의 영역들에 대해 (디폴트로) 선택되어도 된다.
그리고, 상기 선택된 렌더링된 데이터는, 예를 들면, 상기 그래픽 처리장치(GPU) 2가 상기 제1 포워드 뷰(프레임)(및 상기 또 다른 뷰들(버전들))를 렌더링한 후 (상기 제2의, 나중의 시점에서) 감지된 (상기)(제2) 헤드 방향(포즈) 데이터에 근거하여 (3 또는 6 자유도(DOF)) "타임워프" 처리에 의해 상기 선택된 렌더링된 데이터를 변환하고, 이렇게 하여 표시용 "타임워프된" 출력 프레임(화상)을 제공함으로써, 출력 프레임을 생성하는데 사용되어도 된다(단계 146). 또한, 또는 대신에, 상기 선택된 렌더링된 데이터에 대해, 예를 들면 렌즈 왜곡 보정 변환, 색수차(왜곡) 보정 변환, 및/또는 "스페이스워프" 변환(외삽)을 실시하여도 된다.
도 15는 이를테면 도 11에 도시된 것처럼, 본 발명의 바람직한 실시예에 따라 "타임워프" 처리를 행할 때, 도 1에 도시된 것처럼, 그래픽 처리 시스템에서 데이터의 흐름과 프로세스들의 상대적 타이밍들을 개략적으로 설명한 것이다.
상술한 것처럼, 도 6의 예에서와 같이, 상기 그래픽 처리장치(GPU) 2가 상기 씬의 포워드 뷰를 나타내는 단일의 애플리케이션 프레임을 생성하고 나서 이에 대해 "타임워프" 처리를 실시하는 대신에, 본 실시예에서는, 상기 그래픽 처리장치(GPU) 2가 상기 씬의 다수의 상이한 뷰들(버전들)을 나타내는 일 세트의 렌더링된 데이터를 생성하고 나서, 상기 세트의 렌더링된 데이터의 선택된 렌더링된 데이터에 대해 "타임워프" 처리를 실시한다.
따라서, 도 15에 도시된 것처럼, 본 실시예에서, 도 6의 상기 예에서와 같이, 그래픽 처리장치(GPU) 2는, 메모리 7로부터 (CPU 1상에서 실행하는 상기 GPU 2용 드라이버에서 생성한) 적절한 코맨드들과 데이터를 페치하는 것에 의해, 상기 그래픽 처리장치(GPU) 2에 대해서, 상기 그래픽 처리장치(GPU) 2가 포워드 뷰(애플리케이션 프레임)를 렌더링하는 초기에 (제1 시점에서) 감지된 헤드 추적(방향(포즈)) 데이터에 근거하여 상기 포워드 뷰(애플리케이션 프레임)를 생성시키고(렌더링시키고)(블록 151), 그 렌더링된 포워드 뷰(애플리케이션 프레임)을 메인 메모리 7의 프레임 버퍼에 저장시킨다(블록 152A).
본 실시예에서, 도 6의 상기 예에서와 같이, 상기 렌더링된 포워드 뷰(애플리케이션 프레임)는, 상기 감지된 헤드 추적(방향(포즈)) 데이터에 대응한 (제1) 헤드 방향(포즈)으로부터 렌더링되고 있는 상기 씬의 (제1) 포워드 뷰를 나타낸다. 그렇지만, 도 6의 상기 예와 대조하여, (상기 포워드 뷰가 렌더링되는 상기 뷰포인트에 오브젝트가 가깝다고 판정될 때) 상기 그래픽 처리장치(GPU) 2는, 상기 씬의 좌측 뷰와 우측 뷰를 나타내는 상기 씬의 2개의 또 다른 버전들도 (블록 151에서) 생성한다(렌더링한다). 그 2개의 또 다른 버전들은, 메인 메모리 7에서 각각의 프레임 버퍼에 저장된다(블록 152B, 152C).
본 실시예에서, 상기 씬의 상기 좌측 뷰와 상기 우측 뷰는, (블록 151에서) 상기 포워드 뷰(애플리케이션 프레임)(와 거의 동시에)와 함께 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되고 나서, (블록 152B, 152C에서) 이후의 사용을 위해 저장된다. 이것이 의미하는 것은, 상기 씬의 상기 상이한 뷰들에 같은 입력 데이터가, 렌더링 동안에 상기 그래픽 처리 장치(GPU)에 의해 재사용될 수 있어, 그것은 한번 캐시되기만 하여도 되어, 예를 들면 렌더링 프로세스가 보다 효율적으로 된다는 것이다.
그렇지만, 다른 실시예에서, 좌측 뷰와 우측 뷰 데이터는, (예를 들면, 또 다른(제2) 헤드 추적(방향(포즈)) 데이터가 감지된 후, 블록 153A, 153B, 153C 및/또는 153D에서) 표시하는데 필요한 포인트에서 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되어도 된다.
본 실시예에서, 도 6의 상기 예에서와 같이, 실제로 상기 디스플레이 8에 화상을 표시하기 전에, 또 다른(제2) 헤드 추적(방향(포즈)) 데이터는, (제2의, 나중의 시점에서) 감지된다. 그렇지만, 도 6의 상기 예와 대조하여, 본 실시예에서는, 그 후 상기 또 다른 감지된 헤드 추적(방향(포즈)) 데이터를 사용하여 상기 그래픽 처리장치(GPU) 2에 의해 상기 렌더링된 포워드 뷰, 좌측 뷰 및 우측 뷰로부터 표시를 위해 사용되는 적절한 렌더링된 데이터를 선택한다.
예를 들면, 상기 또 다른 감지된 헤드 추적(방향(포즈)) 데이터는, ((블록 151에서) 상기 그래픽 처리장치(GPU) 2가 상기 포워드 뷰(애플리케이션 프레임)을 렌더링하는 초기에 감지된 그들의 헤드 방향(포즈)과 비교하여) 유저가 그들의 헤드를 우측으로(예를 들면, 특정한 각도 및/또는 거리이상) 크게 이동(예를 들면, 회전 및/또는 병진운동)한 것을 나타내면, 렌더링된 우측 뷰 데이터가 선택되어도 되고; 상기 감지된 헤드 추적(방향(포즈)) 데이터는, ((블록 151에서) 상기 그래픽 처리장치(GPU) 2가 상기 포워드 뷰(애플리케이션 프레임)을 렌더링하는 초기에 감지된 그들의 헤드 방향(포즈)과 비교하여) 유저가 그들의 헤드를 좌측으로(예를 들면, 특정한 각도 및/또는 거리이상) 크게 이동(예를 들면, 회전 및/또는 병진운동)한 것을 나타내면, 렌더링된 좌측 뷰 데이터가 선택되어도 되고; 그렇지 않으면, 렌더링된 포워드 뷰 데이터가 선택되어도 된다.
그리고, 본 실시예에서, 상기 선택된 렌더링된 데이터는, 상기 또 다른(제2) 감지된 헤드 추적(방향(포즈)) 데이터를 사용하여 제1 출력 "타임워프된" 프레임을 생성하는 "타임워프" 처리함으로써 상기 그래픽 처리장치(GPU) 2에 의해 변환된다(블록 153A).
제1 "타임워프된" 프레임은 메인 메모리 7에서 (제1) 출력 프레임 버퍼에 저장되고 나서(블록 154A), 상기 표시 제어기 4는 상기 (제1) 프레임 버퍼에 저장된 상기 제1 "타임워프된" 프레임을 판독하여(블록 155A), 상기 헤드 장착 디스플레이 8의 표시 패널에 표시하도록 제공한다(블록 156A).
한편, (블록 153A에서) 상기 그래픽 처리장치(GPU) 2가 상기 선택된 렌더링된 데이터를 변환하여 상기 제1 "타임워프된" 프레임을 생성하는 것을 종료하였다면, 새로운(제2) 헤드 추적(방향(포즈))데이터에 근거하여 "타임워프" 처리의 다른 인스턴스를 행하는데 이용 가능할 것이다. 따라서, 새로운 헤드 추적(방향(포즈)) 데이터를 감지하고, 그 갱신된 헤드 추적(방향(포즈)) 센서 데이터를 사용하여, 상기 그래픽 처리장치(GPU) 2에 의해, 렌더링된 데이터를 다시 선택 및 변환하여 표시용 제2 출력 "타임워프된" 프레임을 생성하고(블록 153B), 메인 메모리 7에서 (제2) 출력 프레임 버퍼에 저장한다(블록 154B).
그리고, 상기 표시 제어기 4는, 상기 (제2) 프레임 버퍼에 저장된 상기 제2 "타임워프된" 프레임을 판독하여(블록 155B), 상기 헤드 장착 디스플레이 8의 상기 표시 패널에 표시하도록 제공한다(블록 156B).
그리고, 본 실시예에서, 상기 단계들을 반복하여, 2개의 또 다른 출력 "타임워프된" 버전들을 생성하여 상기 디스플레이 8의 상기 표시 패널에 표시한다(블록 153C, 154C, 155C, 156C; 및 블록 153D, 154D, 155D, 156D). 그리고, 전체 프로세스를 일회 또는 수회 반복하여, 하나 이상의 새로운 앞, 좌측 및 우측(및 상하)의 뷰들을 생성하고, 그 선택된 렌더링된 데이터를 선택하고 이 선택된 렌더링된 데이터에 대해 4개의 "타임워프" 프로세스들을 실시하여, 적절한 출력 "타임워프된" 프레임들의 시퀀스를 상기 헤드 장착 디스플레이 8에 표시한다.
(다른 실시예에서, 상기 표시 제어기 4는, "타임워프" 처리에 의해 렌더링된 데이터를 선택하고 및/또는 그 선택된 렌더링된 데이터를 변환하여 출력 "타임워프된" 프레임들을 생성하고 나서, 상기 "타임워프된" 프레임들을 상기 헤드 장착 디스플레이 8에 직접 표시하도록 제공한다.)
도 16은 도 1에 도시된 것처럼, 본 발명의 실시예에 따른 그래픽 처리 시스템의 동작을 개략적으로 도시한 것이다. 도 16에 도시된 것처럼, 본 실시예에서, 상기 그래픽 처리 시스템의 그래픽 처리장치(GPU) 2는, 먼저, 앞(포워드), 좌측 및 우측 프레임들(뷰들)을 렌더링하여 메모리 7에 기록한다(단계 160).
본 실시예에서, 상술한 것처럼, 상기 앞(제1) 프레임은, 상기 앞 프레임을 렌더링하는 초기에 (제1 시점에서) 감지되었던 제1 헤드 방향(포즈)에 근거하여 제1 뷰포인트로부터 씬의 제1 뷰를 나타낸다. 좌측 프레임은 상기 감지된 제1 헤드 방향(포즈)으로부터 시작하여 가정된 상기 헤드의 좌측으로의 전환(회전)(및/또는 병진운동)에 근거한 상기 씬의 제2 뷰를 나타내고, 우측 프레임은 상기 감지된 제1 헤드 방향(포즈)으로부터 시작하여 가정된 상기 헤드의 우측으로의 전환(회전)(및/또는 병진운동)에 근거한 상기 씬의 제3 뷰를 나타낸다.
그리고, (제2) 헤드 추적(방향(포즈)) 정보는, (제2의, 나중의 시점에서) 판독되고(단계 161), 상기 앞(제1) 프레임을 렌더링하는 초기에 (상기 제1 시점에서) 감지된 상기 제1 헤드 방향(포즈)에 대해 유저의 헤드를 실제로 어디로 위치 결정하는지를 판정하는데 사용된다. 그 유저의 헤드가 상기 감지된 제1 헤드 방향(포즈)과 비교하여 우측으로 크게(예를 들면, 특정한 각도 및/또는 거리이상) 위치 결정되면(단계 162A), 상기 우측 프레임으로부터 렌더링된 데이터가 선택되고 나서 사용되고(단계 163A); 그 유저의 헤드가 상기 감지된 제1 헤드 방향(포즈)과 비교하여 좌측으로 크게(예를 들면, 특정한 각도 및/또는 거리이상) 위치 결정되면(단계 162B), 상기 좌측 프레임으로부터 렌더링된 데이터가 선택되고 나서 사용되고(단계 163B); 그렇지 않으면, 상기 앞 프레임으로부터 렌더링된 데이터가 선택되어 사용된다(단계 163C).
그리고, 상기 선택된 렌더링된 데이터는, 예를 들면, "타임워프" 처리에 의해, 상기 그래픽 처리장치(GPU) 2에 의해 처리되고(단계 164), 그 출력 처리된("타임워프된") 화상은 메모리 7에 기록되고(단계 165), 이로부터 상기 표시 프로세서(제어기) 4에 의해 판독되어(단계 166) 그 화상을 상기 표시 패널 8에 보내 표시한다(단계 167). 또한, 또는 대신에, 상기 선택된 렌더링된 데이터에 대해, 예를 들면 상기 그래픽 처리장치(GPU) 2에 의해, 렌즈 왜곡 보정 변환, 색수차(왜곡) 보정 변환, 및/또는 "스페이스워프" 변환을 실시하여도 된다.
현재의 앞, 좌측 및 우측 프레임들(뷰들)로부터 생성될 출력 처리된("타임워프된") 프레임들이 더 있으면, 또 다른 헤드 추적(방향(포즈)) 정보가 판독되고 그 프로세스는 이 또 다른 헤드 추적(방향(포즈)) 정보를 사용하여 반복된다(단계 168). 그렇지 않으면, 새로운 앞, 좌측 및 우측 프레임들(뷰들)은 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되고, 전체 프로세스는 상기 새로운 앞, 좌측 및 우측 프레임들(뷰들)을 사용하여 반복된다(단계 169). 따라서, 출력 처리된("타임워프된") 프레임들의 시퀀스는 표시를 위해 제공된다.
도 17은 도 1에 도시된 것처럼, 본 발명의 다른 실시예에 따른 그래픽 처리 시스템의 동작을 개략적으로 도시한 것이다. 본 실시예에서, 상기 그래픽 처리장치(GPU) 2라기 보다는, 상기 표시 제어기 4가, 도 16에 도시된 실시예에서와 같이, ("타임워프들") 프레임들을 처리한다.
도 17에 도시된 것처럼, 본 실시예에서, 도 16의 상기 실시예에서와 같이, 상기 그래픽 처리 시스템의 그래픽 처리장치(GPU) 2는, 먼저, 앞(포워드), 좌측 및 우측 프레임들(뷰들)을 렌더링하여 메모리 7에 기록한다(단계 170).
그리고, (제2) 헤드 추적(방향(포즈)) 정보는, 판독되고(단계 171), 상기 앞(제1) 프레임을 렌더링하는 초기에 감지된 상기 제1 헤드 방향(포즈)에 대해 유저의 헤드를 실제로 어디로 위치 결정하는지를 판정하는데 사용된다. 그 유저의 헤드가 상기 감지된 제1 헤드 방향(포즈)과 비교하여 우측으로 크게(예를 들면, 특정한 각도 및/또는 거리이상) 위치 결정되면(단계 172A), 상기 우측 프레임으로부터의 렌더링된 데이터가 선택되고 나서 사용되고(단계 173A); 그 유저의 헤드가 상기 감지된 제1 헤드 방향(포즈)과 비교하여 좌측으로 크게(예를 들면, 특정한 각도 및/또는 거리이상) 위치 결정되면(단계 172B), 상기 좌측 프레임으로부터의 렌더링된 데이터가 선택되고 나서 사용되고(단계 173B); 그렇지 않으면, 상기 앞 프레임으로부터의 렌더링된 데이터가 선택되어 사용된다(단계 173C).
그리고, 상기 선택된 렌더링된 데이터는, 상기 표시 제어기 4에 의해 처리되고("타임워프"되고)(단계 174), 그 출력 처리된("타임워프된") 화상은 상기 표시 패널 8에 직접 보내져 상기 표시 제어기 4에 의해 표시한다(단계 177). 또한, 또는 대신에, 상기 선택된 렌더링된 데이터에 대해, 예를 들면 상기 표시 제어기 4에 의해, 렌즈 왜곡 보정 변환, 색수차(왜곡) 보정 변환, 및/또는 "스페이스워프" 변환을 실시하여도 된다.
현재의 앞, 좌측 및 우측 프레임들(뷰들)로부터 생성될 출력 처리된("타임워프된") 프레임들이 더 있으면, 또 다른 헤드 추적(방향(포즈)) 정보가 판독되고 그 프로세스는 이 또 다른 헤드 추적(방향(포즈)) 정보를 사용하여 반복된다(단계 178). 그렇지 않으면, 새로운 앞, 좌측 및 우측 프레임들(뷰들)은 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되고, 전체 프로세스는 상기 새로운 앞, 좌측 및 우측 프레임들(뷰들)을 사용하여 반복된다(단계 179). 따라서, 출력 처리된("타임워프된") 프레임들의 시퀀스는 표시를 위해 제공된다.
도 18은 도 1에 도시된 것처럼, 본 발명의 다른 실시예에 따른 그래픽 처리 시스템의 동작을 개략적으로 도시한 것이다. 본 실시예에서는, 도 16 및 도 17의 실시예들에서와 같이, 전체 좌측 및 우측 프레임들(뷰들)을 렌더링하는 대신에, 일부 좌측 및 우측 프레임들(뷰들)만을 렌더링한다.
도 18에 도시된 것처럼, 본 실시예에서, 도 16 및 도 17의 실시예들에서와 같이, 상기 그래픽 처리 시스템의 그래픽 처리장치(GPU) 2는, 먼저, 상기 앞 프레임을 렌더링하는 초기에 (제1 시점에서) 감지되었던 제1 헤드 방향(포즈)에근거하여 앞(포워드)(제1) 프레임을 렌더링한다. 그렇지만, 도 16 및 도 17의 실시예들과 대조하여, 본 실시예에서, 상기 그래픽 처리장치(GPU) 2는, 일부 좌측 및 우측 프레임들(뷰들)만을 렌더링한다. 그리고, 상기 앞(포워드), 일부 좌측, 및 일부 우측의 프레임들(뷰들)을 메모리에 기록한다(단계 180).
그리고, (제2) 헤드 추적(방향(포즈)) 정보는, (제2의, 나중의 시점에서) 판독되고(단계 181), 상기 앞(제1) 프레임을 렌더링하는 초기에 (상기 제1 시점에서) 감지된 상기 제1 헤드 방향(포즈)에 대해 유저의 헤드를 실제로 어디로 위치 결정하는지를 판정하는데 사용된다. 그 유저의 헤드가 상기 감지된 제1 헤드 방향(포즈)과 비교하여 우측으로 크게(예를 들면, 특정한 각도 및/또는 거리이상) 위치 결정되면, 렌더링된 우측 프레임 데이터가 이용 가능한 상기 출력 프레임의 영역들에 대해, 상기 일부 우측 프레임으로부터 렌더링된 데이터가 선택되고 나서 사용된다(단계 183A). 그 유저의 헤드가 상기 감지된 제1 헤드 방향(포즈)과 비교하여 좌측으로 크게(예를 들면, 특정한 각도 및/또는 거리이상) 위치 결정되면, 렌더링된 좌측 프레임 데이터가 이용 가능한 상기 출력 프레임의 영역들에 대해, 상기 일부 좌측 프레임으로부터 렌더링된 데이터가 선택되고 나서 사용된다(단계 183B). 그렇지 않으면, 상기 앞 프레임으로부터 렌더링된 데이터가 선택되어 사용된다(단계 183C).
그리고, 상기 선택된 렌더링된 데이터는, 예를 들면, "타임워프" 처리에 의해, 상기 그래픽 처리장치(GPU) 2에 의해 처리되고(단계 184), 그 출력 처리된("타임워프된") 화상은 메모리 7에 기록되고(단계 185), 이로부터 상기 표시 프로세서(제어기) 4에 의해 판독되어(단계 186) 그 화상을 상기 표시 패널 8에 보내 표시한다(단계 187). 또한, 또는 대신에, 상기 선택된 렌더링된 데이터에 대해, 예를 들면, 렌즈 왜곡 보정 변환, 색수차(왜곡) 보정 변환, 및/또는 "스페이스워프" 변환을 실시하여도 된다.
(이와는 달리, 그리고, 상기 선택된 렌더링된 데이터는, 예를 들면, "타임워프" 처리에 의해, 상기 표시 제어기 4에 의해, 처리되고 나서, 상기 출력 처리된("타임워프된") 화상을 제공하여 직접 상기 표시 패널 8상에 표시한다.)
현재의 앞, 일부 좌측 및 일부 우측 프레임들(뷰)로부터 생성될 출력 처리된("타임워프된") 프레임들이 더 있으면, 또 다른 헤드 추적(방향(포즈)) 정보가 판독되고 그 프로세스는 이 또 다른 헤드 추적(방향(포즈)) 정보를 사용하여 반복된다(단계 188). 그렇지 않으면, 새로운 앞, 일부 좌측 및 일부 우측 프레임들(뷰들)은 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되고, 전체 프로세스는 상기 새로운 앞, 일부 좌측 및 일부 우측 프레임들(뷰들)을 사용하여 반복된다(단계 189). 따라서, 출력 처리된("타임워프된") 프레임들의 시퀀스는 표시를 위해 제공된다.
이제, 또 다른 실시예를 설명한다. 도 19는 시계방향으로 이동중인 세일들(sails)을 포함하는 풍차(192)를 구비하는 다수의 오브젝트들로 이루어진 씬을 도시한 것이다. 따라서, 도 11 및 도 12의 실시예들과 대조하여, 도 19에 도시된 상기 씬은, 이동 오브젝트들을 포함하는 동적 씬이다.
도 19의 상기 실시예에서, 도 11 및 도 12의 실시예와 같이, (포워드 뷰를 나타내는) 제1 애플리케이션 프레임 190은, 상기 그래픽 처리장치(GPU) 2가 상기 애플리케이션 프레임 190을 렌더링하는 초기에 제1 시점에서 감지된 제1 뷰 방향(포즈) 데이터에 근거하여 상기 그래픽 처리장치(GPU) 2에 의해 렌더링된다. 상기 씬의 이 뷰에서, 상기 풍차 192의 이동 세일들은 상기 제1 시점에서 그들의 위치들에서 보인다. 따라서, 애플리케이션 프레임 190은 필수적으로, 상기 제1 뷰 방향(포즈)이 감지되었던 상기 제1 시점에서 상기 씬의 정적 "스냅샷"을 나타낸다.
그리고, 본 실시예에서는, 애플리케이션 프레임 190이 이동 오브젝트들을 갖고 나서, 제1 및 제2 차후 뷰들 195, 196이 상기 그래픽 처리장치(GPU) 2에 의해 렌더링된다고 판정할 수도 있다. 본 실시예에서, 차후 뷰들 195, 196은, 풍차 192를 포함하는 영역만을 도시하는 (차후) 일부 뷰들이지만, 또한, 또는 대신에 (차후) 풀(full) 뷰들(즉, 상기 애플리케이션 프레임 190과 같은 시야를 가짐)이 렌더링될 수 있다.
본 실시예에서, 제1 차후 뷰 195는, 생성될 출력(예를 들면, "타임워프된" 및/또는 "스페이스워프된") 버전의 애플리케이션 프레임 190이 상기 씬의 뷰를 나타낼 시점에서 상기 씬의 뷰를 나타낸다. 마찬가지로, 제1 차후 뷰 195는, 생성될 출력(예를 들면, "타임워프된" 및/또는 "스페이스워프된") 버전의 애플리케이션 프레임 190이 상기 씬의 뷰를 나타낼 나중의 시점에서 상기 씬의 뷰를 나타낸다. (또한, 또는 대신에, 상이한 시점들에 근거한 상기 씬의 그 밖의 차후 또는 과거의 뷰들이 렌더링되어도 된다.) 따라서, 도 19에 도시된 것처럼, 상기 풍차 192의 세일들은, 애플리케이션 프레임 190과 비교하여 제1 및 제2 차후 뷰들 195, 196에서 시계방향으로 회전되게 보이고, 그 세일들에 의해 애플리케이션 프레임 190에서 가려진 상기 풍차의 영역들은 상기 제1 및 제2 차후 뷰들 195, 196에 도시되어 있다.
상술한 것처럼, 직접 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되는 대신에, 대신에 각 프레임 915, 196이 "타임워프" 처리로 상기 렌더링된 애플리케이션 프레임 190을 변환함으로써 생성되면, 각 "타임워프된" 프레임은, 상기 애플리케이션 프레임 190에 도시되는 동일한 위치에 상기 풍차 192의 세일들을 나타낼 것인데, 그 이유는 "타임워프" 처리가 어떠한 상기 오브젝트 움직임도 고려하지 않기 때문이다. 따라서, 상기 풍차 192의 세일들은, 그것이 행해야 하는 것보다 이른 시점(즉, 상기 애플리케이션 프레임이 상기 씬의 뷰를 나타내는 시점)에 대응하는 위치에서 상기 "타임워프된" 프레임들의 각각에 보일 것이다. 더욱이, 상기 풍차 192의 세일들은, 상기 "타임워프된" 프레임들의 각각에서 동일한 위치에 보여서, 그 프레임들에서 정적으로 보일 것이다. 이것이 의미하는 것은, 유저에게 표시되는 것에서의 왜곡들이 도입되는 것이라는 것이다.
이 때문에, 본 실시예에서, 상기 2개의 또 다른 버전들의 상기 씬에 대해 상기 렌더링된 데이터, 제1 차후 뷰 195 및 제2 차후 뷰 196은, "타임워프" 및/또는 "스페이스워프" 처리를 행할 때, 상기 "타임워프" 및/또는 "스페이스워프" 처리에 의해 상기와 달리 크게 왜곡될 수 있는 상기 씬의 영역들, 예를 들면 이동 오브젝트들을 포함하는 상기 씬의 영역들과, (이동 오브젝트들에 의해) "가려지지 않은", 즉 상기 애플리케이션 프레임 뷰 190에서 가려지지만, 렌더링된 뷰들을 사용하여 표시하는 시간동안에 오브젝트 움직임으로 인해 보여질 수 있는 상기 씬의 영역들에 대한 데이터를 제공하는데 사용될 수 있다(바람직한 실시예에서는, 사용된다). 이것이 의미하는 것은, 이와는 달리, "타임워프" 및/또는 "스페이스워프" 처리에 의해 생길 수 있는 왜곡들과 아티팩트들이, 회피 또는 감소될 수 있다는 것이다. 예를 들면, 보다 부드러운 가상현실(VR) 또는 증강현실(AR) 경험을 제공할 수 있다.
도 20은 "타임워프" 및/또는 "스페이스워프" 처리를 도 19에서 설명된 것처럼, 본 발명의 바람직한 실시예에 따라 행할 때, 도 1에서 설명된 것처럼, 그래픽 처리 시스템에서 데이터의 흐름과 프로세스들의 상대적 타이밍들을 개략적으로 설명하는 것이다.
본 실시예에서는, 상기 그래픽 처리장치(GPU) 2가, 상기 씬의 다수의 상이한 뷰들(버전들)을 나타내는 일 세트의 렌더링된 데이터를 생성하고 나서, 상기 세트의 렌더링된 데이터의 선택된 렌더링된 데이터에 대해 "타임워프" 및/또는 "스페이스워프" 처리를 실시한다.
따라서, 도 20에 도시된 것처럼, 본 실시예에서, 도 15의 실시예에서와 같이, 그래픽 처리장치(GPU) 2는, 메모리 7로부터 (CPU 1상에서 실행하는 상기 GPU 2용 드라이버에서 생성한) 적절한 코맨드들과 데이터를 페치하는 것에 의해, 상기 그래픽 처리장치(GPU) 2에 대해서, 상기 그래픽 처리장치(GPU) 2가 포워드 뷰(애플리케이션 프레임)를 렌더링하는 초기에 제1 시점에서 감지된 헤드 추적(방향(포즈)) 데이터에 근거하여 상기 포워드 뷰(애플리케이션 프레임)를 생성시키고(렌더링시키고)(블록 201), 그 렌더링된 포워드 뷰(애플리케이션 프레임)을 메인 메모리 7의 프레임 버퍼에 저장시킨다(블록 202A).
본 실시예에서, 도 15의 상기 실시예에서와 같이, 상기 렌더링된 포워드 뷰(애플리케이션 프레임)는, 제1 시점에서 감지된 상기 헤드 추적(방향(포즈)) 데이터에 대응한 (제1) 헤드 방향(포즈)으로부터 렌더링되고 있는 상기 씬의 (제1) 포워드 뷰를 나타낸다. 그렇지만, 도 15의 상기 실시예와 같이 상기 씬의 좌측 뷰와 우측 뷰를 나타내는 상기 씬의 또 다른 버전들을 생성하는(렌더링하는) 대신에, 본 실시예에서는, (상기 씬이 이동 오브젝트들을 갖는다고 판정될 때) 상기 그래픽 처리장치(GPU) 2는, 상기 포워드 뷰(애플리케이션 프레임)가 상기 씬의 뷰를 나타내는 상기 제1 시점 후의 또 다른 시점에서 상기 씬의 뷰를 나타내는 상기 신의 또 다른 뷰를 (블록 201에서) 생성시키고(렌더링시킨다). 또 다른 뷰는, 메인 메모리 7의 프레임 버퍼에 저장된다(블록 202B).
그리고, 본 실시예에서, 도 15의 실시예에서와 같이, 실제로 상기 디스플레이 8에 화상을 표시하기 전에, 또 다른(제2) 헤드 추적(방향(포즈)) 데이터는, (제2 시점에서) 감지된다. 그렇지만, 도 15의 상기 실시예와 대조하여, 상기 또 다른 감지된 헤드 추적(방향(포즈)) 데이터가 감지되는 상기 (제2) 시점을 사용하여 상기 그래픽 처리장치(GPU) 2에 의해 상기 렌더링된 포워드 뷰와 차후 뷰로부터 표시를 위해 사용되는 적절한 렌더링된 데이터를 선택한다.
예를 들면, 상기 또 다른 헤드 추적(방향(포즈)) 데이터가 감지되는 상기 (제2) 시점이, 상기 포워드 뷰가 근거하여 렌더링되었던 상기 제1 시점보다 상기 차후 뷰가 근거하여 렌더링되었던 또 다른 시점에 가까우면, 렌더링된 차후 뷰 데이터가 선택되어도 되고; 그렇지 않으면, 렌더링된 포워드 뷰 데이터가 선택되어도 된다.
그리고, 본 실시예에서, 상기 선택된 렌더링된 데이터는, 상기 또 다른(제2) 감지된 헤드 추적(방향(포즈)) 데이터 및/또는 "스페이스워프" 처리를 사용하여 제1 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임을 생성하는 "타임워프" 처리함으로써 상기 그래픽 처리장치(GPU) 2에 의해 변환된다(블록 203A).
제1 "타임워프된" 및/또는 "스페이스워프된" 프레임은, 메인 메모리 7에서 (제1) 출력 프레임 버퍼에 저장되고 나서(블록 204A), 상기 표시 제어기 4는 상기 (제1) 프레임 버퍼에 저장된 상기 제1 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임을 판독하여(블록 205A), 상기 헤드 장착 디스플레이 8의 표시 패널에 표시하도록 제공한다(블록 206A).
한편, (블록 203A에서) 상기 그래픽 처리장치(GPU) 2가 상기 선택된 렌더링된 데이터를 변환하여 상기 제1 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임을 생성하는 것을 종료하였다면, 새로운(제2) 헤드 추적(방향(포즈))데이터에 근거하여 "타임워프" 및/또는 "스페이스워프" 처리의 다른 인스턴스를 행하는데 이용 가능할 것이다. 따라서, 새로운 헤드 추적(방향(포즈)) 데이터를 감지하고, 그 갱신된 헤드 추적(방향(포즈)) 데이터가 감지된 시점을 사용하여, 상기 그래픽 처리장치(GPU) 2에 의해, 렌더링된 데이터를 선택하고, 그 갱신된 헤드 추적(방향(포즈)) 데이터를 변환하여 표시용 제2 출력 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임을 생성하고(블록 203B), 메인 메모리 7에서 (제2) 출력 프레임 버퍼에 저장한다(블록 204B).
그리고, 상기 표시 제어기 4는, 상기 (제2) 프레임 버퍼에 저장된 상기 제2 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임을 판독하여(블록 205B), 상기 헤드 장착 디스플레이 8의 상기 표시 패널에 표시하도록 제공한다(블록 206B).
그리고, 본 실시예에서는, 상기 단계들을 반복하여, 2개의 또 다른 출력 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임들을 생성하여 상기 디스플레이 8의 상기 표시 패널에 표시한다(블록 203C, 204C, 205C, 206C; 및 블록 203D, 204D, 205D, 206D). 그리고, 전체 프로세스를 일회 또는 수회 반복하여, 하나 이상의 새로운 차후(및 과거)의 뷰들을 생성하고, 그 선택된 렌더링된 데이터를 선택하고 이 선택된 렌더링된 데이터에 대해 4개의 "타임워프" 및/또는 "스페이스워프" 프로세스들을 실시하여, 적절한 출력 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임들의 시퀀스를 상기 헤드 장착 디스플레이 8에 표시한다.
(다른 실시예에서, 상기 표시 제어기 4는, "타임워프" 및/또는 "스페이스워프" 처리에 의해 렌더링된 데이터를 선택하고 및/또는 그 선택된 렌더링된 데이터를 변환하여 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임들을 생성하고 나서, 상기 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임들을 상기 헤드 장착 디스플레이 8에 직접 표시하도록 제공한다.)
도 21은 본 발명의 실시예에 따라, 도 1에 도시된 것처럼, 그래픽 처리 시스템의 동작을 개략적으로 도시한 것이다. 도 21에 도시된 것처럼, 본 실시예에서, 상기 그래픽 처리 시스템의 그래픽 처리장치(GPU) 2는, 먼저, 앞(포워드) 및 일부 차후 프레임들을 렌더링하여, 메모리 7에 기록한다(단계 210).
본 실시예에서, 상술한 것처럼, 상기 앞(제1) 프레임은 상기 앞 프레임을 렌더링하는 초기에 제1 시점에서 감지되었던 제1 헤드 방향(포즈)에 근거하여 제1 뷰포인트와 제1 뷰 방향으로부터 씬의 제1 뷰를 나타내고, 상기 일부 차후 프레임은 또 다른, 나중의 시점에서 상기 씬의 일부 뷰를 나타낸다. (또한, 또는 대신에, 풀 차후 프레임이 렌더링되어도 된다)
그리고, (제2) 헤드 추적(방향(포즈)) 정보는, 제2 시점에서 판독된다(단계 211). 상기 제2 시점이 상기 제1 시점보다 상당히 나중이면(따라서, 상기 차후 프레임이 근거하여 렌더링되었던 또 다른 시점에 보다 가까우면)(단계 212), 렌더링된 차후 프레임 데이터가 이용 가능한 상기 출력 프레임의 영역들에 대해, 상기 차후 프레임으로부터 렌더링된 데이터가 선택되고 나서 사용되고(단계 213A); 그렇지 않으면, 상기 앞 프레임으로부터 렌더링된 데이터가 선택되어 사용된다(단계 213B).
그리고, 상기 선택된 렌더링된 데이터는, 예를 들면, "타임워프" 및/또는 "스페이스워프" 처리에 의해, 상기 그래픽 처리장치(GPU) 2에 의해 처리되고(단계 214), 그 처리된("타임워프된" 및/또는 "스페이스워프된") 출력 화상은 메모리 7에 기록되고(단계 215), 이로부터 상기 표시 프로세서(제어기) 4에 의해 판독되어(단계 216) 그 화상을 상기 표시 패널 8에 보내 표시한다(단계 217). 또한, 또는 대신에, 상기 선택된 렌더링된 데이터에 대해, 예를 들면, 렌즈 왜곡 보정 변환 및/또는 색수차(왜곡) 보정 변환을 상기 그래픽 처리장치(GPU) 2에 의해 실시하여도 된다.
현재의 앞 및 일부 차후 프레임들(뷰들)로부터 생성될 처리된("타임워프된" 및/또는 "스페이스워프된") 출력 프레임들이 더 있으면, 또 다른 헤드 추적(방향(포즈)) 정보가 또 다른 시점에서 판독되고, 그 프로세스는 이 또 다른 헤드 추적(방향(포즈)) 정보를 사용하여 반복된다(단계 218). 그렇지 않으면, 새로운 앞 및 일부 차후 프레임들(뷰들)은 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되고, 전체 프로세스는 상기 새로운 앞 및 일부 차후 프레임들(뷰들)을 사용하여 반복된다(단계 219). 따라서, 처리된("타임워프된" 및/또는 "스페이스워프된") 출력 프레임들의 시퀀스는 표시를 위해 제공된다.
도 22는 본 발명의 다른 실시예에 따라, 도 1에 도시된 것처럼, 그래픽 처리 시스템의 동작을 개략적으로 도시한 것이다. 도 21에 도시된 실시예에서와 같이, 본 실시예에서, 상기 표시 제어기 4는, 상기 그래픽 처리장치(GPU) 2 대신에, 프레임들을 처리한다.
도 22에 도시된 것처럼, 본 실시예에서, 상기 그래픽 처리 시스템의 그래픽 처리장치(GPU) 2는, 먼저, 앞(포워드) 및 일부 차후 프레임들(뷰들)을 렌더링하여, 메모리 7에 기록한다(단계 220).
그리고, (제2) 헤드 추적(방향(포즈)) 정보는, 제2 시점에서 판독된다(단계 221). 상기 제2 시점이, 상기 앞 프레임이 근거하여 렌더링되었던 상기 제1 시점보다 상당히 나중이면(따라서, 상기 차후 프레임이 근거하여 렌더링되었던 또 다른 시점에 보다 가까우면)(단계 222), 렌더링된 차후 프레임 데이터가 이용 가능한 상기 출력 프레임의 영역들에 대해, 상기 일부 차후 프레임으로부터 렌더링된 데이터가 선택되고 나서 사용되고(단계 223A); 그렇지 않으면, 상기 앞 프레임으로부터 렌더링된 데이터가 선택되어 사용된다(단계 223B).
그리고, 상기 선택된 렌더링된 데이터는, 상기 표시 제어기 4에 의해 처리되고(단계 224), 그 처리된("타임워프된" 및/또는 "스페이스워프된") 출력 화상은 상기 표시 제어기 4에 의해 표시하기 위한 상기 표시 패널 8에 직접 보낸다(단계 227). 또한, 또는 대신에, 상기 선택된 렌더링된 데이터에 대해, 예를 들면, 렌즈 왜곡 보정 변환 및/또는 색수차(왜곡) 보정 변환을 상기 표시 제어기 4에 의해 실시하여도 된다.
현재의 앞 및 일부 차후 프레임들(뷰들)로부터 생성될 처리된("타임워프된" 및/또는 "스페이스워프된") 출력 프레임들이 더 있으면, 또 다른 헤드 추적(방향(포즈)) 정보가 또 다른 시점에서 판독되고, 그 프로세스는 이 또 다른 헤드 추적(방향(포즈)) 정보를 사용하여 반복된다(단계 228). 그렇지 않으면, 새로운 앞 및 일부 차후 프레임들(뷰들)은 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되고, 전체 프로세스는 상기 새로운 앞 및 일부 차후 프레임들(뷰들)을 사용하여 반복된다(단계 229). 따라서, 처리된("타임워프된" 및/또는 "스페이스워프된") 출력 프레임들의 시퀀스는 표시를 위해 제공된다.
이제, 또 다른 실시예를 설명한다. 도 23은, 본 발명의 바람직한 실시예에 따라 "타임워프" 및/또는 "스페이스워프" 처리를 행할 때, 도 1에서 설명된 것처럼, 그래픽 처리 시스템에서 데이터의 흐름과 프로세스들의 상대적 타이밍들을 개략적으로 설명하는 것이다.
본 실시예에서는, 도 15 및 도 20의 실시예에들에서와 같이, 상기 그래픽 처리장치(GPU) 2가 상기 씬의 다수의 상이한 뷰들(버전들)을 나타내는 일 세트의 렌더링된 데이터를 생성하고 나서, 상기 세트의 렌더링된 데이터의 선택된 렌더링된 데이터에 대해 "타임워프" 및/또는 "스페이스워프" 처리를 실시한다.
따라서, 도 23에 도시된 것처럼, 본 실시예에서, 도 15 및 도 20의 상기 실시예들에서와 같이, 그래픽 처리장치(GPU) 2는, 메모리 7로부터 (CPU 1상에서 실행하는 상기 GPU 2용 드라이버에서 생성한) 적절한 코맨드들과 데이터를 페치하는 것에 의해, 상기 그래픽 처리장치(GPU) 2에 대해서, 상기 그래픽 처리장치(GPU) 2가 포워드 뷰(애플리케이션 프레임)를 렌더링하는 초기에 제1 시점에서 감지된 헤드 추적(방향(포즈)) 데이터에 근거하여 상기 포워드 뷰(애플리케이션 프레임)를 생성시키고(렌더링시키고)(블록 231), 그 렌더링된 포워드 뷰(애플리케이션 프레임)을 메인 메모리 7의 프레임 버퍼에 저장시킨다(블록 232A). 상기 렌더링된 포워드 뷰(애플리케이션 프레임)는, 상기 제1 시점에서 감지된 상기 헤드 추적(방향(포즈)) 데이터에 대응한 (제1) 헤드 방향(포즈)으로부터 렌더링되고 있는 상기 씬의 (제1) 포워드 뷰를 나타낸다.
본 실시예에서, 도 15의 상기 실시예와 같이, 상기 그래픽 처리장치(GPU) 2는, 상기 씬의 좌측 뷰와 우측 뷰를 나타내는 상기 씬의 2개의 또 다른 버전들도 (블록 231에서) 생성한다(렌더링한다). 그 2개의 또 다른 버전들은, 메인 메모리 7에서 각각의 프레임 버퍼에 저장된다(블록 232B, 232C).
또한, 본 실시예에서, 도 20의 상기 실시예에서와 같이, (블록 231에서) 상기 그래픽 처리장치(GPU) 2는, 상기 포워드 뷰(애플리케이션 프레임)(및 상기 좌측 및 우측 뷰들)가 상기 씬의 뷰를 나타내는 상기 제1 시점 후에 또 다른 시점에서 상기 씬의 뷰를 나타내는 상기 씬의 차후 뷰를 생성한다(렌더링한다). 상기 차후 뷰는 메인 메모리 7에서 프레임 버퍼에 저장된다(블록 232D).
그리고, 본 실시예에서, 도 15 및 도 20의 상기 실시예들에서와 같이, 실제로 상기 디스플레이 8에 화상을 표시하기 전에, 또 다른(제2) 헤드 추적(방향(포즈)) 데이터는, 제2 시점에서 감지된다. 그리고, 상기 또 다른 감지된 헤드 추적(방향(포즈)) 데이터와, 감지되었던 상기 제2 시점을 사용하여, 상기 그래픽 처리장치(GPU) 2에 의해 상기 렌더링된 포워드 뷰, 좌측 뷰, 우측 뷰 및 차후 뷰로부터 표시를 위해 사용되는 적절한 렌더링된 데이터를 선택한다.
예를 들면, 상기 또 다른 감지된 헤드 추적(방향(포즈)) 데이터는, ((블록 231에서) 상기 그래픽 처리장치(GPU) 2가 상기 포워드 뷰(애플리케이션 프레임)을 렌더링하는 초기에 감지된 그들의 헤드 방향(포즈)과 비교하여) 유저가 그들의 헤드를 우측으로(예를 들면, 특정한 각도 및/또는 거리이상) 크게 이동(예를 들면, 회전 및/또는 병진운동)한 것을 나타내면, 렌더링된 우측 뷰 데이터가 선택되어도 되고; 상기 감지된 헤드 추적(방향(포즈)) 데이터는, ((블록 231에서) 상기 그래픽 처리장치(GPU) 2가 상기 포워드 뷰(애플리케이션 프레임)을 렌더링하는 초기에 상기 제1 시점에서 감지된 그들의 헤드 방향(포즈)과 비교하여) 유저가 그들의 헤드를 좌측으로(예를 들면, 특정한 각도 및/또는 거리이상) 크게 이동(예를 들면, 회전 및/또는 병진운동)한 것을 나타내면, 렌더링된 좌측 뷰 데이터가 선택되어도 되고; 상기 또 다른 헤드 추적(방향(포즈)) 데이터가 감지되는 상기 제2 시점이, 상기 포워드 뷰가 근거하여 렌더링되는 상기 제1 시점보다 상기 차후 뷰가 근거하여 렌더링되는 상기 또 다른 시점에 가까우면, 렌더링된 차후 뷰 데이터가 선택되어도 되고; 그렇지 않으면, 렌더링된 포워드 뷰 데이터가 선택되어도 된다.
그리고, 본 실시예에서, 상기 선택된 렌더링된 데이터는, 상기 또 다른(제2) 감지된 헤드 추적(방향(포즈)) 데이터를 사용하여 제1 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임을 생성하는 "타임워프" 및/또는 "스페이스워프" 처리함으로써 상기 그래픽 처리장치(GPU) 2에 의해 변환된다(블록 233A).
제1 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임은 메인 메모리 7에서 (제1) 출력 프레임 버퍼에 저장되고 나서(블록 234A), 상기 표시 제어기 4는 상기 (제1) 프레임 버퍼에 저장된 상기 제1 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임을 판독하여(블록 235A), 상기 헤드 장착 디스플레이 8의 표시 패널에 표시하도록 제공한다(블록 236A).
한편, (블록 233A에서) 상기 그래픽 처리장치(GPU) 2가 상기 선택된 렌더링된 데이터를 변환하여 상기 제1 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임을 생성하는 것을 종료하였다면, 새로운(제2) 헤드 추적(방향(포즈))데이터에 근거하여 "타임워프" 및/또는 "스페이스워프" 처리의 다른 인스턴스를 행하는데 이용 가능할 것이다. 따라서, 새로운 헤드 추적(방향(포즈)) 데이터를 감지하고, 감지되었던 시점과 함께, 그 갱신된 헤드 추적(방향(포즈)) 센서 데이터를 사용하여, 상기 그래픽 처리장치(GPU) 2에 의해, 렌더링된 데이터를 다시 선택 및 변환하여 표시용 제2 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임을 생성하고(블록 233B), 메인 메모리 7에서 (제2) 출력 프레임 버퍼에 저장한다(블록 234B).
그리고, 상기 표시 제어기 4는, 상기 (제2) 프레임 버퍼에 저장된 상기 제2 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임을 판독하여(블록 235B), 상기 헤드 장착 디스플레이 8의 상기 표시 패널에 표시하도록 제공한다(블록 236B).
그리고, 본 실시예에서, 상기 단계들을 반복하여, 2개의 또 다른 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임들을 생성하여 상기 디스플레이 8의 상기 표시 패널에 표시한다(블록 233C, 234C, 235C, 236C; 및 블록 233D, 234D, 235D, 236D). 그리고, 전체 프로세스를 일회 또는 수회 반복하여, 하나 이상의 새로운 앞, 좌측, 우측 및 차후(및 상, 하, 과거))의 뷰들을 생성하고, 그 선택된 렌더링된 데이터를 선택하고 이 선택된 렌더링된 데이터에 대해 4개의 "타임워프" 및/또는 "스페이스워프" 프로세스들을 실시하여, 적절한 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임들의 시퀀스를 상기 헤드 장착 디스플레이 8에 표시한다.
(다른 실시예에서, 상기 표시 제어기 4는, "타임워프" 및/또는 "스페이스워프" 처리에 의해 렌더링된 데이터를 선택하고 및/또는 그 선택된 렌더링된 데이터를 변환하여, "타임워프된" 및/또는 "스페이스워프된" 출력 프레임들을 생성하고 나서, 상기 "타임워프된" 및/또는 "스페이스워프된" 출력 프레임들을 상기 헤드 장착 디스플레이 8에 직접 표시하도록 제공한다.)
도 24는, 본 발명의 일 실시예에 따라, 도 1에 도시된 것처럼, 그래픽 처리 시스템의 동작을 개략적으로 도시한 것이다. 도 24에 도시된 것처럼, 본 실시예에서, 상기 그래픽 처리 시스템의 그래픽 처리장치(GPU) 2는, 먼저, 앞(포워드), 좌측, 우측 및 일부 차후 프레임들(뷰들)을 렌더링하여, 메모리 7에 기록한다(단계 240).
본 실시예에서, 상술한 것처럼, 상기 앞(제1) 프레임은, 상기 앞 프레임을 렌더링하는 초기에 제1 시점에서 감지되었던 제1 헤드 방향(포즈)에 근거하여 제1 뷰포인트로부터와 제1 뷰 방향으로 씬의 제1 뷰를 나타낸다. 좌측 프레임은 상기 감지된 제1 헤드 방향(포즈)으로부터 시작하여 가정된 상기 헤드의 좌측으로의 전환(회전 및/또는 병진운동)에 근거한 상기 씬의 제2 뷰를 나타내고, 우측 프레임은 상기 감지된 제1 헤드 방향(포즈)으로부터 시작하여 가정된 상기 헤드의 우측으로의 전환(회전 및/또는 병진운동)에 근거한 상기 씬의 제3 뷰를 나타내고, 차후 뷰는 또 다른 나중의 시점에서 상기 씬의 뷰를 나타낸다..
그리고, (제2) 헤드 추적(방향(포즈)) 정보는, 제2 시점에서 판독되고(단계 241), 상기 앞(제1) 프레임을 렌더링하는 초기에 상기 제1 시점에서 감지된 상기 제1 헤드 방향(포즈)에 대해 유저의 헤드를 실제로 어디로 위치 결정하는지를 판정하는데 사용된다. 그 유저의 헤드가 상기 감지된 제1 헤드 방향(포즈)과 비교하여 우측으로 크게(예를 들면, 특정한 각도 및/또는 거리이상) 위치 결정되면(단계 242A), 상기 우측 프레임으로부터의 렌더링된 데이터가 선택되고 나서 사용되고(단계 243A); 그 유저의 헤드가 상기 감지된 제1 헤드 방향(포즈)과 비교하여 좌측으로 크게(예를 들면, 특정한 각도 및/또는 거리이상) 위치 결정되면(단계 242B), 상기 좌측 프레임으로부터의 렌더링된 데이터가 선택되고 나서 사용되고(단계 243B); 상기 제2 시점이 상기 제1 시점보다 상당히 늦으면(단계 242C), 상기 차후 프레임으로부터의 렌더링된 데이터가 선택되고 나서 사용되고(단계 243C); 그렇지 않으면, 상기 앞 프레임으로부터의 렌더링된 데이터가 선택되어 사용된다(단계 243D).
그리고, 상기 선택된 렌더링된 데이터는, 예를 들면, "타임워프" 및/또는 "스페이스워프" 처리에 의해, 상기 그래픽 처리장치(GPU) 2에 의해 처리되고(단계 244), 그 출력 처리된("타임워프된" 및/또는 "스페이스워프된") 화상은 상기 디스플레이 패널 8에 보내져 표시된다(단계 247). 또한, 또는 대신에, 상기 선택된 렌더링된 데이터에 대해, 예를 들면 상기 그래픽 처리장치(GPU) 2에 의해, 렌즈 왜곡 보정 변환 및/또는 색수차(왜곡) 보정 변환을 실시하여도 된다.
현재의 앞, 좌측, 우측 및 차후 프레임들(뷰들)로부터 생성될 처리된("타임워프된" 및/또는 "스페이스워프된") 출력 프레임들이 더 있으면, 또 다른 헤드 추적(방향(포즈)) 정보가 판독되고 그 프로세스는 이 또 다른 헤드 추적(방향(포즈)) 정보를 사용하여 반복된다(단계 248). 그렇지 않으면, 새로운 앞, 좌측, 우측 및 차후 프레임들(뷰들)은 상기 그래픽 처리장치(GPU) 2에 의해 렌더링되고, 전체 프로세스는 상기 새로운 앞, 좌측, 우측 및 차후 프레임들(뷰들)을 사용하여 반복된다(단계 249). 따라서, 처리된("타임워프된" 및/또는 "스페이스워프된") 출력 프레임들의 시퀀스는 표시를 위해 제공된다.
상기 실시예들에 대해서 포워드 또는 앞 뷰(를 나타내는 프레임)와 아울러, 또 다른 좌측 및 우측 뷰들(버전들)로 이루어진 일 세트의 뷰들을 렌더링하는 것을 특히 참조하여 설명하였지만, 또한, 또는 대신에 그 밖의 또 다른 뷰들(버전들)이 렌더링될 수 있었다는 것을 알 것이다. 예를 들면, 복수의 좌측/우측 뷰들(버전들)이 렌더링될 수 있었고, 이때의 각 뷰(버전)는 상기 헤드를 상이한 각도 및/또는 거리에 의해 좌측/우측으로 전환(회전) 및/또는 이동(병진운동)에 근거한다. 마찬가지로, 또한, 또는 대신에, 그 밖의 헤드 이동들(회전들 및/또는 병진운동들), 이를테면 상 및/또는 하의 이동에 근거한 뷰들(버전들)이 렌더링될 수 있었다.
마찬가지로, 상기 실시예들에 대해서 포워드 또는 앞 뷰(를 나타내는 프레임)와 아울러, 차후 뷰(버전)로 이루어진 일 세트의 뷰들을 렌더링하는 것을 특히 참조하여 설명하였지만, 또한, 또는 대신에, 그 밖의 또 다른 뷰들(버전들)이 렌더링될 수 있었다. 예를 들면, 복수의 차후 뷰들(버전들)이 렌더링될 수 있었고, 이때의 각 차후 뷰(버전)는 상이한 차후 시점에 근거한다. 마찬가지로, 또한, 또는 대신에, 과거 시점들에 근거한 과거의 뷰들(버전들)이 렌더링될 수 있었다.
또한, 또 다른 뷰(또는 뷰들)가, 헤드 이동(회전 및/또는 병진운동)과 차후(또는 과거) 시점에 근거하여 렌더링될 수 있었다. 바람직한 실시예에서, 렌더링되는 상기 또 다른 뷰들(버전들)은, 상기 포워드 뷰(를 나타내는 프레임)가, 예측된 또는 가정된 오브젝트 이동들, 및/또는 출력된("타임워프된" 및/또는 "스페이스워프된") 버전들의 상기 포워드 뷰가 상기 씬의 뷰들을 나타내는 시점들에 근거하여 렌더링되는 상기 감지된 (제1) 헤드 방향(포즈)과 상기 헤드 장착 디스플레이의 유저가 관련될지도 모르는 예측된 또는 가정된 헤드 이동들(회전들 및/또는 병진운동들) 등에 근거한 적절한 범위의 또 다른 뷰들(버전들)을 포함하도록 선택된다.
또한, 상기 실시예들에 대해서 (예를 들면, 단일의 포워드 뷰, 단일의 좌측 뷰, 단일의 우측 뷰 및 단일의 차후 뷰로 이루어진) 단일의 세트의 뷰들을 렌더링하는 것을 설명하였지만, 렌더링된 복수의 세트들의 뷰들, 예를 들면, 눈마다 일 세트의 (복수의) 뷰들이 있을 수도 있다는 것을 알 것이다. 따라서, 예를 들면, 좌안에 대해 렌더링된 (예를 들면, 단일의 포워드 뷰, 단일의 좌측 뷰, 단일의 우측 뷰 및 단일의 차후 뷰로 이루어진) 제1 세트의 뷰들; 및 우안에 대해 렌더링된 (예를 들면, 단일의 포워드 뷰, 단일의 좌측 뷰, 단일의 우측 뷰 및 단일의 차후 뷰로 이루어진) 다른 세트의 뷰들 등이 있을 수도 있다. 그리고, 각각의 세트들의 뷰들에 대해, 각각 (상술한 것처럼) "타임워프" 및/또는 "스페이스워프" 처리를 실시하여도 되어서, "타임워프된" 및/또는 "스페이스워프된" 출력 프레임들의 각각의 시퀀스는 상기 화상들이 보일 때 3차원 효과를 제공하도록 상기 헤드 장착 디스플레이 8을 사용하여 적절하게 각 눈에 표시되어도 된다.
또한, 상기 실시예들에서는, (예를 들면, 포워드 뷰, 좌측 뷰, 우측 뷰 및 차후 뷰로 이루어진) 단일의 세트의 뷰들에 대해 4개의 "타임워프" 및/또는 "스페이스워프" 프로세스들을 실시한다. 따라서, "타임워프" 및/또는 "스페이스워프" 처리는, 상기 그래픽 처리장치(GPU) 2가 (이를테면, 초당 30프레임으로) 프레임들을 렌더링하는 것보다 4배 빠른 속도(이를테면, 초당 120 프레임들)로 행해진다. 그렇지만, 임의의 원하는 수, 이를테면 1 또는 2개의 "타임워프" 및/또는 "스페이스워프" 프로세스들이, 각 세트의 렌더링된 뷰들에 대해 행해질 수 있었다는 것을 알 것이다.
상기 본 발명의 바람직한 실시예에서 알 수 있는 것은, 본 발명이, 어쨌든, 가상현실(VR) 및/또는 증강현실(AR)(헤드 장착) 디스플레이 시스템들의 표시를 위해 "타임워프된" 화상들을 제공하는 향상된 그래픽 처리 시스템을 제공한다는 것이다. 어쨌든, 본 발명의 바람직한 실시예에서, 이것은, 출력 버전의 제1 렌더링된 프레임을 렌더링하기 전에, 상기 제1 프레임의 하나 이상의 또 다른 버전들을 렌더링하여서 이루어지고, 이때의 상기 제1 프레임의 상기 각기 또 다른 버전은 상기 제1 프레임에 대해 상이한 상기 씬의 뷰를 나타낸다.

Claims (23)

  1. 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 생성하는 그래픽 처리 시스템의 동작방법으로서,
    제1 시점에서, 제1 뷰포인트로부터 및 제1 뷰 방향으로, 씬의 제1 뷰를 나타내는 제1 프레임을 렌더링하는 단계;
    상기 렌더링된 제1 프레임으로부터 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하기 전에, 상기 제1 시점 후의 또 다른 시점에서 및/또는, 또 다른 뷰포인트 및/또는 또 다른 뷰 방향으로, 상기 씬의 또 다른 뷰를 나타내는 각각의 또 다른 버전인, 상기 제1 프레임의 하나 이상의 또 다른 버전들을 렌더링하는 단계;
    상기 렌더링된 제1 프레임 및 상기 제1 프레임의 하나 이상의 렌더링된 또 다른 버전들로부터 표시용 출력 프레임을 생성하는데 사용하는 렌더링된 데이터를 선택하는 단계; 및
    상기 선택된 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하는 단계를 포함하는, 그래픽 처리 시스템의 동작방법.
  2. 제 1 항에 있어서,
    제1 입력 데이터를 사용하여 상기 제1 프레임을 렌더링하는 단계; 및
    상기 제1 입력 데이터의 적어도 일부를 사용하여 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 렌더링하는 단계를 더 포함하는, 그래픽 처리 시스템의 동작방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 씬의 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하는 단계; 및
    상기 씬의 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가깝다고 판정될 때만, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 렌더링하는 단계를 더 포함하는, 그래픽 처리 시스템의 동작방법.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 씬의 제1 뷰에서의 오브젝트가 이동중인지를 판정하는 단계; 및
    상기 씬의 제1 뷰에서의 오브젝트가 이동중이라고 판정될 때만, 각각의 또 다른 시점에 근거하여 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 렌더링하는 단계를 더 포함하는, 그래픽 처리 시스템의 동작방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 렌더링하는 것이, 행해지는 경우, 상기 그래픽 처리 시스템의 처리 한계를 초과하지 않을 것인지를 판정하는 단계; 및
    상기 처리 한계가 초과되지 않을 것이라고 판정될 때만, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 렌더링하는 단계를 더 포함하는, 그래픽 처리 시스템의 동작방법.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 하나 이상의 또 다른 버전들의 적어도 하나에 대한 상기 또 다른 시점, 및/또는 또 다른 뷰포인트 및/또는 또 다른 뷰 방향을,
    (i) 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정된 오브젝트의 하나 이상의 특성들;
    (ii) 수신된 뷰 방향 데이터;
    (iii) 상기 제1 프레임이 렌더링되는 애플리케이션에서 제공한 정보; 및
    (iv) 상기 그래픽 처리 시스템의 처리능력 중,
    적어도 하나에 근거하여 선택하는 단계를 더 포함하는, 그래픽 처리 시스템의 동작방법.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를, 상기 제1 프레임에 대해 보다 낮은 품질로 렌더링 및/또는 저장하는 단계; 및/또는
    상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 상기 제1 프레임보다 덜 자주 갱신하는 단계를 더 포함하는, 그래픽 처리 시스템의 동작방법.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 하나 이상의 또 다른 버전들의 적어도 하나에 대해:
    상기 제1 뷰포인트에 가깝고 및/또는 이동중인 오브젝트; 및 상기 제1 프레임이 나타내는 상기 씬의 제1 뷰에서 상기 오브젝트에 의해 가려지지만, 각각의 또 다른 버전이 나타내는 상기 씬의 뷰에서 상기 오브젝트에 의해 가려지지 않는 상기 씬의 일부를 포함하는, 상기 씬의 영역을 판정하는 단계; 및
    상기 씬의 상기 판정된 각각의 영역에 근거하여, 상기 제1 프레임의 전부가 아닌 일부에 대해서만 상기 각각의 또 다른 버전을 렌더링하는 단계를 더 포함하는, 그래픽 처리 시스템의 동작방법.
  9. 제1 항 또는 제2 항에 있어서,
    상기 출력 프레임을 생성하는 것은, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여, 상기 선택된 렌더링된 데이터를 변환하는 것을 포함하는, 그래픽 처리 시스템의 동작방법.
  10. 디스플레이 시스템의 표시용 출력 프레임을 생성하는 방법으로서,
    상기 디스플레이 시스템에 의해 감지된 뷰 방향 데이터를 수신하는 단계; 및
    상기 수신된 뷰 방향 데이터에 근거하여, 상기 출력 프레임을 생성하는데 사용하기 위한 렌더링된 데이터를,
    (i) 제1 시점 및 제1 뷰 방향에 근거하여 렌더링된 제1 프레임의 렌더링된 데이터; 및
    (ii) 상기 제1 시점 후의 또 다른 시점 및/또는 또 다른 뷰 방향에 근거하여 렌더링되고, 상기 렌더링된 제1 프레임으로부터 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하기 전에 렌더링되는 각각의 또 다른 버전인, 상기 제1 프레임의 하나 이상의 또 다른 버전들의 렌더링된 데이터로부터 선택하는 단계; 및
    상기 선택된 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하는 단계를 포함하는, 출력 프레임 생성방법.
  11. 하나 이상의 오브젝트들의 씬의 뷰를 각각 나타내는 프레임들을 처리회로에 의해 렌더링하고, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여 렌더링된 프레임들을 변환함으로써 렌더링된 프레임들로부터 표시용 출력 프레임들을 처리회로에 의해 생성하도록 구성된, 그래픽 처리 시스템으로서,
    상기 그래픽 처리 시스템은, 제1 시점에서, 제1 뷰포인트로부터 및 제1 뷰 방향으로, 씬의 제1 뷰를 나타내는 제1 프레임을 처리회로에 의해 렌더링하고,
    상기 렌더링된 제1 프레임으로부터 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하기 전에, 상기 제1 시점 후의 또 다른 시점에서 및/또는, 또 다른 뷰포인트 및/또는 또 다른 뷰 방향으로, 상기 씬의 또 다른 뷰를 나타내는 각각의 또 다른 버전인, 상기 제1 프레임의 하나 이상의 또 다른 버전들을 처리회로에 의해 렌더링하고 나서,
    상기 렌더링된 제1 프레임 및 상기 제1 프레임의 상기 하나 이상의 렌더링된 또 다른 버전들로부터 표시용 출력 프레임을 생성하는데 사용하는 렌더링된 데이터를 선택하고,
    상기 선택된 렌더링된 데이터를 사용하여 표시용 출력 프레임을 처리회로에 의해 생성하도록 더 구성되는, 그래픽 처리 시스템.
  12. 제 11 항에 있어서,
    상기 그래픽 처리 시스템은,
    제1 입력 데이터를 사용하여 상기 제1 프레임을 렌더링하고,
    상기 제1 입력 데이터의 적어도 일부를 사용하여 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 렌더링하도록 더 구성되는, 그래픽 처리 시스템.
  13. 제 11 항 또는 제 12 항에 있어서,
    상기 그래픽 처리 시스템은,
    상기 씬의 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가까운지를 판정하고;
    상기 씬의 제1 뷰에서의 오브젝트가 상기 제1 뷰포인트에 가깝다고 판정될 때만, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 렌더링하도록 더 구성되는, 그래픽 처리 시스템.
  14. 제 11 항 또는 제 12 항에 있어서,
    상기 그래픽 처리 시스템은,
    상기 씬의 제1 뷰에서의 오브젝트가 이동중인지를 판정하고,
    상기 씬의 제1 뷰에서의 오브젝트가 이동중이라고 판정될 때만, 각각의 또 다른 시점에 근거하여, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 렌더링하도록 더 구성되는, 그래픽 처리 시스템.
  15. 제 11 항 또는 제 12 항에 있어서,
    상기 그래픽 처리 시스템은,
    상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 렌더링하는 것이, 행해지는 경우, 상기 그래픽 처리 시스템의 처리 한계를 초과하지 않을 것인지를 판정하고,
    상기 처리 한계가 초과되지 않을 것이라고 판정될 때만, 상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를 렌더링하도록 더 구성되는, 그래픽 처리 시스템.
  16. 제 11 항 또는 제 12 항에 있어서,
    상기 그래픽 처리 시스템은, 상기 하나 이상의 또 다른 버전들의 적어도 하나에 대한 상기 또 다른 시점, 및/또는 또 다른 뷰포인트 및/또는 또 다른 뷰 방향을,
    (i) 상기 제1 뷰포인트에 가깝고 및/또는 이동중이라고 판정된 오브젝트의 하나 이상의 특성들;
    (ii) 수신된 뷰 방향 데이터;
    (iii) 상기 제1 프레임이 렌더링되는 애플리케이션에서 제공한 정보; 및
    (iv) 상기 그래픽 처리 시스템의 처리능력 중,
    적어도 하나에 근거하여 선택하도록 더 구성되는, 그래픽 처리 시스템.
  17. 제 11 항 또는 제 12 항에 있어서,
    상기 그래픽 처리 시스템은,
    상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를, 상기 제1 프레임에 대해 보다 낮은 품질로 렌더링 및/또는 저장하고; 및/또는
    상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나를, 상기 제1 프레임보다 덜 자주 갱신하도록 더 구성되는, 그래픽 처리 시스템.
  18. 제 11 항 또는 제 12 항에 있어서,
    상기 그래픽 처리 시스템은,
    상기 제1 프레임의 상기 하나 이상의 또 다른 버전들의 적어도 하나에 대해,
    상기 제1 뷰포인트에 가깝고 및/또는 이동중인 오브젝트; 및
    상기 제1 프레임이 나타내는 상기 씬의 제1 뷰에서 상기 오브젝트에 의해 가려지지만, 각각의 또 다른 버전이 나타내는 상기 씬의 뷰에서 상기 오브젝트에 의해 가려지지 않는 상기 씬의 일부를 포함하는, 상기 씬의 영역을 판정하고;
    상기 씬의 상기 판정된 각각의 영역에 근거하여, 상기 제1 프레임의 전부가 아닌 일부에 대해서만 상기 각각의 또 다른 버전을 렌더링하도록 더 구성되는, 그래픽 처리 시스템.
  19. 제 11 항 또는 제 12 항에 있어서,
    상기 그래픽 처리 시스템은, 수신된 뷰 방향 데이터 및/또는 오브젝트 움직임에 근거하여, 상기 선택된 렌더링된 데이터를 변환함으로써 상기 출력 프레임을 생성하도록 구성되는, 그래픽 처리 시스템.
  20. 디스플레이 시스템으로서,
    상기 디스플레이 시스템의 유저의 헤드 또는 표시 방향을 감지하고 감지된 헤드 또는 표시 방향을 나타내는 뷰 방향 데이터를 제공할 수 있는 뷰 방향 감지회로; 및
    상기 뷰 방향 감지회로에 의해 제공된 뷰 방향 데이터에 근거하여, 출력 프레임을 생성하는데 사용하기 위한 렌더링된 데이터를,
    (i) 제1 시점 및 제1 뷰 방향에 근거하여 렌더링된 제1 프레임의 렌더링된 데이터; 및
    (ii) 상기 제1 시점 후의 또 다른 시점 및/또는 또 다른 뷰 방향에 근거하여 렌더링되고, 상기 렌더링된 제1 프레임으로부터 렌더링된 데이터를 사용하여 표시용 출력 프레임을 생성하기 전에 렌더링되는 각각의 또 다른 버전인, 상기 제1 프레임의 하나 이상의 또 다른 버전들의 렌더링된 데이터로부터 선택하도록 구성된, 처리회로를 구비하고,
    상기 선택된 레더링된 데이터를 사용하여 표시용 출력 프레임을 생성하는, 디스플레이 시스템.
  21. 데이터 처리수단에서 작동될 때, 청구항 1 또는 2의 방법을 실행하기 위하여, 컴퓨터 판독가능한 기억매체에 저장된, 컴퓨터 소프트웨어 코드를 포함하는 컴퓨터 프로그램.
  22. 삭제
  23. 삭제
KR1020180069954A 2017-06-19 2018-06-19 그래픽 처리 시스템 KR102564801B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB1709752.8 2017-06-19
GBGB1709752.8A GB201709752D0 (en) 2017-06-19 2017-06-19 Graphics processing systems
GB1716377.5 2017-10-06
GB1716377.5A GB2563688B (en) 2017-06-19 2017-10-06 Graphics processing systems

Publications (2)

Publication Number Publication Date
KR20180138181A KR20180138181A (ko) 2018-12-28
KR102564801B1 true KR102564801B1 (ko) 2023-08-08

Family

ID=59462301

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180069954A KR102564801B1 (ko) 2017-06-19 2018-06-19 그래픽 처리 시스템

Country Status (4)

Country Link
US (1) US10733789B2 (ko)
KR (1) KR102564801B1 (ko)
CN (1) CN109144240B (ko)
GB (2) GB201709752D0 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7136558B2 (ja) 2015-03-05 2022-09-13 マジック リープ, インコーポレイテッド 拡張現実のためのシステムおよび方法
US10838207B2 (en) 2015-03-05 2020-11-17 Magic Leap, Inc. Systems and methods for augmented reality
CA3007367A1 (en) 2015-12-04 2017-06-08 Magic Leap, Inc. Relocalization systems and methods
KR20190034321A (ko) 2016-08-02 2019-04-01 매직 립, 인코포레이티드 고정-거리 가상 및 증강 현실 시스템들 및 방법들
US10812936B2 (en) 2017-01-23 2020-10-20 Magic Leap, Inc. Localization determination for mixed reality systems
IL298822A (en) 2017-03-17 2023-02-01 Magic Leap Inc A mixed reality system with color virtual content distortion and a method for creating virtual content using it
JP7055815B2 (ja) 2017-03-17 2022-04-18 マジック リープ, インコーポレイテッド 仮想コンテンツをワーピングすることを伴う複合現実システムおよびそれを使用して仮想コンテンツを生成する方法
IL290142B2 (en) 2017-03-17 2023-10-01 Magic Leap Inc A mixed reality system with the assembly of multi-source virtual content and a method for creating virtual content using it
DE102017208936A1 (de) * 2017-05-29 2018-11-29 Audi Ag Verfahren zum Betreiben eines Virtual-Reality-Systems und Virtual-Reality-System
US10489966B2 (en) * 2017-09-01 2019-11-26 Magic Leap, Inc. Generating a new frame using rendered content and non-rendered content from a previous perspective
EP3827299A4 (en) 2018-07-23 2021-10-27 Magic Leap, Inc. SYSTEM OF MIXED REALITY WITH VIRTUAL CONTENT DISTORTION AND PROCESS FOR GENERATING VIRTUAL CONTENT WITH IT
US10943115B2 (en) * 2018-07-24 2021-03-09 Apical Ltd. Processing image data to perform object detection
US10713753B2 (en) * 2018-10-12 2020-07-14 Apical Limited Data processing systems
US11315327B1 (en) * 2018-11-02 2022-04-26 Facebook Technologies, Llc. Beam-racing fallbacks in a display engine
KR20200063614A (ko) * 2018-11-28 2020-06-05 주식회사 라온텍 Ar/vr/mr 시스템용 디스플레이 유닛
SE543121C2 (en) * 2019-02-04 2020-10-13 Tobii Ab Method and system for determining a current gaze direction
US10852815B2 (en) 2019-04-30 2020-12-01 Valve Corporation Display system with dynamic light output adjustment for maintaining constant brightness
US10812771B1 (en) * 2019-06-12 2020-10-20 At&T Intellectual Property I, L.P. Methods, systems, and devices for adjusting image content for streaming panoramic video content
JP7377014B2 (ja) * 2019-07-10 2023-11-09 株式会社ソニー・インタラクティブエンタテインメント 画像表示装置、画像表示システムおよび画像表示方法
JP7217206B2 (ja) 2019-07-10 2023-02-02 株式会社ソニー・インタラクティブエンタテインメント 画像表示装置、画像表示システムおよび画像表示方法
FR3098629B1 (fr) * 2019-07-12 2021-08-13 Aledia Système de visualisation d’images et procédé de commande
US11210815B2 (en) * 2019-08-09 2021-12-28 Intel Corporation Point cloud playback mechanism
CN110460831B (zh) * 2019-08-22 2021-12-03 京东方科技集团股份有限公司 显示方法、装置、设备及计算机可读存储介质
US11468627B1 (en) * 2019-11-08 2022-10-11 Apple Inc. View dependent content updated rates
US20210192681A1 (en) * 2019-12-18 2021-06-24 Ati Technologies Ulc Frame reprojection for virtual reality and augmented reality
US11195341B1 (en) * 2020-06-29 2021-12-07 Snap Inc. Augmented reality eyewear with 3D costumes
US11562715B2 (en) * 2020-08-28 2023-01-24 Arm Limited Graphics processing systems
US20220413433A1 (en) * 2021-06-28 2022-12-29 Meta Platforms Technologies, Llc Holographic Calling for Artificial Reality
SE545378C2 (en) * 2021-12-30 2023-07-25 Tobii Ab Method and system for determining a current gaze direction

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140354515A1 (en) * 2013-05-30 2014-12-04 Oculus Vr, Llc Perception based predictive tracking for head mounted displays

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4947316A (en) * 1983-12-29 1990-08-07 International Business Machines Corporation Internal bus architecture employing a simplified rapidly executable instruction set
US8457387B2 (en) 2009-03-13 2013-06-04 Disney Enterprises, Inc. System and method for interactive environments presented by video playback devices
US9250966B2 (en) * 2011-08-11 2016-02-02 Otoy, Inc. Crowd-sourced video rendering system
US9256987B2 (en) * 2013-06-24 2016-02-09 Microsoft Technology Licensing, Llc Tracking head movement when wearing mobile device
US20160037043A1 (en) * 2014-08-01 2016-02-04 Omnivision Technologies, Inc. High dynamic range (hdr) images free of motion artifacts
US10275935B2 (en) * 2014-10-31 2019-04-30 Fyusion, Inc. System and method for infinite synthetic image generation from multi-directional structured image array
GB2534225B (en) * 2015-01-19 2017-02-22 Imagination Tech Ltd Rendering views of a scene in a graphics processing unit
GB2534847A (en) * 2015-01-28 2016-08-10 Sony Computer Entertainment Europe Ltd Display
GB2536025B (en) 2015-03-05 2021-03-03 Nokia Technologies Oy Video streaming method
US10089790B2 (en) * 2015-06-30 2018-10-02 Ariadne's Thread (Usa), Inc. Predictive virtual reality display system with post rendering correction
CN106056661B (zh) * 2016-05-31 2018-08-28 钱进 基于Direct3D 11的三维图形渲染引擎
EP3264372A1 (en) * 2016-06-30 2018-01-03 Alcatel Lucent Image processing device and method
CN106502427B (zh) * 2016-12-15 2023-12-01 北京国承万通信息科技有限公司 虚拟现实系统及其场景呈现方法
US10152822B2 (en) * 2017-04-01 2018-12-11 Intel Corporation Motion biased foveated renderer
US20190261000A1 (en) * 2017-04-01 2019-08-22 Intel Corporation Video motion processing including static determination, occlusion detection, frame rate conversion, and adjusting compression ratio
KR102374404B1 (ko) * 2017-07-25 2022-03-15 삼성전자주식회사 콘텐트를 제공하기 위한 디바이스 및 방법
WO2019117569A1 (en) * 2017-12-14 2019-06-20 Samsung Electronics Co., Ltd. Method and apparatus for managing immersive data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140354515A1 (en) * 2013-05-30 2014-12-04 Oculus Vr, Llc Perception based predictive tracking for head mounted displays

Also Published As

Publication number Publication date
US10733789B2 (en) 2020-08-04
GB2563688A (en) 2018-12-26
GB2563688B (en) 2020-09-23
GB201709752D0 (en) 2017-08-02
KR20180138181A (ko) 2018-12-28
CN109144240A (zh) 2019-01-04
CN109144240B (zh) 2024-04-12
US20180365882A1 (en) 2018-12-20
GB201716377D0 (en) 2017-11-22

Similar Documents

Publication Publication Date Title
KR102564801B1 (ko) 그래픽 처리 시스템
AU2017314940B2 (en) Continuous time warp and binocular time warp for virtual and augmented reality display systems and methods
CN109791433B (zh) 预测式中心凹虚拟现实系统
US11270492B2 (en) Graphics processing systems
US11410269B2 (en) Mixed reality system with virtual content warping and method of generating virtual content using same
JP6511386B2 (ja) 情報処理装置および画像生成方法
US20240160022A1 (en) Video Compression Methods and Apparatus
KR102359978B1 (ko) 다중-소스 가상 콘텐츠 합성을 갖는 혼합 현실 시스템 및 이를 사용하여 가상 콘텐츠를 생성하는 방법
EP1642625B1 (en) Video game device and image processing program
US10890966B2 (en) Graphics processing systems
US20200134923A1 (en) Generating and Modifying Representations of Objects in an Augmented-Reality or Virtual-Reality Scene
US11120632B2 (en) Image generating apparatus, image generating system, image generating method, and program
CN109300183B (zh) 用于提供输出面的数据处理系统和方法
US12020442B2 (en) Graphics processing systems
JP2009064356A (ja) プログラム、情報記憶媒体及び画像生成システム
WO2021040010A1 (ja) 情報処理装置、制御方法
JP2005100115A (ja) ゲームプログラム、及びゲーム装置
US11187914B2 (en) Mirror-based scene cameras
WO2024089725A1 (ja) 画像処理装置および画像処理方法
US11062492B2 (en) Method of image production
NZ791691A (en) Continuous time warp and binocular time warp for virtual and augmented reality display systems and methods
JP2007141079A (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
GRNT Written decision to grant