KR102590644B1 - 증강 현실 콘텐츠의 아틀라스 관리를 위한 방법 및 장치 - Google Patents
증강 현실 콘텐츠의 아틀라스 관리를 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR102590644B1 KR102590644B1 KR1020227038857A KR20227038857A KR102590644B1 KR 102590644 B1 KR102590644 B1 KR 102590644B1 KR 1020227038857 A KR1020227038857 A KR 1020227038857A KR 20227038857 A KR20227038857 A KR 20227038857A KR 102590644 B1 KR102590644 B1 KR 102590644B1
- Authority
- KR
- South Korea
- Prior art keywords
- content
- atlas
- patches
- client device
- augmented reality
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- 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
-
- 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
- G06T15/30—Clipping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/08—Bandwidth reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Signal Processing (AREA)
- Geometry (AREA)
- Processing Or Creating Images (AREA)
- Controls And Circuits For Display Device (AREA)
- User Interface Of Digital Computer (AREA)
- Image Generation (AREA)
Abstract
본 개시는 그래픽 프로세싱을 위한 방법들 및 장치에 관한 것이다. 장치는 프레임에서 렌더링된 콘텐츠와 연관된 하나 이상의 경계 박스들을 포함하는 아이 버퍼를 결정할 수 있다. 장치는 또한 아이 버퍼에 기초하여 아틀라스를 생성할 수 있고, 상기 아틀라스는 하나 이상의 경계 박스들과 연관된 하나 이상의 패치들을 포함한다. 추가적으로, 장치는 하나 이상의 패치들을 포함하는 아틀라스를 통신할 수 있다. 장치는 또한 프레임에서 렌더링된 콘텐츠와 연관된 사용자 모션의 양을 계산할 수 있다. 또한, 장치는 사용자 모션의 계산된 양에 기초하여 하나 이상의 경계 박스들 각각의 크기를 결정할 수 있다. 장치는 또한 아틀라스에서 하나 이상의 패치들 각각의 크기 및 위치를 결정할 수 있다.
Description
관련 출원에 대한 상호 참조
본 출원은 2020년 5월 14일에 출원된 "METHOD AND APPRATUS FOR ATLAS MANAGEMENT OF AUGMENTED REALITY CONTENT"라는 명칭의 인도 특허 출원 번호 202041020333 및 2020년 9월 30일에 출원된 "METHOD AND APPRATUS FOR ATLAS MANAGEMENT OF AUGMENTED REALITY CONTENT"이라는 명칭의 미국 특허 출원 번호 17/039,834에 대한 우선권을 주장하고, 그 전체 내용은 여기에 참조에 의해 원용된다.
기술분야
본 개시는 일반적으로 프로세싱 시스템에 관한 것으로, 더욱 상세하게는 그래픽스 또는 컴퓨터 프로세싱을 위한 하나 이상의 기술들에 관한 것이다.
서론
컴퓨팅 디바이스는 디스플레이를 위한 그래픽 데이터의 렌더링을 가속화하기 위해 그래픽스 프로세싱 유닛(GPU) 또는 중앙 프로세싱 유닛(CPU)을 종종 활용한다. 이러한 컴퓨팅 디바이스는 예를 들어 컴퓨터 워크스테이션, 모바일 폰, 예컨대 이른바 스마트 폰, 임베딩된 시스템, 개인용 컴퓨터, 태블릿 컴퓨터 및 비디오 게임 콘솔을 포함할 수도 있다. GPU들은 그래픽스 프로세싱 커맨드들을 실행하고 프레임을 출력하도록 함께 동작하는 하나 이상의 프로세싱 스테이지들을 포함하는 그래픽스 프로세싱 파이프라인을 실행한다. CPU는 하나 이상의 그래픽스 프로세싱 커맨드들을 GPU 에 발행함으로써 GPU 의 동작을 제어할 수도 있다. 현대의 CPU들은 통상적으로 다수의 애플리케이션들을 동시에 실행할 수 있으며, 이들 각각은 실행 동안 GPU 를 활용할 필요가 있을 수도 있다. 디스플레이 상에 시각적 프리젠테이션을 위한 콘텐츠를 제공하는 디바이스는 일반적으로 GPU 를 포함한다.
전형적으로, 디바이스의 CPU 또는 GPU 는 컴퓨터 또는 그래픽스 프로세싱에서 프로세스들을 수행하도록 구성된다. 그러나, 무선 통신 및 더 작은 핸드헬드 디바이스들의 출현과 함께, 개선된 컴퓨터 또는 그래픽스 프로세싱에 대한 필요성이 증가하였다.
개요
다음은 하나 이상의 양태들의 간략화된 개요를, 그러한 양태들의 기본적인 이해를 제공하기 위해 제시한다. 이 개요는 모든 고려된 양태들의 광범위한 개관이 아니며, 모든 양태들의 핵심적인 엘리먼트들을 식별하지도 않고 임의의 또는 모든 양태들의 범위를 기술하지도 않도록 의도된다. 그 유일한 목적은 이후에 제시되는 보다 상세한 설명에 대한 도입부로서 간략화된 형태로 하나 이상의 양태의 일부 개념들을 제시하는 것이다.
본 개시의 일 양태에서, 방법, 컴퓨터 판독가능 매체, 및 장치가 제공된다. 장치는 클라이언트 디바이스, 중앙 프로세싱 유닛(CPU), 그래픽스 프로세싱 유닛(GPU), 또는 그래픽스 또는 컴퓨터 프로세싱을 수행할 수 있는 임의의 장치일 수도 있다. 장치는 프레임에서 렌더링된 콘텐츠를 생성할 수 있다. 장치는 프레임의 희소(sparse) AR 콘텐츠를 정의하는 하나 이상의 경계 박스들과 연관된 하나 이상의 패치들을 포함하는 아틀라스(atlas)를 수신하고; 수신된 아틀라스에서 희소 AR 콘텐츠에 대한 하나 이상의 패치들 각각의 위치를 결정하고; 하나 이상의 패치들 각각의 결정된 위치에 기초하여 프레임에서 희소 AR 콘텐츠와 연관된 하나 이상의 경계 박스들을 포함하는 아이 버퍼(eye-buffer)를 결정하고; 아이 버퍼에 기초하여 AR 콘텐츠가 희소 AR 콘텐츠를 포함하도록 렌더링할 수 있다. 또한, 하나 이상의 경계 박스들 각각의 크기는 프레임에서 렌더링된 AR 콘텐츠와 연관된 사용자 모션의 계산된 양에 기초하여 정의된다. 장치는 또한 하나 이상의 경계 박스들 각각의 크기에 대응하는 아틀라스에서의 하나 이상의 패치들 각각의 크기를 결정할 수 있다. 장치는 또한 아틀라스를 생성하는 서버로부터 수신된 패치 메타데이터에 기초하여 수신된 아틀라스에서 희소 AR 콘텐츠에 대한 하나 이상의 패치들 각각의 위치를 결정할 수 있다. 장치는 또한 아틀라스에서의 하나 이상의 패치들과 연관된 워핑 메타데이터를 수신하고 워핑 메타데이터에 기초하여 AR 콘텐츠를 렌더링할 수 있다. 장치는 또한 사용자의 포지셔닝(positioning) 및 움직임(movement) 적어도 하나를 나타내는 클라이언트 디바이스의 사용자의 적어도 하나의 헤드 포즈 샘플을 서버에 송신하고;사용자의 적어도 하나의 헤드 포즈 샘플에 기초하여 정의된 각각의 크기를 각각 갖는 하나 이상의 경계 박스들과 연관된 하나 이상의 패치들을 포함하는 아틀라스를 서버로부터 수신할 수 있다. 게다가 또, 장치는 또한 프레임과 AR 콘텐츠의 이전 프레임 사이의 패치 대응(patch correspondence)을 결정하고; 결정된 패치 대응에 기초하여 수신된 아틀라스의 적어도 하나의 패치를 숨기고; 아이 버퍼에 기초하여 AR 콘텐츠가 희소 AR 콘텐츠를 포함하여 숨겨진 적어도 하나의 패치를 포함하도록 렌더링할 수 있다. 더욱이, 장치는 또한 압축된 형식으로 아틀라스를 수신하고 프레임의 희소 AR 콘텐츠를 정의하는 하나 이상의 경계 박스들과 연관된 하나 이상의 패치들을 결정하기 위해 아틀라스를 디코딩하도록 구성된 디코더를 포함할 수 있다.
더욱이, 본 개시의 일 양태에서, 방법, 컴퓨터 판독가능 매체, 및 장치가 제공된다. 장치는 서버, 중앙 프로세싱 유닛(CPU), 그래픽스 프로세싱 유닛(GPU), 또는 그래픽스 또는 컴퓨터 프로세싱을 수행할 수 있는 임의의 장치일 수도 있다. 장치는 프레임에서 희소 AR 콘텐츠와 연관된 하나 이상의 경계 박스들을 포함하는 아이 버퍼를 결정하고; 프레임에서 희소 AR 콘텐츠와 연관된 하나 이상의 경계 박스들을 포함하는 아틀라스를 생성하고; 하나 이상의 경계 박스들에 대응하는 아틀라스에서 희소 AR 콘텐츠에 대한 하나 이상의 패치들의 위치를 결정하고; 프레임의 희소 AR 콘텐츠의 하나 이상의 패치들의 결정된 위치에 기초하여 클라이언트 디바이스 상에 AR 콘텐츠를 렌더링하기 위해 아틀라스를 상기 클라이언트 디바이스에 송신할 수 있다. 더욱이, 장치는 하나 이상의 경계 박스들 각각의 크기에 대응하는 아틀라스에서의 하나 이상의 패치들 각각의 크기를 결정할 수 있다. 장치는 또한 아틀라스를 클라이언트 디바이스에 송신하기 위한 타겟 비트 레이트에 기초하여 하나 이상의 패치들 각각의 크기를 결정할 수 있다. 장치는 또한 프레임에서 렌더링된 AR 콘텐츠와 연관된 사용자 모션의 양을 결정하고; 사용자 모션의 계산된 양에 기초하여 하나 이상의 경계 박스들 각각의 크기를 결정할 수 있다. 장치는 또한 아틀라스에서의 하나 이상의 패치들과 연관된 워핑 메타데이터를 생성하여, 클라이언트 디바이스가 워핑 메타데이터에 기초하여 AR 콘텐츠를 렌더링하도록 구성될 수 있다. 장치는 또한 사용자의 포지셔닝 및 움직임 중 적어도 하나를 나타내는 클라이언트 디바이스의 사용자의 적어도 하나의 헤드 포즈 샘플을, 클라이언트 디바이스로부터, 수신하고; 사용자의 적어도 하나의 헤드 포즈 샘플에 기초하여, 아틀라스의 하나 이상의 패치와 연관된 하나 이상의 경계 박스들의 각각의 크기를 결정할 수 있다. 장치는 또한 아틀라스를 압축된 형식으로 인코딩하고 인코딩된 아틀라스를 클라이언트 디바이스에 송신할 수 있는 인코더를 포함할 수 있다.
본 개시의 하나 이상의 예들의 상세들은 첨부 도면 및 아래의 설명에 제시되어 있다. 본 개시의 다른 특징, 목적 및 이점들은 상세한 설명 및 도면, 그리고 특허청구범위로부터 분명해질 것이다.
도 1 은 본 개시의 하나 이상의 기법들에 따른 예시적인 콘텐츠 생성 시스템을 예시하는 블록 다이어그램이다.
도 2 는 본 개시의 하나 이상의 기법들에 따른 예시적인 GPU 를 예시한다.
도 3 는 본 개시의 하나 이상의 기법들에 따른 클라이언트 디바이스와 서버 사이의 통신을 포함하는 예시적인 다이어그램을 예시한다.
도 4 는 본 개시의 하나 이상의 기법들에 따른 클라이언트 디바이스와 서버 사이의 통신을 포함하는 예시적인 다이어그램을 예시한다.
도 5 은 본 개시의 하나 이상의 기법들에 따른 아틀라스 관리의 예시적인 다이어그램을 예시한다.
도 6 은 본 개시의 하나 이상의 기법들에 따른 아틀라스 관리의 예시적인 다이어그램을 예시한다.
도 7 은 본 개시의 하나 이상의 기법들에 따른 아틀라스 관리의 예시적인 다이어그램을 예시한다.
도 8 은 본 개시의 하나 이상의 기법들에 따른 예시적인 방법의 예시적인 플로우차트를 예시한다.
도 2 는 본 개시의 하나 이상의 기법들에 따른 예시적인 GPU 를 예시한다.
도 3 는 본 개시의 하나 이상의 기법들에 따른 클라이언트 디바이스와 서버 사이의 통신을 포함하는 예시적인 다이어그램을 예시한다.
도 4 는 본 개시의 하나 이상의 기법들에 따른 클라이언트 디바이스와 서버 사이의 통신을 포함하는 예시적인 다이어그램을 예시한다.
도 5 은 본 개시의 하나 이상의 기법들에 따른 아틀라스 관리의 예시적인 다이어그램을 예시한다.
도 6 은 본 개시의 하나 이상의 기법들에 따른 아틀라스 관리의 예시적인 다이어그램을 예시한다.
도 7 은 본 개시의 하나 이상의 기법들에 따른 아틀라스 관리의 예시적인 다이어그램을 예시한다.
도 8 은 본 개시의 하나 이상의 기법들에 따른 예시적인 방법의 예시적인 플로우차트를 예시한다.
상세한 설명
일반적으로 증강 현실(AR)을 위해 렌더링된 콘텐츠는 가상 콘텐츠가 실세계의 맥락에서 보여질 수도 있다는 점에서 희소(sparse)할 수도 있다. AR의 일부 양태에서, 렌더링된 시야의 하나 이상의 경계 박스들 외부의, 프레임의 일부(예를 들어, 최대 50% 이상)는 투명할 수도 있으며 이를 통해 실세계가 보여진다. 일부 AR 사용 사례에서, 렌더링은 서버(예: 폰 또는 에지 서버)와 클라이언트 AR 디바이스(예: 헤드셋) 간에 분할될 수도 있다. 이들 디바이스는 유선 또는 무선 접속에 의해 접속될 수 있다. 일부 경우에, 콘텐츠는 서버 상에서 렌더링된 다음, 인코딩되어 클라이언트 디바이스로 송신될 수도 있다. 그런 다음 클라이언트 디바이스는 콘텐츠를 디코딩하고 이를 최신 사용자 포즈로 워핑(warping)하고 콘텐츠를 표시할 수 있다. 예를 들어, 투명 영역을 포함한 전체 디스플레이 해상도에 대응하는 아이 버퍼를 인코딩 및 디코딩하는 것은 상응하는 출력 없이 상당한 레이턴시 및 전력을 초래할 수도 있다. 따라서, 본 개시의 예시적인 양태는 최적화된 양의 레이턴시 및 전력 활용을 낳는 전체 디스플레이 해상도에 대응하는 분할 렌더링에서 아틀라스 및 아이 버퍼를 포함할 수 있다. 아래에서 상세하게 논의되는 바와 같이, 본 개시의 예시적인 방법, 장치 및 시스템은 아틀라스 관리를 포함할 수 있다. 예를 들어, 아틀라스 관리는 희소 AR 콘텐츠를 컴팩트(compact)화하고 디코드 레이턴시를 줄이고, 활용되는 전력량을 줄일 수 있다. 더욱이, 본 개시의 양태들은 또한 클라이언트 측에서 이중 데이터 레이트(DDR) 대역폭의 양을 감소시킬 수 있다.
시스템들, 장치들, 컴퓨터 프로그램 제품들, 및 방법들의 다양한 양태들이 첨부 도면들을 참조하여 이하에서 더 충분히 설명된다. 하지만, 본 개시는 많은 상이한 형태들로 구체화될 수도 있고, 본 개시에 전체에 걸쳐 제시된 임의의 특정 구조 또는 기능으로 제한된다고 해석되어서는 안 된다. 오히려, 이 양태들은 본 개시가 철저하고 완전하게 되고 당업자에게 본 개시의 범위를 충분히 전달하도록 제공된다. 본 명세서에서의 교시들에 기초하여, 당업자는, 본 개시의 다른 양태들과 독립적으로 구현되든 또는 결합되든, 본 개시의 범위가 본 명세서에 개시된 시스템들, 장치들, 컴퓨터 프로그램 제품들 및 방법들의 임의의 양태를 커버하도록 의도된다는 것을 인식할 것이다. 예를 들어, 본 명세서에 제시된 임의의 수의 양태들을 이용하여 장치가 구현될 수도 있거나 또는 방법이 실시될 수도 있다. 추가로, 본 개시의 범위는 본 명세서에 제시된 본 개시의 다양한 양태들에 더하여 또는 그 이외의 다른 구조, 기능성, 또는 구조 및 기능성을 사용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 본원에 개시된 임의의 양태는 청구항의 하나 이상의 엘리먼트들에 의해 구체화될 수도 있다.
다양한 양태들이 본 명세서에서 설명되지만, 이 양태들의 많은 변형들 및 치환들이 본 개시의 범위에 속한다. 본 개시의 양태들의 일부 잠재적인 이익들 및 이점들이 언급되지만, 본 개시의 범위는 특정 이익들, 사용들, 또는 목적들로 한정되도록 의도되지 않는다. 오히려, 본 개시의 양태들은 상이한 무선 기술들, 시스템 구성들, 네트워크들, 및 송신 프로토콜들에 광범위하게 적용가능한 것으로 의도되고, 이들 중 일부는 예로써 도면들에서 그리고 다음의 설명에서 예시된다. 상세한 설명 및 도면들은 제한적이기보다는 본 개시의 예시일 뿐이며, 본 개시의 범위는 첨부된 청구항들 및 그 등가물들에 의해 정의된다.
여러 양태들이 다양한 장치 및 방법들을 참조하여 제시된다. 이들 장치 및 방법들은 다양한 블록들, 컴포넌트들, 회로들, 프로세스들, 알고리즘들 등("엘리먼트들" 로 총칭됨)에 의해 다음의 상세한 설명에서 설명되고 첨부 도면들에 예시될 것이다. 이 엘리먼트들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 임의의 조합을 이용하여 구현될 수도 있다. 그러한 엘리먼트들이 하드웨어 또는 소프트웨어로 구현될지 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약들에 의존한다.
예로써, 예시적인 양태들과 관련하여 아래에서 설명되는 엘리먼트, 또는 엘리먼트의 임의의 부분, 또는 엘리먼트들의 임의의 조합은 하나 이상의 프로세서들(또한 프로세싱 유닛들로 지칭될 수도 있음)을 포함하는 "프로세싱 시스템" 으로서 구현될 수도 있다. 프로세서들의 예들은 마이크로프로세서들, 마이크로제어기들, 그래픽스 프로세싱 유닛들(GPU들), 범용 GPU들(GPGPU들), 중앙 프로세싱 유닛들(CPU들), 애플리케이션 프로세서들, 디지털 신호 프로세서들(DSP들), RISC(reduced instruction set computing) 프로세서들, SOC(systems-on-chip), 베이스밴드 프로세서들, ASIC들(application specific integrated circuits), 필드 프로그래밍가능 게이트 어레이들(FPGA들), 프로그래밍가능 로직 디바이스들(PLD들), 상태 머신들, 게이티드 로직, 이산 하드웨어 회로들, 및 본 개시 전반에 걸쳐 설명된 다양한 기능성을 수행하도록 구성된 다른 적합한 하드웨어를 포함한다. 프로세싱 시스템에서의 하나 이상의 프로세서들이 소프트웨어를 실행할 수도 있다. 소프트웨어는, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 다른 것으로서 지칭되든 간에, 명령들, 명령 세트들, 코드, 코드 세그먼트들, 프로그램 코드, 프로그램들, 서브프로그램들, 소프트웨어 컴포넌트들, 애플리케이션들, 소프트웨어 애플리케이션들, 소프트웨어 패키지들, 루틴들, 서브루틴들, 오브젝트들, 실행가능물들, 실행 스레드들, 프로시저들, 함수들 등을 의미하는 것으로 폭넓게 해석될 수 있다. 용어 애플리케이션은 소프트웨어를 지칭할 수도 있다. 본 명세서에서 설명된 바와 같이, 하나 이상의 기법은 하나 이상의 기능을 수행하도록 구성된 애플리케이션, 즉 소프트웨어를 지칭할 수도 있다. 그러한 예들에서, 애플리케이션은 메모리, 예를 들어, 프로세서의 온-칩 메모리, 시스템 메모리, 또는 임의의 다른 메모리에 저장될 수도 있다. 프로세서와 같은 본 명세서에 설명된 하드웨어는 애플리케이션을 실행하도록 구성될 수도 있다. 예를 들어, 애플리케이션은, 하드웨어에 의해 실행될 경우, 하드웨어로 하여금 본 명세서에서 설명된 하나 이상의 기법들을 수행하게 하는 코드를 포함하는 것으로 설명될 수도 있다. 일 예로서, 하드웨어는 메모리로부터 코드에 액세스하고 메모리로부터 액세스된 코드를 실행하여 본 명세서에서 설명된 하나 이상의 기법들을 수행할 수도 있다. 일부 예들에서, 컴포넌트들은 본 개시에서 식별된다. 그러한 예들에서, 컴포넌트들은 하드웨어, 소프트웨어, 또는 이들의 조합일 수도 있다. 컴포넌트들은 별개의 컴포넌트들 또는 단일 컴포넌트의 서브-컴포넌트들일 수도 있다.
따라서, 본 명세서에서 설명된 하나 이상의 예에서, 설명된 기능들은 하드웨어, 소프트웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 또는 인코딩될 수도 있다. 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수도 있다. 비한정적 예로서, 이러한 컴퓨터 판독가능 매체는 RAM(random-access memory), ROM(read-only memory), EEPROM(electrically erasable programmable ROM), 광학 디스크 저장, 자기 디스크 저장, 다른 자기 저장 디바이스들, 전술한 유형의 컴퓨터 판독가능 매체의 조합, 또는 컴퓨터에 의해 액세스될 수 있는 명령 또는 데이터 구조 형태의 컴퓨터 실행가능 코드를 저장하는데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다.
일반적으로, 본 개시는 단일 디바이스 또는 다수의 디바이스들에서 그래픽스 프로세싱 파이프라인을 갖는 것, 그래픽 콘텐츠의 렌더링을 개선하는 것, 및/또는 프로세싱 유닛, 즉 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) 디스플레이, 프로젝션 디스플레이 디바이스, 증강 현실 디스플레이 디바이스, 가상 현실 디스플레이 디바이스, 헤드 탑재형 디스플레이 또는 임의의 다른 유형의 디스플레이 디바이스 중 하나 이상을 포함할 수도 있다.
시스템 메모리(124)와 같은, 프로세싱 유닛(120) 및 콘텐츠 인코더/디코더(122) 외부의 메모리는 프로세싱 유닛(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)는 일부 예들에 따른 비일시적 저장 매체일 수도 있다. 용어 "비일시적" 은, 저장 매체가 캐리어파 또는 전파 신호에서 구체화되지 않는다는 것을 나타낼 수도 있다. 그러나, 용어 "비일시적" 은 내부 메모리(121) 또는 시스템 메모리(124)가 이동가능하지 않거나 또는 그 콘텐츠들이 정적임을 의미하는 것으로 해석되어서는 안 된다. 일 예로서, 시스템 메모리(124)는 디바이스(104)로부터 제거될 수도 있고, 다른 디바이스로 이동될 수도 있다. 다른 예로서, 시스템 메모리(124)는 디바이스(104)로부터 제거 가능하지 않을 수도 있다.
프로세싱 유닛(120)은 중앙 프로세싱 유닛(CPU), 그래픽스 프로세싱 유닛(GPU), 범용 GPU(GPGPU), 또는 본 명세서에 기재된 AR 콘텐츠의 압축 및 렌더링을 위한 예시적인 기법들에 따른 그래픽스 프로세싱을 수행하도록 구성될 수도 있는 임의의 다른 프로세싱 유닛일 수도 있다. 일부 예들에서, 프로세싱 유닛(120)은 디바이스(104)의 마더보드에 통합될 수도 있다. 일부 예들에서, 프로세싱 유닛(120)은 디바이스(104)의 마더보드에서의 포트에 설치되는 그래픽스 카드 상에 존재할 수도 있거나 또는 그렇지 않으면 디바이스(104)와 연동하도록 구성된 주변 디바이스내에 통합될 수도 있다. 프로세싱 유닛(120)은 하나 이상의 마이크로프로세서들, GPU들, 주문형 집적 회로들(ASIC들), 필드 프로그래밍가능 게이트 어레이들(FPGA들), 산술 로직 유닛들(ALU들), 디지털 신호 프로세서들(DSP들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 다른 동등한 집적된 또는 이산 로직 회로, 또는 이들의 임의의 조합들과 같은 하나 이상의 프로세서들을 포함할 수도 있다. 기법들이 부분적으로 소프트웨어에서 구현되면, 프로세싱 유닛(120)은 적합한 비일시적 컴퓨터 판독가능 저장 매체, 예를 들어, 내부 메모리(121)에 소프트웨어에 대한 명령들을 저장할 수도 있고, 본 개시의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하여 하드웨어에서 명령들을 실행할 수도 있다. 하드웨어, 소프트웨어, 하드웨어 및 소프트웨어의 조합 등을 포함하는, 전술한 것 중 임의의 것이 하나 이상의 프로세서들로 고려될 수도 있다.
콘텐츠 인코더/디코더(122)는 디지털 콘텐츠의 콘텐츠 인코딩/디코딩을 수행하도록 구성된 임의의 프로세싱 유닛일 수도 있다. 일부 예들에서, 콘텐츠 인코더/디코더(122)는 디바이스(104)의 마더보드에 통합될 수도 있다. 콘텐츠 인코더/디코더(122)는 하나 이상의 마이크로프로세서들, ASIC들(application specific integrated circuits), 필드 프로그래밍가능 로직 어레이들(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)는 또한, 예를 들어, 하나 이상의 패치들을 포함하는 아틀라스를 클라이언트 디바이스에 통신하도록 구성될 수 있다. 보다 특히, 결정 컴포넌트(198)는 또한 하나 이상의 패치들을 포함하는 아틀라스를, 클라이언트 디바이스에, 전송하도록 구성될 수 있다. 결정 컴포넌트(198)는 또한, 하나 이상의 패치들을 포함하는 아틀라스를, 서버로부터, 수신하도록 구성될 수 있다. 결정 컴포넌트(198)는 또한 하나 이상의 패치들을 포함하는 아틀라스를 디코딩하고 클라이언트 아이 버퍼에서 하나 이상의 경계 박스들에 기초하여 디코딩된 아틀라스에서 하나 이상의 패치들을 워핑하도록 구성될 수 있다. 결정 컴포넌트(198)는 또한 하나 이상의 패치들을 포함하는 아틀라스에 기초하여 하나 이상의 경계 박스들을 포함하는 클라이언트 아이 버퍼를 결정하도록 구성될 수 있다. 결정 컴포넌트(198)는 또한 디스플레이에서 클라이언트 아이 버퍼에서의 하나 이상의 경계 박스들을 표시하도록 구성될 수 있고, 여기서 하나 이상의 경계 박스들은 프레임에서 렌더링된 콘텐츠와 연관될 수도 있다.
본 명세서에서 설명된 바와 같이, 디바이스(104)와 같은 디바이스는 본 명세서에서 설명된 하나 이상의 기법을 수행하도록 구성된 임의의 디바이스, 장치 또는 시스템을 지칭할 수도 있다. 예를 들어, 디바이스는 서버, 기지국, 사용자 장비, 클라이언트 디바이스, 스테이션, 액세스 포인트, 컴퓨터, 예를 들어, 개인용 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 컴퓨터 워크스테이션, 또는 메인프레임 컴퓨터, 최종 제품, 장치, 폰, 스마트폰, 서버, 비디오 게임 플랫폼 또는 콘솔, 핸드헬드 디바이스, 예를 들어, 휴대용 비디오 게임 디바이스 또는 PDA(personal digital assistant), 웨어러블 컴퓨팅 디바이스, 예를 들어, 스마트 워치, 증강 현실 디바이스, 또는 가상 현실 디바이스, 비-웨어러블 디바이스, 디스플레이 또는 디스플레이 디바이스, 텔레비전, 텔레비전 셋톱 박스, 중간 네트워크 디바이스, 디지털 미디어 플레이어, 비디오 스트리밍 디바이스, 콘텐츠 스트리밍 디바이스, 차재 컴퓨터(in-car computer), 임의의 모바일 디바이스, 그래픽 콘텐츠를 생성하도록 구성된 임의의 디바이스, 또는 본 명세서에 설명된 하나 이상의 기법을 수행하도록 구성된 임의의 디바이스일 수도 있다. 본 명세서에서의 프로세스들은 특정 컴포넌트, 예를 들어, 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 는 CP, 예를 들어, CP(210) 또는 하드웨어 가속기를 활용하여 커맨드 버퍼를 컨텍스트 레지스터 패킷들, 예를 들어, 컨텍스트 레지스터 패킷들(260), 및/또는 드로우 콜 데이터 패킷들, 예를 들어, 드로우 콜 패킷들(212)로 파싱할 수 있다. 그 다음, CP(210)는 컨텍스트 레지스터 패킷들(260) 또는 드로우 콜 데이터 패킷들(212)을 별개의 경로들을 통해 GPU 내의 프로세싱 유닛들 또는 블록들로 전송할 수 있다. 또한, 커맨드 버퍼(250)는 컨텍스트 레지스터 및 드로우 콜의 상이한 상태를 교번할 수 있다. 예를 들어, 커맨드 버퍼는 다음의 방식으로 구조화될 수 있다: 컨텍스트 N 의 컨텍스트 레지스터, 컨텍스트 N 의 드로우 콜(들), 컨텍스트 N+1 의 컨텍스트 레지스터, 및 컨텍스트 N+1 의 드로우 콜(들).
일부 양태들에서, 이미지 또는 프레임의 렌더링은, 예를 들어, 상이한 디바이스들 사이에서 렌더링 작업부하를 분할하기 위해, 다수의 위치들에서 및/또는 다수의 디바이스들 상에서 수행될 수 있다. 예를 들어, 렌더링 작업부하를 서버와 클라이언트 디바이스 간에 분할할 수 있다. 일부 양태들에서, 이 프로세스는 "분할 렌더링"(split rendering)으로 지칭될 수 있다. 일부 경우들에서, 분할 렌더링은 클라이언트 디바이스들 또는 헤드 장착 디스플레이들(HMD들)에 콘텐츠를 가져오기 위한 방법일 수 있으며, 여기서 컴퓨터 또는 그래픽스 프로세싱의 일부는 클라이언트 디바이스 또는 HMD 의 외부에서, 예를 들어 서버에서 수행될 수 있다.
분할 렌더링은 다수의 상이한 타입들의 애플리케이션들, 예를 들어, 가상 현실(VR) 애플리케이션들, 증강 현실(AR) 애플리케이션들, 및/또는 확장 현실(XR) 애플리케이션들에 대해 수행될 수 있다. VR 애플리케이션들에서, 클라이언트 디바이스에 표시된 콘텐츠는 렌더링된 또는 애니메이션화된(animated) 콘텐츠, 예를 들어, 서버 또는 클라이언트 디바이스에서 렌더링된 콘텐츠에 대응할 수 있다. AR 또는 XR 애플리케이션들에서, 클라이언트 디바이스에 표시된 콘텐츠의 일부는 실세계 콘텐츠, 예를 들어, 실세계에 있는 객체들에 대응할 수 있고, 콘텐츠의 일부는 렌더링된 또는 애니메이션화된 콘텐츠일 수 있다. 또한, 렌더링된 또는 애니메이션화된 콘텐츠 및 실세계 콘텐츠는 광학 투시(optical see-through) 또는 비디오 투시(video see-through) 디바이스에 표시될 수 있어, 사용자가 실세계 객체들과 렌더링된 콘텐츠를 동시에 볼 수 있다. 일부 양태들에서, XR 콘텐츠는 VR 및 AR 콘텐츠 양자 모두를 나타낼 수 있다. XR, VR 및 AR 애플리케이션은 모두 헤드셋을 통해 사용자 보기 렌더링된 콘텐츠를 포함할 수 있다.
분할 렌더링은 클라이언트 또는 사용자 디바이스, 예를 들어, 헤드 장착 디스플레이(HMD) 또는 헤드셋과 서버 간에 컴퓨터의 작업부하를 분할하여 XR, AR 또는 VR 애플리케이션에서 고품질 사용자 경험을 제공할 수 있다. 일부 양태들에서, 클라이언트 디바이스 및 서버는 저 레이턴시 통신 링크, 예를 들어, 5G 또는 Wi-Fi를 통해 서로 접속될 수 있다. 또한 레이턴시를 줄이기 위해 서버가 저 레이턴시 통신 링크 가까이에 위치될 수 있다. 일부 양태들에서, 서버는 에지 서버 또는 클라우드 서버로 지칭될 수 있다.
XR, VR 및 AR 애플리케이션의 일부 경우에, 클라이언트 디바이스 또는 헤드셋은 렌더링된 콘텐츠에 필요한 계산 또는 그래픽스 프로세싱을 수행할 수 있는 GPU 또는 그래픽스 프로세싱 디바이스를 포함할 수 있다. 분할 렌더링을 활용하면 계산 또는 그래픽스 프로세싱의 상당 부분을 서버로 오프로드할 수 있다. 이들 경우에, 서버는 클라이언트 디바이스로부터 오프로드된 일부 계산 또는 그래픽스 프로세싱을 수행할 수 있는 임의의 디바이스일 수 있다. 예를 들어, 서버는 클라우드 서버, 에지 서버, 개인용 컴퓨터, 스마트폰 또는 임의의 적절한 디바이스일 수 있다.
분할 렌더링은 많은 상이한 방법으로 서버와 클라이언트 디바이스 간에 렌더링 계산을 분산시킬 수 있다. 예를 들어, 모든 렌더링은 클라이언트 디바이스 상에서 수행될 수 있으며, 즉, 모든 계산이 클라이언트 상에서 수행되고 클라이언트는 서버와 계산 상태를 공유한다. 또한, 모든 렌더링은 서버 상에서 수행될 수 있으며, 즉, 모든 계산, 클라이언트 상에 표시될 이미지들도 서버 상에서 수행된다. 일부 양태들에서, 분할 렌더링에서의 레이턴시를 줄이기 위해, 일부 클라이언트 디바이스들은 압축되지 않은 비디오를 서버로 스트리밍할 수 있다. 그러나, 압축되지 않은 비디오를 스트리밍하려면 특정 유형의 서버에 이용 가능한 스루풋 수준이 필요할 수도 있다.
위에 설명된 바처럼, 증강 현실(AR)을 위해 렌더링된 콘텐츠는 가상 콘텐츠가 실세계의 컨텍스트에서 보여질 수도 있다는 점에서 희소(sparse)할 수도 있다. 예를 들어, AR의 일부 양태에서, 렌더링된 시야의 하나 이상의 경계 박스들 외부의, 프레임의 일부(예를 들어, 최대 50% 이상)는 투명할 수도 있으며 이를 통해 실세계가 보여진다.
일부 AR 사용 사례에서, 렌더링은 서버(예: 폰 또는 에지 서버)와 클라이언트 AR 디바이스(예: 헤드셋)간에 분할될 수도 있다. 이들 디바이스는 유선 또는 무선 접속에 의해 접속될 수 있다. 그러한 경우에, 콘텐츠는 서버 상에서 렌더링된 다음, 인코딩되어 클라이언트 디바이스로 송신될 수도 있다. 그런 다음 클라이언트 디바이스는 콘텐츠를 디코딩하고 이를 최신 사용자 포즈로 워핑(warping)하고 콘텐츠를 표시할 수 있다. 더욱이, 예를 들어, 투명 영역을 포함하는 전체 디스플레이 해상도에 대응하는 아이 버퍼를 인코딩 및 디코딩하는 것은 통상적으로, 상응하는 출력 없이 상당한 레이턴시 및 전력을 초래할 수도 있다. 그래서, 최적화된 양의 레이턴시 및 전력 활용을 낳는 전체 디스플레이 해상도에 대응하는 분할 렌더링에서 아틀라스 및 아이 버퍼에 대한 본 필요성이 존재한다.
본 개시의 양태는 최적화된 양의 레이턴시 및 전력 활용을 낳는 전체 디스플레이 해상도에 대응하는 분할 렌더링에서 아틀라스 및 아이 버퍼를 포함할 수 있다. 일부 양태에서, 본 개시는 아틀라스 관리를 포함할 수 있다. 예를 들어, 본 개시의 아틀라스 관리는 희소 AR 콘텐츠를 컴팩트화하고 디코딩 레이턴시를 줄이고, 활용되는 전력량을 줄일 수 있다. 본 개시의 양태들은 또한 클라이언트 측에서 이중 데이터 레이트(DDR) 대역폭의 양을 감소시킬 수 있다.
도 3 는 본 개시의 하나 이상의 기법들에 따른 클라이언트 디바이스와 서버 사이의 통신을 포함하는 다이어그램(300)을 예시한다. 도 3에 도시된 바처럼, 다이어그램(300)은 서버 또는 폰(310) 및 클라이언트 디바이스 또는 안경(330)을 포함한다. 일반적으로, 서버(310) 및 클라이언트 디바이스(330)를 포함하는 결합된 시스템(300)은 전술한 바와 같이 AR 콘텐츠의 분할 렌더링을 조정한다. 서버 측(310) 및 클라이언트 측(330) 양자 모두는 아이 버퍼(318) 및 아틀라스(320)를 생성/프로세싱하도록 구성될 수 있다. 보다 일반적으로, 서버(310)는 렌더링, 아틀라스 관리, 및 인코딩과 같은 다수의 상이한 기능을 수행할 수 있다. 클라이언트(330)는 또한 디코딩, 아틀라스 관리, 및 XR 런타임 또는 디스플레이와 같은 다수의 상이한 기능을 수행할 수 있다. 더우기, 일반적으로 서버(310) 및 클라이언트 디바이스(330) 각각은 여기에서 설명된 기능 및 기법을 수행하기 위해 콘텐츠 생성 시스템(100) 및/또는 GPU(200) 중 하나 이상을 포함할 수 있다는 것에 유의한다.
예시적인 양태에 따르면, 서버(310)는 AR 콘텐츠의 활성 부분 또는 컴포넌트를 포함하는 희소 아이 버퍼(318)를 생성하도록 구성된 렌더 엔진(312)을 포함하며, 즉, 아이 버퍼(318)는 예를 들어 렌더링된 콘텐츠의 투명한 배경에 대응하는 프레임에서의 픽셀을 포함하지 않는다. 일 양태에서, 아이 버퍼(318)는 AR 콘텐츠의 활성 부분들을 선택하기 위해 렌더링된 픽셀들을(예를 들어, 사용자 인터페이스를 통해) 터치함으로써 생성된다. 다른 양태에서, 생성된 아이 버퍼(318)는 실세계가 보여지는 투명한 시야 외에도 사용자에게 보여지는 렌더링된 AR 콘텐츠의 그러한 부분들을 포함한다. 서버(310)는 컴팩트 아틀라스(320)를 생성하기 위해 아이 버퍼(318)를 함께 콜레이팅(collating)하도록 구성된 아틀라스 관리자(314)를 더 포함한다. 즉, 생성된 컴팩트 아틀라스는 AR 콘텐츠를 재작성하고 표시하기 위해 클라이언트 디바이스(330)에 의해 요구되는 AR 콘텐츠의 그러한 부분들만을 포함한다. 일 양태에 따르면 클라이언트 디바이스(330)가 필요로 하지 않는 AR 콘텐츠의 각 프레임의 픽셀의 나머지 부분들은 컴팩트 아틀라스(320)로부터 제외될 것이다.
추가로 도시된 바와 같이, 서버(310)는 인코딩된 콘텐츠를 클라이언트 디바이스(330)로 송신하기 전에 미디어 콘텐츠를 인코딩하도록 구성되는 인코더(316)를 포함한다. 일 양태에서, 인코더(316)는 예를 들어 H.264 또는 HEVC 인코더일 수 있다. 따라서, 예시적인 양태에서, 인코더(316)는 아틀라스 관리자(314)에 의해 생성된 컴팩트 아틀라스(320)를 수신하고 인코딩하고 이 인코딩된 콘텐츠를 (예를 들어, 비트스트림(324)으로서) 클라이언트(330)에 스트리밍한다. 일반적으로, 인코더(316)는 예를 들어, 도 1과 관련하여 위에서 설명된 바와 같이 콘텐츠 인코더/디코더(122)로서 구현될 수 있다는 것에 유의한다. 더욱이, 일 양태에서, 비트스트림(324)은 예를 들어, 도 1과 관련하여 위에서 설명된 바와 같이 통신 인터페이스(126)를 사용하여 클라이언트 디바이스(330)에 송신될 수 있다.
더욱이, 아틀라스 관리자(314)는 또한, 예를 들어, 스페어 AR 콘텐츠의 패치 정보를 포함할 수 있는, 동일한 콘텐츠를 갖는 아틀라스(320)와 렌더링된 아이 버퍼(318) 사이의 위치들의 맵핑을 클라이언트(330)에게 알리는 메타데이터(322)를 생성하도록 구성된다. 다시 말해서, 메타데이터(322)는 아틀라스(320)를 생성하는 데 사용되는 아이 버퍼(318)의 각 활성 부분의 각각의 포지션을 결정하기 위해 클라이언트 디바이스(330)에 의해 프로세싱될 수 있는 패치 정보(322A)를 포함할 것이다. 추가 메타데이터는 헤드 포즈, 각 활성 부분의 깊이, 또는 활성 부분의 3차원 위치와 같은 워핑 메타데이터(322B)를 포함할 수 있으며, 또한 스트림의 일부로서 전송될 수도 있다. 일반적으로, 메타데이터(322)는 인코딩된 아틀라스(320)의 비트스트림(324)과 함께 또는 별도의 스트림으로서 클라이언트(330)에 송신될 수 있다.
어느 경우든, 클라이언트(330)는 인코딩된 콘텐츠(예를 들어, 비트스트림(324)) 및 메타데이터(322)를 수신한다. 일 양태에서, 비트스트림(324)은 예를 들어, 도 1과 관련하여 위에서 설명된 바와 같이 통신 인터페이스(126)를 사용하여 수신될 수 있다.
본질적으로, 클라이언트(330)는 서버(310)와 유사한 컴포넌트를 포함하지만, 서버의 반대 작업, 예를 들어 수신된 메타데이터에 기초하여 디코딩된 아틀라스(320)를 아이 버퍼(318)로 디멀티플렉싱(demultiplexing)하도록 구성된다. 보다 구체적으로, 클라이언트(330)는 수신된 비트스트림(324)을 디코딩하도록 구성된 H.264 또는 HEVC 인코더와 유사할 수 있는 디코더(336)를 포함한다. 일반적으로, 디코더(336)는 예를 들어, 도 1과 관련하여 위에서 설명된 바와 같이 콘텐츠 인코더/디코더(122)로서 구현될 수 있다는 것에 유의한다.
게다가, 아틀라스 관리자(334)는 아이 버퍼(318)를 별도로 획득하기 위해 아틀라스(320)를 수신 및 프로세싱하도록 구성된다. 예를 들어, 아틀라스 관리자(334)는 패치 정보(322A)를 사용하여 아틀라스(320)내의 콘텐츠의 각 부분의 각각의 위치를 결정하고 차례로 아이 버퍼(318)를 재생성하도록 구성될 수 있다. 다음으로 이 아이 버퍼(318)는 디스플레이/플랫폼(332)(예를 들어, 안경 등과 같은 AR 디스플레이 디바이스 상의 XR 런타임)에 공급될 수 있으며, 이는 또한 워프 메타데이터(322B)를 사용하여 AR 콘텐츠를 생성/표시하며, 그에 대한 상세는 아래에서 논의될 것이다.
도 4 는 본 개시의 하나 이상의 기법들에 따른 클라이언트 디바이스와 서버 사이의 통신을 포함하는 다이어그램(400)을 예시한다. 일반적으로, 도시된 바와 같은 다이어그램 또는 시스템(400)은 도 3과 관련하여 위에서 설명된 바와 같은 유사한 번호를 갖는 다수의 동일한 컴포넌트를 포함하며, 그에 대한 상세는 반복되지 않을 것이라는 것에 유의한다.
그러나, 이 예시적인 양태에서, 클라이언트 디바이스(430)는 디스플레이/플랫폼(432)(예를 들어, XR 런타임 애플리케이션)을 포함하며, 이는 그것이 통상적인 워프 메타데이터(322B)와 함께 아틀라스(320) 및 패치 정보 메타데이터(322A)를 직접 수용할 수 있도록 설계될 수도 있다. 타임 워프 프로세스의 일부로서, 아틀라스(320)의 적절한 부분들이 상이하게 워핑되고 디스플레이의 올바른 영역에 배치될 수도 있다. 차례로, 이것은 클라이언트 디바이스(430)상에서 AR 콘텐츠를 재생성하기 위해 패치 정보 메타데이터(322A) 및 워프 메타데이터(322B) 양자 모두에 의해 안내될 수도 있다. 따라서, 이 양태에서, 도 3과 관련하여 위에서 설명된 바와 같은 아틀라스 관리자(334)의 구성은 AR 콘텐츠를 재작성하기 위해 디스플레이/플랫폼(432)(예를 들어, XR 런타임 애플리케이션)의 일부로서 직접 포함된다.
도 5 은 본 개시의 하나 이상의 기법들에 따른 아틀라스 관리의 다이어그램(500)을 예시한다. 일반적으로, 다이어그램(500)은 도 3 및 도 4와 관련하여 위에서 설명된 바와 같은 서버(310)의 컴포넌트들을 예시하고, 보다 구체적으로, 일 양태에 따라 도시된 바와 같은 점선 박스를 포함할 수도 있는, 아틀라스 관리자(314)의 컴포넌트들을 포함한다.
일 양태에서, AR 애플리케이션(502)은 렌더 엔진(312)에 의해 생성된 렌더링된 콘텐츠를 포함할 수 있다. 더욱이, (예를 들어, 아이 버퍼(318)에 대응하는)아이 버퍼(504) 및 깊이 버퍼(506)는 AR 애플리케이션(502)에 의해 커스텀 게임 엔진 플러그인(510)에 제공된다. 일반적으로, 커스텀 게임 엔진 플러그인(510)은 예를 들어 희소 AR 콘텐츠를 표시하기 위해 도 1과 관련하여 위에서 설명된 바와 같은 시스템(100) 및, 특히, 디바이스(104)에 의해 실행되는 애플리케이션일 수 있다는 점에 유의한다. 또한, 커스텀 게임 엔진 플러그인(510)은 전술한 바와 같이 아틀라스 관리자(314)의 기능을 실행하도록 구성될 수도 있다.
예시적인 양태에서, 커스텀 게임 엔진 플러그인(510)은 경계 박스 추출기(512), 경계 박스 맵퍼(514), APR 평면 파라미터 컴퓨트 엔진(516) 및 아틀라스 생성기(518)를 포함한다. 일 양태에서, 경계 박스 추출기(512), 경계 박스 맵퍼(514) 및 아틀라스 생성기(518) 각각은 위에서 설명된 바와 같이 기능 아틀라스 관리자(314)를 집합적으로 실행하도록 구성될 수 있다. 일 양태에서, 이들 컴포넌트들은 프로세싱 유닛(120)에 의해 실행될 수 있다.
도시된 바와 같이, 렌더링된 아이 버퍼(504)는 장면에서 렌더링된 가상 콘텐츠를 포함하는 경계 박스를 생성하기 위해 아이 버퍼(504)를 분석하도록 구성될 수도 있는 경계 박스 추출기(512)에 공급된다. 이것은 렌더링된 객체를 완전히 포함하는 아이 버퍼(504)에서의 닫힌 윤곽을 결정하기 위해 접속된 컴포넌트 분석에 기초할 수 있다. 각각의 경계 박스(540)는 일반적으로 렌더링된 AR 콘텐츠에서 활성 콘텐츠의 각 패치에 대한 경계 주변(bounding perimeter)으로 고려될 수 있다. "경계 박스"(bounding box)라는 용어는 반드시 정사각형 또는 직사각형 박스를 의미하는 것은 아니며 더 일반적으로 클라이언트 디바이스(330)에 송신될 희소 AR 콘텐츠를 식별하는 임의의 유형의 주변으로 고려될 수 있음에 유의한다.
일부 경우에, 유니티(unity)와 언리얼(unreal) 양자 모두는 장면에서 액터에 대한 경계 박스를 쿼리하기 위해 API(application program interface)를 제공할 수도 있다. 따라서, 이러한 닫힌 윤곽은 경계 박스를 객체 오버랩과 병합하여 결정될 수 있다. 생성된 경계 박스(540)는 아틀라스 리얼 에스테이트(real estate)로의 타이트한 패킹이 달성될 수 있도록 아틀라스의 리얼 에스테이트 상의 패치로 맵핑될 수도 있다. 이것은 효율적인 패킹을 달성하기 위해 경계 박스 내의 콘텐츠를 스케일링하는 것을 포함할 수도 있다. 더욱이, 아이 버퍼(504)에서의 콘텐츠는 경계 박스 정보에 기초하여 추출될 수도 있고 이전에 결정된 패치 정보 또는 메타데이터에 기초하여 아틀라스(320)에 쓰여질 수도 있다.
따라서, 추가로 도시된 바와 같이, 경계 박스(540)는 경계 박스 맵퍼(514) 및 APR 평면 파라미터 컴퓨트 엔진(516)에 공급된다. 경계 박스 맵퍼(514)는 각 박스에 바인딩된 렌더링된 콘텐츠의 위치 및/또는 크기에 관한 정보를 제공하는 전술한 바와 같이 패치 정보(322A)를 생성하도록 구성된다. 패치 정보(322A)는 전술한 바와 같이 메타데이터로서 클라이언트 디바이스(330)에 제공된다. 더욱이, 아틀라스 생성기(518)는 수신된 아이 버퍼(504)에 기초하여 경계 박스(540) 및 패치 정보(322A) 둘 다를 사용하여 위에서 설명된 바와 같이 컴팩트 아틀라스(320)를 생성하도록 구성된다. 또한, APR 평면 파라미터 컴퓨트 엔진(516)은 깊이 버퍼(506)에 기초하여 각 프레임에서 그리고 각 경계 박스(540)에 대해 렌더링된 AR 콘텐츠의 워프 메타데이터(322B)(예를 들어, 헤드 포즈, 각 활성 부분의 깊이, 및/또는 활성 부분의 3차원 위치)를 결정하도록 구성된다. 다음으로, APR 평면 파라미터 컴퓨트 엔진(516)은 이 정보를 워프 메타데이터(322B)로서 출력하고, 이는 위에서도 설명된 바와 같이 클라이언트 디바이스(330)에 송신된다.
도 6 은 본 개시의 하나 이상의 기법들에 따른 아틀라스 관리의 다이어그램(600)을 예시한다. 일반적으로, 도시된 바와 같은 다이어그램 또는 시스템(600)은 도 5의 시스템(500)과 관련하여 위에서 설명된 바와 같은 유사한 번호에 의해 식별되는 다수의 동일한 컴포넌트를 포함하며, 그에 대한 상세는 반복되지 않을 것이라는 것에 유의한다. 일 양태에서, 시스템(600)은 콘텐츠의 활성 부분의 포즈 예측과 함께 컴팩트 아틀라스(320)를 생성하고 패킹하도록 구성된 서버(310)의 구성이다.
보다 구체적으로, 일부 양태들에서, 아틀라스의 디멘션(dimension)을 자주 변경하는 것은 후속 비디오 코덱에 의한 아틀라스의 인코딩에 부정적인 영향을 미칠 수도 있다. 다른 한편으로, 사용자가 이동함에 따라, 앵커링된 콘텐츠가 아이 버퍼에서 줌인 또는 줌아웃될 수도 있으며, 이는 차례로, 품질에 변화가 없다고 가정할 때, 상이한 크기의 아틀라스를 활용할 수도 있다. 과거 사용자의 모션에 기초하여, 사용자의 미래 위치는 60fps에서 10프레임 또는 160ms와 같이 짧은 시간 기간에 대해 예측될 수 있다. 또한, 장면에서 객체의 알려진 앵커 위치가 주어지면, 객체의 경계 박스(540)의 크기 변화가 사용자 모션 예측에 기초하여 예측될 수 있다. 다음으로, 짧은 시간 기간 동안 아틀라스(320)의 크기는 이들 예측에 기초하여 고정될 수도 있다.
도 6에 도시된 바와 같이, 커스텀 게임 엔진 플러그인(510)은 예를 들어, AR 디바이스(예를 들어, 클라이언트 디바이스 또는 안경(330))의, 사용자의 포지셔닝 및/또는 움직임을 나타내는 메타데이터로서 AR 애플리케이션(502)으로부터 복수의 헤드 포즈 샘플(632)을 수신하도록 구성된 포즈 예측기(630)를 더 포함할 수 있다. 다시 말해서, 포즈 예측기는 클라이언트 디바이스(330)로부터 그리고 이들 과거 포즈 샘플에 기초하여 수신하도록 구성되고, 포즈 예측기(630)는 예를 들어, AR 애플리케이션(502)의 다음 프레임에 대해 사용자의 미래 위치 및 움직임/모션(예를 들어, 포즈)를 예측하도록 구성될 수도 있다. 또한, 렌더링된 AR 장면에서 객체의 알려진 앵커 위치(634)가 주어지면(예를 들어, 물리적 세계에서 아이 버퍼에서 보여지는 가상 객체가 앵커링된 곳 또는 사용자로부터 객체의 거리), 객체의 경계 박스(540)에서 크기 변화는 포즈 예측기(130)로부터의 사용자 모션 예측 및 알려진 앵커 위치로부터의 객체의 포지션에 기초하여 예측될 수 있다. 따라서, 아이 버퍼(504)의 그 객체에 대한 아틀라스(320)에서의 리얼 에스테이트를 할당할 때, 커스텀 게임 엔진 플러그인(510)은 다음 몇 프레임에 걸쳐 추정되는 사용자의 관점에서 객체의 최대 크기를 사용하도록 구성된다. 일 양태에서, 리얼 에스테이트의 이러한 할당은 그러한 다음 몇 프레임에 걸쳐 일정하게 유지된다. 더욱이, 그러한 프레임 중 일부에서, 객체에 할당된 전체 리얼 에스테이트가 사용되지 않을 수도 있으며(예: 객체가 원근감에서 더 작음), 일부 프레임에서는 예를 들어 완전히 사용된다.
일부 추가 양태들에서, 비디오 데이터가 공유 무선 링크, 예를 들어 5G 에어 링크를 통해 전송되는 시스템의 포커스는 사용자와 비트 레이트 또는 품질간의 트레이드 오프일 수도 있다. 예를 들어, 사용자의 위치 또는 정체 및 링크에 대한 그의 영향으로 인한, 이용 가능한 사용자 스루풋에 따라, 인코딩 비트 레이트가 설정될 수도 있다.
일부 경우에, 타겟 비트 레이트는, 아이 버퍼(318)에 있는 콘텐츠가 레이트 제어에서 인코더(316)를 돕기 위해 스케일링될 수 있도록, 패치 메타데이터(322A)를 결정할 때 추가 입력으로서 제공될 수도 있다. 본 개시의 양태들은 글로벌 스케일링 팩터 를 할당할 수 있고, 각 경계 박스에 대해 및 계층별(per-layer) 스케일 팩터 를 할당할 수 있다. 박스별(per-box) 스케일 팩터는 사용자 위치로부터 박스에서 콘텐츠의 거리, 지각적 중요도, 또는 아이 버퍼(318)에서의 위치에 의존할 수도 있으며, 여기서 그것은 중심와(fovea) 또는 콘텐츠 복잡성에 상대적일 수도 있다. 계층의 분산 이 주어지면, 본 개시는 의 계층별 레이트를 가정할 수 있고, 여기서 는 조정 가능한 상수이다. 본 개시의 양태는 또한 이 최소가 되게, 가 되도록 에 대해 풀 수 있다. 또한, 본 개시는 프레임들의 짧은 시간적 시퀀스, 예를 들어 화상들의 그룹(GOP)에 걸쳐 를 변화되지 않게 유지할 수도 있다. 사용자에 대해 예측된 포지션의 범위에 기초하여, 본 개시는 그 시간 기간 동안 평균 을 결정할 수 있다.
도 7 은 본 개시의 하나 이상의 기법들에 따른 아틀라스 관리의 다이어그램(700)을 예시한다. 일반적으로, 다이어그램(700)은 도 3 및 도 4와 관련하여 위에서 설명된 바와 같은 클라이언트 디바이스(330)의 컴포넌트를 예시하고, 보다 구체적으로, 일 양태에 따라 도시된 바와 같은 점선 박스를 포함할 수도 있는, 아틀라스 관리자(334)의 컴포넌트들을 포함한다.
위에서 설명된 바와 같이, 클라이언트 측(330)에서, 디코더(336)는 아틀라스 비트스트림(324)을 수신하고 그것을 아틀라스 픽셀 버퍼로 디코딩할 수도 있다. 패킷 손실이 있는 경우, 이것은 이전 아틀라스 프레임에서 대응하는 패치로부터의 정보를 사용하여 현재 디코딩된 아틀라스(320)에서 패치들의 숨김(concealment)을 포함할 수 있다. 일 양태에 따르면, 연속적인 아틀라스 프레임 간의 패치 대응이 유지될 수도 있다. 새 패치 또는 경계 박스는 메타데이터에 명시적으로 마킹될 수도 있다. 또한, 숨김은 사용자 배향 변화가 아이 버퍼에서 객체 외관에 미치는 영향을 처리할 수 있다. 다음으로, 숨겨진 프레임은 서버(310)로부터 수신된 다음 아틀라스(320)를 디코딩하기 위한 참조(reference)로서 사용될 수도 있다. 다음으로, 현재 패치 정보(예를 들어, 패치 메타데이터(322A))는 아틀라스(320)를 아이 버퍼(318)로 디멀티플렉싱하기 위해 사용될 수도 있다.
따라서, 도 7 에 도시된 바처럼, 다이어그램(700)은 본 개시의 하나 이상의 기법들에 따른 아틀라스 관리를 제공한다. 특히, 다이어그램(700)은 디코더(336), 숨김 컴포넌트(752), 및 아틀라스 디멀티플렉서(756)를 포함할 수 있는 클라이언트(330)에서의 아틀라스 관리자(334)와 같은 다수의 상이한 컴포넌트들을 포함한다. 아틀라스 관리자(334)는 전술한 바와 같이 서버(310)로부터 패치 정보(322A), 워프 메타데이터(322B) 및 압축된 아틀라스의 비트스트림(324)을 수신한다. 디코더(336)는 또한 위에서 설명된 바와 같이 비트스트림(324)을 디코딩하고, 패치 메타데이터(322A) 및 워프 메타데이터(322B)를 또한 수신하는 숨김 컴포넌트(752)에 AR 콘텐츠의 컴팩트 아틀라스(320)를 제공한다.
위에서 언급한 바와 같이, 비트스트림(324)에 패킷 손실이 있을 때, 예를 들어, 숨김 컴포넌트(752)는 예를 들어 이전 아틀라스 프레임에서 대응하는 패치로부터의 정보를 사용하여 현재 디코딩된 아틀라스(320)에서 이들 패치를 숨기도록 구성된다. 따라서, 일 양태에 따르면, 연속적인 아틀라스 프레임 간의 패치 대응이 유지될 수도 있다. 다음으로, 숨겨진 아틀라스(754)는, 위에서도 설명된 바처럼 경계 박스(540)를 사용하여 아이 버퍼(318)를 재작성하도록 구성된 디멀티플렉서(756)에 제공된다. 즉, 디멀티플렉서(756)는 아틀라스(320)에서의 각 패치에 대한 (예를 들어, 패치 메타데이터(322A)로부터) 포지션 및 사이징 정보를 수신하고 이 패치 메타데이터(322A)를 사용하여 정확하게 배치되고 사이징된 패치로 아이 버퍼(318)를 재작성하도록 구성된다.
일부 양태에서, 아틀라스(320)에 쓰는 것은 렌더링된 픽셀을 터치하는 것을 포함할 수도 있고, 다른 픽셀 수정이 영향을 받을 수 있는 점일 수도 있다. 또한, 예를 들어, 아틀라스 관리자(314)에 의한 아틀라스 쓰기 동작의 일부로서 색 공간 변환이 수행될 수 있다. 콘텐츠의 포비티드 압축(foveated compression)은 아틀라스 쓰기 동작으로 접힐 수 있는 또 다른 동작일 수도 있다. 포비티드 압축 해제가 클라이언트 측 상의 각 경계 박스에 어떻게 적용되는지를 나타내기 위해 추가 메타데이터가 생성될 수도 있다. 서버(310) 및 클라이언트(330)에서의 아틀라스 관리의 동작은 예시적인 양태로 AR 인코더 또는 디코더에 포함될 수도 있다.
더욱이, 예를 들어 실시간 또는 주기적 기반으로 서버(310)로부터 클라이언트(330)로 전송된 다수의 아틀라스(320)가 있을 수도 있다. 예를 들어, 각 아틀라스(320)는 특정 프레임 레이트에서 업데이트되는 데이터를 포함할 수도 있다. 예를 들어, 배경 AR 장면이 전경보다 더 낮은 레이트에서 업데이트되는 경우, 전경 객체는 별도의 아틀라스(320)로서 전송될 수도 있다. 또한, 동일한 아틀라스에서의 일부 패치가 다른 패치에 비해 덜 자주 업데이트되는 경우, 코덱은 업데이트되지 않은 패치에서의 시간적 중복성(temporal redundancy)을 다루는 것이 가능할 수도 있다.
본 개시의 양태들은 위에서 설명된 경계 박스 메타데이터를 사용하여 AR 아이 버퍼(318)에서의 희소 콘텐츠를 아틀라스(320)로 공간적으로 패킹하는 방법을 포함할 수 있다. 본 개시는 또한 디스플레이/플랫폼(322)에 의한 표시 전에 클라이언트 AR 디바이스(330)에서 이 콘텐츠를 디패킹할 수 있다. 아틀라스의 명시적인 디패킹(de-packing)이 없고 클라이언트에서 타임 워프 동작에서 암시적인 경우, 이 동작은 패치 정보 및 워핑 메타데이터에 의해 안내될 수도 있다. 또한, 본 개시는 사용자 포즈 예측을 사용하는 것과 같이 콘텐츠의 품질의 실질적인 변화 없이 시간 기간에 걸쳐 각 패치의 크기가 일관되도록 패치 정보 메타데이터(322A)를 결정할 수 있다.
본 개시는 또한 타겟 비트 레이트가 충족되도록 패치 정보 메타데이터(322A)를 결정할 수 있으며, 이는 장면 내의 사용자 및 객체 위치에 대한 포즈 예측에 의해 도움을 받을 수 있다. 본 개시는 또한 색 공간 변환 및 포비티드 압축을 아틀라스 관리자와 결합할 수 있다. 더욱이, 본 개시는 전통적인 압축 및 아틀라스 관리를 단일 동작으로 결합하는 하드웨어 인코더 또는 디코더 모듈을 포함할 수도 있다. 또한, 본 개시의 양태들은 패치 메타데이터에 의해 구동되는 패킷 손실 숨김으로 클라이언트 상에서 아이 버퍼를 생성할 수도 있다.
도 8 은 본 개시의 하나 이상의 기법에 따른 예시적인 방법의 예시적인 플로우차트(800)를 도시한다. 방법은 서버, 클라이언트 디바이스, CPU, GPU, 또는 컴퓨터 또는 그래픽스 프로세싱을 위한 장치와 같은 장치에 의해 수행될 수도 있다. 일 양태에서, 방법은 위에서 설명된 바와 같이 하나 이상의 컴포넌트들을 포함하는 서버/폰(310) 및 클라이언트/안경(330)에 의해 수행될 수도 있다.
802에서, 장치는 예를 들어 렌더링된 엔진(312)에 의해 프레임에서 렌더링된 콘텐츠를 생성할 수도 있다. 804에서, 장치는 또한 위에서 설명된 바와 같이, 프레임에서의 렌더링된 콘텐츠와 연관된 하나 이상의 경계 박스(540)를 포함하는 아이 버퍼(318)를 결정할 수도 있다. 일부 양태들에서, 하나 이상의 경계 박스들(540)은 프레임에서의 렌더링된 콘텐츠에 관한 정보를 포함할 수도 있다.
806 에서, 장치는 또한 프레임에서 렌더링된 콘텐츠와 연관된 사용자 모션의 양을 계산할 수도 있다. 808 에서, 장치는 사용자 모션의 계산된 양에 기초하여 하나 이상의 경계 박스들 각각의 크기를 결정할 수도 있다. 일부 양태들에서, 하나 이상의 패치들 각각의 크기는 하나 이상의 경계 박스들(540) 각각의 크기에 대응할 수도 있다. 또한, 하나 이상의 패치들 각각의 크기는 일 양태에서 타겟 비트 레이트에 기초하여 결정될 수도 있다.
810에서, 장치는 아이 버퍼(318)에 기초하여 아틀라스(320)를 생성할 수도 있고, 여기서 아틀라스(320)는 하나 이상의 경계 박스들(540)과 연관된 하나 이상의 패치들을 포함할 수 있다. 일부 양태들에서, 하나 이상의 패치들 각각은 패치 메타데이터(322A)와 연관될 수도 있다.
812 에서, 장치는 아틀라스(320)에서 하나 이상의 패치들 각각의 크기 및 위치를 결정할 수도 있다. 814 에서, 장치는 하나 이상의 패치들을 포함하는 아틀라스(320)를 (예를 들어, 인코더(316)를 사용하여) 인코딩할 수도 있다. 816 에서, 장치는 하나 이상의 패치들을 포함하는 아틀라스(320)를 (예를 들어, 비트스트림(324)로서) 통신할 수도 있다.
816 에서, 장치는 또한 클라이언트 디바이스(330)에 아틀라스(320)를 송신할 수도 있다. 816 에서, 장치(예를 들어, 클라이언트 디바이스(330))는 서버(예를 들어, 클라이언트 디바이스(310))로부터, 하나 이상의 패치들을 포함하는 아틀라스(320)를 수신할 수도 있다. 818 에서, 장치는 하나 이상의 패치들을 포함하는 아틀라스(320)를 (예를 들어, 디코더(336)에 의해) 디코딩할 수도 있다.
820 에서, 장치는 클라이언트 아이 버퍼(318)를 재작성하기 위해 하나 이상의 경계 박스들(540)에 기초하여 디코딩된 아틀라스(320)에서 하나 이상의 패치들을 워핑할 수도 있다. 822 에서, 장치(예를 들어, 클라이언트 디바이스(330))는 또한 하나 이상의 패치들을 포함하는 아틀라스(320)에 기초하여 하나 이상의 경계 박스들(540)을 포함하는 클라이언트 아이 버퍼(318)를 결정할 수도 있다. 824 에서, 장치는 또한 클라이언트 아이 버퍼(318)에서의 하나 이상의 경계 박스들을 (예를 들어, 디스플레이/플랫폼(332)상에) 표시할 수도 있고, 여기서 하나 이상의 경계 박스들은 프레임에서 렌더링된 콘텐츠와 연관될 수도 있다.
일 구성에서, 그래픽스 프로세싱을 위한 방법 또는 장치가 제공된다. 위에 설명된 바처럼, 장치는 서버, 클라이언트 디바이스, CPU, GPU, 또는 컴퓨터 또는 그래픽스 프로세싱을 수행할 수 있는 기타 프로세서일 수도 있다. 일 양태에서, 장치는 디바이스(104)내의 프로세싱 유닛(120)일 수도 있거나, 디바이스(104) 또는 다른 디바이스 내의 기타 하드웨어일 수도 있다. 장치는 프레임에서 렌더링된 콘텐츠와 연관된 하나 이상의 경계 박스들을 포함하는 아이 버퍼를 결정하는 수단을 포함할 수도 있다. 장치는 또한 아이 버퍼에 기초하여 아틀라스를 생성하는 수단을 포함할 수도 있고, 아틀라스는 하나 이상의 경계 박스들과 연관된 하나 이상의 패치들을 포함한다. 장치는 또한 하나 이상의 패치들을 포함하는 아틀라스를 통신하는 수단을 포함할 수도 있다. 장치는 또한 프레임에서 렌더링된 콘텐츠와 연관된 사용자 모션의 양을 계산하는 수단을 포함할 수도 있다. 장치는 또한 사용자 모션의 계산된 양에 기초하여 하나 이상의 경계 박스들 각각의 크기를 결정하는 수단을 포함할 수도 있다. 장치는 또한 아틀라스에서 하나 이상의 패치들 각각의 크기 및 위치를 결정하는 수단을 포함할 수도 있다. 장치는 또한 하나 이상의 패치들을 포함하는 아틀라스를 인코딩하는 수단을 포함할 수도 있다. 장치는 또한 하나 이상의 패치들을 포함하는 아틀라스를, 클라이언트 디바이스로, 전송하는 수단을 포함할 수도 있다. 장치는 또한 하나 이상의 패치들을 포함하는 아틀라스를, 서버로부터, 수신하는 수단을 포함할 수도 있다. 장치는 또한 하나 이상의 패치들을 포함하는 아틀라스를 디코딩하는 수단을 포함할 수도 있다. 장치는 또한 클라이언트 아이 버퍼에서 하나 이상의 경계 박스들에 기초하여 디코딩된 아틀라스에서 하나 이상의 패치들을 워핑하는 수단을 포함할 수도 있다. 장치는 또한 하나 이상의 패치들을 포함하는 아틀라스에 기초하여 하나 이상의 경계 박스들을 포함하는 클라이언트 아이 버퍼를 결정하는 수단을 포함할 수도 있다. 장치는 또한 디스플레이에서 클라이언트 아이 버퍼에서의 하나 이상의 경계 박스들을 표시하는 수단을 포함할 수도 있고, 여기서 하나 이상의 경계 박스들은 프레임에서 렌더링된 콘텐츠와 연관된다. 장치는 또한 프레임에서 렌더링된 콘텐츠를 생성하는 수단을 포함할 수도 있다.
본 명세서에서 설명된 요지는 하나 이상의 이익들 또는 이점들을 실현하기 위해 구현될 수 있다. 예를 들어, 설명된 그래픽스 프로세싱 기법들은 서버, 클라이언트, GPU, CPU, 또는 본 명세서에 설명된 분할 렌더링 기법들을 구현하기 위해 컴퓨터 또는 그래픽스 프로세싱을 수행할 수 있는 기타 프로세서에 의해 사용될 수 있다. 이것은 또한, 다른 컴퓨터 또는 그래픽스 프로세싱 기법들과 비교하여 낮은 비용으로 달성될 수 있다. 더욱이, 본 명세서에서의 컴퓨터 또는 그래픽스 프로세싱 기법들은 데이터 프로세싱 또는 실행을 개선 또는 빠르게할 수 있다. 또한, 본 명세서에서의 컴퓨터 또는 그래픽스 프로세싱 기법들은 리소스 또는 데이터 활용 및/또는 리소스 효율성을 개선할 수 있다. 추가적으로, 본 개시의 양태 들은 전력 활용 및/또는 레이턴시의 양을 감소시키고 높은 수준의 품질을 유지할 수 있는 분할 렌더링 프로세스 를 이용할 수 있다.
본 개시에 따르면, 용어 "또는" 은 컨텍스트가 달리 지시하지 않는 경우 "및/또는" 으로서 해석될 수도 있다. 추가적으로, 어구, 이를 테면, "하나 이상", 또는 "적어도 하나" 등이 본원에 개시된 일부 특징에 이용될 수도 있지만, 이러한 말이 이용되지 않는 특징은 컨텍스트에 달리 언급되지 않는 경우 이러한 함축된 의미를 갖는 것으로 해석될 수도 있다.
하나 이상의 예들에서, 본 명세서에서 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 예를 들어, 용어 "프로세싱 유닛" 이 본 개시 전반에 걸쳐 사용되었지만, 그러한 프로세싱 유닛들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 임의의 기능, 프로세싱 유닛, 본 명세서에서 설명된 기법, 또는 다른 모듈이 소프트웨어에서 구현되면, 기능, 프로세싱 유닛, 본 명세서에서 설명된 기법, 또는 다른 모듈은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장 또는 이를 통해 송신될 수도 있다. 컴퓨터 판독가능 매체들은, 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 또는 컴퓨터 데이터 저장 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다. 한정이 아닌 예로서, 그러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장 또는 다른 자기 저장 디바이스들을 포함할 수 있다. 여기에 사용된 바와 같이, 디스크(disk) 및 디스크(disc)는 콤팩트 디스크(compact disc; CD), 레이저 디스크(laser disc), 광 디스크(optical disc), DVD(digital versatile disc), 플로피 디스크(floppy disk) 및 블루레이 디스크(Blu-ray disc)를 포함하며, 여기서, 디스크(disk)는 보통 데이터를 자기적으로 재생하지만, 디스크(disc)는 레이저를 이용하여 광학적으로 데이터를 재생한다. 또한, 상기의 조합들이 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
코드는 하나 이상의 디지털 신호 프로세서들(DSP들), 범용 마이크로프로세서들, 주문형 집적 회로들(ASIC들), 산술 로직 유닛들(ALU들), 필드 프로그래밍가능 로직 어레이들(FPGA들), 또는 다른 동등한 집적된 또는 이산 로직 회로와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 이에 따라, 본 명세서에 사용된 바와 같은 용어 "프로세서" 는 전술한 구조 또는 본 명세서에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로(IC) 또는 IC들의 세트, 예를 들면, 칩 세트를 포함하는, 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하는 것은 아니다. 오히려, 상기 설명된 바와 같이, 다양한 유닛들은 임의의 하드웨어 유닛에 결합될 수도 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 연동적인 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.
Claims (30)
- 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법으로서,
AR 콘텐츠 패치들의 AR 콘텐츠 아틀라스를, 클라이언트 디바이스에 의해, 수신하는 단계로서, 상기 패치들은 프레임의 희소 AR 콘텐츠를 정의하는 경계 박스들과 연관되는, 상기 AR 콘텐츠 아틀라스를 수신하는 단계;
수신된 상기 아틀라스의 상기 패치들 각각의, 상기 경계 박스들 중, 위치를 결정하는 단계;
상기 패치들 및 상기 패치들 각각의 결정된 위치에 기초하여 상기 희소 AR 콘텐츠와 연관된 상기 경계 박스들을 포함하는 아이 버퍼를 결정하는 단계; 및
희소 AR 콘텐츠 아이 버퍼에 기초하여 상기 AR 콘텐츠를, 상기 클라이언트 디바이스에 의해, 렌더링하는 단계
를 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 1 항에 있어서,
상기 경계 박스들 각각의 크기는 상기 프레임에서 렌더링된 상기 AR 콘텐츠와 연관된 사용자 모션의 계산된 양에 기초하여 정의되는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 1 항에 있어서,
상기 경계 박스들 각각의 크기에 대응하는 상기 아틀라스에서의 상기 패치들 각각의 크기를 결정하는 단계를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 1 항에 있어서,
수신된 상기 아틀라스의 상기 패치들 각각의 위치를 결정하는 단계는 상기 아틀라스를 생성하는 서버로부터 수신된 패치 메타데이터에 기초하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 1 항에 있어서,
상기 아틀라스에서 상기 패치들과 연관된 워핑 메타데이터를 수신하는 단계
를 더 포함하고;
상기 AR 콘텐츠를, 상기 클라이언트 디바이스에 의해, 렌더링하는 단계는 또한 상기 워핑 메타데이터에 기초하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 1 항에 있어서,
사용자의 포지셔닝 및 움직임 적어도 하나를 나타내는 상기 클라이언트 디바이스의 상기 사용자의 적어도 하나의 헤드 포즈 샘플을, 서버에, 송신하는 단계; 및
상기 사용자의 적어도 하나의 헤드 포즈 샘플에 기초하여 정의된 각각의 크기를 각각 갖는 상기 경계 박스들과 연관된 상기 패치들을 포함하는 상기 아틀라스를, 상기 서버로부터, 수신하는 단계
를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 1 항에 있어서,
상기 프레임과 상기 AR 콘텐츠의 이전 프레임 사이의 패치 대응을, 상기 클라이언트 디바이스에 의해, 결정하는 단계;
결정된 상기 패치 대응에 기초하여 수신된 상기 아틀라스의 적어도 하나의 패치를 숨기는 단계; 및
상기 아이 버퍼에 기초하여 상기 AR 콘텐츠가 상기 희소 AR 콘텐츠를 포함하여 숨겨진 상기 적어도 하나의 패치를 포함하도록, 상기 클라이언트 디바이스에 의해, 렌더링하는 단계
를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 1 항에 있어서,
압축된 형식으로 상기 아틀라스를, 클라이언트 디바이스에 의해, 수신하는 단계; 및
상기 프레임의 희소 AR 콘텐츠를 정의하는 경계 박스들과 연관된 상기 패치들을 결정하도록 상기 아틀라스를, 상기 클라이언트 디바이스의 디코더에 의해, 디코딩하는 단계
를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 클라이언트 디바이스 장치로서,
메모리; 및
상기 메모리에 연결된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는
AR 콘텐츠 패치들의 AR 콘텐츠 아틀라스를 수신하는 것으로서, 상기 패치들은 프레임의 희소 AR 콘텐츠를 정의하는 경계 박스들과 연관되는, 상기 AR 콘텐츠 아틀라스를 수신하고;
수신된 상기 아틀라스에서 상기 패치들 각각의, 상기 경계 박스들 중, 위치를 결정하고;
상기 패치들 및 상기 패치들 각각의 결정된 위치에 기초하여 상기 희소 AR 콘텐츠와 연관된 상기 경계 박스들을 포함하는 아이 버퍼를 결정하고;
희소 AR 콘텐츠 아이 버퍼에 기초하여 상기 AR 콘텐츠를 렌더링하도록 구성된, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 클라이언트 디바이스 장치. - 제 9 항에 있어서,
상기 경계 박스들 각각의 크기는 상기 프레임에서 렌더링된 상기 AR 콘텐츠와 연관된 사용자 모션의 계산된 양에 기초하여 정의되는, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 클라이언트 디바이스 장치. - 제 9 항에 있어서,
상기 적어도 하나의 프로세서는 또한, 상기 경계 박스들 각각의 크기에 대응하는 상기 아틀라스에서의 상기 패치들 각각의 크기를 결정하도록 구성된, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 클라이언트 디바이스 장치. - 제 9 항에 있어서,
수신된 상기 아틀라스에서 상기 패치들 각각의 위치를 결정하는 것은 상기 아틀라스를 생성하는 서버로부터 수신된 패치 메타데이터에 기초하는, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 클라이언트 디바이스 장치. - 제 9 항에 있어서,
상기 적어도 하나의 프로세서는 또한 상기 아틀라스에서의 상기 패치들과 연관된 워핑 메타데이터를 수신하고 상기 워핑 메타데이터에 기초하여 상기 AR 콘텐츠를 렌더링하도록 구성된, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 클라이언트 디바이스 장치. - 제 9 항에 있어서,
상기 적어도 하나의 프로세서는 또한
사용자의 포지셔닝 및 움직임 적어도 하나를 나타내는 클라이언트 디바이스의 상기 사용자의 적어도 하나의 헤드 포즈 샘플을, 서버에, 송신하고;
상기 사용자의 적어도 하나의 헤드 포즈 샘플에 기초하여 정의된 각각의 크기를 각각 갖는 상기 경계 박스들과 연관된 상기 패치들을 포함하는 상기 아틀라스를, 상기 서버로부터, 수신하도록 구성된, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 클라이언트 디바이스 장치. - 제 9 항에 있어서,
상기 적어도 하나의 프로세서는 또한
상기 프레임과 상기 AR 콘텐츠의 이전 프레임 사이의 패치 대응을 결정하고;
결정된 상기 패치 대응에 기초하여 수신된 상기 아틀라스의 적어도 하나의 패치를 숨기고;
상기 아이 버퍼에 기초하여 상기 AR 콘텐츠가 상기 희소 AR 콘텐츠를 포함하여 숨겨진 상기 적어도 하나의 패치를 포함하도록 렌더링하게 구성된, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 클라이언트 디바이스 장치. - 제 9 항에 있어서,
압축된 형식으로 상기 아틀라스를 수신하고 상기 프레임의 희소 AR 콘텐츠를 정의하는 경계 박스들과 연관된 상기 패치들을 결정하기 위해 상기 아틀라스를 디코딩하도록 구성된 디코더를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 클라이언트 디바이스 장치. - 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법으로서,
프레임의 희소 AR 콘텐츠의 경계 박스들을 포함하는 희소 AR 콘텐츠 아이 버퍼를 결정하는 단계;
상기 희소 AR 콘텐츠의 희소 AR 콘텐츠 아틀라스를 생성하는 단계로서, 상기 희소 AR 콘텐츠 아틀라스는 상기 경계 박스들과 연관된 AR 콘텐츠 패치들을 포함하는, 상기 희소 AR 콘텐츠 아틀라스를 생성하는 단계;
상기 아틀라스에서 각각의 패치의 상기 경계 박스들 중 위치를 결정하는 단계; 및
상기 아틀라스 및 결정된 위치들에 기초하여 클라이언트 디바이스 상에 상기 AR 콘텐츠를 렌더링하기 위해 상기 아틀라스 및 결정된 위치들을 상기 클라이언트 디바이스에 송신하는 단계
를 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 17 항에 있어서,
상기 경계 박스들 각각의 크기에 대응하는 상기 아틀라스에서의 상기 패치들 각각의 크기를 결정하는 단계를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 18 항에 있어서,
상기 아틀라스를 상기 클라이언트 디바이스에 송신하기 위한 타겟 비트 레이트에 기초하여 상기 패치들 각각의 크기를 결정하는 단계를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 17 항에 있어서,
상기 프레임에서 렌더링된 상기 AR 콘텐츠와 연관된 사용자 모션의 양을 결정하는 단계; 및
상기 사용자 모션의 결정된 양에 기초하여 상기 경계 박스들 각각의 크기를 결정하는 단계
를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 17 항에 있어서,
상기 아틀라스에서의 상기 패치들과 연관된 워핑 메타데이터를 생성하는 단계를 더 포함하여, 상기 클라이언트 디바이스가 상기 워핑 메타데이터에 기초하여 상기 AR 콘텐츠를 렌더링하도록 구성되는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 17 항에 있어서,
사용자의 포지셔닝 및 움직임 중 적어도 하나를 나타내는 상기 클라이언트 디바이스의 상기 사용자의 적어도 하나의 헤드 포즈 샘플을, 상기 클라이언트 디바이스로부터, 수신하는 단계; 및
상기 사용자의 상기 적어도 하나의 헤드 포즈 샘플에 기초하여, 상기 아틀라스의 하나 이상의 패치들과 연관된 상기 경계 박스들의 각각의 크기를 결정하는 단계
를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 제 17 항에 있어서,
압축된 형식으로 상기 아틀라스를 인코딩하는 단계; 및
인코딩된 상기 아틀라스를 상기 클라이언트 디바이스로 송신하는 단계
를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하는 방법. - 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 장치로서,
메모리; 및
상기 메모리에 연결된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는:
프레임의 희소 AR 콘텐츠의 경계 박스들을 포함하는 희소 AR 콘텐츠 아이 버퍼를 결정하고;
상기 희소 AR 콘텐츠의 희소 AR 콘텐츠 아틀라스를 생성하는 것으로서, 상기 희소 AR 콘텐츠 아틀라스는 상기 경계 박스들과 연관된 AR 콘텐츠 패치들을 포함하는, 상기 희소 AR 콘텐츠 아틀라스를 생성하고;
상기 아틀라스에서 각각의 패치의 상기 경계 박스들 중 위치를 결정하고;
상기 아틀라스 및 결정된 위치들에 기초하여 클라이언트 디바이스 상에 상기 AR 콘텐츠를 렌더링하기 위해 상기 아틀라스 및 결정된 위치들을 상기 클라이언트 디바이스에 송신하도록 구성된, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 장치. - 제 24 항에 있어서,
상기 적어도 하나의 프로세서는 또한, 상기 경계 박스들 각각의 크기에 대응하는 상기 아틀라스에서의 상기 패치들 각각의 크기를 결정하도록 구성된, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 장치. - 제 25 항에 있어서,
상기 적어도 하나의 프로세서는 또한, 상기 아틀라스를 상기 클라이언트 디바이스에 송신하기 위한 타겟 비트 레이트에 기초하여 상기 패치들 각각의 크기를 결정하도록 구성된, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 장치. - 제 24 항에 있어서,
상기 적어도 하나의 프로세서는 또한
상기 프레임에서 렌더링된 상기 AR 콘텐츠와 연관된 사용자 모션의 양을 결정하고;
사용자 모션의 결정된 양에 기초하여 상기 경계 박스들 각각의 크기를 결정하도록 구성된, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 장치. - 제 24 항에 있어서,
상기 적어도 하나의 프로세서는 또한 상기 아틀라스에서의 상기 패치들과 연관된 워핑 메타데이터를 생성하도록 구성되어, 상기 클라이언트 디바이스가 상기 워핑 메타데이터에 기초하여 상기 AR 콘텐츠를 렌더링하도록 구성되는, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 장치. - 제 24 항에 있어서,
상기 적어도 하나의 프로세서는 또한
사용자의 포지셔닝 및 움직임 중 적어도 하나를 나타내는 상기 클라이언트 디바이스의 상기 사용자의 적어도 하나의 헤드 포즈 샘플을, 상기 클라이언트 디바이스로부터, 수신하고;
상기 사용자의 상기 적어도 하나의 헤드 포즈 샘플에 기초하여, 상기 아틀라스의 하나 이상의 패치들과 연관된 상기 경계 박스들의 각각의 크기를 결정하도록 구성된, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 장치. - 제 24 항에 있어서,
상기 아틀라스를 압축된 형식으로 인코딩하고 인코딩된 상기 아틀라스를 상기 클라이언트 디바이스에 송신하도록 구성된 인코더를 더 포함하는, 증강 현실 (AR) 콘텐츠를 프로세싱하기 위한 장치.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN202041020333 | 2020-05-14 | ||
IN202041020333 | 2020-05-14 | ||
US17/039,834 US11321928B2 (en) | 2020-05-14 | 2020-09-30 | Methods and apparatus for atlas management of augmented reality content |
US17/039,834 | 2020-09-30 | ||
PCT/US2021/027137 WO2021231016A1 (en) | 2020-05-14 | 2021-04-13 | Methods and apparatus for atlas management of augmented reality content |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220154252A KR20220154252A (ko) | 2022-11-21 |
KR102590644B1 true KR102590644B1 (ko) | 2023-10-17 |
Family
ID=78512748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227038857A KR102590644B1 (ko) | 2020-05-14 | 2021-04-13 | 증강 현실 콘텐츠의 아틀라스 관리를 위한 방법 및 장치 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11321928B2 (ko) |
EP (1) | EP4150585A1 (ko) |
KR (1) | KR102590644B1 (ko) |
CN (1) | CN115668298B (ko) |
BR (1) | BR112022022258A2 (ko) |
TW (1) | TW202145139A (ko) |
WO (1) | WO2021231016A1 (ko) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11818401B2 (en) | 2017-09-14 | 2023-11-14 | Apple Inc. | Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables |
US11113845B2 (en) | 2017-09-18 | 2021-09-07 | Apple Inc. | Point cloud compression using non-cubic projections and masks |
US11010928B2 (en) | 2018-04-10 | 2021-05-18 | Apple Inc. | Adaptive distance based point cloud compression |
US11017566B1 (en) | 2018-07-02 | 2021-05-25 | Apple Inc. | Point cloud compression with adaptive filtering |
US11202098B2 (en) | 2018-07-05 | 2021-12-14 | Apple Inc. | Point cloud compression with multi-resolution video encoding |
US11012713B2 (en) | 2018-07-12 | 2021-05-18 | Apple Inc. | Bit stream structure for compressed point cloud data |
US11367224B2 (en) | 2018-10-02 | 2022-06-21 | Apple Inc. | Occupancy map block-to-patch information compression |
US11625806B2 (en) * | 2019-01-23 | 2023-04-11 | Qualcomm Incorporated | Methods and apparatus for standardized APIs for split rendering |
US11711544B2 (en) | 2019-07-02 | 2023-07-25 | Apple Inc. | Point cloud compression with supplemental information messages |
US11562507B2 (en) * | 2019-09-27 | 2023-01-24 | Apple Inc. | Point cloud compression using video encoding with time consistent patches |
US11627314B2 (en) | 2019-09-27 | 2023-04-11 | Apple Inc. | Video-based point cloud compression with non-normative smoothing |
US11538196B2 (en) | 2019-10-02 | 2022-12-27 | Apple Inc. | Predictive coding for point cloud compression |
US11895307B2 (en) | 2019-10-04 | 2024-02-06 | Apple Inc. | Block-based predictive coding for point cloud compression |
US11798196B2 (en) | 2020-01-08 | 2023-10-24 | Apple Inc. | Video-based point cloud compression with predicted patches |
US11475605B2 (en) | 2020-01-09 | 2022-10-18 | Apple Inc. | Geometry encoding of duplicate points |
US11615557B2 (en) | 2020-06-24 | 2023-03-28 | Apple Inc. | Point cloud compression using octrees with slicing |
US11620768B2 (en) | 2020-06-24 | 2023-04-04 | Apple Inc. | Point cloud geometry compression using octrees with multiple scan orders |
US11948338B1 (en) | 2021-03-29 | 2024-04-02 | Apple Inc. | 3D volumetric content encoding using 2D videos and simplified 3D meshes |
US20230196498A1 (en) * | 2021-12-20 | 2023-06-22 | Qualcomm Incorporated | Scheduling techniques in split rendering |
US20230215074A1 (en) * | 2022-01-03 | 2023-07-06 | Meta Platforms Technologies, Llc | Rendering workload management for extended reality |
US20240155013A1 (en) * | 2022-11-07 | 2024-05-09 | Tencent America LLC | Method and apparatus for management of split-rendering in 5g networks |
US11954248B1 (en) * | 2023-03-17 | 2024-04-09 | Microsoft Technology Licensing, Llc. | Pose prediction for remote rendering |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0900700D0 (en) * | 2009-01-15 | 2009-03-04 | Advanced Risc Mach Ltd | Methods of and apparatus for processing graphics |
US9798508B2 (en) * | 2012-07-16 | 2017-10-24 | Microsoft Technology Licensing, Llc | Implementing previously rendered frame buffer information in a customized GUI display |
GB2537661B (en) * | 2015-04-22 | 2018-09-26 | Imagination Tech Ltd | Tiling a primitive in a graphics processing system |
CN108475331B (zh) | 2016-02-17 | 2022-04-05 | 英特尔公司 | 用于对象检测的方法、装置、***和计算机可读介质 |
US20170262996A1 (en) * | 2016-03-11 | 2017-09-14 | Qualcomm Incorporated | Action localization in sequential data with attention proposals from a recurrent network |
WO2018125428A1 (en) * | 2016-12-29 | 2018-07-05 | Magic Leap, Inc. | Automatic control of wearable display device based on external conditions |
EP3349182A1 (en) * | 2017-01-13 | 2018-07-18 | Thomson Licensing | Method, apparatus and stream for immersive video format |
US10580200B2 (en) | 2017-04-07 | 2020-03-03 | Intel Corporation | Virtual reality apparatus and method including prioritized pixel shader operations, alternate eye rendering, and/or augmented timewarp |
US20180329465A1 (en) | 2017-05-11 | 2018-11-15 | Qualcomm Incorporated | System and method for intelligent adjustment of an immersive multimedia workload in a portable computing device |
US10885607B2 (en) * | 2017-06-01 | 2021-01-05 | Qualcomm Incorporated | Storage for foveated rendering |
US11727629B2 (en) | 2017-09-21 | 2023-08-15 | Samsung Electronics Co., Ltd. | Un-occluded visualization of focus with depth continuity with context in volume rendering |
EP3496388A1 (en) * | 2017-12-05 | 2019-06-12 | Thomson Licensing | A method and apparatus for encoding a point cloud representing three-dimensional objects |
US11010013B2 (en) * | 2018-10-29 | 2021-05-18 | International Business Machines Corporation | Providing visual control guidance on a display |
US11284091B2 (en) * | 2019-03-25 | 2022-03-22 | Apple Inc. | Video based point cloud compression-patch alignment and size determination in bounding box |
US11039149B2 (en) * | 2019-08-01 | 2021-06-15 | Qualcomm Incorporated | Dynamic video insertion based on feedback information |
-
2020
- 2020-09-30 US US17/039,834 patent/US11321928B2/en active Active
-
2021
- 2021-04-13 BR BR112022022258A patent/BR112022022258A2/pt unknown
- 2021-04-13 KR KR1020227038857A patent/KR102590644B1/ko active IP Right Grant
- 2021-04-13 CN CN202180030400.5A patent/CN115668298B/zh active Active
- 2021-04-13 EP EP21722730.5A patent/EP4150585A1/en active Pending
- 2021-04-13 WO PCT/US2021/027137 patent/WO2021231016A1/en unknown
- 2021-04-14 TW TW110113386A patent/TW202145139A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN115668298B (zh) | 2024-01-12 |
BR112022022258A2 (pt) | 2022-12-20 |
TW202145139A (zh) | 2021-12-01 |
CN115668298A (zh) | 2023-01-31 |
US20210358219A1 (en) | 2021-11-18 |
KR20220154252A (ko) | 2022-11-21 |
WO2021231016A1 (en) | 2021-11-18 |
EP4150585A1 (en) | 2023-03-22 |
US11321928B2 (en) | 2022-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102590644B1 (ko) | 증강 현실 콘텐츠의 아틀라스 관리를 위한 방법 및 장치 | |
CN116917927A (zh) | 用于机器学习工作负载中张量对象支持的方法和装置 | |
US11037358B1 (en) | Methods and apparatus for reducing memory bandwidth in multi-pass tessellation | |
US12020378B2 (en) | Compressed geometry rendering and streaming | |
US11080928B2 (en) | Methods and apparatus for visibility stream management | |
US20230101978A1 (en) | Meshlet shading atlas | |
US11893654B2 (en) | Optimization of depth and shadow pass rendering in tile based architectures | |
US11875452B2 (en) | Billboard layers in object-space rendering | |
US11869115B1 (en) | Density driven variable rate shading | |
WO2024055221A1 (en) | Fast msaa techniques for graphics processing | |
US12033603B2 (en) | Methods and apparatus for plane planning for overlay composition | |
US11622113B2 (en) | Image-space function transmission | |
US11373267B2 (en) | Methods and apparatus for reducing the transfer of rendering information | |
US11727631B2 (en) | Dynamic variable rate shading | |
US11087431B2 (en) | Methods and apparatus for reducing draw command information | |
CN116998145A (zh) | 用于基于显著性的帧颜色增强的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |