KR20210087043A - 병행 텍스처 샘플링 - Google Patents

병행 텍스처 샘플링 Download PDF

Info

Publication number
KR20210087043A
KR20210087043A KR1020217015175A KR20217015175A KR20210087043A KR 20210087043 A KR20210087043 A KR 20210087043A KR 1020217015175 A KR1020217015175 A KR 1020217015175A KR 20217015175 A KR20217015175 A KR 20217015175A KR 20210087043 A KR20210087043 A KR 20210087043A
Authority
KR
South Korea
Prior art keywords
texel
texels
array
sampling
buffer
Prior art date
Application number
KR1020217015175A
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 KR20210087043A publication Critical patent/KR20210087043A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

하나의 실시예에서, 컴퓨팅 시스템은 다수의 서브 어레이들을 포함하는 텍셀(texel) 어레이로 조직된 다수의 텍셀들을 수신할 수 있다. 시스템은 그들의 각각의 서브 어레이들 내에서 동일한 위치를 가지는 각각의 서브세트의 텍셀들을 갖는 텍셀 서브세트들의 수를 결정할 수 있다. 시스템은 텍셀 서브세트들을 다수의 버퍼 블록들에 각각 저장할 수 있으며, 각각의 버퍼 블록은 하나의 텍셀 서브세트를 저장한다. 시스템은 다수의 샘플링 지점들의 픽셀 값들을 병행하여 결정하기 위해 버퍼 블록들로부터 샘플링 텍셀 어레이를 검색할 수 있다. 샘플링 텍셀 어레이의 각각의 텍셀은 상이한 버퍼 블록으로부터 검색될 수 있다.

Description

