KR20180023856A - 그래픽 처리 시스템 및 그래픽 프로세서 - Google Patents
그래픽 처리 시스템 및 그래픽 프로세서 Download PDFInfo
- Publication number
- KR20180023856A KR20180023856A KR1020170107360A KR20170107360A KR20180023856A KR 20180023856 A KR20180023856 A KR 20180023856A KR 1020170107360 A KR1020170107360 A KR 1020170107360A KR 20170107360 A KR20170107360 A KR 20170107360A KR 20180023856 A KR20180023856 A KR 20180023856A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- pixel
- primitive
- view
- processed
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/275—Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals
- H04N13/279—Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals the virtual viewpoint locations being selected by the viewers or determined by tracking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/275—Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Processing Or Creating Images (AREA)
Abstract
그래픽 처리 시스템은 프리미티브 생성 스테이지 및 픽셀 처리 스테이지를 포함하는 그래픽 처리 파이프라인을 포함한다. 입력 데이터가 상기 프리미티브 생성 스테이지에서 처리되어 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터가 생성된다. 상기 제1 프리미티브 데이터는 상기 픽셀 처리 스테이지에서 처리되어 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터가 생성된다. 상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터에 대해, 상기 제1 픽셀-처리된 데이터를 상기 제2 픽셀-처리된 데이터로서 사용할지 또는 상기 픽셀 처리 스테이지에서 상기 제2 프리미티브 데이터를 처리하여 상기 제2 픽셀-처리된 데이터를 생성할지 여부가 결정된다. 상기 결정에 기초하여 상기 그래픽 처리 파이프라인에서 추가적인 처리가 수행된다.
Description
본 발명은 그래픽 처리 시스템 및 그래픽 프로세서에 관한 것이다.
알려진 그래픽 처리 시스템에서, 그래픽 처리 유닛(GPU)은 3차원 장면(scene)을 묘사하기 위해 2개의 분리된 이미지를 렌더링할 수 있다. 하나의 이미지는 장면의 관찰자(viewer)의 좌안(left eye)을 위한 것이고 다른 이미지는 관찰자의 우안(right eye)을 위한 것이다. 각각의 이미지는 약간 다른 카메라 위치로부터 온 장면을 묘사한다. 이것은 관찰자가 2차원 이미지들로부터 3차원 이미지 또는 장면을 구성할 수 있게 한다.
일부 알려진 그래픽 처리 시스템들에서, 그래픽 처리 시스템에서 그래픽 처리 중 일부는 각 눈에 대해 개별적으로 수행되고, 각 눈에 대해 개별적으로 수행될 수 있는 일부 그래픽 처리는 두 눈에 대해 동시에 수행되도록 병합된다. 이러한 병합된 그래픽 처리의 일례는 정점 셰이딩(vertex shading)을 두 눈에 대해 병합하는 다중 뷰 처리(multiview processing)이다.
그러나 그래픽 처리 시스템에 개선의 여지가 남아 있다.
본 발명의 제1 양태에 따라, 그래픽 처리 시스템을 동작시키는 방법으로서, 상기 그래픽 처리 시스템은 프리미티브(primitive) 생성 스테이지 및 픽셀 처리 스테이지를 포함하는 그래픽 처리 파이프라인을 포함하고, 상기 방법은,
상기 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하는 단계;
상기 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여, 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하는 단계;
상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터에 대해, 상기 제1 픽셀-처리된 데이터를 상기 제2 픽셀-처리된 데이터로서 사용할지 또는 상기 픽셀 처리 스테이지에서 상기 제2 프리미티브 데이터를 처리하여 상기 제2 픽셀-처리된 데이터를 생성할지를 결정하는 단계; 및
상기 결정하는 단계에 기초하여 상기 그래픽 처리 파이프라인에서 추가적인 처리를 수행하는 단계를 포함하는 방법이 제공된다.
본 발명의 제2 양태에 따라, 방법으로서,
그래픽 처리 파이프라인의 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하는 단계;
상기 그래픽 처리 파이프라인의 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여, 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하는 단계; 및
상기 제1 픽셀-처리된 데이터를 상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터로서 사용하는 단계를 포함하는 방법이 제공된다.
본 발명의 제3 양태에 따라, 그래픽 처리 파이프라인과 연관된 그래픽 프로세서를 동작시키는 방법으로서, 상기 그래픽 처리 파이프라인은 프리미티브 생성 스테이지 및 픽셀 처리 스테이지를 포함하고, 상기 방법은,
상기 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하는 단계;
상기 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하는 단계;
상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터에 대해, 상기 제1 픽셀-처리된 데이터를 상기 제2 픽셀-처리된 데이터로서 사용할지 또는 상기 픽셀 처리 스테이지에서 상기 제2 프리미티브 데이터를 처리하여 상기 제2 픽셀-처리된 데이터를 생성할지를 결정하는 단계; 및
상기 결정하는 단계에 기초하여 상기 그래픽 처리 파이프라인에서 추가적인 처리를 수행하는 단계를 포함하는 방법이 제공된다.
본 발명의 제4 양태에 따라, 컴퓨터 프로그램으로서, 그래픽 처리 시스템에서 실행될 때 하나 이상의 상기 방법을 수행하도록 되어 있는 소프트웨어 코드를 포함하는 컴퓨터 프로그램이 제공된다.
본 발명의 제5 양태에 따라, 그래픽 처리 파이프라인을 포함하는 그래픽 처리 시스템으로서, 상기 그래픽 처리 파이프라인은 프리미티브 생성 스테이지 및 픽셀 처리 스테이지를 포함하고, 상기 그래픽 처리 시스템은,
상기 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하고;
상기 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하고;
상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터에 대해, 상기 제1 픽셀-처리된 데이터를 상기 제2 픽셀-처리된 데이터로서 사용할지 또는 상기 픽셀 처리 스테이지에서 상기 제2 프리미티브 데이터를 처리하여 상기 제2 픽셀-처리된 데이터를 생성할지를 결정하며;
상기 결정에 기초하여 상기 그래픽 처리 파이프라인에서 추가적인 처리를 수행하도록 되어 있는, 상기 그래픽 처리 시스템이 제공된다.
본 발명의 제6 양태에 따라, 상기 그래픽 처리 시스템을 포함하는 가상 현실 사용자 디바이스가 제공된다.
본 발명의 제7 양태에 따라, 장치로서,
그래픽 처리 파이프라인의 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하고;
상기 그래픽 처리 파이프라인의 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하며;
상기 제1 픽셀-처리된 데이터를 상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터로서 사용하도록 되어 있는 장치가 제공된다.
본 발명의 제8 양태에 따라, 상기 장치를 포함하는 가상 현실 사용자 디바이스가 제공된다.
본 발명의 제9 양태에 따라, 그래픽 처리 파이프라인과 연관된 그래픽 프로세서로서, 상기 그래픽 처리 파이프라인은 프리미티브 생성 스테이지 및 픽셀 처리 스테이지를 포함하고, 상기 그래픽 프로세서는,
상기 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하고;
상기 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하고;
상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터에 대해, 상기 제1 픽셀-처리된 데이터를 상기 제2 픽셀-처리된 데이터로서 사용할지 또는 상기 픽셀 처리 스테이지에서 상기 제2 프리미티브 데이터를 처리하여 상기 제2 픽셀-처리된 데이터를 생성할지를 결정하며;
상기 결정에 기초하여 상기 그래픽 처리 파이프라인에서 추가적인 처리를 수행하도록 되어 있는 상기 그래픽 프로세서가 제공된다.
본 발명의 제10 양태에 따라, 상기 그래픽 프로세서를 포함하는 가상 현실 사용자 디바이스가 제공된다.
본 발명의 추가적인 특징 및 장점은, 첨부 도면을 참조하여 설명된, 단지 예시로서 제공된, 이하의 상세한 설명으로부터 명백해질 것이다.
도 1은 본 발명의 일 실시예에 따른 그래픽 처리 시스템의 일례를 개략적으로 도시한다;
도 2는 본 발명의 일 실시예에 따른 그래픽 처리 파이프라인의 일례를 개략적으로 도시한다;
도 3은 본 발명의 일 실시예에 따른 그래픽 처리 파이프라인의 다른 예를 개략적으로 도시한다;
도 4는 본 발명의 일 실시예에 따른 데이터 저장 배열(data storage arrangement)의 일례를 개략적으로 도시한다;
도 5는 본 발명의 일 실시예에 따른 데이터 저장 배열의 또 다른 예를 개략적으로 도시한다;
도 6은 본 발명의 일 실시예에 따른 그래픽 처리 파이프라인의 다른 예를 개략적으로 도시한다;
도 7은 본 발명의 일 실시예에 따른 그래픽 처리 시스템을 동작시키는 방법의 일례를 나타내는 흐름도를 도시한다;
도 8a 및 도 8b는 본 발명의 일 실시예에 따른 그래픽 처리 파이프라인의 다른 예를 개략적으로 도시한다; 및
도 9는 본 발명의 일 실시예에 따른 그래픽 처리 시스템을 동작시키는 방법의 다른 예를 도시하는 흐름도를 도시한다.
도 2는 본 발명의 일 실시예에 따른 그래픽 처리 파이프라인의 일례를 개략적으로 도시한다;
도 3은 본 발명의 일 실시예에 따른 그래픽 처리 파이프라인의 다른 예를 개략적으로 도시한다;
도 4는 본 발명의 일 실시예에 따른 데이터 저장 배열(data storage arrangement)의 일례를 개략적으로 도시한다;
도 5는 본 발명의 일 실시예에 따른 데이터 저장 배열의 또 다른 예를 개략적으로 도시한다;
도 6은 본 발명의 일 실시예에 따른 그래픽 처리 파이프라인의 다른 예를 개략적으로 도시한다;
도 7은 본 발명의 일 실시예에 따른 그래픽 처리 시스템을 동작시키는 방법의 일례를 나타내는 흐름도를 도시한다;
도 8a 및 도 8b는 본 발명의 일 실시예에 따른 그래픽 처리 파이프라인의 다른 예를 개략적으로 도시한다; 및
도 9는 본 발명의 일 실시예에 따른 그래픽 처리 시스템을 동작시키는 방법의 다른 예를 도시하는 흐름도를 도시한다.
본 발명의 실시예들에 따른 다수의 예들이 이제 디스플레이용 컴퓨터 그래픽을 처리하는 환경에서 설명될 것이다.
도 1을 참조하면, 그래픽 처리 시스템(100)의 일례가 개략적으로 도시되어 있다.
이 예에서, 호스트 프로세서(110) 상에서 실행되는 게임과 같은 애플리케이션(105)은 연관된 GPU(115)에 의해 수행되는 그래픽 처리 동작을 요청한다. 이를 위해, 애플리케이션(105)은 GPU(115)를 위한 드라이버(120)에 의해 해석되는 애플리케이션 프로그래밍 인터페이스(API) 호출을 생성한다. 드라이버(120)는 호스트 프로세서(110) 상에서 실행된다. 드라이버(120)는 애플리케이션(105)에 의해 요청된 그래픽 출력을 생성하기 위해 GPU(115)에 적절한 커맨드(command)들을 생성한다. 커맨드들의 세트는 애플리케이션(105)으로부터의 커맨드들에 응답하여 GPU(115)에 제공된다. 이 커맨드들은 디스플레이 상에 디스플레이될 프레임을 생성하는 것일 수 있다.
출력을 생성하는, 예를 들어, 프레임을 렌더링하는, GPU(115)에 대한 커맨드들은 드로우 콜 디스크립터(draw call descriptor: DCD) 형태로 제공된다. DCD는 호스트 프로세서(110) 상에서 실행되는 애플리케이션(105)으로부터의 커맨드들에 응답하여 생성된다. 각각의 드로우 콜이 대응하는 DCD를 갖는, 복수의 드로우 콜이 실행될 수 있다. 각각의 드로우 콜은 그래픽 처리 파이프라인의 상이한 처리 스테이지들 중 적어도 일부를 사용한다.
도 2를 참조하면, 그래픽 처리 파이프라인(200)의 일례가 개략적으로 도시되어 있다. 그래픽 처리 파이프라인(200)은 GPU에 의해 수행될 수 있는 일련의 동작을 나타낸다.
이 예에서 GPU는 타일 기반 렌더러(tile-based renderer)이다. 따라서 GPU는 생성될 렌더 출력 데이터 어레이의 타일들을 생성한다. 렌더 출력 데이터 어레이는 출력 프레임일 수 있다. 타일 기반 렌더링은 즉각 모드 렌더링과 달리, 한번에 전체 렌더 출력을 처리하지 않고 렌더 출력을 복수 개의 더 작은 하위-구역(sub-region)(또는 '영역')으로 분할한다. 이러한 하위-구역은 본 명세서에서 타일로 지칭된다. 각 타일은 개별적으로 렌더링된다. 예를 들어, 각 타일은 하나씩 차례대로 렌더링될 수 있다. 렌더링된 타일은 이후 디스플레이를 위한 전체 렌더 출력을 제공하기 위해 재조합된다. 타일 기반 렌더링에서 렌더 출력은 규칙적인 크기와 형상의 타일로 분할될 수 있다. 이들 타일은 사각형 또는 다른 형상일 수 있다.
타일링 및 타일 기반 렌더링에 사용될 수 있는 다른 용어로는 "청킹(chunking)"을 포함하고, 여기서 렌더링 타일은 "청크" 및 "버킷(bucket)" 렌더링이라고 지칭된다. 타일 및 타일링이라는 용어가 편의상 이하에 사용되지만 이들 용어는 모든 대안적인 및 동등한 용어 및 기술을 포함하도록 의도된 것으로 이해되어야 한다.
렌더 출력 데이터 어레이는 스크린 또는 프린터와 같은 디스플레이 디바이스 상에 디스플레이하도록 의도된 출력 프레임일 수 있다. 렌더 출력은 또한 예를 들어 나중에 렌더링 통과(pass)시에 사용되도록 의도된 중간 데이터를 포함할 수 있다. 이것의 일례는 텍스처(texture) 출력에 대한 렌더이다.
컴퓨터 그래픽 이미지가 디스플레이될 때, 이 그래픽 이미지는 먼저 프리미티브들(또는 '기하학적 형상들')의 세트로서 한정될 수 있다. 프리미티브의 일례는 폴리곤(polygon)이다. 이 프리미티브들은 이후 래스터화 과정에서 그래픽 프래그먼트(graphics fragment)로 분할된다. 이 다음에는 픽셀 처리가 뒤따른다. 픽셀 처리 동작 동안, 렌더러는 프래그먼트들이 올바르게 디스플레이될 수 있도록 각 프래그먼트와 연관된 데이터를 수정(modify)할 수 있다. 이러한 데이터의 예는 색상(colour) 및 투명도(transparency)를 포함한다. 일단 프래그먼트들이 렌더러를 완전히 횡단(traversed)하면, 연관된 데이터 값들이 메모리에 저장되어 출력될 준비가 된다.
도 2는 GPU와 연관된 다양한 요소(element)들과 파이프라인 스테이지들을 도시한다. 그러나, 도 2에 도시되지 않은 그래픽 처리 파이프라인의 다른 요소들 및 스테이지들이 있을 수 있다. 또한 도 2는 단지 개략도일 뿐, 예를 들어, 실제로 도시된 기능 유닛들 및 파이프라인 스테이지들은 비록 도 2에는 별개의 스테이지로 개략적으로 도시되어 있더라도 하드웨어 회로를 공유할 수 있는 것으로 이해되어야 한다. 또한 그래픽 처리 파이프라인(200)의 각 스테이지, 요소 및 유닛 등은 원하는 대로 구현될 수 있고, 이에 따라, 예를 들어, 연관된 동작 및 기능을 수행하기 위해 적절한 회로 및/또는 처리 로직 등을 포함할 수 있는 것으로 이해된다.
도 2에 도시된 바와 같이, GPU가 실행하는 그래픽 처리 파이프라인(220)은 정점 셰이더(vertex shader)(205), 헐 셰이더(hull shader)(210), 테셀레이터(tesselator)(215), 도메인 셰이더(domain shader)(220), 프리미티브 셰이더(225), 타일러(tiler)(230), 래스터화 스테이지(rasterization stage)(235), 초기(early) Z(또는 '깊이') 및 스텐실 테스트 스테이지(stencil test stage)(240), 프래그먼트 셰이딩 스테이지(245) 형태의 렌더러, 후기(late) Z(또는 '깊이') 및 스텐실 테스트 스테이지(250), 블렌딩(blending) 스테이지(255), 타일 버퍼(260) 및 다운 샘플링 및 라이트아웃(writeout) 스테이지(265)를 포함하는 다수의 스테이지를 포함한다. 그러나 GPU의 다른 배열들도 가능하다.
정점 셰이더(205)는 생성될 출력에 대해 한정된 정점들과 연관된 입력 데이터 값들을 수신한다. 정점 셰이더(205)는 이들 데이터 값을 처리하여, 그래픽 처리 파이프라인(200)의 후속 스테이지들에서 사용되는 대응하는 정점 셰이딩된 출력 데이터 값들의 세트를 생성한다.
처리될 각 프리미티브는 정점들의 세트에 의해 한정되고 표현될 수 있다. 프리미티브의 각 정점은 속성(attribute)들의 세트와 연관될 수 있다. 속성들의 세트는 이 정점에 대한 데이터 값들의 세트이다. 이들 속성은 위치 데이터 및 다른 비-위치 데이터를 포함할 수 있다. 비-위치 데이터는, 예를 들어, 해당 정점에 대한 컬러, 조명(light), 노멀(normal) 및/또는 텍스처 좌표를 한정할 수 있다.
정점들의 세트는 GPU에 의해 생성될 주어진 출력에 대해 한정된다. 출력을 위해 처리될 프리미티브들은 정점들의 세트 내에 주어진 정점들을 포함한다. 정점 셰이딩 동작은 각 정점의 속성을 후속 그래픽 처리 동작을 위해 원하는 형태로 변환한다. 이것은, 예를 들어, 정점 위치 속성들을, 이들이 초기에 한정된 세계 또는 사용자 공간으로부터, 그래픽 처리 시스템의 출력이 디스플레이될 스크린 공간으로 변환하는 것을 포함할 수 있다. 이것은 또한, 예를 들어, 렌더링될 이미지에서의 조명 효과를 고려하도록 입력 데이터를 수정하는 것을 포함할 수 있다.
헐 셰이더(210)는 패치 제어점(patch control point)들의 세트들에 동작을 수행하고 패치 상수(patch constant)들로서 알려진 추가적인 데이터를 생성한다.
테셀레이션(tessellation) 스테이지(215)는 프리미티브들을 세분하여 헐의 고차 표현을 생성한다.
도메인 셰이더(220)는 정점 셰이더(205)와 유사한 방식으로 테셀레이션 스테이지에 의해 출력된 정점들에 동작을 수행한다.
프리미티브 셰이더(225)는 삼각형, 점 또는 선과 같은 전체 프리미티브를 처리한다.
정점 셰이더(205), 헐 셰이더(210), 테셀레이터(215), 도메인 셰이더(220) 및 프리미티브 셰이더(225)는, GPU에 제공된 커맨드들 및 정점 데이터에 응답하여, 변환 동작 및 조명 동작과 같은 프래그먼트 프론트엔드 동작 및 프리미티브 설정(setup)을 수행하여 렌더링될 프리미티브들을 설정한다.
일단 렌더링될 모든 프리미티브가 적절히 설정되면, 타일러(230)는 렌더 출력이 처리를 위해 분할된 각 타일에 대해 처리될 프리미티브들이 어느 것인지를 결정한다. 이를 위해, 타일러(230)는 처리될 각 프리미티브의 위치(location)를 타일 위치(tile position)들과 비교하고, 이 프리미티브가 잠재적으로 속할 수 있다고 결정한 각 타일에 대한 각각의 프리미티브 리스트에 이 프리미티브를 추가한다. 프리미티브들을 분류하고 이 프리미티브들을, 정확한 비닝(binning) 또는 경계 박스 비닝(bounding box binning) 또는 그 사이에 있는 임의의 것과 같은, 타일 리스트로 비닝하는 임의의 적절하고 바람직한 기술이 타일링 프로세스에 사용될 수 있다.
일단 이러한 방식으로 각 렌더링 타일에 대해 렌더링될 프리미티브들의 리스트(또는 '프리미티브 리스트')들이 준비되면 프리미티브 리스트들이 사용을 위해 저장된다. 프리미티브 리스트들은 시스템이 해당 타일이 렌더링될 때 고려되고 렌더링될 프리미티브가 어느 것인지를 식별할 수 있게 한다.
일단 타일러(230)가 모든 타일 리스트를 준비하면, 각 타일이 렌더링될 수 있다. 이를 위해, 각 타일은 타일러(230)에 후속하는 그래픽 처리 파이프라인 스테이지들에 의해 처리된다.
주어진 타일이 처리되고 있을 때, 이 타일에 대해 처리될 각각의 프리미티브가 래스터화기(235)로 전달된다. 그래픽 처리 파이프라인(200)의 래스터화 스테이지(235)는 프리미티브들을 처리를 위해 개별 그래픽 프래그먼트들로 래스터화하도록 동작한다. 이를 위해, 래스터화기(235)는 이 프리미티브들을 샘플링 점들로 래스터화하고, 프리미티브들을 렌더링하기에 적절한 위치를 갖는 그래픽 프래그먼트들을 생성한다. 래스터화기(235)에 의해 생성된 프래그먼트들은 이후 처리를 위해 파이프라인(200)의 나머지 진행 부분으로 전송된다.
초기 Z 및 스텐실 테스트 스테이지(240)는 이 스테이지에서 폐기(또는 '도태(culled)')될 프래그먼트가 있는지 여부를 알기 위해 래스터화기(235)로부터 수신한 프래그먼트들에 Z(또는 '깊이') 테스트를 수행할 수 있다. 이를 위해, 초기 Z 및 스텐실 테스트 스테이지(240)는 래스터화기(235)에 의해 발행된 프래그먼트들의 깊이 값들을 이미 렌더링된 프래그먼트들의 깊이 값들과 비교한다. 이미 렌더링된 프래그먼트들의 깊이 값들은 타일 버퍼(260)의 일부인 깊이 버퍼에 저장된다. 초기 Z 및 스텐실 테스트 스테이지(240)에 의해 수행되는 비교는 새로운 프래그먼트들이 이미 렌더링된 프래그먼트들에 의해 폐색될지 여부를 결정하는 것이다. 동시에 초기 스텐실 테스트가 수행된다. 프래그먼트 초기 Z 및 스텐실 테스트 스테이지(240)를 통과한 프래그먼트들은 프래그먼트 셰이딩 스테이지(245)로 전송된다. 프래그먼트 셰이딩 스테이지(245)는 초기 Z 및 스텐실 테스트를 통과한 프래그먼트들에 적절한 프래그먼트 처리 동작을 수행하여 적절한 렌더링된 프래그먼트 데이터를 생성한다. 이 프래그먼트 처리는, 적절한 프래그먼트 데이터를 생성하기 위해 프래그먼트들에 프래그먼트 셰이더 프로그램을 실행하거나, 프래그먼트들에 텍스처를 적용하거나, 또는 프래그먼트들에 포깅(fogging) 동작 또는 다른 동작을 적용하는 것 등과 같은 임의의 적절한 프래그먼트 셰이딩 프로세스를 포함할 수 있다. 프래그먼트 셰이딩 스테이지(245)는 프로그래밍 가능한 프래그먼트 셰이더일 수 있다.
이후, 후기 프래그먼트 Z 및 스텐실 테스트 스테이지(250)가 있고 이 후기 프래그먼트 Z 및 스텐실 테스트 스테이지는 렌더링된 프래그먼트가 최종 이미지에서 실제로 볼 수 있는지 여부를 결정하기 위해 셰이딩된 프래그먼트에 특히 파이프라인 깊이 테스트의 종료를 수행한다. 이 깊이 테스트는, 새로운 프래그먼트들에 대한 프래그먼트 데이터가 이미 렌더링된 프래그먼트들의 프래그먼트 데이터를 대체해야 하는지 여부를 결정하기 위해, 타일 버퍼(260) 내 Z-버퍼에 저장된 프래그먼트의 위치에 Z-버퍼 값을 사용한다. 이것은, 프래그먼트 셰이딩 스테이지(245)에 의해 발행된 프래그먼트들의 깊이 값들을, Z 버퍼에 저장된, 이미 렌더링된 프래그먼트들의 깊이 값들과 비교하는 것을 수반할 수 있다. 이러한 후기 프래그먼트 깊이 및 스텐실 테스트 스테이지(250)는 또한 프래그먼트들에 후기 알파 및/또는 스텐실 테스트를 수행할 수 있다.
이후, 후기 프래그먼트 테스트 스테이지(250)를 통과한 프래그먼트들은, 블렌더(blender)(255)에서, 타일 버퍼(260)에 이미 저장된 프래그먼트들과 임의의 블렌딩 동작을 받을 수 있다. 디더(dither) 등(도시 생략)과 같은 프래그먼트들에 필요한 임의의 다른 나머지 동작들도 이 스테이지에서 수행된다.
마지막으로, 출력 프래그먼트 데이터(또는 '값')는 타일 버퍼(260)에 기록된다. 출력 프래그먼트 데이터는 이후 디스플레이를 위해 프레임 버퍼(270)로 출력될 수 있다. 출력 프래그먼트에 대한 깊이 값은 또한 타일 버퍼(260) 내 Z-버퍼에 적절히 기록된다. 타일 버퍼(260)는 버퍼들이 나타내는 각 샘플링 점에 대해 적절한 컬러 등 또는 Z-값을 각각 저장하는 컬러 및 깊이 버퍼들을 저장한다. 이들 버퍼는, 버퍼들 내의 샘플 값들의 각 세트들이 전체 렌더 출력의 각 픽셀들에 대응하는, 전체 렌더링 출력의 일부를 나타내는, 이 예에서는, 타일을 나타내는 프래그먼트 데이터의 어레이를 저장한다. 예를 들어, 샘플 값들의 각 2 x 2 세트는 4x 다중 샘플링이 사용되는 출력 픽셀에 대응할 수 있다.
타일 버퍼(260)는 그래픽 처리 파이프라인(200)에 국한된(local) RAM(random access memory)의 일부로서 제공된다. 다시 말해, 타일 버퍼(260)는 온-칩(on-chip) 메모리에 제공된다.
타일 버퍼(260)로부터 오는 데이터는 다운샘플링 라이트아웃 유닛(265)에 입력되고, 이후 디스플레이 디바이스(도시되지 않음)의 프레임 버퍼(270)와 같은 외부 메모리 출력 버퍼로 출력(또는 '라이트백(write back)')된다. 디스플레이 디바이스는, 예를 들어, 컴퓨터 모니터 또는 프린터와 같은 픽셀들의 어레이를 포함하는 디스플레이를 포함할 수 있다.
다운샘플링 및 라이트아웃 유닛(265)은 타일 버퍼(260)에 저장된 프래그먼트 데이터를 출력 버퍼 및 디바이스를 위한 적절한 해상도로 다운샘플링하여, 출력 디바이스의 픽셀들에 대응하는 픽셀 데이터의 어레이가 생성되도록 한다. 그 결과 출력 값들이 출력 버퍼(270)로 출력되기 위해 픽셀 형태로 생성된다.
일단 렌더 출력의 타일이 처리되고 그 데이터가 저장을 위해 주 메모리로, 예를 들어, 주 메모리 내 프레임 버퍼(270)로 보내지면, 그 다음 타일이 처리되고, 전체 렌더 출력을 생성할 만큼 충분한 타일들이 처리될 때까지 이와 같이 계속된다. 이 프로세스는 그 다음 렌더 출력 등에 대해 반복된다.
도 2로부터 볼 수 있는 바와 같이, 그래픽 처리 파이프라인(200)은 다수의 프로그램 가능한 처리 또는 "셰이더" 스테이지들, 즉 정점 셰이더(205), 헐 셰이더(210), 도메인 셰이더(220), 프리미티브 셰이더(225) 및 프래그먼트 셰이더(245)를 포함한다. 이들 프로그래밍 가능한 셰이더 스테이지는, 하나 이상의 입력 변수를 가지고 출력 변수들의 세트들을 생성하는 각각의 셰이더 프로그램들을 실행한다. 해당 셰이더 프로그램은 처리될 각 작업 항목(work item)에 대해, 예를 들어, 정점 셰이더(205)의 경우 각 정점에 대해 실행될 수 있다. 처리될 각 작업 항목에 대해 실행 스레드(execution thread)가 발행될 수 있고, 이 스레드는 이후 셰이더 프로그램의 명령(instruction)을 실행하여 원하는 셰이딩된 출력 데이터를 생성한다.
도 1을 참조하여 전술된 애플리케이션(105)과 같은 애플리케이션은 GLSL(OpenGL Shading Language), HLSL(High-Level Shading Language), Open Computing Language(OpenCL) 등과 같은 하이-레벨의 셰이더 프로그래밍 언어를 사용하여 실행될 셰이더 프로그램들을 제공한다. 이들 셰이더 프로그램은 셰이더 언어 컴파일러에 의해 타겟 그래픽 처리 파이프라인(200)을 위한 바이너리 코드(binary code)로 변환된다. 이것은 컴파일러 내의 프로그램의 하나 이상의 내부, 중간 표현을 생성하는 것을 포함할 수 있다. 예를 들어, 컴파일러는 드라이버(120)의 일부일 수 있으며, 여기에 컴파일러가 실행하게 하는 특별한 API 호출이 있다. 따라서, 컴파일러 실행은 애플리케이션(105)에 의해 생성된 API 호출에 응답하여 드라이버에 의해 수행되는 드로우 호출 준비의 일부인 것으로 볼 수 있다.
전술된 바와 같이, 다중 뷰 그래픽 처리 시스템에서의 알려진 정점 셰이더는 두 눈에 대한 정점 셰이딩을 동시에 수행할 수 있다. 이것은 정점-관련된 처리가 두 눈에 공통인 계산 및 데이터 액세스를 줄이는 데 도움을 줄 수 있다. 이러한 시스템에서 타일러는 하나의 눈과 연관된 타일 및 다른 눈과 연관된 대응하는 타일에 대한 프리미티브 정보를 함께 저장하는 다중 뷰 타일 리스트를 생성할 수 있다.
본 명세서에 설명된 예들에서, 좌안 뷰 및 우안 뷰에서의 프리미티브들 사이의 공통점은 더 사용된다. 특히, 후속 그래픽 파이프라인 동작들에 대한 추가적인 효율성이 확인되었다. 특히, 후속 동작들 및 스테이지들이 좌안 뷰 및 우안 뷰에 대해 독립적으로 출력 데이터를 렌더링하는 것이 아니라, 좌안 뷰 및 우안 뷰 사이의 시각적 공통점을 식별하고, 그래픽 파이프라인에서 후반부에 이러한 공통점을 사용하는 것에 의해 처리를 향상시킬 수 있다. 예를 들어, 좌안 뷰와 우안 뷰에 대한 타일을 독립적으로 렌더링하는 것이 아니라, 픽셀 처리는 좌안 뷰와 우안 뷰가 실질적으로 동일한 장면 또는 장면의 일부를 보는 경우, 두 눈 모두에 대해 수행되는 것이 아니라 한 눈에 대해 단 한 번만 수행될 수 있다. 예를 들어, 좌안 뷰 타일에서 보여질 데이터는 대응하는 우안 뷰 타일에서 보여질 데이터와 동일하거나 실질적으로 동일한 경우, 픽셀 처리는 좌안 뷰에 대해서만 수행되어 좌안에 대한 픽셀-처리된 타일을 생성하고 이 타일은 우안 뷰에 대한 대응하는 타일로 사용될 수 있다. 이것은 이러한 처리를 효과적으로 스킵(skipped)하거나 바이패스(bypass)할 수 있는 경우 픽셀 처리에서 계산 집약적인 동작 및 연관된 레이턴시 및 전력 소비 요구조건을 절감할 수 있다. 좌안 뷰 타일에 보여질 데이터가 대응하는 우안 뷰 타일에서 보여질 데이터와 동일하지 않거나 실질적으로 동일하지 않은 경우에, 픽셀 처리는 두 눈에 대해 수행된다. 본 명세서에 설명된 기술들은, 좌측 뷰 및 우측 뷰가 그래픽 처리 파이프라인의 일부에서 별도로 처리되지만, 뷰들 중 하나의 뷰에 대해 수행된 작업이 파이프라인에서 후반부에 다른 뷰를 위해 사용될 수 있는 그래픽 처리 시스템에 적용될 수도 있다. 그리하여, 본 명세서에 설명된 예들에서, 사실상 동일한 픽셀을 두 번 렌더링하는 것이 아니라, 픽셀은, 이제 보다 상세히 설명되는 바와 같이, 하나의 눈에 대해 한 번만 렌더링되고, 이것이 다른 눈에 대해 사용될 수 있다.
도 3을 참조하면, 그래픽 처리 파이프라인(300)의 일례가 개략적으로 도시되어있다.
그래픽 처리 파이프라인(300)에서 수행되는 처리는 VR 환경 또는 문맥에서 수행될 수 있다. GPU 가속을 위한 하나의 사용 케이스는 VR 애플리케이션을 렌더링하는 것에 있다. 따라서, 그래픽 처리 파이프라인(300)은 VR 애플리케이션의 렌더링을 가속시키거나 및/또는 향상시키는데 사용될 수 있다.
예를 들어, 장면의 일부 또는 전부가 장면의 관찰자에 대해 무한대(infinite) 거리에 있는 경우, 장면에서 임의의 객체들이 카메라 위치로부터 멀리 떨어져 있기 때문에 좌안 뷰와 우안 뷰 사이에 시차(parallax)가 없다. 하늘 상자(sky box), 공간 배경(space background) 및 다른 이러한 페인트된 배경막(backdrop)은 관찰자에 대해 무한대 거리에 있을 수 있는 장면의 일부분의 예이다. 무한대 거리에 있는 객체에 대해 동일한 픽셀을 두 번 렌더링하는 것, 즉, 좌안에 대해 한번 및 우안에 대해 한 번 렌더링하는 것은 GPU 작업 부하를 증가시키고 전력 소비를 증가시키며 레이턴시를 증가시켜 실익이 없거나 거의 없다. 전력 소비는 스마트 폰, 태블릿 컴퓨팅 디바이스, VR 헤드셋 등과 같은 배터리로 구동되는 디바이스에서 특히 고려해야 할 사항일 수 있다. 예를 들어 관찰자와 장면 간의 상호 작용을 검출하는 것과 그에 따라 장면의 뷰를 업데이트하는 것 사이에 상당한 지연이 있으면 사용자 경험을 저하시킬 수 있기 때문에 레이턴시는 VR에서 특히 고려해야 할 사항일 수 있다. 장면에서 무한대 거리에 있는 구역들 및/또는 객체들을 결정하고 이들 구역들 및/또는 객체들을 단일 렌더링 동작으로 감소시키면 이러한 GPU 중복을 감소시킬 수 있다. 이러한 렌더링을 가속 및/또는 향상시킴으로써 렌더링 용량을 다른 렌더링 동작들에 사용할 수 있다. 본 명세서에 설명된 기술들은 또한 더 적은 렌더링 동작들을 수행함으로써 GPU 전력 소비를 감소시킬 수 있다.
그래픽 처리 파이프라인(300)은 프리미티브 생성 스테이지(305), 픽셀 처리 스테이지(310) 및 추가적인 처리 스테이지(315)를 포함하는 이미지 처리 파이프라인을 포함한다.
프리미티브 생성 스테이지(305)는 입력 데이터를 처리하여 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)를 생성한다. 입력 데이터는 예를 들어 정점 속성 데이터를 포함할 수 있다. 프리미티브 생성 스테이지(305)는 하나 이상의 정점 셰이더를 포함할 수 있다. 프리미티브 생성 스테이지(305)에서 입력 데이터를 처리하는 단계는 입력 데이터에 정점 셰이딩을 수행하는 단계를 포함할 수 있다. '프리미티브 데이터'라는 용어는 본 명세서에서 프리미티브 생성 스테이지에 의해 출력된 데이터를 의미하는 것으로 사용된다. 제1 프리미티브 데이터(320)는 장면의 제1 뷰와 연관되고, 제2 프리미티브 데이터(325)는 장면의 제2 뷰와 연관된다. 장면의 제1 뷰는 장면의 관찰자의 제1 눈과 연관될 수 있고, 제2 눈은 장면의 관찰자의 제2 눈과 연관될 수 있다. 장면의 제1 뷰는 장면의 관찰자의 좌안과 연관될 수 있고, 제2 눈은 장면의 관찰자의 우안과 연관될 수 있다.
제1 프리미티브 데이터(320)는 제1 처리 스테이지(310)에서 처리되어 제1 픽셀-처리된 데이터(330)가 생성된다. 픽셀 처리 스테이지(310)는 하나 이상의 래스터화기 및 하나 이상의 프래그먼트 셰이더를 포함할 수 있다. 픽셀 처리 스테이지(310)에서 제1 프리미티브 데이터(320)를 처리하는 것은 제1 프리미티브 데이터(320)에 래스터화 및/또는 정점 셰이딩을 수행하는 것을 포함할 수 있다. '픽셀-처리된 데이터'라는 용어는 본 명세서에서 픽셀 처리 스테이지에 의해 출력된 데이터를 의미하는 것으로 사용된다. 제1 픽셀-처리된 데이터(330)는 장면의 제1 뷰와 연관된다.
이 예에서, 장면의 제2 뷰와 연관된 제2 픽셀-처리된 데이터(335)에 대해 또는 이와 관련하여 결정이 이루어진다. 이 결정은 제1 픽셀-처리된 데이터(330)를 제2 픽셀-처리된 데이터(335)로서 사용할지 또는 픽셀 처리 스테이지(310)에서 제2 프리미티브 데이터(325)를 처리하여 제2 픽셀-처리된 데이터(335)를 생성할지 여부에 대해 이루어진다. 이 결정은, 프리미티브 생성 스테이지(305)에서, 픽셀 처리 스테이지(310)에서 또는 그 밖에 예를 들어 프리미티브 생성 스테이지(305)와 픽셀 처리 스테이지(310) 중간의 하나 이상의 스테이지에서 이루어질 수 있다. 이 결정은 제1 프리미티브 데이터(320) 및/또는 제2 프리미티브 데이터(325) 및/또는 제1 픽셀-처리된 데이터(330) 및/또는 하나 이상의 다른 데이터 항목을 분석하는 것에 의해 이루어질 수 있다. 일부 예에서, 제1 프리미티브 데이터(320)가 제1 픽셀-처리된 데이터(330)를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리되기 전에 제2 픽셀-처리된 데이터(335)에 대해 결정이 이루어진다. 다른 예에서, 제1 프리미티브 데이터(320)가 제1 픽셀-처리된 데이터(330)를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리된 후에 제2 픽셀-처리된 데이터(335)에 대해 결정이 이루어진다.
일부 예에서, 제2 픽셀-처리된 데이터(335)에 대한 결정은 예를 들어 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 사이의 유사성의 정도를 평가하기 위해 제1 프리미티브 데이터(320)를 제2 프리미티브 데이터(325)와 비교함으로써 이루어진다. 다른 예에서, 제2 픽셀-처리된 데이터(335)에 대한 결정은 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 사이의 유사성의 정도의 지시를 포함하는 데이터를 검사함으로써 이루어진다. 유사성의 정도의 지시를 포함하는 데이터는 제1 픽셀-처리된 데이터(330)가 제2 픽셀-처리된 데이터(335)로서 사용될 수 있을 만큼 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325)가 충분히 유사한지 여부를 나타낼 수 있다는 점에서 바이너리 데이터일 수 있다. 유사성의 정도의 지시를 포함하는 데이터는 제2 픽셀-처리된 데이터(335)에 대한 결정을 수행하는 엔티티(entity) 또는 프로세스와는 상이한 그래픽 처리 파이프라인(300) 내 엔티티 또는 프로세스에 의해 생성될 수 있다. 예를 들어, 제2 픽셀-처리된 데이터(335)에 대한 결정은 픽셀 처리 스테이지(310)에서 이루어질 수 있고, 유사성의 정도의 지시를 포함하는 데이터는 프리미티브 생성 스테이지(305)에서 생성되거나 또는 프리미티브 생성 스테이지(305)와 픽셀 처리 스테이지(310) 중간의 하나 이상의 스테이지에서 생성될 수 있다.
일부 예에서, 제1 픽셀-처리된 데이터(330)가 제2 픽셀-처리된 데이터(335)로서 사용되는 것으로 결정된다. 이러한 예에서, 제1 픽셀-처리된 데이터(330)는 파선 화살표(340)로 도시된 바와 같이 제2 픽셀-처리된 데이터(335)로서 사용된다.
일부 예에서, 제1 픽셀-처리된 데이터(330)를 제2 픽셀-처리된 데이터(335)로서 사용하는 것은 상기 제1 픽셀-처리된 데이터(330)를 제1 뷰와 연관된 하나 이상의 메모리 위치에 기록하는 단계, 상기 제1 뷰와 연관된 하나 이상의 메모리 위치로부터 상기 제1 픽셀-처리된 데이터(330)를 판독하는 단계, 및 상기 제1 픽셀-처리된 데이터(330)를 제2 뷰와 연관된 하나 이상의 메모리 위치에 기록하는 단계를 포함한다.
상기 제1 픽셀-처리된 데이터(330)를 제1 뷰와 연관된 하나 이상의 메모리 위치에 기록하는 단계는 헤더 데이터 및 페이로드 데이터를 생성하는 단계, 및 상기 헤더 데이터 및 페이로드 데이터를 상기 제1 뷰와 연관된 하나 이상의 메모리 위치에 저장하는 단계를 포함할 수 있다. 상기 헤더 데이터는 상기 페이로드 데이터를 가리킬 수 있으며, 상기 페이로드 데이터가 저장된, 상기 제1 뷰와 연관된 하나 이상의 메모리 위치의 하나 이상의 부분과 상이한, 상기 제1 뷰와 연관된 하나 이상의 메모리 위치의 하나 이상의 부분에 저장될 수 있다.
도 4를 참조하면, 데이터 저장 배열(400)의 일례가 개략적으로 도시되어 있다. 이 예에서, 헤더 데이터(405)는 페이로드 데이터(410)를 가리킨다. 예를 들어, 제1 헤더 데이터(H1)는 대응하는 제1 페이로드 데이터(B1)를 가리키고, 제2 헤더 데이터(H2)는 대응하는 제2 페이로드 데이터(B2)를 가리키고 이와 같이 계속된다.
이제 도 3을 다시 참조하면, 상기 제1 뷰와 연관된 하나 이상의 메모리 위치로부터 제1 픽셀-처리된 데이터(330)를 판독하는 단계는 상기 제1 픽셀-처리된 데이터(330)와 연관된 헤더 데이터를 식별하는 단계, 및 이후 상기 헤더 데이터의 포인터에 기초하여 상기 페이로드 데이터에 액세스하는 단계를 포함할 수 있다. 상기 제1 픽셀-처리된 데이터(330)와 연관된 헤더 데이터를 식별하는 단계는 상기 제1 뷰와 관련하여 상기 제1 픽셀-처리된 데이터(330)의 논리적 위치에 기초할 수 있다. 예를 들어, 상기 제1 픽셀-처리된 데이터(330)가 그래픽 처리 파이프라인(300)의 출력 내의 타일에 대응하는 경우, 출력에서 대응하는 타일의 위치는 헤더 데이터가 저장된 메모리 위치(들)에 매핑(map)될 수 있다. 마찬가지로, 출력 내 타일들에 대응하는 제1 뷰와 연관된 다른 픽셀-처리된 데이터는 그 연관된 헤더 데이터가 저장된 메모리 위치(들)에 매핑될 수 있다.
상기 제1 픽셀-처리된 데이터(330)를 상기 제2 뷰와 연관된 하나 이상의 메모리 위치에 기록하는 단계는 헤더 데이터 및 페이로드 데이터를 생성하는 단계, 및 상기 헤더 데이터 및 페이로드 데이터를 상기 제2 뷰와 연관된 하나 이상의 메모리 위치에 저장하는 단계를 포함할 수 있다. 상기 헤더 데이터는 페이로드 데이터를 가리킬 수 있고, 상기 페이로드 데이터가 저장된, 상기 제2 뷰와 연관된 하나 이상의 메모리 위치의 하나 이상의 부분과 상이한, 상기 제2 뷰와 연관된 하나 이상의 메모리 위치의 하나 이상의 부분에 저장될 수 있다.
그리하여, 제1 픽셀-처리된 데이터(330)는 사실상 제2 픽셀-처리된 데이터(335)로서 재사용된다.
일부 예에서, 제1 뷰와 연관된 하나 이상의 메모리 위치 및 제2 뷰와 연관된 하나 이상의 메모리 위치는 메모리에서 순차적이거나 또는 적어도 부분적으로 순차적이다. 이것은 제1 뷰와 연관된 하나 이상의 메모리 위치 및 제2 뷰와 연관된 하나 이상의 메모리 위치가 메모리에서 비-순차적인 것에 비해 메모리 액세스를 상대적으로 효율적이게 한다. 픽셀 셔플링(shuffling)으로 인해, 픽셀들은 순차 메모리 위치에 저장될 때 원래의 픽셀-레벨 좌표의 관점에서 엄격히 순차적인 순서로 있지 않을 수 있다. 예를 들어 SDRAM(Synchronous Dynamic Random-Access Memory) 및 DDR SDRAM(Double Data Rate SDRAM)에서 순차 메모리 액세스는 비-순차 액세스보다 효율적이다. 저장된 데이터가 메모리 관리 디바이스(memory management unit: MMU) 페이지에 더 나은 국부성(locality)을 가지기 때문에 변환 색인 버퍼(translation lookaside buffer: TLB)의 캐싱이 향상될 수도 있다.
그러나, 전술된 예들에서, 제1 픽셀-처리된 데이터(330)는 여전히 하나 이상의 메모리 위치에 기록되고, 하나 이상의 메모리 위치로부터 판독되고, 이후 하나 이상의 다른 메모리 위치에 기록된다.
다른 예에서, 상기 제1 픽셀-처리된 데이터(330)를 상기 제2 픽셀-처리된 데이터(335)로서 사용하는 것은 상기 제1 픽셀-처리된 데이터(330)를 상기 제1 뷰와 연관된 하나 이상의 메모리 위치에 기록하는 단계, 상기 제1 뷰와 연관된 하나 이상의 메모리 위치에 대한 포인터를 포함하는 데이터를 생성하는 단계, 및 상기 포인터를 포함하는 데이터를 상기 제2 뷰와 연관된 하나 이상의 메모리 위치에 저장하는 단계를 포함한다.
상기 제1 픽셀-처리된 데이터(330)를 상기 제1 뷰와 연관된 하나 이상의 메모리 위치에 기록하는 단계는, 헤더 데이터 및 페이로드 데이터를 생성하고, 상기 헤더 데이터 및 상기 페이로드 데이터를 상기 제1 뷰와 연관된 하나 이상의 메모리 위치에 저장하는 것에 의해 상기와 같이 수행될 수 있다.
그러나, 제1 뷰와 연관된 하나 이상의 메모리 위치로부터 제1 픽셀-처리된 데이터(330)를 판독하고, 제1 픽셀-처리된 데이터(330)를 제2 뷰와 연관된 하나 이상의 메모리 위치에 기록하는 것이 아니라, 상기 제2 뷰와 연관된 추가적인 헤더 데이터가 생성되어, 제2 뷰와 연관된 하나 이상의 메모리 위치에 저장될 수 있다. 추가적인 헤더 데이터는 제1 픽셀-처리된 데이터(330)와 연관된 기존의 페이로드 데이터를 가리키거나, 또는 제1 뷰와 연관된 메모리 위치(들)에서 제1 픽셀-처리된 데이터(330)와 연관된 기존의 페이로드 데이터와 연관된 헤더 데이터를 가리킬 수 있다. 그리하여, 제1 픽셀-처리된 데이터(330)와 연관된 페이로드 데이터는 제1 뷰와 연관된 메모리 위치(들)에 한번 기록되고, 판독되지 않고 제2 뷰와 연관된 메모리 위치(들)에 재기록된다. 이것은 연관된 판독 및 기록 동작을 절감한다. 따라서, 제1 픽셀-처리된 데이터(330)와 연관된 페이로드 데이터는 2개의 상이한 포인터, 즉 제1 뷰와 연관된 메모리 위치(들)에 저장된 헤더 데이터 내 포인터, 및 제2 뷰와 연관된 메모리 위치(들)에 저장된 헤더 데이터 내 포인터와 연관된다. 제1 픽셀-처리된 데이터(330)는 필요할 때 제2 뷰와 연관된 메모리 위치(들)에 저장된 헤더 데이터를 사용하여 판독될 수 있다.
도 5를 참조하면, 데이터 저장 배열(500)의 일례가 개략적으로 도시된다. 이 예에서, 제1 뷰와 연관된 헤더 데이터(505)는 제1 뷰와 연관된 페이로드 데이터(510)를 가리킨다. 예를 들어, 제1 뷰와 연관된 제1 헤더 데이터(LH1)는 제1 뷰와 연관된 대응하는 제1 페이로드 데이터(LB1)를 가리키고, 제1 뷰와 연관된 제2 헤더 데이터(LH2)는 제1 뷰와 연관된 대응하는 제2 페이로드 데이터(LB2)를 가리키고, 이와 같이 계속된다.
이 예에서, 제2 뷰와 연관된 일부 헤더 데이터(515)는 파선 화살표(520)로 도시된 바와 같이, 제1 뷰와 연관된 페이로드 데이터(510)를 가리킨다. 이 예에서, 화살표(520)는 공유된 페이로드 참조를 나타낸다. 예를 들어, 제2 뷰와 연관된 제4 헤더 데이터(RH4)는 제1 뷰와 연관된 대응하는 제4 페이로드 데이터(LB4)를 가리키고, 제2 뷰와 연관된 제6 헤더 데이터(RH6)는 제1 뷰와 연관된 대응하는 제6 페이로드 데이터(LB6)를 가리킨다.
또한, 이 예에서, 제2 뷰와 연관된 다른 헤더 데이터(515)는 제2 뷰와 연관된 페이로드 데이터(525)를 가리킨다. 예를 들어, 제2 뷰와 연관된 제1 헤더 데이터(RH1)는 제2 뷰와 연관된 제1 페이로드 데이터(RB1)를 가리키고, 제2 뷰와 연관된 제7 헤더 데이터(RH7)는 제2 뷰와 연관된 대응하는 제7 페이로드 데이터(RB7)를 가리킨다.
이제 도 3을 다시 참조하면, 일부 예에서, 제1 프리미티브 데이터(320)가 제2 픽셀-처리된 데이터(335)로서 사용되는 경우, 제2 프리미티브 데이터(325)는 제2 픽셀-처리된 데이터를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리되지 않는다. 그리하여, 제2 픽셀-처리된 데이터(335)를 생성하기 위해 픽셀 처리 스테이지(310)에서 제2 프리미티브 데이터(325)를 처리하는 것과 연관된 오버헤드가 바이패스된다.
다른 예에서, 제2 프리미티브 데이터(325)가 제2 픽셀-처리된 데이터(335)를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리되는 것으로 결정된다. 이러한 예에서, 제1 프리미티브 데이터(320)는 제2 픽셀-처리된 데이터(335)로서 사용되지 않는다. 대신에, 이러한 예에서, 제2 프리미티브 데이터(325)는 파선-점선 화살표(345)로 도시된 바와 같이 제2 픽셀-처리된 데이터(335)를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리된다.
일부 예에서, 제2 픽셀-처리된 데이터(335)에 대한 결정은 제1 프리미티브 데이터(320)의 하나 이상의 기하학적 특성 및/또는 제2 프리미티브 데이터(325)의 하나 이상의 기하학적 특성에 기초한다.
제1 프리미티브 데이터(320) 및/또는 제2 프리미티브 데이터(325)는 하나 이상의 프리미티브를 식별, 설명 및/또는 한정하는 데이터를 포함한다. 제1 프리미티브 데이터(320) 및/또는 제2 프리미티브 데이터(325)는 공통적인 (또는 '공유된') 다중 뷰 타일 리스트에 포함될 수 있지만, 후술된 바와 같이, 이들 프리미티브 데이터는 비-다중 뷰 배열에 별도의 타일 리스트로 포함될 수 있다. 하나 이상의 기하학적 특성은 제1 프리미티브 데이터(320) 및/또는 제2 프리미티브 데이터(325)에서 식별, 설명 및/또는 한정된 하나 이상의 프리미티브와 관련될 수 있다.
일부 예에서, 하나 이상의 기하학적 특성은 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 중 하나 프리미티브 데이터의, 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 중 다른 프리미티브 데이터의 특성에 관련된 특성을 포함한다. 이러한 특성은 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325) 모두에 기초한다는 점에서 상대적인 기하학적 특성인 것으로 고려될 수 있다. 이것은 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 중 하나 또는 다른 하나에는 기초하지만 이들 둘 다에 기초하지는 않는 절대적인 특성과는 대조적이다. 상대적인 특성을 사용하는 것은 하나 이상의 기하학적 특성을 식별하는 것을 용이하게 할 수 있고, 여기서, 예를 들어, 이러한 식별을 수행하는 엔티티 또는 프로세스는 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)의 둘 모두에 액세스를 가질 수 있다. 이것은, 예를 들어, 다중 뷰 처리가 이용 가능한 경우일 수 있다.
일부 예에서, 하나 이상의 기하학적 특성은 미리 결정된 시차 특성을 포함한다. 시차 특성은 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325) 모두로부터 온 정보를 사용하여 시차의 척도(measure)가 결정된다는 점에서 상대적인 기하학적 특성의 예이다. 미리 결정된 시차 특성을 갖는 것은, 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)에서의 임의의 프리미티브들 사이의 시차가 제로이거나, 또는 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325) 내의 프리미티브들 사이에 차이가 없거나, 또는 제1 픽셀-처리된 데이터(330)를 제2 픽셀-처리된 데이터(335)로서 사용하여도 여전히 장면의 수용 가능한 표현을 생성하면서 사용자 경험을 손상시키지 않을 만큼 임의의 차이가 충분히 작다는 것을 의미할 수 있다.
일부 예에서, 제1 픽셀-처리된 데이터(330)가 제2 픽셀-처리된 데이터(335)로서 사용되는 것으로 결정하는 것은 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 미리 결정된 시차 특성을 갖는다고 식별된 것에 응답하여 이루어진다. 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 미리 결정된 시차 특성을 갖는 경우, 픽셀 처리 스테이지(310)에서 제2 프리미티브 데이터(325)를 처리함으로써 생성된 제2 픽셀-처리된 데이터(335)는 제1 프리미티브 데이터(330)와 동일하거나 실질적으로 동일할 수 있다. 그리하여 제1 픽셀-처리된 데이터(330)는 제2 픽셀-처리된 데이터(335)로서 사용된다.
일부 예에서, 제2 프리미티브 데이터(325)가 제2 픽셀-처리된 데이터(335)를 생성하기 위해 픽셀 처리 스테이지(320)에서 처리되는 것으로 결정하는 것은 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 미리 결정된 시차 특성을 갖지 않는다고 식별된 것에 응답하여 이루어진다. 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 미리 결정된 시차 특성을 갖지 않는 경우, 픽셀 처리 스테이지(310)에서 제2 프리미티브 데이터(325)를 처리함으로써 생성된 제2 픽셀-처리된 데이터(335)는 제1 픽셀-처리된 데이터(330)와 동일하지 않거나 이와 충분히 유사하지 않을 수 있다. 그리하여, 제1 픽셀-처리된 데이터(330)는 제2 픽셀-처리된 데이터(335)로서 사용되지 않고, 제2 프리미티브 데이터(325)가 제2 픽셀-처리된 데이터(335)를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리된다.
일부 예에서, 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 미리 결정된 시차 특성을 갖는지 여부를 식별하는 것은 제1 프리미티브 데이터(320) 내의 임의의 프리미티브들 및 제2 프리미티브 데이터(325) 내의 임의의 대응하는 프리미티브들과 연관된 시차의 척도에 기초한다. 전술된 바와 같이, 시차 척도는 제1 픽셀-처리된 데이터(330)가 제2 픽셀-처리된 데이터(335)로서 사용될 수 있는 범위를 나타낼 수 있다.
일부 예에서, 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 미리 결정된 시차 특성을 갖는지 여부를 식별하는 것은 제1 프리미티브 데이터(320) 내의 프리미티브들의 정점들의 위치를, 제2 프리미티브 데이터(325) 내의 대응하는 프리미티브들의 대응하는 정점들의 위치와 비교하는 것에 기초한다. 이것은 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 미리 결정된 시차 특성을 갖는지 여부의 결정을 용이하게 한다.
일부 예에서, 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 미리 결정된 시차 특성을 갖는 것으로 식별하는 것은 제1 프리미티브 데이터(320) 내의 프리미티브들의 정점들의 위치와 제2 프리미티브 데이터(325) 내의 대응하는 프리미티브들의 대응하는 정점들의 위치 사이의 하나 이상의 오프셋이 하나 이상의 미리 결정된 오프셋 스레시홀드를 초과하지 않는다고 결정된 것에 응답하여 이루어진다.
미리 결정된 오프셋 스레시홀드는 이 스레시홀드 미만에서는 제1 픽셀-처리된 데이터(330)가 제2 픽셀-처리된 데이터(335)로서 사용될 수 있을 만큼 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 충분히 유사한 것으로 고려될 수 있는 허용 가능한 유사성의 정도 또는 척도를 나타내는데 사용될 수 있다.
일부 예에서, 미리 결정된 오프셋 스레시홀드는 0이다. 이러한 예들은 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325) 내의 프리미티브들 사이에 오프셋이 존재하지 않을 것을 요구한다. 이것은 임의의 이러한 프리미티브들이 모두 장면의 관찰자로부터 무한대 거리에 있어서 제1 픽셀-처리된 데이터(330)가 제2 픽셀-처리된 데이터(335)로서 사용될 수 있는 것을 가리킬 수 있다.
일부 예에서, 미리 결정된 오프셋 스레시홀드는 0이 아니다. 이러한 예들은 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325) 내의 프리미티브들 사이에 약간의 오프셋을 허용한다. 이것은 임의의 이러한 프리미티브들이 모두 장면의 관찰자로부터 실질적으로 무한대 거리에 있거나, 또는 제1 픽셀-처리된 데이터(330)가 제2 픽셀-처리된 데이터(335)로서 사용될 수 있을 만큼 관찰자로부터 충분히 멀리 있는 것을 가리킬 수 있다.
일부 예에서, 미리 결정된 오프셋 스레시홀드는 정점 스냅핑(vertex snapping)을 고려하도록 선택된 미리 결정된 에러 마진 오프셋 스레시홀드이다. 미리 결정된 에러 마진 오프셋이 0이 아닌 경우에도, 정점 위치들이 모두 동일한 하위-픽셀 위치로 스냅핑하는 경우, 예를 들어, 그래픽 API가 정점 스냅핑을 사용하는 경우, 제1 픽셀-처리된 데이터(330)를 제2 픽셀-처리된 데이터(335)로서 사용하는 것이 가능할 수 있다.
일부 예에서, 상기 미리 결정된 오프셋 스레시홀드는 안구간 시프트(interocular shift)를 고려하도록 선택된 미리 결정된 안구간 오프셋 스레시홀드이다. 일부 예에서, 안구간 시프트가 있는지 여부, 즉, 프리미티브들 사이의 분리가 프리미티브들이 무한대 거리에 있지 않은 결과로 인한 것이 아니라, 안구간 분리(interocular separation)의 결과로 인한 것인지 여부를 결정하기 위해 에뮬레이션(emulation)이 수행될 수 있다. 안구간 분리는 디바이스 또는 장면 카메라 설정이 주어진 경우 다른 뷰에 비해 하나의 뷰의 좌표에 대한 고정된 오프셋에 대응할 수 있다.
유사성을 결정할 때, 미리 결정된 안구간 오프셋 스레시홀드가 먼저 사용될 수 있고, 미리 결정된 에러 마진 오프셋 스레시홀드가 이후 사용될 수 있다. 유사성에 대한 미리 결정된 안구간 오프셋 스레시홀드는 예를 들어 다수의 픽셀에 대응할 수 있고, 유사성에 대한 미리 결정된 에러 마진 오프셋 스레시홀드는 예를 들어 하위-픽셀 레벨에서 더 작을 수 있다.
일부 예에서, 하나 이상의 기하학적 특성은 제1 프리미티브 데이터(320) 및/또는 제2 프리미티브 데이터(325)의 절대적인 특성을 포함한다. 기하학적 특성은 제1 프리미티브 데이터(320) 및/또는 제2 프리미티브 데이터(325) 중 다른 것을 참조함이 없이 제1 프리미티브 데이터(320) 및/또는 제2 프리미티브 데이터(325)를 검사함으로써 식별될 수 있다는 점에서 절대적일 수 있다. 예를 들어, 제1 프리미티브 데이터(320)를 검사하고 제2 프리미티브 데이터(325)를 검사하지 않음으로써 제1 프리미티브 데이터(320)가 절대적인 특성을 갖는지 여부가 결정될 수 있다. 이것은 예를 들어 이러한 식별을 수행하는 엔티티 또는 프로세스가 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325) 모두에 액세스를 갖지 않는 경우 하나 이상의 기하학적 특성의 식별을 용이하게 할 수 있다. 이것은, 예를 들어, 다중 뷰 처리가 이용 가능하지 않거나 가능하지 않은 경우일 수 있다.
일부 예에서, 하나 이상의 기하학적 특성은 무한대 거리 특성을 포함한다. 무한대 거리 특성은 제1 프리미티브 데이터(320)에서 식별되고, 설명되고 및/또는 한정된 하나 이상의 기하학적 특성 및/또는 제2 프리미티브 데이터(325)에서 식별되고, 설명되고/또는 한정된 하나 이상의 기하학적 특성이 관찰자로부터 충분히 멀리 떨어져 있어, 임의의 이러한 프리미티브들이 두 뷰에 존재하는 경우 이들 프리미티브가 0의 시차를 갖거나 또는 한 번만 렌더링해도 될 만큼 충분히 작은 시차를 가질 수 있는 것으로 고려될 수 있는 범위와 관련될 수 있다.
일부 예에서, 제1 픽셀-처리된 데이터(320)가 제2 픽셀-처리된 데이터(335)로서 사용되는 것으로 결정하는 것은 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 모두 무한대 거리 특성을 갖는다고 식별된 것에 응답하여 이루어진다. 제1 프리미티브 데이터(320) 및 제2 프리미티브 데이터(325)가 모두 무한대 거리 특성을 갖는 경우, 픽셀 처리 스테이지(310)에서 제2 프리미티브 데이터(325)를 처리함으로써 생성된 제2 픽셀-처리된 데이터(335)는 제1 픽셀-처리된 데이터(330)와 동일할 수 있다. 그리하여 제1 픽셀-처리된 데이터(330)는 제2 픽셀-처리된 데이터(335)로서 사용된다.
일부 예에서, 제2 프리미티브 데이터(325)가 제2 픽셀-처리된 데이터(335)를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리되는 것으로 결정하는 것은 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 중 하나 또는 둘 모두가 무한대 거리 특성을 갖지 않는다고 식별된 것에 응답하여 이루어진다. 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 중 하나 또는 둘 모두가 무한대 거리 특성을 갖지 않는 경우, 픽셀 처리 스테이지(310)에서 제2 프리미티브 데이터(325)를 처리함으로써 생성된 제2 픽셀-처리된 데이터(335)는 제1 픽셀-처리된 데이터(330)와 동일하지 않을 수 있다. 그리하여 제1 픽셀-처리된 데이터(330)는 제2 픽셀-처리된 데이터(335)로서 사용되지 않고, 제2 프리미티브 데이터(325)는 제2 픽셀-처리된 데이터(335)를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리된다.
일부 예에서, 제1 프리미티브 데이터(320) 및/또는 제2 프리미티브 데이터(325)가 무한대 거리 특성을 갖는 것을 식별하는 것은 제1 프리미티브 데이터(320) 내의 하나 이상의 프리미티브와 연관된 클립-공간(clip-space)(Z) 값, 및/또는 제2 프리미티브 데이터(325) 내의 하나 이상의 프리미티브들과 연관된 클립-공간(Z) 값이 미리 결정된 클립-공간(Z) 값 스레시홀드를 초과한다고 결정된 것에 응답하여 이루어진다. 이러한 예에서, 하나 이상의 프리미티브는 관찰자로부터 무한대 거리에 있는 것으로 간주될 수 있을 만큼 관찰자로부터 충분히 멀리 떨어져 있는 것으로 고려될 수 있다. 일부 예에서, 미리 결정된 클립-공간(Z) 값 스레시홀드는, 사용자에 의해, 예를 들어, 그래픽 처리 시스템 운영자 및/또는 컨텐츠 생성자 및/또는 관찰자에 의해, 설정, 구성 또는 한정될 수 있다는 점에서 사용자-구성 가능하다. 예를 들어, 미리 결정된 클립-공간(Z) 값 스레시홀드는 미리 결정된 클립-공간(Z) 값 스레시홀드를 초과하는 모든 프리미티브가 동일한 것으로 고려되도록 원하는 유사성의 정도에 기초하여 설정될 수 있다. 다른 예에서, 미리 결정된 클립-공간(Z) 값 스레시홀드는 자동으로 설정된다.
일부 예에서, 제1 프리미티브 데이터(320)의 하나 이상의 기하학적 특성 및/또는 제2 프리미티브 데이터(325)의 하나 이상의 기하학적 특성은 기하학적 유사성 특성을 포함한다. 기하학적 유사성 특성은 제1 프리미티브 데이터(320)에서 식별, 설명 및/또는 한정된 하나 이상의 프리미티브 및/또는 제2 프리미티브 데이터(325)에서 식별, 설명 및/또는 한정된 하나 이상의 프리미티브 사이의 기하학적 유사성의 척도 또는 범위와 관련될 수 있다. 기하학적 유사성의 척도는 프리미티브의 크기, 형상, 배향, 위치, 유형 등과 연관될 수 있다.
제1 픽셀-처리된 데이터(330)가 제2 픽셀-처리된 데이터(335)로서 사용되는 것으로 결정하는 것은 제1 프리미티브 데이터(320) 내의 임의의 프리미티브가 제2 프리미티브 데이터(325) 내의 임의의 프리미티브와 동일하거나 실질적으로 동일하다고 식별된 것에 응답하여 이루어질 수 있다. 제1 프리미티브 데이터(320) 내의 임의의 프리미티브가 제2 프리미티브 데이터(325) 내의 임의의 프리미티브와 동일한 경우, 픽셀 처리 스테이지(310)에서 제2 프리미티브 데이터(325)를 처리함으로써 생성된 제2 픽셀-처리된 데이터(335)는 제1 픽셀-처리된 데이터(330)와 동일할 수 있다. 그리하여 제1 픽셀-처리된 데이터(330)는 제2 픽셀-처리된 데이터(335)로서 사용된다. 관찰자가 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 중 다른 것 내의 임의의 프리미티브 대신에 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 중 하나의 것 내의 임의의 프리미티브를 사용한 것을 알아차리지 못하는 경우 제1 프리미티브 데이터(320) 내의 프리미티브들은 제2 프리미티브 데이터(325) 내 프리미티브와 실질적으로 동일한 것으로 고려될 수 있다. 이것은 픽셀 처리 스테이지(310)에서 제2 프리미티브 데이터(325)를 불필요하게 처리함으로써 제2 픽셀-처리된 데이터(335)를 생성하는 것과 연관된 오버헤드를 절감한다.
제2 프리미티브 데이터(325)가 제2 픽셀-처리된 데이터(335)를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리되는 것으로 결정하는 것은, 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 중 하나 또는 둘 모두가 제1 프리미티브 데이터(320)와 제2 프리미티브 데이터(325) 중 다른 것 내의 프리미티브와 동일하지 않거나 실질적으로 동일하지 않은 적어도 하나의 프리미티브를 갖는다고 식별된 것에 응답하여 이루어질 수 있다. 제1 프리미티브 데이터(320) 내의 적어도 하나의 프리미티브가 제2 프리미티브 데이터(325) 내의 프리미티브와 동일하지 않거나 실질적으로 동일하지 않은 경우, 픽셀 처리 스테이지(310)에서 제2 프리미티브 데이터(325)를 처리함으로써 생성된 제2 픽셀-처리된 데이터(335)는 제1 픽셀-처리된 데이터(330)와 동일하지 않을 수 있다. 그리하여, 제1 픽셀-처리된 데이터(330)는 제2 픽셀-처리된 데이터(335)로서 사용되지 않고, 제2 프리미티브 데이터(325)는 제2 픽셀-처리된 데이터(335)를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리된다.
일부 예에서, 제1 프리미티브 데이터(320)가 기하학적 특성을 갖는지 여부 및/또는 제2 프리미티브 데이터(325)가 기하학적 특성을 갖는지 여부를 식별하는 것은 제1 프리미티브 데이터(320)와 연관된 기하학적 특성 지시자 및/또는 제2 프리미티브 데이터(325)와 연관된 기하학적 특성 지시자에 기초한다. 기하학적 특성 지시자(들)는 제1 프리미티브 데이터(320) 및/또는 제2 프리미티브 데이터(325)가 미리 결정된 시차 특성, 무한대 거리 특성 및/또는 기하학적 유사성 특성을 갖는지 여부를 나타낼 수 있다. 기하학적 특성 지시자(들)는 제2 픽셀-처리된 데이터(335)에 대한 결정을 수행하는 엔티티 또는 프로세스와는 상이한 엔티티 또는 프로세스에 의해 생성될 수 있다. 기하학적 특성 지시자(들)는 하나 이상의 타일 리스트에 저장될 수 있다. 제1 뷰와 연관된 하나 이상의 기하학적 특성 지시자는 제1 뷰와 연관된 하나 이상의 타일 리스트에 저장될 수 있고, 제2 뷰와 연관된 하나 이상의 기하학적 특성 지시자는 제2 뷰와 연관된 하나 이상의 별도의 타일 리스트에 저장될 수 있다. 대안적으로 또는 추가적으로, 제1 뷰와 연관된 하나 이상의 기하학적 특성 지시자 및 제2 뷰와 연관된 하나 이상의 기하학적 특성 지시자는 제1 뷰 및 제2 뷰 모두와 연관된 공통 (또는 '공유된') 다중 뷰 타일 리스트에 저장될 수 있다.
일부 예에서, 기하학적 특성 지시자(들)의 값은 사용자-구성 가능할 수 있다. 예를 들어, 이 값은 그래픽 처리 시스템 운영자 및/또는 그래픽 컨텐츠 생성자 및/또는 관찰자에 의해 수동으로 주석(annotation)을 다는 것에 의해 사용자에 의해 설정될 수 있다. 다른 예에서, 무한대 거리 특성 지시자(들)의 값은 자동으로 설정된다.
추가적인 처리는, 제2 픽셀-처리된 데이터(335)에 대한 결정 결과에 기초하여, 그래픽 처리 파이프라인(300) 내 추가적인 처리 스테이지(315)에서 수행된다. 추가적인 처리의 예는 하나 이상의 메모리 위치에 라이트아웃(write-out)하는 것이다. 하나 이상의 메모리 위치는 하나 이상의 버퍼 내에 있을 수 있다. 하나 이상의 버퍼는 하나 이상의 프레임 버퍼 내에 있을 수 있다.
일부 예에서, 예를 들어, 타일 기반 렌더링이 수행되는 경우, 제1 프리미티브 데이터(320)는 제1 뷰의 하위-구역과 연관되고, 제2 프리미티브 데이터(325)는 제2 뷰의 대응하는 하위-구역과 연관된다. 하위-구역들은 전술된 바와 같이 타일에 대응할 수 있다. 예를 들어, 각 타일은 16x16 픽셀 크기일 수 있다. 타일들은 집합적으로, 출력될 전체 이미지에 대응하는 규칙적인 그리드(regular grid) 또는 어레이를 형성한다. GPU는 전체 이미지를 전체적으로 렌더링하는 것이 아니라 각 타일을 개별적으로 렌더링할 수 있다. 이를 통해 GPU는 외부 오프-칩(off-chip) 메모리로 렌더링하는 것이 아니라 온-칩 메모리로 타일 단위로 렌더링할 수 있다. 주어진 타일에 대한 렌더링이 완료되면, 이 타일이 오프-칩 메모리에 기록될 수 있고, 그 다음 타일이 GPU에 의해 온-칩 메모리에 렌더링될 수 있다. 다수의 그래픽 처리 파이프라인을 병렬로 사용하여 타일을 병렬로 렌더링할 수 있다.
다른 예에서, 제1 프리미티브 데이터(320)는 전체 제1 뷰와 연관되고, 제2 프리미티브 데이터(325)는 전체 제2 뷰와 연관된다. 이것은 타일 기반 렌더링이 사용되지 않는 경우 및 제2 뷰가 전체적으로 처리되는 경우일 수 있다.
일부 예에서, 추가적인 제1 프리미티브 데이터는 제1 뷰의 적어도 하나의 추가적인 하위-구역과 연관되고, 추가적인 제2 프리미티브 데이터는 제2 뷰의 적어도 하나의 대응하는 추가적인 하위-구역과 연관된다. 추가적인 하위-구역은 추가적인 타일에 대응할 수 있다.
일부 예에서, 추가적인 제1 프리미티브 데이터는 제1 뷰와 연관된 추가적인 제1 픽셀-처리된 데이터를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리된다. 제2 뷰와 연관된 추가적인 제2 픽셀-처리된 데이터에 대해, 추가적인 제1 픽셀-처리된 데이터를 추가적인 제2 픽셀-처리된 데이터로서 사용할지 또는 픽셀 처리 스테이지(310)에서 추가적인 제2 프리미티브 데이터를 처리하여 추가적인 제2 픽셀-처리된 데이터를 생성할지 여부가 결정된다. 그리하여, 이 결정은 타일 단위로 이루어질 수 있다. 예를 들어, 일부 타일에 대해서는, 추가적인 제1 픽셀-처리된 데이터가 추가적인 제2 픽셀-처리된 데이터로 사용될 수 있고, 다른 타일에 대해서는 추가적인 제2 프리미티브 데이터가 추가적인 제2 픽셀-처리된 데이터를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리되는 것으로 결정될 수 있다.
일부 예에서, 처리는 제1 뷰와 연관된 데이터를 처리하는 것과 제2 뷰와 연관된 데이터를 처리하는 것을 교번하여 수행한다. 예를 들어, 제1 뷰와 연관된 타일이 처리되고 나서, 이어서 제2 뷰와 연관된 타일이 처리되고, 이어서 제1 뷰와 연관된 타일이 처리되는 방식으로 계속될 수 있다. 이러한 교번(또는 '인터리빙') 처리는 장면과 연관된 모든 타일이 처리될 때까지 계속될 수 있다. 이러한 교번 처리는 프리미티브 처리, 픽셀 처리 및/또는 추가적인 처리와 관련될 수 있다.
일부 예에서, 제1 뷰와 연관된 모든 제1 프리미티브 데이터는 제1 뷰와 연관된 모든 제1 픽셀-처리된 데이터를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리된다. 예를 들어, 타일 기반 렌더링이 사용되는 경우, 제1 뷰와 연관된 모든 타일이 제1 뷰와 연관된 모든 제1 픽셀-처리된 데이터를 생성하기 위해 픽셀 처리 스테이지(310)에서 처리될 수 있다.
도 6을 참조하면, 그래픽 처리 파이프라인(600)의 일례가 개략적으로 도시된다.
이 예에서, 그래픽 처리 파이프라인(600)은 다중 뷰 처리를 사용하여 제1 뷰 및 제2 뷰에 대한 정점 셰이딩을 동시에 수행한다. 이 예에서, 제1 뷰는 관찰자의 좌안과 연관되고, 제2 뷰는 관찰자의 우안과 연관된다. 이 예에서, 그래픽 처리 파이프라인(600)은 전술된 바와 같이 타일 단위로 렌더링이 수행되는 타일 기반 렌더링을 사용한다.
이 예에서, 그래픽 처리 파이프라인(600)은 다중 뷰 가능 타일 리스트 데이터 구조를 사용하여 프리미티브 데이터를 GPU에 제공한다. 다중 뷰 셰이딩 및 타일링 프로세스는 좌안 뷰 및 우안 뷰 내의 프리미티브들, 예를 들어, 삼각형들을 동시에 볼 수 있는 능력을 가진다. 따라서, 이러한 프리미티브들이 좌안에 대해 렌더링될 수 있고 렌더링된 데이터가 우안에 대해 사용될 수 있는지, 또는 이러한 프리미티브들이 좌안 및 우안 모두에 대해 개별적으로 렌더링되어야 하는지 여부가 결정될 수 있다. 이러한 결정은 전술된 기하학적 특성, 예를 들어, 미리 결정된 시차 특성, 무한대 거리 특성 및/또는 기하학적 유사성 특성 중 하나 이상에 의존할 수 있다. 필요할 때만 렌더링하면 동일한 프리미티브들을 처리하는 것과 연관된 중복 프래그먼트 셰이더 코어 처리 비용을 절감할 수 있다.
이 예에서, 좌안 변환 데이터(605) 및 우안 변환 데이터(610)는 다중 뷰 정점 셰이더(615)에 제공된다. 좌안 변환 데이터(605) 및 우안 변환 데이터(610)는 장면의 좌안 뷰 및 우안 뷰를 구성하는데 사용될 수 있다. 다중 뷰 정점 셰이더(615)는, 예를 들어, 하나의 정점 데이터 스트림 및 2개의 매트릭스 스트림을 수신할 수 있는데, 여기서 하나의 매트릭스 스트림은 좌안과 연관되고, 다른 하나의 매트릭스 스트림은 우안과 연관된다. 다중 뷰 정점 셰이더(615)는 좌안과 연관된 정점 데이터 스트림 및 매트릭스를 사용하여 좌안 뷰에 대한 데이터를 생성할 수 있고, 우안과 연관된 동일한 정점 데이터 스트림 및 매트릭스를 사용하여 우안 뷰에 대한 데이터를 생성할 수 있다.
다중 뷰 정점 셰이더(615)는 다중 뷰 정점 셰이딩 스테이지에서 다중 뷰 정점 셰이딩을 수행한다. 다중 뷰 정점 셰이딩 스테이지는 프리미티브 생성 스테이지의 일례이다. 이 예에서, 다중 뷰 정점 셰이딩은 제1 프리미티브 데이터(620) 및 제2 프리미티브 데이터(625)를 동시에 생성하는 하나 이상의 다중 뷰 처리 동작을 수행하는 것을 포함한다. 다중 뷰 정점 셰이더(615)는 제1 프리미티브 데이터(620) 및 제2 프리미티브 데이터(625) 모두 내 프리미티브들, 예를 들어, 폴리곤들을 동시에 볼 수 있는 능력을 가진다.
이 예에서, 제1 프리미티브 데이터(620) 및 제2 프리미티브 데이터(625)는 다중 뷰 데이터 구조(630)에 포함된다. 이 예에서, 다중 뷰 데이터 구조(630)는 다중 뷰 타일 리스트이다. 다중 뷰 타일 리스트는 프리미티브 생성 스테이지에서 타일러에 의해 생성될 수 있다.
다중 뷰 정점 셰이더(615) 및/또는 다른 엔티티 또는 프로세스는, 예를 들어, 제1 프리미티브 데이터(620) 내의 프리미티브 및 제2 프리미티브 데이터(625) 내의 대응하는 프리미티브가 제로 시차이어서 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 제2 뷰와 연관된 제2 픽셀-처리된 데이터로서 사용할 수 있는지를 결정할 수 있다. 이것은, 예를 들어, 제1 프리미티브 데이터(620) 내의 모든 프리미티브들의 모든 정점들의 정점 위치들이 제2 프리미티브 데이터(625) 내의 모든 대응하는 프리미티브들의 모든 대응하는 정점들과 동일하거나 충분히 유사한지 여부를 결정하는 것을 수반할 수 있다.
다중 뷰 타일 리스트(630)는 제1 픽셀-처리된 데이터가 제2 픽셀-처리된 데이터로서 사용될 수 있는지 또는 사용되어야 하는지, 또는 제2 프리미티브 데이터(625)가 제2 픽셀-처리된 데이터를 생성하기 위해 픽셀 처리 스테이지에서 처리되어야 하는지 여부를 나타내는 하나 이상의 지시자를 포함할 수 있다.
이 예에서, 픽셀 처리 스테이지는 타일-방식으로 인터리빙된 프래그먼트 셰이더(635)를 포함한다.
단일-비트 지시자가 사용될 수 있다. 1의 비트 값은 제1 픽셀-처리된 데이터가 제2 픽셀-처리된 데이터로서 사용되어야 하는 것을 나타낼 수 있다. 0의 비트 값은 프래그먼트 셰이더(635)가 제2 픽셀-처리된 데이터를 생성하기 위해 제2 프리미티브 데이터(625)를 처리해야 하는 것을 나타낼 수 있다. 다중 뷰 정점 셰이더(615) 및/또는 하나 이상의 다른 엔티티 또는 프로세스는 지시자(들)의 값(들)을 설정할 수 있다. 지시자(들)의 값(들)은 제1 픽셀-처리된 데이터가 제2 픽셀-처리된 데이터로서 사용되어야 하는 것을 나타내는 초기 값으로 시작될 수 있지만, 제2 프리미티브 데이터(625)가 제2 픽셀-처리된 데이터를 생성하기 위해 예를 들어 프래그먼트 셰이더(635)에 의해 픽셀 처리 스테이지에서 처리되어야 하는 것을 나타내는 다른 값으로 설정될 수 있다.
프래그먼트 셰이더(635)는 프래그먼트-셰이딩 스테이지에서 타일-방식으로 인터리빙된 프래그먼트 셰이딩을 수행한다. 이 예에서, 프래그먼트 셰이더(635)는 다중 뷰 타일 리스트(630)의 데이터를 타일 방식으로 처리하도록 진행한다. 이 예에서, 타일 방식으로 데이터를 처리하는 것은 좌안과 연관된 데이터 및 우안과 연관된 데이터를 교대로 처리하는 것을 수반한다.
각 타일 위치에서, 프래그먼트 셰이더(635)는 다중 뷰 타일 리스트(630)로부터 각 타일 위치, 예를 들어, 폴리곤에 대한 모든 프리미티브를 판독한다. 이 예에서, 프래그먼트 셰이더(635)는 좌안만, 또는 좌안과 우안 모두에서 볼 수 있게 표시된 프리미티브들만을 렌더링한다.
그래픽 처리 파이프라인(600)은 좌안 오프-스크린(off-screen) 버퍼(640), 우안 오프-스크린 버퍼(645) 및 프론트 버퍼(650)를 포함하는 버퍼들의 세트를 포함한다. 오프-스크린 버퍼들은 또한 백 버퍼(back buffer)로도 알려져 있다. 백 버퍼와 프론트 버퍼를 모두 포함하는 이중-버퍼 배열은 이미지의 이중-버퍼링을 지원한다. 프론트 버퍼들이 스크린에 디스플레이되는 동안 픽셀들은 백 버퍼들로 유입된다. 백 버퍼들에서 이미지를 디스플레이할 준비가 되면 백 버퍼들의 내용(content)이 프론트 스크린 버퍼에 복사되어 스크린에 디스플레이된다. 이중-버퍼링은 보다 평활한 이미지 디스플레이를 촉진할 수 있다.
이 예에서, 프래그먼트 셰이더(635)는 좌안과 연관된 타일을 렌더링하고 좌안을 위한 프레임 버퍼 내용을 좌안 오프-스크린 버퍼(640)에 기록한다.
프래그먼트 셰이더(635)는, 우안을 위한 대응하는 타일에 대해, 이 타일에 대한 지시자의 비트 값이 1인지 또는 0인지를 결정한다.
이 타일에 대한 지시자의 비트 값이 1이면 좌안과 우안이 동일한 뷰를 보게 된다. 우안을 위한 프래그먼트 셰이딩은 완전히 스킵된다. 대신, 이 타일과 연관된 좌안 오프-스크린 프레임 버퍼(640) 내의 기존의 내용이 우안 오프-스크린 버퍼(645)에 기록된다.
이 타일에 대한 지시자의 비트 값이 0이면 좌안과 우안이 서로 다른 뷰를 보게 된다. 프래그먼트 셰이딩이 우안에 대해 수행된다. 이 타일과 연관된 좌안 오프-스크린 프레임 버퍼(640)의 기존의 내용이 우안 오프-스크린 버퍼(645)에 기록되지 않는다.
좌안 오프-스크린 프레임 버퍼(640) 및 우안 오프-스크린 버퍼(645) 모두로부터의 내용들이 프론트 버퍼(650)에 복사되고 헤드-추적 변환(655)이 적용될 수 있다.
프론트 버퍼(650)의 내용은 이후 판독되어 최종 온-스크린 렌더(on-screen render)(660)로서 디스플레이된다.
좌안 오프-스크린 버퍼(640)의 내용을 우안 오프-스크린 버퍼(645)에 기록하는 것으로 결정이 이루어질 수 있는 전술된 접근법은 동일한 타일들을 프래그먼트-셰이딩하는 중복 프래그먼트 셰이더 처리 비용을 절감한다.
그러나, 이 접근법은, 예를 들어, ARM 프레임 버퍼 압축(AFBC) 데이터 포맷을 사용하여 좌안 오프-스크린 버퍼(640)로부터 우안 오프-스크린 버퍼(650)로 내용을 기록하는 것과 연관된 중복 프레임 버퍼 기록 대역폭을 절감하기 위해 더 향상되거나 최적화될 수 있다. AFBC는 데이터를 헤더 블록으로 저장하고 이어서 바디 블록으로 저장한다. 헤더 블록은 메모리에서 연관된 바디 블록을 찾기 위해 어드레스 오프셋을 저장하는 포인터를 포함한다. 이 예에서, 좌안 오프-스크린 버퍼(640) 및 우안 오프-스크린 버퍼(645)는 순차적으로 또는 적어도 부분적으로 순차적으로 메모리에 저장된다. 우안 헤더는 두 눈이 동일한 데이터를 보는 경우 좌안 바디 블록 구역에 저장된 텍스처 데이터의 하나 이상의 블록에 대한 포인터를 포함한다. 일부 예에서, 우안 헤더는 좌안 바디 블록 구역에 정확한 오프셋을 저장한다. 다른 예에서, 우안 헤더는 어드레스 오프셋이 사용될 것을 나타내는 데이터, 예를 들어, 단일 비트를 저장한다. 어드레스 오프셋은 예를 들어 프래그먼트 셰이더(635) 내 또는 이와 연관된 텍스처 매핑 유닛에 별도로 제공될 수 있다.
도 7을 참조하면, 그래픽 처리 시스템을 동작시키는 방법(700)의 일례가 도시되어 있다. 이 예에서, 그래픽 처리 시스템은 도 6을 참조하여 전술된 그래픽 처리 파이프라인(600)을 포함한다.
항목(705)에서, 상기 방법이 시작된다.
항목(710)에서, 모든 폴리곤은 좌안 뷰 및 우안 뷰 모두에 대해 다중 뷰 타일 리스트(630)로부터 판독된다.
항목(715)에서, 동일_기하구조(identical_geom)로 언급된 단일-상태 비트 형태의 지시자가, 모든 프리미티브가 두 뷰에서 볼 수 있는 경우 1의 값을 갖도록 설정되고, 또는 적어도 하나의 프리미티브가 두 뷰 중 하나의 뷰에서만 볼 수 있는 경우 0의 값을 갖도록 설정된다.
항목(720)에서, 좌안에 대한 타일 버퍼 내용이 생성된다.
항목(725)에서, 좌안에 대한 타일 버퍼 내용이 좌안 오프-스크린 버퍼(640)에 기록된다.
항목(725)에서, 동일_기하구조 지시자의 현재 값이 1인지 여부가 결정된다.
항목(725)에서, 동일_기하구조 지시자의 현재 값이 1인 것으로 결정되면, 항목(735)에서, 좌안에 대한 기존의 타일 버퍼 내용이 우안 오프-스크린 버퍼(645)에 기록된다.
항목(725)에서, 동일_기하구조 지시자의 현재 값이 0이 아닌 것으로 결정되면, 항목(740)에서 우안에 대한 타일 버퍼 내용이 우안을 위한 프리미티브 데이터로부터 생성되고, 우안 오프-스크린 버퍼(645)에 기록된다.
항목(735) 또는 항목(740)에 이어오는 항목(745)에서, 방법이 종료된다.
도 8a 및 도 8b를 참조하면, 그래픽 처리 파이프라인(800)의 일례가 개략적으로 도시되어 있다.
그래픽 처리 파이프라인(800)은, 도 6 및 도 7을 참조하여 전술된 다중 뷰 타일 처리 특징을 지원하지 않아서, 좌측 뷰 및 우측 뷰 및 버퍼들을 개별적으로 그리고 독립적으로 처리하는 그래픽 처리 시스템에서 사용될 수 있다.
이 예에서, 좌안 변환 데이터(805) 및 우안 변환 데이터(810)는 각각 좌안 정점 셰이더(815) 및 우안 정점 셰이더(820)에 제공된다. 좌안 셰이더(815) 및 우안 셰이더(820)를 모두 포함하는 정점 셰이딩 스테이지는 프리미티브 생성 스테이지의 일례이다.
정점 셰이딩 스테이지는 좌안 뷰와 우안 뷰에서 무한대 거리 특성을 갖는 프리미티브가 어느 것인지를 검출한다. 이 예에서, 좌안 정점 셰이더(815)는 좌안 뷰에서 무한대 거리 특성을 갖는 프리미티브가 어느 것인지를 검출하고, 우안 정점 셰이더(820)는 우안 뷰에서 무한대 거리 특성을 갖는 프리미티브가 어느 것인지를 검출한다.
정점-셰이딩 스테이지의 출력은 하나 이상의 지시자를 포함하는 좌안 타일 리스트(825), 및 하나 이상의 지시자를 또한 포함하는 우안 타일 리스트(830)이다. 이 예에서 지시자는 연관된 타일이 무한대 거리 특성을 갖는지 여부를 나타내는 무한대 태그이다. 이 예에서, 좌안 정점 셰이더(815)는 하나 이상의 좌안 무한대 태그를 갖는 좌안 타일 리스트(825)를 출력하고, 우안 정점 셰이더(820)는 하나 이상의 우안 무한대 태그를 갖는 우안 타일 리스트(830)를 출력한다.
프래그먼트-셰이딩 스테이지는 렌더링 동안 타일 리스트(825, 830)로부터 무한대 태그를 판독하도록 적응된다. 프래그먼트-셰이딩 스테이지는 또한 타일을 눈-특정 버퍼에 기록하거나, 공유된 무한대 버퍼에 기록하는 것을 지원하거나, 또는 타일을 함께 폐기하도록 적응된다. 타일이 이미 다른 버퍼에 존재하는 경우 이 타일은 폐기될 수 있다. 기록될 출력 버퍼를 결정하는 것은, 현재 렌더링되고 있는 눈이 어느 쪽 눈인지, 및 렌더링되고 있는 현재 타일에 래스터화되고 있는 입력 프리미티브들의 무한대 태그 상태에 의존한다.
좌안 프래그먼트 셰이더(835)는 좌안 타일 리스트 및 무한대 태그(825)들을 판독한다. 우안 프래그먼트 셰이더(850)는 우안 타일 리스트 및 무한대 태그(830)들을 판독한다.
좌안 프래그먼트 셰이더(835)에 의해 현재 검사되고 있는 타일 내의 모든 프리미티브가 무한대에 있는 경우, 좌안 프래그먼트 셰이더(835)는 타일을 렌더링하고 이 타일을 부분 무한대 오프-스크린 버퍼(840)에 기록한다.
좌안 프래그먼트 셰이더(835)에 의해 현재 검사되고 있는 타일 내의 적어도 하나의 프리미티브가 무한대에 있지 않은 경우, 좌안 프래그먼트 셰이더(835)는 타일을 렌더링하고 이 타일을 부분 좌안 오프-스크린 버퍼(845)에 기록한다.
우안 프래그먼트 셰이더(850)에 의해 현재 검사되고 있는 타일의 모든 프리미티브가 무한대에 있고, 좌안 프래그먼트 셰이더(835)가 타일을 무한대 오프-스크린 버퍼(840)에 기록한 결과 무한대 오프-스크린 버퍼(840)가 대응하는 타일을 포함하면, 우안 프래그먼트 셰이더(850)는 타일을 렌더링하지 않는다. 대신, 이 타일은 무한대 오프-스크린 버퍼(840)로부터 판독된다.
우안 프래그먼트 셰이더(850)에 의해 현재 검사되고 있는 타일 내의 적어도 하나의 프리미티브가 무한대에 있지 않은 경우, 우안 프래그먼트 셰이더(850)는 타일을 렌더링하고 이 타일을 부분 우안 오프-스크린 버퍼(855)에 기록한다.
무한대 오프-스크린 버퍼(840), 좌안 오프-스크린 버퍼(845) 및/또는 우안 오프-스크린 버퍼(855)에 저장된 데이터를 식별하는 정보가 저장될 수 있다. 예를 들어, 어느 타일이 어느 버퍼에 기록되어 있는지를 추적하기 위해 메타데이터가 생성되고 그래픽 처리 파이프라인(800)에 저장될 수 있다. 이를 통해 우안 처리 스테이지들이 우안 렌더링을 처리하는 방법과 최종 이미지를 구성하는 최종 합성법(composition)을 결정할 수 있다.
프론트 버퍼 합성물(860)이 무한대 오프-스크린 버퍼(840), 좌안 버퍼(845) 및/또는 우안 버퍼(855) 내의 정보를 사용하여 생성된다. 이 합성 스테이지는 무한대 오프-스크린 버퍼(840), 좌안 버퍼(845) 및/또는 우안 버퍼(855)를 소비하여 최종 온-스크린 렌더(865)를 디스플레이를 위해 라이트아웃할 수 있다. 헤드-추적 변환(870)은 프론트 버퍼 합성물(860)을 형성하는데 사용될 수 있다.
무한대 오프-스크린 버퍼(840) 및 좌안 버퍼(845)의 제1 버퍼 쌍, 및 무한대 오프-스크린 버퍼(840) 및 우안 버퍼(855)의 제2 버퍼 쌍이 텍스처 매퍼(mapper)에 단일 논리 이미지로서 노출되어야 한다.
압축되지 않은 텍스처에 대해, 텍스처 매퍼가 추가적인 논리를 요구할 수 있고 또는 MMU가 서로 다른 MMU 페이지들로부터 단일 가상 이미지를 조립하도록 수정될 필요가 있을 수 있다. 그러나 AFBC는 각 이미지를 헤더들의 어레이로서 저장하는 데 사용될 수 있는데, 여기서, 예를 들어, 16x16 타일당 하나의 헤더를 가질 수 있다. 각 헤더는 상위 메모리 어드레스의 바디 블록에 대한 어드레스 오프셋을 포함한다. 따라서, AFBC 헤더들의 어레이가 논리적 좌안에 대해 생성될 수 있는데, 이 헤더는, 연관된 데이터가 저장된 버퍼에 따라 무한대 오프-스크린 버퍼(840) 또는 좌안 버퍼(845)에 각 어드레스 오프셋이 있는 경우, 어드레스 오프셋들의 세트를 포함한다. 유사하게, AFBC 헤더들의 어레이가 논리적 우안에 대해 생성될 수 있는데, 이 헤더는, 연관된 데이터가 저장된 버퍼에 따라 무한대 오프-스크린 버퍼(840) 또는 우안 버퍼(855)에 각 어드레스 오프셋이 있는 경우, 어드레스 오프셋들의 세트를 포함한다. 이를 통해 3개의 상이한 버퍼를 사용하여 2개의 논리 이미지를 생성할 수 있다.
그리하여, 눈 렌더링 스테이지들은 좌측, 우측 및 무한대 데이터에 대해 드물게 채워진(populated) 바디 버퍼를 생성한다. 또한 눈 렌더링 스테이지들은 좌안과 우안에 대해 완전한 AFBC 헤더를 생성하여, 후속 스테이지들이 텍스처를 단일 자원으로서 처리할 수 있게 한다. 눈 렌더링 스테이지들은 또한 무한대 버퍼를 위한 커버리지 맵(coverage map)을 생성하여, 제2 눈 렌더링 스테이지가 "무한대에 있는" 타일이 이미 렌더링되었는지 여부를 결정할 수 있게 한다.
도 9를 참조하면, 그래픽 처리 시스템을 동작시키는 방법(900)의 일례가 도시되어 있다. 이 예에서, 그래픽 처리 시스템은 도 8을 참조하여 전술한 그래픽 처리 파이프라인(900)을 포함한다.
항목(905)에서, 방법이 시작된다.
항목(910)에서, 좌안 뷰 및 우안 뷰와 연관된 모든 타일이 처리되었는지 여부가 결정된다.
항목(910)에서, 좌안 뷰 및 우안 뷰와 연관된 모든 타일이 처리되었다고 결정되면, 처리는 항목(915)에서 종료된다.
항목(910)에서, 좌안 뷰 및 우안 뷰와 연관된 모든 타일이 처리된 것은 아니라고 결정되면, 처리될 그 다음 타일이 항목(920)에서 식별된다.
항목(925)에서, 처리되고 있는 현재 타일이 좌안 뷰와 연관된 것인지 여부가 결정된다.
항목(925)에서, 처리되고 있는 현재 타일이 좌안 뷰와 연관된 것이라고 결정되면, 항목(930)에서 타일 내의 모든 프리미티브가 무한대에 있는지 여부가 결정된다.
항목(930)에서, 타일 내의 모든 프리미티브가 무한대에 있는 경우, 이 타일은 항목(935)에서 좌안 버퍼에 기록되고, 처리는 항목(910)으로 복귀한다.
항목(930)에서 타일 내의 모든 프리미티브가 무한대에 있는 것은 아니라고 결정되면, 이 타일은 항목(940)에서 무한대 버퍼에 기록되고 처리는 항목(910)으로 복귀한다.
항목(925)에서, 처리되고 있는 현재 타일이 좌안 뷰와 연관된 것이 아니라고 결정되면, 항목(945)에서 타일 내의 모든 프리미티브가 무한대에 있는지 여부가 결정된다.
항목(945)에서, 타일 내의 모든 프리미티브가 무한대에 있는 것으로 결정되면, 항목(950)에서, 대응하는 타일이 이미 무한대 버퍼에 있는지 여부가 결정된다.
항목(950)에서 대응하는 타일이 이미 무한대 버퍼에 있는 것으로 결정되면, 이 타일은 항목(955)에서 폐기되고 처리는 항목(910)으로 복귀한다.
타일은, 임의의 렌더링이 일어나기 전에, 렌더링이 일어난 후이지만 라이트아웃하기 전에, 또는 이들 지점 사이 어디에서라도, 폐기될 수 있다.
항목(950)에서, 대응하는 타일이 이미 무한대 버퍼에 있지 않은 것으로 결정되면, 타일은 항목(960)에서 우안 버퍼에 기록되고, 처리는 항목(910)으로 복귀한다.
항목(945)에서, 타일 내의 모든 프리미티브가 무한대에 있는 것은 아니라고 결정되면, 타일은 항목(960)에서 우안 버퍼에 기록되고, 처리는 항목(910)으로 복귀한다.
전술된 실시예는 단지 예시적인 것으로 이해되어야 한다. 다른 실시예들도 가능하다.
전술된 예들에서, 제1 픽셀-처리된 데이터를 제2 픽셀-처리된 데이터로서 사용할지 또는 픽셀 처리 스테이지에서 제2 프리미티브 데이터를 처리하여 제2 픽셀-처리된 데이터를 생성할지 여부가 결정된다. 다른 예에서, 제1 픽셀-처리된 데이터를 제2 픽셀-처리된 데이터로서 사용할지 또는 픽셀 처리 스테이지에서 제2 프리미티브 데이터를 처리하여 제2 픽셀-처리된 데이터를 생성할지 여부가 결정되지 않는다. 이러한 다른 예에서, 제1 픽셀-처리된 데이터는 이러한 결정을 수행할 필요 없이 항상 제2 픽셀-처리된 데이터로서 사용될 수 있다. 그리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하기 위해 그래픽 처리 파이프라인의 프리미티브 생성 스테이지에서 입력 데이터를 처리하는 다양한 수단(그래픽 처리 시스템, 그래픽 프로세서, 그래픽 처리 파이프라인, 방법 및 컴퓨터 프로그램)이 제공된다. 제1 프리미티브 데이터는 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하기 위해 그래픽 처리 파이프라인의 픽셀 처리 스테이지에서 처리된다. 제1 픽셀-처리된 데이터는 제2 뷰와 연관된 제2 픽셀-처리된 데이터로서 사용된다.
일부 예에서, 결정 오버라이드(override) 기능 또는 특징이 제공된다. 결정 오버라이드 특징은, 주어진 결정 결과가 다른 고려 사항과 관계 없이 지정되도록 제2 픽셀-처리된 데이터에 대한 결정 결과를 설정하는데 사용된다. 따라서, 결정 오버라이드 기능은, 제1 픽셀-처리된 데이터가 제2 픽셀-처리된 데이터로서 사용되는 것으로 지정하거나, 또는 제2 프리미티브 데이터가 제2 픽셀-처리된 데이터를 생성하기 위해 픽셀 처리 스테이지에서 처리되는 것으로 지정한다. 예를 들어, 2개의 타일이 동일한 프리미티브들을 갖는 경우에도, 타일들 중 하나의 타일에 하나의 텍스처 또는 컬러를 적용하고 다른 타일에 다른 텍스처 또는 컬러를 적용하기 위해, 2개의 타일이 별도의 픽셀 처리 동작을 받는 것이 바람직할 수 있다.
일부 예에서, 셰이딩 결과가 뷰에 독립적인지 여부, 다시 말해, 셰이딩 결과가 두 뷰에서 동일한지(뷰에 독립적인지) 여부 또는 두 뷰에서 상이한지(뷰에 종속적인지) 여부를 나타내는 비트가 프래그먼트 DCD에 추가된다. 이것은 결정 오버라이드 기능이 타일 기반에 기초하여 사용될 수 있는 효율적인 구현예를 제공한다. 타일 리스트로부터 판독된 각 프리미티브는 지어진 드로우 호출의 DCD와 이미 연관되어 있다. DCD는 프리미티브를 셰이딩하는데 사용되는 셰이더가 어느 것인지, 사용되는 깊이 테스트가 어느 것인지 등을 나타낸다. 따라서 셰이더 컴파일 시간에, 컴파일러는 특정 프래그먼트가 뷰에 독립적인지, 그리고 이후 이 비트가 DCD로 전달되는지 여부를 나타낼 수 있다.
위에서 설명된 동일_기하구조 비트만을 추적하는 것이 아니라, 추적은 주어진 타일에 사용된 모든 DCD가 뷰에 독립적인 비트 세트를 갖고 있는지 여부를 결정하는 것을 또한 수반할 수 있다. 동일_기하구조 및 뷰에-독립적인 비트들이 모두 설정된 경우, 다시 말해, 두 뷰가 동일한 기하구조를 갖고 셰이딩 결과들이 뷰에 독립적인 경우, 즉 두 뷰 모두에 동일한 경우, 좌안에 대한 결과만이 우안에 사용된다.
드라이버-측 추적은 전체 프레임에 오버라이드 기능을 비활성화하는 데 사용될 수 있다.
임의의 일 실시예와 관련하여 설명된 임의의 특징은 단독으로 또는 설명된 다른 특징과 조합하여 사용될 수 있고, 임의의 다른 실시예의 하나 이상의 특징 또는 임의의 다른 실시예의 임의의 조합과 함께 조합하여 사용될 수도 있는 것으로 이해된다. 또한, 첨부된 특허 청구범위에 한정된 본 발명의 범위를 벗어나지 않으면서 전술된 것이 아닌 균등물 및 변형예도 사용될 수 있다.
Claims (55)
- 그래픽 처리 시스템을 동작시키는 방법으로서, 상기 그래픽 처리 시스템은 프리미티브(primitive) 생성 스테이지 및 픽셀 처리 스테이지를 포함하는 그래픽 처리 파이프라인을 포함하고, 상기 방법은,
상기 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰(view)와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하는 단계;
상기 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하는 단계;
상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터에 대해, 상기 제1 픽셀-처리된 데이터를 상기 제2 픽셀-처리된 데이터로서 사용할지 또는 상기 픽셀 처리 스테이지에서 상기 제2 프리미티브 데이터를 처리하여 상기 제2 픽셀-처리된 데이터를 생성할지를 결정하는 단계; 및
상기 결정하는 단계에 기초하여 상기 그래픽 처리 파이프라인에서 추가적인 처리를 수행하는 단계를 포함하는, 방법. - 청구항 1에 있어서, 상기 결정하는 단계는 상기 제1 프리미티브 데이터의 하나 이상의 기하학적 특성 및/또는 상기 제2 프리미티브 데이터의 하나 이상의 기하학적 특성에 기초하는, 방법.
- 청구항 2에 있어서, 상기 하나 이상의 기하학적 특성은 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터 중 하나의 프리미티브 데이터의, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터 중 다른 하나의 프리미티브 데이터의 특성에 관련된 특성을 포함하는, 방법.
- 청구항 2 또는 청구항 3에 있어서, 상기 하나 이상의 기하학적 특성은 미리 결정된 시차(parallax) 특성을 포함하는, 방법.
- 청구항 4에 있어서, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터가 상기 미리 결정된 시차 특성을 가짐을 식별함에 응답하여, 상기 제1 픽셀-처리된 데이터가 상기 제2 픽셀-처리된 데이터로서 사용되도록 결정하는 단계를 포함하는, 방법.
- 청구항 4 또는 청구항 5에 있어서, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터가 상기 미리 결정된 시차 특성을 갖지 않음을 식별함에 응답하여, 상기 제2 프리미티브 데이터가 상기 픽셀 처리 스테이지에서 처리되어 상기 제2 픽셀-처리된 데이터를 생성하도록 결정하는 단계를 포함하는, 방법.
- 청구항 3 내지 청구항 6 중 어느 한 항에 있어서, 상기 제1 프리미티브 데이터 내의 임의의 프리미티브들 및 상기 제2 프리미티브 데이터 내의 임의의 대응하는 프리미티브들과 연관된 시차 척도에 기초하여, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터가 상기 미리 결정된 시차 특성을 갖는지 여부를 식별하는 단계를 포함하는, 방법.
- 청구항 3 내지 청구항 7 중 어느 한 항에 있어서,
상기 제1 프리미티브 데이터 내의 하나 이상의 프리미티브의 하나 이상의 정점의 하나 이상의 위치를, 상기 제2 프리미티브 데이터 내의 하나 이상의 대응하는 프리미티브의 하나 이상의 대응하는 정점의 하나 이상의 위치와 비교하는 것에 기초하여, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터가 상기 미리 결정된 시차 특성을 갖는지 여부를 식별하는 단계를 포함하는, 방법. - 청구항 3 내지 청구항 8 중 어느 한 항에 있어서, 상기 제1 프리미티브 데이터 내의 상기 하나 이상의 프리미티브의 상기 하나 이상의 정점의 상기 하나 이상의 위치와, 상기 제2 프리미티브 데이터 내의 상기 대응하는 하나 이상의 프리미티브의 상기 대응하는 하나 이상의 정점의 상기 하나 이상의 위치 사이의 하나 이상의 오프셋이 하나 이상의 미리 결정된 오프셋 스레시홀드를 초과하지 않음을 결정함에 응답하여, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터가 상기 미리 결정된 시차 특성을 가짐을 식별하는 단계를 포함하는, 방법.
- 청구항 9에 있어서, 상기 하나 이상의 미리 결정된 오프셋 스레시홀드 중 적어도 하나는 0의 값을 갖는, 방법.
- 청구항 9에 있어서, 상기 하나 이상의 미리 결정된 오프셋 스레시홀드 중 적어도 하나는 0이 아닌 값을 갖는, 방법.
- 청구항 11에 있어서, 상기 하나 이상의 미리 결정된 오프셋 스레시홀드는 미리 결정된 에러 마진 오프셋 스레시홀드를 포함하고, 상기 방법은 정점 스냅핑(vertex snapping)을 고려하기 위해 상기 미리 결정된 에러 마진 오프셋 스레시홀드를 선택하는 단계를 포함하는, 방법.
- 청구항 11 또는 청구항 12에 있어서, 상기 하나 이상의 미리 결정된 오프셋 스레시홀드는 미리 결정된 안구간 오프셋 스레시홀드를 포함하고, 상기 방법은 안구간 시프트(interocular shift)를 고려하기 위해 상기 미리 결정된 안구간 오프셋 스레시홀드를 선택하는 단계를 포함하는, 방법.
- 청구항 2 내지 청구항 13 중 어느 한 항에 있어서, 상기 하나 이상의 기하학적 특성은 상기 제1 프리미티브 데이터 및/또는 상기 제2 프리미티브 데이터의 절대적인 특성을 포함하는, 방법.
- 청구항 2 내지 청구항 14 중 어느 한 항에 있어서, 상기 하나 이상의 기하학적 특성은 무한대 거리 특성을 포함하는, 방법.
- 청구항 15에 있어서, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터 모두가 상기 무한대 거리 특성을 가짐을 식별함에 응답하여, 상기 제1 픽셀-처리된 데이터가 상기 제2 픽셀-처리된 데이터로서 사용되도록 결정하는 단계를 포함하는, 방법.
- 청구항 15 또는 청구항 16에 있어서, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터 중 하나 또는 둘 모두가 상기 무한대 거리 특성을 갖지 않음을 식별함에 응답하여, 상기 제2 프리미티브 데이터가 상기 픽셀 처리 스테이지에서 처리되어 상기 제2 픽셀-처리된 데이터를 생성하도록 결정하는 단계를 포함하는, 방법.
- 청구항 15 내지 청구항 17 중 어느 한 항에 있어서, 상기 제1 프리미티브 데이터 내의 하나 이상의 프리미티브와 연관된 클립-공간(clip-space)(Z) 값 및/또는 상기 제2 프리미티브 데이터 내의 하나 이상의 프리미티브와 연관된 클립-공간(Z) 값이 미리 결정된 클립-공간(Z) 값 스레시홀드를 초과함을 결정함에 응답하여, 상기 제1 프리미티브 데이터 및/또는 상기 제2 프리미티브 데이터는 상기 무한대 거리 특성을 가짐을 식별하는 단계를 포함하는, 방법.
- 청구항 2 내지 청구항 18 중 어느 한 항에 있어서, 상기 하나 이상의 기하학적 특성은 기하학적 유사성 특성을 포함하고, 상기 방법은, 상기 제1 프리미티브 데이터 내의 임의의 프리미티브가 상기 제2 프리미티브 데이터 내의 임의의 프리미티브와 동일하거나 실질적으로 동일함을 식별함에 응답하여, 상기 제1 픽셀-처리된 데이터가 상기 제2 픽셀-처리된 데이터로서 사용되도록 결정하는 단계를 포함하는, 방법.
- 청구항 2 내지 청구항 19 중 어느 한 항에 있어서, 상기 하나 이상의 기하학적 특성은 기하학적 유사성 특성을 포함하고, 상기 방법은, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터 중 하나 또는 둘 모두가, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터 중 다른 프리미티브 데이터의 프리미티브와 동일하지 않거나 실질적으로 동일하지 않은 적어도 하나의 프리미티브를 가짐을 식별함에 응답하여, 상기 제2 프리미티브 데이터가 상기 픽셀 처리 스테이지에서 처리되어 상기 제2 픽셀-처리된 데이터를 생성하도록 결정하는 단계를 포함하는, 방법.
- 청구항 2 내지 청구항 20 중 어느 한 항에 있어서, 상기 제1 프리미티브 데이터와 연관된 하나 이상의 기하학적 특성 지시자 및/또는 상기 제2 프리미티브 데이터와 연관된 하나 이상의 기하학적 특성 지시자에 기초하여, 상기 제1 프리미티브 데이터가 상기 하나 이상의 기하학적 특성을 갖는지 및/또는 상기 제2 프리미티브 데이터가 상기 하나 이상의 기하학적 특성을 갖는지를 식별하는 단계를 포함하는, 방법.
- 청구항 1 내지 청구항 21 중 어느 한 항에 있어서, 상기 제1 프리미티브 데이터는 상기 제1 뷰의 하위-구역(sub-region)과 연관되고, 상기 제2 프리미티브 데이터는 상기 제2 뷰의 대응하는 하위-구역과 연관되는, 방법.
- 청구항 22에 있어서, 추가적인 제1 프리미티브 데이터는 상기 제1 뷰의 적어도 하나의 추가적인 하위-구역과 연관되고, 추가적인 제2 프리미티브 데이터는 상기 제2 뷰의 적어도 하나의 대응하는 추가적인 하위-구역과 연관되는, 방법.
- 청구항 23에 있어서,
상기 픽셀 처리 스테이지에서 상기 추가적인 제1 프리미티브 데이터를 처리하여, 상기 제1 뷰와 연관된 추가적인 제1 픽셀-처리된 데이터를 생성하는 단계; 및
상기 제2 뷰와 연관된 추가적인 제2 픽셀-처리된 데이터에 대해, 상기 추가적인 제1 픽셀-처리된 데이터를 상기 추가적인 제2 픽셀-처리된 데이터로서 사용할지 또는 상기 픽셀 처리 스테이지에서 상기 추가적인 제2 프리미티브 데이터를 처리하여 상기 추가적인 제2 픽셀-처리된 데이터를 생성할지를 결정하는 단계를 포함하는, 방법. - 청구항 1 내지 청구항 24 중 어느 한 항에 있어서, 상기 프리미티브 생성 스테이지에서의 상기 처리는 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터를 동시에 생성하는 하나 이상의 다중 뷰(multiview) 처리 동작을 수행하는 단계를 포함하는, 방법.
- 청구항 1 내지 청구항 25 중 어느 한 항에 있어서, 상기 제1 프리미티브 데이터와 상기 제2 프리미티브 데이터는 다중 뷰 데이터 구조에 포함되는, 방법.
- 청구항 1 내지 청구항 26 중 어느 한 항에 있어서, 상기 픽셀 처리 스테이지에서 상기 제1 뷰와 연관된 모든 제1 프리미티브 데이터를 처리하여, 상기 제1 뷰와 연관된 모든 제1 픽셀-처리된 데이터를 생성하는 단계를 포함하는, 방법.
- 청구항 1 내지 청구항 27 중 어느 한 항에 있어서, 상기 제1 뷰는 상기 장면의 관찰자의 제1 눈과 연관되고, 상기 제2 뷰는 상기 장면의 상기 관찰자의 제2 눈과 연관되는, 방법.
- 청구항 1 내지 청구항 28 중 어느 한 항에 있어서, 상기 추가적인 처리를 수행하는 단계는 상기 제1 픽셀-처리된 데이터를 하나 이상의 제1 메모리 위치에 기록하는 단계를 포함하는, 방법.
- 청구항 29에 있어서, 상기 하나 이상의 제1 메모리 위치는 상기 제1 뷰와 연관되고, 상기 제2 뷰와 연관되지 않는, 방법.
- 청구항 29에 있어서, 상기 하나 이상의 제1 메모리 위치는 상기 제1 뷰 및 상기 제2 뷰 모두와 연관되는, 방법.
- 청구항 29 내지 청구항 31 중 어느 한 항에 있어서, 상기 제1 픽셀-처리된 데이터를 상기 하나 이상의 제1 메모리 위치에 기록하는 단계는 상기 제1 픽셀-처리된 데이터와 연관된 헤더 데이터 및 페이로드 데이터를 상기 하나 이상의 제1 메모리 위치에 저장하는 단계를 포함하고, 상기 헤더 데이터는 상기 페이로드 데이터에 대한 포인터를 포함하는, 방법.
- 청구항 32에 있어서, 상기 제1 픽셀-처리된 데이터를 상기 제2 픽셀-처리된 데이터로서 사용하는 단계는 상기 제1 뷰와 연관된 상기 하나 이상의 제1 메모리 위치로부터 상기 제1 픽셀-처리된 데이터를 판독하는 단계, 및 상기 제1 픽셀-처리된 데이터를 상기 제2 뷰와 연관된 하나 이상의 제2 메모리 위치에 기록하는 단계를 포함하는, 방법.
- 청구항 33에 있어서, 상기 하나 이상의 제2 메모리 위치는 상기 제2 뷰와 연관되고, 상기 제1 뷰와 연관되지 않는, 방법.
- 청구항 33 또는 청구항 34에 있어서, 상기 제2 픽셀-처리된 데이터와 연관된 헤더 데이터를 상기 하나 이상의 제2 메모리 위치에 저장하는 단계를 포함하고, 상기 제2 픽셀-처리된 데이터와 연관된 상기 헤더 데이터는 상기 제1 뷰와 연관된 상기 페이로드 데이터에 대한 포인터를 포함하는, 방법.
- 청구항 33 내지 청구항 35 중 어느 한 항에 있어서, 데이터가 상기 하나 이상의 제1 메모리 위치 및/또는 상기 하나 이상의 제2 메모리 위치에 저장되는지 여부를 식별하는 정보를 저장하는 단계를 포함하는, 방법.
- 청구항 1 내지 청구항 36 중 어느 한 항에 있어서, 상기 방법은 상기 제2 픽셀-처리된 데이터에 대한 결정을 수행하는데 결정 오버라이드(override) 기능을 사용하는 단계를 포함하고, 상기 결정 오버라이드 기능은 상기 제1 픽셀-처리된 데이터가 상기 제2 픽셀-처리된 데이터로서 사용될지 또는 상기 제2 프리미티브 데이터가 상기 픽셀 처리 스테이지에서 처리되어 상기 제2 픽셀-처리된 데이터를 생성할지를 지정하는, 방법.
- 청구항 1 내지 청구항 37 중 어느 한 항에 있어서, 상기 방법은 가상 현실 환경에서 사용되는, 방법.
- 청구항 1 내지 청구항 38 중 어느 한 항에 있어서, 상기 프리미티브 생성 스테이지는 하나 이상의 정점 셰이더(vertex shader)를 포함하는, 방법.
- 청구항 1 내지 청구항 39 중 어느 한 항에 있어서, 상기 픽셀 처리 스테이지는 하나 이상의 래스터화기(rasterizer) 및/또는 하나 이상의 프래그먼트 셰이더(fragment shader)를 포함하는, 방법.
- 청구항 1 내지 청구항 40 중 어느 한 항에 있어서, 상기 제1 프리미티브 데이터가 상기 그래픽 처리 파이프라인의 상기 픽셀 처리 스테이지에서 처리되어 상기 제1 뷰와 연관된 상기 제1 픽셀-처리된 데이터를 생성하기 전에 상기 결정하는 단계가 수행되는, 방법.
- 청구항 1 내지 청구항 40 중 어느 한 항에 있어서, 상기 제1 프리미티브 데이터가 상기 그래픽 처리 파이프라인의 상기 픽셀 처리 스테이지에서 처리되어 상기 제1 뷰와 연관된 상기 제1 픽셀-처리된 데이터를 생성한 후에 상기 결정하는 단계가 수행되는, 방법.
- 방법으로서,
그래픽 처리 파이프라인의 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하는 단계;
상기 그래픽 처리 파이프라인의 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여, 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하는 단계; 및
상기 제1 픽셀-처리된 데이터를 상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터로서 사용하는 단계를 포함하는, 방법. - 그래픽 처리 파이프라인과 연관된 그래픽 프로세서를 동작시키는 방법으로서, 상기 그래픽 처리 파이프라인은 프리미티브 생성 스테이지 및 픽셀 처리 스테이지를 포함하고, 상기 방법은,
상기 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하는 단계;
상기 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하는 단계;
상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터에 대해, 상기 제1 픽셀-처리된 데이터를 상기 제2 픽셀-처리된 데이터로서 사용할지 또는 상기 픽셀 처리 스테이지에서 상기 제2 프리미티브 데이터를 처리하여 상기 제2 픽셀-처리된 데이터를 생성할지를 결정하는 단계; 및
상기 결정하는 단계에 기초하여 상기 그래픽 처리 파이프라인에서 추가적인 처리를 수행하는 단계를 포함하는, 방법. - 컴퓨터 프로그램으로서, 그래픽 처리 시스템에서 실행될 때 청구항 1 내지 청구항 44 중 어느 한 항에 기재된 방법을 수행하도록 되어 있는 소프트웨어 코드를 포함하는 컴퓨터 프로그램.
- 그래픽 처리 파이프라인을 포함하는 그래픽 처리 시스템으로서, 상기 그래픽 처리 파이프라인은 프리미티브 생성 스테이지 및 픽셀 처리 스테이지를 포함하고, 상기 그래픽 처리 시스템은,
상기 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하고;
상기 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하고;
상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터에 대해, 상기 제1 픽셀-처리된 데이터를 상기 제2 픽셀-처리된 데이터로서 사용할지 또는 상기 픽셀 처리 스테이지에서 상기 제2 프리미티브 데이터를 처리하여 상기 제2 픽셀-처리된 데이터를 생성할지를 결정하며;
상기 결정에 기초하여 상기 그래픽 처리 파이프라인에서 추가적인 처리를 수행하도록 되어 있는, 그래픽 처리 시스템. - 청구항 45에 기재된 그래픽 처리 시스템을 포함하는 가상 현실 사용자 디바이스.
- 장치로서,
그래픽 처리 파이프라인의 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하고;
상기 그래픽 처리 파이프라인의 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하며;
상기 제1 픽셀-처리된 데이터를 상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터로서 사용하도록 되어 있는, 장치. - 청구항 48에 기재된 장치를 포함하는 가상 현실 사용자 디바이스.
- 그래픽 처리 파이프라인과 연관된 그래픽 프로세서로서, 상기 그래픽 처리 파이프라인은 프리미티브 생성 스테이지 및 픽셀 처리 스테이지를 포함하고, 상기 그래픽 프로세서는,
상기 프리미티브 생성 스테이지에서 입력 데이터를 처리하여, 장면의 제1 뷰와 연관된 제1 프리미티브 데이터 및 상기 장면의 제2 뷰와 연관된 제2 프리미티브 데이터를 생성하고;
상기 픽셀 처리 스테이지에서 상기 제1 프리미티브 데이터를 처리하여 상기 제1 뷰와 연관된 제1 픽셀-처리된 데이터를 생성하고;
상기 제2 뷰와 연관된 제2 픽셀-처리된 데이터에 대해, 상기 제1 픽셀-처리된 데이터를 상기 제2 픽셀-처리된 데이터로서 사용할지 또는 상기 픽셀 처리 스테이지에서 상기 제2 프리미티브 데이터를 처리하여 상기 제2 픽셀-처리된 데이터를 생성할지를 결정하며;
상기 결정에 기초하여 상기 그래픽 처리 파이프라인에서 추가적인 처리를 수행하도록 되어 있는, 그래픽 프로세서. - 청구항 50에 기재된 그래픽 프로세서를 포함하는 가상 현실 사용자 디바이스.
- 첨부된 도면을 참조하여 본 명세서에 실질적으로 설명된 방법.
- 첨부된 도면을 참조하여 본 명세서에 실질적으로 설명된 그래픽 처리 시스템.
- 첨부된 도면을 참조하여 본 명세서에 실질적으로 설명된 그래픽 프로세서.
- 첨부된 도면을 참조하여 본 명세서에 실질적으로 설명된 그래픽 처리 파이프라인.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1614506.2A GB2553293B (en) | 2016-08-25 | 2016-08-25 | Graphics processing systems and graphics processors |
GB1614506.2 | 2016-08-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180023856A true KR20180023856A (ko) | 2018-03-07 |
KR102442488B1 KR102442488B1 (ko) | 2022-09-13 |
Family
ID=57119764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170107360A KR102442488B1 (ko) | 2016-08-25 | 2017-08-24 | 그래픽 처리 시스템 및 그래픽 프로세서 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10432914B2 (ko) |
KR (1) | KR102442488B1 (ko) |
CN (1) | CN107784622B (ko) |
GB (1) | GB2553293B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200137985A (ko) * | 2019-05-31 | 2020-12-09 | 삼성전자주식회사 | 원근(투영) 보간 함수들의 최적화된 연산 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10573055B2 (en) * | 2017-08-31 | 2020-02-25 | Intel Corporation | Apparatus and method for a programmable depth stencil graphics pipeline stage |
CN113495793A (zh) * | 2020-04-02 | 2021-10-12 | 英特尔公司 | 用于缓冲器共享的方法和装置 |
US11514161B2 (en) * | 2020-09-11 | 2022-11-29 | Mcafee, Llc | Method and apparatus for detecting malware via analysis of a screen capture |
US11545209B2 (en) * | 2021-05-28 | 2023-01-03 | Micron Technology, Inc. | Power savings mode toggling to prevent bias temperature instability |
US11581049B2 (en) * | 2021-06-01 | 2023-02-14 | Sandisk Technologies Llc | System and methods for programming nonvolatile memory having partial select gate drains |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6023263A (en) * | 1996-06-07 | 2000-02-08 | U.S. Philips Corporation | Stereoscopic image display driver apparatus |
US20070253618A1 (en) * | 2006-03-20 | 2007-11-01 | Samsung Electronics Co., Ltd | Camera calibration method and medium and 3D object reconstruction method and medium using the same |
KR20090038932A (ko) * | 2006-10-02 | 2009-04-21 | 가부시끼가이샤 도시바 | 입체이미지생성을 위한 장치, 방법 및 프로그램 제품 |
US20110018863A1 (en) * | 2009-07-21 | 2011-01-27 | Samsung Electronics Co., Ltd. | Image processing apparatus performing rendering at multiple viewpoints and method |
US20130100132A1 (en) * | 2011-03-31 | 2013-04-25 | Panasonic Corporation | Image rendering device, image rendering method, and image rendering program for rendering stereoscopic images |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE433590T1 (de) * | 2002-11-27 | 2009-06-15 | Vision Iii Imaging Inc | Abtastung der parallaxe durch manipulation der position der gegenstände in einer szene |
GB2497302B (en) * | 2011-12-05 | 2017-04-12 | Advanced Risc Mach Ltd | Methods of and apparatus for processing computer graphics |
US9607356B2 (en) * | 2013-05-02 | 2017-03-28 | Arm Limited | Graphics processing systems |
US9928610B2 (en) * | 2014-06-27 | 2018-03-27 | Samsung Electronics Co., Ltd. | Motion based adaptive rendering |
KR101736660B1 (ko) * | 2016-01-15 | 2017-05-17 | 세종대학교산학협력단 | 스테레오 3d 내비게이션 장치 및 이를 위한 세일리언시 기반의 카메라 파라미터 조절 방법 |
US10469821B2 (en) * | 2016-06-17 | 2019-11-05 | Altek Semiconductor Corp. | Stereo image generating method and electronic apparatus utilizing the method |
-
2016
- 2016-08-25 GB GB1614506.2A patent/GB2553293B/en active Active
-
2017
- 2017-08-22 US US15/683,653 patent/US10432914B2/en active Active
- 2017-08-24 KR KR1020170107360A patent/KR102442488B1/ko active IP Right Grant
- 2017-08-24 CN CN201710735647.2A patent/CN107784622B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6023263A (en) * | 1996-06-07 | 2000-02-08 | U.S. Philips Corporation | Stereoscopic image display driver apparatus |
US20070253618A1 (en) * | 2006-03-20 | 2007-11-01 | Samsung Electronics Co., Ltd | Camera calibration method and medium and 3D object reconstruction method and medium using the same |
KR20090038932A (ko) * | 2006-10-02 | 2009-04-21 | 가부시끼가이샤 도시바 | 입체이미지생성을 위한 장치, 방법 및 프로그램 제품 |
US20110018863A1 (en) * | 2009-07-21 | 2011-01-27 | Samsung Electronics Co., Ltd. | Image processing apparatus performing rendering at multiple viewpoints and method |
US20130100132A1 (en) * | 2011-03-31 | 2013-04-25 | Panasonic Corporation | Image rendering device, image rendering method, and image rendering program for rendering stereoscopic images |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200137985A (ko) * | 2019-05-31 | 2020-12-09 | 삼성전자주식회사 | 원근(투영) 보간 함수들의 최적화된 연산 |
Also Published As
Publication number | Publication date |
---|---|
CN107784622B (zh) | 2023-11-24 |
GB2553293B (en) | 2022-06-01 |
CN107784622A (zh) | 2018-03-09 |
US10432914B2 (en) | 2019-10-01 |
KR102442488B1 (ko) | 2022-09-13 |
GB2553293A (en) | 2018-03-07 |
US20180061115A1 (en) | 2018-03-01 |
GB201614506D0 (en) | 2016-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230351678A1 (en) | Hidden culling in tile-based computer generated images | |
KR102442488B1 (ko) | 그래픽 처리 시스템 및 그래픽 프로세서 | |
US9202303B2 (en) | System and method for compositing path color in path rendering | |
EP3008701B1 (en) | Using compute shaders as front end for vertex shaders | |
CN107038742B (zh) | 屏幕空间管线中的多通道渲染 | |
TWI434226B (zh) | 影像處理技術 | |
KR102258100B1 (ko) | 텍스쳐 처리 방법 및 장치 | |
TWI645371B (zh) | 在上游著色器內設定下游著色狀態 | |
US20130271465A1 (en) | Sort-Based Tiled Deferred Shading Architecture for Decoupled Sampling | |
KR20160004963A (ko) | 그래픽 처리 | |
WO2019040222A1 (en) | RENDERING AN IMAGE FROM COMPUTER GRAPHICS USING TWO COMPUTER RESTITUTION DEVICES | |
US10068366B2 (en) | Stereo multi-projection implemented using a graphics processing pipeline | |
US10991146B2 (en) | Residency map descriptors | |
US20160110889A1 (en) | Method and apparatus for processing texture | |
GB2509113A (en) | Tessellating Patches Of Surface Data In Tile Based Computer Graphics Rendering | |
KR20150117662A (ko) | 깊이 맵의 컨텐츠를 강화하기 위한 방법 및 디바이스 | |
US20190035147A1 (en) | Graphics processing systems | |
CN114758051A (zh) | 一种图像渲染方法及其相关设备 | |
US10192348B2 (en) | Method and apparatus for processing texture | |
KR20170025099A (ko) | 렌더링 방법 및 장치 | |
US20140160124A1 (en) | Visible polygon data structure and method of use thereof | |
CN115715464A (zh) | 用于遮挡处理技术的方法和装置 | |
Smit et al. | A shared-scene-graph image-warping architecture for VR: Low latency versus image quality | |
JP2008502979A (ja) | 逆テクスチャマッピング3dグラフィックスシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |