KR20220148814A - 효율적인 다중 뷰 래스터화를 위한 방법들 및 장치 - Google Patents

효율적인 다중 뷰 래스터화를 위한 방법들 및 장치 Download PDF

Info

Publication number
KR20220148814A
KR20220148814A KR1020227028774A KR20227028774A KR20220148814A KR 20220148814 A KR20220148814 A KR 20220148814A KR 1020227028774 A KR1020227028774 A KR 1020227028774A KR 20227028774 A KR20227028774 A KR 20227028774A KR 20220148814 A KR20220148814 A KR 20220148814A
Authority
KR
South Korea
Prior art keywords
viewpoints
primitives
scene
buffer
regions
Prior art date
Application number
KR1020227028774A
Other languages
English (en)
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 KR20220148814A publication Critical patent/KR20220148814A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/275Image signal generators from 3D object models, e.g. computer-generated stereoscopic image signals
    • H04N13/279Image 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
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/172Processing image signals image signals comprising non-image signal components, e.g. headers or format information
    • H04N13/178Metadata, e.g. disparity information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Library & Information Science (AREA)
  • Image Generation (AREA)

Abstract

본 개시는 그래픽 프로세싱을 위한 방법들 및 장치에 관한 것이다. 본 개시의 양태들은 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정할 수 있다. 또한, 본 개시의 양태들은 하나 이상의 뷰포인트들의 각각에 기초하여 적어도 하나의 장면을 복수의 구역들로 분할할 수 있다. 또한, 본 개시의 양태들은 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부를 결정할 수 있다. 본 개시의 양태들은 또한, 하나 이상의 뷰포인트들에 기초하여 복수의 구역들의 각각에 대한 지오메트리 버퍼를 생성할 수 있다. 더욱이, 본 개시의 양태들은 하나 이상의 뷰포인트들에 기초하여 복수의 구역들의 각각에 대한 지오메트리 버퍼들을 결합할 수 있다.

Description

효율적인 다중 뷰 래스터화를 위한 방법들 및 장치
35 U.S.C. §119 하의 우선권 주장
본 출원은 2020년 3월 2일자로 출원된 미국 정규출원 제16/806,774호에 대한 우선권 및 그 이익을 주장하고, 이는 본 명세서에 참조로 명백히 통합된다.
기술 분야
본 개시는 일반적으로 프로세싱 시스템들에 관한 것으로, 특히, 그래픽 프로세싱을 위한 하나 이상의 기법들에 관한 것이다.
컴퓨팅 디바이스들은 디스플레이를 위한 그래픽 데이터의 렌더링을 가속화하기 위해 그래픽 프로세싱 유닛 (GPU) 을 종종 활용한다. 그러한 컴퓨팅 디바이스들은 예를 들어, 컴퓨터 워크스테이션들, 모바일 폰들, 이를 테면 소위 스마트폰들, 임베디드 시스템들, 개인용 컴퓨터들, 태블릿 컴퓨터들, 및 비디오 게임 콘솔들을 포함할 수도 있다. GPU들은 함께 동작하여 그래픽 프로세싱 커맨드들을 실행하고 프레임을 출력하는 하나 이상의 프로세싱 스테이지들을 포함하는 그래픽 프로세싱 파이프라인을 실행한다. 중앙 프로세싱 유닛 (CPU) 은 GPU 에 하나 이상의 그래픽 프로세싱 커맨드들을 이슈함으로써 GPU 의 동작을 제어할 수도 있다. 현대의 CPU들은 통상적으로 다중 애플리케이션들을 동시에 실행할 수 있으며, 그 각각은 실행 동안 GPU 를 활용해야 할 수도 있다. 디스플레이 상에 시각적 프리젠테이션을 위한 콘텐츠를 제공하는 디바이스는 일반적으로 GPU 를 포함한다.
통상적으로, 디바이스의 GPU 는 그래픽 프로세싱 파이프라인에서 프로세스들을 수행하도록 구성된다. 그러나, 무선 통신 및 더 작은 핸드헬드 디바이스들의 출현으로, 개선된 그래픽 프로세싱에 대한 요구가 증가하였다.
다음은 하나 이상의 양태들의 간략화된 개요를 그러한 양태들의 기본적인 이해를 제공하기 위하여 제시한다. 이 개요는 모든 고려된 양태들의 광범위한 개관이 아니며, 모든 양태들의 핵심적인 엘리먼트들을 식별하지도 않고 임의의 또는 모든 양태들의 범위를 기술하지도 않도록 의도된다. 그 유일한 목적은 이후에 제시되는 보다 상세한 설명에 대한 서두로서 간략화된 형태로 하나 이상의 양태들의 일부 개념들을 제시하는 것이다.
본 개시의 일 양태에서, 방법, 컴퓨터 판독가능 매체, 및 장치가 제공된다. 장치는 중앙 프로세싱 유닛 (CPU), 그래픽 프로세싱 유닛 (GPU), 또는 그래픽 프로세싱을 수행할 수 있는 임의의 장치일 수도 있다. 장치는 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정할 수 있다. 또한, 장치는 하나 이상의 뷰포인트들의 각각에 기초하여 적어도 하나의 장면을 복수의 구역들로 분할할 수 있다. 또한, 장치는 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부를 결정할 수 있다. 장치는 또한, 하나 이상의 뷰포인트들에 기초하여 복수의 구역들의 각각에 대한 지오메트리 버퍼를 생성할 수 있다. 더욱이, 장치는 하나 이상의 뷰포인트들에 기초하여 복수의 구역들의 각각에 대한 지오메트리 버퍼들을 결합할 수 있다. 장치는 또한, 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부에 대한 셰이딩 정보를 결정할 수 있다. 추가적으로, 장치는 또한, 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부를 저장할 수 있다. 장치는 또한, 하나 이상의 뷰포인트들의 복수의 구역들의 각각에 대한 지오메트리 버퍼에 기초하여 적어도 하나의 이미지를 렌더링할 수 있다.
본 개시의 하나 이상의 예들의 상세들은 첨부 도면들 및 하기의 설명에 기재된다. 본 개시의 다른 특징들, 목적들, 및 이점들은 설명 및 도면들로부터, 그리고 청구항들로부터 명백할 것이다.
도 1 은 본 개시의 하나 이상의 기법들에 따른 예시적인 콘텐츠 생성 시스템을 예시하는 블록 다이어그램이다.
도 2 는 본 개시의 하나 이상의 기법들에 따른 예시적인 GPU 를 예시한다.
도 3 은 본 개시의 하나 이상의 기법들에 따른 예시적인 이미지 또는 표면을 예시한다.
도 4 는 본 개시의 하나 이상의 기법들에 따른 예시적인 이미지 또는 표면을 예시한다.
도 5 는 본 개시의 하나 이상의 기법들에 따른 다중 뷰 래스터화를 포함하는 예시적인 다이어그램을 예시한다.
도 6 은 본 개시의 하나 이상의 기법들에 따른 버퍼 및 서브-버퍼들을 포함하는 예시적인 다이어그램을 예시한다.
도 7 은 본 개시의 하나 이상의 기법들에 따른 예시적인 장면을 예시한다.
도 8 은 본 개시의 하나 이상의 기법들에 따른 예시적인 장면을 예시한다.
도 9 는 본 개시의 하나 이상의 기법들에 따른 예시적인 장면을 예시한다.
도 10 은 본 개시의 하나 이상의 기법들에 따른 예시적인 이미지를 예시한다.
도 11 은 본 개시의 하나 이상의 기법들에 따른 예시적인 방법의 예시적인 플로우차트를 예시한다.
다중 뷰 래스터화 (multi-view rasterization; MVR) 는 다중 뷰들의 사용에 기초하여 장면 또는 이미지를 래스터화하는 방식이다. 예를 들어, MVR 은 다수의 유사한 카메라 뷰포인트들 또는 위치들로부터 다수의 뷰들을 생성할 수 있다. 뷰포인트는 다중 구역들 또는 서브-버퍼들로 분할될 수 있다. 일부 인스턴스들에서, 프리미티브가 다중 구역들 또는 서브-버퍼들에 있는 경우, 클리핑 (clipping), 즉 구역 또는 서브-버퍼의 경계에서 프리미티브의 분할이 있을 수도 있다. 더욱이, MVR 에서 뷰포인트 또는 카메라로부터 멀리 떨어져 있는 오브젝트들에 대해 생성되는 뷰포인트들의 양이 많을 수 있다. 예를 들어, 카메라로부터 멀리 떨어져 있는 이들 뷰포인트들은 폐기되고 및/또는 활용되지 않을 수도 있다. 본 개시의 양태들은 전술한 클리핑 이슈들 또는 MVR 에서 많은 수의 뷰포인트들로 인한 이슈들을 해결할 수 있다. 예를 들어, 본 개시의 양태들은 MVR 에서 뷰포인트 또는 카메라로부터 멀리 떨어져 있는 오브젝트들에 대해 생성되는 뷰포인트들의 양을 감소시킬 수 있다. 일부 인스턴스들에서, 본 개시의 양태들은 하나의 뷰포인트에 대한 구역이 다른 뷰포인트에 대한 구역과 실질적으로 유사 또는 동일한지 여부를 결정할 수 있다.
시스템들, 장치들, 컴퓨터 프로그램 제품들, 및 방법들의 다양한 양태들이 첨부 도면들을 참조하여 이하에 더 충분히 설명된다. 하지만, 본 개시는 많은 상이한 형태들로 구현될 수도 있으며, 본 개시 전반에 걸쳐 제시된 임의의 특정 구조 또는 기능에 제한되는 것으로 해석되지 않아야 한다. 오히려, 이들 양태들은 본 개시가 철저하고 완전할 것이며, 본 개시의 범위를 당업자에게 충분히 전달하도록 제공된다. 본 명세서에서의 교시들에 기초하여, 당업자는, 본 개시의 다른 양태들과 독립적으로 구현되든 또는 다른 양태들과 결합되든, 본 개시의 범위가 본 명세서에 개시된 시스템들, 장치들, 컴퓨터 프로그램 제품들, 및 방법들의 임의의 양태를 커버하도록 의도됨을 인식해야 한다. 예를 들어, 본 명세서에 기재된 임의의 수의 양태들을 사용하여 장치가 구현될 수도 있거나 또는 방법이 실시될 수도 있다. 또한, 본 개시의 범위는 본 명세서에 기재된 본 개시의 다양한 양태들에 더하여 또는 그 외에 다른 구조, 기능, 또는 구조 및 기능을 사용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 본 명세서에 개시된 임의의 양태는 청구항의 하나 이상의 엘리먼트들에 의해 구현될 수도 있다.
다양한 양태들이 본 명세서에서 설명되지만, 이들 양태들의 많은 변형들 및 치환들은 본 개시의 범위에 속한다. 본 개시의 양태들의 일부 잠재적인 이익들 및 이점들이 언급되지만, 본 개시의 범위는 특정 이익들, 사용들, 또는 목적들에 제한되도록 의도되지 않는다. 오히려, 본 개시의 양태들은 상이한 무선 기술들, 시스템 구성들, 네트워크들, 및 송신 프로토콜들에 폭넓게 적용가능한 것으로 의도되고, 이들 중 일부는 예로서 도면들에서 그리고 다음의 설명에서 예시된다. 상세한 설명 및 도면들은 본 개시를 제한하는 것이 아니라 예시할 뿐이고, 본 개시의 범위는 첨부된 청구항들 및 그 균등물들에 의해 정의된다.
여러 양태들이 다양한 장치 및 방법들을 참조하여 제시된다. 이들 장치 및 방법들은 다양한 블록들, 컴포넌트들, 회로들, 프로세스들, 알고리즘들 등 ("엘리먼트들" 로서 총칭됨) 에 의해 다음의 상세한 설명에서 설명되고 첨부 도면들에서 예시된다. 이들 엘리먼트들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 임의의 조합을 사용하여 구현될 수도 있다. 그러한 엘리먼트들이 하드웨어로서 구현되는지 소프트웨어로서 구현되는지는, 전체 시스템에 부과된 설계 제약들 및 특정 애플리케이션에 의존한다.
예로서, 엘리먼트, 또는 엘리먼트의 임의의 부분, 또는 엘리먼트들의 임의의 조합은 (프로세싱 유닛들로서 또한 지칭될 수도 있는) 하나 이상의 프로세서들을 포함하는 "프로세싱 시스템" 으로서 구현될 수도 있다. 프로세서들의 예들은 마이크로프로세서들, 마이크로제어기들, 그래픽 프로세싱 유닛들 (GPU들), 범용 GPU들 (GPGPU들), 중앙 프로세싱 유닛들 (CPU들), 애플리케이션 프로세서들, 디지털 신호 프로세서들 (DSP들), RISC (reduced instruction set computing) 프로세서들, 시스템 온 칩 (systems-on-chip; SoC), 기저대역 프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 프로그래밍가능 로직 디바이스들 (PLD들), 상태 머신들, 게이티드 로직, 이산 하드웨어 회로들, 및 본 개시 전반에 걸쳐 설명된 다양한 기능을 수행하도록 구성된 다른 적합한 하드웨어를 포함한다. 프로세싱 시스템에서의 하나 이상의 프로세서들은 소프트웨어를 실행할 수도 있다. 소프트웨어는, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 다른 것으로서 지칭되든 간에, 명령들, 명령 세트들, 코드, 코드 세그먼트들, 프로그램 코드, 프로그램들, 서브프로그램들, 소프트웨어 컴포넌트들, 애플리케이션들, 소프트웨어 애플리케이션들, 소프트웨어 패키지들, 루틴들, 서브루틴들, 오브젝트들, 실행가능물들, 실행 스레드들, 절차들, 함수들 등을 의미하는 것으로 폭넓게 해석될 수 있다. 용어 애플리케이션은 소프트웨어를 지칭할 수도 있다. 본 명세서에서 설명된 바와 같이, 하나 이상의 기법들은 하나 이상의 기능들을 수행하도록 구성되는 애플리케이션, 즉 소프트웨어를 지칭할 수도 있다. 그러한 예들에서, 애플리케이션은 메모리, 예를 들어, 프로세서의 온 칩 메모리, 시스템 메모리, 또는 임의의 다른 메모리 상에 저장될 수도 있다. 프로세서와 같은, 본 명세서에서 설명된 하드웨어는 애플리케이션을 실행하도록 구성될 수도 있다. 예를 들어, 애플리케이션은, 하드웨어에 의해 실행될 경우, 하드웨어로 하여금 본 명세서에서 설명된 하나 이상의 기법들을 수행하게 하는 코드를 포함하는 것으로 설명될 수도 있다. 일 예로서, 하드웨어는 메모리로부터 코드에 액세스하고 메모리로부터 액세스된 코드를 실행하여 본 명세서에서 설명된 하나 이상의 기법들을 수행할 수도 있다. 일부 예들에서, 컴포넌트들은 본 개시에서 식별된다. 그러한 예들에서, 컴포넌트들은 하드웨어, 소프트웨어, 또는 이들의 조합일 수도 있다. 컴포넌트들은 별개의 컴포넌트들 또는 단일 컴포넌트의 서브-컴포넌트들일 수도 있다.
이에 따라, 본 명세서에서 설명된 하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현되면, 그 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장 또는 인코딩될 수도 있다. 컴퓨터 판독가능 매체들은 컴퓨터 저장 매체들을 포함한다. 저장 매체들은 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다. 제한이 아닌 예로서, 그러한 컴퓨터 판독가능 매체들은 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 전기적으로 소거가능한 프로그래밍가능 ROM (EEPROM), 광학 디스크 스토리지, 자기 디스크 스토리지, 다른 자기 저장 디바이스들, 전술한 타입들의 컴퓨터 판독가능 매체들의 조합들, 또는 컴퓨터에 의해 액세스될 수 있는 명령들 또는 데이터 구조들의 형태의 컴퓨터 실행가능 코드를 저장하는데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다.
일반적으로, 본 개시는 단일 디바이스 또는 다중 디바이스들에서 그래픽 프로세싱 파이프라인을 갖고, 그래픽 콘텐츠의 렌더링을 개선하고, 및/또는 프로세싱 유닛, 즉 GPU 와 같은, 본 명세서에서 설명된 하나 이상의 기법들을 수행하도록 구성된 임의의 프로세싱 유닛의 부하를 감소시키기 위한 기법들을 설명한다. 예를 들어, 본 개시는 그래픽 프로세싱을 활용하는 임의의 디바이스에서 그래픽 프로세싱을 위한 기법들을 설명한다. 다른 예시적인 이익들은 본 개시 전반에 걸쳐 설명된다.
본 명세서에서 사용된 바와 같이, 용어 "콘텐츠" 의 인스턴스들은 "그래픽 콘텐츠", "이미지" 를 지칭할 수도 있으며, 그 반대도 마찬가지이다. 이것은 용어들이 형용사, 명사, 또는 다른 품사들로서 사용되고 있는지 여부에 관계없이 사실이다. 일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "그래픽 콘텐츠" 는 그래픽 프로세싱 파이프라인의 하나 이상의 프로세스들에 의해 생성된 콘텐츠를 지칭할 수도 있다. 일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "그래픽 콘텐츠" 는 그래픽 프로세싱을 수행하도록 구성된 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다. 일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "그래픽 콘텐츠" 는 그래픽 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다.
일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "디스플레이 콘텐츠" 는 디스플레이 프로세싱을 수행하도록 구성된 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다. 일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "디스플레이 콘텐츠" 는 디스플레이 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다. 그래픽 콘텐츠는 디스플레이 콘텐츠가 되도록 프로세싱될 수도 있다. 예를 들어, 그래픽 프로세싱 유닛은 프레임과 같은 그래픽 콘텐츠를 버퍼 (프레임버퍼로서 지칭될 수도 있음) 에 출력할 수도 있다. 디스플레이 프로세싱 유닛은 버퍼로부터 하나 이상의 프레임들과 같은 그래픽 콘텐츠를 판독하고, 그에 대해 하나 이상의 디스플레이 프로세싱 기법들을 수행하여 디스플레이 콘텐츠를 생성할 수도 있다. 예를 들어, 디스플레이 프로세싱 유닛은 하나 이상의 렌더링된 계층들에 대해 합성을 수행하여 프레임을 생성하도록 구성될 수도 있다. 다른 예로서, 디스플레이 프로세싱 유닛은 2 개 이상의 계층들을 단일 프레임으로 함께 합성, 블렌딩, 또는 그렇지 않으면 결합하도록 구성될 수도 있다. 디스플레이 프로세싱 유닛은 프레임에 대해 스케일링, 예를 들어, 업스케일링 또는 다운스케일링을 수행하도록 구성될 수도 있다. 일부 예들에서, 프레임은 계층을 지칭할 수도 있다. 다른 예들에서, 프레임은 프레임을 형성하기 위해 이미 함께 블렌딩된 2 개 이상의 계층들을 지칭할 수도 있으며, 즉 프레임은 2 개 이상의 계층들을 포함하고, 2 개 이상의 계층들을 포함하는 프레임은 후속하여 블렌딩될 수도 있다.
도 1 은 본 개시의 하나 이상의 기법들을 구현하도록 구성된 예시적인 콘텐츠 생성 시스템 (100) 을 예시하는 블록 다이어그램이다. 콘텐츠 생성 시스템 (100) 은 디바이스 (104) 를 포함한다. 디바이스 (104) 는 본 명세서에서 설명된 다양한 기능들을 수행하기 위한 하나 이상의 컴포넌트들 또는 회로들을 포함할 수도 있다. 일부 예들에서, 디바이스 (104) 의 하나 이상의 컴포넌트들은 SOC 의 컴포넌트들일 수도 있다. 디바이스 (104) 는 본 개시의 하나 이상의 기법들을 수행하도록 구성된 하나 이상의 컴포넌트들을 포함할 수도 있다. 도시된 예에서, 디바이스 (104) 는 프로세싱 유닛 (120), 콘텐츠 인코더/디코더 (122), 및 시스템 메모리 (124) 를 포함할 수도 있다. 일부 양태들에서, 디바이스 (104) 는 다수의 옵션의 컴포넌트들, 예를 들어, 통신 인터페이스 (126), 트랜시버 (132), 수신기 (128), 송신기 (130), 디스플레이 프로세서 (127), 및 하나 이상의 디스플레이들 (131) 을 포함할 수 있다. 디스플레이 (131) 에 대한 언급은 하나 이상의 디스플레이들 (131) 을 지칭할 수도 있다. 예를 들어, 디스플레이 (131) 는 단일 디스플레이 또는 다중 디스플레이들을 포함할 수도 있다. 디스플레이 (131) 는 제 1 디스플레이 및 제 2 디스플레이를 포함할 수도 있다. 제 1 디스플레이는 좌안 디스플레이일 수도 있고, 제 2 디스플레이는 우안 디스플레이일 수도 있다. 일부 예들에서, 제 1 및 제 2 디스플레이는 그에 대한 제시를 위해 상이한 프레임들을 수신할 수도 있다. 다른 예들에서, 제 1 및 제 2 디스플레이는 그에 대한 제시를 위해 동일한 프레임들을 수신할 수도 있다. 추가 예들에서, 그래픽 프로세싱의 결과들은 디바이스 상에 디스플레이되지 않을 수도 있으며, 예를 들어, 제 1 및 제 2 디스플레이는 그에 대한 제시를 위해 임의의 프레임들을 수신하지 않을 수도 있다. 대신에, 프레임들 또는 그래픽 프로세싱 결과들은 다른 디바이스로 전송될 수도 있다. 일부 양태들에서, 이것은 스플릿-렌더링 (split-rendering) 으로서 지칭될 수 있다.
프로세싱 유닛 (120) 은 내부 메모리 (121) 를 포함할 수도 있다. 프로세싱 유닛 (120) 은 그래픽 프로세싱 파이프라인 (107) 에서와 같이 그래픽 프로세싱을 수행하도록 구성될 수도 있다. 콘텐츠 인코더/디코더 (122) 는 내부 메모리 (123) 를 포함할 수도 있다. 일부 예들에서, 디바이스 (104) 는 하나 이상의 디스플레이들 (131) 에 의한 제시 전에 프로세싱 유닛 (120) 에 의해 생성된 하나 이상의 프레임들에 대해 하나 이상의 디스플레이 프로세싱 기법들을 수행하기 위해 디스플레이 프로세서 (127) 와 같은 디스플레이 프로세서를 포함할 수도 있다. 디스플레이 프로세서 (127) 는 디스플레이 프로세싱을 수행하도록 구성될 수도 있다. 예를 들어, 디스플레이 프로세서 (127) 는 프로세싱 유닛 (120) 에 의해 생성된 하나 이상의 프레임들에 대해 하나 이상의 디스플레이 프로세싱 기법들을 수행하도록 구성될 수도 있다. 하나 이상의 디스플레이들 (131) 은 디스플레이 프로세서 (127) 에 의해 프로세싱된 프레임들을 디스플레이하거나 또는 그렇지 않으면 제시하도록 구성될 수도 있다. 일부 예들에서, 하나 이상의 디스플레이들 (131) 은 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 프로젝션 디스플레이 디바이스, 증강 현실 디스플레이 디바이스, 가상 현실 디스플레이 디바이스, 머리 착용 디스플레이, 또는 임의의 다른 타입의 디스플레이 디바이스 중 하나 이상을 포함할 수도 있다.
프로세싱 유닛 (120) 및 콘텐츠 인코더/디코더 (122) 외부의 메모리, 이를 테면 시스템 메모리 (124) 는 프로세싱 유닛 (120) 및 콘텐츠 인코더/디코더 (122) 에 액세스가능할 수도 있다. 예를 들어, 프로세싱 유닛 (120) 및 콘텐츠 인코더/디코더 (122) 는 시스템 메모리 (124) 와 같은 외부 메모리로부터 판독 및/또는 그에 기입하도록 구성될 수도 있다. 프로세싱 유닛 (120) 및 콘텐츠 인코더/디코더 (122) 는 버스 상으로 시스템 메모리 (124) 에 통신가능하게 커플링될 수도 있다. 일부 예들에서, 프로세싱 유닛 (120) 및 콘텐츠 인코더/디코더 (122) 는 버스 또는 상이한 커넥션 상으로 서로 통신가능하게 커플링될 수도 있다.
콘텐츠 인코더/디코더 (122) 는 시스템 메모리 (124) 및/또는 통신 인터페이스 (126) 와 같은 임의의 소스로부터 그래픽 콘텐츠를 수신하도록 구성될 수도 있다. 시스템 메모리 (124) 는 수신된 인코딩된 또는 디코딩된 그래픽 콘텐츠를 저장하도록 구성될 수도 있다. 콘텐츠 인코더/디코더 (122) 는 인코딩된 또는 디코딩된 그래픽 콘텐츠를, 예를 들어, 시스템 메모리 (124) 및/또는 통신 인터페이스 (126) 로부터, 인코딩된 픽셀 데이터의 형태로, 수신하도록 구성될 수도 있다. 콘텐츠 인코더/디코더 (122) 는 임의의 그래픽 콘텐츠를 인코딩 또는 디코딩하도록 구성될 수도 있다.
내부 메모리 (121) 또는 시스템 메모리 (124) 는 하나 이상의 휘발성 또는 비휘발성 메모리들 또는 저장 디바이스들을 포함할 수도 있다. 일부 예들에서, 내부 메모리 (121) 또는 시스템 메모리 (124) 는 RAM, SRAM, DRAM, 소거가능한 프로그래밍가능 ROM (EPROM), 전기적으로 소거가능한 프로그래밍가능 ROM (EEPROM), 플래시 메모리, 자기 데이터 매체들 또는 광학 저장 매체들, 또는 임의의 다른 타입의 메모리를 포함할 수도 있다.
내부 메모리 (121) 또는 시스템 메모리 (124) 는 일부 예들에 따른 비일시적 저장 매체일 수도 있다. 용어 "비일시적" 은, 저장 매체가 캐리어 파 (carrier wave) 또는 전파 신호에서 구현되지 않음을 표시할 수도 있다. 하지만, 용어 "비일시적" 은, 내부 메모리 (121) 또는 시스템 메모리 (124) 가 이동가능하지 않다는 것 또는 그 콘텐츠가 정적이라는 것을 의미하도록 해석되지 않아야 한다. 일 예로서, 시스템 메모리 (124) 는 디바이스 (104) 로부터 제거되고 다른 디바이스로 이동될 수도 있다. 다른 예로서, 시스템 메모리 (124) 는 디바이스 (104) 로부터 제거가능하지 않을 수도 있다.
프로세싱 유닛 (120) 은 중앙 프로세싱 유닛 (CPU), 그래픽 프로세싱 유닛 (GPU), 범용 GPU (GPGPU), 또는 그래픽 프로세싱을 수행하도록 구성될 수도 있는 임의의 다른 프로세싱 유닛일 수도 있다. 일부 예들에서, 프로세싱 유닛 (120) 은 디바이스 (104) 의 마더보드에 통합될 수도 있다. 일부 예들에서, 프로세싱 유닛 (120) 은 디바이스 (104) 의 마더보드 내의 포트에 설치되는 그래픽 카드 상에 존재할 수도 있거나, 또는 그렇지 않으면 디바이스 (104) 와 상호동작하도록 구성된 주변 디바이스 내에 통합될 수도 있다. 프로세싱 유닛 (120) 은 하나 이상의 마이크로프로세서들, GPU들, 주문형 집적 회로들 (ASIC들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 산술 로직 유닛들 (ALU들), 디지털 신호 프로세서들 (DSP들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 다른 균등한 집적된 또는 별개의 로직 회로부, 또는 이들의 임의의 조합들과 같은 하나 이상의 프로세서들을 포함할 수도 있다. 기법들이 부분적으로 소프트웨어에서 구현되면, 프로세싱 유닛 (120) 은 적합한 비일시적 컴퓨터 판독가능 저장 매체, 예를 들어, 내부 메모리 (121) 에 소프트웨어에 대한 명령들을 저장할 수도 있고, 본 개시의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하여 하드웨어에서 명령들을 실행할 수도 있다. 하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함하여, 전술한 것 중 임의의 것은 하나 이상의 프로세서들인 것으로 고려될 수도 있다.
콘텐츠 인코더/디코더 (122) 는 콘텐츠 디코딩을 수행하도록 구성된 임의의 프로세싱 유닛일 수도 있다. 일부 예들에서, 콘텐츠 인코더/디코더 (122) 는 디바이스 (104) 의 마더보드에 통합될 수도 있다. 콘텐츠 인코더/디코더 (122) 는 하나 이상의 마이크로프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 산술 로직 유닛들 (ALU들), 디지털 신호 프로세서들 (DSP들), 비디오 프로세서들, 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 다른 균등한 집적된 또는 별개의 로직 회로부, 또는 이들의 임의의 조합들과 같은 하나 이상의 프로세서들을 포함할 수도 있다. 기법들이 부분적으로 소프트웨어에서 구현되면, 콘텐츠 인코더/디코더 (122) 는 적합한 비일시적 컴퓨터 판독가능 저장 매체, 예를 들어, 내부 메모리 (123) 에 소프트웨어에 대한 명령들을 저장할 수도 있고, 본 개시의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하여 하드웨어에서 명령들을 실행할 수도 있다. 하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함하여, 전술한 것 중 임의의 것은 하나 이상의 프로세서들인 것으로 고려될 수도 있다.
일부 양태들에서, 콘텐츠 생성 시스템 (100) 은 옵션의 통신 인터페이스 (126) 를 포함할 수 있다. 통신 인터페이스 (126) 는 수신기 (128) 및 송신기 (130) 를 포함할 수도 있다. 수신기 (128) 는 디바이스 (104) 에 대하 본 명세서에서 설명된 임의의 수신 기능을 수행하도록 구성될 수도 있다. 추가적으로, 수신기 (128) 는 정보, 예를 들어, 눈 또는 머리 위치 정보, 렌더링 커맨드들, 또는 로케이션 정보를 다른 디바이스로부터 수신하도록 구성될 수도 있다. 송신기 (130) 는 디바이스 (104) 에 대해 본 명세서에서 설명된 임의의 송신 기능을 수행하도록 구성될 수도 있다. 예를 들어, 송신기 (130) 는 콘텐츠에 대한 요청을 포함할 수도 있는 정보를 다른 디바이스에 송신하도록 구성될 수도 있다. 수신기 (128) 및 송신기 (130) 는 트랜시버 (132) 로 결합될 수도 있다. 그러한 예들에서, 트랜시버 (132) 는 디바이스 (104) 에 대해 본 명세서에서 설명된 임의의 수신 기능 및/또는 송신 기능을 수행하도록 구성될 수도 있다.
다시 도 1 을 참조하면, 소정의 양태들에서, 그래픽 프로세싱 파이프라인 (107) 은 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정하도록 구성된 결정 컴포넌트 (198) 를 포함할 수도 있다. 결정 컴포넌트 (198) 는 또한, 하나 이상의 뷰포인트들의 각각에 기초하여 적어도 하나의 장면을 복수의 구역들로 분할하도록 구성될 수 있다. 결정 컴포넌트 (198) 는 또한, 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부를 결정하도록 구성될 수 있다. 결정 컴포넌트 (198) 는 또한, 하나 이상의 뷰포인트들에 기초하여 복수의 구역들의 각각에 대한 지오메트리 버퍼를 생성하도록 구성될 수 있다. 결정 컴포넌트 (198) 는 또한, 하나 이상의 뷰포인트들에 기초하여 복수의 구역들의 각각에 대한 지오메트리 버퍼들을 결합하도록 구성될 수 있다. 결정 컴포넌트 (198) 는 또한, 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부에 대한 셰이딩 정보를 결정하도록 구성될 수 있다. 결정 컴포넌트 (198) 는 또한, 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부를 저장하도록 구성될 수 있다. 결정 컴포넌트 (198) 는 또한, 하나 이상의 뷰포인트들의 복수의 구역들의 각각에 대한 지오메트리 버퍼에 기초하여 적어도 하나의 이미지를 렌더링하도록 구성될 수 있다.
본 명세서에서 설명된 바와 같이, 디바이스 (104) 와 같은 디바이스는, 본 명세서에서 설명된 하나 이상의 기법들을 수행하도록 구성된 임의의 디바이스, 장치, 또는 시스템을 지칭할 수도 있다. 예를 들어, 디바이스는 서버, 기지국, 사용자 장비, 클라이언트 디바이스, 스테이션, 액세스 포인트, 컴퓨터, 예를 들어, 개인용 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 컴퓨터 워크스테이션, 또는 메인프레임 컴퓨터, 최종 제품, 장치, 폰, 스마트 폰, 서버, 비디오 게임 플랫폼 또는 콘솔, 핸드헬드 디바이스, 예를 들어, 휴대용 비디오 게임 디바이스 또는 개인용 디지털 보조기 (PDA), 웨어러블 컴퓨팅 디바이스, 예를 들어, 스마트 워치, 증강 현실 디바이스, 또는 가상 현실 디바이스, 비-웨어러블 디바이스, 디스플레이 또는 디스플레이 디바이스, 텔레비전, 텔레비전 셋탑 박스, 중간 네트워크 디바이스, 디지털 미디어 플레이어, 비디오 스트리밍 디바이스, 콘텐츠 스트리밍 디바이스, 자동차용 컴퓨터, 임의의 모바일 디바이스, 그래픽 콘텐츠를 생성하도록 구성된 임의의 디바이스, 또는 본 명세서에서 설명된 하나 이상의 기법들을 수행하도록 구성된 임의의 디바이스일 수도 있다. 본 명세서에서의 프로세스들은 특정 컴포넌트 (예를 들어, GPU) 에 의해 수행되는 것으로 설명될 수도 있지만, 추가 실시형태들에서, 개시된 실시형태들과 일치하는, 다른 컴포넌트들 (예를 들어, CPU) 을 사용하여 수행될 수 있다.
GPU들은 GPU 파이프라인에서 다중 타입들의 데이터 또는 데이터 패킷들을 프로세싱할 수 있다. 예를 들어, 일부 양태들에서, GPU 는 2 개의 타입들의 데이터 또는 데이터 패킷들, 예를 들어, 컨텍스트 레지스터 패킷들 및 드로우 콜 데이터를 프로세싱할 수 있다. 컨텍스트 레지스터 패킷은 그래픽 컨텍스트가 프로세싱될 방법을 조절할 수 있는, 예를 들어, 글로벌 레지스터, 셰이딩 프로그램, 또는 상수 데이터에 관한 정보와 같은 글로벌 상태 정보의 세트일 수 있다. 예를 들어, 컨텍스트 레지스터 패킷들은 컬러 포맷에 관한 정보를 포함할 수 있다. 컨텍스트 레지스터 패킷들의 일부 양태들에서, 어느 작업부하가 컨텍스트 레지스터에 속하는지를 표시하는 비트가 있을 수 있다. 또한, 동시에 및/또는 병렬로 실행되는 다중 기능들 또는 프로그래밍이 있을 수 있다. 예를 들어, 기능들 또는 프로그래밍은 소정의 동작, 예를 들어, 컬러 모드 또는 컬러 포맷을 설명할 수 있다. 이에 따라, 컨텍스트 레지스터는 GPU 의 다중 상태들을 정의할 수 있다.
컨텍스트 상태들은 개별 프로세싱 유닛, 예를 들어, 버텍스 페처 (VFD), 버텍스 셰이더 (VS), 셰이더 프로세서, 또는 지오메트리 프로세서가 어떻게 기능하는지, 및/또는 프로세싱 유닛이 어떤 모드에서 기능하는지를 결정하는데 활용될 수 있다. 그렇게 하기 위해, GPU들은 컨텍스트 레지스터들 및 프로그래밍 데이터를 사용할 수 있다. 일부 양태들에서, GPU 는 모드 또는 상태의 컨텍스트 레지스터 정의에 기초하여 파이프라인에서 작업부하, 예를 들어, 버텍스 또는 픽셀 작업부하를 생성할 수 있다. 소정의 프로세싱 유닛들, 예를 들어, VFD 는, 소정의 기능들, 예를 들어, 버텍스가 어셈블링되는 방법을 결정하기 위해 이들 상태들을 사용할 수 있다. 이들 모드들 또는 상태들이 변경될 수 있기 때문에, GPU들은 대응하는 컨텍스트들을 변경할 수도 있다. 추가적으로, 모드 또는 상태에 대응하는 작업부하는 변경되는 모드 또는 상태에 따를 수도 있다.
도 2 는 본 개시의 하나 이상의 기법들에 따른 예시적인 GPU (200) 를 예시한다. 도 2 에 도시된 바와 같이, GPU (200) 는 커맨드 프로세서 (CP) (210), 드로우 콜 패킷들 (212), VFD (220), VS (222), 버텍스 캐시 (VPC) (224), 삼각형 셋업 엔진 (TSE) (226), 래스터화기 (RAS) (228), Z 프로세스 엔진 (ZPE) (230), 픽셀 보간기 (PI) (232), 프래그먼트 셰이더 (FS) (234), 렌더 백엔드 (RB) (236), L2 캐시 (UCHE) (238), 및 시스템 메모리 (240) 를 포함한다. 도 2 는 GPU (200) 가 프로세싱 유닛들 (220-238) 을 포함하는 것을 디스플레이하지만, GPU (200) 는 다수의 추가적인 프로세싱 유닛들을 포함할 수 있다.   추가적으로, 프로세싱 유닛들 (220-238) 은 단지 예일 뿐이고 프로세싱 유닛들의 임의의 조합 또는 순서가 본 개시에 따른 GPU들에 의해 사용될 수 있다. GPU (200) 는 또한, 커맨드 버퍼 (250), 컨텍스트 레지스터 패킷들 (260), 및 컨텍스트 상태들 (261) 을 포함한다.
도 2 에 도시된 바와 같이, GPU 는 커맨드 버퍼를 컨텍스트 레지스터 패킷들, 예를 들어, 컨텍스트 레지스터 패킷들 (260), 및/또는 드로우 콜 데이터 패킷들, 예를 들어, 드로우 콜 패킷들 (212) 로 파싱하기 위해 하드웨어 가속기, 또는 CP, 예를 들어, CP (210) 를 활용할 수 있다. 그 다음, CP (210) 는 컨텍스트 레지스터 패킷들 (260) 또는 드로우 콜 데이터 패킷들 (212) 을 별개의 경로들을 통해 GPU 내의 프로세싱 유닛들 또는 블록들로 전송할 수 있다. 또한, 커맨드 버퍼 (250) 는 상이한 상태들의 컨텍스트 레지스터들과 드로우 콜들을 교대시킬 수 있다. 예를 들어, 커맨드 버퍼는 다음의 방식으로 구조화될 수 있다: 컨텍스트 N 의 컨텍스트 레지스터, 컨텍스트 N 의 드로우 콜(들), 컨텍스트 N+1 의 컨텍스트 레지스터, 및 컨텍스트 N+1 의 드로우 콜(들).
GPU들은 다양한 상이한 방식들로 이미지들을 렌더링할 수 있다. 일부 인스턴스들에서, GPU들은 렌더링 또는 타일링된 렌더링을 사용하여 이미지를 렌더링할 수 있다. 타일링된 렌더링 GPU들에서, 이미지는 상이한 섹션들 또는 타일들로 분할 또는 분리될 수 있다. 이미지의 분할 후, 각각의 섹션 또는 타일은 별도로 렌더링될 수 있다. 타일링된 렌더링 GPU들은, 그리드의 각각의 부분, 즉, 타일이 별도로 렌더링되도록, 컴퓨터 그래픽 이미지들을 그리드 포맷으로 분할할 수 있다. 일부 양태들에서, 비닝 패스 동안, 이미지는 상이한 빈들 또는 타일들로 분할될 수 있다. 일부 양태들에서, 비닝 패스 동안, 가시적인 프리미티브들 또는 드로우 콜들이 식별될 수 있는 곳에서 가시성 스트림 (visibility stream) 이 구성될 수 있다.
일부 양태들에서, GPU들은 드로잉 또는 렌더링 프로세스를 상이한 빈들 또는 타일들에 적용할 수 있다. 예를 들어, GPU 는 하나의 빈으로 렌더링하고, 빈 내의 프리미티브들 또는 픽셀들에 대한 모든 드로우들을 수행할 수 있다. 빈으로 렌더링하는 프로세스 동안, 렌더 타겟들은 GPU 내부 메모리 (GMEM) 에 로케이팅될 수 있다.   일부 인스턴스들에서, 하나의 빈으로 렌더링한 후, 렌더 타겟들의 콘텐츠는 시스템 메모리로 이동될 수 있고 GMEM 은 다음 빈을 렌더링하기 위해 자유로워질 수 있다.   추가적으로, GPU 는 다른 빈으로 렌더링하고, 그 빈 내의 프리미티브들 또는 픽셀들에 대한 드로우들을 수행할 수 있다. 따라서, 일부 양태들에서, 하나의 표면에서의 모든 드로우들을 커버하는 적은 수의 빈들, 예를 들어, 4 개의 빈들이 있을 수도 있다. 또한, GPU들은 하나의 빈 내의 모든 드로우들을 순환할 수 있지만, 가시적인 드로우 콜들, 즉 가시적인 지오메트리를 포함하는 드로우 콜들에 대한 드로우들을 수행할 수 있다. 일부 양태들에서, 가시성 스트림은 예를 들어, 비닝 패스에서, 이미지 또는 장면에서 각각의 프리미티브의 가시성 정보를 결정하기 위해, 생성될 수 있다. 예를 들어, 이 가시성 스트림은 소정의 프리미티브가 가시적인지 아닌지를 식별할 수 있다. 일부 양태들에서, 이 정보는 예를 들어, 렌더링 패스에서, 가시적이지 않은 프리미티브들을 제거하는데 사용될 수 있다. 또한, 가시적인 것으로 식별되는 프리미티브들의 적어도 일부는 렌더링 패스에서 렌더링될 수 있다.
타일링된 렌더링의 일부 양태들에서, 다중 프로세싱 페이즈들 또는 패스들이 있을 수 있다. 예를 들어, 렌더링은 2 개의 패스들, 예를 들어, 가시성 또는 빈-가시성 패스 및 렌더링 또는 빈-렌더링 패스에서 수행될 수 있다. 가시성 패스 동안, GPU 는 렌더링 작업부하를 입력하고, 프리미티브들 또는 삼각형들의 위치들을 기록한 후, 어느 프리미티브들 또는 삼각형들이 어느 빈 또는 영역에 속하는지를 결정할 수 있다. 가시성 패스의 일부 양태들에서, GPU들은 또한 가시성 스트림에서 각각의 프리미티브 또는 삼각형의 가시성을 식별 또는 마킹할 수 있다. 렌더링 패스 동안, GPU 는 가시성 스트림을 입력하고 하나의 빈 또는 영역을 한 번에 프로세싱할 수 있다. 일부 양태들에서, 가시성 스트림은 어느 프리미티브들, 또는 프리미티브들의 버텍스들이 가시적인지 또는 가시적이지 않은지를 결정하기 위해 분석될 수 있다. 이와 같이, 가시적인 프리미티브들, 또는 프리미티브들의 버텍스들이 프로세싱될 수도 있다. 그렇게 함으로써, GPU들은 가시적이지 않은 프리미티브들 또는 삼각형들을 프로세싱 또는 렌더링하는 불필요한 작업부하를 감소시킬 수 있다.
일부 양태들에서, 가시성 패스 동안, 소정의 타입들의 프리미티브 지오메트리, 예를 들어, 위치 지오메트리가 프로세싱될 수도 있다. 추가적으로, 프리미티브들 또는 삼각형들의 위치 또는 로케이션에 의존하여, 프리미티브들은 상이한 빈들 또는 영역들로 분류될 수도 있다. 일부 인스턴스들에서, 프리미티브들 또는 삼각형들을 상이한 빈들로 분류하는 것은 이들 프리미티브들 또는 삼각형들에 대한 가시성 정보를 결정함으로써 수행될 수도 있다. 예를 들어, GPU들은 예를 들어, 시스템 메모리에서, 각각의 빈 또는 영역 내의 각각의 프리미티브들의 가시성 정보를 결정 또는 기입할 수도 있다. 이 가시성 정보는 가시성 스트림을 결정 또는 생성하는데 사용될 수 있다. 렌더링 패스에서, 각각의 빈 내의 프리미티브들은 별도로 렌더링될 수 있다. 이들 인스턴스들에서, 가시성 스트림은 그 빈에 대해 가시적이지 않은 프리미티브들을 드롭하는데 사용되는 메모리로부터 페치될 수 있다.
GPU들 또는 GPU 아키텍처들의 일부 양태들은 렌더링, 예를 들어, 소프트웨어 렌더링 및 하드웨어 렌더링을 위한 다수의 상이한 옵션들을 제공할 수 있다. 소프트웨어 렌더링에서, 드라이버 또는 CPU 는 각각의 뷰를 한 번 프로세싱함으로써 전체 프레임 지오메트리를 복제할 수 있다. 추가적으로, 일부 상이한 상태들은 뷰에 의존하여 변경될 수도 있다. 이와 같이, 소프트웨어 렌더링에서, 소프트웨어는 이미지 내의 각각의 뷰포인트에 대해 렌더링하기 위해 활용될 수도 있는 일부 상태들을 변경함으로써 전체 작업부하를 복제할 수 있다. 소정의 양태들에서, GPU들이 이미지 내의 각각의 뷰포인트에 대해 동일한 작업부하를 여러 번 제출할 수도 있으므로, 오버헤드의 양이 증가될 수도 있다. 하드웨어 렌더링에서, 하드웨어 또는 GPU 는 이미지 내의 각각의 뷰포인트에 대한 지오메트리를 복제 또는 프로세싱할 책임이 있을 수도 있다. 이에 따라, 하드웨어는 이미지 내의 각각의 뷰포인트에 대한 프리미티브들 또는 삼각형들의 복제 또는 프로세싱을 관리할 수 있다.
도 3 은 다중 빈들로 분할된 다중 프리미티브들을 포함하는 이미지 또는 표면 (300) 을 예시한다. 도 3 에 도시된 바와 같이, 이미지 또는 표면 (300) 은 프리미티브들 (321, 322, 323, 및 324) 을 포함하는 영역 (302) 을 포함한다. 프리미티브들 (321, 322, 323, 및 324) 은 상이한 빈들, 예를 들어, 빈들 (310, 311, 312, 313, 314, 및 315) 로 분할 또는 배치된다. 도 3 은 프리미티브들 (321-324) 에 대한 다중 뷰포인트들을 사용하는 타일링된 렌더링의 예를 예시한다. 예를 들어, 프리미티브들 (321-324) 은 제 1 뷰포인트 (350) 및 제 2 뷰포인트 (351) 에 있다. 이와 같이, 영역 (302) 을 포함하는 이미지 또는 표면 (300) 을 프로세싱 또는 렌더링하는 GPU 는 다중 뷰포인트들 또는 다중 뷰 렌더링을 활용할 수 있다.
본 명세서에 나타낸 바와 같이, GPU들 또는 그래픽 프로세싱 유닛들은 전력 소비를 감소시키거나 메모리 대역폭을 절약하기 위해 타일링된 렌더링 아키텍처를 사용할 수 있다. 위에서 추가로 언급된 바와 같이, 이 렌더링 방법은 장면을 다중 빈들로 분할할 수 있을 뿐만 아니라, 각각의 빈에서 가시적인 삼각형들을 식별하는 가시성 패스를 포함할 수 있다. 따라서, 타일링된 렌더링에서, 전체 스크린은 다중 빈들 또는 타일들로 분할될 수 있다. 그 다음, 장면은 각각의 빈에 대해 여러 번, 예를 들어, 한 번 이상 렌더링될 수 있다.
그래픽 렌더링의 양태들에서, 일부 그래픽 애플리케이션들은 단일 타겟, 즉, 렌더 타겟으로 한 번 이상 렌더링할 수도 있다. 예를 들어, 그래픽 렌더링에서, 시스템 메모리 상의 프레임 버퍼는 여러 번 업데이트될 수도 있다. 프레임 버퍼는 GPU 에 대한 디스플레이 데이터를 저장하는 것을 돕기 위해, 예를 들어, 비트맵 또는 스토리지를 포함하는 메모리 또는 랜덤 액세스 메모리 (RAM) 의 일부일 수 있다. 프레임 버퍼는 또한 완전한 데이터 프레임을 포함하는 메모리 버퍼일 수 있다. 추가적으로, 프레임 버퍼는 로직 버퍼일 수 있다. 일부 양태들에서, 프레임 버퍼를 업데이트하는 것은 빈 또는 타일 렌더링에서 수행될 수 있고, 상기 논의된 바와 같이, 표면은 다중 빈들 또는 타일들로 분할되고, 그 다음 각각의 빈 또는 타일은 별도로 렌더링될 수 있다. 또한, 타일링된 렌더링에서, 프레임 버퍼는 다중 빈들 또는 타일들로 파티셔닝될 수 있다.
본 명세서에 나타낸 바와 같이, 빈 또는 타일링된 렌더링 아키텍처에서, 프레임 버퍼들은 예를 들어, 상이한 타입들의 메모리로부터 렌더링할 때, 반복적으로 그들에 저장 또는 기입된 데이터를 가질 수 있다. 이것은 프레임 버퍼 또는 시스템 메모리를 리졸빙 (resolving) 또는 언리졸빙 (unresolving) 하는 것으로서 지칭될 수 있다. 예를 들어, 하나의 프레임 버퍼에 저장 또는 기입한 후 다른 프레임 버퍼로 스위칭할 때, 프레임 버퍼 상의 데이터 또는 정보는 GPU 에서의 GPU 내부 메모리 (GMEM) 로부터 시스템 메모리, 즉, DDR (double data rate) RAM 또는 동적 RAM (DRAM) 의 메모리로 리졸빙될 수 있다.
일부 양태들에서, 시스템 메모리는 또한, 예를 들어, 디바이스 또는 스마트 폰 상에 데이터 또는 정보를 저장하기 위한 시스템 온 칩 (SoC) 메모리 또는 다른 칩 기반 메모리일 수 있다. 시스템 메모리는 또한, CPU 및/또는 GPU 에 의해 공유되는 물리적 데이터 스토리지일 수 있다. 일부 양태들에서, 시스템 메모리는 예를 들어, 디바이스 또는 스마트 폰 상의 DRAM 칩일 수 있다. 이에 따라, SoC 메모리는 데이터를 저장하는 칩 기반 방식일 수 있다.
일부 양태들에서, GMEM 은 정적 RAM (SRMA) 에 의해 구현될 수 있는 GPU 에서의 온 칩 메모리일 수 있다. 추가적으로, GMEM 은 디바이스, 예를 들어, 스마트 폰 상에 저장될 수 있다. 본 명세서에 나타낸 바와 같이, 데이터 또는 정보는 예를 들어, 디바이스에서, 시스템 메모리 또는 DRAM 과 GMEM 사이에서 전송될 수 있다. 일부 양태들에서, 시스템 메모리 또는 DRAM 은 CPU 또는 GPU 에 있을 수 있다. 추가적으로, 데이터는 DDR 또는 DRAM 에 저장될 수 있다. 빈 또는 타일링된 렌더링에서, 메모리의 작은 부분은 GPU 에, 예를 들어, GMEM 에 저장될 수 있다. 일부 인스턴스들에서, GMEM 에 데이터를 저장하는 것은 프레임 버퍼 또는 시스템 메모리에 데이터를 저장하는 것과 비교하여 더 큰 프로세싱 작업부하 및/또는 소비된 전력을 활용할 수도 있다.
일부 양태들에서, GPU들은 테셀레이션 또는 테셀레이션 프로세스를 수행할 수 있다. 테셀레이션 프로세스 동안, 더 큰 프리미티브들은 더 작은 서브-프리미티브들 또는 테셀레이팅된 프리미티브들로 분할될 수 있다. 테셀레이션은 이미지를 더 상세한 서브-프리미티브들 또는 테셀레이팅된 프리미티브들로 분할할 수 있으며, 이는 더 상세한 렌더링 프로세스 및 더 상세한 그래픽 콘텐츠를 야기할 수 있다. 테셀레이터는 서브-프리미티브들 또는 테셀레이팅된 프리미티브들을 결정 또는 생성할 수 있다. 일부 양태들에서, 하나 이상의 프리미티브들은 패치로 그룹화될 수 있다. 그 다음, 테셀레이터는 하나 이상의 테셀레이션 파라미터들에 따라, 예를 들어, 삼각형들 또는 직사각형들을 사용하여, 패치의 지오메트리 기반 테셀레이션을 결정 또는 생성할 수 있다.
테셀레이션 프로세스는, 프리미티브들의 오리지널 패치에 기초하여 달리 생성되는 것보다 더 상세한 또는 더 평활한 이미지 또는 표면을 결정 또는 생성하는 것을 허용할 수 있다. 추가적으로, 테셀레이션은 이미지에서 더 상세한 표면들을 구현 또는 렌더링하기 위해 사용될 수 있다. 위에서 언급된 바와 같이, 테셀레이션 프로세스는 서브-프리미티브들 또는 테셀레이팅된 프리미티브들을 생성할 수 있다. 이들 서브-프리미티브들 또는 테셀레이팅된 프리미티브들은 예를 들어, 하나 이상의 프리미티브들 또는 패치들에 기초하여, 테셀레이션으로부터의 출력으로서 생성된다. 이들 프리미티브들은 또한, 오리지널 이미지 또는 표면 값에 기초하여 생성되는, 오리지널 또는 정규 프리미티브들로서 지칭될 수 있다. 결정된 또는 생성된 서브-프리미티브들 또는 테셀레이팅된 프리미티브들은 오리지널 프리미티브 또는 패치의 더 상세한 버전일 수 있다. 일부 인스턴스들에서, 서브-프리미티브들의 각각은 프리미티브들 또는 패치의 각각보다 작을 수 있다. 이에 따라, 오리지널 프리미티브들은 서브-프리미티브들 또는 테셀레이팅된 프리미티브들로 분할되는 것으로 보일 수도 있다.
도 4 는 본 개시의 하나 이상의 기법들에 따른 예시적인 이미지 또는 표면 (400) 을 예시한다. 도 4 는 이미지 (400) 가 다중 빈들, 예를 들어, 빈 (410), 빈 (420), 빈 (430), 및 빈 (440) 으로 분할되는 것을 예시한다. 또한, 도 4 는 하나 이상의 프리미티브들 (462) 을 포함하는 패치 (460) 를 디스플레이한다. 일부 양태들에서, 패치 (460) 는 프리미티브들의 그룹 또는 하나 이상의 프리미티브들로서 지칭될 수 있다. 도 4 는 또한, 서브-프리미티브 (472), 서브-프리미티브 (474), 및 서브-프리미티브 (476) 를 포함하는 복수의 서브-프리미티브들 (470) 을 디스플레이한다. 도 4 에 도시된 바와 같이, 복수의 서브-프리미티브들 (470) 내의 개별 서브-프리미티브들은 다수의 상이한 형상들, 이를 테면 직사각형들, 예를 들어, 서브-프리미티브 (476), 또는 삼각형들, 예를 들어, 서브-프리미티브들 (472, 474) 일 수 있다.
도 4 는 전술한 테셀레이션 프로세스의 예를 디스플레이한다. 예를 들어, 오리지널 또는 입력 프리미티브들, 예를 들어, 패치 (460) 내의 하나 이상의 프리미티브들 (462) 은 버텍스들로서 점들을 갖는 더 큰 삼각형들로서 디스플레이된다. 서브-프리미티브들 또는 테셀레이팅된 프리미티브들, 예를 들어, 테셀레이션 프로세스로부터 출력되는 서브-프리미티브들 (470) 은 표면 (400) 상의 더 작은 직사각형들 또는 삼각형들, 예를 들어, 서브-프리미티브들 (472, 474, 476) 로서 디스플레이된다.
다중 뷰 래스터화 (MVR) 는 다중 뷰들의 사용에 기초하여 장면 또는 이미지를 래스터화하는 방식이다. 예를 들어, MVR 은 다수의 유사한 카메라 위치들로부터 다수의 뷰들을 계산 또는 생성할 수 있다. 이들 뷰들은 유사한 카메라 뷰포인트에 기초할 수 있다. MVR 은 잠재적으로 가시적인 세트 (potentially visible set; PVS) 와 같은 다수의 상이한 렌더링 양태들과 함께 활용될 수 있다. 일부 양태들에서, 이들 다중 뷰들이 생성 또는 계산될 수 있고, PVS 는 이들 다중 뷰들에 기초하여 데이터로부터 컴파일링될 수 있다. 일부 인스턴스들에서, PVS 는 다수의 상이한 그래픽 프로세싱 방법들, 예를 들어, 스플릿 렌더링 또는 벡터 스트리밍을 위해 활용될 수 있다.
MVR 은 또한, 플레인 이미지들, 예를 들어, 광 필드 (light field) 들 또는 초점 스택들과 상이한 시각적 결과들을 렌더링할 때 사용될 수 있다. 이것은 가상 현실 (VR), 증강 현실 (AR), 또는 확장 현실 (XR) 디스플레이들, 또는 일반적으로 동적 초점 큐들을 갖는 디스플레이들에 중요할 수 있다. MVR 은 또한, 다른 셰이딩 방법들, 예를 들어, 오브젝트-공간 셰이딩을 보완할 수 있다. 일부 양태들에서, MVR 은 GPU 가 오브젝트-공간 셰이딩의 소정의 양태들, 예를 들어, 공간적 및/또는 시간적 코히어런스를 이용하는 것을 허용할 수 있다. 추가적으로, 일부 인스턴스들에서, MVR 은 사전-셰이딩된 정보, 예를 들어, 텍스처 또는 셰이딩 아틀라스를 저장하는 단일 데이터 구조로부터 다중 이미지들을 생성할 수 있다. 또한, MVR 은 다양한 상이한 GPU들 상에 디커플링된 셰이딩을 제공할 수 있다.
도 5 는 본 개시의 하나 이상의 기법들에 따른 다중 뷰 래스터화를 포함하는 다이어그램 (500) 을 예시한다. 도 5 에 도시된 바와 같이, 다이어그램 (500) 은 장면 (502), 지오메트리 버퍼들 (G-버퍼들) (504), 뷰포인트들 (506), 아틀라스 또는 셰이딩 아틀라스 (508), 및 컬러 버퍼들 (510) 을 포함한다. 도 5 는 예를 들어, 광 필드를 렌더링하는, 프로세스의 예를 디스플레이한다.
도 5 에 도시된 바와 같이, 프로세스의 입력은 다수의 프리미티브들, 예를 들어, N 프리미티브들을 포함하는 장면 (502) 을 포함한다. 프로세스의 입력은 또한, 그리드, 예를 들어, 평면에 정사각형 패턴으로 배열된 K2 뷰포인트들의 그리드로 배열될 수 있는 다중 뷰포인트들 (506) 을 포함한다. 추가적으로, 제 1 상태 후의 프로세스의 출력은 다수의 G-버퍼들 (504), 예를 들어, K2 G-버퍼들을 포함할 수도 있다. 이들 G-버퍼들 (504) 은 다수의 값들, 예를 들어, z 값, 식별 (id), 및/또는 텍스처 수평 (U) 수직 (V) (UV) 좌표들 (tex-uv) 을 포함할 수 있다. 또한, G-버퍼들 (504) 의 각각은 하나의 아틀라스 또는 셰이딩 아틀라스 (508) 를 공유할 수 있다. 또한, 프로세스의 출력은 광 필드에 대한, 컬러 버퍼들 (510), 예를 들어 K2 컬러 버퍼들을 포함한다. 이에 따라, 도 5 는 광 필드를 렌더링하기 위해 3 개의 통합된 패스들이 있을 수 있음을 디스플레이한다.
도 5 에 도시된 바와 같이, 프로세스 또는 알고리즘은 다중 패스들 또는 페이즈들, 예를 들어, 패스 1, 패스 2, 및/또는 패스 3 을 포함할 수 있다. 예를 들어, 패스 1 은 G-버퍼들 (504) 에 대한 뷰포인트들 (506) 의 MVR 을 포함하는 가시성 패스를 포함할 수 있다. 예를 들어, 패스 1 은 다수의 버퍼들, 예를 들어, 깊이, id, 및 tex-uv 버퍼들에 대한 뷰포인트들의 K2 그리드를 포함할 수 있다. 알고리즘은 또한 셰이딩 패스일 수 있는 패스 2 를 포함한다. 셰이딩 패스에서, 각각의 버퍼의 id 의 PVS 는 아틀라스 또는 셰이딩 아틀라스 (508) 로 셰이딩될 수 있다. 추가적으로, 패스 3 은 컬러 버퍼들 (510), 예를 들어, K2 컬러 버퍼에 저장된 투시 뷰들로 아틀라스 텍스처들을 재샘플링하기 위한 지연된 렌더링을 포함할 수 있는 리졸브 패스를 포함할 수 있다.
본 개시의 양태들은 또한 다양한 지오메트리 스테이지들을 포함할 수 있다. 예를 들어, 본 개시는 K2 드로우 콜들을 포함할 수 있다. 본 개시의 양태들은 또한, 버텍스 셰이더로 각각의 프리미티브를 K2 회 인스턴스화할 뿐만 아니라, 고정된 출력, 예를 들어, 1 의 출력을 갖는 지오메트리 셰이더로 각각의 프리미티브를 K2 회 인스턴스화하는 것을 포함할 수 있다. 더욱이, 본 개시의 양태들은 고정된 출력, 예를 들어, K2 의 출력, 또는 MVR 을 위한 다수의 확장들을 갖는 지오메트리 셰이더를 포함할 수 있다. 추가적으로, 본 개시는 지오메트리 스테이지로서 메시 셰이더를 포함할 수 있다.
본 개시의 양태들은 또한, 다수의 상이한 버퍼들, 예를 들어, 소프트웨어에서 정의된 서브-버퍼들을 포함할 수 있다. 다중 버퍼들 또는 G-버퍼들을 저장하기 위해, 본 개시는 이러한 저장을 위한 메모리, 예를 들어, 시스템 메모리 (124) 및/또는 내부 메모리 (121) 를 할당할 수도 있다. 예를 들어, 본 개시는 하드웨어 k-버퍼들 또는 다른 프레임버퍼 어태치먼트들의 양이 제한될 수도 있기 때문에 다양한 G-버퍼들을 포함할 수 있다. 이에 기초하여, 본 개시의 양태들은 소프트웨어에서의 구현을 활용할 수 있다. 예를 들어, GPU 또는 CPU 에 충분한 메모리가 있으면, 버퍼들은 소프트웨어에서 구현될 수 있다. 예를 들어, 본 개시는 상이한 영역들, 예를 들어, 직사각형 영역들로 스플릿된 하나의 큰 버퍼를 사용하여 이 프로세스를 구현할 수 있다. 본 개시의 양태들은 또한, 버텍스 셰이더, 예를 들어, 각각의 버텍스에 대해, 버텍스가 그 출력을 전송해야 하는 서브-버퍼 id 를 결정하는 버텍스 셰이더를 포함할 수 있다. 또한, 본 개시의 양태들은 서브-버퍼 (x,y) 오프셋 당 룩업을 포함하고 이것을 버텍스와 결합할 수 있다.
도 6 은 본 개시의 하나 이상의 기법들에 따른 다이어그램 (600) 을 예시한다. 도 6 에 도시된 바와 같이, 다이어그램 (600) 은 버퍼 (610), 서브-버퍼들 (620), 및 프리미티브 (602) 를 포함한다. 도 6 은 버퍼 (610) 로부터의 프리미티브 (602) 가 서브-버퍼들 (620) 의 상이한 영역들 또는 구역들에 대해 약간 변경될 수 있음을 디스플레이한다. 일부 양태들에서, 지오메트리 셰이더 또는 메시 셰이더가 이 프로세스를 수행할 수 있다.
도 6 에 도시된 바와 같이, 프리미티브가 다중 서브-버퍼들에 있는 경우, 예를 들어, 서브-버퍼들 (620) 내의 프리미티브 (602) 인 경우, 클리핑, 즉 구역 또는 서브-버퍼 (620) 의 경계에서 프리미티브의 분할이 있을 수도 있다. 일부 양태들에서, 클리핑 또는 프리미티브들의 분할은 소프트웨어에서 구현될 수도 있다. 예를 들어, 본 개시는 프래그먼트 셰이더에서 클리핑된 프리미티브들을 폐기할 수 있다. 본 개시의 양태들은 또한 하드웨어 클리핑 평면들을 활용할 수 있다. 또한, 본 개시의 양태들은 서브-버퍼 당 스텐실 마스크를 포함할 수 있다.
위에서 나타낸 바와 같이, 프리미티브 클리핑 이슈들 또는 MVR 을 위한 섹션들 또는 구역들에서의 프리미티브들의 분할을 효율적으로 해결할 필요가 있다. 더욱이, MVR 에서 뷰포인트 또는 카메라로부터 멀리 떨어져 있는 오브젝트들에 대해 생성되는 뷰포인트들의 양이 많을 수 있다. 예를 들어, 프리미티브가 뷰포인트들로부터 멀리 떨어져 있는 경우, 뷰들의 각각으로의 프리미티브의 프로젝션은 유사하거나, 또는 일부 인스턴스들에서 동일할 수도 있고, 프로젝션들의 각각은 계산될 필요가 없을 수도 있다. 이와 같이, MVR 에서 뷰포인트 또는 카메라로부터 멀리 떨어져 있는 오브젝트들에 대해 생성되는 뷰포인트들의 양을 감소시킬 필요가 있다.
본 개시의 양태들은 전술한 클리핑 이슈들 또는 MVR 에서 많은 수의 뷰포인트들로 인한 이슈들을 해결할 수 있다. 예를 들어, 본 개시의 양태들은 뷰포인트 또는 카메라로부터 멀리 떨어져 있는 오브젝트들에 대해 생성되는 뷰포인트들의 양을 감소시킬 수 있다. 일부 인스턴스들에서, 본 개시의 양태들은 하나의 뷰포인트에 대한 구역이 다른 뷰포인트에 대한 구역과 실질적으로 유사 또는 동일한지 여부를 결정할 수 있다.
도 7 은 본 개시의 하나 이상의 기법들에 따른 장면 (700) 을 예시한다. 보다 구체적으로, 도 7 은 장면 (700) 의 평면도 또는 조감도이다. 도 7 에 도시된 바와 같이, 장면 (700) 은 다수의 구역들 또는 섹션들, 예를 들어, 구역 (701), 구역 (702), 구역 (703), 및 구역 (704) 을 포함한다. 장면 (700) 은 또한, 프리미티브 또는 삼각형 (710), 뷰포인트 또는 카메라 (720), 및 뷰잉 절두체 (viewing frustum) (730) 를 포함한다. 프리미티브 또는 삼각형 (710) 은 다중 구역들, 예를 들어, 구역들 (703 및 704) 에 걸쳐 있을 수 있다. 또한, 뷰포인트 또는 카메라 (720) 는 장면 (700) 의 하단 근처의 점이다. 카메라 (720) 는 장면 (700) 내의 하나의 카메라 위치일 수 있으며, 여기서 다수의 다른 카메라 위치들, 예를 들어, 3 개 또는 9 개의 카메라 위치들이 있다.
본 개시의 양태들은 구역들, 예를 들어, 구역들 (701, 702, 703, 및 704) 을 별개의 서브-버퍼들에 할당할 수 있다. 그렇게 함으로써, 장면 (700) 의 3 차원 (3D) 세분이 있을 것이다. 따라서, 본 개시는 장면 (700) 을 다중 구역들로 세분할 수 있다. 일부 양태들에서, 카메라 당 뿐만 아니라 구역 당 하나의 서브-버퍼가 있을 수 있다. 또한, 카메라 (720) 로부터 프리미티브 (710) 까지의 거리는 뷰포인트들을 스위칭할 때 동일하게 유지될 수 있다. 도 7 에 도시된 바와 같이, 프리미티브 (710) 는 상이한 구역들, 예를 들어, 구역 (703) 및 구역 (704) 사이에서 스플릿될 수 있다. 일부 양태들에서, 프리미티브 (710) 는 특정 구역, 예를 들어, 구역 (703) 에 할당될 수 있다. 이에 따라, 프리미티브 또는 삼각형이 구역들 사이에서 스플릿되는 경우, 프리미티브 또는 삼각형은 더 작은 구역에 할당될 수도 있다.
추가적으로, 도 7 에 도시된 바와 같이, 각각의 구역은 다른 구역들의 배수일 수 있다. 예를 들어, 구역 (702) 은 구역 (701) 의 사이즈의 2 배일 수 있고, 구역 (703) 은 구역 (702) 의 사이즈의 2 배일 수 있고, 및/또는 구역 (704) 은 구역 (703) 의 사이즈의 2 배일 수 있다. 도 7 에 도시된 바와 같이, 구역들은 그들이 카메라 (720) 로부터 멀어짐에 따라 점점 더 커질 수 있다. 오브젝트들이 카메라 (720) 로부터 멀어짐에 따라, 뷰들의 양의 지수적 감소가 있을 수도 있다. 이것은 카메라 뷰들 사이의 잠재적인 불일치들의 양을 제한할 수 있다. 따라서, 오브젝트가 카메라로부터 멀리 떨어져 있는 경우, 예를 들어, 카메라가 이미지 평면에 약간 평행하게 병진되면, 유사한 카메라 위치들 사이에 불일치가 거의 없을 수도 있다. 이와 같이, 본 개시는 오브젝트가 점점 카메라로부터 멀리 떨어져 있게 됨에 따라 카메라 위치들 또는 뷰포인트들의 양을 제한할 수 있다. 일부 양태들에서, 본 개시는 대표적인 카메라 위치 또는 뷰포인트를 선택한 후, 실질적으로 유사한 뷰포인트들 또는 카메라 위치들에 대해 이 뷰포인트를 사용할 수 있다.
일부 양태들에서, 다수의 뷰들, 예를 들어, K2 뷰들에 대해, 상이한 구역들은 그들이 카메라로부터 멀어짐에 따라 상이한 양의 뷰들에 대응할 수도 있다. 예를 들어, 구역 Z 는 K2/4(Z-1) 뷰들에 대응할 수 있다. 예를 들어, 구역 (701) (카메라 (720) 에 가장 가까움) 은 K2 뷰들에 대응할 수도 있고, 구역 (702) 은 K2/4 뷰들에 대응할 수도 있고, 구역 (703) 은 K2/16 뷰들에 대응할 수 있고, 구역 (704) 은 K2/64 뷰들에 대응할 수 있다. 분모 4(Z-1) 가 점점 커짐에 따라, 대응하는 구역 Z 는 하나의 뷰에 접근할 수 있다. 일부 인스턴스들에서, 구역, 예를 들어, 구역 (701) 에서의 선택된 뷰포인트의 깊이 버퍼가 무한대 미만인 경우, 본 개시는 다음 구역, 예를 들어, 구역 (702) 에서의 뷰포인트를 선택할 수 있다.
도 7 에 도시된 바와 같이, 본 개시의 양태들은 절두체, 예를 들어, 뷰잉 절두체 (730) 를 Z 깊이 구역들로 세분할 수 있다. 이것은 절두체를 세분하는 것이 각각의 연속적인 인터벌, 예를 들어, [1-2m], [2-4m], [4-8m] 등의 인터벌들로 반감되는 인터벌 불일치를 포함할 수 있도록 다수의 지수적 깊이 인터벌들을 포함할 수 있다. 또한, 본 개시의 양태들은 각각의 구역을 그 자신의 깊이 버퍼를 갖는 별개의 서브-버퍼로서 취급할 수 있다.
위에서 언급된 바와 같이, 본 개시의 양태들은 또한 프리미티브들을 정확히 하나의 구역으로 렌더링할 수 있다. 예를 들어, 버텍스들의 최소 깊이를 양자화함으로써 지오메트리 셰이더에서 구역이 선택될 수 있다. 본 개시는 뷰들의 양이 카메라로부터 더 멀리 떨어져 있는 구역들에 대해 감소되도록 역 구역들을 양자화할 수 있다. 위에서 나타낸 바와 같이, 프리미티브 또는 삼각형이 구역들 사이에서 스플릿되는 경우, 프리미티브는 공유된 구역들 중 더 작은 것에 할당될 수 있다. 프로세스에 지오메트리 셰이더가 없는 경우, 구역은 이웃하는 속성들을 사용하여 버텍스 셰이더에서 선택될 수 있다.
도 8 은 본 개시의 하나 이상의 기법들에 따른 장면 (800) 을 예시한다. 보다 구체적으로, 도 8 은 장면 (800) 의 평면도 또는 조감도이다. 도 8 에 도시된 바와 같이, 장면 (800) 은 다수의 구역들 또는 섹션들, 예를 들어, 구역 (801), 구역 (802), 구역 (803), 및 구역 (804) 을 포함한다. 장면 (800) 은 또한, 오브젝트 (810), 뷰포인트 또는 카메라 (820), 뷰잉 절두체 (830), 및 뷰잉 광선 (840) 을 포함한다. 오브젝트 (810) 는 다중 구역들에 걸쳐 있거나 단일 구역, 예를 들어, 구역 (804) 에 할당될 수 있다. 또한, 뷰포인트 또는 카메라 (820) 는 장면 (800) 의 하단 근처의 점이다. 카메라 (820) 는 장면 (800) 내의 하나의 카메라 위치일 수 있으며, 여기서 다수의 다른 카메라 위치들, 예를 들어, 3 개 또는 9 개의 카메라 위치들이 있다. 본 개시의 양태들은 구역들, 예를 들어, 구역들 (801, 802, 803, 및 804) 을 별개의 서브-버퍼들에 할당할 수 있다. 그렇게 함으로써, 장면 (800) 의 3D 세분이 있을 것이다. 실제로, 본 개시는 장면 (800) 을 다중 구역들로 세분할 수 있다.
위에서 나타낸 바와 같이, 지오메트리 버퍼들 또는 G-버퍼들은 광 필드와 동등할 수 있다. 리졸브 패스 동안, 임의의 뷰잉 광선 또는 4D 광선이 구역 뷰들을 통해 추적될 수 있다. 일부 양태들에서, 본 개시는 각각의 뷰에서 정확한 좌표들을 결정할 수도 있다. 렌더링된 뷰포인트들과 동일하지 않을 수도 있는 새로운 뷰포인트에서 시작하는 뷰잉 광선에 대해, 본 개시는 기존 뷰들로부터 샘플들을 보간할 수도 있다. 뷰잉 광선은 또한, 특정 카메라 위치로부터의 시선 또는 뷰포인트, 예를 들어, 카메라 (820) 로부터의 뷰잉 광선 (840) 일 수 있다. 또한, 프리미티브 id 및 tex-uv 가 결정된 후, 본 개시의 양태들은 아틀라스 또는 셰이딩 아틀라스에서 셰이딩을 룩업할 수 있다. 위에서 나타낸 바와 같이, 다수의 뷰들, 예를 들어, K2 뷰들에 대해, 상이한 구역들은 그들이 카메라로부터 멀어짐에 따라 상이한 양의 뷰들에 대응할 수도 있다. 예를 들어, 구역 Z 는 K2/4(Z-1) 뷰들에 대응할 수 있다. 예를 들어, 구역 (801) 은 K2 뷰들에 대응할 수도 있고, 구역 (802) 은 K2/4 뷰들에 대응할 수도 있고, 구역 (803) 은 K2/16 뷰들에 대응할 수 있고, 구역 (804) 은 K2/64 뷰들에 대응할 수 있다.
도 8 에 도시된 바와 같이, 본 개시의 양태들은 하나 이상의 구역들을 갖는 리졸브 패스를 활용할 수 있다. 리졸브 패스 동안, 최종 지오메트리가 렌더링될 수 있다. 이와 같이, 오브젝트들은 구역들, 예를 들어, 구역들 (801-804) 로 래스터화될 수 있다. 특정 카메라 뷰포인트, 예를 들어, 뷰포인트 (820) 에 대해, 가시성 정보는 실질적으로 유사한 카메라 뷰포인트로부터 재사용될 수 있다. 그렇게 함으로써, 본 개시는 특정 시선, 예를 들어, 뷰잉 광선 (840) 에서 어떤 오브젝트들이 가시적인지를 결정 또는 추론할 수 있다. 따라서, 본 개시는 특정 구역들 또는 서브-버퍼들 중 하나에서 래스터화된 오브젝트, 예를 들어, 오브젝트 (810) 가 교차될 때까지 구역들을 통해 광선 (840) 을 추적할 수 있다. 이와 같이, 본 개시는 각각의 구역 또는 서브-버퍼로부터 볼 수 있는 정보를 활용함으로써 어느 오브젝트들이 가시적인지를 결정할 수 있다.
위에서 나타낸 바와 같이, 메시 셰이더는 서브-버퍼들 또는 뷰들의 각각으로 렌더링되는 지오메트리 프리미티브를 인스턴스화하는데 사용될 수 있다. 메시 셰이더는 프리미티브의 인스턴스들을 생성할 수 있다. 예를 들어, 카메라 또는 뷰포인트로부터 멀리 떨어져 있는 프리미티브들에 대해, 단일 인스턴스가 충분할 수도 있다. 본 개시는 카메라 뷰포인트로부터 멀리 떨어져 있는 이미지들의 양을 감소시키기 위해 상이한 구조들, 예를 들어, 옥트리 (octree) 구조를 활용할 수 있다. 옥트리는 공간에 오브젝트들을 배열하기 위한 데이터 구조이다. 예를 들어, 옥트리는 3 차원의 공간을 다수의 옥탄트 (octant) 들, 예를 들어, 8 개의 옥탄트들로 세분할 수 있다. 옥트리 구조는 옥트리 당 하나의 노드에 있는 프리미티브들의 카피들의 수를 결정할 수 있다. 이것은 데이터의 효율적인 생성을 초래할 수 있다.
본 개시의 양태들은 또한 고속 구역 렌더링 (fast zone rendering) 을 포함할 수 있다. 일부 양태들에서, 인스턴스들을 폐기하기 보다는, 본 개시의 양태들은 옥트리 프론트-투-백 횡단 (front-to-back traversal) 을 활용할 수 있다. 더욱이, 본 개시의 양태들은, 예를 들어, 구역에 있는 옥트리 노드들 또는 구역에 대한 다수의 인스턴스들을 사용하여, 구역 당 하나의 렌더 콜을 포함할 수 있다.
도 9 는 본 개시의 하나 이상의 기법들에 따른 장면 (900) 을 예시한다. 도 9 에 도시된 바와 같이, 장면 (900) 은 다수의 구역들, 예를 들어, 구역 (901), 구역 (902), 구역 (903), 및 구역 (904), 뷰포인트 또는 카메라 (920), 뷰잉 절두체 (930), 및 옥트리 (940) 를 포함한다. 도 9 는 본 개시에 따른 전술한 고속 구역 렌더링을 디스플레이한다. 예를 들어, 옥트리 (940) 는 공간에 오브젝트들을 배열하기 위한 데이터 구조일 수 있다. 옥트리 (940) 는 뷰포인트 (920) 로부터 멀리 떨어져 있는 이미지들의 양을 감소시키는데 활용될 수 있다. 옥트리 (940) 는 또한, 다수의 옥탄트들을 포함하며, 이들 각각은 다수의 인스턴스들을 포함할 수 있다. 예를 들어, 옥트리 (940) 내의 하나의 옥탄트는 K2/16 인스턴스들을 포함할 수 있고, 다른 옥탄트들은 K2/64 인스턴스들을 포함할 수 있다. 더욱이, 옥트리 (940) 내의 일부 옥탄트들, 예를 들어, 더 작은 옥탄트들은 데이터를 컬링 (culling) 하는데 사용될 수 있다.
본 개시의 양태들은 또한 근사 구면 프로젝션 (approximate spherical projection) 을 활용할 수 있다. 예를 들어, 정규 투시 프로젝션들은 주변부를 따라 오버샘플링이 있을 수도 있으므로 큰 FOV (frame of view), 예를 들어, 150° 에 대해 비효율적일 수도 있다. 따라서, 래스터화는 이미지의 주변부에서 비효율적이 될 수 있다. 본 개시는 절두체를 서브-절두체들, 예를 들어, 2x2 또는 3x3 서브-절두체들로 세분할 수 있다. 따라서, 렌더링될 뷰잉 절두체는 세분될 수 있다. 이것은 렌즈 매칭된 셰이딩과 유사할 수 있지만, 상이한 목표 및/또는 상이한 프로젝션 행렬을 포함할 수 있다. 일부 양태들에서, 서브-절두체들의 증가된 양은 이상적인 구면 프로젝션의 개선된 근사를 초래할 수 있다. 또한, 프리미티브들은 관련 절두체로 렌더링될 수 있다. 일부 프리미티브들은 다중 절두체들과 오버랩할 수도 있다. 전술한 구역들과 유사하게, 본 개시의 양태들은 옥트리 바운딩 박스들을 사용하여 프리미티브들을 사전-정렬할 수 있다.
도 10 은 본 개시의 하나 이상의 기법들에 따른 이미지 (1000) 를 예시한다. 도 10 에 도시된 바와 같이, 이미지 (1000) 는 이미지 평면 (1010), 서브-이미지 평면 (1012), 서브-이미지 평면 (1014), 및 뷰포인트 또는 카메라 (1020) 를 포함한다. 도 10 은 본 개시에 따른 전술한 구면 프로젝션을 디스플레이한다. 예를 들어, 이미지 평면 (1010) 에 대한 절두체는 서브-이미지 평면들 (1012 및 1014) 에 대한 서브-절두체들로 세분될 수 있다. 서브-절두체들, 예를 들어, 서브-이미지 평면들 (1012 및 1014) 에 대한 서브-절두체들의 증가된 양은 이상적인 구면 프로젝션의 개선된 근사를 초래할 수 있다.
여기에 나타낸 바와 같이, 본 개시의 양태들은 래스터화를 사용하여 장면의 다중 뷰들을 생성하는 렌더링 시스템을 포함할 수 있다. 예를 들어, 본 개시는 각각의 뷰에 대해 별도로 전체 래스터화 파이프라인을 실행할 필요 없이 다중 뷰들을 생성할 수 있다. 일부 양태들에서, 셰이딩은 예를 들어, 다중 뷰들의 지오메트리 래스터화로부터 셰이딩을 디커플링하기 위해 오브젝트-공간에서 결정될 수 있다. 또한, id 버퍼들의 세트 유니온 (set union) 이 지오메트리 프리미티브들의 잠재적으로 가시적인 세트를 산출할 수도 있도록, id 버퍼가 뷰 당 생성될 수 있다. 또한, 뷰포인트까지의 거리에 의존하여 장면이 다중 구역들로 세분될 수 있으며, 각각의 구역은 다수의 뷰들로 별도로 렌더링될 수 있다. 각각의 구역은 뷰들 사이의 불일치가 일정한 임계치 미만이도록 선택될 수 있다. 이것은 필요한 뷰들의 양을 감소시킬 수 있다. 추가적으로, 뷰잉 절두체는 더 작은 중심내각을 갖는 다중 절두체들로 세분될 수 있고, 별개의 뷰가 각각의 절두체들에 대해 렌더링될 수 있다.
도 7 내지 도 10 은 효율적인 다중 뷰 래스터화를 위한 전술한 프로세스들의 예들을 예시한다. 도 7 내지 도 10 에 도시된 바와 같이, 본 개시의 양태들, 예를 들어, 본 명세서에서의 GPU들은 다중 뷰 래스터화를 위해 생성되는 뷰포인트들의 양을 감소시키기 위해 다수의 상이한 단계들 또는 프로세스들을 수행할 수 있다. 예를 들어, 본 명세서에서의 GPU들은 하나 이상의 뷰포인트들, 예를 들어, 뷰포인트들 (720 및 820) 을 포함하는, 적어도 하나의 장면, 예를 들어, 장면 (700 및 800) 을 결정할 수 있다.
또한, 본 명세서에서의 GPU들은 하나 이상의 뷰포인트들, 예를 들어, 뷰포인트들 (720 및 820) 의 각각에 기초하여, 적어도 하나의 장면, 예를 들어, 장면 (700 및 800) 을 복수의 구역들, 예를 들어, 구역들 (701-704 및 801-804) 로 분할할 수 있다. 또한, 본 명세서에서의 GPU들은 하나 이상의 뷰포인트들 중 하나의 뷰포인트, 예를 들어, 뷰포인트 (720) 에 기초한 구역, 예를 들어, 구역 (704) 이 하나 이상의 뷰포인트들 중 다른 뷰포인트, 예를 들어, 뷰포인트 (820) 에 기초한 구역, 예를 들어, 구역 (804) 과 실질적으로 유사한지 여부를 결정할 수 있다.
본 명세서에서의 GPU들은 또한, 하나 이상의 뷰포인트들, 예를 들어, 뷰포인트들 (720 및 820) 에 기초하여 복수의 구역들, 예를 들어, 구역들 (701-704 및 801-804) 의 각각에 대한 지오메트리 버퍼, 예를 들어, G-버퍼들 (504) 을 생성할 수 있다. 더욱이, 본 명세서에서의 GPU들은 하나 이상의 뷰포인트들, 예를 들어, 뷰포인트들 (720 및 820) 에 기초하여, 복수의 구역들, 예를 들어, 구역들 (701-704 및 801-804) 의 각각에 대한 지오메트리 버퍼들, 예를 들어, G-버퍼들 (504) 을 결합할 수 있다. 일부 양태들에서, 결합된 지오메트리 버퍼들, 예를 들어, G-버퍼들 (504) 은 예를 들어 프리미티브 (710) 를 포함하는 프리미티브들의 잠재적으로 가시적인 세트에 대응할 수 있다.
본 명세서에서의 GPU들은 또한, 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부, 예를 들어, 프리미티브 (710) 에 대한 셰이딩 정보를 결정할 수 있다. 추가적으로, 본 명세서에서의 GPU들은 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부, 예를 들어, 프리미티브 (710) 를 저장할 수 있다. 예를 들어, 프리미티브들의 잠재적으로 가시적인 세트는 메모리, 예를 들어, 시스템 메모리 (124) 및/또는 내부 메모리 (121) 에 저장될 수 있다. 일부 양태들에서, 복수의 구역들, 예를 들어, 구역들 (701-704 및 801-804) 의 각각에 대한 지오메트리 버퍼는 식별 버퍼 및 깊이 버퍼를 포함할 수도 있다. 또한, 식별 버퍼는 예를 들어 프리미티브 (710) 를 포함하는 프리미티브들의 가시적인 세트에 대응할 수 있다.
일부 인스턴스들에서, 적어도 하나의 장면은 하나 이상의 분할 기준들, 예를 들어, 뷰잉 절두체 (730) 및 뷰잉 절두체 (830) 에 기초하여 복수의 구역들로 분할될 수도 있다. 예를 들어, 뷰잉 절두체 (730) 및 뷰잉 절두체 (830) 와 같은, 하나 이상의 분할 기준들은 하나 이상의 뷰포인트들의 각각까지의 거리 또는 하나 이상의 뷰포인트들의 각각의 광축의 각도 중 적어도 하나를 포함할 수 있다. 또한, 하나의 뷰포인트에 기초한 구역, 예를 들어, 구역 (704) 은 하나 이상의 분할 기준들, 예를 들어, 뷰잉 절두체 (730) 및 뷰잉 절두체 (830) 에 기초하여 다른 뷰포인트에 기초한 구역, 예를 들어, 구역 (804) 과 실질적으로 유사한 것으로 결정될 수도 있다.
본 명세서에서의 GPU들은 또한, 하나 이상의 뷰포인트들, 예를 들어, 뷰포인트들 (720 및 820) 의 복수의 구역들, 예를 들어, 구역들 (701-704 및 801-804) 의 각각에 대한 지오메트리 버퍼에 기초하여 적어도 하나의 이미지를 렌더링할 수 있다. 일부 양태들에서, 적어도 하나의 이미지는 예를 들어, 프리미티브 (710) 를 포함하는 프리미티브들의 잠재적으로 가시적인 세트에 대한 셰이딩 정보에 기초하여 렌더링될 수도 있다. 또한, 적어도 하나의 이미지는 복수의 픽셀들을 포함할 수도 있으며, 여기서 적어도 하나의 이미지의 복수의 픽셀들의 각각은 뷰잉 광선, 예를 들어, 뷰잉 광선 (840) 과, 픽셀, 예를 들어, 오브젝트 (810) 의 교차에 기초하여 렌더링될 수도 있다. 일부 인스턴스들에서, 뷰잉 광선, 예를 들어, 뷰잉 광선 (840) 은 복수의 구역들, 예를 들어, 구역들 (801-804) 의 각각을 횡단할 수 있다.
본 명세서에서의 GPU들은 또한, 하나 이상의 뷰포인트들, 예를 들어, 뷰포인트 (820) 를 포함하는 적어도 하나의 장면, 예를 들어, 장면 (800) 을 생성할 수 있다. 일부 양태들에서, 하나 이상의 뷰포인트들 중 하나의 뷰포인트, 예를 들어, 뷰포인트 (720) 에 기초한 구역, 예를 들어, 구역 (704) 이 하나 이상의 뷰포인트들 중 다른 뷰포인트, 예를 들어, 뷰포인트 (820) 에 기초한 구역, 예를 들어, 구역 (804) 과 실질적으로 유사한지 여부의 결정은 그래픽 프로세싱 유닛 (GPU) 또는 중앙 프로세싱 유닛 (CPU) 에 의해 수행될 수도 있다.
도 11 은 본 개시의 하나 이상의 기법들에 따른 예시적인 방법의 플로우차트 (1100) 를 예시한다. 방법은 GPU, CPU, 또는 그래픽 프로세싱을 위한 장치와 같은 장치에 의해 수행될 수도 있다. 1102 에서, 장치는 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정할 수도 있다. 1104 에서, 장치는 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 뷰포인트들의 각각에 기초하여 적어도 하나의 장면을 복수의 구역들로 분할할 수 있다.
1106 에서, 장치는 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부를 결정할 수 있다. 1108 에서, 장치는 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 뷰포인트들에 기초하여 복수의 구역들의 각각에 대한 지오메트리 버퍼를 생성할 수 있다. 1110 에서, 장치는 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 뷰포인트들에 기초하여 복수의 구역들의 각각에 대한 지오메트리 버퍼들을 결합할 수 있다. 일부 양태들에서, 결합된 지오메트리 버퍼들은 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 프리미티브들의 잠재적으로 가시적인 세트에 대응할 수도 있다.
1112 에서, 장치는 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부에 대한 셰이딩 정보를 결정할 수 있다. 1114 에서, 장치는 또한, 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부를 저장할 수 있다. 일부 양태들에서, 복수의 구역들의 각각에 대한 지오메트리 버퍼는 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 식별 버퍼 및 깊이 버퍼를 포함할 수도 있다. 또한, 식별 버퍼는 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 프리미티브들의 가시적인 세트에 대응할 수 있다.
일부 양태들에서, 적어도 하나의 장면은 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 분할 기준들에 기초하여 복수의 구역들로 분할될 수도 있다. 하나 이상의 분할 기준들은 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 뷰포인트들의 각각까지의 거리 또는 하나 이상의 뷰포인트들의 각각의 광축의 각도 중 적어도 하나를 포함할 수 있다. 또한, 하나의 뷰포인트에 기초한 구역이 다른 뷰포인트에 기초한 구역과 실질적으로 유사한 것으로 결정된 것은 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 분할 기준들에 기초할 수도 있다.
1116 에서, 장치는 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 뷰포인트들의 복수의 구역들의 각각에 대한 지오메트리 버퍼에 기초하여 적어도 하나의 이미지를 렌더링할 수 있다. 일부 양태들에서, 적어도 하나의 이미지는 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 프리미티브들의 잠재적으로 가시적인 세트에 대한 셰이딩 정보에 기초하여 렌더링될 수도 있다. 또한, 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 적어도 하나의 이미지는 복수의 픽셀들을 포함할 수도 있고, 적어도 하나의 이미지의 복수의 픽셀들의 각각은 뷰잉 광선과 픽셀의 교차에 기초하여 렌더링될 수도 있다. 일부 인스턴스들에서, 뷰잉 광선은 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, 복수의 구역들의 각각을 횡단할 수 있다.
장치는 또한, 도 5 내지 도 10 의 양태들과 관련하여 설명된 바와 같이, 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 생성할 수 있다. 일부 양태들에서, 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부의 결정은 도 5 내지 도 10 의 예들과 관련하여 설명된 바와 같이, GPU 또는 CPU 에 의해 수행될 수도 있다.
일 구성에서, 그래픽 프로세싱을 위한 방법 또는 장치가 제공된다. 장치는 CPU, GPU, 또는 그래픽 프로세싱을 수행할 수 있는 일부 다른 프로세서일 수도 있다. 일 양태에서, 장치는 디바이스 (104) 내의 프로세싱 유닛 (120) 일 수도 있거나, 또는 디바이스 (104) 또는 다른 디바이스 내의 일부 다른 하드웨어일 수도 있다. 장치는 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정하기 위한 수단을 포함할 수도 있다. 장치는 또한, 하나 이상의 뷰포인트들의 각각에 기초하여 적어도 하나의 장면을 복수의 구역들로 분할하기 위한 수단을 포함할 수도 있다. 장치는 또한, 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부를 결정하기 위한 수단을 포함할 수도 있다. 장치는 또한, 하나 이상의 뷰포인트들에 기초하여 복수의 구역들의 각각에 대한 지오메트리 버퍼를 생성하기 위한 수단을 포함할 수도 있다. 장치는 또한, 하나 이상의 뷰포인트들에 기초하여 복수의 구역들의 각각에 대한 지오메트리 버퍼들을 결합하기 위한 수단을 포함할 수도 있다. 장치는 또한, 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부에 대한 셰이딩 정보를 결정하기 위한 수단을 포함할 수도 있다. 장치는 또한, 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부를 저장하기 위한 수단을 포함할 수도 있다. 장치는 또한, 하나 이상의 뷰포인트들의 복수의 구역들의 각각에 대한 지오메트리 버퍼에 기초하여 적어도 하나의 이미지를 렌더링하기 위한 수단을 포함할 수도 있다. 장치는 또한, 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 생성하기 위한 수단을 포함할 수도 있다.
본 명세서에서 설명된 주제는 하나 이상의 이익들 또는 이점들을 실현하도록 구현될 수 있다. 예를 들어, 설명된 그래픽 프로세싱 기법들은 본 명세서에서 설명된 다중 뷰 래스터화 기법들을 구현하기 위해 GPU, CPU, 또는 그래픽 프로세싱을 수행할 수 있는 일부 다른 프로세서에 의해 사용될 수 있다. 이것은 또한, 다른 그래픽 프로세싱 기법들과 비교하여 낮은 비용으로 달성될 수 있다. 더욱이, 본 명세서에서의 그래픽 프로세싱 기법들은 데이터 프로세싱 또는 실행을 개선 또는 가속화할 수 있다. 또한, 본 명세서에서의 그래픽 프로세싱 기법들은 리소스 또는 데이터 활용 및/또는 리소스 효율성을 개선할 수 있다. 추가적으로, 본 개시의 양태들은, 예를 들어, 뷰포인트 또는 카메라로부터 멀리 떨어져 있는 오브젝트들에 대해, 다중 뷰 래스터화에서 생성되는 뷰포인트들의 양을 감소시킬 수 있다.
본 개시에 따르면, 용어 "또는" 은 컨텍스트가 달리 지시하지 않는 경우 "및/또는" 으로서 해석될 수도 있다. 추가적으로, "하나 이상" 또는 "적어도 하나" 등과 같은 어구들이 본 명세서에 개시된 일부 특징들에 대해 사용되지만 다른 특징들에 대해서는 사용되지 않을 수도 있지만, 그러한 언어가 사용되지 않은 특징들은 컨텍스트가 달리 지시하지 않는 경우 암시되는 그러한 의미를 갖도록 해석될 수도 있다.
하나 이상의 예들에서, 본 명세서에서 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 예를 들어, 용어 "프로세싱 유닛" 이 본 개시 전반에 걸쳐 사용되었지만, 그러한 프로세싱 유닛들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 임의의 기능, 프로세싱 유닛, 본 명세서에서 설명된 기법, 또는 다른 모듈이 소프트웨어에서 구현되면, 기능, 프로세싱 유닛, 본 명세서에서 설명된 기법, 또는 다른 모듈은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장 또는 송신될 수도 있다. 컴퓨터 판독가능 매체들은, 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 또는 컴퓨터 데이터 저장 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다. 제한이 아닌 예로서, 그러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들을 포함할 수 있다. 디스크 (disk) 및 디스크 (disc) 는, 본 명세서에서 사용된 바와 같이, 콤팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하고, 여기서 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하는 한편, 디스크 (disc) 들은 레이저들로 데이터를 광학적으로 재생한다. 또한, 상기의 조합들이 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
그 코드는 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적 회로들 (ASIC들), 산술 로직 유닛들 (ALU들), 필드 프로그래밍가능 로직 어레이들 (FPGA들), 또는 다른 균등한 집적된 또는 별개의 로직 회로부와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 이에 따라, 본 명세서에 사용된 바와 같은 용어 "프로세서" 는 전술한 구조 또는 본 명세서에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트, 예를 들면, 칩 세트를 포함하는, 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하는 것은 아니다. 오히려, 상기 설명된 바와 같이, 다양한 유닛들은 임의의 하드웨어 유닛에 결합될 수도 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호동작가능한 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (52)

  1. 그래픽 프로세싱의 방법으로서,
    하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정하는 단계;
    상기 하나 이상의 뷰포인트들의 각각에 기초하여 상기 적어도 하나의 장면을 복수의 구역들로 분할하는 단계; 및
    상기 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 상기 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부를 결정하는 단계를 포함하는, 그래픽 프로세싱의 방법.
  2. 제 1 항에 있어서
    상기 하나 이상의 뷰포인트들에 기초하여 상기 복수의 구역들의 각각에 대한 지오메트리 버퍼를 생성하는 단계를 더 포함하는, 그래픽 프로세싱의 방법.
  3. 제 2 항에 있어서
    상기 하나 이상의 뷰포인트들에 기초하여 상기 복수의 구역들의 각각에 대한 지오메트리 버퍼들을 결합하는 단계를 더 포함하는, 그래픽 프로세싱의 방법.
  4. 제 3 항에 있어서,
    결합된 상기 지오메트리 버퍼들은 프리미티브들의 잠재적으로 가시적인 세트에 대응하는, 그래픽 프로세싱의 방법.
  5. 제 4 항에 있어서
    상기 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부에 대한 셰이딩 정보를 결정하는 단계를 더 포함하는, 그래픽 프로세싱의 방법.
  6. 제 4 항에 있어서
    상기 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부를 저장하는 단계를 더 포함하는, 그래픽 프로세싱의 방법.
  7. 제 2 항에 있어서,
    상기 복수의 구역들의 각각에 대한 상기 지오메트리 버퍼는 식별 버퍼 및 깊이 버퍼를 포함하는, 그래픽 프로세싱의 방법.
  8. 제 7 항에 있어서,
    상기 식별 버퍼는 프리미티브들의 가시적인 세트에 대응하는, 그래픽 프로세싱의 방법.
  9. 제 1 항에 있어서,
    상기 적어도 하나의 장면은 하나 이상의 분할 기준들에 기초하여 상기 복수의 구역들로 분할되는, 그래픽 프로세싱의 방법.
  10. 제 9 항에 있어서,
    상기 하나 이상의 분할 기준들은 상기 하나 이상의 뷰포인트들의 각각까지의 거리 또는 상기 하나 이상의 뷰포인트들의 각각의 광축의 각도 중 적어도 하나를 포함하는, 그래픽 프로세싱의 방법.
  11. 제 9 항에 있어서,
    상기 하나의 뷰포인트에 기초한 구역은 상기 하나 이상의 분할 기준들에 기초하여 상기 다른 뷰포인트에 기초한 구역과 실질적으로 유사한 것으로 결정되는, 그래픽 프로세싱의 방법.
  12. 제 2 항에 있어서,
    상기 하나 이상의 뷰포인트들의 상기 복수의 구역들의 각각에 대한 상기 지오메트리 버퍼에 기초하여 적어도 하나의 이미지를 렌더링하는 단계를 더 포함하는, 그래픽 프로세싱의 방법.
  13. 제 12 항에 있어서,
    상기 적어도 하나의 이미지는 프리미티브들의 잠재적으로 가시적인 세트에 대한 셰이딩 정보에 기초하여 렌더링되는, 그래픽 프로세싱의 방법.
  14. 제 12 항에 있어서,
    상기 적어도 하나의 이미지는 복수의 픽셀들을 포함하고, 상기 적어도 하나의 이미지의 상기 복수의 픽셀들의 각각의 픽셀은 뷰잉 광선과 상기 픽셀의 교차에 기초하여 렌더링되는, 그래픽 프로세싱의 방법.
  15. 제 14 항에 있어서,
    상기 뷰잉 광선은 상기 복수의 구역들의 각각을 횡단하는, 그래픽 프로세싱의 방법.
  16. 제 1 항에 있어서,
    상기 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정하는 단계는,
    상기 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 생성하는 단계를 포함하는, 그래픽 프로세싱의 방법.
  17. 제 1 항에 있어서,
    상기 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 상기 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부의 상기 결정은 그래픽 프로세싱 유닛 (GPU) 또는 중앙 프로세싱 유닛 (CPU) 에 의해 수행되는, 그래픽 프로세싱의 방법.
  18. 그래픽 프로세싱을 위한 장치로서,
    메모리; 및
    상기 메모리에 커플링된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는,
    하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정하고;
    상기 하나 이상의 뷰포인트들의 각각에 기초하여 상기 적어도 하나의 장면을 복수의 구역들로 분할하고; 그리고
    상기 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 상기 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부를 결정하도록 구성된, 그래픽 프로세싱을 위한 장치.
  19. 제 18 항에 있어서,
    상기 적어도 하나의 프로세서는 또한,
    상기 하나 이상의 뷰포인트들에 기초하여 상기 복수의 구역들의 각각에 대한 지오메트리 버퍼를 생성하도록 구성되는, 그래픽 프로세싱을 위한 장치.
  20. 제 19 항에 있어서,
    상기 적어도 하나의 프로세서는 또한,
    상기 하나 이상의 뷰포인트들에 기초하여 상기 복수의 구역들의 각각에 대한 지오메트리 버퍼들을 결합하도록 구성되는, 그래픽 프로세싱을 위한 장치.
  21. 제 20 항에 있어서,
    결합된 상기 지오메트리 버퍼들은 프리미티브들의 잠재적으로 가시적인 세트에 대응하는, 그래픽 프로세싱을 위한 장치.
  22. 제 21 항에 있어서,
    상기 적어도 하나의 프로세서는 또한,
    상기 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부에 대한 셰이딩 정보를 결정하도록 구성되는, 그래픽 프로세싱을 위한 장치.
  23. 제 21 항에 있어서,
    상기 적어도 하나의 프로세서는 또한,
    상기 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부를 저장하도록 구성되는, 그래픽 프로세싱을 위한 장치.
  24. 제 19 항에 있어서,
    상기 복수의 구역들의 각각에 대한 상기 지오메트리 버퍼는 식별 버퍼 및 깊이 버퍼를 포함하는, 그래픽 프로세싱을 위한 장치.
  25. 제 24 항에 있어서,
    상기 식별 버퍼는 프리미티브들의 가시적인 세트에 대응하는, 그래픽 프로세싱을 위한 장치.
  26. 제 18 항에 있어서,
    상기 적어도 하나의 장면은 하나 이상의 분할 기준들에 기초하여 상기 복수의 구역들로 분할되는, 그래픽 프로세싱을 위한 장치.
  27. 제 26 항에 있어서,
    상기 하나 이상의 분할 기준들은 상기 하나 이상의 뷰포인트들의 각각까지의 거리 또는 상기 하나 이상의 뷰포인트들의 각각의 광축의 각도 중 적어도 하나를 포함하는, 그래픽 프로세싱을 위한 장치.
  28. 제 26 항에 있어서,
    상기 하나의 뷰포인트에 기초한 구역은 상기 하나 이상의 분할 기준들에 기초하여 상기 다른 뷰포인트에 기초한 구역과 실질적으로 유사한 것으로 결정되는, 그래픽 프로세싱을 위한 장치.
  29. 제 19 항에 있어서,
    상기 적어도 하나의 프로세서는 또한,
    상기 하나 이상의 뷰포인트들의 상기 복수의 구역들의 각각에 대한 상기 지오메트리 버퍼에 기초하여 적어도 하나의 이미지를 렌더링하도록 구성되는, 그래픽 프로세싱을 위한 장치.
  30. 제 29 항에 있어서,
    상기 적어도 하나의 이미지는 프리미티브들의 잠재적으로 가시적인 세트에 대한 셰이딩 정보에 기초하여 렌더링되는, 그래픽 프로세싱을 위한 장치.
  31. 제 29 항에 있어서,
    상기 적어도 하나의 이미지는 복수의 픽셀들을 포함하고, 상기 적어도 하나의 이미지의 상기 복수의 픽셀들의 각각의 픽셀은 뷰잉 광선과 상기 픽셀의 교차에 기초하여 렌더링되는, 그래픽 프로세싱을 위한 장치.
  32. 제 31 항에 있어서,
    상기 뷰잉 광선은 상기 복수의 구역들의 각각을 횡단하는, 그래픽 프로세싱을 위한 장치.
  33. 제 18 항에 있어서,
    상기 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정하기 위해, 상기 적어도 하나의 프로세서는 또한,
    상기 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 생성하도록 구성되는, 그래픽 프로세싱을 위한 장치.
  34. 제 18 항에 있어서,
    상기 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 상기 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부의 상기 결정은 그래픽 프로세싱 유닛 (GPU) 또는 중앙 프로세싱 유닛 (CPU) 에 의해 수행되는, 그래픽 프로세싱을 위한 장치.
  35. 그래픽 프로세싱을 위한 장치로서,
    하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정하기 위한 수단;
    상기 하나 이상의 뷰포인트들의 각각에 기초하여 상기 적어도 하나의 장면을 복수의 구역들로 분할하기 위한 수단; 및
    상기 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 상기 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부를 결정하기 위한 수단을 포함하는, 그래픽 프로세싱을 위한 장치.
  36. 제 35 항에 있어서,
    상기 하나 이상의 뷰포인트들에 기초하여 상기 복수의 구역들의 각각에 대한 지오메트리 버퍼를 생성하기 위한 수단을 더 포함하는, 그래픽 프로세싱을 위한 장치.
  37. 제 36 항에 있어서,
    상기 하나 이상의 뷰포인트들에 기초하여 상기 복수의 구역들의 각각에 대한 지오메트리 버퍼들을 결합하기 위한 수단을 더 포함하는, 그래픽 프로세싱을 위한 장치.
  38. 제 37 항에 있어서,
    결합된 상기 지오메트리 버퍼들은 프리미티브들의 잠재적으로 가시적인 세트에 대응하는, 그래픽 프로세싱을 위한 장치.
  39. 제 38 항에 있어서,
    상기 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부에 대한 셰이딩 정보를 결정하기 위한 수단을 더 포함하는, 그래픽 프로세싱을 위한 장치.
  40. 제 38 항에 있어서,
    상기 프리미티브들의 잠재적으로 가시적인 세트의 적어도 일부를 저장하기 위한 수단을 더 포함하는, 그래픽 프로세싱을 위한 장치.
  41. 제 36 항에 있어서,
    상기 복수의 구역들의 각각에 대한 상기 지오메트리 버퍼는 식별 버퍼 및 깊이 버퍼를 포함하는, 그래픽 프로세싱을 위한 장치.
  42. 제 41 항에 있어서,
    상기 식별 버퍼는 프리미티브들의 가시적인 세트에 대응하는, 그래픽 프로세싱을 위한 장치.
  43. 제 35 항에 있어서,
    상기 적어도 하나의 장면은 하나 이상의 분할 기준들에 기초하여 상기 복수의 구역들로 분할되는, 그래픽 프로세싱을 위한 장치.
  44. 제 43 항에 있어서,
    상기 하나 이상의 분할 기준들은 상기 하나 이상의 뷰포인트들의 각각까지의 거리 또는 상기 하나 이상의 뷰포인트들의 각각의 광축의 각도 중 적어도 하나를 포함하는, 그래픽 프로세싱을 위한 장치.
  45. 제 43 항에 있어서,
    상기 하나의 뷰포인트에 기초한 구역은 상기 하나 이상의 분할 기준들에 기초하여 상기 다른 뷰포인트에 기초한 구역과 실질적으로 유사한 것으로 결정되는, 그래픽 프로세싱을 위한 장치.
  46. 제 36 항에 있어서,
    상기 하나 이상의 뷰포인트들의 상기 복수의 구역들의 각각에 대한 상기 지오메트리 버퍼에 기초하여 적어도 하나의 이미지를 렌더링하기 위한 수단을 더 포함하는, 그래픽 프로세싱을 위한 장치.
  47. 제 46 항에 있어서,
    상기 적어도 하나의 이미지는 프리미티브들의 잠재적으로 가시적인 세트에 대한 셰이딩 정보에 기초하여 렌더링되는, 그래픽 프로세싱을 위한 장치.
  48. 제 46 항에 있어서,
    상기 적어도 하나의 이미지는 복수의 픽셀들을 포함하고, 상기 적어도 하나의 이미지의 상기 복수의 픽셀들의 각각의 픽셀은 뷰잉 광선과 상기 픽셀의 교차에 기초하여 렌더링되는, 그래픽 프로세싱을 위한 장치.
  49. 제 48 항에 있어서,
    상기 뷰잉 광선은 상기 복수의 구역들의 각각을 횡단하는, 그래픽 프로세싱을 위한 장치.
  50. 제 35 항에 있어서,
    상기 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정하기 위한 수단은,
    상기 하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 생성하도록 구성되는, 그래픽 프로세싱을 위한 장치.
  51. 제 35 항에 있어서,
    상기 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 상기 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부의 상기 결정은 그래픽 프로세싱 유닛 (GPU) 또는 중앙 프로세싱 유닛 (CPU) 에 의해 수행되는, 그래픽 프로세싱을 위한 장치.
  52. 그래픽 프로세싱을 위한 컴퓨터 실행가능 코드를 저장하는 컴퓨터 판독가능 저장 매체로서,
    하나 이상의 뷰포인트들을 포함하는 적어도 하나의 장면을 결정하고;
    상기 하나 이상의 뷰포인트들의 각각에 기초하여 상기 적어도 하나의 장면을 복수의 구역들로 분할하고; 그리고
    상기 하나 이상의 뷰포인트들 중 하나의 뷰포인트에 기초한 구역이 상기 하나 이상의 뷰포인트들 중 다른 뷰포인트에 기초한 구역과 실질적으로 유사한지 여부를 결정하기 위한 코드를 포함하는, 컴퓨터 판독가능 저장 매체.
KR1020227028774A 2020-03-02 2021-02-25 효율적인 다중 뷰 래스터화를 위한 방법들 및 장치 KR20220148814A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/806,774 2020-03-02
US16/806,774 US11132831B1 (en) 2020-03-02 2020-03-02 Methods and apparatus for efficient multi-view rasterization
PCT/US2021/019730 WO2021178222A1 (en) 2020-03-02 2021-02-25 Methods and apparatus for efficient multi-view rasterization

Publications (1)

Publication Number Publication Date
KR20220148814A true KR20220148814A (ko) 2022-11-07

Family

ID=75108872

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227028774A KR20220148814A (ko) 2020-03-02 2021-02-25 효율적인 다중 뷰 래스터화를 위한 방법들 및 장치

Country Status (6)

Country Link
US (2) US11132831B1 (ko)
EP (1) EP4115607A1 (ko)
KR (1) KR20220148814A (ko)
CN (1) CN115152206A (ko)
TW (1) TW202141417A (ko)
WO (1) WO2021178222A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132831B1 (en) 2020-03-02 2021-09-28 Qualcomm Incorporated Methods and apparatus for efficient multi-view rasterization
CN114020375A (zh) * 2021-09-22 2022-02-08 联想(北京)有限公司 一种显示方法及装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6380935B1 (en) * 1999-03-17 2002-04-30 Nvidia Corporation circuit and method for processing render commands in a tile-based graphics system
AU2001239926A1 (en) * 2000-02-25 2001-09-03 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US7551182B2 (en) 2005-01-18 2009-06-23 Oculus Info Inc. System and method for processing map data
US20080143720A1 (en) 2006-12-13 2008-06-19 Autodesk, Inc. Method for rendering global illumination on a graphics processing unit
JP2009290827A (ja) * 2008-06-02 2009-12-10 Sony Corp 画像処理装置および画像処理方法
JP6157138B2 (ja) * 2012-03-30 2017-07-05 キヤノン株式会社 画像処理装置
US9336558B2 (en) * 2013-09-27 2016-05-10 Apple Inc. Wavefront encoding with parallel bit stream encoding
GB2520366B (en) * 2013-12-13 2015-12-09 Imagination Tech Ltd Primitive processing in a graphics processing system
WO2015154004A1 (en) * 2014-04-05 2015-10-08 Sony Computer Entertainment America Llc Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
KR20160047316A (ko) * 2014-10-22 2016-05-02 삼성전자주식회사 렌더링 장치 및 방법
KR102354992B1 (ko) * 2015-03-02 2022-01-24 삼성전자주식회사 양안 시차 영상에 대한 타일 기반 렌더링 방법 및 장치
US9773340B2 (en) * 2015-06-12 2017-09-26 Qualcomm Incorporated Rendering using ray tracing to generate a visibility stream
GB2545457B (en) 2015-12-17 2018-07-11 Advanced Risc Mach Ltd Graphics processing systems
US10096147B2 (en) * 2016-03-10 2018-10-09 Qualcomm Incorporated Visibility information modification
GB2550358B (en) * 2016-05-16 2020-08-26 Advanced Risc Mach Ltd Graphics processing systems
CN107330846B (zh) * 2017-06-16 2019-07-30 浙江大学 一种基于屏幕块对的双目渲染流水线流程与方法
US11189042B2 (en) * 2017-07-26 2021-11-30 Sony Corporation Information processing device, information processing method, and computer program
US10776997B2 (en) * 2017-08-24 2020-09-15 Qualcomm Incorporated Rendering an image from computer graphics using two rendering computing devices
WO2019129923A1 (en) 2017-12-29 2019-07-04 Nokia Technologies Oy An apparatus, a method and a computer program for volumetric video
US11244492B2 (en) * 2018-11-02 2022-02-08 Facebook Technologies, Llc. Parallel texture sampling
US11669942B2 (en) * 2019-09-20 2023-06-06 Synaptics Incorporated Image de-warping system
US11132831B1 (en) 2020-03-02 2021-09-28 Qualcomm Incorporated Methods and apparatus for efficient multi-view rasterization

Also Published As

Publication number Publication date
EP4115607A1 (en) 2023-01-11
TW202141417A (zh) 2021-11-01
US11631212B2 (en) 2023-04-18
WO2021178222A1 (en) 2021-09-10
US20210327122A1 (en) 2021-10-21
CN115152206A (zh) 2022-10-04
US11132831B1 (en) 2021-09-28

Similar Documents

Publication Publication Date Title
KR102614847B1 (ko) 그래픽스 프로세싱 유닛 하이브리드 렌더링을 위한 장치 및 방법
US20150213638A1 (en) Hierarchical tiled caching
US11631212B2 (en) Methods and apparatus for efficient multi-view rasterization
US11908079B2 (en) Variable rate tessellation
EP4242972A2 (en) Methods and apparatus for edge compression anti-aliasing
KR20210117988A (ko) 디커플드 쉐이딩 텍스처 렌더링을 위한 방법 및 장치
CN115715464A (zh) 用于遮挡处理技术的方法和装置
US11380047B2 (en) Methods and apparatus for order-independent occlusion computations
US20230101978A1 (en) Meshlet shading atlas
US20240212257A1 (en) Workload packing in graphics texture pipeline
US11875452B2 (en) Billboard layers in object-space rendering
US11682109B2 (en) Configurable apron support for expanded-binning
KR20240093463A (ko) 메시릿 셰이딩 아틀라스
WO2023055655A1 (en) Meshlet shading atlas
KR20240042090A (ko) 샘플 공간들과 연관된 포비티드 비닝된 렌더링
WO2024137230A1 (en) Workload packing in graphics texture pipeline