병행 텍스처 샘플링
본 발명은 일반적으로, 가상 현실 및 증강 현실과 같은 인공 현실에 관한 것이다.
인공 현실은 예컨대, 가상 현실(VR), 증강 현실(AR), 혼합 현실(MR), 하이브리드 현실, 또는 그들의 일부 조합 및/또는 파생물들을 포함할 수 있는, 사용자에게 제공되기 전에 일부 방식으로 조정된 현실의 일 형태이다. 인공 현실 콘텐트는 캡쳐된 콘텐트(예컨대, 실세계 사진들)와 조합된 생성된 콘텐트 또는 완전히 생성된 콘텐트를 포함할 수 있다. 인공 현실 콘텐트는 비디오, 오디오, 햅틱 피드백, 또는 그들의 일부 조합을 포함할 수 있으며, 그들 중 임의의 것은 단일 채널로 또는 다수의 채널들(예컨대, 뷰어에게 3차원 효과를 생성하는 스테레오 비디오와 같음)로 제공될 수 있다. 인공 현실은 예컨대, 인공 현실에서 콘텐트를 생성하기 위해 사용되고/거나 인공 현실에서 사용되는(예컨대, 인공 현실에서 활동들을 수행하는) 애플리케이션들, 제품들, 액세서리들, 서비스들, 또는 그들의 일부 조합과 연관될 수 있다. 인공 현실 콘텐트를 제공하는 인공 현실 시스템은 호스트 컴퓨터 시스템에 연결된 헤드 마운트 디스플레이(HMD), 독립형 HMD, 모바일 디바이스 또는 컴퓨팅 시스템, 또는 인공 현실 콘텐트를 한명 이상의 뷰어들에게 제공할 수 있는 임의의 다른 하드웨어 플랫폼을 포함하는 다양한 플랫폼들에서 구현될 수 있다.
본 명세서에서 설명된 특정한 실시예들은 미리 뒤틀린 표면들(pre-warped surfaces)을 렌더링 프리미티브(rendering primitives)로서 사용하고, 한 번의 동작으로 타일(예컨대, 그것의 4개의 코너들에 의해 정의된 16×16 픽셀들과 같은 픽셀들의 컬렉션) 내의 픽셀 샘플들의 세트(예컨대, 픽셀들의 2×2 세트)의 속성들(예컨대, 컬러들 또는 거리 필드들)을 결정하기 위해 필요한 모든 텍셀(texel)들을 병행하여 검색하는 인공 현실 객체들을 렌더링하는 방법에 관한 것이다. 시스템은 컴퓨팅 시스템(예컨대, 모바일 폰, 또는 랩탑, 데스크탑, 등과 같은 신체 착용가능한 컴퓨팅 시스템)과 연관된 하나 이상의 CPU들/GPU들에서 미리 뒤틀린 표면들을 생성할 수 있다. 미리 뒤틀린 표면들은 기본 객체의 3D 윤곽을 시각적으로 고려하는 2D 이미지와 같은, CPU(들)/GPU(들)의 렌더링 결과들에 기초하여 생성될 수 있다. 미리 뒤틀린 표면들은 뷰어의 시점(예컨대, 시야 거리, 시야각)에 기초하여 특정한 형상, 크기, 방향을 갖고 생성될 수 있다. 2D 이미지는 표면의 텍스처 데이터로서 저장될 수 있다. 표면은 2D 텍스처를 위한 평평한 평면 캔버스로 간주될 수 있으며 뷰어를 향하는 3D 뷰 공간에 배치된다(예컨대, 실질적으로 뷰어를 가리키는 법선 벡터를 가짐). 결과적으로, 표면의 미리 뒤틀린 텍스처 데이터는 다수의 텍스처 밉맵(mipmap) 레벨들 대신에 단일 밉맵 레벨에 의해 표현될 수 있다.
헤드셋 시스템은 신체 착용가능한 컴퓨팅 시스템으로부터 미리 뒤틀린 표면들을 수신하고 미리 뒤틀린 표면들을 변형함으로써 헤드 마운트 디스플레이에 표면들을 렌더링할 수 있다. 미리 뒤틀린 표면들의 가시성은 뷰어의 화면으로부터 광선을 투영함으로써 테스트될 수 있다. 특정한 실시예들에서, 광선들은 다수의 타일들(예컨대, 16×16 픽셀들의 정렬된 블록)로부터 투사될 수 있으며, 그들의 각각은 화면 공간에서 그것의 4개의 코너 위치들에 의해 정의될 수 있다. 일단 특정한 표면이 타일로부터 보인다고 결정되면, 타일 내의 픽셀들에 대한 컬러들이 표면의 텍스처로부터 샘플링될 수 있다. 특정한 실시예들에서, 픽셀 샘플링은 4개의 정렬된 2×2 픽셀들에 대해 동시에 수행될 수 있다. 시스템은 동작들을 2회 범위 내에 있도록 축소함으로써 축소를 제한할 수 있다. 이 제약으로, 2×2 샘플링 지점들은 항상 4×4 텍셀 영역 내에 있을 수 있다. 특정한 실시예들에서, 시스템은 텍셀 버퍼를 위한 16개의 독립적인 텍셀 버퍼 블록들을 포함하는 다중 레벨 메모리 아키텍처를 사용할 수 있다. 시스템은 미리 결정된 텍셀 저장 패턴을 사용하여 4×4 텍셀 영역들을 별개로 어드레스될 수 있고 병행하여 판독될 수 있는(예컨대, 한 번의 동작으로) 16개의 독립적인 쿼드 버퍼 블록들에 저장할 수 있다. 따라서, 시스템은 한 번의 판독 동작으로 4×4 텍셀 영역에 액세스하고 4개의 픽셀 값들을 결정하기 위해 필요한 모든 텍셀들을 병행하여 샘플링할 수 있다(순차적으로 4개의 쿼드들에 액세스하기보다). 미리 뒤틀린 표면들이 하나의 텍스처 밉맵 레벨에 기초하여 생성되기 때문에, 헤드셋 시스템은 픽셀 값들을 결정하기 위해, 단지 단일 텍스처 밉맵에 액세스하고 상이한 밉맵 레벨로부터 또 다른 세트의 텍셀 데이터를 판독하는 것을 요구할 삼선형 보간 대신에 쌍선형 보간을 사용할 필요가 있을 수 있다.
일 실시예에서, 방법은 컴퓨팅 시스템에 의해:
복수의 서브 어레이들을 포함하는 텍셀 어레이로 조직된 복수의 텍셀들을 수신하는 단계;
복수의 텍셀 서브세트들을 결정하는 단계로서, 각각의 서브세트의 텍셀들은 그들의 각각의 서브 어레이들 내에서 동일한 위치를 갖는, 상기 결정하는 단계;
복수의 텍셀 서브세트들을 복수의 버퍼 블록들에 각각 저장하는 단계로서, 각각의 버퍼 블록은 복수의 텍셀 서브세트들 중 하나의 텍셀 서브세트를 저장하는, 상기 저장하는 단계;
복수의 샘플링 지점들의 픽셀 값들을 병행하여 결정하기 위해 복수의 버퍼 블록들로부터 샘플링 텍셀 어레이를 검색하는 단계로서, 샘플링 텍셀 어레이의 각각의 텍셀은 복수의 버퍼 블록들 중 상이한 버퍼 블록으로부터 검색되는, 상기 검색하는 단계를 포함할 수 있다.
복수의 서브 어레이들은 텍셀 어레이 내에서 반복된 패턴을 형성할 수 있다.
복수의 버퍼 블록들의 각각은 별개로 어드레스되고 병행하여 액세스될 수 있다.
복수의 버퍼 블록들은 복수의 그룹들로 그룹화될 수 있으며, 샘플링 지점의 픽셀 값을 결정하기 위해 사용된 각각의 텍셀은 복수의 그룹들 중 상이한 그룹으로부터 검색될 수 있다.
하나의 실시예에서, 복수의 텍셀 서브세트들은:
텍셀 어레이 내의 기준 텍셀의 위치를 나타내는 제 1 좌표(u, v)를 가지는 기준 텍셀을 결정하고;
(0, 0), (1, 0), (0, 1), 및 (1, 1)과 같은 제 1 좌표들(u, v)의 이진 표현들의 최하위 비트들을 가지는 텍셀들을 포함하는 복수의 중간 텍셀 그룹들을 각각 결정하고;
각각의 중간 텍셀 그룹의 각각의 텍셀에 대한 제 2 좌표(x, y)를 결정하며;
각각이 대응하는 중간 텍셀 그룹에 대해 (0, 0), (1, 0), (0, 1), 및 (1, 1)과 같은 제 2 좌표들(x, y)의 이진 표현들의 최하위 비트들을 가지는 텍셀들을 포함하는 복수의 텍셀 서브세트들을 결정함으로써 결정될 수 있다.
복수의 텍셀 서브세트들은 16개의 텍셀 서브세트들을 포함할 수 있고, 복수의 버퍼 블록들은 16개의 버퍼 블록들을 포함할 수 있다.
16개의 텍셀 서브세트들은 4개의 텍셀 그룹들로 조직될 수 있다. 복수의 샘플링 지점들은 4개의 샘플링 지점들을 포함할 수 있고, 4개의 텍셀 그룹들은 4개의 샘플링 지점들의 픽셀 값들을 병행하여 결정하기 위해 각각 사용될 수 있다.
각각의 픽셀 값은 샘플링 텍셀 어레이의 2×2 텍셀 서브 어레이에 기초하여 결정될 수 있으며, 2×2 텍셀 서브 어레이의 각각의 텍셀은 4개의 텍셀 그룹들 중 하나로부터 선택될 수 있다.
복수의 샘플링 지점들은 장면의 일부의 2차원 표현에 대한 디스플레이 영역의 교차 영역과 연관될 수 있다.
2차원 표현은 장면의 일부의 3차원 정보를 포함할 수 있으며, 장면의 일부의 2차원 표현은 디스플레이 영역에서 보일 수 있다.
장면의 일부의 2차원 표현은 단일 텍스처 해상도로 표현될 수 있으며, 텍셀 어레이는 단일 텍스처 해상도를 가지는 텍셀들을 포함할 수 있다.
샘플링 텍셀 어레이는 정렬된 텍셀 영역 또는 정렬되지 않은 텍셀 영역과 연관될 수 있다.
하나의 실시예에서, 하나 이상의 컴퓨터 판독가능한 비 일시적 저장 매체들은 실행될 때:
복수의 서브 어레이들을 포함하는 텍셀 어레이로 조직된 복수의 텍셀들을 수신하는 것;
복수의 텍셀 서브세트들을 결정하는 것으로서, 각각의 서브세트의 텍셀들은 그들의 각각의 서브 어레이들 내에서 동일한 위치를 갖는, 상기 복수의 텍셀 서브세트들을 결정하는 것;
복수의 텍셀 서브세트들을 복수의 버퍼 블록들에 각각 저장하는 것으로서, 각각의 버퍼 블록은 복수의 텍셀 서브세트들 중 하나의 텍셀 서브세트를 저장하는, 상기 복수의 텍셀 서브세트들을 복수의 버퍼 블록들에 각각 저장하는 것; 및
복수의 샘플링 지점들의 픽셀 값들을 병행하여 결정하기 위해 복수의 버퍼 블록들로부터 샘플링 텍셀 어레이를 검색하는 것으로서, 샘플링 텍셀 어레이의 각각의 텍셀은 복수의 버퍼 블록들 중 상이한 버퍼 블록으로부터 검색되는, 상기 샘플링 텍셀 어레이를 검색하는 것을 실행도록 동작가능한 소프트웨어를 포함할 수 있다.
복수의 서브 어레이들은 텍셀 어레이 내에서 반복된 패턴을 형성할 수 있다.
복수의 버퍼 블록들의 각각은 별개로 어드레스되고 병행하여 액세스될 수 있다.
복수의 버퍼 블록들은 복수의 그룹들로 그룹화될 수 있으며, 샘플링 지점의 픽셀 값을 결정하기 위해 사용된 각각의 텍셀은 복수의 그룹들 중 상이한 그룹으로부터 검색될 수 있다.
하나의 실시예에서, 시스템은: 하나 이상의 프로세서들; 및 프로세서들 중 하나 이상에 결합되고 지시들을 포함하는 하나 이상의 컴퓨터 판독가능한 비 일시적 저장 매체들을 포함할 수 있으며, 상기 지시들은 프로세서들 중 하나 이상에 의해 실행될 때 시스템으로 하여금:
복수의 서브 어레이들을 포함하는 텍셀 어레이로 조직된 복수의 텍셀들을 수신하는 것;
복수의 텍셀 서브세트들을 결정하는 것으로서, 각각의 서브세트의 텍셀들은 그들의 각각의 서브 어레이들 내에서 동일한 위치를 갖는, 상기 복수의 텍셀 서브세트들을 결정하는 것;
복수의 텍셀 서브세트들을 복수의 버퍼 블록들에 각각 저장하는 것으로서, 각각의 버퍼 블록은 복수의 텍셀 서브세트들 중 하나의 텍셀 서브세트를 저장하는, 상기 복수의 텍셀 서브세트들을 복수의 버퍼 블록들에 각각 저장하는 것; 및
복수의 샘플링 지점들의 픽셀 값들을 병행하여 결정하기 위해 복수의 버퍼 블록들로부터 샘플링 텍셀 어레이를 검색하는 것으로서, 샘플링 텍셀 어레이의 각각의 텍셀은 복수의 버퍼 블록들 중 상이한 버퍼 블록으로부터 검색되는, 상기 샘플링 텍셀 어레이를 검색하는 것을 실행하게 하도록 동작가능하다.
복수의 서브 어레이들은 텍셀 어레이 내에서 반복된 패턴을 형성할 수 있다.
복수의 버퍼 블록들의 각각은 별개로 어드레스되고 병행하여 액세스될 수 있다.
복수의 버퍼 블록들은 복수의 그룹들로 그룹화될 수 있으며, 샘플링 지점의 픽셀 값을 결정하기 위해 사용된 각각의 텍셀은 복수의 그룹들 중 상이한 그룹으로부터 검색될 수 있다.
일 실시예에서, 하나 이상의 컴퓨터 판독가능한 비 일시적 저장 매체들은 실행될 때 상기 언급된 실시예들에 따르거나 상기 언급된 실시예들 중 임의의 실시예에 내의 방법을 수행하도록 동작가능한 소프트웨어를 포함할 수 있다.
일 실시예에서, 시스템은: 하나 이상의 프로세서들; 및 프로세서들에 결합되고 프로세서들에 의해 실행가능한 지시들을 포함하는 적어도 하나의 메모리를 포함할 수 있고, 프로세서들은 지시들을 실행할 때 상기 언급된 실시예들에 따르거나 상기 언급된 실시예들 중 임의의 실시예 내의 방법을 수행하도록 동작가능하다.
일 실시예에서, 바람직하게 컴퓨터 판독가능한 비 일시적 저장 매체들을 포함하는 컴퓨터 프로그램 제품은 데이터 프로세싱 시스템에서 실행될 때 상기 언급된 실시예들에 따르거나 상기 언급된 실시예들 중 임의의 실시예에 내의 방법을 수행하도록 동작가능할 수 있다.
본 명세서에 개시된 실시예들은 단지 예들이고, 본 발명의 범위는 그들로 제한되지 않는다. 특정한 실시예들은 상기 개시된 실시예들의 구성요소들, 요소들, 피쳐들, 기능들, 동작들, 또는 단계들의 전부, 일부를 포함할 수 있거나, 그들 중 어느 것도 포함할 수 없다. 본 발명에 따른 실시예들은 특히, 방법, 저장 매체, 시스템 및 컴퓨터 프로그램 제품에 관한 첨부된 청구항들에 개시되고, 하나의 청구항 범주 예컨대, 방법에 언급된 임의의 피쳐는 또 다른 청구항 범주 예컨대, 시스템에서 또한 청구될 수 있다. 첨부된 청구항들의 종속성들 또는 역 참조들은 단지 공식적인 이유들로 인해 선택된다. 그러나, 임의의 이전 청구항들(특히 다중 종속성들)에 대한 고의적인 역 참조로부터 발생하는 임의의 주제가 또한 청구될 수 있어서, 청구항들과 그들의 피쳐들의 임의의 조합이 개시되게 하고 첨부된 청구항들에서 선택된 종속성들에 관계없이 청구될 수 있게 한다. 청구될 수 있는 주제는 첨부된 청구항들에 제시된 바와 같이 피쳐들의 조합들 뿐만 아니라 청구항들의 피쳐들의 임의의 다른 조합을 포함하고, 청구항들에 언급된 각각의 피쳐는 청구항들의 임의의 다른 피쳐 또는 다른 피쳐들의 조합과 조합될 수 있다. 또한, 본 명세서에서 설명되거나 묘사된 실시예들 및 피쳐들 중 임의의 것은 별개의 청구항에서 및/또는 본 명세서에서 설명되거나 묘사된 임의의 실시예 또는 피쳐와 또는 첨부된 청구항들의 피쳐들 중 임의의 것과의 임의의 조합으로 청구될 수 있다.
도 1a는 일 예시적인 인공 현실 시스템을 도시한 도면.
도 1b는 헤드셋 시스템의 일 예시적인 아이 디스플레이 시스템을 도시한 도면.
도 2는 일 예시적인 3D 객체를 도시한 도면.
도 3은 신체 착용가능한 컴퓨팅 시스템에서 생성된 일 예시적인 미리 뒤틀린 표면을 도시한 도면.
도 4는 아이 디스플레이 시스템들에서 렌더링하기 위해 헤드셋 시스템에 의해 변형된 것처럼 보이는 일 예시적인 미리 뒤틀린 표면을 도시한 도면.
도 5는 일 예시적인 타일을 통해 보이는 일 예시적인 미리 뒤틀린 표면을 도시한 도면.
도 6a 및 도 6b는 샘플링 지점의 컬러 또는 거리 필드를 결정하기 위해 필요한 텍셀들을 결정하기 위한 일 예시적인 프로세스를 도시한 도면들.
도 7a는 일 예시적인 4×4 텍셀 영역 및 샘플링 영역의 4개의 코너들에 위치된 2×2 직교 샘플링 지점들의 세트를 표현하는 일 예시적인 샘플링 영역을 도시한 도면.
도 7b는 정렬된 4×4 텍셀 영역 내의 예시적인 2×2 직교 샘플링 지점들을 도시한 도면.
도 7c는 정렬되지 않은 4×4 텍셀 영역 내의 예시적인 2×2 직교 샘플링 지점들을 도시한 도면.
도 7d는 4×4 텍셀 영역 내의 예시적인 2×2 비 직교 샘플링 지점들을 도시한 도면.
도 8a는 인터리빙(interleaving)된 패턴을 갖는 제어 블록의 32 바이트 텍셀 메모리에 저장된 일 예시적인 4×4 텍셀 어레이를 도시한 도면.
도 8b 내지 도 8c는 임의의 4×4 텍셀 어레이가 한 번의 판독 동작으로 판독되는 것을 허용하기 위해 16개의 독립적인 텍셀 버퍼 블록들에 저장된 일 예시적인 8×8 텍셀 어레이를 도시한 도면들.
도 8d 내지 도 8e는 16개의 독립적인 텍셀 버퍼 블록들에 저장된 8×8 텍셀 어레이로부터 선택된 일 예시적인 4×4 텍셀 어레이를 도시한 도면들.
도 8f 내지 도 8g는 16개의 독립적인 텍셀 버퍼 블록들에 저장된 8×8 텍셀 어레이로부터 선택되고 감소된 다중화 동작들로 텍셀 버퍼로부터 판독될 수 있는 일 예시적인 2×2 텍셀 어레이를 도시한 도면.
도 9는 디스플레이 엔진에 대한 시스템 다이어그램을 도시한 도면.
도 10은 픽셀 블록에 대한 일 예시적인 다이어그램을 도시한 도면.
도 11a는 4개의 쿼드 버퍼 블록들을 포함하는 필터 블록에 대한 일 예시적인 다이어그램을 도시한 도면.
도 11b는 4개의 텍셀 버퍼 블록들을 포함하는 쿼드 버퍼 블록에 대한 일 예시적인 다이어그램을 도시한 도면.
도 12a는 텍셀 버퍼 블록에 대한 일 예시적인 다이어그램을 도시한 도면.
도 12b는 텍셀 버퍼 블록에 저장된 텍셀 데이터에 대한 예시적인 데이터 포맷들을 도시한 도면.
도 12c는 샘플 필터 블록에 대한 일 예시적인 다이어그램을 도시한 도면.
도 13은 쌍선형 보간을 사용하여 다수의 픽셀 값들을 결정하기 위해 텍셀들의 다수의 그룹들을 병행하여 샘플링하는 일 예시적인 방법을 도시한 도면.
도 14는 일 예시적인 컴퓨터 시스템을 도시한 도면.
전통적인 그래픽 렌더링 시스템들은 단일 픽셀에 대한 컬러(이미지들에 대해) 또는 거리 필드(글꼴들, 문자들, 글리프(glyph)들, 등과 같은 라벨들에 대해)를 결정하도록 텍스처로부터 필요한 텍셀 데이터를 얻기 위해 별개의 판독 동작들을 수행할 필요가 있을 수 있다. 샘플링 프로세스 동안, 전통적인 GPU들에서 구현된 전통적인 렌더링 파이프라인들은 픽셀 값(예컨대, 컬러/거리 필드)을 결정하기 위해 쌍선형 보간을 수행할 때 쿼드들의 텍셀 버퍼 메모리에 액세스한다. 예를 들면, 전통적인 GPU들은 필터링(예컨대, 쌍선형 보간을 통해)을 수행하기 위해 필요한 샘플 위치에 대해 4개의 가장 가까운 텍셀들을 검색하기 위해 4개의 별개의 판독 동작들을 수행할 필요가 있을 수 있다. 이러한 메모리 액세스 동작들은 느리고 더 많은 전력을 소비한다. 게다가, 다수의 픽셀 샘플들이 동시에 필터링되고 있는 경우, 상이한 샘플링 위치들은 상이한 텍스처 밉맵 레벨들로부터 텍셀들을 요구할 수 있어서, 메모리 액세스 시간이 더 부가된다. 예를 들면, 가상 박스가 뷰어에 비해 크게 기울어진 경우, 뷰어에 더 가까운 박스의 부분은 뷰어로부터 더 멀리 있는 박스의 부분보다 고 해상도 밉맵 텍스처를 사용할 수 있다. 유사하게, 뷰어가 박스로부터 축소되면, 더 많은 텍셀들이 검색될 필요가 있을 수 있거나 시스템이 더 거친 밉맵 레벨로 스위칭할 필요가 있을 수 있다. 이러한 동작들은, 특히 대량으로 수행될 때 전체 렌더링 시간, 전력 소비, 및 시스템의 복잡성에 크게 부가된다.
상기 설명된 문제점들은 미리 뒤틀린 표면들을 프로세싱하거나 조정하도록 설계되는 디스플레이 엔진의 특정한 실시예들에 의해 크게 제거될 수 있다. 이들 표면들은 전통적인 컴퓨터 그래픽들이 렌더링되는 3D 모델 다각형들이 아니라, 디스플레이 엔진이 동작하는 프리미티브일 수 있다. "표면"은 텍셀들로 구성된 2D 텍스처 데이터, 및 3D 위치 데이터(예컨대, 뷰어의 뷰 공간 좌표들에 지정된 거리, 각도, 또는/및 좌표들)를 포함할 수 있다. 특정한 실시예들에서, 표면은 텍스처가 매핑되는 뷰어의 뷰 공간에 배치된 평평한 평면 캔버스로서 표현될 수 있다. 표면의 가시성은 표면의 3D 위치 데이터를 사용하여 계산될 수 있고, 표면의 텍스처 데이터로부터 각각의 픽셀에 대한 컬러 또는 거리 필드 결정이 샘플링될 수 있다. 표면의 텍스처는 GPU에 의해 렌더링된 2D 이미지에 기초하여 생성될 수 있다(예컨대, 다각형들에 의해 정의된 3D 모델로부터). 이와 같이, 표면이 3D 객체를 도시하는 것처럼 보이더라도, 표면은 실제로 평평한 표면이다. 표면은 따라서, 표면이 생성될 때 뷰어의 관점에 기초하여 미리 뒤틀린 것으로서 간주될 수 있다. 게다가, 표면의 법선 벡터는 표면이 생성된 시간 이후로 뷰어가 약간 움직인 경우에도, 실질적으로 뷰어를 가리킬 수 있다(예컨대, 뷰어는 프레임들 사이 또는 1/60 초 사이에 크게 움직일 가능성이 낮음). 표면이 미리 뒤틀리고 뷰어를 향하기 때문에, 표면이 프레임 간 조정들을 위해 디스플레이 엔진에 의해 프로세싱되고 있을 때, 표면은 단일 텍스처 밉맵 레벨(예컨대, 다수의 텍스처 밉맵 레벨들 대신에)을 사용하여 샘플링될 수 있다. 게다가, 시스템의 특정한 실시예들은 축소 동작들에 의해 야기된 축소를 2회 범위 내로 제한할 수 있으며, 이는 4개의 샘플링 지점들이 항상 4×4 텍셀 영역 내에 있는 것을 허용한다. 시스템의 특정한 실시예들은 이 특징을 이용하고 텍셀 버퍼 메모리(예컨대, 텍셀 버퍼 블록들을 포함하는 쿼드 버퍼 블록들)에 텍셀 저장 패턴을 구성하여 4×4 텍셀 영역이 한 번의 판독 동작으로 판독될 수 있는 방식으로 그것이 저장되는 것을 허용할 수 있다. 시스템의 특정한 실시예들은 감소된 다중화 및 대역폭 요구조건들로 병행하여 액세스될 수 있는 미리 결정된 수의 메모리 블록들을 포함하는 메모리 구조를 사용할 수 있다.
시스템의 특정한 실시예들은 픽셀 값들을 결정하기 위해 필요한 텍셀들을 검색하기 위해 더 빠르고 더 적은 메모리 판독치를 제공하고, 텍셀 버퍼 메모리(예컨대, 텍셀 버퍼 블록들을 포함하는 쿼드 버퍼 블록들)로부터 텍셀들을 검색하기 위해 필요한 전력 소비 및 동작 논리를 감소시킨다. 시스템의 특정한 실시예들은 미리 뒤틀린 표면을 조정하거나 변형(예컨대, 개념적으로, 위치, 방향, 및/또는 규모의 조정들)하기 위한 헤드셋 시스템에 의한 계산량을 감소시켜 프레임들 사이의 뷰어의 변화하는 시점들을 수용한다. 시스템의 특정한 실시예들은 다수의 픽셀 샘플들(예컨대, 2×2 픽셀들)을 필터링하기 위해 필요한 텍셀들을 판독하기 위해 필요한 계산량 및 전력 소비를 감소시키는데, 이는 시스템이 샘플들의 임의의 이러한 그룹을 4×4 텍셀 영역에 있도록 제한하기 때문이다. 시스템의 특정한 실시예들은 텍셀 버퍼 메모리(예컨대, 텍셀 버퍼 블록들을 포함하는 쿼드 버퍼 블록들)에 액세스할 때 헤드셋 시스템에서 다중화 동작들을 감소시키고 데이터 버스에서 대역폭 사용을 감소시키는 텍셀 버퍼 하드웨어 구조 및 텍셀 데이터 저장 패턴을 제공한다.
도 1a는 일 예시적인 인공 현실 시스템(100)을 도시한다. 특정한 실시예들에서, 인공 현실 시스템(100)은 헤드셋 시스템(110), 신체 착용가능한 컴퓨팅 시스템(120), 클라우드(130) 내의 클라우드 컴퓨팅 시스템(132), 등을 포함할 수 있다. 특정한 실시예들에서, 헤드셋 시스템(110)은 데이터 버스(114)를 통해 2개의 아이 디스플레이 시스템들(116A 및 116B)에 연결되는 디스플레이 엔진(112)을 포함할 수 있다. 헤드셋 시스템(110)은 사용자에게 인공 현실을 제공하기 위해 사용자의 머리에 장착될 수 있는 헤드 마운트 디스플레이(HMD)를 포함하는 시스템일 수 있다. 헤드셋 시스템(110)은 그것의 전원들(예컨대, 배터리들)에서 이용가능한 제한된 양의 전력을 가질 수 있다. 디스플레이 엔진(112)은 상대적으로 높은 데이터 레이트들(예컨대, 200Hz 내지 800Hz)로 데이터 버스(114)를 통해 아이 디스플레이 시스템들(116A 및 116B)에 디스플레이 데이터를 제공할 수 있다. 이후에 논의될 바와 같이, 디스플레이 엔진(112)은 하나 이상의 제어기 블록들, 텍셀 메모리들, 변형 블록들, 픽셀 블록들, 등을 포함할 수 있다. 텍셀 메모리들에 저장된 텍셀들은 픽셀 블록들에 의해 액세스될 수 있고 디스플레이하기 위해 아이 디스플레이 시스템들(116A 및 116B)에 제공될 수 있다.
특정한 실시예들에서, 신체 착용가능한 컴퓨팅 시스템(120)은 사용자의 신체에 착용될 수 있다. 특정한 실시예들에서, 신체 착용가능한 컴퓨팅 시스템(120)은 사용자 신체에 착용되지 않는 컴퓨팅 시스템(예컨대, 랩탑, 데스크탑, 모바일 컴퓨팅 시스템)일 수 있다. 신체 착용가능한 컴퓨팅 시스템(120)은 하나 이상의 GPU들, 하나 이상의 스마트 비디오 디코더들, 메모리들, 프로세서들, 및 다른 모듈들을 포함할 수 있다. 신체 착용가능한 컴퓨팅 시스템(120)은 디스플레이 엔진(112)보다 더 많은 계산 리소스들을 가질 수 있지만 그것의 전원들(예컨대, 배터리들)에서 여전히 제한된 양의 전력을 가질 수 있다. 신체 착용가능한 컴퓨팅 시스템(120)은 무선 연결(144)을 통해 헤드셋 시스템(110)과 결합될 수 있다. 클라우드 컴퓨팅 시스템(132)은 고 성능 컴퓨터들(예컨대, 서버들)일 수 있고 무선 연결(142)을 통해 신체 착용가능한 컴퓨팅 시스템(120)과 통신할 수 있다. 도 1b는 헤드셋 시스템(110)의 일 예시적인 아이 디스플레이 시스템(예컨대, 116A 또는 116B)을 도시한다. 특정한 실시예들에서, 아이 디스플레이 시스템(116A)은 구동기(154), 동공 디스플레이(156), 등을 포함할 수 있다. 디스플레이 엔진(112)은 디스플레이 데이터를 동공 디스플레이(156), 데이터 버스(114) 및 구동기(154)에 높은 데이터 레이트들(예컨대, 200Hz 내지 800Hz)로 제공할 수 있다.
전통적인 그래픽 렌더링 시스템들에서, 3D 객체(들)가 뷰어에 대해 어떻게 지향되는지에 의존하여, 3D 객체들의 특정 영역들은 다른 것들보다 뷰어에 더 가까울 것이다. 거리 불일치는 텍스처 샘플링을 위해 상이한 밉맵 레벨들을 요구하기 위해 상이한 영역들의 픽셀 샘플링 위치들을 야기할 수 있다. 일례로서, 도 2는 일 예시적인 3D 객체(200)를 도시한다. 객체(200)는 뷰어에 대해 경사진 방향으로 지향될 수 있으며, 객체(200)의 에지(210)는 에지(220)보다 뷰어에 상대적으로 더 가깝다. 결과적으로, 에지(210)의 영역(212)에 있는 픽셀의 컬러를 샘플링하는 것은 에지(220)의 영역(222)에 있는 픽셀을 샘플링하기 위해 사용될 수 있는 더 거친 밉맵 레벨에 비해 더 미세한 텍스처 밉맵 레벨을 요구할 수 있다. 예를 들면, GPU들이 밉맵 체인(230)의 다수의 텍스처 레벨들(231, 232, 233, 234, 235, 236, 237)에 액세스한 경우, GPU는 영역(212) 내에 있는 픽셀들에 대해 밉맵 레벨(237) 및 영역(222) 내에 있는 픽셀들에 대해 밉맵 레벨(236)을 사용할 수 있다.
게다가, 축소 동작들에 의해 야기된 축소로 인해 밉맵 레벨들이 변경될 필요가 있을 수 있다. 일반적으로, 축소 동작이 객체를 2회 이상 축소되는 것을 야기하면, 새로운 장면을 렌더링하기 위해 샘플링을 위해 사용된 밉맵이 변경될 필요가 있을 수 있다. 예를 들면, 뷰어가 축소하여, 그 밉맵 레벨들(237, 236)의 각각의 텍셀의 크기가 픽셀 샘플 크기에 비해 더 작아지도록 야기하는 경우, GPU는 사용된 밉맵 레벨들을 변경할 수 있다. 예를 들면, 축소 후에, GPU는 영역(212)에 있는 픽셀 샘플들에 대해 밉맵 레벨(236) 및 영역(222)에 있는 픽셀 샘플들에 대해 밉맵 레벨(235)을 사용할 수 있다.
불행히도, 텍셀 버퍼 메모리로부터 텍스처 데이터를 판독하는 것은 시간 및 전력을 필요로 한다. 이와 같이, 상기 언급된 시나리오들은 밉맵 스위칭이 비용이 많이 들고 초 당 200 내지 800 프레임들과 같이 프레임들이 매우 빠른 레이트로 출력될 것으로 예상되는 애플리케이션들에서 적합하지 않을 수 있다는 것이다. 디스플레이 엔진이 AR/VR 헤드셋 시스템에 상주하는 특정한 실시예들에서, 계산 리소스들 및 이용가능한 전력(예컨대, 하나 이상의 배터리들에 의해 전력이 공급됨)이 특히 제한될 수 있다. 계산 리소스들 및 이용가능한 전력에 대한 이들 제한들은 헤드셋 시스템이 애플리케이션의 요구들(예컨대, 사용자 움직임들에 반응하는 AR/VR 장면들의 렌더링)을 충족하기 위해 금지될 수 있다.
시스템의 특정한 실시예들은 신체 착용가능한 컴퓨팅 시스템의 GPU들에 미리 뒤틀린 표면들을 생성(예컨대, 60 헤르츠 프레임 레이트로)함으로써 상기 언급된 문제점들을 해결하고 헤드셋 시스템이 프레임들 사이의 뷰어의 관점 변화들을 조정하기 위해 미리 뒤틀린 표면들을 사후 뒤틀거나 이들을 재샘플링하는 것(예컨대, 200 또는 그 이상의 헤르츠로)을 허용한다. 미리 뒤틀린 표면들을 생성하는 것에 더하여, 특정한 실시예들은 축소 동작들을 단지 2배 축소로 더 제한할 수 있다. 하기에 더 상세하게 설명될 바와 같이, 그렇게 행하는 것은 4개의 2×2 픽셀들을 샘플링하기 위해 필요한 텍셀들이 4×4 텍셀 영역으로 제한됨을 보장할 것이다. 이것은 디스플레이 엔진이 단일 판독 동작을 사용하여 4×4 텍셀 영역에 액세스할 수 있도록 텍셀들이 기록되고 판독되는 방법을 구성하는 것을 가능하게 한다.
도 3은 신체 착용가능한 컴퓨팅 시스템에서 생성된 일 예시적인 미리 뒤틀린 표면(330)을 도시한다. 특정한 실시예들에서, 신체 착용가능한 컴퓨팅 시스템은 하나 이상의 GPU들 또는/및 스마트 비디오 디코더들을 포함할 수 있다. 특정한 실시예들에서, 미리 뒤틀린 표면들은 신체 착용가능한 컴퓨팅 시스템의 하나 이상의 GPU들에 의해 생성될 수 있다. 특정한 실시예들에서, 미리 뒤틀린 표면들은 신체 착용가능한 컴퓨팅 시스템의 하나 이상의 비디오 디코더들에 의해 생성될 수 있다. 예를 들면, 신체 착용가능한 컴퓨팅 시스템의 GPU들은 도 2에 도시된 3D 객체(200)의 2D 뷰를 렌더링할 수 있다. 2D 객체(200)는 많은 수의 다각형들 또는 삼각형들(예컨대, 수백 또는 수천 개의 다각형들)을 사용하여 정의될 수 있으며, 신체 착용가능한 컴퓨팅 시스템은 전통적인 그래픽 렌더링 파이프라인을 사용하여 2D 뷰를 렌더링할 수 있다(예컨대, 광선 추적 및 음영을 사용하여). 이 렌더링 프로세스가 계산적으로 매우 비쌀 수 있을지라도, 신체 착용가능한 컴퓨팅 시스템은 헤드셋 시스템보다 더 많은 계산 리소스들(예컨대, 더 강력한 프로세서들, 더 많은 메모리 공간) 및 더 많은 이용가능한 전력(예컨대, 더 큰 배터리 용량, 전원 콘센트에 대한 직접 플러그인, 등)을 가질 수 있다. 이와 같이, 3D 객체(200)의 2D 뷰는 예를 들면, 30 내지 60 헤르츠의 레이트로 렌더링될 수 있다.
특정한 실시예들에서, 3D 객체(200)의 2D 뷰는 미리 뒤틀린 표면(330)을 생성하기 위해 사용될 수 있다. 미리 뒤틀린 표면(330)이 2D로 표현될지라도, 그것은 렌더링된 2D 뷰일 때 뷰어의 관점에서 3D로 보일 수 있다. 예를 들면, 표면(330)의 에지(342)는 시점에 더 가깝게 보일 수 있고, 에지(344)는 시점에서 더 먼 것처럼 보일 수 있다. 그것의 3D 외관에도 불구하고, 미리 뒤틀린 표면(330)의 텍스처는 마치 표면이 2D 이미지가 매핑되는 평평한 캔버스인 것처럼 2D이다. 미리 뒤틀린 표면(330)은 시점에 대해 3D 뷰 공간 내에서 정의된 위치를 가질 수 있다. 미리 뒤틀린 표면(330)의 상이한 영역들은 관점으로부터 실질적으로 같은 거리일 수 있다. 예를 들면, 텍셀들(332 및 334)에 대응하는 영역들은 3D 뷰 공간에서 시점으로부터 실질적으로 같은 거리에 있을 수 있지만, 3D 모델(200)에서 대응하는 영역들(212 및 222)은 3D 객체(200)의 2D 뷰가 렌더링되었을 때의 시점에서 멀어지는 상이한 거리들이다.
특정한 실시예들에서, 미리 뒤틀린 표면(330)의 2D 외관은 균일한 텍셀 그리드(340)를 갖는 텍스처로서 저장될 수 있다. 대응하는 3D 모델(200)과 달리, 미리 뒤틀린 표면(330)은 332 및 334와 같은 영역들의 상대적 깊이가 상이한 것처럼 보일지라도 관점으로부터 실질적으로 같은 거리이다. 이와 같이, 미리 뒤틀린 표면(330)의 임의의 픽셀 샘플링은 표면의 상이한 부분들에 대한 상이한 밉맵 레벨들보다는 동일한 밉맵 레벨 텍스처를 사용하여 수행될 수 있다. 예를 들면, 에지(342)가 에지(344)보다 뷰어에게 더 가깝게 보일지라도, 영역들(332 및 334)에 대응하는 텍셀들은 동일한 텍스처 레벨 또는 텍스처 해상도에 대응할 수 있다.
헤드셋 시스템은 무선 또는 유선 통신 연결을 통해 신체 착용가능한 컴퓨팅 시스템으로부터 미리 뒤틀린 표면을 수신할 수 있다. 특정한 실시예들에서, 헤드셋 시스템은 프레임의 시작에서 미리 뒤틀린 표면을 수신할 수 있다. 그 때와 다음 프레임 사이에(예컨대, 1/60 초 간격들), 헤드셋 시스템은 훨씬 더 높은 프레임 레이트(예컨대, 200 또는 그 이상의 헤르츠)로 사용자의 현재 머리 위치 또는 시선에 기초하여(헤드셋의 시선 추적 디바이스 및/또는 관성 측정 유닛에 기초하여 결정된 바와 같음) 미리 뒤틀린 표면을 뒤틀거나 재샘플링할 수 있다. 이 방식으로, 헤드셋 시스템은 다각형들을 사용하여 정의된 3D 모델로부터 미리 뒤틀린 표면들을 생성할 때 필요한 값비싼 계산을 회피하고, 대신에 미리 뒤틀린 표면에, 다각형들보다 그 수가 훨씬 적을 수 있는 동적 실시간 업데이트들을 제공하는 것을 담당할 수 있다.
도 4는 아이 디스플레이 시스템들에서 렌더링하기 위해 헤드셋 시스템에 의해 변형된 것처럼 보이는 일 예시적인 미리 뒤틀린 표면(410)을 도시한다. 특정한 실시예들에서, 헤드셋 시스템은 신체 착용가능한 컴퓨팅 시스템으로부터 미리 뒤틀린 표면들을 수신할 수 있다. 미리 뒤틀린 표면은 신체 착용가능한 컴퓨팅 시스템과 연관된 GPU들의 렌더링 결과들에 기초하여 생성될 수 있으며 기본 객체의 3D 윤곽을 시각적으로 고려할 수 있다. 특정한 실시예들에서, 표면은 뷰어의 뷰 공간 내의 위치 데이터 뿐만 아니라, 텍스처 데이터를 포함할 수 있다. 뷰어의 현재 관점(예컨대, 머리 방향 및/또는 시선)의 변화들에 기초하여, 헤드셋 시스템의 디스플레이 엔진은 뷰어의 업데이트된 관점에서 가시성 테스트들을 수행할 수 있다(예컨대, 광선 투사를 사용함). 예를 들면, 디스플레이 엔진은 뷰어의 현재 관점에 따라 배치되고 지향된, 화면 공간의 각각의 타일로부터 광선들을 투사하고, 광선들이 뷰 공간의 임의의 표면들과 교차하는지를 확인할 수 있다. 가시성 결정에 기초하여, 디스플레이 엔진은 그 다음, 투영된 광선들과 교차하는 표면들의 텍스처 데이터를 사용하여 각각의 픽셀에 대한 적절한 컬러 정보를 재샘플링할 수 있다. 이 사후 뒤틀림 프로세스의 결과는 신체 컴퓨팅 시스템이 초기 2D 프레임(미리 뒤틀린 표면을 생성하기 위해 사용됨)을 렌더링한 후의 업데이트된 2D 프레임일 수 있다. 업데이트된 2D 프레임은 헤드셋 시스템이 3D 공간(430)에서 하나 이상의 치수들을 따라 초기 미리 뒤틀린 표면(410)을 이동시키고/거나 뒤틂으로써 변형된 미리 뒤틀린 표면(420)을 생성한 것처럼 보일 수 있다. 또 다른 예로서, 헤드셋 시스템은 3D 공간(430)에서 하나 이상의 축들을 따라 미리 뒤틀린 표면(410)을 회전시킬 수 있다. 또 다른 예로서, 헤드셋 시스템은 확대 또는 축소 동작들을 위해 미리 뒤틀린 표면(410)의 크기를 증가시키거나 감소시킬 수 있다. 또 다른 예로서, 헤드셋 시스템은 수신된 미리 뒤틀린 표면을 아이 디스플레이 시스템들에서 렌더링하기 위한 새로운 표면(예컨대, 420)으로 변형하거나 조정하기 위해 상기 언급된 바와 같은 하나 이상의 변형들 또는 조정들을 조합할 수 있다.
특정한 실시예들에서, 헤드셋 시스템은 뷰어들의 하나 이상의 조건들에 따라 수신된 미리 뒤틀린 표면들을 변형하거나 조정할 수 있다. 특정한 실시예들에서, 헤드셋 시스템은 미리 뒤틀린 표면으로 하여금 뷰어에 대한 그것의 위치(예컨대, 거리, 방향, 각도)를 상대적으로 고속으로 그러나 상대적으로 작은 범위들 내로 변경하게 하는 하나 이상의 조건들에 따라 수신된 미리 뒤틀린 표면들을 변형하거나 조정할 수 있다. 예를 들면, 헤드셋 시스템은 뷰어의 시점 변화(예컨대, 머리 움직임, 아이 움직임)에 기초하여 미리 뒤틀린 표면(410)의 방향 또는 위치를 조정할 수 있다. 또 다른 예로서, 헤드셋 시스템은 뷰어의 주밍 동작(예컨대, 확대 또는 축소)에 기초하여 미리 뒤틀린 표면(410)의 크기, 방향, 또는/및 위치를 조정할 수 있다. 특정한 실시예들에서, 뷰어들의 조건들(예컨대, 시점 변경, 뷰 거리 변경, 사용자 동작들)은 인공 현실 시스템과 연관된 하나 이상의 센서들 또는 감지 시스템들 예를 들면, 가속도계들, 수렴 추적 시스템들, 아이 추적 시스템들, 머리 동작 센서들, 신체 동작 센서들, 제어기들, 등에 기초하여 결정될 수 있다. 특정한 실시예들에서, 헤드셋 시스템은 예를 들면, 시점, 뷰 거리, 시야각, 이동 속도, 이동 방향, 가속도 메트릭, 머리 움직임, 아이 움직임, 머리 자세, 아이 상태, 사용자 주밍 동작, 응시 지점, 응시 거리, 수렴 거리, 사용자 입력, 제어기 상태, 등을 포함하지만 그들로 제한되지 않는 하나 이상의 조건들에 따라 수신된 미리 뒤틀린 표면들을 변형하거나 조정할 수 있다.
특정한 실시예들에서, 시스템은 축소 동작들의 축소 효과를 2회 축소 범위 내에 있도록 제한할 수 있다. 2회 축소 제한은 사용자의 주밍 동작들에 의해 야기된 바와 같이, 샘플 픽셀 크기에 대한 텍셀 크기의 변경들이 현재 텍스처 밉맵 레벨을 사용하기 위해 허용가능한 범위 내에 있을 것임을 보장할 수 있다. 또한, 나중에 논의될 바와 같이, 2회 축소 제한은 하나의 타일과 연관된 4개의 샘플링 지점들이 정렬되거나 정렬되지 않은 4×4 텍셀 영역 내에 있는 것을 허용하고, 따라서 시스템이 더 빠른 속도 및 더 양호한 계산 효율성으로 샘플링 지점들의 컬러들 또는 거리 필드들을 결정하기 위해 필요한 모든 텍셀들을 병행하여 검색하는 것을 허용할 수 있다. 게다가, 2×2 샘플링 위치들의 블록을 위해 필요한 텍셀들의 수를 제한함으로써, 이 제한은 헤드셋 시스템이 개선된 효율성으로 업데이트된 프레임들을 더 빠르게 제공하는 것을 허용하면서 디스플레이 엔진의 논리를 단순화한다.
도 5는 일 예시적인 타일(540)을 통해 보이는 일 예시적인 미리 뒤틀린 표면(500)을 도시한다. 특정한 실시예들에서, 시스템은 미리 뒤틀린 표면(500)이 화면의 영역을 통해 보이는지의 여부를 결정하기 위해 광선 투사 알고리즘을 사용할 수 있다. 특정한 실시예들에서, 화면의 영역은 타일(예컨대, 16×16 픽셀들과 같은 픽셀들의 블록)에 의해 표현될 수 있다. 광선 투사 알고리즘은 먼저 뷰어의 시점(530)(예컨대, 뷰어의 아이의 중심 지점)을 결정할 수 있다. 그 다음, 광선 투사 알고리즘은 개념적 또는 가상 카메라(532)를 뷰어의 시점에 배치하고 가상 카메라(532)로부터 다수의 광선들(534)을 투사할 수 있다. 특정한 실시예들에서, 4개의 광선들은 가상 카메라(532)의 화면 내에 배치된 타일의 4개의 코너들로부터 투사될 수 있다. 4개의 투사된 광선들(534)의 그룹은 4개의 각각의 교차 지점들(예컨대, 540A, 540B, 540C, 540D)에서 미리 뒤틀린 표면(500)과 교차할 수 있다. 샘플링 지점들(540A, 540B, 540C, 및 540D)은 표면(500)과 쌍을 이루는 타일(540)을 형성하고 그와 연관될 수 있다. 특정한 실시예들에서, 시스템은 이 방식으로 다수의 타일/표면 쌍들을 생성할 수 있다.
일단 디스플레이 엔진이 타일이 표면과 교차한다고 결정하면, 그것은 그 다음, 표면의 텍스처 데이터를 사용하여 타일 내의 각각의 픽셀을 샘플링할 수 있다. 특정한 실시예들에서, 타일이 16×16 픽셀들을 포함하는 경우, 디스플레이 엔진(예컨대, 그것의 픽셀 블록)은 투영된 타일의 4개의 코너들의 4개의 텍스처 좌표들을 사용하여 픽셀 샘플 위치들의 각각의 텍스처 좌표들(예컨대, (U, V))을 결정하기 위해 보간을 사용할 수 있다(3D 뷰 공간의 교차 지점들이 텍스처 좌표들로 변환된 후에). 그 다음, 디스플레이 엔진은 4개의 가장 가까운 텍셀들을 사용하여 각각의 샘플링 지점의 컬러 또는 거리 필드 속성들을 계산할 수 있다(예컨대, 쌍선형 또는 쌍입방 보간을 사용하여).
도 6a 및 도 6b는 샘플링 지점의 컬러 또는 거리 필드를 결정하기 위해 필요한 텍셀들을 결정하기 위한 일 예시적인 프로세스를 도시한다. 도 6a는 샘플링 지점(610)에서 픽셀 값을 결정하기 위해 필요한 대응하는 텍셀들(예컨대, 601, 602, 603, 604) 및 일 예시적인 샘플링 지점(610)을 도시한다. 특정한 실시예들에서, 시스템은 4개의 가장 가까운 텍셀들에 기초하여 보간을 사용하여 픽셀 값을 결정할 수 있다. 예를 들면, 샘플링 지점(610)에 대응하는 픽셀 값은 601, 602, 603, 및 604의 4개의 가장 가까운 텍셀들을 보간함으로써 결정될 수 있다. 샘플링 지점(610)에 대한 픽셀 값을 결정하기 위해 사용된 텍셀을 시각화하는 것을 돕기 위해, 도시된 도면들은 텍셀들(601, 602, 603, 604)의 각각의 중심 지점들(611, 612, 613, 614)을 연결함으로써 형성된 기하학적 영역(626)을 도시한다. 샘플링 지점(610)의 픽셀 값은 둘러싸는 기하학적 영역(626)을 형성하는 텍셀들(601, 602, 603, 및 604)에 의해 결정된다.
도 6b는 예시적인 샘플링 지점들(예컨대, 632, 642, 652, 662) 및 대응하는 픽셀 값들을 결정하기 위한 연관된 텍셀들을 도시한다. 샘플링 지점(632, 642, 652, 662)은 모두 (1,1)의 (U, V) 좌표에 의해 표시된 바와 같이 동일한 텍셀에 있을 수 있지만, 텍셀(1,1) 및 그것의 이웃하는 텍셀들에 대한 샘플링 지점들의 상대 위치에 기초하여 상이한 그룹들의 텍셀들과 연관될 수 있다. 예를 들면, 샘플링 지점(632)은 텍셀들((0, 0), (1, 0), (0, 1), 및 (1, 1))의 중심 지점들에 의해 결정된 기하학적 영역(634) 내에 있을 수 있으며, 따라서 텍셀들((0, 0), (1, 0), (0, 1), 및 (1, 1))은 보간이 샘플링 지점(632)에 대응하는 픽셀 값을 결정하기 위해 필요한 텍셀들로서 식별될 수 있다. 또 다른 예로서, 샘플링 지점(642)은 텍셀들((1, 0), (2, 0), (1, 1), 및 (2, 1))의 중심 지점들에 의해 결정된 기하학적 영역(644) 내에 있을 수 있으며, 따라서 텍셀들((1, 0), (2, 0), (1, 1), 및 (2, 1))은 보간이 샘플링 지점(642)에 대응하는 픽셀 값을 결정하기 위해 필요한 텍셀들로서 식별될 수 있다. 또 다른 예로서, 샘플링 지점(652)은 텍셀들((0, 1), (1, 1), (0, 2), 및 (1, 2))의 중심 지점들에 의해 결정된 기하학적 영역(654) 내에 있을 수 있으며, 따라서 텍셀들((0, 1), (1, 1), (0, 2), 및 (1, 2))은 보간이 샘플링 지점(652)에 대응하는 픽셀 값을 결정하기 위해 필요한 텍셀들로서 식별될 수 있다. 또 다른 예로서, 샘플링 지점(662)은 텍셀들((1, 1), (2, 1), (1, 2), 및 (2, 2))의 중심 지점들에 의해 결정된 기하학적 영역(664) 내에 있을 수 있으며, 따라서 텍셀들((1, 1), (2, 1), (1, 2), 및 (2, 2))은 보간이 샘플링 지점(662)에 대응하는 픽셀 값을 결정하기 위해 필요한 텍셀들로서 식별될 수 있다.
특정한 실시예들에서, 시스템은 픽셀들의 컬러 값들을 결정하기 위해 픽셀 위치들(예컨대, 각각의 지점이 픽셀의 중심을 표현함)에 대응하는 샘플링 지점들을 사용하여 표면을 샘플링할 수 있다. 특정한 실시예들에서, 샘플링 지점의 픽셀 크기는 텍셀의 크기와 실질적으로 동일할 수 있다. 뷰어가 축소될 때, 축소 효과로 인해 렌더링된 객체와 연관된 표면의 크기가 작아질 수 있다. 축소된 표면이 텍스처 해상도를 변경하지 않고 샘플링될 때(즉, 동일한 밉맵 레벨을 사용함), 동일한 픽셀 크기가 이제 타일의 크기보다 커질 것이고 결과적으로, 픽셀은 축소된 표면의 다수의 텍셀들을 커버할 수 있다. 따라서, 디스플레이 엔진은 2×2 샘플링 지점들의 컬러들을 결정하기 위해 더 많은 텍셀들(예컨대, 4×4 텍셀들 이상)에 액세스하고 이들을 보간해야 할 필요가 있을 수 있다. 따라서, 2배 범위를 넘어 축소함으로써 축소된 표면을 샘플링하는 것은 필요할 수 있는 텍셀들의 양 및 범위 측면에서 불확실성을 도입한다. 특정한 실시예들에서, 시스템은 축소 동작들의 축소 효과를 2회 범위 내에 있도록 제한할 수 있으며, 그에 의해 4개의 샘플링 지점들이 항상 한 번의 판독 동작으로 판독될 수 있고 병행하여 샘플링될 수 있는 4×4 텍셀 영역 내에 있음을 보장한다.
특정한 실시예들에서, 2×2 샘플링 지점들은 인접한 샘플링 지점들의 위치들이 단지 2개의 텍셀들로 떨어져 있는 한 4×4 텍셀 영역 내에 있을 것이다. 특정한 실시예들에서, 2개의 샘플링 지점들 사이의 거리는 맨해튼 거리(Manhattan distance)에 의해 측정될 수 있다. 예를 들면, 다음 2개의 방정식들 둘 모두를 만족함으로써 제약 조건이 설명될 수 있다:
Figure pct00001
여기서 u 및 v는 텍셀들에 대한 (U, V) 좌표 공간의 샘플링 지점 좌표들에 대응하고; x 및 y는 디스플레이 픽셀들에 대한 2차원 (X, Y) 좌표 공간에 대응한다. 특정한 실시예들에서, 2개의 샘플링 지점들 사이의 거리는 맨해튼 거리보다는 기하학적 거리에 의해 측정될 수 있다. 특정한 실시예들에서, 텍셀의 크기는 텍셀 정사각형의 에지의 길이에 의해 정의될 수 있다.
이전에 설명된 바와 같이, 특정한 실시예들에서, 텍스처 샘플링은 2×2 픽셀 샘플링 지점들에 대해 동시에 수행될 수 있다. 도 7a는 일 예시적인 4×4 텍셀 영역(700A) 및 샘플링 영역(701)의 4개의 코너들에 위치된 2×2 직교 샘플링 지점들의 세트를 표현하는 일 예시적인 샘플링 영역(701)을 도시한다. 샘플링 영역(701)의 각각의 측면의 크기는 텍셀 크기의 2배 미만 또는 그와 같을 수 있다. 도 7a의 샘플링 영역(701)은 텍셀들의 2D 공간에서 2개의 치수들을 따라 텍셀들과 정렬된다. 샘플링 영역(701)이 텍셀들에 투영될 때, 보간이 각각의 샘플링 지점(즉, 샘플링 영역(701)의 4개의 코너들의 각각)에서 픽셀 값들을 결정하기 위해 필요한 연관된 텍셀들은 도 6a 및 도 6b에서 설명된 바와 같이 방법을 사용하여 결정될 수 있다. 얇은 라인들로 연결된 4개의 텍셀 중심들의 각각의 그룹은 얇은 라인 박스 내에 위치된 샘플링 지점(예컨대, 샘플링 영역(701)의 코너)을 필터링하기 위해 사용될 4개의 가장 가까운 텍셀 중심들을 표현한다. 샘플링 영역(701)에 대해, 4개의 2×2 샘플링 지점들을 필터링하기 위해 필요한 텍셀들은 4×4 텍셀 영역(701) 내에 있다. 샘플링 영역(701)이 2D 공간의 하나 이상의 치수들을 따라 이동할 때, 4개의 샘플링 지점들을 필터링하기 위해 필요한 텍셀들은 항상 4×4 텍셀 영역에 있을 것이다. 예를 들면, 샘플링 영역(701)이 샘플링 영역(702)에 의해 도시된 위치로 이동되는 경우, 4개의 샘플링 지점들(샘플링 영역(702)의 4개의 코너들)을 결정하기 위한 연관된 텍셀들은 동일한 정렬된 4×4 텍셀 영역(700A) 내에 계속 있을 것이다. 또 다른 예로서, 샘플링 영역(702)이 샘플링 영역(701)과 관련하여 더 큰 거리(예컨대, 2D 공간의 하나 또는 2개의 치수들을 따라 절반 텍셀 크기보다 큼)에 대해 이동될 때, 샘플링 영역(702)은 정렬되지 않은 4×4 텍셀 영역에 있도록 그것의 연관된 텍셀들을 가질 수 있다.
도 7b는 정렬된 4×4 텍셀 영역 내의 예시적인 2×2 직교 샘플링 지점들을 도시한다. 샘플링 지점들(711, 712, 713, 및 714)은 2D 텍셀 공간의 2개의 치수들을 따라 텍셀들과 정렬되는 샘플링 영역의 4개의 코너 지점들일 수 있다. 샘플링 지점(714 및 713) 사이의 거리(716)가 2개의 텍셀들 미만이거나 그와 같을 때, 픽셀들(714 및 713)을 결정하기 위해 필요한 대응하는 8개의 텍셀들은 텍셀들(0, 0), (1, 0), (2, 0), (3, 0), (0, 1), (1, 1), (2, 1), 및 (3, 1)을 포함하는 2×4 텍셀 영역 내에 있을 수 있다. 샘플링 지점들(712 및 713) 사이의 거리(718)가 2개의 텍셀들 미만이거나 그와 같을 때, 714 및 713에 대한 픽셀들을 결정하기 위해 필요한 대응하는 8개의 텍셀들은 4×2 텍셀 영역 내에 있을 수 있다. 유사하게, 샘플링 지점(711 및 712) 사이의 거리(716)가 2개의 텍셀들 미만이거나 그와 같을 때, 711 및 712에 대한 픽셀들을 결정하기 위해 필요한 대응하는 8개의 텍셀들은 2×4 텍셀 영역 내에 있을 수 있다. 샘플링 지점(711 및 714) 사이의 거리(718)가 2개의 텍셀들 미만이거나 그와 같을 때, 711 및 714에 대한 픽셀들을 결정하기 위해 필요한 대응하는 8개의 텍셀들은 4×2 텍셀 영역 내에 있을 수 있다. 따라서, 임의의 2개의 이웃하는 샘플링 지점들 사이의 거리들이 텍셀 에지 길이의 2배 미만이거나 그와 같을 때, 보간이 4개의 코너들에 대응하는 4개의 픽셀 값들을 결정하기 위해 필요한 모든 텍셀들은 항상 샘플링 영역이 배치되는 곳에 관계 없이 4×4 텍셀 영역에 포함될 수 있다.
도 7c는 정렬되지 않은 4×4 텍셀 영역(730) 내의 예시적인 2×2 직교 샘플링 지점들을 도시한다. 상기 논의된 바와 같이, 임의의 2개의 샘플링 지점들 사이의 거리들이 텍셀 에지 길이의 2배 미만이거나 그와 같은 한, 4개의 픽셀 값들을 결정하기 위해 필요한 텍셀들은 항상 2×2 샘플링 지점들이 어디에 배치되더라도 4×4 텍셀 영역 내에 맞을 수 있다. 그러나, 샘플링 지점들이 텍셀 크기의 절반 이상만큼 이동되면, 4개의 샘플 지점들은 상이한 정렬되지 않은 텍셀 영역 내에 있을 수 있지만, 그 텍셀 영역의 치수들은 계속 4×4일 것이다. 예를 들면, 731, 732, 733, 734의 샘플링 지점들은 샘플링 지점 위치들이 도 7b에 도시된 바와 같은 위치로부터 도 7c에 도시된 바와 같은 위치들로 변경될 때 정렬되지 않은 텍셀 영역들(730) 내에 있을 수 있다.
도 7d는 4×4 텍셀 영역(740) 내의 예시적인 2×2 비 직교 샘플링 지점들(예컨대, 741, 742, 743, 744)를 도시한다. 특정한 실시예들에서, 시스템은 표면들을 샘플링하기 위해 비 직교 샘플링 지점들을 사용할 수 있다. 비 직교 샘플링 지점들에 대해, 임의의 2개의 이웃하는 샘플링 지점들 사이의 거리들이 텍셀 크기의 2배 미만이거나 그와 같은 한, 4개의 픽셀 값들을 결정하기 위해 필요한 텍셀들은 항상 4×4 텍셀 영역 내에 맞을 수 있다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 샘플링 지점들(741, 742, 743, 744)은 텍셀 영역(740)의 텍셀들에 대한 (U, V) 좌표 공간에 대해 45도 위치에 배치될 수 있다. 샘플링 지점(744 및 743) 사이의 거리(752) 및 샘플링 지점(743 및 742) 사이의 거리(754)는 텍셀 크기의 2배 미만인 텍셀의 에지 길이(도 7a 및 도 7b의 샘플링 영역들(701 및 702)보다 작은 샘플링 영역에 대응함)의
Figure pct00002
배와 같을 수 있다. 얇은 라인들로 연결된 4개의 텍셀 센터들의 각각의 그룹은 경계 박스 내에 있는 샘플 지점(741, 742, 743, 또는 744)을 필터링하기 위해 사용되는 4개의 가장 가까운 텍셀 중심들을 나타낸다. 도 7d로부터 알 수 있는 바와 같이, 심지어 샘플링 지점들(741, 742, 743, 및 744)이 회전되었을 때, 4개의 샘플링 지점들(741, 742, 743, 및 744)을 필터링하기 위해 필요한 텍셀 영역들은 계속해서 4×4 텍셀 영역(740)에 맞을 것이고, 이는 인접한 샘플링 지점들(예컨대, 744 및 743, 744 및 742) 사이의 거리들이 텍셀 에지 길이의 2배 미만일 때 한 번의 판독 동작으로 판독될 수 있다.
특정한 실시예들에서, 시스템은 2회 축소 규칙이 위반될 때 다수의 대체 해결책들을 제공할 수 있다. 예를 들면, 정상적으로 확대되는 라벨에 대응하는 표면은 그것이 2회 이상 축소될 때 앨리어싱(aliasing)을 유발할 수 있다. 이 경우에, 시스템은 라벨로부터 작은 이미지를 생성할 수 있고 앨리어싱을 회피하기 위해 작은 이미지를 렌더링할 수 있다(축소를 수행하는 대신에). 특정한 실시예들에서, 시스템은 포비티드 이미지(foveated image)들을 구현할 수 있다. 포비티드 이미지는 이미지의 상이한 부분들에서 상이한 해상도들을 가질 수 있으며 다수의 텍스처 레벨들을 가지는 밉맵 체인과 연관될 수 있다. 포비티드 이미지에서 2회 축소 규칙이 위반될 때, 시스템은 더 미세한 해상도들이 사용되는 경우 필요한 초과 텍셀들을 회피하기 위해 대체 해결책으로서 더 거친 해상도 텍스처를 선택할 수 있다. 더 거친 텍스처로 스위칭함으로써, 2×2 샘플링 지점들을 필터링하기 위해 필요한 텍셀들은 계속해서 4×4 텍셀 내에 있을 것이다. 특정한 실시예들에서, 2회 축소 규칙이 위반될 때, 시스템은 신체 착용가능한 컴퓨팅 시스템과 연관된 GPU들 또는 스마트 비디오 디코더들에서 미리 뒤틀린 표면들을 재생성하고 새로운 미리 뒤틀린 표면들을 헤드셋 시스템으로 재전송할 수 있다.
본 발명에서 앞서 논의된 바와 같이, 전통적인 GPU들은 쿼드들의 텍셀 버퍼 메모리에 액세스하고 다수의 샘플링 지점들을 결정하기 위해 필요한 텍셀들을 검색하도록 순차적이고 별개의 동작들을 필요로 한다. 예를 들면, 3D 모델에 투영된 4개의 샘플링 지점들은 모델의 형상에 기초하여 임의의 위치 및 거리들을 가질 수 있다. 4개의 샘플링 지점들의 각각에 대한 픽셀 값을 결정하기 위해, 전통적인 GPU들은 필요한 텍셀들의 4개의 그룹들을 얻기 위해 4개의 별개의 및 순차적 판독 동작들로 텍셀 버퍼 메모리에 액세스할 필요가 있으며, 이는 느리고 비효율적이다. 디스플레이 엔진의 특정한 실시예들은 2×2 샘플링 지점들의 세트를 필터링하기 위해 필요한 모든 텍셀들이 항상 4×4 텍셀 영역 내에 있도록 허용하기 위해 2회 축소 규칙을 사용할 수 있다. 텍셀 버퍼 메모리에 저장된 4×4 텍셀 영역은 이후에 설명될 바와 같이, 한 번의 판독 동작을 사용하여 검색될 수 있다. 따라서, 시스템의 특정한 실시예들은 텍셀 버퍼 메모리로부터 텍셀들을 판독하기 위한 대역폭 사용을 감소시키고 별개의 순차적 판독 동작들보다는 병행하여 16개의 텍셀들에 액세스함으로써 더 양호한 효율성을 제공한다.
도 8a는 인터리빙된 패턴을 갖는 32 바이트 메모리 블록(815)에 저장된 일 예시적인 4×4 텍셀 어레이(810)를 도시한다. 특정한 실시예들에서, 시스템은 2D 텍셀 어레이의 모든 텍셀들이 메모리로부터 병행하여 검색되는 것을 허용하기 위해 인터리빙된 스위즐 패턴을 갖는 메모리 블록에 2D 텍셀 어레이를 저장할 수 있다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 4×4 텍셀 어레이(810)는 (U, V) 좌표들에 의해 표시된 바와 같이 16개의 텍셀들을 포함할 수 있고 각각의 텍셀은 16 비트 데이터를 가질 수 있다. 도 6a 및 도 6b에서 설명된 바와 같이 방법을 사용하여, 16개의 텍셀들은 보간이 4개의 샘플링 지점들(811, 812, 813, 및 814)에 대한 픽셀 값들을 결정하기 위해 필요한 텍셀들로서 식별될 수 있다. 16개의 텍셀들은 동일한 메모리 블록 예를 들면, 도 8a에 도시된 바와 같이 인터리빙된 패턴을 갖는 32 바이트(256 비트) 메모리(815)에 저장될 수 있다. 4×4 텍셀 어레이(810)가 필요할 때, 시스템은 한 번의 판독 동작으로 32 바이트(256 비트) 메모리(815)에 액세스하고 모든 16개의 텍셀들을 병행하여 검색할 수 있다. 그 다음, 시스템은 4개의 샘플링 지점들(811, 812, 813, 및 814)에 대해 검색된 텍셀들을 사용하여 보간을 수행할 수 있다.
도 8b 및 도 8c는 임의의 4×4 텍셀 어레이가 한 번의 판독 동작으로 판독되는 것을 허용하기 위해 16개의 독립적인 텍셀 버퍼 블록들에 저장된 일 예시적인 8×8 텍셀 어레이를 도시한다. 특정한 실시예들에서, 디스플레이 엔진은 픽셀 블록들(예컨대, 도 9의 930A 및 930B)의 필터 블록들(예컨대, 도 10의 1002, 1003, 1004)에 텍셀 버퍼 메모리를 포함할 수 있다. 특정한 실시예들에서, 텍셀 버퍼 메모리는 쿼드 버퍼 블록, 텍셀 버퍼 블록, 및 서브 레벨 버퍼 유닛들을 포함하는 다수의 메모리 블록 레벨들로 조직될 수 있다. 디스플레이 엔진의 픽셀 블록은 각각이 4개의 쿼드 버퍼 블록들(예컨대, 도 11a의 1102, 1103, 1104, 1105)을 포함하는 3개의 필터 블록들을 포함할 수 있다. 각각의 쿼드 버퍼 블록은 4개의 텍셀 버퍼 블록들(예컨대, 도 11b의 1121, 1122, 1123, 1124)을 포함할 수 있다. 각각의 텍셀 버퍼 블록은 2개의 서브 레벨 버퍼 유닛들(예컨대, 도 12a의 512×2 버퍼 유닛(1201A) 및 512×10 버퍼 유닛(1202B))을 포함할 수 있다. 결과적으로, 특정한 실시예들의 디스플레이 엔진의 픽셀 블록은 별개로 어드레스되고 병행하여 액세스될 수 있는 16개의 텍셀 버퍼 블록들을 포함할 수 있으며, 따라서 디스플레이 엔진은 16개의 텍셀 버퍼 블록의 각각으로부터 동시에 하나의 텍셀을 판독하고 16개의 텍셀들을 병행하여 검색할 수 있다.
특정한 실시예들에서, 디스플레이 엔진은 제어 블록의 텍셀 메모리로부터 픽셀 블록의 텍셀 버퍼 메모리로 32×32 텍셀 어레이를 로드할 수 있다. 디스플레이 엔진은 패턴을 갖는 32×32 텍셀 어레이를 저장/조직할 수 있어서 임의의 4×4 텍셀 어레이(정렬 또는 정렬되지 않은 어레이)가, 4×4 텍셀들을 갖는 임의의 어레이가 한 번의 판독 동작으로 판독되는 것을 허용하도록 각각의 텍셀 버퍼 블록에 하나의 텍셀을 갖는 16개의 별개의 텍스트 버퍼 블록들에 저장되는 그것의 16개의 텍셀들을 가질 수 있게 한다. 설명의 단순화 목적을 위해, 도 8b에 도시된 바와 같이, 일 예시적인 8×8 텍셀 어레이(820)는 텍셀 버퍼 메모리에 32×32 텍셀 어레이를 저장하고 조직하기 위한 프로세스, 원리, 및 패턴을 도시하기 위해 사용되어 한 번의 판독 동작으로 4×4 텍셀들을 갖는 임의의 정렬되거나 정렬되지 않은 어레이의 병행 검색을 허용한다. 8×8 텍셀 어레이(820)는 각각이 2×2 텍셀들(예컨대, 2×2 텍셀 어레이(825))을 가지는 16개의 서브 어레이들을 포함할 수 있다. 설명의 단순화 목적을 위해, 각각의 2×2 텍셀 어레이(예컨대, 어레이(825))의 4개의 텍셀들은 (0, 0), (1, 0), (0, 1), 및 (1, 1)의 (U, V) 좌표들에 대응하는 4개의 문자들(A, B, C 및 D)에 의해 각각 표현될 수 있다. 예를 들면, 2×2 텍셀 어레이(825)에서, 텍셀(0, 0), 텍셀(1, 0), 텍셀(0, 1), 및 텍셀(1, 1)은 A1, B1, C1, 및 D1에 의해 각각 표현될 수 있다.
특정한 실시예들에서, 4개의 쿼드 버퍼 블록들(예컨대, 도 11a의 1102, 1103, 1104, 1105)은 각각, 각각의 2×2 텍셀 어레이들에서 (U, V) 좌표들에 의해 표시된 바와 같이 동일한 위치에 텍셀들을 포함할 수 있다. 예를 들면, 쿼드 버퍼 블록(1102)은 각각의 2×2 텍셀 어레이에서 (0, 0)의 위치에 텍셀을 포함할 수 있다. 예시적인 8×8 텍셀 어레이(820)에 대해, 쿼드 블록(1102)은 A1로부터 A16까지의 텍셀들을 포함할 수 있고 그들의 각각은 그것의 대응하는 2×2 텍셀 어레이의 위치(0, 0)에 있다. 쿼드 버퍼 블록(1102)의 텍셀들(A1 내지 16)은 도 8b에 도시된 바와 같이 개념적으로 4×4 텍셀 어레이(831)를 형성할 수 있다. 또 다른 예로서, 쿼드 버퍼 블록(1103)은 각각의 2×2 텍셀 어레이에서 (1, 0)의 위치에 텍셀을 포함할 수 있다. 예시적인 8×8 텍셀 어레이(820)에 대해, 쿼드 블록(1103)은 B1로부터 B16까지의 텍셀들을 포함할 수 있고 그들의 각각은 그것의 대응하는 2×2 텍셀 어레이의 위치(1, 0)에 있다. 쿼드 버퍼 블록(1103)의 텍셀들(B1 내지 16)은 도 8b에 도시된 바와 같이 개념적으로 4×4 텍셀 어레이(832)를 형성할 수 있다. 또 다른 예로서, 쿼드 버퍼 블록(1104)은 각각의 2×2 텍셀 어레이에서 (0, 1)의 위치에 텍셀을 포함할 수 있다. 예시적인 8×8 텍셀 어레이(820)에 대해, 쿼드 블록(1104)은 C1로부터 C16까지의 텍셀들을 포함할 수 있고 그들의 각각은 그것의 대응하는 2×2 텍셀 어레이의 위치(1, 0)에 있다. 쿼드 버퍼 블록(C1104)의 텍셀들(C1 내지 16)은 도 8b에 도시된 바와 같이 개념적으로 4×4 텍셀 어레이(833)를 형성할 수 있다. 또 다른 예로서, 쿼드 버퍼 블록(1105)은 각각의 2×2 텍셀 어레이에서 (1, 1)의 위치에 텍셀을 포함할 수 있다. 예시적인 8×8 텍셀 어레이(820)에 대해, 쿼드 블록(1105)은 D1로부터 D16까지의 텍셀들을 포함할 수 있고 그들의 각각은 그것의 대응하는 2×2 텍셀 어레이의 위치(1, 1)에 있다. 쿼드 버퍼 블록(1105)의 텍셀들(C1 내지 16)은 도 8b에 도시된 바와 같이 개념적으로 4×4 텍셀 어레이(834)를 형성할 수 있다.
도 8c는 텍셀 버퍼 블록들에 텍셀들을 저장하기 위해 사용되는 예시적인 패턴들을 도시한다. 특정한 실시예들에서, 쿼드 버퍼 블록(예컨대, 도 11a의 1102, 1103, 1104, 1105)은 4개의 텍셀 버퍼 블록들(예컨대, 도 11b의 1121, 1122, 1123, 1124)을 포함할 수 있다. 각각의 쿼드 버퍼 블록에 저장된 텍셀들은 개념적으로 4개의 2×2 텍셀 어레이들을 포함하는 4×4 텍셀 어레이(예컨대, A1 내지 16)를 형성할 수 있다. 예를 들면, 쿼드 버퍼 블록(1102)에 저장된 A1 내지 16은 (A1, A2, A5, A6), (A3, A4, A7, A8), (A9, A10, A13, A14), 및 (A11, A12, A15, A16)의 4개의 2×2 텍셀 어레이들을 포함하는 4×4 텍셀 어레이를 형성할 수 있다. 2×2 텍셀 어레이의 각각의 텍셀은 그것의 로컬 (U, V) 좌표들을 가질 수 있다. 예를 들면, 텍셀(A1, A2, A5, A6)은 (A1, A2, A5, A6)의 텍셀 어레이에서 (0, 0), (1, 0), (0, 1), 및 (1, 1)의 로컬 (U, V) 좌표들을 각각 가질 수 있다. 특정한 실시예들에서, 쿼드 버퍼 블록의 각각의 텍셀 버퍼 블록은 동일한 로컬 (U, V) 좌표에 텍셀들을 포함할 수 있다. 예를 들면, 텍셀 버퍼 블록(1121A)은 A1, A3, A9, 및 A11을 포함할 수 있고 그들의 각각은 (A1, A2, A5, A6), (A3, A4, A7, A8), (A9, A10, A13, A14), 및 (A11, A12, A15, A16)의 각각의 2×2 텍셀 어레이들에서 (0, 0)의 위치에 있다. 또 다른 예로서, 텍셀 버퍼 블록(1122A)은 A2, A4, A10, 및 A12를 포함할 수 있고 그들의 각각은 (A1, A2, A5, A6), (A3, A4, A7, A8), (A9, A10, A13, A14), 및 (A11, A12, A15, A16)의 각각의 2×2 텍셀 어레이들에서 (1, 0)의 위치에 있다. 또 다른 예로서, 텍셀 버퍼 블록(1123A)은 A5, A7, A13, 및 A15를 포함할 수 있고 그들의 각각은 (A1, A2, A5, A6), (A3, A4, A7, A8), (A9, A10, A13, A14), 및 (A11, A12, A15, A16)의 각각의 2×2 텍셀 어레이들에서 (0, 1)의 위치에 있다. 또 다른 예로서, 텍셀 버퍼 블록(1124A)은 A6, A8, A14, 및 A16을 포함할 수 있고 그들의 각각은 (A1, A2, A5, A6), (A3, A4, A7, A8), (A9, A10, A13, A14), 및 (A11, A12, A15, A16)의 각각의 2×2 텍셀 어레이들에서 (1, 1)의 위치에 있다. 유사하게, 다른 쿼드 버퍼 블록들의 텍셀 버퍼 블록들은 도 8c에 도시된 바와 같이, 유사한 패턴들로 대응하는 쿼드 버퍼 블록의 텍셀들을 저장할 수 있다. 텍셀 버퍼 블록에 저장된 텍셀들은 그 텍셀 버퍼에서 2차원 어레이를 형성할 수 있다. 예를 들면, 텍셀 버퍼 블록(1121A)에 저장된 텍셀 어레이는 (0, 0), (1, 0), (0, 1), 및 (1, 1)의 로컬 (U, V) 좌표들에 각각 대응하는 텍셀들(A1, A3, A9, 및 A11)을 포함할 수 있다. 결과적으로, 8×8 텍셀 어레이의 64개의 텍셀들은 이후에 논의될 바와 같이, 4×4 텍셀들을 갖는 임의의 서브 어레이가 16개의 텍셀 버퍼 블록들에 별개로 저장되는 그것의 16개의 텍셀들을 갖는 것을 허용하는 이러한 패턴(각각의 텍셀 버퍼 블록에 하나의 텍셀을 가짐)으로 16개의 텍셀 버퍼 블록들(예컨대, 1121A 내지 D, 1122A 내지 D, 1123A 내지 D, 1124A 내지 D)에 저장될 수 있다.
도 8d 및 도 8e는 16개의 독립적인 텍셀 버퍼 블록들에 저장된 8×8 텍셀 어레이로부터 선택된 일 예시적인 4×4 텍셀 어레이를 도시한다. 특정한 실시예들에서, 타일과 연관된 샘플링 지점들(예컨대, 16×16 픽셀들)은 정렬된 4×4 텍셀 어레이(예컨대, 텍셀 어레이(820)에서 A1로부터 D6까지) 또는 정렬되지 않은 4×4 텍셀 어레이(예컨대, 텍셀 어레이(820)에서 B5로부터 C11까지) 내에 있을 수 있다. 더 이전에 설명된 바와 같이, 쿼드 버퍼 블록들 및 텍셀 버퍼 블록들에 텍셀들을 저장하고 조직하기 위해 사용되는 패턴들은 임의의 정렬되거나 정렬되지 않은 4×4 텍셀 어레이가 16개의 독립적인 텍셀 버퍼 블록들에 저장되는 그것의 16개의 텍셀들을 갖는 것을 허용하고, 따라서 4×4 텍셀 어레이의 16개의 텍셀들이 한 번의 판독 동작을 사용하여 판독되는 것을 허용할 수 있다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 샘플링 지점들은 정렬되지 않은 4×4 텍셀 어레이(826)(굵은 실선으로 정사각형으로 표시된 바와 같음)에 대응하는 영역 내에 있을 수 있다. 4×4 텍셀 어레이(826)는 각각의 2×2 텍셀 어레이들에서 텍셀 위치들에 대응하는 텍셀들의 4개의 그룹들로 분할될 수 있다. 예를 들면, 텍셀들의 제1 그룹은 (B5, A6, D5, C6), (B6, A7, D6, C7), (B9, A10, D9, C10), 및 (B10, A11, D10, C11)의 각각의 2×2 텍셀 어레이들에서 텍셀 위치((0, 0))에 대응하는 B5, B6, B9, 및 B10을 포함할 수 있다. 텍셀들의 제2 그룹은 (B5, A6, D5, C6), (B6, A7, D6, C7), (B9, A10, D9, C10) 및 (B10, A11, D10, C11)의 각각의 2×2 텍셀 어레이들에서 텍셀 위치((1, 0))에 대응하는 A6, A7, A10, 및 A11을 포함할 수 있다. 텍셀들의 제3 그룹은 (B5, A6, D5, C6), (B6, A7, D6, C7), (B9, A10, D9, C10) 및 (B10, A11, D10, C11)의 각각의 2×2 텍셀 어레이들에서 텍셀 위치((0, 1))에 대응하는 C6, C7, C10, 및 C11을 포함할 수 있다. 텍셀들의 제4 그룹은 (B5, A6, D5, C6), (B6, A7, D6, C7), (B9, A10, D9, C10) 및 (B10, A11, D10, C11)의 각각의 2×2 텍셀 어레이들에서 텍셀 위치((1, 1))에 대응하는 D5, D6, D9, 및 D10을 포함할 수 있다. 도 8d에 도시된 바와 같이, 상기 설명된 바와 같이 텍셀들의 제 1, 제 2, 제 3, 및 제 4 그룹들은 두꺼운 실선들의 정사각형들(예컨대, 827A, 827B, 827C, 827D)에 의해 표시된 바와 같이, 1102, 1103, 1104, 및 1105의 각각의 쿼드 버퍼 블록들에 저장된다. 도 8e는 텍셀들의 제 1, 제 2, 제 3, 및 제 4 그룹의 텍셀들이 별개의 텍셀 버퍼 블록들에 저장되는 방법을 도시한다. 예를 들면, 제 1 그룹의 A6, A7, A10, 및 A11의 텍셀들은 1124A, 1123A, 1122A, 및 1121A의 텍셀 버퍼 블록들에 각각 저장될 수 있다. 제 2 그룹의 B5, B6, B9, 및 B10의 텍셀들은 1123B, 1124B, 1121B, 및 1122B의 텍셀 버퍼 블록들에 각각 저장될 수 있다. 제 3 그룹의 C6, C7, C10, 및 C11의 텍셀들은 1124C, 1123C, 1122C, 및 1121C의 텍셀 버퍼 블록들에 각각 저장될 수 있다. 제 4 그룹의 D5, D6, D9, 및 D10의 텍셀들은 1123D, 1124D, 1121D, 및 1122D의 텍셀 버퍼 블록들에 각각 저장될 수 있다. 정렬되지 않은 4×4 텍셀 어레이와 유사하게, 8×8 텍셀 어레이(820)로부터 선택된 임의의 정렬된 4×4 텍셀 어레이(예컨대, A1로부터 D6까지)는 16개의 독립적인 텍셀 버퍼 블록들에 각각 저장되는 그것의 16개의 텍셀들을 가질 수 있다. 따라서, 8×8 텍셀 어레이(820)로부터 선택된 임의의 4×4 텍셀 어레이(정렬되거나 정렬되지 않음)는 동시에 어드레스되고 액세스될 수 있는 16개의 독립적인/별개의 텍셀 버퍼 블록들에 저장되는 그것의 16개의 텍셀들을 가질 수 있다. 결과적으로, 8×8 텍셀 어레이(820)로부터 선택된 임의의 4×4 텍셀 어레이(정렬되거나 정렬되지 않음)는 한 번의 판독 동작으로 판독될 수 있으며, 이는 텍셀 버퍼들로부터 텍셀들을 검색하기 위한 메모리 액세스 효율을 상당히 개선한다.
도 8f 및 도 8g는 16개의 독립적인 텍셀 버퍼 블록들에 저장된 8×8 텍셀 어레이로부터 선택되고 감소된 다중화 동작들로 텍셀 버퍼로부터 판독될 수 있는 일 예시적인 2×2 텍셀 어레이를 도시한다. 특정한 실시예들에서, 4×4 텍셀 어레이는 4×4 텍셀 영역 내에 있는 샘플링 타일과 연관된 픽셀들의 수(예컨대, 16×16 픽셀들)를 결정하기 위해 사용될 수 있다. 각각의 픽셀은 대응하는 샘플링 지점의 위치에 기초한 4개의 텍셀들에 기초하여 결정될 수 있다. 예를 들면, 샘플링 위치에서 픽셀을 결정하기 위해 필요한 4개의 텍셀들은 도 6a 및 도 6b에서 설명된 바와 같이 방법들을 사용하여 결정될 수 있다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 2×2 텍셀 어레이(827)의 4개의 텍셀들은 픽셀 값을 결정하기 위해 필요한 텍셀들로서 결정될 수 있고 4×4 텍셀 어레이(826)로부터 선택될 수 있다. 2×2 텍셀 어레이(827)는 음영 처리된 정사각형에 의해 표시된 바와 같이 D5, C6, B9, 및 A10을 포함할 수 있다. 텍셀들이 상기 설명된 바와 같이 패턴으로 쿼드 버퍼 블록들 및 텍셀 버퍼 블록들에 저장되므로, D5, C6, B9, 및 A10의 4개의 텍셀들은 1102, 1103, 1104, 및 1105의 4개의 쿼드 버퍼 블록들에 각각 저장된다(도 8f의 각각의 쿼드 버퍼 블록에서 음영 처리된 정사각형에 의해 표시된 바와 같음).
도 8g는 4개의 텍셀들(D5, C6, B9, 및 A10)이 각각의 텍셀 버퍼 블록에서 음영 처리된 정사각형에 의해 표시된 바와 같이, 1123D, 1124C, 1121B, 및 1122A의 4개의 텍셀 버퍼 블록들에 저장됨을 보여준다. 특정한 실시예들에서, 4×4 텍셀 어레이(826)로부터 선택된 임의의 2×2 텍셀 어레이는 4개의 별개의 쿼드 버퍼 블록들 및 4개의 별개의 텍셀 버퍼 블록들에 저장되는 그것의 4개의 텍셀들을 가질 수 있다. 따라서, 4×4 텍셀 어레이(정렬되거나 정렬되지 않음)로부터 임의의 2×2 텍셀 어레이(정렬되거나 정렬되지 않음)를 선택하는 것은 쿼드 버퍼 블록들의 각각에서 4개의 텍셀 버퍼 블록들 중 하나의 선택을 요구할 수 있다. 결과적으로, 샘플 필터 블록(예컨대, 도 11a의 1106, 1107, 1108, 1109)에 의해 프로세싱된 각각의 샘플링 위치는 4개의 4:1 멀티플렉서들(예컨대, 도 11b의 1125E, 1125F, 1125G, 1125H)을 단지 필요로 할 수 있다. 따라서, 텍셀들의 정렬되지 않은 4×4 블록에서 텍셀들의 임의의 정렬되지 않은 2×2 블록을 선택하는 것은 쿼드 버퍼 블록의 각각에서 4개의 선택된 엔트리들 중 하나의 선택을 요구할 수 있고, 이는 쿼드 버퍼 블록들의 텍셀들에 액세스하고 이들을 샘플링하기 위해 필요한 다중화 동작들을 상당히 감소시킨다.
특정한 실시예들에서, 디스플레이 엔진은 4×4 텍셀 어레이(정렬되거나 정렬되지 않음)에 액세스하고 샘플링 프로세스를 위해 4×4 텍셀 어레이 내에서 4개의 2×2 텍셀 어레이들(정렬되거나 정렬되지 않음)을 추출할 수 있다. 각각의 2×2 텍셀 어레이(예컨대, 하나의 샘플링 지점에 대한)는 4개의 텍셀 버퍼 블록들로부터 선택되고 검색되도록 4개의 4:1 멀티플렉서들을 단지 필요로 할 수 있다. 4개의 2×2 텍셀 어레이는 4×4 텍셀 어레이로부터 병행하여 추출될 수 있으며, 4×4 텍셀 어레이는 쿼드 버퍼 블록들 및 텍셀 버퍼 블록들로부터 병행하여 액세스되고 검색될 수 있다(예컨대, 한 번의 판독 동작을 사용하여). 이것은 메모리 액세스 당 4배 많은 텍셀들이 프로세싱되는 것을 허용하고 메모리 액세스가 전통적인 그래픽 렌더링 시스템들보다 4배 넓어지는 것을 허용하며, 따라서 헤드셋 시스템의 메모리 액세스 효율성을 크게 개선하고 메모리 액세스를 위해 필요한 다중화 동작들 및 전력 소비를 감소시킨다.
도 9는 디스플레이 엔진(112)에 대한 시스템 다이어그램을 도시한다. 특정한 실시예들에서, 디스플레이 엔진(112)은 제어 블록(910), 변형 블록들(920A 및 920B), 픽셀 블록들(930A 및 930B), 디스플레이 블록들(940A 및 940B), 등을 포함할 수 있다. 디스플레이 엔진(112)의 구성요소들 중 하나 이상은 고속 버스, 공유 메모리, 또는 임의의 다른 적합한 방법을 통해 통신하도록 구성될 수 있다. 도 9에 도시된 바와 같이, 디스플레이 엔진(112)의 제어 블록(910)은 변형 블록들(920A 및 920B), 픽셀 블록들(930A 및 930B), 및 디스플레이 블록들(940A 및 940B)과 통신하도록 구성될 수 있다. 본 명세서에서 더 상세히 설명된 바와 같이, 이 통신은 데이터 뿐만 아니라, 제어 신호들, 인터럽트들 및 다른 지시들을 포함할 수 있다.
특정한 실시예들에서, 제어 블록(910)은 디스플레이하기 위한 렌더링을 완료하기 위해 신체 착용가능한 컴퓨팅 시스템(예컨대, 도 1의 114)으로부터 입력을 수신하고 디스플레이 엔진에서 파이프라인을 초기화할 수 있다. 특정한 실시예들에서, 제어 블록(910)은 신체 착용가능한 컴퓨팅 시스템으로부터 데이터 및 제어 패킷들을 수신할 수 있다. 데이터 및 제어 패킷들은 텍스처 데이터 및 위치 데이터 및 부가적인 렌더링 지시들을 포함하는 하나 이상의 표면들과 같은 정보를 포함할 수 있다. 제어 블록(910)은 디스플레이 엔진(112)의 하나 이상의 다른 블록들에 필요에 따라 데이터를 분배할 수 있다. 제어 블록(910)은 하나 이상의 프레임들이 디스플레이되도록 파이프라인 프로세싱을 개시할 수 있다. 특정한 실시예들에서, 아이 디스플레이 시스템들(116A 및 116B)은 각각, 자체 제어 블록(910)을 포함할 수 있다. 특정한 실시예들에서, 아이 디스플레이 시스템들(116A 및 116B) 중 하나 이상은 제어 블록(910)을 공유할 수 있다.
특정한 실시예들에서, 변형 블록들(920A 및 920B)은 표면들이 인공 현실 장면에 디스플레이되도록 초기 가시성 정보를 결정할 수 있다. 일반적으로, 변형 블록들(920A 및 920B)은 화면의 픽셀 위치들로부터 광선들을 투사하고 픽셀 블록들(930A 및 930B)로 전송할 필터 명령어들(예컨대, 쌍선형 또는 다른 유형들의 보간 기술들에 기초한 필터링)을 생성할 수 있다. 변형 블록들(920A 및 920B)은 사용자의 현재 관점(예컨대, 헤드셋의 관성 측정 유닛들, 시선 추적기들, 및/또는 SLAM(simultaneous localization and mapping)과 같은 임의의 적합한 추적/로컬화 알고리즘들을 사용하여 결정됨)으로부터 표면들이 배치되는 인공 장면으로 광선 투사를 수행할 수 있고 픽셀 블록들(930A 및 930B)로 전송할 결과들을 생성할 수 있다.
일반적으로, 변형 블록들(920A 및 920B)은 각각 특정한 실시예들에 따라 4 단계 파이프라인을 포함할 수 있다. 변형 블록(920A 또는 920B)의 단계들은 다음과 같이 진행될 수 있다. 광선 투사기는 타일들(예컨대, 각각의 타일은 16×16 정렬된 픽셀을 포함할 수 있음)로서 언급된 하나 이상의 정렬된 픽셀들의 어레이들에 대응하는 광선 번들(ray bundle)들을 발행할 수 있다. 광선 번들들은 하나 이상의 왜곡 메쉬들에 따라 인공 현실 장면에 진입하기 전에 뒤틀릴 수 있다. 왜곡 메쉬들은 적어도 헤드셋 시스템(110)의 아이 디스플레이 시스템들(116A 및 116B)로부터 발생하는 기하학적 왜곡 효과들을 정정하도록 구성될 수 있다. 변형 블록들(920A 및 920B)은 각각의 광선 번들이 각각의 타일의 경계 박스를 표면들에 대한 경계 박스들과 비교함으로써 장면의 표면들과 교차하는지의 여부를 결정할 수 있다. 광선 번들이 객체와 교차하지 않으면, 그것은 폐기될 수 있다. 타일 표면 교차들이 검출되고, 대응하는 타일 표면 쌍은 픽셀 블록들(930A 및 930B)로 이동된다.
일반적으로, 픽셀 블록들(930A 및 930B)은 특정한 실시예들에 따라, 픽셀 컬러 값들을 생성하기 위해 타일 표면 쌍들로부터 컬러 값들을 결정할 수 있다. 각각의 픽셀에 대한 컬러 값들은 제어 블록(910)에 의해 수신되고 저장된 표면들의 텍스처 데이터로부터 샘플링될 수 있다. 픽셀 블록들(930A 및 930B)은 변형 블록들(920A 및 920B)로부터 타일 표면 쌍들을 수신할 수 있고 쌍선형 필터링을 스케줄링할 수 있다. 각각의 타일 표면 쌍에 대해, 픽셀 블록들(930A 및 930B)은 투영된 타일이 표면과 교차하는 곳에 대응하는 컬러 값들을 사용하여 타일 내의 픽셀들에 대한 컬러 정보를 샘플링할 수 있다. 특정한 실시예들에서, 픽셀 블록들(930A 및 930B)은 각각의 픽셀에 대해 적색, 녹색, 및 청색 성분들을 별개로 프로세싱할 수 있다. 특정한 실시예들에서, 제 1 아이 디스플레이 시스템(116A)의 디스플레이 엔진(112)의 픽셀 블록(930A)은 제 2 아이 디스플레이 시스템(116B)의 디스플레이 엔진(112)의 픽셀 블록(930B)과 독립적으로, 그리고 병행하여 진행할 수 있다. 픽셀 블록은 그 다음, 그것의 컬러 결정들을 디스플레이 블록에 출력할 수 있다.
일반적으로, 디스플레이 블록들(940A 및 940B)은 픽셀 블록들(930A 및 930B)로부터 픽셀 컬러 값들을 수신하고, 디스플레이의 스캔라인 출력을 위해 더 적합하도록 데이터의 포맷을 변환하고, 하나 이상의 밝기 정정들을 픽셀 컬러 값들에 적용하며, 디스플레이에 출력하기 위해 픽셀 컬러 값들을 준비할 수 있다. 디스플레이 블록들(940A 및 940B)은 픽셀 블록들(930A 및 930B)에 의해 생성된 타일 순서 픽셀 컬러 값들을 물리적 디스플레이들에 의해 요구될 수 있는 스캔라인 또는 행 순서 데이터로 변환할 수 있다. 밝기 정정들은 임의의 요구된 밝기 정정, 감마 매핑, 및 디더링을 포함할 수 있다. 디스플레이 블록들(940A 및 940B)은 정정된 픽셀 컬러 값들을 물리적 디스플레이(예컨대, 구동기(154)를 통해 도 1의 동공 디스플레이(156))에 직접적으로 출력할 수 있거나 픽셀 값들을 다양한 포맷들로 디스플레이 엔진(112) 외부의 블록에 출력할 수 있다. 예를 들면, 아이 디스플레이 시스템들(116A 및 116B) 또는 헤드셋 시스템(110)은 백엔드 컬러 프로세싱을 더 맞춤화하거나, 디스플레이에 대한 더 넓은 인터페이스를 지원하거나, 디스플레이 속도 또는 충실도를 최적화하기 위해 부가적인 하드웨어 또는 소프트웨어를 포함할 수 있다.
특정한 실시예들에서, 제어기 블록(910)은 마이크로제어기(912), 텍셀 메모리(914), 메모리 제어기(916), I/O 통신을 위한 데이터 버스(917), 입력 스트림 데이터(905)를 위한 데이터 버스(918), 등을 포함할 수 있다. 메모리 제어기(916) 및 마이크로제어기(912)는 시스템의 다른 모듈들과의 I/O 통신을 위해 데이터 버스(917)를 통해 결합될 수 있다. 마이크로제어기(912)는 데이터 버스(917)를 통해 위치 데이터 및 표면 정보와 같은 제어 패키지들을 수신할 수 있다. 입력 스트림 데이터(905)는 마이크로제어기(912)에 의해 설정된 후에 신체 착용가능한 컴퓨팅 시스템으로부터 제어기 블록들(910)로 입력될 수 있다. 입력 스트림 데이터(905)는 요구된 텍셀 포맷으로 변환되고 메모리 제어기(916)에 의해 텍스처 메모리(914)에 저장될 수 있다. 특정한 실시예들에서, 텍셀 메모리(914)는 정적 랜덤 액세스 메모리(SRAM)일 수 있다.
특정한 실시예들에서, 신체 착용가능한 컴퓨팅 시스템은 입력 스트림 데이터(905)를 메모리 제어기(916)로 전송할 수 있으며, 메모리 제어기는 입력 스트림 데이터를 요구된 포맷들을 갖는 텍셀들로 변환하고 스위즐 패턴들을 갖는 텍셀들을 텍셀 메모리(914)에 저장할 수 있다. 이들 스위즐 패턴들로 조직된 텍셀 메모리는 타일(예컨대, "타일"은 16×16 픽셀들의 블록과 같은 픽셀들의 정렬된 블록을 언급함)과 연관된 모든 픽셀의 적어도 하나의 컬러 성분(예컨대, 적색, 녹색, 및/또는 청색)을 결정하기 위해 필요한 텍셀들(예컨대, 4×4 텍셀 블록들의)이 텍셀 버퍼 메모리 판독 동작으로 저장되기 위해 적합한 265 비트 단위들로 픽셀 블록들(930A 및 930B)에 의해 검색되는 것을 허용할 수 있다. 결과적으로, 헤드셋은 텍셀 어레이가 이러한 패턴들로 저장되지 않은 경우 텍셀 어레이를 판독하고 조립하기 위해 필요한 과도한 다중화 동작들을 회피할 수 있고, 따라서 헤드셋 시스템의 계산 리소스 요구조건 및 전력 소비를 감소시킨다.
특정한 실시예들에서, 픽셀 블록들(920A 및 920B)은 텍셀 메모리(912)로부터의 검색된 텍셀들에 기초하여 디스플레이하기 위한 픽셀 데이터를 생성할 수 있다. 메모리 제어기(916)는 2개의 256 비트 데이터 버스들(904A 및 904B)을 통해 픽셀 블록들(930A 및 930B)에 각각 결합될 수 있다. 픽셀 블록들(930A 및 930B)은 각각의 변형 블록들(920A 및 920B)로부터 타일/표면 쌍을 수신할 수 있고 도 6a 및 도 6b에서 설명된 바와 같이 방법을 사용하여 타일과 연관된 모든 픽셀들을 결정하기 위해 필요한 텍셀들을 식별할 수 있다. 픽셀 블록들(930A 및 930B)은 메모리 제어기(916) 및 256 비트 데이터 버스들(904A 및 904B)를 통해 텍셀 메모리(914)로부터 식별된 텍셀들(예컨대, 4×4 텍셀 어레이)을 병행하여 검색할 수 있다. 예를 들면, 타일과 연관된 모든 픽셀들을 결정하기 위해 필요한 4×4 텍셀 어레이는 하나의 메모리 블록에 저장될 수 있으며 하나의 메모리 판독 동작을 사용하여 검색될 수 있다. 픽셀 블록들(930A 및 930B)은 상이한 그룹들의 텍셀들에 대해 보간을 병행하여 수행하기 위해 다수의 샘플 필터 블록들을 사용하여 대응하는 픽셀들을 결정할 수 있다. 픽셀 값들은 이후의 디스플레이 프로세스들을 위해 디스플레이 블록들(940A 및 940B)로 전송될 수 있다.
특정한 실시예들에서, 시스템은 아이 둘 모두의 렌더링 파이프라인들에 의해 사용되는 텍스처 데이터를 저장하기 위해 하나의 텍스처 메모리를 사용할 수 있다. 특정한 실시예들에서, 2개의 픽셀 블록들(930A 및 930B)은 2개의 아이들에 대한 데이터를 병행하여 프로세싱할 수 있으며 2개의 디스플레이들이 동기화되지 않을 수 있기 때문에 독립적인 상태들을 가질 수 있다. 전형적으로, 라벨들 및 이미지들은 아이들 둘 모두에 대해 렌더링될 수 있으며, 뷰어의 관점에서 충분히 멀리 떨어져 있는 GPU 생성 이미지들도 렌더링될 수 있어서, 스테레오 분리가 최소가 되게 한다. 하나의 아이를 위해 필요한 대부분의 라벨 및 비디오 이미지 표면 데이터가 다른 아이를 위해 또한 필요하기 때문에, 동일한 칩에서 아이들 둘 모두를 프로세싱하는 것은 그 데이터가 2번 대신에 한 번 저장되는 것을 허용한다. 결과적으로, 단일 텍스처 메모리를 사용하여 아이 파이프라인들 둘 모두에 대한 텍스처 데이터를 저장하는 것이 이롭다. 심지어 GPU 생성 이미지들에 대해, 근처의 객체들에 대해서만 별개의 입체 이미지들이 요구될 수 있다. 예를 들면, 전경 객체들이 배경에 대해 이동하는 것을 허용하기 위해 배경이 별개로 렌더링되는 경우, 일반적으로 스테레오 배경 이미지가 요구되지 않을 수 있다. 특정한 실시예들에서, 시스템은 각각의 아이에 대해 별개의 텍셀 어레이를 사용하여 스테레오 뷰를 요구하는 객체를 렌더링할 수 있다. 특정한 실시예들에서, 시스템은 아이 파이프라인들 둘 모두에 대해 공유된 텍셀 어레이를 사용할 수 있으며 각각의 아이 파이프라인(예컨대, 픽셀 블록)은 공유된 텍셀 어레이에 별개로 액세스할 수 있는데, 이는 각각의 아이의 관점에서 객체가 나타날 수 있는 곳에 관한 어떠한 신뢰가능한 상관도 존재할 수 없기 때문이다.
도 10은 픽셀 블록(930A)에 대한 일 예시적인 다이어그램을 도시한다. 버퍼 관리자(1001)는 헤드셋 시스템의 다른 모듈들로부터 타일 명령어(1009)를 수신할 수 있다. 보간을 위해 샘플들을 스케줄링하기 전에, 버퍼 관리자(1001)는 필요한 표면 데이터를 필터 블록들(1002, 1003, 및 1004) 내의 버퍼들로 로드할 수 있다. 픽셀 블록(930A)은 또 다른 타일로 이동하기 전에 행의 각각의 타일 위치에서 모든 타일/표면 쌍들을 전송할 수 있는 변형 블록으로부터 타일/표면 쌍들을 수신할 수 있다. 버퍼 매니저(1001)는 타일들 내의 픽셀 위치들에서 쌍선형 필터링을 스케줄링할 수 있고 스케줄에 기초하여 샘플 위치들에서 쌍선형 필터링을 수행할 수 있다. 버퍼 매니저(1001)는 8 비트 어드레스 버스(1007)를 통해 텍셀 메모리 판독 어드레스(1005)를 텍셀 메모리를 포함하는 제어기 블록으로 전송할 수 있다. 픽셀 블록(930A)은 256 비트 데이터 버스(1008)를 통해 텍셀 메모리 판독 데이터(1006)를 수신할 수 있다. 특정한 실시예들에서, 버퍼 관리자(1001)는 그 타일/표면 쌍의 샘플들을 프로세싱하기 전에 타일을 위해 모든 요구된 텍셀 데이터를 로드할 수 있다. 특정한 실시예들에서, 버퍼 관리자는 데이터가 하나의 타일로부터 다음 텍셀로 재사용되는 것을 허용할 수 있다. 특정한 실시예들에서, 각각의 필터 블록(예컨대, 1001, 1002, 1003)은 후속 디스플레이 프로세스를 위해 디스플레이 블록에 대응하는 컬러의 2×2 픽셀 어레이를 출력할 수 있다. 특정한 실시예들에서, 버퍼 관리자(1009)는 8 비트 어드레스 버스(1009)를 통해 블록을 디스플레이하기 위해 8 비트 패턴을 출력할 수 있다. 특정한 실시예들에서, 시스템은 포비티드 렌더링을 지원할 수 있고 필터 블록들은 또한, 타일에 대해 사용할 포비티드 렌더링의 종류를 명시하는 타일 당 패턴 값을 기록할 수 있다.
특정한 실시예들에서, 픽셀 블록(930A)은 색수차로 인해 적색, 녹색, 및 청색 컬러 성분을 별개로 프로세싱할 수 있다. 색수차는 단일 디스플레이 픽셀의 적색, 녹색 및 청색 성분들로 하여금 상이한 광선들, 및 결과적으로 상이한 샘플 위치들을 요구하게 할 수 있다. 특정한 실시예들에서, 버퍼 관리자(1001)는 적색, 녹색, 및 청색 타일들의 경계 박스들을 계산하고 3개의 컬러들 중 임의의 것에 의해 필요한 텍셀 메모리로부터 모든 텍셀들을 판독할 수 있다. 한 번의 텍셀 판독 동작을 통해 검색된 데이터가 하나보다 많은 컬러 성분들에 의해 필요한 경우, 버퍼 관리자(1001)는 데이터를 다수의 컬러 성분들에 병행하여 로드할 수 있다. 색수차가 거의 또는 전혀 없을 때, 버퍼 관리자(1001)는 한 번의 판독 동작을 사용하여 텍스처 메모리로부터 판독하여 데이터를 3개의 필터 블록들(1002, 1003, 및 1004) 모두에 로드할 수 있다. 색수차가 16개의 픽셀들을 초과하면 적색, 녹색 및 청색 필터 블록들의 각각은 텍스처 메모리로부터 별개의 판독들을 요구할 수 있다.
특정한 실시예들에서, 시스템은 타일 행의 2개의 절반들로부터 타일들을 인터리빙하는 타일 프로세싱 순서를 사용할 수 있다. 특정한 실시예들에서, 에지 타일들은 교번하여 대체로 높은 색수차를 가질 수 있고 중앙 타일들은 대체로 낮은 색수차를 가질 수 있다. 색수차에 의존하여, 단일 256 비트 텍셀 메모리 워드가 하나의 필터 블록에 의해 또는 다수의 필터 블록들에 의해 요구될 수 있다. 후자의 경우에, 단일 텍셀 메모리 판독은 데이터를 요구하는 모든 필터 블록들에 동일한 데이터를 로드할 수 있다. 따라서, 색수차는 텍셀 메모리에 액세스하기 위해 요구되는 판독 대역폭의 최대 3 대 1 변화를 야기할 수 있다. 타일들을 인터리빙하는 프로세싱 순서를 사용함으로써, 타일 행의 2개의 절반들을 형성하면, 시스템은 텍스처 메모리로부터 요구된 대역폭을 균일하게 만들 수 있다. 예를 들면, 중앙 타일은 색수차가 거의 없거나 전혀 없을 수 있으며 단일 액세스는 주어진 아이에 대한 3개의 필터 블록들 모두를 로드하기 위해 사용될 수 있다. 또 다른 예로서, 에지 타일은 높은 색수차를 가질 수 있고 주어진 아이에 대한 필터 블록들의 각각에 대해 별개의 판독들을 요구할 수 있다. 결과적으로, 시스템은 대부분의 상황들에서 단지 4번의 판독들을 필요로 할 수 있고, 따라서 텍셀 메모리에 액세스하고 픽셀 블록들을 계속 동작하게 하기 위해 요구되는 대역폭을 감소시킨다.
특정한 실시예들에서, 버퍼 관리자(1001)는 변형 블록으로부터 주어진 위치에 대한 타일/표면 쌍을 수신할 수 있다. 버퍼 관리자(1001)는 3개의 컬러들 모두의 4 텍셀 정렬된 보존적 경계 박스를 계산할 수 있고 3개의 (이중 버퍼링된) 필터 블록 버퍼들 모두에서 공간이 이용가능할 때까지 대기할 수 있다. 버퍼 관리자(1001)는 하나 이상의 필터 블록들이 필요로 하는 경계 박스의 각각의 4×4 블록에 대한 판독을 발행할 수 있고 각각의 관련 필터 블록 내의 32×32 텍셀 영역으로 데이터를 로드할 수 있다. 32×32 텍셀 영역으로 샘플링이 완료될 때, 버퍼 관리자는 또 다른 사용을 위해 공간을 확보할 수 있다. 특정한 실시예들에서, 텍셀들은 버퍼를 더 효율적으로 사용하기 위해 버퍼 메모리의 32×32 영역들(예컨대, 텍셀 버퍼 블록들을 포함하는 쿼드 버퍼 블록들) 또는 더 작은 영역들로 로드될 수 있다. 예를 들면, 텍셀들은 요구된 텍셀들을 저장하기에 충분한 폭 및 높이에 대해 2의 임의의 거듭제곱으로 영역들로 로드될 수 있다. 특정한 실시예들에서, 버퍼 관리자(1001)는 텍셀들이 더 이상 필요하지 않은 후에, 샘플 스테핑(sample stepping) 동안 텍셀들을 해제할 수 있다. 특정한 실시예들에서, 버퍼 관리자(1001)는 적색, 녹색 및 청색 채널들 중 하나 이상이 32×32 텍셀 어레이보다 큰 텍셀 어레이를 로드함을 요구하는 임의의 타일을 폐기할 수 있다.
도 11a는 필터 블록에 대한 일 예시적인 다이어그램(1100)을 도시한다. 특정한 실시예들에서, 필터 블록은 샘플 스테퍼(1101), 4개의 쿼드 버퍼 블록들(예컨대, 1102, 1103, 1104, 1105), 4개의 샘플 필터 블록들(예컨대, 1106, 1107, 1108, 1109), 타일 버퍼 블록(1112), 데이터 버스들, 등을 포함할 수 있다. 특정한 실시예들에서, 필터 블록들(예컨대, 도 10의 1002, 1003, 1004)은 쿼드 버퍼 블록들(예컨대, 1102, 1103, 1104, 및 1105)을 포함하는 내부 버퍼들의 세트에 저장된 데이터에 대해 쌍선형 필터링을 수행할 수 있다. 4개의 샘플링 위치들에 대한 텍셀들의 4개의 그룹들은 샘플 필터 블록들(1106, 1107, 1108, 및 1109) 각각에서 병행하여 샘플링될 수 있다. 결과들은 타일 버퍼 블록(1112)에 의해 그들 픽셀 위치들에 이전에 기록된 데이터와 혼합될 수 있다. 마지막으로, 타일 버퍼 블록(1112)은 동일한 타일에 대한 후속 액세스들의 최적화를 허용하기 위해 샘플 스테퍼(1101)에 정보(예컨대, 불투명한 픽셀 데이터)를 반환할 수 있다. 제어 블록의 텍셀 메모리(예컨대, 도 9의 914)의 텍셀들은 256 비트 단위들로 조직되고 액세스될 수 있어서 각각의 쿼드 버퍼 블록이 256 비트 텍셀 메모리 액세스로부터 자체 64 비트 서브 워드를 입력할 수 있게 한다. 256 비트 텍셀 메모리 판독의 각각의 16 비트는 정렬된 4×4의 텍셀들 내에 상이한 위치에 대한 텍셀들을 포함할 수 있다. 제어 블록의 텍셀 메모리는 다수의 뱅크들로 조직될 수 있어서 256 비트 액세스가 정렬된 4×4 블록의 텍셀들, 또는 32 비트 텍셀들에 대해 4×4 블록의 절반을 판독할 수 있게 한다.
특정한 실시예들에서, 각각의 쿼드 버퍼 블록은 정렬된 2×2 텍셀 영역에서 동일한 위치에 있는 4개의 16 비트 서브 워드들을 64 비트 데이터 버스를 통해 입력할 수 있다. 예를 들면, 쿼드 버퍼 블록(1102)은 대응하는 2×2 텍셀 어레이 내의 로컬 (U, V) 좌표들이 제로(0, 0)인 텍셀들(예컨대, 텍셀 어레이(1110)의 A1, A2, A3 및 A4)을 얻을 수 있다. 유사하게, 쿼드 버퍼 블록(1103)은 대응하는 2×2 텍셀 어레이를 갖는 로컬 (U, V) 좌표들이 (1, 0)인 텍셀들(예컨대, 텍셀 어레이(1110)의 B1, B2, B3, B4)을 얻을 수 있다. 쿼드 버퍼 블록(1104)은 대응하는 2×2 텍셀 어레이 내의 로컬 (U, V) 좌표들이 (0, 1)인 텍셀들(예컨대, 텍셀 어레이(1110)의 C1, C2, C3, C4)을 얻을 수 있다. 쿼드 버퍼 블록(1105)은 대응하는 2×2 텍셀 어레이 내의 로컬 (U, V) 좌표들이 (1, 1)인 텍셀들(예컨대, 텍셀 어레이(1110)의 D1, D2, D3, D4)을 얻을 수 있다. 4×4 텍셀 어레이(1110)는 대응하는 로컬 (U, V) 좌표들을 보여주는 각각의 텍셀을 가질 수 있고 각각의 텍셀은 텍셀들 내의 문자들(예컨대, 쿼드 버퍼 블록(1102)에서 Ax, 쿼드 버퍼 블록(1103)에서 Bx, 쿼드 버퍼 블록(1104)에서 Cx, 쿼드 버퍼 블록(1105)에서 Dx)에 의해 표시된 바와 같이 각각의 쿼드 버퍼 블록들에 저장될 수 있다. 결과적으로, 4개의 쿼드 버퍼 블록들(1102, 1103, 1104, 및 1105)은 보간을 위해 임의로 정렬된 2×2 텍셀들을 제공할 수 있다. 예를 들면, 쿼드 버퍼 블록들(1102, 1103, 1104, 및 1105)은 각각 2×2 텍셀 어레이 내에 포함된 텍셀을 각각의 샘플 필터 블록(예컨대, 1106, 1107, 1108, 1109)으로 전송할 수 있다. 결과적으로, 각각의 샘플 필터 블록들은 2×2 텍셀 어레이에 대응하는 4개의 텍셀들을 수신하고 텍셀들에 대해 보간을 수행할 수 있다.
특정한 실시예들에서, 필터 블록은 4개의 샘플 필터 블록들(예컨대, 1106, 1107, 1108, 1109)을 포함할 수 있으며 그들의 각각은 4개의 쿼드 버퍼 블록들(예컨대, 1102, 1103, 1104, 1105)로부터 뿐만 아니라, 샘플 스테퍼(1101)로부터 데이터 입력을 얻을 수 있다. 4개의 샘플 필터 블록들은 텍스처 (U, V) 공간에서 샘플 위치들의 2×2 블록을 계산할 수 있으며, 이는 디스플레이에서 정수 픽셀 위치들의 정렬된 2×2 블록에 대응한다. 특정한 실시예들에서, 샘플 필터 블록들은 타일 버퍼 블록(1112)을 통해 디스플레이 블록들에 결과들을 출력할 수 있다. 특정한 실시예들에서, 샘플 스테퍼(1101)는 쿼드 버퍼 블록들 및 샘플 필터 블록들을 통해 샘플 위치들을 시퀀싱(sequencing)할 수 있다. 샘플 스테퍼(1101)는 판독 동작들을 위해 텍셀들의 어드레스들을 쿼드 버퍼 블록들로 전송할 수 있고 샘플 필터 블록들로 전송되는 데이터에 대한 데이터 포맷을 명시할 수 있다. 샘플 스테퍼(1101)는 샘플 필터 블록들에 필터 가중치들 및 다른 제어를 제공할 수 있다. 특정한 실시예들에서, 시스템은 다수의 유형들의 표면 데이터를 지원할 수 있으며, 그들 중 일부는 샘플 필터 블록들에서 픽셀 당 다수의 주기들의 보간 동작들을 요구할 수 있다.
도 11b는 쿼드 버퍼 블록(예컨대, 도 11a의 1102, 1103, 1104, 1105)에 대한 일 예시적인 다이어그램(1110)을 도시한다. 특정한 실시예들에서, 쿼드 버퍼 블록은 4개의 텍셀 버퍼 블록들(예컨대, 1121, 1122, 1123, 1124), 4개의 쿼드 증분 블록들(예컨대, 1131, 1132, 1133, 1134), 8개의 멀티플렉서들(예컨대, 1125A 내지 H), 데이터 버스, 어드레스 버스 등을 포함할 수 있다. 전체적으로, 4개의 쿼드 버퍼 블록들 중 16개의 텍셀 버퍼 블록들은 4×4 텍셀 어레이의 각각의 위치에 대해 텍셀들을 버퍼링할 수 있다. 특정한 실시예들에서, 각각의 텍셀 버퍼 블록은 동일한 로컬 (U, V) 좌표들을 갖고 동일한 쿼드 버퍼 블록에 저장되는 텍셀들을 저장할 수 있다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 쿼드 버퍼 블록(1102)에 저장된 4×4 텍셀 어레이는 도 11b에 도시된 바와 같은 패턴으로 1121, 1122, 1123, 및 1124의 대응하는 4개의 텍셀 버퍼 블록들에 저장될 수 있다. 텍셀 버퍼 블록(1121)은 A1, A3, A9, A11의 텍셀들을 저장할 수 있고 그들의 각각은 (0, 0)의 로컬 (U, V) 좌표들을 갖는다. 텍셀 버퍼 블록(1122)은 A2, A4, A10, A12의 텍셀들을 저장할 수 있고 그들의 각각은 (1, 0)의 로컬 (U, V) 좌표들을 갖는다. 텍셀 버퍼 블록(1123)은 A5, A7, A13, A15의 텍셀들을 저장할 수 있고 그들의 각각은 (0, 1)의 로컬 (U, V) 좌표들을 갖는다. 텍셀 버퍼 블록(1124)은 A6, A8, A14, A16의 텍셀들을 저장할 수 있고 그들의 각각은 (1, 1)의 로컬 (U, V) 좌표들을 갖는다. 상기 논의된 바와 같이, 이러한 패턴들로 텍셀들을 저장하는 것은 4×4 텍셀 어레이가 16개의 별개의 텍셀 버퍼 블록들에 저장될 그것의 16개의 텍셀들을 갖고, 따라서 한 번의 판독 동작으로 텍셀 버퍼 메모리들로부터 검색되는 것을 허용할 수 있다.
특정한 실시예들에서, 텍셀 데이터는 각각의 32×32 텍셀 영역 내에서 랩어라운드 형태로 텍셀 버퍼들에 저장될 수 있다. 즉, 31로부터 32로 텍셀 U 어드레스를 증가시키는 것은 필터 블록의 텍셀 버퍼들에서 주어진 32×32 텍셀 블록 내의 텍셀 어드레스(0)로 랩 어라운드할 수 있다. 이것은 텍셀의 (U, V) 어드레스 및 32×32 텍셀 영역에 대한 오프셋이 모든 필터 블록들에 대해 동일하게 되는 것을 허용할 수 있고 필터 블록의 정렬되지 않은 32개의 텍셀 폭 버퍼 영역에서 요구되는 그들 텍셀만 로드하는 것을 요구할 수 있다. 특정한 실시예들에서, 디스플레이 엔진은 4×4 대신에 2×2 텍셀 경계들에 대해 판독들을 정렬하거나, 필터 버퍼들의 가변 크기 영역들을 사용하거나, 인접한 타일에 의해 또한 요구되는 하나의 타일로부터 텍셀 데이터를 재사용하는 것을 포함하는 더 복잡한 알고리즘을 사용할 수 있다. 특정한 실시예들에서, 특정 쿼드 버퍼 블록의 텍셀 버퍼 블록들은 (U, V) 좌표들에 대해 동일한 하위 비트를 갖는 텍셀들을 버퍼링할 수 있다. 예를 들면, 텍셀 버퍼 블록(1121)은 U 및 V 어드레스들의 비트(<1>)가 제로이고 U 및 V 어드레스들의 비트(<0>)가 그들의 쿼드 버퍼 블록에 의해 명시되는 텍셀들을 저장할 수 있다. 텍셀 버퍼 블록들에 대한 판독 어드레스는 임의로 정렬된 4×4 블록의 텍셀들의 시작에 텍셀을 명시할 수 있다. 쿼드 증분 블록들(예컨대, 1131, 1132, 1133, 1134)은 블록에 저장된 U 또는 V 어드레스들의 비트(<1>)가 제로이지만 대응하는 판독 어드레스 비트가 1인 경우들을 검출할 수 있다. U 또는 V 어드레스의 나머지가 증가될 수 있어서, 32×32 텍셀 영역 내에서 랩 어라운드한다. 결과적으로, 텍셀 버퍼들은 샘플 필터 블록들에 의해 필요한 텍셀들을 커버하는 4×4 텍셀들의 어떠한 정렬도 어드레스할 수 있다.
특정한 실시예들에서, 쿼드 버퍼 블록 다이어그램(1110)의 우측의 멀티플렉서들(예컨대, 1125E 내지 H)은 각각의 샘플 필터 블록이 액세스할 텍셀 버퍼 블록을 선택하는 것을 허용할 수 있어서 그것이 대응하는 4×4 텍셀 영역에서 각각의 샘플을 쌍선형으로 보간할 수 있게 한다. 단일 쿼드 버퍼 블록 내에서, 각각의 샘플 필터 블록은 U 및 V 어드레스의 비트(<1>)가 제로 또는 1이어야 하는지의 여부를 선택할 수 있다. 이 선택은 각각의 쿼드 필터 블록 내에서 별개로 행해질 수 있어서, 각각의 샘플 필터 블록이 그것이 필요한 2×2의 텍셀들을 얻게 한다. 멀티플렉서는 샘플 스테퍼 블록으로부터 나오는 텍셀 데이터의 비트들을 선택할 수 있다. 쿼드 버퍼 블록 다이어그램의 좌측의 멀티플렉서들(예컨대, 1125A 내지 E)은 우측의 멀티플렉서들과 상이한 기능을 수행할 수 있고 즉, 선택된 텍셀 버퍼 블록으로부터 샘플 스테퍼로 정보를 전송한다. 이것은 샘플 스테퍼가 샘플 필터 시퀀싱을 최적화하는 것을 허용한다.
도 12a는 텍셀 버퍼 블록들(예컨대, 도 11b의 1121, 1122, 1123, 1124)에 대한 일 예시적인 다이어그램(1200)을 도시한다. 특정한 실시예들에서, 텍셀 버퍼 블록은 재 포매터 블록(1201), 512×2 버퍼 유닛(1202), 512×10 버퍼 유닛(1203), 지연 블록(1205), 선택기(1207), 기록 어드레스 버스(1208), 판독 어드레스 버스(1209), 다른 데이터/어드레스 버스들, 등을 포함할 수 있다. 재 포매터 블록(1201)은 제어 블록의 텍셀 메모리에 저장된 바와 같은 포맷들로부터의 텍셀 데이터를 텍셀 버퍼 블록들에서 요구된 바와 같은 데이터 포맷들로 변환할 수 있다. 버퍼 제어기는 각각의 텍셀 버퍼 블록에 어떤 텍셀 데이터가 기록되는지에 기초하여 기록 어드레스를 선택할 수 있다. 샘플 스테퍼 블록(도 11a의 1101)은 각각의 텍셀 버퍼 블록에 대해 쿼드 버퍼 블록에 의해 맞춤화될 수 있는 판독 어드레스를 선택할 수 있다. 버퍼 엔트리의 상위 2개의 비트들은 먼저, 512×2 버퍼 유닛(1202)으로 판독될 수 있고 그 다음, 고정된 지연 후에(예컨대, 데이 블록(1205)에 의해) 하위 10개의 비트들을 512×10 버퍼 유닛(1203)으로 판독한다. 고정된 지연은 샘플 스테퍼가 상위 2개의 비트들을 해석하고 수행될 필요가 있는 보간들의 시퀀스를 결정하는 것을 허용할 수 있다. 마지막으로, 선택기 블록(1207)은 2개의 6 비트 값들을 조립할 수 있고 6 비트 출력 버스(1231)를 통해 거리, 컬러, 또는 가변 알파 값을 보간기들에 전달할 수 있다. 다른 출력 버스(1232)는 보간되지 않을 수 있는 상수 또는 라벨 인덱스를 위해 사용될 수 있다.
도 12b는 텍셀 버퍼 블록들에 대한 예시적인 텍셀 데이터 포맷들(예컨대, 1210, 1211, 1213, 1214)을 도시한다. 특정한 실시예들에서, 텍셀 버퍼 블록들은 텍셀 버퍼 엔트리들 및 저장을 위한 다수의 텍셀 데이터 포맷들을 지원할 수 있다. 16개의 텍셀 버퍼 블록들의 각각은 4×4 텍셀 어레이의 단일 위치에 대한 정보를 저장할 수 있다. 각각의 텍셀 버퍼 블록은 하나의 컬러 채널을 보간하기 위해 요구된 정보를 저장하기 위한 버퍼 유닛들을 포함할 수 있다. 특정한 실시예들에서, 이미지 표면들에 대한 텍셀 데이터는 컬러 성분 및 알파를 포함할 수 있다. 라벨 표면들에 대한 텍셀 데이터는 최적화들을 선택하기 위한 비트들과 함께 거리 성분 및 컬러 인덱스를 포함할 수 있다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 12 비트 텍셀 포맷(1210)은 1 비트 T 성분, 1 비트 S 성분, 6 비트 거리 성분, 및 4 비트 인덱스 성분을 포함할 수 있다. 또 다른 예로서, 12 비트 텍셀 포맷(1211)은 2 비트 모드 성분, 6 비트 컬러 성분, 및 4 비트 알파 성분을 포함할 수 있다. 또 다른 예로서, 12 비트 텍셀 포맷(1211)은 2 비트 모드 성분 및 10 비트 컬러 성분을 포함할 수 있다. 또 다른 예로서, 12 비트 텍셀 포맷(1213)은 2 비트 모드 성분, 8 비트 알파 성분, 및 2 비트 X 성분을 포함할 수 있다. 또 다른 예로서, 24 비트 텍셀 포맷(1214)은 2 비트 모드 성분, 6 비트 저 비트 컬러 성분, 및 저 12 비트들의 4 비트 저 비트 알파 성분을 포함할 수 있으며 2 비트 X 성분, 6 비트 고 비트 컬러 성분, 고 12 비트들의 4 비트 고 비트 알파 성분을 포함할 수 있다. 특정한 실시예들에서, T 및 모드 성분들/필드들은 보간을 최적화하기 위해 재 포매터(도 12a의 1201)에 의해 계산될 수 있고 샘플 스테퍼(도 11a의 1101)에 의해 사용될 수 있다. 특정한 실시예들에서, 이미지 포맷들은 어떤 종류의 표면이 저장되고 있는지에 기초하여 사용될 수 있다. 예를 들면, 라벨 표면들은 하위 비트들에 저장된 컬러 인덱스와 함께 6 비트 거리 포맷(즉, Distance6)을 사용할 수 있다. 또 다른 예로서, 마스크 표면들은 8 비트 알파 포맷(즉, Alpha8)을 사용할 수 있다. 또 다른 예로서, 이미지 표면들은 이미지 표면에 대해 선택된 숫자 정밀도에 의존하여 다른 포맷들 중 하나를 사용할 수 있다.
도 12c는 샘플 필터 블록들(예컨대, 도 11a의 1106, 1107, 1108, 1109)에 대한 일 예시적인 다이어그램(1220)을 도시한다. 특정한 실시예들에서, 샘플 필터 블록은 제 1 보간기(1221), 제 2 보간기(1222), V 보간기(1223), 컬러 선택기(1224), 블렌더 블록(1225), 등을 포함할 수 있다. 샘플 필터 블록은 단일 샘플링 위치에 대한 보간 및 사후 보간 프로세싱을 수행할 수 있다. 보간기들(1221 및 1222)은 (0, 0), (1, 0), (0, 1), 및 (1, 1)의 텍셀 좌표들에 대응하는 텍셀 데이터를 필터 캐시로부터 수신할 수 있다. 보간기들(1221, 1222, 및 1223)은 샘플 스테퍼에 의해 제공된 가중치들을 사용하여 5×5 곱셈기들로 쌍선형 보간을 수행할 수 있다. 특정한 실시예들에서, 디스플레이 엔진은 짧거나 긴 데이터 포맷들(예컨대, 6 비트 데이터 포맷, 12 비트 데이터 포맷)을 보간하는 것에 대한 동작 최적화를 수행하고 데이터를 보간기들로 전송하기 위해 얼마나 많은 메모리 엔트리들 및 주기들이 필요한지를 결정할 수 있다. 각각의 보간기의 출력은 완전한 정밀도로 보간된 결과를 제공할 수 있다. 컬러 선택기 블록(1224)에서 반올림 또는 다른 숫자 변환들이 수행될 수 있다. 보간기들은 아티팩트들이 나타나기 시작하기 전에 약 32배까지 확대를 허용하는 6 비트 필터 가중치들을 사용할 수 있다. 컬러 선택기(1124)는 필터링되는 표면이 이미지 또는 라벨인지의 여부에 의존하여 2가지 작업들을 수행할 수 있다. 이미지들에 대해, 그것은 보간된 컬러 및 알파 값들을 정확한 출력들로 라우팅할 수 있다. 라벨들을 프로세싱할 때, 컬러 선택기(1224)는 부호 있는 거리 보간함수를 컬러로 변환할 수 있다. 이미지들을 프로세싱할 때, 컬러 선택기(1224)는 컬러 및 알파 보간함수들을 분리할 수 있다. 어떠한 알파 보간함수도 없는 경우, 알파는 샘플 스테퍼로부터의 제어 비트들에 의해 선택된 바와 같이 제로 또는 1일 수 있다. 블렌더 블록(1225)은 요구될 때 알파 투명 블렌딩을 수행할 수 있다. 블렌더 블록(1225)은 타일 버퍼 블록을 통해 액세스되는 목적지 컬러 및 알파와 소스 컬러 및 소스 알파를 조합할 수 있다. 2개의 종류들의 블렌딩 기능이 수행될 수 있다: 앞에서 뒤로 또는 뒤에서 앞으로 수행할 수 있는 부가 블렌드 및 오버 블렌드. 즉, 블렌딩은 소스를 그 픽셀 위치에서 현재 값의 뒤 또는 앞인 것으로서 취급할 수 있다.
도 13은 쌍선형 보간을 사용하여 다수의 픽셀 값들을 결정하기 위해 텍셀들의 다수의 그룹들을 병행하여 샘플링하기 위한 일 예시적인 방법(1300)을 도시한다. 방법(1300)은 단계(1310)에서 시작할 수 있고, 여기서 헤드셋 시스템은 신체 착용가능한 컴퓨팅 시스템으로부터 미리 뒤틀린 표면들을 수신할 수 있다. 각각의 미리 뒤틀린 표면은 단일 텍스처 해상도에 의해 표현되는 텍스처 데이터를 가질 수 있다. 특정한 실시예들에서, 신체 착용가능한 컴퓨팅 시스템은 하나 이상의 GPU들 및 스마트 비디오 디코더들을 포함할 수 있다. 특정한 실시예들에서, 미리 뒤틀린 표면들은 신체 착용가능한 컴퓨팅 시스템과 연관된 GPU들 또는 스마트 비디오 디코더들에 의해 생성될 수 있다. 미리 뒤틀린 표면은 신체 착용가능한 컴퓨팅 시스템과 연관된 GPU들의 렌더링 결과들에 기초하여 생성될 수 있으며 기본 객체의 3D 윤곽을 시각적으로 고려할 수 있다. 미리 뒤틀린 표면은 뷰어의 뷰 공간에서 표면의 위치를 나타내는 위치 데이터를 가질 수 있다. 미리 뒤틀린 표면은 뷰어를 향하는 평면 영역으로서 표현될 수 있으며, 이러한 픽셀 필터링은 표면의 상이한 부분들이 뷰어에 대해 상이한 깊이들을 갖는 것처럼 보일 수 있을지라도, 표면 전체에 걸쳐 균일한 텍스처 해상도를 사용하여 수행될 수 있다.
단계(1320)에서, 헤드셋 시스템은 미리 뒤틀린 표면이 화면의 영역(예컨대, 타일 또는 16×16 픽셀들과 같은 픽셀들의 컬렉션)에 대해 보이는지의 여부를 결정할 수 있다. 특정한 실시예들에서, 시스템은 경계 박스를 정의하는 4개의 투사된 광선들이 미리 뒤틀린 표면과 교차하는지의 여부를 결정하기 위해 광선 투사 알고리즘을 사용할 수 있다. 광선들은 뷰어의 현재 시점에 기초하여 투사될 수 있으며, 교차 지점들은 미리 뒤틀린 표면을 더 뒤틀기 위해 헤드셋 시스템의 디스플레이 엔진에 의해 사용될 수 있어서 미리 뒤틀린 표면의 생성 후에 뷰어의 시점에서 임의의 변화를 수용한다. 경계 박스가 표면과 교차하는 경우, 그 표면 및 경계 박스에 대응하는 타일은 타일/표면 쌍으로서 간주될 수 있다(표면이 타일에 대해 보임을 나타냄). 특정한 실시예들에서, 시스템은 유사한 방식으로 다수의 타일/표면 쌍들을 생성할 수 있다. 특정한 실시예들에서, 축소 동작들은 단지 2배의 줌으로 제한될 수 있다.
단계(1330)에서, 시스템은 경계 박스에 의해 교차된 표면의 영역에 기초하여, 표면과 연관된 텍스처 내의 샘플링 지점들을 결정할 수 있다. 예를 들면, 경계 박스가 16×16 픽셀들로 구성된 타일에 대응하는 경우, 시스템은 16×16 샘플링 지점들의 위치들을 결정할 수 있다. 특정한 실시예들에서, 시스템은 16×16 샘플링 지점들로부터 선택된 2×2 샘플링 지점들의 그룹들에 기초하여 순차적으로 필터링을 수행할 수 있다.
단계(1340)에서, 시스템은 샘플링 지점들의 각각의 그룹에 대해, 그들 샘플링 지점들에서 픽셀 값들을 결정하기 위해 필요한 연관된 텍셀들을 결정할 수 있다. 필요한 텍셀들은 미리 결정된 치수(예컨대, 4×4)를 가질 수 있다. 특정한 실시예들에서, 샘플링 지점들 및 텍셀 그리드의 상대적 위치들은 어느 텍셀들이 필요한지를 결정하기 위해 사용될 수 있다. 예를 들면, 2×2 샘플링 지점들의 그룹에 대해, 가장 가까운 4×4 텍셀들이 선택될 수 있다. 특정한 실시예들에서, 시스템은 2×2 샘플링 지점들을 필터링하기 위해 필요한 텍셀들이 4×4 텍셀 영역 내에 있음을 보장하기 위해 2회 축소 제한을 사용할 수 있다. 이 조건은 인접한 샘플링 지점들의 거리들이 텍셀 크기의 2배 미만이거나 그와 같은 한 만족될 수 있다(텍셀 에지 길이에 의해 표시된 바와 같음). 특정한 실시예들에서, 텍셀들은 4×4 텍셀들이 한 번의 판독 동작으로 액세스되는 것을 허용하는 방식으로 텍셀 메모리 블록에 저장될 수 있다. 예를 들면, 4×4 텍셀 어레이는 32 바이트(256 비트들) 메모리 블록에 인터리빙된 패턴으로 저장될 수 있으며 32 바이트 메모리 블록의 콘텐트는 한 번의 판독 동작을 사용하여 병행하여 검색될 수 있다.
단계(1350)에서, 시스템은 단일 판독 동작으로 샘플링 지점 위치들에 대한 픽셀 값들을 결정하기 위해 필요한 텍셀들을 검색할 수 있다. 예를 들면, 시스템은 한 번의 판독 동작을 사용하여 텍셀 메모리로부터 4×4 텍셀 어레이를 병행하여 검색할 수 있다.
단계(1360)에서, 시스템은 검색된 텍셀들에 대해 쌍선형 보간(또는 쌍입방 보간과 같은 임의의 다른 적합한 보간 기술들)을 수행함으로써 샘플링 지점들에 대한 픽셀 값들을 결정할 수 있다. 특정한 실시예들에서, 4개의 2×2 샘플링 지점들에 대한 보간 프로세스는 4개의 샘플 필터 블록들에 의해 병행하여 수행될 수 있다.
특정한 실시예들에서, 컴퓨팅 시스템은 다수의 서브 어레이들을 포함하는 텍셀 어레이로 조직된 다수의 텍셀들을 수신할 수 있다. 시스템은 각각의 서브세트의 텍셀들이 그들의 각각의 서브 어레이들 내에서 동일한 위치를 갖는 텍셀 서브세트들의 수를 결정할 수 있다. 시스템은 텍셀 서브세트들을 다수의 버퍼 블록들에 각각 저장할 수 있으며, 각각의 버퍼 블록은 텍셀 서브세트들의 하나의 텍셀 서브세트를 저장한다. 시스템은 버퍼 블록들 중 상이한 버퍼 블록으로부터 검색되는 샘플링 텍셀 어레이의 각각의 텍셀과 함께 다수의 샘플링 지점들의 픽셀 값들을 병행하여 결정하기 위해 버퍼 블록들로부터 샘플링 텍셀 어레이를 검색할 수 있다. 특정한 실시예들에서, 텍셀 어레이의 서브 어레이들은 텍셀 어레이 내에서 반복된 패턴을 형성할 수 있다. 특정한 실시예들에서, 버퍼 블록들은 별개로 어드레스되고 병행하여 액세스될 수 있다.
특정한 실시예들에서, 버퍼 블록들은 다수의 그룹들로 그룹화될 수 있다. 샘플링 지점의 픽셀 값을 결정하기 위해 사용된 각각의 텍셀은 텍셀 그룹들 중 상이한 그룹으로부터 검색될 수 있다. 특정한 실시예들에서, 텍셀 서브세트들은: 텍셀 어레이 내의 기준 텍셀의 위치를 나타내는 제 1 좌표(u, v)를 가지는 기준 텍셀을 결정하고, (0, 0), (1, 0), (0, 1), 및 (1, 1)과 같은 제 1 좌표들(u, v)의 이진 표현들의 최하위 비트들을 각각 가지는 텍셀들을 포함하는 중간 텍셀 그룹들의 수를 결정하고, 각각의 중간 텍셀 그룹의 각각의 텍셀에 대한 제 2 좌표(x, y)를 결정하며, 각각이 대응하는 중간 텍셀 그룹에 대해 (0, 0), (1, 0), (0, 1), 및 (1, 1)과 같은 제 2 좌표들(x, y)의 이진 표현들의 최하위 비트들을 가지는 텍셀들을 포함하는 텍셀 서브세트들을 결정함으로써 결정될 수 있다.
특정한 실시예들에서, 텍셀 서브세트들은 적어도 16개의 텍셀 서브세트들을 포함할 수 있고 버퍼 블록들은 적어도 16개의 버퍼 블록들을 포함할 수 있다. 특정한 실시예들에서, 서브 어레이들의 각각은 4×4 텍셀 어레이를 포함할 수 있다. 텍셀 서브세트들의 각각은 2×2 텍셀 어레이를 포함할 수 있다. 중간 텍셀 그룹들의 각각은 4×4 텍셀 어레이를 포함할 수 있다. 특정한 실시예들에서, 16개의 텍셀 서브세트들은 4개의 텍셀 그룹들로 조직될 수 있고 샘플링 지점들은 4개의 샘플링 지점들을 포함할 수 있다. 4개의 텍셀 그룹들은 4개의 샘플링 지점들의 픽셀 값들을 각각 병행하여 결정하기 위해 사용될 수 있다. 특정한 실시예들에서, 각각의 픽셀 값은 샘플링 텍셀 어레이의 2×2 텍셀 서브 어레이에 기초하여 결정될 수 있고 2×2 텍셀 서브 어레이의 각각의 텍셀은 4개의 텍셀 그룹들 중 하나로부터 선택될 수 있다. 특정한 실시예들에서, 샘플링 지점들의 픽셀 값들은 샘플링 텍셀 어레이의 텍셀들에 대한 병행 쌍선형 보간들에 기초하여 결정될 수 있다. 각각의 샘플링 지점의 각각의 픽셀 값은 샘플링 텍셀 어레이의 2×2 텍셀 서브 어레이에 기초하여 결정될 수 있다. 특정한 실시예들에서, 샘플링 지점들은 장면의 일부의 2차원 표현에 대한 디스플레이 영역의 교차 영역과 연관될 수 있다. 특정한 실시예들에서, 2차원 표현은 장면의 일부의 3차원 정보를 포함할 수 있고 장면의 일부의 2차원 표현은 디스플레이 영역에서 보일 수 있다. 특정한 실시예들에서, 장면의 일부의 2차원 표현은 단일 텍스처 해상도로 표현될 수 있다. 텍셀 어레이는 단일 텍스처 해상도를 가지는 텍셀들을 포함할 수 있다. 특정한 실시예들에서, 샘플링 텍셀 어레이는 정렬된 텍셀 영역 또는 정렬되지 않은 텍셀 영역과 연관될 수 있다.
특정한 실시예들은 적절한 경우, 도 13의 방법의 하나 이상의 단계들을 반복할 수 있다. 본 발명이 도 13의 방법의 특정한 단계들을 특정한 순서로 발생하는 것으로서 설명하고 도시할지라도, 본 발명은 임의의 적합한 순서로 발생하는 도 13의 방법의 임의의 적합한 단계들을 고려한다. 게다가, 본 발명이 도 13의 방법의 특정한 단계들을 포함하는 쌍선형 보간을 사용하여 다수의 픽셀 값들을 결정하기 위해 텍셀들의 다수의 그룹들을 병행하여 샘플링하기 위한 일 예시적인 방법을 설명하고 도시할지라도, 본 발명은 적절한 경우, 도 13의 방법의 모든, 일부 단계들을 포함하거나 전혀 포함하지 않을 수 있는 임의의 적합한 단계들을 포함하는 쌍선형 보간을 사용하여 다수의 픽셀 값들을 결정하기 위해 텍셀들의 다수의 그룹들을 병행하여 샘플링하기 위한 임의의 적합한 방법을 고려한다. 또한, 본 발명이 도 13의 방법의 특정한 단계들을 실행하는 특정한 구성요소들, 디바이스들, 또는 시스템들을 설명하고 도시할지라도, 본 발명은 도 13의 방법의 임의의 적합한 단계들을 실행하는 임의의 적합한 구성요소들, 디바이스들, 또는 시스템들의 임의의 적합한 조합을 고려한다.
도 14는 일 예시적인 컴퓨터 시스템(1400)을 도시한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템들(1400)은 본 명세서에서 설명되거나 도시된 하나 이상의 방법들의 하나 이상의 단계들을 수행한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템들(1400)은 본 명세서에서 설명되거나 도시된 기능을 제공한다. 특정한 실시예들에서, 하나 이상의 컴퓨터 시스템들(1400)에서 실행되는 소프트웨어는 본 명세서에서 설명되거나 도시된 하나 이상의 방법들의 하나 이상의 단계들을 수행하거나 본 명세서에서 설명되거나 도시된 기능을 제공한다. 특정한 실시예들은 하나 이상의 컴퓨터 시스템들(1400)의 하나 이상의 부분들을 포함한다. 본 명세서에서, 컴퓨터 시스템에 대한 참조는 적절한 경우, 컴퓨팅 디바이스를 포함할 수 있으며, 그 반대도 마찬가지이다. 게다가, 컴퓨터 시스템에 대한 참조는 적절한 경우, 하나 이상의 컴퓨터 시스템들을 포함할 수 있다.
본 발명은 임의의 적합한 수의 컴퓨터 시스템들(1400)을 고려한다. 본 발명은 임의의 적합한 물리적 형태를 취하는 컴퓨터 시스템(1400)을 고려한다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 컴퓨터 시스템(1400)은 내장된 컴퓨터 시스템, 시스템 온 칩(SOC), 단일 보드 컴퓨터 시스템(SBC)(예를 들면, 컴퓨터 온 모듈(COM) 또는 시스템 온 모듈(SOM)과 같음), 데스크탑 컴퓨터 시스템, 랩탑 또는 노트북 컴퓨터 시스템, 대화형 키오스크, 메인프레임, 컴퓨터 시스템들의 메쉬, 모바일 전화, 개인 휴대용 정보 단말기(PDA), 서버, 태블릿 컴퓨터 시스템, 증강/가상 현실 디바이스, 또는 그들 중 2개 이상의 조합일 수 있다. 적절한 경우, 컴퓨터 시스템(1400)은 하나 이상의 컴퓨터 시스템들(1400)을 포함할 수 있거나; 단일 또는 분산될 수 있거나; 다수의 위치들에 걸쳐 있을 수 있거나; 다수의 기계들에 걸쳐 있을 수 있거나; 다수의 데이터 센터들에 걸쳐 있을 수 있거나; 하나 이상의 네트워크들에 하나 이상의 클라우드 구성요소들을 포함시킬 수 있는 클라우드에 상주할 수 있다. 적절한 경우, 하나 이상의 컴퓨터 시스템들(1400)은 본 명세서에서 설명되거나 도시된 하나 이상의 방법들의 하나 이상의 단계들을 실질적인 공간적 또는 시간적 제한 없이 수행할 수 있다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 하나 이상의 컴퓨터 시스템들(1400)은 본 명세서에서 설명되거나 도시된 하나 이상의 방법들의 하나 이상의 단계들을 실시간 또는 배치 모드로 수행할 수 있다. 하나 이상의 컴퓨터 시스템들(1400)은 적절한 경우, 본 명세서에서 설명되거나 도시된 하나 이상의 방법들의 하나 이상의 단계들을 상이한 시간들에서 또는 상이한 위치들에서 수행할 수 있다.
특정한 실시예들에서, 컴퓨터 시스템(1400)은 프로세서(1402), 메모리(1404), 저장장치(1406), 입력/출력(I/O) 인터페이스(1408), 통신 인터페이스(1410), 및 버스(1412)를 포함한다. 본 발명이 특정한 배열로 특정한 수의 특정한 구성요소들을 가지는 특정한 컴퓨터 시스템을 설명하고 도시할지라도, 본 발명은 임의의 적합한 배열로 임의의 적합한 수의 임의의 적합한 구성요소들을 가지는 임의의 적합한 컴퓨터 시스템을 고려한다.
특정한 실시예들에서, 프로세서(1402)는 컴퓨터 프로그램을 구성하기 위한 지시들과 같은, 지시들을 실행하기 위한 하드웨어를 포함한다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 지시들을 실행하기 위해, 프로세서(1402)는 내부 레지스터, 내부 캐시, 메모리(1404), 또는 저장장치(1406)로부터 지시들을 검색(또는 인출)하고; 그들을 디코딩하고 실행하며; 그 다음, 하나 이상의 결과들을 내부 레지스터, 내부 캐시, 메모리(1404), 또는 저장장치(1406)에 기록할 수 있다. 특정한 실시예들에서, 프로세서(1402)는 데이터, 지시들, 또는 어드레스들을 위한 하나 이상의 내부 캐시들을 포함할 수 있다. 본 발명은 적절한 경우, 임의의 적합한 수의 임의의 적합한 내부 캐시들을 포함하는 프로세서(1402)를 고려한다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 프로세서(1402)는 하나 이상의 지시 캐시들, 하나 이상의 데이터 캐시들, 및 하나 이상의 변환 색인 버퍼(translation lookaside buffer; TLB)들을 포함할 수 있다. 지시 캐시들에서의 지시들은 메모리(1404) 또는 저장장치(1406)에서의 지시들의 카피들일 수 있고, 지시 캐시들은 프로세서(1402)에 의한 그들 지시들의 검색의 속도를 높일 수 있다. 데이터 캐시들에서의 데이터는 동작할 프로세서(1402)에서 실행되는 지시들을 위한 메모리(1404) 또는 저장장치(1406)에서의 데이터; 프로세서(1402)에서 실행되는 후속 지시들에 의해 액세스하기 위해 또는 메모리(1404) 또는 저장장치(1406)에 기록하기 위해 프로세서(1402)에서 실행된 이전 지시들의 결과들; 또는 다른 적합한 데이터의 카피들일 수 있다. 데이터 캐시들은 프로세서(1402)에 의한 판독 또는 기록 동작들의 속도를 높일 수 있다. TLB들은 프로세서(1402)를 위한 가상 어드레스 변환의 속도를 높일 수 있다. 특정한 실시예들에서, 프로세서(1402)는 데이터, 지시들, 또는 어드레스들을 위한 하나 이상의 내부 레지스터들을 포함할 수 있다. 본 발명은 적절한 경우, 임의의 적합한 수의 임의의 적합한 내부 레지스터들을 포함하는 프로세서(1402)를 고려한다. 적절한 경우, 프로세서(1402)는 하나 이상의 산술 논리 유닛(ALU)들을 포함하거나; 멀티 코어 프로세서일 수 있거나; 하나 이상의 프로세서들(1402)을 포함할 수 있다. 본 발명이 특정한 프로세서를 설명하고 도시할지라도, 본 발명은 임의의 적합한 프로세서를 고려한다.
특정한 실시예들에서, 메모리(1404)는 프로세서(1402)가 실행할 지시들 또는 프로세서(1402)가 동작할 데이터를 저장하기 위한 메인 메모리를 포함한다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 컴퓨터 시스템(1400)은 저장장치(1406) 또는 또 다른 소스(예를 들면, 또 다른 컴퓨터 시스템(1400)과 같음)로부터 메모리(1404)로 지시들을 로드할 수 있다. 프로세서(1402)는 그 다음, 메모리(1404)로부터 내부 레지스터 또는 내부 캐시로 지시들을 로드할 수 있다. 지시들을 실행하기 위해, 프로세서(1402)는 내부 레지스터 또는 내부 캐시로부터 지시들을 검색하고 그들을 디코딩할 수 있다. 지시들의 실행 동안 또는 이후에, 프로세서(1402)는 하나 이상의 결과들(중간 또는 최종 결과들일 수 있음)을 내부 레지스터 또는 내부 캐시에 기록할 수 있다. 프로세서(1402)는 그 다음, 그들 결과들 중 하나 이상을 메모리(1404)에 기록할 수 있다. 특정한 실시예들에서, 프로세서(1402)는 하나 이상의 내부 레지스터들 또는 내부 캐시들에서 또는 메모리(1404)(저장장치(1406)와는 대조적으로 또는 어딘가의)에서 단지 지시들을 실행하고 하나 이상의 내부 레지스터들 또는 내부 캐시들에서 또는 메모리(1404)(저장장치(1406)와는 대조적으로 또는 어딘가의)에서 단지 데이터에 따라 동작한다. 하나 이상의 메모리 버스들(어드레스 버스 및 데이터 버스를 각각의 포함할 수 있음)은 프로세서(1402)를 메모리(1404)에 결합할 수 있다. 버스(1412)는 하기에 설명된 바와 같이, 하나 이상의 메모리 버스들을 포함할 수 있다. 특정한 실시예들에서, 하나 이상의 메모리 관리 유닛(MMU)들은 프로세서(1402)와 메모리(1404) 사이에 상주하고 프로세서(1402)에 의해 요청된 메모리(1404)에 대한 액세스들을 용이하게 한다. 특정한 실시예들에서, 메모리(1404)는 랜덤 액세스 메모리(RAM)를 포함한다. 이 RAM은 적절한 경우, 휘발성 메모리일 수 있다. 적절한 경우, 이 RAM은 동적 RAM(DRAM) 또는 정적 RAM(SRAM)일 수 있다. 게다가, 적절한 경우, 이 RAM은 단일 포트되거나 다중 포트된 RAM일 수 있다. 본 발명은 임의의 적합한 RAM을 고려한다. 메모리(1404)는 적절한 경우, 하나 이상의 메모리들(1404)을 포함할 수 있다. 본 발명이 특정한 메모리를 설명하고 도시할지라도, 본 발명은 임의의 적합한 메모리를 고려한다.
특정한 실시예들에서, 저장장치(1406)는 데이터 또는 지시들을 위한 대용량 저장장치를 포함한다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 저장장치(1406)는 하드 디스크 드라이브(HDD), 플로피 디스크 드라이브, 플래시 메모리, 광 디스크, 광 자기 디스크, 자기 테이프, 또는 범용 직렬 버스(Universal Serial Bus; USB) 드라이브 또는 그들 중 2개 이상의 조합을 포함할 수 있다. 저장장치(1406)는 적절한 경우, 탈착가능하거나 탈착가능하지 않은(또는 고정된) 매체들을 포함할 수 있다. 저장장치(1406)는 적절한 경우, 컴퓨터 시스템(1400)의 내부 또는 외부에 있을 수 있다. 특정한 실시예들에서, 저장장치(1406)는 비 휘발성, 고체 상태 메모리이다. 특정한 실시예들에서, 저장장치(1406)는 판독 전용 메모리(ROM)를 포함한다. 적절한 경우, 이 ROM은 마스크 프로그래밍된 ROM, 프로그래밍가능한 ROM(PROM), 소거가능한 PROM(EPROM), 전기적으로 소거가능한 PROM(EEPROM), 전기적으로 개조가능한 ROM(EAROM), 또는 플래시 메모리 또는 그들 중 2개 이상의 조합을 포함한다. 본 발명은 임의의 적합한 물리적 형태를 취하는 대용량 저장장치(1406)를 고려한다. 저장장치(1406)는 적절한 경우, 프로세서(1402)와 저장장치(1406) 사이의 통신을 용이하게 하는 하나 이상의 저장 제어 유닛들을 포함할 수 있다. 적절한 경우, 저장장치(1406)는 하나 이상의 저장장치들(1406)을 포함할 수 있다. 본 발명이 특정한 저장장치를 설명하고 도시할지라도, 본 발명은 임의의 적합한 저장장치를 고려한다.
특정한 실시예들에서, I/O 인터페이스(1408)는 컴퓨터 시스템(1400)과 하나 이상의 I/O 디바이스들 사이의 통신을 위한 하나 이상의 인터페이스들을 제공하는 하드웨어, 소프트웨어, 또는 둘 모두를 포함한다. 컴퓨터 시스템(1400)은 적절한 경우, 이들 I/O 디바이스들 중 하나 이상을 포함할 수 있다. 이들 I/O 디바이스들 중 하나 이상은 사람과 컴퓨터 시스템(1400) 사이의 통신을 가능하게 할 수 있다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, I/O 디바이스는 키보드, 키패드, 마이크로폰, 모니터, 마우스, 프린터, 스캐너, 스피커, 고정형 카메라, 스타일러스, 태블릿, 터치 화면, 트랙볼, 비디오 카메라, 또 다른 적합한 I/O 디바이스 또는 이들 중 2개 이상의 조합을 포함할 수 있다. I/O 디바이스는 하나 이상의 센서들을 포함할 수 있다. 본 발명은 임의의 적합한 I/O 디바이스들 및 그들을 위한 임의의 적합한 I/O 인터페이스들(1408)을 고려한다. 적절한 경우, I/O 인터페이스(1408)는 프로세서(1402)가 이들 I/O 디바이스들 중 하나 이상을 구동하는 것을 가능하게 하는 하나 이상의 디바이스 또는 소프트웨어 구동기들을 포함할 수 있다. I/O 인터페이스(1408)는 적절한 경우, 하나 이상의 I/O 인터페이스들(1408)을 포함할 수 있다. 본 발명이 특정한 I/O 인터페이스를 설명하고 도시할지라도, 본 발명은 임의의 적합한 I/O 인터페이스를 고려한다.
특정한 실시예들에서, 통신 인터페이스(1410)는 컴퓨터 시스템(1400)과 하나 이상의 다른 컴퓨터 시스템들(1400) 또는 하나 이상의 네트워크들 사이의 통신(예를 들면, 패킷 기반 통신과 같음)을 위한 하나 이상의 인터페이스들을 제공하는 하드웨어, 소프트웨어, 또는 둘 모두를 포함한다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 통신 인터페이스(1410)는 이더넷 또는 다른 유선 기반 네트워크와 통신하기 위한 네트워크 인터페이스 제어기(NIC) 또는 네트워크 어댑터 또는 와이파이 네트워크와 같은, 무선 네트워크와 통신하기 위한 무선 NIC(WNIC) 또는 무선 어댑터를 포함할 수 있다. 본 발명은 임의의 적합한 네트워크 및 그것을 위한 임의의 적합한 통신 인터페이스(1410)를 고려한다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 컴퓨터 시스템(1400)은 애드 혹 네트워크, 개인 통신망(PAN), 근거리 통신망(LAN), 광역 통신망(WAN), 도시권 통신망(MAN), 또는 인터넷의 하나 이상의 부분들 또는 그들 중 2개 이상의 조합과 통신할 수 있다. 이들 네트워크들 중 하나 이상의 하나 이상의 부분들은 유선 또는 무선일 수 있다. 일례로서, 컴퓨터 시스템(1400)은 무선 PAN(WPAN)(예를 들면, 블루투스 WPAN과 같음), 와이파이 네트워크, WI-MAX 네트워크, 셀룰러 전화 네트워크(예를 들면, 모바일 통신을 위한 글로벌 시스템(Global System for Mobile Communications; GSM) 네트워크와 같음), 또는 다른 적합한 무선 네트워크 또는 이들 중 2개 이상의 조합과 통신할 수 있다. 컴퓨터 시스템(1400)은 적절한 경우, 이들 네트워크들 중 임의의 것을 위한 임의의 적합한 통신 인터페이스(1410)를 포함할 수 있다. 통신 인터페이스(1410)는 적절한 경우, 하나 이상의 통신 인터페이스들(1410)을 포함할 수 있다. 본 발명이 특정한 통신 인터페이스를 설명하고 도시할지라도, 본 발명은 임의의 적합한 통신 인터페이스를 고려한다.
특정한 실시예들에서, 버스(1412)는 컴퓨터 시스템(1400)의 구성요소들을 서로 결합하는 하드웨어, 소프트웨어, 또는 둘 모두를 포함한다. 일례로서 그리고 제한에 의한 것이 아닌 것으로서, 버스(1412)는 가속화된 그래픽 포트(Accelerated Graphics Port; AGP) 또는 다른 그래픽 버스, 향상된 산업 표준 아키텍처(Enhanced Industry Standard Architecture; EISA) 버스, FSB(front-side bus), 하이퍼트랜스포트(HYPERTRANSPORT)(HT) 상호연결부, 산업 표준 아키텍처(ISA) 버스, 인피니밴드 상호연결부, LPC(low-pin-count) 버스, 메모리 버스, 마이크로 채널 아키텍처(Micro Channel Architecture; MCA) 버스, 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스, PCI-Express(PCIe) 버스, SATA(serial advanced technology attachment) 버스, VLB(Video Electronics Standards Association local) 버스, 또는 또 다른 적합한 버스 또는 이들 중 2개 이상의 조합을 포함할 수 있다. 버스(1412)는 적절한 경우, 하나 이상의 버스들(1412)을 포함할 수 있다. 본 발명이 특정한 버스를 설명하고 도시할지라도, 본 발명은 임의의 적합한 버스 또는 상호연결부를 고려한다.
본 명세서에서, 컴퓨터 판독가능한 비 일시적 저장 매체 또는 매체들은 적절한 경우, 하나 이상의 반도체 기반 또는 다른 집적 회로들(ICs)(예를 들면, 필드 프로그래밍가능한 게이트 어레이들(FPGAs) 또는 주문형 반도체들(ASICs)과 같음), 하드 디스크 드라이브들(HDDs), 하이브리드 하드 드라이브들(HHDs), 광 디스크들, 광 디스크 드라이브들(ODDs), 광 자기 디스크들, 광 자기 드라이브들, 플로피 디스켓들, 플로피 디스크 드라이브들(FDDs), 자기 테이프들, 고체 상태 드라이브들(SSDs), RAM 드라이브들, 보안 디지털 카드들 또는 드라이브들, 임의의 다른 적합한 컴퓨터 판독가능한 비 일시적 저장 매체들, 또는 이들 중 2개 이상의 임의의 적합한 조합을 포함할 수 있다. 컴퓨터 판독가능한 비 일시적 저장 매체는 적절한 경우, 휘발성, 비 휘발성, 또는 휘발성 및 비 휘발성의 조합일 수 있다.
본 명세서에서, "또는"은 명확하게 다르게 나타내거나 맥락에 의해 다르게 나타내지 않는 한, 포괄적이고 배타적이지 않다. 따라서, 본 명세서에서, "A 또는 B"는 명확하게 다르게 나타내거나 맥락에 의해 다르게 나타내지 않는 한, "A, B, 또는 둘 모두"를 의미한다. 게다가, "및"은 명확하게 다르게 나타내거나 맥락에 의해 다르게 나타내지 않는 한, 공동 및 몇몇 둘 모두이다. 따라서, 본 명세서에서, "A 및 B"는 명확하게 다르게 나타내거나 맥락에 의해 다르게 나타내지 않는 한, "A 및 B, 공동으로 또는 별개로"를 의미한다.
본 발명의 범위는 당업자가 이해할 본 명세서에서 설명되고 도시된 예시적인 실시예들에 대한 모든 변경들, 교체들, 변형들, 개조들, 및 수정들을 포함한다. 본 발명의 범위는 본 명세서에서 설명되고 도시된 예시적인 실시예들에서 제한되지 않는다. 게다가, 본 발명이 본 명세서에서의 각각의 실시예들을 특정한 구성요소들, 요소들, 피쳐, 기능들, 동작들, 또는 단계들을 포함하는 것으로서 설명하고 도시할지라도, 이들 실시예들 중 임의의 것은 당업자가 이해할 본 명세서의 어딘가에서 설명되고 도시된 구성요소들, 요소들, 피쳐들, 기능들, 동작들, 또는 단계들 중 임의의 것의 임의의 조합 또는 순열을 포함할 수 있다. 또한, 첨부된 청구항들에서 특정한 기능을 수행하도록 적응되거나, 배열되거나, 수행할 수 있거나, 구성되거나, 가능하게 되거나, 동작가능하거나, 동작하는 장치 또는 시스템 또는 장치 또는 시스템의 구성요소에 대한 참조는, 그 장치, 시스템, 또는 구성요소가 그렇게 적응되거나, 배열되거나, 할 수 있거나, 구성되거나, 가능하게 되거나, 동작가능하거나, 동작하는 한, 그것 또는 그 특정한 기능이 활성화되든, 턴 온되든, 또는 잠금해제되든 아니든 그 장치, 시스템, 구성요소를 포함한다. 부가적으로, 본 발명이 특정한 실시예들을 특정한 장점들을 제공하는 것으로서 설명하거나 도시할지라도, 특정한 실시예들은 이들 장점들을 전혀 제공하지 않거나, 그들의 일부, 또는 전부를 제공할 수 있다.

Claims (14)

  1. 컴퓨팅 시스템에 의한 방법으로서:
    복수의 서브 어레이들을 포함하는 텍셀(texel) 어레이로 조직된 복수의 텍셀들을 수신하는 단계;
    복수의 텍셀 서브세트들을 결정하는 단계로서, 각각의 서브세트의 텍셀들은 상기 텍셀들의 각각의 서브 어레이들 내에서 동일한 위치를 갖는, 상기 결정하는 단계;
    상기 복수의 텍셀 서브세트들을 복수의 버퍼 블록들에 각각 저장하는 단계로서, 각각의 버퍼 블록은 상기 복수의 텍셀 서브세트들 중 하나의 텍셀 서브세트를 저장하는, 상기 저장하는 단계; 및
    복수의 샘플링 지점들의 픽셀 값들을 병행하여 결정하기 위해 상기 복수의 버퍼 블록들로부터 샘플링 텍셀 어레이를 검색하는 단계로서, 상기 샘플링 텍셀 어레이의 각각의 텍셀은 상기 복수의 버퍼 블록들 중 상이한 버퍼 블록으로부터 검색되는, 상기 검색하는 단계를 포함하는, 컴퓨팅 시스템에 의한 방법.
  2. 제 1 항에 있어서, 상기 복수의 텍셀 서브세트들은:
    상기 텍셀 어레이 내의 기준 텍셀의 위치를 나타내는 제 1 좌표(u, v)를 가지는 상기 기준 텍셀을 결정하고;
    (0, 0), (1, 0), (0, 1), 및 (1, 1)과 같은 제 1 좌표들(u, v)의 이진 표현들의 최하위 비트들을 가지는 텍셀들을 포함하는 복수의 중간 텍셀 그룹들을 각각 결정하고;
    각각의 중간 텍셀 그룹의 각각의 텍셀에 대한 제 2 좌표(x, y)를 결정하고;
    각각이 대응하는 중간 텍셀 그룹에 대해 (0, 0), (1, 0), (0, 1), 및 (1, 1)과 같은 제 2 좌표들(x, y)의 이진 표현들의 최하위 비트들을 가지는 텍셀들을 포함하는 상기 복수의 텍셀 서브세트들을 결정함으로써 결정되는, 컴퓨팅 시스템에 의한 방법.
  3. 제 5 항에 있어서, 상기 복수의 텍셀 서브세트들은 16개의 텍셀 서브세트들을 포함하고, 상기 복수의 버퍼 블록들은 16개의 버퍼 블록들을 포함하는, 컴퓨팅 시스템에 의한 방법.
  4. 제 6 항에 있어서, 상기 16개의 텍셀 서브세트들은 4개의 텍셀 그룹들로 조직되고, 상기 복수의 샘플링 지점들은 4개의 샘플링 지점들을 포함하며, 상기 4개의 텍셀 그룹들은 상기 4개의 샘플링 지점들의 픽셀 값들을 병행하여 결정하기 위해 각각 사용되는, 컴퓨팅 시스템에 의한 방법.
  5. 제 7 항에 있어서, 각각의 픽셀 값은 상기 샘플링 텍셀 어레이의 2×2 텍셀 서브 어레이에 기초하여 결정되고, 상기 2×2 텍셀 서브 어레이의 각각의 텍셀은 상기 4개의 텍셀 그룹들 중 하나로부터 선택되는, 컴퓨팅 시스템에 의한 방법.
  6. 제 1 항에 있어서, 상기 복수의 샘플링 지점들은 장면의 일부의 2차원 표현에 대한 디스플레이 영역의 교차 영역과 연관되는, 컴퓨팅 시스템에 의한 방법.
  7. 제 9 항에 있어서, 상기 2차원 표현은 상기 장면의 일부의 3차원 정보를 포함하고, 상기 장면의 일부의 2차원 표현은 상기 디스플레이 영역에서 보이는, 컴퓨팅 시스템에 의한 방법.
  8. 제 9 항에 있어서, 상기 장면의 일부의 2차원 표현은 단일 텍스처 해상도로 표현되고, 상기 텍셀 어레이는 상기 단일 텍스처 해상도를 가지는 텍셀들을 포함하는, 컴퓨팅 시스템에 의한 방법.
  9. 제 1 항에 있어서, 상기 샘플링 텍셀 어레이는 정렬된 텍셀 영역 또는 정렬되지 않은 텍셀 영역과 연관되는, 컴퓨팅 시스템에 의한 방법.
  10. 소프트웨어를 포함하는 하나 이상의 컴퓨터 판독가능한 비 일시적 저장 매체에 있어서,
    상기 소프트웨어는 실행될 때:
    복수의 서브 어레이들을 포함하는 텍셀 어레이로 조직된 복수의 텍셀들을 수신하는 것;
    복수의 텍셀 서브세트들을 결정하는 것으로서, 각각의 서브세트의 텍셀들은 상기 텍셀들의 각각의 서브 어레이들 내에서 동일한 위치를 갖는, 상기 복수의 텍셀 서브세트들을 결정하는 것;
    상기 복수의 텍셀 서브세트들을 복수의 버퍼 블록들에 각각 저장하는 것으로서, 각각의 버퍼 블록은 상기 복수의 텍셀 서브세트들 중 하나의 텍셀 서브세트를 저장하는, 상기 복수의 텍셀 서브세트들을 복수의 버퍼 블록들에 각각 저장하는 것; 및
    복수의 샘플링 지점들의 픽셀 값들을 병행하여 결정하기 위해 상기 복수의 버퍼 블록들로부터 샘플링 텍셀 어레이를 검색하는 것으로서, 상기 샘플링 텍셀 어레이의 각각의 텍셀은 상기 복수의 버퍼 블록들 중 상이한 버퍼 블록으로부터 검색되는, 상기 샘플링 텍셀 어레이를 검색하는 것을 실행하도록 동작가능한, 하나 이상의 컴퓨터 판독가능한 비 일시적 저장 매체.
  11. 하나 이상의 프로세서들; 및
    상기 프로세서들 중 하나 이상에 결합되고 지시들을 포함하는 하나 이상의 컴퓨터 판독가능한 비 일시적 저장 매체들을 포함하하는 시스템으로서,
    상기 지시들은 상기 프로세서들 중 하나 이상에 의해 실행될 때 상기 시스템으로 하여금:
    복수의 서브 어레이들을 포함하는 텍셀 어레이로 조직된 복수의 텍셀들을 수신하는 것;
    복수의 텍셀 서브세트들을 결정하는 것으로서, 각각의 서브세트의 텍셀들은 상기 텍셀들의 각각의 서브 어레이들 내에서 동일한 위치를 갖는, 상기 복수의 텍셀 서브세트들을 결정하는 것;
    상기 복수의 텍셀 서브세트들을 복수의 버퍼 블록들에 각각 저장하는 것으로서, 각각의 버퍼 블록은 상기 복수의 텍셀 서브세트들 중 하나의 텍셀 서브세트를 저장하는, 상기 복수의 텍셀 서브세트들을 복수의 버퍼 블록들에 각각 저장하는 것; 및
    복수의 샘플링 지점들의 픽셀 값들을 병행하여 결정하기 위해 상기 복수의 버퍼 블록들로부터 샘플링 텍셀 어레이를 검색하는 것으로서, 상기 샘플링 텍셀 어레이의 각각의 텍셀은 상기 복수의 버퍼 블록들 중 상이한 버퍼 블록으로부터 검색되는, 상기 샘플링 텍셀 어레이를 검색하는 것을 실행하게 하도록 동작가능한, 시스템.
  12. 제 1 항, 제 10 항 또는 제 11 항 중 어느 한 항에 있어서,
    상기 복수의 서브 어레이들은 상기 텍셀 어레이 내에서 반복된 패턴을 형성하는, 방법, 하나 이상의 컴퓨터 판독가능한 비 일시적 저장 매체들 또는 시스템.
  13. 제 1 항, 제 10 항 또는 제 11 항 중 어느 한 항에 있어서,
    상기 복수의 버퍼 블록들의 각각은 별개로 어드레스되고 병행하여 액세스되는, 방법, 하나 이상의 컴퓨터 판독가능한 비 일시적 저장 매체들 또는 시스템.
  14. 제 1 항, 제 10 항 또는 제 11 항 중 어느 한 항에 있어서,
    상기 복수의 버퍼 블록들은 복수의 그룹들로 그룹화되고, 샘플링 지점의 픽셀 값을 결정하기 위해 사용된 각각의 텍셀은 상기 복수의 그룹들 중 상이한 그룹으로부터 검색되는, 방법, 하나 이상의 컴퓨터 판독가능한 비 일시적 저장 매체들 또는 시스템.
KR1020217015175A 2018-11-02 2019-10-24 병행 텍스처 샘플링 KR20210087043A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862755281P 2018-11-02 2018-11-02
US62/755,281 2018-11-02
US16/591,520 2019-10-02
US16/591,520 US11244492B2 (en) 2018-11-02 2019-10-02 Parallel texture sampling
PCT/US2019/057792 WO2020092110A1 (en) 2018-11-02 2019-10-24 Parallel texture sampling

Publications (1)

Publication Number Publication Date
KR20210087043A true KR20210087043A (ko) 2021-07-09

Family

ID=70458931

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217015175A KR20210087043A (ko) 2018-11-02 2019-10-24 병행 텍스처 샘플링

Country Status (5)

Country Link
US (2) US11244492B2 (ko)
JP (1) JP2022504892A (ko)
KR (1) KR20210087043A (ko)
CN (1) CN113302658A (ko)
WO (1) WO2020092110A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7392105B2 (ja) * 2019-07-28 2023-12-05 グーグル エルエルシー 没入型ビデオコンテンツをフォービエイテッドメッシュを用いてレンダリングするための方法、システム、および媒体
US11132831B1 (en) 2020-03-02 2021-09-28 Qualcomm Incorporated Methods and apparatus for efficient multi-view rasterization
US11823318B2 (en) * 2021-06-04 2023-11-21 Nvidia Corporation Techniques for interleaving textures
US11640699B2 (en) * 2021-08-06 2023-05-02 Meta Platforms Technologies, Llc Temporal approximation of trilinear filtering

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987567A (en) * 1996-09-30 1999-11-16 Apple Computer, Inc. System and method for caching texture map information
US6304268B1 (en) 1997-06-26 2001-10-16 S3 Graphics Co., Ltd. Trilinear texture filtering of two levels of detail based on a single level of detail
US7050063B1 (en) 1999-02-11 2006-05-23 Intel Corporation 3-D rendering texture caching scheme
US6563507B1 (en) * 1999-09-22 2003-05-13 Sony Corporation Storage circuit control device and graphic computation device
TW459206B (en) * 2000-03-17 2001-10-11 Silicon Integrated Sys Corp Texture mapping cache connection device and method
US6924811B1 (en) * 2000-11-13 2005-08-02 Nvidia Corporation Circuit and method for addressing a texture cache
US6853373B2 (en) * 2001-04-25 2005-02-08 Raindrop Geomagic, Inc. Methods, apparatus and computer program products for modeling three-dimensional colored objects
US6819324B2 (en) 2002-03-11 2004-11-16 Sun Microsystems, Inc. Memory interleaving technique for texture mapping in a graphics system
US6906720B2 (en) * 2002-03-12 2005-06-14 Sun Microsystems, Inc. Multipurpose memory system for use in a graphics system
EP1700272A2 (en) * 2003-12-29 2006-09-13 Intel Corporation Method and mechanism for programmable filtering of texture map data in 3d graphics subsystems
KR101110624B1 (ko) * 2004-12-15 2012-02-16 삼성전자주식회사 그래픽 처리 기능을 갖는 메모리 컨트롤러
US8154564B2 (en) * 2008-05-21 2012-04-10 Advanced Micro Devices, Inc. Dynamically configurable bilinear filtering system
ES2635540T3 (es) * 2009-11-24 2017-10-04 Telefonaktiebolaget Lm Ericsson (Publ) Sistema y método de descodificación utilizable en bloques de elementos de textura codificada
US9483843B2 (en) 2014-01-13 2016-11-01 Transgaming Inc. Method and system for expediting bilinear filtering
JP2015200915A (ja) 2014-04-03 2015-11-12 ヤマハ株式会社 キャッシュ装置、および画像処理装置
KR20160032597A (ko) * 2014-09-16 2016-03-24 삼성전자주식회사 텍스쳐를 처리하는 방법 및 장치
US10339052B2 (en) * 2015-03-11 2019-07-02 Centileo Llc Massive access request for out-of-core textures by a parallel processor with limited memory
US10593095B2 (en) * 2015-06-12 2020-03-17 Intel Corporation Facilitating increased precision in mip-mapped stitched textures for graphics computing devices
US11023993B2 (en) * 2015-06-23 2021-06-01 Nxp Usa, Inc. Apparatus and method for verifying fragment processing related data in graphics pipeline processing
US9659402B2 (en) * 2015-06-26 2017-05-23 Intel Corporation Filtering multi-sample surfaces
GB2555633B (en) * 2016-11-07 2020-02-26 Advanced Risc Mach Ltd Updating data stored in a memory
US10255655B1 (en) * 2017-06-16 2019-04-09 Apple Inc. Serial pixel processing with storage for overlapping texel data

Also Published As

Publication number Publication date
WO2020092110A1 (en) 2020-05-07
JP2022504892A (ja) 2022-01-13
US11893676B2 (en) 2024-02-06
US20200143580A1 (en) 2020-05-07
US11244492B2 (en) 2022-02-08
US20220180590A1 (en) 2022-06-09
CN113302658A (zh) 2021-08-24

Similar Documents

Publication Publication Date Title
KR101923562B1 (ko) 가변 렌더링 및 래스터화 파라미터 하에서 가변 뷰포트에 대하여 오브젝트를 효율적으로 리렌더링하는 방법
US11640691B2 (en) Display engine for post-rendering processing
KR20210087043A (ko) 병행 텍스처 샘플링
US11170577B2 (en) Generating and modifying representations of objects in an augmented-reality or virtual-reality scene
US11862128B2 (en) Systems and methods for foveated rendering
CN111698463A (zh) 使用神经网络进行视图合成
US10325403B2 (en) Image based rendering techniques for virtual reality
US11222396B2 (en) Texture memory storage
US20210090322A1 (en) Generating and Modifying Representations of Objects in an Augmented-Reality or Virtual-Reality Scene
US20230237730A1 (en) Memory structures to support changing view direction