KR102669956B1 - 그래픽 처리 - Google Patents

그래픽 처리 Download PDF

Info

Publication number
KR102669956B1
KR102669956B1 KR1020190054052A KR20190054052A KR102669956B1 KR 102669956 B1 KR102669956 B1 KR 102669956B1 KR 1020190054052 A KR1020190054052 A KR 1020190054052A KR 20190054052 A KR20190054052 A KR 20190054052A KR 102669956 B1 KR102669956 B1 KR 102669956B1
Authority
KR
South Korea
Prior art keywords
region
sampling
data elements
rendered
output
Prior art date
Application number
KR1020190054052A
Other languages
English (en)
Other versions
KR20190129013A (ko
Inventor
안드레 로에베 셀빅
사무엘 마틴
피터 윌리엄 해리스
제이콥 악셀 프라이스
Original Assignee
에이알엠 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20190129013A publication Critical patent/KR20190129013A/ko
Application granted granted Critical
Publication of KR102669956B1 publication Critical patent/KR102669956B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

그래픽 프로세서(106)는, 렌더 출력(600)의 구역에 관해서 그래픽 처리를 수행한다. 상기 그래픽 처리는, 상기 구역에 대한 원하는 해상도에 대응한 스케일링 계수(412)를 취득하는 것을 포함한다. 상기 그래픽 처리는, 그 원하는 해상도에 따라, 상기 구역에 대해 렌더링되는 스케일링된 그래픽 지오메트리를 취득하는 것과, 상기 구역(408)에 관해서 렌더링되는 상기 구역의 부구역을 선택하는 것을 더 포함한다. 그 후, 상기 선택된 부구역은, 상기 스케일링된 그래픽 지오메트리(414)를 사용하여 렌더링되어서, 그 원하는 해상도에 따라 렌더링된 데이터 요소들(416)의 부구역을 제공한다. 그래픽 프로세서(106)는, 가변 해상도 렌더링을 수행할 때 효율적이고 유연한 그래픽 처리를 제공할 수 있다.

Description

그래픽 처리{GRAPHICS PROCESSING}
본 발명은, 그래픽 처리에 관한 것으로, 특히 가변 해상도 렌더링을 수행할 때 그래픽 프로세서의 동작에 관한 것이다.
가변 해상도("포비티드(foveated)") 렌더링은, 표시중인 프레임(화상)의 하나 이상의 파트들을 표시를 위해 고해상도로 렌더링하지만, 그 프레임의 하나 이상의 그 밖의 파트들을 저해상도로 렌더링하는 렌더링 기술이다.
이것은, 유저가 직접 주시하고 있는 상기 프레임의 영역이 시각적 일치 엔트리성을 위한 고해상도로 렌더링되어야 할 수도 있고, 유저가 직접 주시하고 있지 않는 상기 프레임의 주변 영역이 계속 시각적으로 수용 가능하게 보이면서 저해상도로 렌더링되어야 할 수도 있다는 사실에 근거한다. 그 후, 이것은, 요구된("중심와") 최고 해상도로 표시중인 프레임 전체를 렌더링하는 대신에, 저해상도로 상기 주변 영역을 렌더링함으로써, 상기 그래픽 처리장치(GPU)의 렌더링 부담을 저하시키는데 사용될 수 있다.
가변 해상도 렌더링은, 상기 프레임의 고해상도 영역들이 렌더링되는 하나 이상의 "주시점들"을 특정함으로써 실시되어도 되고, 이때 상기 주시점(들)으로부터 한층 더 떨어진 상기 영역들은 저해상도로 렌더링된다. 따라서, 각 주시점은, 상기 프레임의 최고의 해상도 영역을 나타내어도 되고, 일부의 경우에는, 눈의 망막의 중심(중심와)에 대응하도록 구성되는 것이다.
가변 해상도 렌더링의 다른 사용은, 가상현실 디스플레이들(예를 들면, 가상현실 헤드 마운트 디스플레이들(VR-HMDs)용 화상들을 렌더링할 때이다. 고해상도 헤드 마운트 가상현실 디스플레이들은, 일반적으로, 심한 핀쿠션 왜곡이 특징을 이루는 렌즈들을 사용한다. 이 핀구션 왜곡은 술통형 왜곡을 통해 상기 렌더링된 화상을 통과함으로써 보정될 수 있다. 이것의 효과는, (눈마다) 상기 디스플레이의 중심을 향하는 상기 렌더링된 화상이 확대되는 반면에, 그 주변 영역이 축소되는 것이다. 그 후, 이것의 효과는, 유저의 전반적인 시각효과에 있어서 어떠한 중요한 손실도 의미없이, 상기 중심의 확대 영역보다 저품질로 렌더링될 수 있다는 것이다.
가변 해상도 렌더링을 수행할 때, 상기 프레임의 최고의 해상도 영역들의 장소들(예를 들면, 상기 주시점(들))은, 임의의 적절하고 원하는 방식으로 결정되어도 된다. 예를 들면, 일부 형태의 머리 추적 또는 시선 추적 시스템은, 최고의 해상도로 렌더링되어야 하는 상기 프레임의 영역을 특정하도록, 유저가 상기 화상을 주시하고 있는 장소를 특정하려고 하는데 사용되어도 된다. 또한, 또는 대신에, 상기 프레임의 고해상도 영역들의 장소는, 예를 들면 렌즈 왜곡에 근거하여, 실질적으로 고정되어도 된다.
출원인이 믿는 것은, 가변 해상도 렌더링을 수행할 때 그래픽 프로세서들의 동작에 대한 향상의 여지가 있다는 것이다.
본 발명의 일 국면에서 제공하는 그래픽 프로세서의 동작방법은,
렌더 출력의 구역(region)에 관해서 그래픽 처리를 수행하는 단계-상기 구역은 상기 렌더 출력이 렌더링 목적을 위해 분할되는 복수의 구역들 중 하나이다-이고,
상기 구역에 대한 원하는 해상도 프로파일을 취득하는 것;
상기 구역에 대한 상기 원하는 해상도 프로파일에 따라, 상기 구역에 대해 렌더링되는 스케일링된 그래픽 지오메트리를 취득하는 것;
상기 구역에 대한 상기 원하는 해상도 프로파일에 따라, 상기 구역에 관해서 렌더링되는 상기 구역의 부구역(subregion)을 선택하는 것; 및
상기 구역에 관해서 렌더링을 수행하는 것으로서, 상기 스케일링된 그래픽 지오메트리를 사용하여 상기 렌더 출력의 상기 부구역을 렌더링하여서, 데이터 요소들의 렌더링된 부구역을 제공하는 것을 포함하는 것으로 이루어지는, 상기 그래픽 처리를 수행하는 상기 단계; 및
상기 구역에 관해서, 데이터 요소들의 상기 렌더링된 부구역을 포함하는 데이터 요소들의 출력 어레이를 출력하는 단계를 포함한다.
본 발명의 다른 국면에서 제공하는 그래픽 프로세서는,
렌더 출력의 구역에 관해서 그래픽 처리를 수행하도록 구성된 처리회로-상기 구역은 상기 렌더 출력이 렌더링 목적을 위해 분할되는 복수의 구역들 중 하나이고, 상기 구역에 관해서 그래픽 처리를 수행하는 것은:
상기 구역에 대한 원하는 해상도 프로파일을 취득하는 것;
상기 구역에 대한 상기 원하는 해상도 프로파일에 따라, 상기 구역에 대해 렌더링되는 스케일링된 그래픽 지오메트리를 취득하는 것;
상기 구역에 대한 상기 원하는 해상도 프로파일에 따라, 상기 구역에 관해서 렌더링되는 상기 구역의 부구역을 선택하는 것; 및
상기 구역에 관해서 렌더링을 수행하는 것으로서, 상기 스케일링된 그래픽 지오메트리를 사용하여 상기 렌더 출력의 상기 부구역을 렌더링하여서, 데이터 요소들의 렌더링된 부구역을 제공하는 것을 포함한다-; 및
상기 구역에 관해서, 데이터 요소들의 상기 렌더링된 부구역을 포함하는 데이터 요소들의 출력 어레이를 출력하도록 구성된 출력회로를 구비한다.
이에 따라, 본 발명은, 렌더 출력(예를 들면, 텍스처나 프레임)의 구역(예를 들면, 타일)에 대한 해상도 프로파일을 취득하는 것을 포함한다. 이것은, 예를 들면, 상기 렌더 출력의 하나의(및, 예를 들면, 각) 구역이 그 구역에 대한 특별한 원하는 해상도로 렌더링되게 할 수 있다. 본 발명은, 상기 구역에 대한 상기 원하는 해상도 프로파일에 따라, 상기 구역에 대해 렌더링되는 스케일링된 그래픽 지오메트리를 취득하는 것과, 상기 구역에 관해서 렌더링되는 상기 구역의 부구역을 선택하는 것을 더 포함한다. 그 후, 상기 선택된 부구역은, 상기 구역에 대한 상기 원하는 해상도 프로파일에 따라 렌더링되는 상기 구역에 데이터 요소들의 부구역을 제공하도록 상기 스케일링된 그래픽 지오메트리를 사용하여 렌더링될 수 있다. 예를 들면, 이것은, 상기 구역이 저해상도로 렌더링될 때 단지 상기 구역의 보다 작은 부구역을 렌더링하면 되는 등으로써, 상기 그래픽 프로세서에 놓인 처리 부담을 저하시킬 수 있다. 게다가, 상기 선택된 부구역이 (예를 들면, 상기 구역에 관해 렌더링하기 위해 선택되어도 되는 샘플링 위치들의 행들 및/또는 열들의 수에 관계하는 그래뉴래러티를 갖는) 사이즈의 범위를 취할 수 있으므로, 상기 구역에 관해서 렌더링이 수행될 수 있는 가능한 해상도의 대응한 범위가 있을 수 있다. 그러므로, 본 발명은, 예를 들면 가변 해상도 렌더링을 수행할 때, 효율적이고 유연한 그래픽 처리를 제공할 수 있다.
상기 그래픽 프로세서는, 상기 렌더 출력의 복수의 구역들 중 각 구역에 관해서 여기서 설명된 방식으로 각각의 그래픽 처리를 수행하여도 된다. 상기 복수의 구역들은, 예를 들면, 포비티드 렌더링을 수행할 때, 동일한 렌더 출력의 일부 또는 전부이지만 상이한 해상도로 표현하여도 된다.
구역은, 상기 렌더 출력의 임의의 원하는 적절한 영역을 포함하여도 된다. 예를 들면, 상기 렌더 출력은, 렌더링 목적을 위해 복수의 그래픽 처리 타일들로 분할되어도 된다. 구역은, 이 그래픽 처리 타일들의 하나 이상을 포함하여도 된다. 따라서, 상기 구역은, 하나 이상의 그래픽 처리 타일들, 이를테면 단일의 그래픽 처리 타일을 포함하여도 된다.
그러므로, 상기 그래픽 프로세서는, 타일 기반 그래픽 프로세서를 포함하여도 된다. 타일 기반 그래픽 처리에 있어서, 2차원 렌더 출력(즉, 상기 렌더링 프로세스의 상기 출력, 이를테면 표시되는 출력 텍스처나 프레임)은, 통상 "타일들"이라고 하는 복수의 보다 작은 영역들로서 렌더링된다. 그 타일들은 각기 따로따로 렌더링된다. 그 후, 상기 렌더링된 타일들은, 재합성되어 완전한 렌더 출력(예를 들면, 표시용 텍스처나 프레임)을 제공할 수 있다.
이러한 구성에서, 상기 렌더 출력은 사이즈와 형상이 규칙적인 렌더링 타일들로 (영역에 의해) 분할되는 것이 일반적이지만, 이것은 필수적인 것이 아니다. 통상, "타일링" 및 "타일 기반" 렌더링에 사용되는 그 밖의 용어들은, "청킹"(상기 렌더링 타일들을 "청크들"이라고 함) 및 "버킷" 렌더링을 포함한다. 이후, 편의상 "타일" 및 "타일링"을 사용하지만, 이 용어들은 다른 및 동등한 용어들과 기술들 전부를 포함하는 것으로 한다는 것을 알아야 한다.
이러한 타일 기반 렌더링의 이점은, 메모리 대역폭을 감소시킬 수 있다는 것이다. 예를 들면, 처리중인 타일은, 로컬 스토리지("타일 버퍼")에 저장될 수 있고, 한번 처리된 메모리에만 출력될 수 있다. 또 다른 이점은, 주어진 타일에는 보이지 않는 그래픽 지오메트리가, 그 타일을 처리할 때 고려될 필요가 없고, 예를 들면 그 타일이 처리중일 때 무시되어도 되는 것이다. 이에 따라, 주어진 렌더 출력을 위해 필요한 그래픽 처리의 전체 양이 감소될 수 있다. 본 발명의 맥락에서 타일 기반 렌더링의 또 다른 이점은, 각 타일이 그 자신의 특별한 해상도 프로파일에 따라 렌더링되어도 된다는 것이다.
상기 렌더 출력이 렌더링 목적을 위해 분할되는 구역들(타일들)은, 임의의 적절한 원하는 상기와 같은 구역들일 수 있다. 상기 구역들의 사이즈와 형상은, 상기 그래픽 프로세서가 사용 및 처리하도록 구성된 타일 구성에 좌우될 수도 있다. 상기 구역들의 사이즈와 형상이 전부 동일(즉, 사이즈와 형상이 규칙적)할 수도 있다, 하지만 이것은 필수적인 것이 아니다. 상기 구역들은 정사각형 또는 직사각형이어도 된다. 상기 구역들은 중첩하지 않아도 된다. 구역들의 사이즈와 수는 필요에 따라 선택될 수 있다. 일 실시예에서, 각 구역의 사이즈는, (예를 들면, 16×16 또는 32×32 픽셀들에 대해) 16×16 또는 32×32 샘플링 위치들이다. 상기 렌더 출력에서 텍셀 또는 픽셀은, 하나 이상의 샘플링 위치들에 해당할 수도 있다. 또는, 샘플링 위치는, 상기 렌더 출력에서 하나 이상의 픽셀들에 해당할 수도 있다. 그러나, 상기 렌더 출력은, 사용중인 상기 렌더 출력 사이즈 및 형상에 대해 요구되는 것처럼 상기와 같은 많은 구역들로 분할되어도 된다.
상기 구역에 대한 원하는 해상도 프로파일은, 임의의 원하는 적절한 형태를 취하여도 된다. 예를 들면, 상기 구역에 대한 상기 원하는 해상도 프로파일은 상기 구역에 거쳐 일정한 해상도를 포함하여도 된다. 따라서, 실시예들에서, 상기 구역에 대한 상기 원하는 해상도 프로파일을 취득하는 것은, 상기 구역에 대한 (예를 들면, 단일의) 원하는 해상도를 취득하는 것을 포함하여도 된다. 이 실시예들은, 대부분의 사용의 경우에 수용가능한, 예를 들면, 구간별(piece-wise) 포비티드 렌더링을 제공할 수 있다.
그 밖의 실시예들에서, 상기 구역에 대한 상기 원하는 해상도 프로파일은, 상기 구역에 걸쳐 가변 해상도를 포함하여도 된다. 따라서, 이 그 밖의 실시예들에서, 상기 구역에 대한 상기 원하는 해상도 프로파일을 취득하는 단계는 상기 구역에 대한 복수의 원하는 해상도들을 취득하는 것을 포함하여도 된다. 구역에 대한 가변 해상도는, 선형으로 또는 비선형으로 달라져도 되고, 상기 구역내의 장소에 대해 달라져도 되거나, 상기 전체 렌더 출력 내의 장소에 대해 달라져도 된다. 구역에 대한 가변 해상도는, 상기 렌더 출력의 상기 구역에 대해 행해져도 되는 상기 렌즈 왜곡 보정에 대해 실질적으로 일치되어도 된다. 이 실시예들은, 보다 정교한, 예를 들면, 연속적 포비티드 렌더링을 제공할 수 있다.
구역에 대한 상기 원하는 해상도 프로파일은, 임의의 원하는 적절한 방식으로 취득되어도 된다. 예를 들면, 구역에 대한 해상도는, 상기 구역을 위해 (예를 들면, 구체적으로) 제공된 스케일링 계수로 나타내어도 된다. 구역에 대한 스케일링 계수는, 상기 원하는 해상도에 관계(예를 들면, 비례)되어도 된다. 예를 들면, 최고 또는 완전(포비티드) 해상도로 구역을 렌더링하기 위해서, 상기 구역에 대해 나타낸 상기 스케일링 계수는, 1이어도 된다. 다른 예의 경우, 절반의 해상도로 구역을 렌더링하기 위해서, 상기 구역에 대해 나타낸 상기 스케일링 계수는 1/2이어도 된다. 다른 예의 경우, 4분의 1 해상도로 구역을 렌더링하기 위해서, 상기 구역에 대해 나타낸 상기 스케일링 계수는 1/4이어도 된다. 상기 스케일링 계수들과 상기 최고 또는 완전(포비티드) 해상도간의 기타의 관계들이 필요에 따라 사용되어도 된다.
실시예들에서, 구역에 대한 해상도 및/또는 스케일링 계수는, 상기 렌더 출력의 복수의 구역들을 위해 제공된, 및 예를 들면 상기 렌더 출력의 복수의 구역들에 각각 대응한, 복수의 해상도들 및/또는 스케일링 계수들의 일 세트로 나타내어도 된다. 이에 따라, 각 구역은 그 자신의(예를 들면, 상이한) 해상도로 렌더링될 수 있다. 따라서, 실시예들에서, 구역에 대한 해상도 및/또는 스케일링 계수는, 상기 렌더 출력의 상기 복수의 구역들을 위해 각각 제공된, 및 예를 들면 상기 복수의 구역들에 각각 대응한, 복수의 해상도들 및/또는 스케일링 계수들의 일 세트로부터 취득되어도 된다.
복수의 해상도들 및/또는 스케일링 계수들의 상기 세트는, 임의의 원하는 적절한 방식으로, 예를 들면, 상기 렌더 출력에 대한 해상도들 및/또는 스케일링 계수들의 어레이로서 또는 이 어레이로 제공되어도 된다. 상기 세트 또는 어레이에서 특별한 구역에 대한 상기 해상도 및/또는 스케일링 계수의 위치는, 상기 렌더 출력에서 그 특별한 구역의 상기 위치에 대응하여도 된다. 이것은, 예를 들면, 상기 렌더 출력에서 그 특별한 구역의 상기 위치에 근거하여, 상기 특별한 구역에 대한 상기 원하는 해상도 및/또는 스케일링 계수를 취득 또는 "검색"하는 효율적인 방식을 제공할 수 있다. 따라서, 상기 구역에 대한 상기 원하는 해상도 프로파일을 취득하는 단계는, 예를 들면, 상기 렌더 출력을 위한 스케일링 계수들의 일 세트 또는 어레이("스케일링 텍스처")로부터, 상기 구역을 위해 나타낸 특별한 스케일링 계수를 취득하는 것을 포함하여도 된다.
여기서 말한 상기 그래픽 지오메트리는, 렌더 출력을 렌더링하도록 명시될 수 있는 임의의 적절한 원하는 그래픽 지오메트리일 수 있다. 실시예들에서, 상기 그래픽 지오메트리는, 그래픽 프리미티브들, 이를테면 단순한 폴리곤들, 이를테면 삼각형들, 사각형들, 선들 및/또는 점들을 포함하여도 된다. 그렇지만, 상기 그래픽 지오메트리는, 필요에 따라 그래픽 프리미티브들뿐만 아니라 또는 대신에, 명시될 수 있는 다른 그래픽 지오메트리를 포함할 수 있었다.
실시예들에서, 상기 구역에 대해 렌더링되는 상기 스케일링된 그래픽 지오메트리는, 임의의 원하는 적절한 방식으로 취득되어도 된다. 상기 그래픽 프로세서는, 예를 들면, 상기 구역을 위해 처리되는 그래픽 지오메트리의 하나 이상의 리스트들을 준비하여도 된다. 그 후, 상기 그래픽 지오메트리의 하나 이상의 리스트들은, 상기 구역을 렌더링할 때 처리되는 상기 그래픽 지오메트리를 식별하는데 사용되어도 된다.
주어진 지오메트리 리스트는, 구역의 일부 또는 전부(에 대한 지오메트리를 열거하여도 된다)에 대응하여도 된다. 주어진 지오메트리 리스트는, 하나 이상의(예를 들면, 정수의) 구역들(에 대한 지오메트리를 열거하여도 된다)에 대응하여도 된다. 이러한 리스트들의 이점은, 그들은 예를 들면, 구역에 실제로 있지 않은 지오메트리를 불필요하게 래스터화 및/또는 렌더링을 피하도록, 실제로 주어진 구역에 있는 지오메트리의 상기 식별을 허용할 수 있는 것이다.
상기 구역에 대해 렌더링되는 상기 스케일링된 그래픽 지오메트리를 취득하는 단계는, 상기 원하는 해상도 프로파일(예를 들면, 상기 구역에 대한 상기 원하는 해상도 및/또는 스케일링 계수)에 따라, 상기 구역에 대해 (예를 들면, 지오메트리 리스트에) 나타낸 그래픽 지오메트리를 스케일링 하는 것을 더 포함하여도 된다. 이러한 스케일링은, 버텍스 위치 로딩 연산의 일부로서 행해져도 되지만, 원하는 경우, 그 밖의 구성들이 가능할 것이다.
이 실시예들에서, 상기 구역에 대해 나타낸 상기 그래픽 지오메트리는, 상기 구역에 대해 렌더링되는 상기 스케일링된 그래픽 지오메트리를 생성하기 위해 (상기 구역에 대해, 상기 원하는 해상도 프로파일, 예를 들면, 상기 원하는 해상도 및/또는 스케일링 계수에 따라) 적절하게 스케일링되는, 이전에 비스케일링된(unscaled) 그래픽 지오메트리를 포함하여도 된다. 따라서, 상기 구역을 위해 나타낸 상기 그래픽 지오메트리는, 이전에 비스케일링된 그래픽 지오메트리를 포함하여도 된다.
또한, 또는 대신에, 상기 구역에 대해 나타낸 상기 그래픽 지오메트리는, 상기 구역에 대해 렌더링되는 상기 스케일링된 그래픽 지오메트리를 생성하기 위해 (상기 원하는 해상도 프로파일에 적절한 경우) 또 다른 스케일링 없이 사용되거나 (상기 원하는 해상도 프로파일에 따라) 적절하게 한층 더 스케일링되는, 이전에 스케일링된 그래픽 지오메트리를 포함하여도 된다. 따라서, 상기 구역에 대해 나타낸 상기 그래픽 지오메트리는, 이전에 스케일링된 그래픽 지오메트리를 포함하여도 된다. 실시예들에서, 상기 이전에 스케일링된 그래픽 지오메트리는, 지오메트리 처리(프리미티브 셋업) 동안에 및/또는 타일링이 상기 렌더 출력을 위해 행해지기 전(예를 들면, 상기 하나 이상의 지오메트리 리스트들을 생성하기 전)에, 예를 들면 당해 상기 구역에 대한 상기 원하는 해상도 프로파일을 취득하기 전에, 스케일링되어 있어도 된다.
실시예들에서, 상기 이전에 스케일링된 그래픽 지오메트리는, 이전의 스케일링 계수만큼 스케일링되어 있어도 된다. 이전에 스케일링된 그래픽 지오메트리의 하나 이상의 세트들은, (예를 들면, 각각의) 이전의 스케일링 계수들에 의해 스케일링되어 있도록 구성되어도 된다. 상기 하나 이상의 이전의 스케일링 계수들은, 2의 제곱, 예를 들면 1/2n에 한정되고, 여기서 n은 양의 정수이다. 이렇게 상기 이전의 스케일링 계수들을 한정하는 것은, 제공될 필요가 있는 이전에 스케일링된 그래픽 지오메트리의 세트들의 수를 감소시키는데 도움이 될 수 있고, 이전에 스케일링된 그래픽 지오메트리의 유용한 범위도 제공할 수 있다.
실시예들에서, 구역에 대해 나타낸 상기 스케일링 계수가 이전의 스케일링 계수이하일 때, 상기 구역을 위한 상기 스케일링된 그래픽 지오메트리를 취득하는 프로세스는, 그 이전의 스케일링 계수를 사용하여 스케일링되었던 이전에 스케일링된 지오메트리의 세트를 이용하여도 된다. 예를 들면, 구역에 대해 나타낸 상기 스케일링 계수가 1/2일 때, 1/2만큼 이전에 스케일링되었던 이전에 스케일링된 그래픽 지오메트리는, 또 다른 스케일링 없이 취득되어 사용되어도 된다. 다른 예를 들면, 구역에 대해 나타낸 상기 스케일링 계수가 1/4일 때, 1/2만큼 이전에 스케일링되었던 이전에 스케일링된 그래픽 지오메트리는 취득되어 한층 더 스케일링되어도 되지만, 단지 1/4 대신에 1/2만큼 한층 더 스케일링만되어도 된다.
이에 따라, 이전에 스케일링된 그래픽 지오메트리의 하나 이상의 세트들을 제공하는 것은, 예를 들면, 주어진 렌더링 패스(pass)에서 버텍스 위치 로딩 연산을 동안에 지원될 필요가 있는 스케일링 계수들의 수를 감소시킴으로써, 구역에 대해 스케일링된 그래픽 지오메트리를 취득하는 효율성을 증가시키는데 도움이 될 수 있다. 또한, 이전에 스케일링된 그래픽 지오메트리의 하나 이상의 세트들을 제공하는 것은, 예를 들면, 구역의 비교적 보다 큰 부구역이 그 구역에 관해서 렌더링하기 위해 선택될 수 있어서 매우 작은 부구역이 그 구역에 관해서 렌더링하기 위해 선택되지 않게 함으로써, 매우 낮은 해상도로 렌더링할 때 상기 그래픽 프로세서를 충분히 활용하는데 도움이 될 수 있다.
예를 들면, 이 실시예들에서, 복수의 렌더링 패스들은, 함께 프레임이나 화상을 표현할 복수의 각각의 렌더 출력들에 관해서 수행되어도 된다. 렌더 출력용 각 렌더링 패스들은, 그 렌더링 패스를 위한 상기 렌더 출력을 발생하기 위해 상기 프레임이나 화상의 일부를 렌더링하는 것을 포함하여도 된다. 렌더링 패스에서 렌더링되는 상기 프레임이나 화상의 상기 일부는, 하나 이상의 특별한 해상도들로 렌더링되는 하나 이상의 구역들의 일 세트를 포함하여도 된다. 예를 들면, 필요에 따라, 제1 렌더링 패스는, (예를 들면, 1/2 해상도로 가득한) 제1 해상도 범위내의 하나 이상의 해상도로 렌더링되는 하나 이상의 구역들의 일 세트를 렌더링하여도 되고, 제2 렌더링 패스는 상이한 제2 해상도 범위(예를 들면, 1/2 내지 1/4 해상도)내의 하나 이상의 해상도들로 렌더링되는 하나 이상의 나머지 구역들의 일 세트를 렌더링하는 등 하여도 된다. 패스를 위해 렌더링되는 상기 하나 이상의 구역들의 각각은, 예를 들면, 임의의 국면 또는 실시예에서 여기서 설명된 것과 같은 방식으로, 적절하게 스케일링된 지오메트리를 취득함으로써(예를 들면, 상기 구역에 대해 나타낸 (예를 들면, 이전에 스케일링된) 지오메트리를 취득 및/또는 스케일링함으로써), 및/또는 상기 구역에 관해서 렌더링하기 위해 그 구역의 적절한 부구역을 선택함으로써, 그것의 특별한 해상도로 렌더링되어도 된다. 상기 복수의 렌더링 패스들은, 예를 들면, 그 복수의 렌더링 패스들로부터의 상기 각각의 렌더 출력들을 포함하는 복수의 층들을 갖는 밉맵(mipmap)을 초래할 수 있고, 그 후 예를 들면, 표시를 위해 상기 프레임이나 화상을 출력하기 위해서 적절하게 샘플링될 수 있다.
상기 실시예들 중 어느 하나에 있어서, 그래픽 지오메트리의 상기 하나 이상의 리스트들(예를 들면, 프리미티브 리스트들)이 준비되는 상기 해상도는 임의의 적절한 원하는 해상도이어도 된다. 그 해상도는, 요구될 최고의 해상도(즉, 상기 "포비티드" 구역)의 해상도이어도 된다. 따라서, 실시예들에서, 그래픽 지오메트리의 상기 하나 이상의 리스트들은, 렌더링되어야 하는 최고의 해상도의 해상도로 준비되어도 된다. 이에 따라, 하나 이상의 지오메트리(프리미티브) 리스트들은, 최고의 해상도를 사용하고 그 최고의 해상도로 발생되어도 되지만, 그 후 그 하나 이상의 지오메트리 리스트들(예를 들면, 프리미티브들의 리스트들)도 보다 낮은 해상도로 렌더링할 때 사용되어도 된다. 또한, 또는 대신에, 상기 요구된 최고의 해상도의 해상도보다 훨씬 높거나 낮은 해상도로 하나 이상의 지오메트리 리스트들은, 필요에 따라, 준비되어도 된다.
따라서, 상기 실시예들 중 어느 하나에 있어서, 지오메트리 리스트는, 주어진, 제1(예를 들면, 최고의) 해상도로 준비되어도 되고, 그 후, 상기 제1 해상도로 준비되었던 그 지오메트리 리스트는 당해 상기 구역에 대한 상기 원하는 해상도로 렌더링할 때 사용되어도 된다. 이에 관하여 출원인들이 인식한 것은, 제1 해상도로 준비된 상기 지오메트리를 적절하게 스케일링 하여, 다른 해상도로 렌더링하기 위한 적절한 지오메트리를 제공하기에 비교적 간단할 수 있다는 것이다. 그 후, 이것은, 예를 들면 너무 많은 지오메트리 리스트들, 예를 들면 포비티드 렌더링을 수행할 때 사용되어도 되는 상이한 해상도마다 하나를 준비할 필요가 없으므로, 포비티드 렌더링을 수행할 때 상기 그래픽 프로세서의 처리 부담을 감소시킬 수 있다.
주어진 구역에 대해 어느 지오메트리를 처리할지(따라서, 주어진 구역에 대한 지오메트리 리스트에 포함할지)의 식별은, 임의의 적절한 원하는 방식으로, 예를 들면 임의의 적절한 "타일링"(비닝(binning)) 기술을 사용하여 수행될 수 있다. 따라서, 예를 들면, 정확한 비닝 및/또는 바운딩 박스 바인딩은, 이러한 프로세스를 위해 사용될 수 있었다.
상기 지오메트리 분류(열거) 프로세스는, 렌더링될 상기 지오메트리의 버텍스들(예를 들면, 프리미티브들)에 대한 적절하게 변환된(버텍스 셰이딩된) 위치들을 연산(사용)하여도 된다. 이에 따라, 상기 구역들에 대한 상기 하나 이상의 지오메트리 리스트들이 발생되기 전에, 상기 렌더 출력에 대해 처리되는 지오메트리의 상기 세트에 대해 적절한 버텍스 셰이딩 연산이 행해져, 나중에 상기 지오메트리 분류(열거) 프로세스에서 사용하기 위한 버텍스 셰이딩된 버텍스 위치들의 적절한 세트를 제공하여도 된다. 이러한 버텍스 셰이딩은, 상기 지오메트리 분류(타일링) 프로세스가 수행될 상기 해상도로 수행되어도 되고, 그 후, 그 버텍스 셰이딩의 결과들은 상기 하나 이상의 구역 지오메트리 리스트들을 준비하는데 사용하였다. 또, 상기 버텍스 셰이딩은, 요구되는 최고의 해상도로 수행되어도 된다.
따라서, 상기 버텍스 위치 처리(셰이딩)와 상기 지오메트리 리스트(프리미티브 리스트) 발생 프로세스의 양쪽은, 한 번만, 제1 해상도(예를 들면, 요구되는 최고의 해상도)로 수행되어도 된다.
처리되는 지오메트리(예를 들면, 프리미티브들)의 상기 하나 이상의 리스트들이 구역마다 준비되어 있으면, 상기 하나 이상의 지오메트리 리스트들은, 상기 렌더 출력이 렌더링중일 때, 사용하기 위해, 어느 지오메트리(예를 들면, 프리미티브들)가 각각의 구역마다 고려될(즉, 렌더링될) 필요가 있는지를 상기 렌더링 프로세스가 식별하게 하도록 저장되어도 된다. 상기 구역들에 대한 상기 하나 이상의 지오메트리 리스트들이 상기 제1 해상도(예를 들면, 요구될 최고의 해상도)로 준비되어 있으면, 그 후, 그래서 준비된 지오메트리 리스트들은, 상기 구역들을 렌더링하는데 사용되어도 된다.
상기 구역에 대한 상기 원하는 해상도는, 사용하기 위해 이용 가능할 수도 있는 복수의 상이한 해상도들 중 하나이어도 된다. 최고의 해상도가 있어도 되고, 이 최고의 해상도는, 상기 렌더 출력의 상기 최고의 해상도가 제공되어야 하는 주시점에 또는 그 주시점 근방에 사용되는 상기 "중심와" 해상도에 해당하여도 된다. 그후, 예를 들면 상기 렌더 출력의 주변을 향하여, 상기 주시점으로부터 떨어져 사용되어도 되는 하나 이상의 저해상도가 있어도 된다. 사용하기 위해 이용 가능한, 단지 2개의 상이한 해상도, 즉 최고의 해상도와 저해상도가 있을 수 있다. 또는, 예를 들면, 최고의 해상도와 2개 이상의 저해상도로 이루어진 3개 이상의 상이한 해상도들이 사용하기 위해 이용 가능할 수도 있다.
상기 나타낸 것처럼, 상기 사용하기 위해 이용 가능한 상이한 해상도들 및/또는 스케일링 계수들은, 상기 구역의 사이즈, 예를 들면 상기 구역에 대한 샘플링 위치들의 행들 및/또는 열들의 수에 관계되어도 된다. 사용하기 위해 이용 가능한 상기 상이한 해상도들 및/또는 스케일링 계수들은, 예를 들면, 분모가 상기 구역에 대한 샘플링 위치들의 행들 및/또는 열들의 수와 같은 (일반적인 또는 적절한) 분수들을 포함하거나 그 분수들로 이루어져도 된다. 예를 들면, 사이즈에 있어서 16×16 샘플링 위치인 구역에 대해서, 사용하기 위해 이용 가능한 상기 상이한 해상도들 및/또는 스케일링 계수들은, 1/16에 이르기까지 16/16(즉, 1), 15/16, 14/16 등을 포함하거나 이루어져도 된다. 그 밖의 실시예들에서, 사용하기 위해 이용 가능한 상기 상이한 해상도들 및/또는 스케일링 계수들은, 이러한 분수들의 서브세트에 한정되어도 된다. 예를 들면, 사용하기 위해 이용 가능한 상기 상이한 해상도들 및/또는 스케일링 계수들은, 분자 및/또는 분모가 짝수인 분수들에 한정되어도 된다. 이것은, 상기 그래픽 처리 시스템의 효율성을 향상시키는데 도움이 될 수 있고, 지원될 필요가 있는 상기 상이한 해상도들 및/또는 스케일링 계수들의 수를 감소시킬 수 있다. 그 밖의 실시예들에서, 사용하기 위해 이용 가능한 상기 상이한 해상도들 및/또는 스케일링 계수들은, 2의 제곱, 예를 들면 1/2n에 한정되고, 여기서 n은 양의 정수이다. 또, 이것은, 상기 그래픽 처리 시스템의 효율성을 향상시키는데 한층 더 도움이 될 수 있고, 지원될 필요가 있는 스케일링 계수들의 수를 한층 더 감소시킬 수 있다.
상기 렌더 출력 전반에 있어서 임의의 주어진 구역을 위해 어느 해상도가 사용될지의 선택은, 예를 들면, 포비티드 렌더링을 수행할 때 당해 상기 그래픽 프로세서와 상기 그래픽 처리 시스템에 사용되는 방식으로, 필요에 따라 수행 및 나타내어질 수 있다. 예를 들면, 적절한 머리 추적 또는 시선/응시 추적 정보는, 상기 렌더 출력에서, 및/또는 가상현실 헤드 마운트 디스플레이들의 경우에, 상기 렌더 출력의 중심이, 고(예를 들면, 최고의) 해상도가 표시되어야 하는 상기 구역으로서 식별되고 나타내어질 수 있는 경우 어느 해상도가 표시되어야 하는지를 식별하는데 사용될 수 있었고, 이때의 상기 렌더 출력의 주변을 향하는 구역들은 저해상도로 표시된다.
구역에 대한 상기 원하는 해상도는, 임의의 적절한 원하는 시간에, 예를 들면, 상기 적절하게 스케일링된 그래픽 지오메트리가 렌더링하기 위해 취득되기 전, 및/또는 적절한 부구역이 상기 구역에 관해서 렌더링하기 위해 선택되기 전에, 제공되어도 된다. 상기 구역에 대한 상기 스케일링 계수가 동적인, 예를 들면 주시점이 머리 또는 시선/응시 추적에 의해 결정되는 실시예들에서, 상기 구역에 대한 상기 원하는 해상도 프로파일은, 상기 구역에 대한 지오메트리 처리 및/또는 타일링 후(예를 들면, 상기 하나 이상의 지오메트리 리스트들을 생성한 후) 및/또는 상기 적절하게 스케일링된 그래픽 지오메트리가 렌더링을 위해 취득되기 직전에 및/또는 적절한 부구역이 상기 구역에 관해서 렌더링하기 위해 선택되기 직전에, 제공되어도 된다. 이것은, 결정중인 주시점과, 구역에 관해서 렌더링을 수행하는 것과의 사이의 지연시간을 감소시키는데 도움이 될 수 있다.
상기 구역에 관해서 렌더링되는 부구역은, 임의의 원하는 적절한 방식으로 선택되어도 된다. 예를 들면, 상기 구역에 관해서 렌더링되는 상기 부구역을 선택하는 것은, 당해 상기 구역의 일부이지 전부가 아닌 구역을 선택하는 것을 포함하여도 된다. 예를 들면, 샘플링 위치들 면에서 상기 선택된 부구역의 사이즈는, 상기 구역에 대한 상기 원하는 해상도 및/또는 스케일링 계수에 근거하여도 된다. 예를 들면, 절반의 해상도로 렌더링할 때, 상기 구역의 1/4을 포함하는(예를 들면, 샘플링 위치들의 1/2행들 및 1/2열들을 포함하는) 부구역은, 렌더링을 위해 선택되어도 된다. 다른 예에 대해서, 4분의1 해상도로 렌더링할 때, 상기 구역의 1/16을 포함하는(예를 들면, 샘플링 위치들의 행들의 1/4 및 열들의 1/4을 포함하는) 부구역은, 렌더링을 위해 선택되어도 된다. 그 밖의 사이즈의 부구역들은, 적절히 그 밖의 해상도들로 렌더링을 위해 선택되어도 된다. 그 밖의 경우에, 이를테면 풀 해상도 렌더링의 경우에, 상기 구역 전체는 렌더링을 위해 선택되어도 된다.
상기 선택된 부구역은, 인접한 부구역을 포함하여도 된다. 상기 선택된 부구역은, 상기 구역의 상측 엣지와 좌측 엣지 등의 상기 구역의 하나 이상의(예를 들면, 2개의) 엣지들에 인접하여도 된다. 상기 하나 이상의 엣지들의 장소는, 본 발명의 방식으로 렌더링되는 구역마다 동일하여도 된다(예를 들면, 상기 선택된 부구역들은, 항상 그들의 각각의 구역들의 상측 엣지와 좌측 엣지에 인접하여도 된다). 이것은, 본 발명의 방식으로 렌더링되는 복수의 구역들의 일관된 처리를 제공할 수 있다.
마찬가지로, 상기 구역에 관해서 렌더링되는 상기 부구역을 선택하는 것은, 렌더링을 위해 상기 렌더 출력의 일부를 선택하지 않는 것을 포함하여도 된다. 예를 들면, 샘플링 위치들의 면에서 상기 비선택된 구역의 사이즈나 영역은, 다시 상기 구역에 대한 상기 원하는 해상도 및/또는 스케일링 계수에 근거하여도 된다. 예를 들면, 절반의 해상도로 렌더링할 때, 상기 구역의 3/4를 포함하는 비선택된 부구역은, 렌더링을 위해 선택되지 않아도 된다. 다른 예를 들면, 4분의1 해상도로 렌더링할 때, 상기 구역의 15/16을 포함하는 비선택된 부구역은, 렌더링을 위해 선택되지 않아도 된다. 그 밖의 사이즈의 영역들은, 적절히 그 밖의 해상도들을 위한 렌더링을 위해 선택되지 않아도 된다.
또, 상기 비선택된 부구역은, 상기 구역의 인접 영역을 포함하여도 된다. 상기 비선택된 부구역은, 상기 구역의 하측 엣지와 우측 엣지 등의 상기 구역의 하나 이상의(예를 들면, 2개의) 다른 엣지들에 인접하여도 된다. 상기 하나 이상의 다른 엣지들의 장소는, 본 발명의 방식으로 렌더링되는 구역마다 동일하여도 된다(예를 들면, 상기 비선택된 부구역들은, 항상 그들의 각각의 구역들의 하측 엣지와 우측 엣지에 인접하여도 된다). 또, 이것은, 본 발명의 방식으로 렌더링되는 복수의 구역들의 일관된 처리를 제공할 수 있다.
따라서, 상기 구역에 관해서 렌더링되는 상기 부구역을 선택하는 것은, 상기 구역에 관해서 렌더링을 수행할 상기 구역의 샘플링 위치들의 하나 이상의 행들(하지만 전부는 아님) 및/또는 하나 이상의 열들(하지만 전부는 아님)을 선택하는 것을 포함하여도 된다. 그 후, 상기 구역에 관해서 렌더링을 수행하는 것은, 샘플링 위치들의 상기 선택된 하나 이상의 행들 및/또는 하나 이상의 열들에 관해서 렌더링을 수행하는 것을 포함하여도 된다.
마찬가지로, 상기 구역에 관해서 렌더링되는 부구역을 선택하는 것은, 상기 구역에 관해서 렌더링하기 위한 상기 구역의 샘플링 위치들의 하나 이상의 행들 및/또는 하나 이상의 열들을 선택하지 않는 것을 포함하여도 된다. 그 후, 상기 구역에 관해서 렌더링을 수행하는 것은, 샘플링 위치들의 상기 비선택된 하나 이상의 행들 및/또는 하나 이상의 열들에 관해서 렌더링을 수행하지 않는 것을 포함하여도 된다. 예를 들면, 샘플링 위치들의 상기 비선택된 하나 이상의 행들 및/또는 하나 이상의 열들에 관해서 전혀 렌더링을 수행하지 않아도 되거나(예를 들면, 렌더링 실행 쓰레드들이 유발되지 않거나), 부분 렌더링만 샘플링 위치들의 상기 비선택된 하나 이상의 행들 및/또는 하나 이상의 열들에 관해서 수행되어도 된다(예를 들면, 렌더링 실행 쓰레드들이 유발되지만 완료전에 종료되어도 된다).
상술한 것처럼, 상기 구역에 대한 샘플링 위치들의 상기 선택된 하나 이상의 행들 및/또는 상기 선택된 하나 이상의 열들은, 서로 인접하여서 렌더링되는 샘플링 위치들의 인접한 선택된 부구역을 형성하는, 샘플링 위치들의 하나 이상의 행들 및/또는 하나 이상의 열들을 포함하여도 된다. 또한, 상술한 것처럼, 샘플링 위치들의 상기 선택된 하나 이상의 행들 및/또는 하나 이상의 열들은, 상기 구역의 상측 엣지 및/또는 좌측 엣지 등의 상기 구역의 하나 이상의 엣지들에 인접하여도 된다. 이 실시예들은, 상기 렌더링된 데이터 요소들이 함께 그룹화되게 함으로써 그 결과로 얻어진 데이터 요소들의 출력 어레이의 효율적인 압축을 위해 제공할 수 있다. 마찬가지로, 상술한 것처럼, 상기 구역에 대한 샘플링 위치들의 상기 비선택된 하나 이상의 행들 및/또는 상기 비선택된 하나 이상의 열들은, 서로 인접하여서 렌더링되지 않는 샘플링 위치들의 인접한 비선택된 부구역을 형성하는, 샘플링 위치들의 하나 이상의 행들 및/또는 하나 이상의 열들을 포함하여도 된다. 마찬가지로, 상기 구역에 대한 샘플링 위치들의 상기 비선택된 하나 이상의 행들 및/또는 상기 비선택된 하나 이상의 열들은, 상기 구역의 하측 엣지 및/또는 우측 엣지 등의 상기 구역의 하나 이상의 다른 엣지들에 인접하여도 된다. 또한, 이 실시예들은, 렌더링되지 않은 데이터 요소들이 함께 그룹화되게 함으로써 그 결과로 얻어진 데이터 요소들의 출력 어레이의 효율적인 압축을 위해 제공할 수 있다.
샘플링 위치들의 상기 선택된 하나 이상의 행들 및/또는 하나 이상의 열들은, 샘플링 위치들의 임의의 원하는 적절한(예를 들면, 정수) 수의 행들 및/또는 열들을 포함하여도 된다. 상술한 것처럼, 상기 선택된 행들 및/또는 열들의 수는, 상기 구역에 대한 상기 원하는 해상도 및/또는 스케일링 계수에 근거하여도 된다. 예를 들면, 절반의 해상도로 렌더링할 때, 상기 행들의 1/2 및/또는 상기 열들의 1/2은 렌더링하기 위해 선택되어도 된다. 다른 예를 들면, 4분의1 해상도로 렌더링할 때, 상기 행들의 1/4 및/또는 상기 열들의 1/4은 렌더링하기 위해 선택되어도 된다. 그 밖의 수들의 행들 및/또는 열들은, 적절히 그 밖의 해상도로 렌더링하기 위해 선택되어도 된다.
마찬가지로, 상기 구역에 대한 샘플링 위치들의 상기 비선택된 하나 이상의 행들 및/또는 하나 이상의 열들도, 예를 들면, 샘플링 위치들의 선택된 행들 및/또는 열들의 수를 뺀 상기 구역에 대한 샘플링 위치들의 행들 및/또는 열들의 수와 같은, 임의의 원하는 적절한 수의 행들 및/또는 열들을 포함하여도 된다. 이에 따라, 상기 비선택된 행들 및/또는 열들의 수도, 상기 원하는 해상도 및/또는 스케일링 계수에 근거하여도 된다. 예를 들면, 절반의 해상도로 렌더링할 때, 상기 행들의 1/2 및/또는 상기 열들의 1/2은 렌더링되지 않아도 된다. 다른 예를 들면, 4분의1 해상도로 렌더링할 때, 상기 행들의 3/4 및/또는 상기 열들의 3/4은 렌더링되지 않아도 된다.
선택된 행들의 수는, 예를 들면, 균일하거나 등방성의 스케일링을 위해, 및/또는 상기 렌더 출력의 정사각형 구역을 위해, 실질적으로 선택된 열들의 수와 동일하여도 된다. 또는, 선택된 행들의 수는, 예를 들면, 비균일하거나 비등방성의 스케일링을 위해, 및/또는 상기 렌더 출력의 비정사각형 구역을 위해, 선택된 열들의 수와 달라도 된다. 마찬가지로, 비선택된 행들의 수는, 예를 들면, 균일하거나 등방성의 스케일링을 위해, 및/또는 정사각형 구역을 위해, 실질적으로 비선택된 열들의 수와 동일하여도 된다. 또는, 비선택된 행들의 수는, 예를 들면, 비균일하거나 비등방성의 스케일링을 위해, 및/또는 비정사각형 구역을 위해, 비선택된 열들의 수와 달라도 된다.
렌더 출력의 주어진 구역을 렌더링하기 위해서, 상기 그래픽 프로세서는, 이에 따라, 예를 들면, 상기 스케일링된 지오메트리(예를 들면, 프리미티브들)를 상기 선택된 부구역(의 샘플링 위치들)에 대한 그래픽 프래그먼트들로 래스터화하고 나서 그 그래픽 프래그먼트들을 상기 부구역에 대한 렌더링된 데이터 요소들을 출력하도록 렌더링함으로써, 상기 스케일링된 지오메트리를 처리하여도 된다.
따라서, 실시예들은, 상기 구역에 관해서 래스터화를 수행하는 것을 더 포함하여도 되고, 상기 구역에 관해서 래스터화를 수행하는 것은, 상기 렌더 출력의 상기 선택된 부구역에 대한 그래픽 프래그먼트들을 발생하기 위해 상기 선택된 그래픽 지오메트리를 래스터화하는 것을 포함한다. 또한, 상기 구역에 관해서 래스터화를 수행하는 것은, 상기 렌더 출력의 상기 비선택된 부구역에 대한 그래픽 프래그먼트들을 발생하지 않는 것도 포함하여도 된다. 그 후, 상기 구역에 관해서 렌더링을 수행하는 것은, 상기 발생된 상기 부구역에 대한 그래픽 프래그먼트들을 렌더링하는 것을 포함하여도 된다.
상기 렌더링 프로세스는, 임의의 원하는 적절한 방식으로, 예를 들면, 당해 상기 그래픽 프로세서의 유형에 따라 수행될 수 있다. 상기 렌더링 프로세스는, 상기 그래픽 프로세서나 그래픽 처리 파이프라인이, 출력을 위해(예를 들면, 표시를 위해) 지오메트리를 렌더링할 때, 이를테면 비표시표면 제거 연산들, 깊이 테스트, 스텐실 테스트, 블렌딩, 텍스처 매핑 등을 수행할 때, 행하여도 되는, 어떠한 처리도 포함할 수 있다.
그 결과로 얻어진 데이터 요소들의 출력 어레이는, 데이터 요소들의 면에서 임의의 원하는 적절한 사이즈이어도 된다. 일부 실시예들에서, 상기 데이터 요소들의 출력 어레이는, 데이터 요소들의 면에서, 상기 구역 전체가 렌더링되었었던 경우이었을 것처럼 동일한 사이즈이어도 된다. 이것은, 본 발명의 방식으로 상기 구역의 렌더링을, 실질적으로 이후의 처리 스테이지들, 이를테면, 데이터 요소들의 상기 출력 어레이의 저장, 압축 등에 대해 명백하게 할 수 있다.
이 실시예들에서, 데이터 요소들의 상기 출력 어레이에는 데이터 요소들, 이를테면 데이터 요소들의 하나 이상의 패딩(padding) 행들 및/또는 열들로 채워넣어져도 되어, 예를 들면 데이터 요소들의 상기 출력 어레이는 데이터 요소들의 면에서 상기 구역 전체가 렌더링되었었던 경우이었을 것이기 때문에 실질적으로 동일한 사이즈이어도 된다. 사실상, 상기 패딩 데이터 요소들(예를 들면, 데이터 요소들의 하나 이상의 패딩 행들 및/또는 열들)은, 렌더링되지 않았던 상기 렌더 출력의 상기 비선택된 부구역에 대해 발생되었을 상기 데이터 요소들을 대신할 수 있다.
따라서, 실시예들은, 데이터 요소들의 상기 출력 어레이를, 상기 구역에 관해서 렌더링되어 있지 않은 샘플링 위치들에 대응하는 데이터 요소들의 하나 이상의 행들 및/또는 하나 이상의 열들로 채워넣는 것을 포함하여도 된다. 상기 패딩 데이터 요소들은, 실질적으로 균일한 데이터를 표현하여도 된다. 보다 상세히 후술하는 것처럼, 이것은, 균일한 데이터가 다수의 압축 방식들을 사용하여 잘 압축하게 되므로 데이터 요소들의 상기 출력 어레이의 효율적인 압축을 고려할 수 있다.
그 밖의 실시예들에서, 데이터 요소들의 상기 부구역은 업스케일링(upsacling)되어도 되어, 그 업스케일링된 데이터 요소의 부구역이, 데이터 요소들의 면에서 상기 구역 전체가 렌더링되었었다면 상기 구역이 되었을 것이기 때문에 실질적으로 동일한 사이즈이어도 된다. 그 후, 데이터 요소들의 상기 출력 어레이는, 상기 업스케일링된 데이터 요소의 부구역을 포함하여도 된다. 상기 업스케일링은, 최근접 인접 보간을 포함하여도 된다. 이 실시예들에서, 사용하기 위해 이용 가능한 상기 스케일링 계수들은, 2의 제곱, 예를 들면 1/2n에 한정되고, 여기서 n은 양의 정수이다. 또, 보다 상세히 후술하는 것처럼, 이것은, 인접 데이터 요소들이 동일한 데이터를 표현하게 하여 다수의 압축 방식들을 사용하여 잘 압축하게 되므로 데이터 요소들의 상기 출력 어레이의 효율적인 압축을 고려할 수 있다.
그 결과로 얻어진 데이터 요소들의 출력 어레이는, 필요에 따라 사용될 수 있다. 데이터 요소들의 상기 출력 어레이는, (예를 들면, 렌더 출력 전부, 이를테면 표시를 위한 텍스처나 프레임을 표현하는 렌더 출력을 형성하기 위해) 상기 렌더 출력의 그 밖의 구역들에 대해 발생된 데이터 요소들의 하나 이상의 그 밖의 출력 어레이들과 합성되어도 되고, 및/또는 (하나의, 예를 들면 압축된, 텍스처나 화상을 표현하는 렌더 출력으로서) 나중에 사용하기 위해 저장되어도 되고, 및/또는 표시를 위해(예를 들면, 처리되어도 된다) 출력되어도 된다. 상기 구역 및/또는 렌더 출력은, 예를 들면, 나중에 사용하기 위해 시스템 메모리에서 프레임버퍼에 저장되어도 된다.
실시예들은, 예를 들면, 나중에 사용하기 위해 데이터 요소들의 상기 출력 어레이 및/또는 렌더 출력을 저장하기 전에, 데이터 요소들의 상기 출력 어레이 및/또는 렌더 출력을 압축하는 것을 더 포함하여도 된다. 이에 관해서, 상술한 것처럼, 출원인들이 확인한 것은, 바람직한 실시예들에서 발생된 데이터 요소들의 상기 출력 어레이는 잘 압축하게 될 것이라는 것인데, 그 이유는 그 어레이가 실질적으로 균일한 데이터를 표현하는 데이터 요소들의 하나 이상의 인접한 부구역들을 가질 수 있기 때문이다. 실질적으로 균일한 데이터의 상기와 같은 부구역들은, 다수의 압축 방식들을 사용하여 잘 압축하게 된다.
상기 출력 어레이 및/또는 렌더 출력은, 임의의 원하는 적절한 압축 방식을 사용하여 압축되어도 된다. 상기 압축 방식은, 예를 들면, 화상이나 그래픽(텍스처) 압축 방식을 포함하여도 된다. 그 압축 방식은, 예를 들면, 데이터 요소들의 압축된 어레이 전체를 압축해제할 필요 없이, 예를 들면 결과적인 압축된 데이터에 무작위 액세스를 허용할 수도 있다. 상기 압축 방식은, 예를 들면, 블록 기반 압축 방식을 포함하여도 된다. 그 블록 기반 압축 방식은, 예를 들면 블록 전체에 대한 인코딩된 데이터를 압축해제할 필요 없이, 블록에 대한 상기 인코딩된 데이터에 무작위 액세스를 한층 더 허용할 수도 있다. 실시예들에서, 상기 압축 방식은, 실질적으로 손실이 없을 수도 있다(예를 들면, 원래의 데이터 요소들의 정확성이 상기 데이터를 압축해제할 때 실질적으로 복구될 수 있다). 실시예들에서, 상기 압축 방식은, 실질적으로 US 2013/0034309 또는 US 2013/195352에 기재된 것과 같은 압축 방식을 포함하여도 되고, 그것들의 전체 내용은 여기서 참고로 포함되어 있다. 상기 압축 방식은, 예를 들면, ARM 프레임 버퍼 압축(AFBC)이어도 된다.
실시예들에서, 하나 이상의 샘플링 위치들에 대한 하나 이상의 데이터 값들은, 나중에, 구역에 대한 데이터 요소들의 상기(예를 들면, 압축된) 출력 어레이로부터 샘플링되고 및/또는 얻어져도 된다. 하나 이상의 데이터 값들을 샘플링 하는 및/또는 얻는 프로세스는, 예를 들면, 메모리로부터, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축된) 출력 어레이의 상기 데이터의 일부나 전부를 판독하는 것을 포함하여도 된다. 하나 이상의 데이터 값들을 샘플링 하는 및/또는 얻는 프로세스는, 상기 구역에 대한 데이터 요소들의 상기 압축된 출력 어레이의 상기 데이터의 일부나 전부를 압축해제하는 것을 더 포함하여도 된다.
하나 이상의 데이터 값들을 샘플링 하는 및/또는 얻는 프로세스는, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축해제된 또는 비압축된) 출력 어레이를 업스케일링 하는 것을 더 포함하여도 된다. 그렇지만, 보다 상세히 후술하는 것처럼, 바람직한 실시예들에서, 상기 하나 이상의 데이터 값들을 샘플링 하는 및/또는 얻는 프로세스는, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이를 압축해제 하는 것 및/또는 업스케일링 하는 것을 포함하지 않는다. 대신에, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이는, 직접 샘플링되어도 된다.
데이터 요소들의 (예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이로부터 샘플링 위치에 대한 데이터 값을 샘플링 하는 및/또는 얻는 상기 프로세스를 용이하게 하기 위해서, 당해 상기 구역을 렌더링할 때 사용된 상기 해상도 프로파일(예를 들면, 해상도 및/또는 스케일링 계수)은 상기 데이터 요소들의 (예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이에 대해 나타내어져도(그리고, 예를 들면 이 출력 어레이와 함께 저장되어도) 된다. 상기 해상도 프로파일(예를 들면, 해상도 및/또는 스케일링 계수)은 임의의 원하는 적절한 방식으로 나타내어져도 된다. 예를 들면, 상기 해상도 프로파일(예를 들면, 해상도 및/또는 스케일링 계수)은, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이를 구비하고 있는 메타데이터(예를 들면, 상기 출력 어레이를 위한 헤더)에 나타내어져도 된다.
그 후, 상기 해상도 프로파일(예를 들면, 해상도 및/또는 스케일링 계수)은, 당해 상기 데이터 값을 샘플링할 때 및/또는 얻을 때 사용된 해상도 및/또는 스케일링 계수로 판독되어도 되고 이 해상도 및/또는 스케일링 계수이어도 된다. 해상도 및/또는 스케일링 계수는, 예를 들면, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축해제된 또는 비압축된) 출력 어레이를 적절하게 업스케일링 하는데 사용되어도 된다. 그렇지만, 바람직한 실시예들에서, 해상도 및/또는 스케일링 계수는, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이를 샘플링하는데 사용중인 샘플링 위치를 적절하게 매핑하는데 사용되어도 된다.
따라서, 실시예들은, 상기 렌더 출력의 구역에 대응한 데이터 요소들의 상기 출력 어레이로부터의 샘플링 위치에 대한 데이터 값을 샘플링 하는 및/또는 얻는 것을 더 포함하여도 된다. 상기 샘플링 위치에 대한 데이터 값을 샘플링 하는 및/또는 얻는 것은, 상기 구역이 렌더링되었던 특별한 해상도에 근거하여 상기 샘플링 위치를 매핑된 샘플링 위치에 매핑하고, 그 매핑된 샘플링 위치를 사용하여 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링하는 및/또는 얻는 것을 포함하여도 된다. 이 실시예들은, 예를 들면, 먼저 데이터 요소들의 상기 출력 어레이 전체를 압축해제 및/또는 업스케일할 필요 없이, 예를 들면 상기 데이터 값이 상기 데이터 요소들의 상기 출력 어레이로부터 직접 샘플링 하게 및/또는 얻어지게 할 수 있다. 결국, 이것은, 상기 데이터 값을 샘플링 하기 및/또는 얻기 위해서 데이터 요소들의 출력 어레이 전체를 판독 및 처리할 필요성을 피함으로써, 상기 데이터 값을 샘플링 하는데 및/또는 얻는데 요구된 대역폭 및 처리의 양을 감소시킬 수 있다.
여기서 설명된 상기 국면들 및 실시예들 중 어느 하나에 있어서, 하나 이상의 데이터 값들을 샘플링하는 및/또는 얻는 상기 프로세스는, 상기 그래픽 프로세서에 의해(예를 들면, 상기 그래픽 프로세서의 텍스처 맵퍼에 의해), 및/또는 다른 적절한 데이터 프로세서, 이를테면 디스플레이 프로세서에 의해, 수행되어도 된다.
따라서, 본 발명의 다른 국면에서 제공하는 데이터 프로세서의 동작방법은,
렌더 출력의 구역에 대응한 데이터 요소들의 출력 어레이로부터의 샘플링 위치에 대한 데이터 값을 샘플링 하는 및/또는 얻는 단계를 포함하되, 상기 구역은 상기 렌더 출력이 렌더링 목적들을 위해 분할되었던 복수의 구역들 중 하나이고, 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 단계는,
상기 구역이 렌더링되었던 특별한 해상도에 근거하여 상기 샘플링 위치를 매핑된 샘플링 위치에 매핑하는 것; 및
상기 매핑된 샘플링 위치를 사용하여 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것을 포함한다.
마찬가지로, 본 발명의 다른 국면에서 제공한 데이터 프로세서는,
렌더 출력의 구역에 대응한 데이터 요소들의 출력 어레이로부터의 샘플링 위치에 대한 데이터 값을 샘플링 하도록 및/또는 얻도록 구성된 샘플링 회로를 구비하되, 상기 구역은 상기 렌더 출력이 렌더링 목적들을 위해 분할되었던 복수의 구역들 중 하나이고, 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것은,
상기 구역이 렌더링되었던 특별한 해상도에 근거하여 상기 샘플링 위치를 매핑된 샘플링 위치에 매핑하는 것; 및
상기 매핑된 샘플링 위치를 사용하여 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것을 포함한다.
이 국면들 및 실시예들은, 필요에 따라, 임의의 다른 국면 또는 실시예에서 본 명세서에서 기재된 상기 바람직하고 선택적인 특징들의 임의의 하나 이상 또는 전부를 포함하여도 된다. 예를 들면, 상기 하나 이상의 데이터 값들을 샘플링 하는 및/또는 얻는 프로세스는, 상기 그래픽 프로세서에 의해(예를 들면, 상기 그래픽 프로세서의 텍스처 맵퍼에 의해) 및/또는 다른 적절한 데이터 프로세서, 이를테면 디스플레이 프로세서에 의해, 수행되어도 된다.
다른 예를 들면, 샘플링중인 상기 구역에 대한 데이터 요소들의 상기 출력 어레이는, 압축, 압축해제 또는 비압축되어도 된다. 상기 출력 어레이 및/또는 렌더 출력은 임의의 원하는 적절한 압축 방식을 사용하여 압축되어도 된다. 상기 압축 방식은, 예를 들면, 화상이나 그래픽(텍스처) 압축 방식을 포함하여도 된다. 그 압축 방식은, 예를 들면, 데이터 요소들의 압축된 어레이 전체를 압축해제할 필요 없이, 예를 들면 결과적인 압축된 데이터에 무작위 액세스를 허용할 수도 있다. 상기 압축 방식은, 예를 들면, 블록 기반 압축 방식을 포함하여도 된다. 그 블록 기반 압축 방식은, 예를 들면 블록 전체에 대한 인코딩된 데이터를 압축해제할 필요 없이, 블록에 대한 상기 인코딩된 데이터에 무작위 액세스를 한층 더 허용할 수도 있다. 실시예들에서, 상기 압축 방식은, 실질적으로 손실이 없을 수도 있다(예를 들면, 원래의 데이터 요소들의 정확성이 상기 데이터를 압축해제할 때 실질적으로 복구될 수 있다). 실시예들에서, 상기 압축 방식은, 실질적으로 US 2013/0034309 또는 US 2013/0195352에 기재된 것과 같은 압축 방식을 포함하여도 되고, 그것들의 전체 내용은 여기서 참고로 포함되어 있다. 상기 압축 방식은, 예를 들면, ARM 프레임 버퍼 압축(AFBC)이어도 된다.
다른 예를 들면, 상기 데이터 값들을 샘플링 하는 및/또는 얻는 프로세스는, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이를 압축해제 하는 및/또는 업스케일링 하는 것을 포함하지 않아도 된다. 따라서, 실시예들에서, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이는, 상기 매핑된 샘플링 위치를 사용하여 직접 샘플링되어도 된다.
다른 예를 들면, 데이터 요소들의 상기(예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이로부터 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 상기 프로세스를 용이하게 하기 위해서, 당해 상기 구역을 렌더링할 때 사용된 상기 해상도 프로파일(예를 들면, 해상도 및/또는 스케일링 계수)은 상기 데이터 요소들의 상기(예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이에 대해 나타내어져도(그리고, 예를 들면 이 출력 어레이와 함께 저장되어도) 된다. 상기 해상도 프로파일(예를 들면, 해상도 및/또는 스케일링 계수)은 임의의 원하는 적절한 방식으로 나타내어져도 된다. 예를 들면, 상기 해상도 프로파일(예를 들면, 해상도 및/또는 스케일링 계수)은, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이를 구비하고 있는 메타데이터(예를 들면, 상기 출력 어레이를 위한 헤더)에 나타내어져도 된다.
그 후, 상기 해상도 프로파일(예를 들면, 해상도 및/또는 스케일링 계수)은, 당해 상기 데이터 값을 샘플링할 때 및/또는 얻을 때 사용된 해상도 및/또는 스케일링 계수로 판독되어도 되고 이 해상도 및/또는 스케일링 계수이어도 된다. 특히, 해상도 및/또는 스케일링 계수는, 상기 구역에 대한 데이터 요소들의 상기(예를 들면, 압축된, 압축해제된 또는 비압축된) 출력 어레이를 샘플링하는데 사용중인 상기 샘플링 위치를 적절하게 매핑하는데 사용되어도 된다.
상기 국면들 및 실시예들의 방식으로 샘플링된 및/또는 얻어진 데이터 값은, 필요에 따라 사용되어도 된다. 예를 들면, 샘플링된 및/또는 얻어진 데이터 값은, 하나 이상의 다른 샘플링된 및/또는 얻어진 데이터 값들과 합성되어도 되고, 및/또는 (예를 들면, 텍스처 값으로서) 또 다른 렌더링을 위해 사용되어도 되고, 및/또는 출력을 위해(예를 들면, 표시를 위해) 한층더 처리되어도 된다.
알 수 있듯이, 하나 이상의 데이터 값들은, 본 발명의 방식으로 상기 샘플링 위치에 대해 샘플링되어도 및/또는 얻어져도 된다. 마찬가지로, 하나 이상의 데이터 값들은, 본 발명의 방식으로 복수의 샘플링 위치들 중 하나마다 샘플링되어도 및/또는 얻어져도 된다. 마찬가지로, 하나 이상의 데이터 값들은, 본 발명의 방식으로 데이터 요소들(예를 들면, 하나 이상의 렌더 출력들)의 복수의 각각의 출력 어레이들 중 하나마다 샘플링되어도 및/또는 얻어져도 된다.
본 발명을 상기 렌더 출력의 주어진 구역을 렌더링하는 것에 대한 구체적인 언급으로 설명하였지만, 실제로, 복수의 구역들은, 데이터 요소들(예를 들면, 하나 이상의 렌더 출력들)의 각각의 출력 어레이들을 발생하기 위해 본 발명의 방식으로 각각의 해상도들로 렌더링되어도 된다는 것을 알 수 있을 것이다.
마찬가지로, 본 발명을 주어진 렌더 출력을 표현하는 상이한 해상도 구역들의 발생에 대해 구체적인 언급으로 설명하였지만, 실제로, 이 프로세스는 복수의 렌더 출력들에 대해, 예를 들면, 포비티드 렌더링을 사용하여 표시되는 연속적인 출력 프레임들의 시퀀스에 대해, 반복되어도 된다.
이에 대응하게, 상기 렌더 출력들이 가상현실 표시를 위한 것일 경우(따라서, 복수의 상이한 시점들, 이를테면, 입체 렌더링을 위한 "좌안" 뷰와 "우안" 뷰로부터 한 장면에 대한 복수의 상이한 렌더 출력들을 렌더링하는 것을 포함하는 경우( 상기 좌안에서 본 상기 장면에 대응한 하나의 화상과, 상기 우안에서 본 상기 장면에 대응한 하나의 화상으로 이루어진 상기 한 장면의 2개의 화상이, 발생되고 나서, 그 화상들이 보여질 때 3차원 효과를 제공하도록 적절하게 표시된다), 각기 상이한 렌더 출력, 예를 들면 상기 좌안 화상과 우안 화상의 양쪽은, 본 발명의 방식으로 포비티드 렌더링을 사용하여 렌더링되어도 된다.
상기로부터 알 수 있듯이, 본 발명은, 포비티드 렌더링을 수행할 때 상기 그래픽 프로세서의 동작에 관한 것이다. 따라서, 일 실시예에서, 먼저 인식한 것은, 상기 그래픽 프로세서가 포비티드 렌더링을 수행하기 위한 것이고, 그 후 본 발명의 방식에 있어서의 상기 동작은 그에 따라 기동되어도 된다는 것이다.
그것은, 상기 그래픽 프로세서는 임의의 적절한 원하는 방식으로 포비티드 렌더링을 수행하기 위한 것일 때 인식(결정)될 수 있다. 일 실시예에서, 이것은, 포비티드 렌더링이 요구되는 것을 나타내는 등, 그래픽 처리를 요구하는 애플리케이션에 의해 제공중인 등 상기 그래픽 프로세서에 의해 실행되는 상기 그래픽 처리 태스크나 태스크들과 관련된 정보, 이를테면 상태 정보 및/또는 메타데이터로부터 결정되어도 된다. 예를 들면, 상기 그래픽 프로세서에 의한 그래픽 처리를 요구하는 애플리케이션은, 포비티드 렌더링이 수행되어야 하는 상기 그래픽 처리 연산들을 요구할 때 표시를 제공하여도 된다.
일 실시예에서, 포비티드 렌더링이 수행되어야 한다는 사실은, 상기 그래픽 렌더링을 요구하는 애플리케이션을 사용하여 그 렌더링이 요구되는 것을 나타낼 수 있는 함수 호출에 의해 나타내어진다. 따라서, 애플리케이션은, 예를 들면, 함수 호출을 통해, 상기 지오메트리가 다수의 해상도들로 렌더링되는 것을 나타낼 수도 있다.
상기 그래픽 프로세서가 포비티드 렌더링을 수행하기 위한 것이라고 인식될 때, 본 발명의 방식으로 상기 그래픽 프로세서의 동작은 임의의 적절한 원하는 방식으로 기동될 수 있다(상기 그래픽 프로세서는, 임의의 적절한 원하는 방식에 있어서 본 발명의 방식으로 동작하도록 구성될 수 있다).
일 실시예에서, 상기 그래픽 프로세용 드라이버는, 상기 그래픽 프로세서로 나타내어(상기 그래픽 프로세서에 명령들을 발행하여) 본 발명의 방식으로 포비티드 렌더링을 수행한다. 이에 대응하게, 임의의 셰이딩 프로그램들, 이를테면 상기 렌더 출력을 렌더링할 때 상기 그래픽 프로세서에 의해 실행되는 버텍스 셰이딩 프로그램 및/또는 프래그먼트 셰이딩 프로그램은, 적절히 구성되어도 된다. 이것은, 상기 그래픽 프로세서를 위한(상기 그래픽 프로세서의 임의의 셰이더들을 위한) 컴파일러에 의해(상기 그래픽 처리 시스템용 컴파일러 처리회로에 의해) 행해져도 된다. 상기 컴파일러는 상기 그래픽 처리 시스템의 호스트 프로세서상에서 실행하여도 된다, 예를 들면, 상기 그래픽 처리를 요구중인 상기 애플리케이션은, 예를 들면, 상기 호스트 프로세서상에서 실행하는 상기 그래픽 처리 파이프라인용 드라이버의 일부로서 실행한다. 원하는 경우, 그 밖의 구성들도 가능할 것이다.
위로부터 알 수 있듯이, 상기 그래픽 프로세서는, 상기 그래픽 프로세서에 의해 그래픽 처리를 필요로 할 수 있는 애플리케이션들을 실행하는 호스트 프로세서를 구비하는 전체 그래픽 처리 시스템의 일부이어도 된다. 상기 호스트 프로세서는, 적절한 명령들과 데이터를 상기 그래픽 프로세서에 보내어, 그 그래픽 프로세서로 하여금 그래픽 처리 연산들을 수행하고 (본 발명의 방식에 있어서 포함하는) 상기 호스트 프로세서상에서 실행중인 애플리케이션들에서 요구한 그래픽 처리(렌더) 출력들을 생성하도록 제어하여도 된다. 이를 용이하게 하기 위해서, 상기 호스트 프로세서는, 상기 그래픽 프로세서용 드라이버와, 상기 그래픽 프로세서의 프로그램 가능한 셰이딩 스테이지들에 의해 실행되는 셰이더 프로그램들을 컴파일링하는 컴파일러나 컴파일러들을 실행시켜도 된다(이때의 컴파일러는 상기 드라이버의 일부이어도 된다).
따라서, 상기 그래픽 프로세서는, 상기 그래픽 프로세서용 드라이버 및/또는 상기 그래픽 프로세서용 컴파일러나 컴파일러들을 실행시키는 (전체 그래픽 처리 시스템의 일부인) 호스트 프로세서와 통신하고 있어도 된다. 또한, 상기 그래픽 프로세서 및/또는 호스트 프로세서는, 상기 그래픽 프로세서에서 발생한 프레임들이나 화상들을 표시하기 위한 디스플레이 프로세서 및/또는 디스플레이와도 통신하고 있어도 된다(따라서, 상기 그래픽 처리 시스템은, 상기 그래픽 프로세서에서 발생한 상기 프레임들이나 화상들을 표시하기 위한 디스플레이 프로세서 및/또는 디스플레이를 더 구비하여도 된다).
마찬가지로, 상기 그래픽 처리 시스템은, 상기 그래픽 프로세서에서 발생한 프레임들이나 화상들을 표시하기 위한 디스플레이 프로세서 및/또는 디스플레이를 가져도 되고, 및/또는 상기 디스플레이 프로세서 및/또는 디스플레이와 통신하고 있어도 되고, 및/또는 상기 그래픽 프로세서에서 발생한 렌더 출력들이 예를 들면 이후의 처리, 예를 들면 표시를 위해 저장되어도 되는 시스템 메모리를 갖거나 이 시스템 메모리와 통신하고 있다. 마찬가지로, 포비티드 렌더링을 수행하기 위한 요구사항을 나타내는 상기 호스트 프로세서상에 애플리케이션이 있는 것이 바람직하고, 그 요구사항은 예를 들면 상기 호스트 프로세서상에서 실행하는 드라이버에 의해 인식되고, 그에 따라, 이때, 상기, 예를 들면 상기 호스트 프로세서상의 드라이버는 상기 그래픽 프로세서에 렌더링을 수행하게 지시하도록 동작한다.
상기와 달리, 상기 그래픽 프로세서는, 상술한 상기 요소들 및 스테이지들뿐만 아니라, 그래픽 프로세서가 통상적으로 구비할 수 있는 그 밖의 처리 스테이지들 중 임의의 하나 이상이나 그 스테이지들 전부도 구비할 수 있다. 따라서, 예를 들면, 상기 그래픽 프로세서는, 프리미티브 셋업 스테이지, 래스터화기 및/또는 렌더러를 구비하여도 된다. 실시예들에서, 상기 렌더러는, 프로그램 가능한 프래그먼트 셰이더의 형태이어도 되거나, 그 프로그램 가능한 프래그먼트 셰이더를 구비하여도 된다.
또한, 상기 그래픽 프로세서는, 타일 샘플 값들을 저장하는 타일 버퍼, 및/또는, 상기 타일 버퍼에 있는 상기 데이터 요소들을 외부(메인) 메모리(예를 들면, 프레임 버퍼)에 (예를 들면, 상기 타일 버퍼에 있는 상기 데이터가 완전하면) 라이트 아웃하도록 동작하는 라이트 아웃부를 구비하여도 된다.
상기 그래픽 프로세서는, 하나 이상의 프로그램 가능 셰이딩 스테이지들, 이를테면, 버텍스 셰이딩 스테이지, 헐(hull) 셰이더, 테셀레이션 스테이지(예를 들면, 셰이더 프로그램을 실행하여서 테셀레이션을 행함), 도메인(평가) 셰이딩 스테이지(셰이더), 지오메트리 셰이딩 스테이지(셰이더) 및 프래그먼트 셰이더 중 하나 이상 또는 전부를 포함하여도 된다.
또한, 상기 그래픽 프로세서는, 그래픽 프로세서가 이를테면 깊이(또는 깊이 및 스텐실) 테스터(들), 블렌더, 라이트 아웃부 등을 포함할 수도 있는 임의의 다른 적절한 원하는 처리 스테이지들을 포함하여도 된다.
상기 버텍스 셰이더, 프래그먼트 셰이더 등 등과 같은 상기 그래픽 처리 파이프라인의 임의의 프로그램 가능 셰이딩 스테이지들은, 필요에 따라 또한 임의의 적절한 방식으로 구현될 수 있고, 각각 및 적절하게, 임의의 원하는 적절한 셰이딩, 예를 들면, 버텍스 셰이딩, 프래그먼트 셰이딩 등, 함수들을 수행할 수 있다.
각 프로그램 가능 처리 스테이지(셰이더)는, 프로그램 가능 처리회로 등의 임의의 적절한 프로그램 가능 하드웨어 소자를 포함하여도 된다. 각 프로그램 가능 처리 스테이지(셰이더)는 상기 처리 파이프라인의 다른 프로그램 가능 스테이지들(셰이더들)에 별도의 회로소자로서 제공되어도 되거나, 상기 프로그램 가능 처리 스테이지는 그들의 프로그램 가능 처리회로(그 후, 원하는 프로그램 가능 처리 스테이지(셰이더)로서의 역할을 하도록 상이하게 프로그램됨)의 일부나 전부를 공유하여도 된다.
실시예들에서, 상기 데이터(예를 들면, 그래픽 및/또는 디스플레이) 프로세서는, 여기서 설명된 상기 데이터를 저장하고, 및/또는 여기서 설명된 상기 프로세스들을 행하기 위한 소프트웨어를 저장하는, 하나 이상의 메모리들 및/또는 메모리 디바이스들을 구비할 수도 있, 및/또는 이 하나 이상의 메모리들 및/또는 메모리 디바이스들과 통신하고 있을 수도 있다.
실시예들에서, 본 발명의 각 종 기능들은, 예를 들면 상기 디스플레이 디바이스용 프레임 버퍼에 기록되는 렌더링된 프래그먼트 데이터를 발생하고 출력하는 단일의 그래픽 처리 플랫폼상에서 실시되어도 된다.
본 발명은, 임의의 적절한 시스템, 이를테면 적절하게 구성된 마이크로프로세서 기반 시스템에 구현될 수 있다. 일부의 실시예들에서, 본 발명은, 컴퓨터 및/또는 마이크로프로세서 기반 시스템에 구현된다.
본 발명은, 휴대형 디바이스, 이를테면, 이동전화나 타블렛에 구현되는 것이 바람직하다. 본 발명은, 포비티드 렌더링이 요구될 디바이스들, 이를테면 가상현실 헤드셋과 같은 가상현실 디스플레이 디바이스들에 특히 적용 가능할 것이라고 믿는다.
따라서, 본 발명의 다른 국면에서 제공한 가상현실 디스플레이 디바이스는, 본 발명의 상기 국면들 또는 실시예들 중 어느 하나 이상을 갖는 상기 그래픽 프로세서, 데이터 프로세서 또는 시스템을 구비한다. 이에 대응하게, 본 발명의 다른 국면에서 제공한 가상현실 디스플레이 디바이스의 동작방법은, 본 발명의 상기 국면들 또는 실시예들 중 어느 하나 이상을 갖는 방식으로 상기 가상현실 디스플레이 디바이스(의 그래픽 프로세서, 데이터 프로세서 또는 시스템 등)를 작동하는 단계를 포함한다.
본 발명의 각종 기능들은, 임의의 원하는 적절한 방식으로 실행될 수 있다. 예를 들면, 본 발명의 기능들은, 원하는 대로, 하드웨어나 소프트웨어로 구현될 수 있다. 따라서, 예를 들면, 본 발명의 각종 기능적 요소, 스테이지, 및 "수단"은, 적절하게 전용 하드웨어 요소(처리회로) 및/또는 원하는 방식으로 작동하도록 프로그래밍될 수 있는 프로그램 가능한 하드웨어 요소(처리회로)와 같은 각종 기능 등을 행할 수 있는, 적절한 프로세서나 프로세서들, 콘트롤러나 콘트롤러들, 기능 유닛들, 회로, 처리 로직, 마이크로프로세서 구성 등을 포함할 수도 있다.
또한, 여기서는, 당업자라면 알 수 있듯이, 본 발명의 각종 기능 등이, 주어진 프로세서상에서 병렬로 복제 및/또는 실행될 수도 있다는 것을 주목해야 한다. 마찬가지로, 각종 처리 스테이지는, 필요한 경우 처리회로 등을 공유할 수도 있다.
또한, 당업자라면, 본 발명의 상술한 실시예들 모두가, 적절하게, 여기서 설명한 바람직하고 선택적 특징들 중 어느 하나 이상 또는 모두를 포함할 수 있다는 것을 알 것이다.
본 발명에 따른 방법들은, 소프트웨어, 예를 들면 컴퓨터 프로그램들을 적어도 일부 사용하여 구현되어도 된다. 이렇게 하여 안 것은, 또 다른 실시예들에서 보면, 본 발명은, 데이터 처리수단에 인스톨될 때 여기서 설명된 방법들을 실행하도록 구체적으로 구성된 컴퓨터 소프트웨어와, 데이터 처리수단상에 작동할 때 여기서 설명된 방법들을 행하기 위한 컴퓨터 소프트웨어 코드 부분을 포함한 컴퓨터 프로그램 요소와, 상기 프로그램이 데이터 처리 시스템상에 작동할 때 여기서 설명된 방법이나 방법들의 단계 모두를 행하도록 구성된 코드수단을 포함한 컴퓨터 프로그램을 제공한다는 것이다. 상기 데이터 처리 시스템은, 마이크로프로세서 시스템, 프로그램 가능한 FPGA(Field Programmable Gate Array) 등이어도 된다.
또한, 본 발명은, 그래픽 프로세서, 렌더러, 데이터 프로세서, 또는 데이터 처리수단을 갖는 다른 시스템을 작동시키는데 사용될 때, 상기 데이터 처리수단과 관련지어 상기 프로세서, 렌더러 또는 시스템이 본 발명의 방법들의 단계들을 실행하도록 상기 소프트웨어를 구비한 컴퓨터 소프트웨어 캐리어까지도 확장된다. 이러한 컴퓨터 소프트웨어 캐리어는, ROM칩, CD ROM, RAM, 플래시 메모리나, 디스크 등의 물리적 기억매체일 수 있거나, 유선상의 전자신호, 광신호 또는 위성 등에 관한 무선신호 등의 신호일 수 있다.
본 발명의 방법들의 모든 단계들을 컴퓨터 소프트웨어로 실행할 필요가 없고 이에 따라서 한층 더 넓은 실시예로부터 본 발명은 컴퓨터 소프트웨어와, 여기 기재된 방법들의 단계들의 적어도 하나를 실행하기 위한 컴퓨터 소프트웨어 캐리어 상에 인스톨된 상기 소프트웨어를 제공한다는 것도 또한 알 것이다.
이에 따라, 본 발명은, 컴퓨터 시스템에 사용하기 위한 컴퓨터 프로그램 제품으로서 적절히 구체화되어도 된다. 이러한 구현은, 유형의, 비일시적 매체, 이를테면 컴퓨터 판독 가능한 매체, 예를 들면, 디스켓, CD-ROM, ROM, RAM, 플래시 메모리, 또는 하드디스크에 고정된 일련의 컴퓨터 판독 가능한 명령들을 포함할 수도 있다. 또한, 본 발명은, 광학적이거나 아날로그적 통신회선을 포함하지만 이에 한정되지 않거나, 또는, 마이크로웨이브, 적외선 또는 그 밖의 투과 기술을 포함하지만 이에 한정되지 않는 무선 기술을 무형으로 사용하는 유형의 매체 상에서, 모뎀이나 그 밖의 인터페이스 디바이스를 거쳐 컴퓨터 시스템에 전송가능한, 일련의 컴퓨터 판독 가능한 명령을 포함할 수 있었다. 상기 일련의 컴퓨터 판독 가능한 명령은, 여기서 이전에 설명된 기능성의 모두 또는 일부를 구체화한다.
당업자는, 여러 가지의 컴퓨터 아키텍처나 운영체계에 사용하기 위한 다수의 프로그래밍 언어로 상기 컴퓨터 판독 가능한 명령을 기록할 수 있다는 것을 알 것이다. 또한, 이러한 명령은, 반도체, 마그네틱, 또는 광학적 기술을 포함하지만 이에 한정되지 않는 현재 또는 미래의 어떠한 메모리 기술을 사용하여서도 저장될 수도 있거나, 광학적, 적외선 또는 마이크로웨이브를 포함하지만 이에 한정되지 않는 현재 또는 미래의 어떠한 통신기술을 사용하여서도 전송되어도 된다. 이러한 컴퓨터 프로그램 제품은, 인쇄된 문서나 전자 문서가 첨부되는 착탈 가능한 매체, 예를 들면, 컴퓨터 시스템, 예를 들면, 시스템 ROM이나 고정형 디스크 상에 사전 적재된 쉬링크 랩 소프트웨어로서 배포되거나, 네트워크, 예를 들면, 인터넷이나 월드 와이드 웹상에서 서버나 전자 게시판으로부터 배포되어도 된다고 생각된다.
이하, 본 발명의 다수의 실시예들을, 예시로만 또한 아래의 첨부도면들을 참조하여 설명하겠다:
도 1은 본 발명의 일 실시예에 따른 컴퓨터 그래픽 처리 시스템을 도시하는 것이고;
도 2는 본 발명의 일 실시예에 따른 그래픽 프로세서에 의해 구현될 수 있는 그래픽 처리 파이프라인을 도시한 것이고;
도 3은 본 발명의 일 실시예에 따라 상이한 해상도들로 렌더링되는 한 장면의 구역들을 도시한 것이고;
도 4는 본 발명의 일 실시예에 따라 특별한 해상도로 렌더 출력의 구역을 렌더링하는 프로세스를 설명하는 것이고;
도 5는 본 발명의 일 실시예에 따라 렌더링되는 렌더 출력의 구역들의 부구역들을 도시한 것이고;
도 6a는 본 발명의 일 실시예에 따라 상이한 해상도들로 렌더링되어 있는 렌더 출력의 구역들을 도시한 것이고;
도 6b는 본 발명의 다른 실시예에 따라 상이한 해상도들로 렌더링되어 있는 렌더 출력의 구역들을 도시한 것이고;
도 7은 본 발명의 일 실시예에 따라 렌더 출력을 샘플링하는 프로세스를 설명하는 것이고;
도 8은 본 발명의 일 실시예에 따라 렌더 출력을 샘플링하는데 사용되는 매핑된 샘플링 위치와 원래의 샘플링 위치를 도시한 것이다.
동일한 참조부호들은, 상기 도면들에서 적절한 경우 동일한 구성요소들에 사용된다.
이제, 본 발명의 다수의 실시예들을 표시를 위해 컴퓨터 그래픽의 처리라는 맥락에서 설명하겠다.
도 1은 컴퓨터 그래픽 처리 시스템(100)을 도시한 것이다. 호스트 프로세서(104)상에서 실행하는 게임과 같은 애플리케이션(102)은, 연관된 그래픽 프로세서(그래픽 처리 유닛(GPU))(106)에 의해 행해질 그래픽 처리 연산들을 필요로 한다. 이를 행하기 위해서, 상기 애플리케이션은, 상기 호스트 프로세서(104)상에서 동작하는 상기 그래픽 프로세서(106)용 드라이버(108)에 의해, 상기 애플리케이션(102)에서 요구한 그래픽 출력을 발생하기 위해 적절한 코맨드들을 상기 그래픽 프로세서(106)에 발생하도록 해석된 API(애플리케이션 프로그래밍 인터페이스) 함수 호출들을 발생한다. 이를 용이하게 하기 위해서, "코맨드들"의 세트는 그래픽 출력을 위해(예를 들면, 표시될 프레임을 발생하기 위해) 상기 호스트 시스템(104)상에서 동작하는 애플리케이션(102)으로부터의 코맨드들에 응답하여 상기 그래픽 프로세서(106)에 제공된다.
도 2는 본 실시예의 그래픽 프로세서(106)에 의해 구현될 수 있는 그래픽 처리 파이프라인(200)을 보다 상세히 도시한 것이다.
본 실시예의 그래픽 프로세서(106)는, 타일 기반 렌더이고, 따라서, 발생될 출력 프레임 등의 렌더 출력 데이터 어레이의 타일들을 생성한다. 상기 렌더 출력 데이터 어레이는, 스크린이나 프린터와 같은 표시장치에 표시하도록 구성된 하나의 출력 프레임일 수도 있지만, 또한, 예를 들면, 나중 렌더링 패스들(passes)("렌더 투(to) 텍스처" 출력으로서도 알려짐) 등에서 사용하기 위한 중간 데이터를 포함할 수도 있다.
타일 기반 렌더링에 있어서, 전체 렌더 출력, 예를 들면, 즉시 모드 렌더링에서처럼 한꺼번에 효율적으로 처리중인 프레임이라기보다는, 렌더 출력, 예를 들면 표시되는 프레임은, 통상 "타일들"이라고 하는 보다 작은 복수의 구역들(영역들)로 분할된다. 각 타일(구역)은 별개로(일반적으로는 하나씩 하나씩) 렌더링되고 나서, 그 렌더링된 타일들(구역들)은 완전한 렌더 출력, 예를 들면, 표시용 프레임을 제공하도록 재합성된다. 이러한 구성에서, 상기 렌더 출력은, 일반적으로, 사이즈와 형상이 규칙적인 구역들(타일들)(통상, 정사각형들이나 직사각형들 등)로 분할되지만, 이것은 필수적이지는 않다.
하나의 컴퓨터 그래픽 화상이 표시될 때, 그래픽 지오메트리의 세트, 통상 일련의 프리미티브들(폴리곤들)로서 먼저 정의되고, 그 그래픽 지오메트리(예를 들면, 프리미티브들)는 그래픽 렌더링을 위한 그래픽 프래그먼트들로 차례로 분할(래스터화)된다. 통상의 그래픽 렌더링 연산시에, 상기 렌더러는, 각 프래그먼트와 연관된 상기(예를 들면) 색(적색, 녹색, 청색, RGB)과 투명도(알파, α) 데이터를 수정하여 그 프래그먼트들이 정확히 표시될 수 있다. 그 프래그먼트들이 상기 렌더러를 전체 순회하였다면, 그들의 연관된 데이터 값들은, 출력, 예를 들면 표시를 가능하게 메모리에 저장된다.
도 2는 본 실시예들의 연산에 관한 그래픽 프로세서(106)의 주 요소들과 파이프라인 스테이지들을 도시한 것이다. 당업자라면 알듯이, 도 2에 도시되지 않은 그래픽 프로세서(106)(그래픽 처리 파이프라인 200)의 그 밖의 요소들 및 스테이지들도 있을 수 있다.
또한, 여기서는, 도 2가 단지 개략적인 도면이고, 예를 들면, 실제로 상기 도시된 기능부들과 파이프라인 스테이지들은, 비록 도 2에 별개의 스테이지들로서 개략적으로 도시될지라도 중요한 하드웨어 회로들을 공유하여도 된다는 것을 주목해야 한다. 또한, 도 2에 도시된 것처럼 그래픽 처리 파이프라인(200)의 각 스테이지, 요소 및 부 등이 원하는 대로 구현될 수도 있음에 따라서, 예를 들면, 필요한 동작과 기능들을 행하기 위한 적절한 회로 및/또는 처리 로직 등을 구비할 것이다.
도 2에 도시된 것처럼, 그래픽 프로세서(106)가 실행하는 그래픽 처리 파이프라인(200)은, 버텍스(vertex) 셰이더(202), 헐(hull) 셰이더(204), 테셀레이터(206), 도메인 셰이더(208), 지오메트리 셰이더(210), 타일러(212), 래스터화 스테이지(214), 이른 Z(깊이) 및 스텐실 테스트 스테이지(216), 프래그먼트 셰이딩 스테이지(28) 형태의 렌더러, 늦은 Z(깊이) 및 스텐실 테스트 스테이지(220), 블렌딩 스테이지(222), 타일 버퍼(224) 및 다운샘플링 및 라이트아웃(writeout)(멀티샘플 리졸브(resolve)) 스테이지(226)로 이루어진, 다수의 스테이지들을 포함한다.
버텍스 셰이더(202)는, 발생되는 출력을 위해 규정된, 버텍스들 등과 연관된 입력 데이터 값들을 취하고, 이들 데이터 값들을 처리하여, 그래픽 처리 파이프라인(200)의 다음의 스테이지들에서 사용하기 위한 대응한 "버텍스 셰이딩된" 출력 데이터 값들의 세트를 발생한다.
처리되는 각 프리미티브는 통상, 버텍스들의 세트에 의해 규정되고 표현된다. 일반적으로, 프리미티브용 각 버텍스는 "속성"들의 세트, 즉 그 버텍스에 대한 데이터 값들의 세트와 연관되어 있다. 이 속성들은, 일반적으로, 위치 데이터와, 그 밖의 비위치 데이터(varyings), 예를 들면, 당해 버텍스용, 규정 색, 라이트, 노멀, 텍스처 좌표들 등을 포함한다.
상기 그래픽 프로세서(106)에서 발생하는 주어진 출력에 대해서, 일반적으로 당해 출력을 위해 규정된 버텍스들의 세트가 있다. 그리고, 상기 출력을 위해 처리되는 프리미티브들은, 발생중인 그래픽 처리 출력을 위한 버텍스들의 상기 세트에서 주어진 버텍스들을 포함하는 것으로서 나타내어질 것이다.
상기 버텍스 셰이딩 연산은, 버텍스마다 상기 속성들을 이후의 그래픽 처리 연산을 위해 원하는 형태로 변환하도록 연산한다. 이것은, 예를 들면, 버텍스 위치 속성들을, 초기에 규정된 세계나 유저 공간으로부터 그래픽 처리 시스템의 출력이 표시되는 스크린 공간으로 변환하는 것과, 렌더링되는 화상에서 라이팅(lighting)의 효과를 고려하도록 입력 데이터를 수정하는 것을 포함하여도 된다.
헐 셰이더(204)는 패치(patch) 제어점들의 세트들에 관한 연산을 행하고 패치 상수들로서 알려진 부가 데이터를 발생한다. 상기 테셀레이션 스테이지(206)는 상기 헐의 고위 표시를 작성하기 위해 지오메트리를 세부분할하고, 상기 도메인 셰이더(208)는 (하나의 버텍스 셰이더와 같은) 상기 테셀레이션 스테이지에 의해 출력된 버텍스들에 관해 연산들을 행한다. 상기 지오메트리 셰이더(210)는 삼각형들, 점들 또는 선들과 같은 전체 프리미티브들을 처리한다.
상기 버텍스 셰이더(202)와 함께 이 스테이지들은, 그래픽 프로세서(106)에 제공된 코맨드들과 버텍스 데이터에 응답하여, 변환연산과 라이팅 연산 등의 필요한 프래그먼트 프론트엔드 연산들과, 렌더링되는 상기 지오메트리를 셋업하기 위한 프리미티브 셋업 전부를 효과적으로 행한다.
렌더링되는 모든 프리미티브들이 적절하게 셋업되어 있다면, 상기 타일러(212)는, 처리 목적을 위해 렌더 출력이 분할되어 있던 타일마다 어느 프리미티브들이 처리될 필요가 있는지를 판정한다. 이를 행하기 위해서, 상기 타일러(212)는, 처리되는 프리미티브마다의 장소와 상기 타일 위치들을 비교하고, 그 프리미티브가 (잠재적으로) 속할 수 있다고 판정하는 타일마다 각각의 지오메트리(프리미티브) 리스트에 상기 프리미티브를 부가한다. 프리미티브들을 타일 리스트들로 소팅(sorting) 및 비닝(binning)하는 임의의 적절한 원하는 기술, 이를테면, 정확한 비닝 또는 바운딩 박스 비닝 또는 그 사이에서의 어떠한 기술도 상기 타일링 프로세스에 사용될 수 있다.
이렇게 렌더링되는 지오메트리(프리미티브들)의 리스트들(프리미티브-리스트들)이 렌더링 타일마다 준비되어 있다면, 그 프리미티브-리스트들은, 사용하도록, 예를 들면, 상기 시스템이 당해 타일이 렌더링될 때 프리미티브들을 고려(렌더링)할 필요가 있는지를 식별하게 하도록 저장된다.
상기 타일러(212)가 타일 리스트들(타일마다 처리되는 프리미티브들의 리스트들)의 준비를 완료했다면, 각 타일은 렌더링될 수 있다.
이를 해결하기 위해서, 각 타일은, 상기 타일러(212)에 후속하는 도 2에 도시된 그래픽 처리 파이프라인(200) 스테이지들에 의해 처리된다.
따라서, 주어진 타일이 처리중일 때, (그 타일에 대해 타일 리스트에 열거된) 그 타일에 대해 처리되는 각 프리미티브는, 상기 래스터화기(214)에 건네진다.
상기 그래픽 처리 파이프라인(200)의 래스터화 스테이지(214)는, 그 프리미티브들을 개개의 처리용 그래픽 프래그먼트들로 래스터화하도록 연산한다. 이를 행하기 위해서, 래스터화기(214)는, 그 프리미티브들을 샘플링점들로 래스터화하고, 그 프리미티브들을 렌더링하기 위한 (적절한 샘플링 위치들을 표현하는) 적절한 위치들을 갖는 그래픽 프래그먼트들을 발생한다.
그리고, 상기 래스터화기(214)에서 발생한 프래그먼트들은, 계속 처리용 파이프라인의 나머지에 보내진다.
이른 Z/스텐실 스테이지(216)는, 이 스테이지에서 어떠한 프래그먼트들이 지워질 수(추려낼 수) 있는지를 알기 위해서, 래스터화기(214)로부터 수신하는 프래그먼트들에 관해 Z(깊이) 테스트를 실행한다. 이를 행하기 위해서, Z/스텐실 스테이지(216)는, 이미 렌더링되어 있던 프래그먼트들에 의해 새로운 프래그먼트들이 차단되는지( 또는 아닌지)를 판정하기 위해서, 상기 래스터화기(214)로부터 발행하는 프래그먼트들(과 연관된)의 깊이 값들과, 이미 렌더링된 프래그먼트들의 깊이 값들(이 깊이 값들이 타일 버퍼(224)의 일부인 깊이(Z) 버퍼에 저장된다)을 비교한다. 동시에, 이른 스텐실 테스트가 실시된다.
그리고, 이른 Z 및 스텐실 테스트 스테이지(216)를 통과하는 프래그먼트들은, 상기 프래그먼트 셰이딩 스테이지(218)에 보내진다. 프래그먼트 셰이딩 스테이지(218)는, 그 프래그먼트들을 처리하여 적절한 렌더링된 프래그먼트 데이터를 발생하기 위해서, 상기 이른 Z 및 스텐실 테스트들을 통과하는 프래그먼트들에 관한 적절한 프래그먼트 처리 연산들을 행한다.
이 프래그먼트 처리는, 적절한 프래그먼트 데이터를 발생하기 위해서, 임의의 적절한 원하는 프래그먼트 셰이딩 프로세스들, 이를테면, 상기 프래그먼트들에 관한 프래그먼트 셰이더 프로그램들을 실행하는 프로세스, 텍스처들을 그 프래그먼트들에 적용하는 프로세스, 포깅(fogging)이나 그 밖의 연산들을 상기 프래그먼트들에 적용하는 프로세스 등을 포함할 수도 있다. 본 실시예에서, 프래그먼트 셰이딩 스테이지(218)는, 하나의 셰이더 파이프라인(하나의 프로그램 가능 프래그먼트 셰이더)의 형태로 되어 있다.
그리고, 그 중에서 특히, 렌더링된 프래그먼트가 실제로 최종의 화상에서 보여지는지를 판정하기 위해서 상기 셰이딩된 프래그먼트들에 관한 파이프라인 깊이 테스트의 끝을 실시하는 "늦은" 프래그먼트 Z 및 스텐실 테스트 스테이지(220)가 있다. 이 깊이 테스트는, 타일 버퍼(224)에서 Z버퍼에 저장된 프래그먼트의 위치에 대한 Z 버퍼 값을 사용하여, 새로운 프래그먼트들에 대한 프래그먼트 데이터가, 프래그먼트 셰이딩 스테이지(218)로부터 발행하는 프래그먼트들(과 연관된)의 깊이 값들과 (그 깊이 버퍼에 저장된 것처럼) 이미 렌더링되어 있던 프래그먼트들의 깊이 값들을 비교함으로써, 이미 렌더딩되어 있던 프래그먼트들의 프래그먼트 데이터를 교체해야 하는지를 판정한다. 이 늦은 프래그먼트 깊이 및 스텐실 테스트 스테이지(220)도 상기 프래그먼트들에 관한 임의의 필요한 "늦은" 알파 및/또는 스텐실 테스트들을 실시한다.
그 후, 상기 늦은 프래그먼트 테스트 스테이지(220)를 통과하는 프래그먼트들은, 필요한 경우, 블렌더(222)에서 타일 버퍼(224)에 이미 저장된 프래그먼트들과 임의의 필요한 블렌딩 연산들이 실행된다. 또한, (미도시된) 디더 등과 같은 프래그먼트들에 관해 필요한 임의의 그 밖의 나머지 연산들도 이 스테이지에서 실시된다.
끝으로, 상기 (블렌딩된) 출력 프래그먼트 데이터(값들)는, 예를 들면 나중 표시용 프레임 버퍼(228)에 출력될 수 있는 곳으로부터 타일 버퍼(224)에 기록된다. 또한, 하나의 출력 프래그먼트에 대한 깊이 값은, 타일 버퍼(224)내 Z버퍼에 적절하게 기록된다. 따라서, 이 타일 버퍼(224)는, 색 및 깊이 버퍼들이 표현하는 샘플링점마다(본질적으로, 처리중인 하나의 타일의 샘플링점마다) 각각 적절한 색, 등 또는 Z값을 저장하는 상기 색 및 깊이 버퍼들을 저장한다. 이 버퍼들은, 전체 렌더 출력(예를 들면, 표시되는 화상)의 구역(하나의 타일)을 표현하는 프래그먼트 데이터의 어레이를 저장하고, 이때 그 버퍼들에서의 샘플 값들의 각각의 세트들이 전체 렌더 출력(예를 들면, 샘플 값들의 각 2×2 세트는 출력 픽셀에 대응할 수도 있고, 여기서 4배 멀티샘플링이 사용중이다)의 각각의 픽셀에 대응한다. 타일 버퍼는, 그래픽 처리 파이프라인(칩)에 위치된(에 국소적인) RAM의 일부로서 제공된다.
상기 타일 버퍼(224)로부터의 데이터는, 다운샘플링(멀티샘플 리졸브) 라이트아웃부(226)에 입력되기 때문에, 외부 메모리 출력 버퍼, 이를테면 하나의 표시장치(미도시됨)의 일 프레임 버퍼(228)에 출력된다(라이트백(written back)된다). 그 표시장치는, 디스플레이 프로세서(미도시됨)에 의해 표시하기 위한 데이터가 제공될 수 있고, 예를 들면, 픽셀들의 어레이로 이루어진 디스플레이, 이를테면 컴퓨터 모니터나 프린터를 구비할 수 있다.
다운샘플링 및 라이트아웃부(226)는, 출력버퍼에 출력하기 위한 (픽셀들에 대한) 출력 데이터 요소들을 발생하기 위해서, 상기 타일 버퍼(224)에 저장된 프래그먼트 데이터를, (즉, 출력장치의 픽셀들에 대응한 픽셀 데이터의 어레이가 발생되도록) 출력버퍼(장치)에 대한 적절한 해상도로 다운샘플링한다. 이에 관해서, 각 구역(타일)은, 각각의 멀티샘플(멀티샘플 안티에일리어싱 또는 "MSAA") 세팅을 구비하고 있어도 된다. 예를 들면, 멀티샘플링 또는 (예를 들면, 2×, 4×, 8×, 16× 등) 멀티샘플링이 주어진 구역(타일)에 사용되지 않을 수도 있다. 고해상도 렌더링을 요구하는 구역들(타일들)은, 예를 들면, 고레벨의 멀티샘플링(즉, 출력 픽셀당 보다 큰 수의 샘플링점들)으로 렌더링되어도 된다.
상기 렌더 출력의 하나의 타일이 처리되었고 그것의 데이터가 저장을 위해 메인 메모리에(예를 들면, 메인 메모리에서의 하나의 프레임 버퍼(228)에) 내보내졌으면, 전체 렌더 출력(예를 들면, 표시되는 프레임(화상))을 발생하기 위해 충분한 타일들이 처리되어 있을 때까지 다음 타일이 처리되는 등 한다. 그리고, 그 프로세스는 다음 렌더 출력(예를 들면, 프레임)에 대해 반복되는 등 한다.
도 2로부터 알 수 있듯이, 그래픽 처리 파이프라인(200)은, 다수의 프로그램 가능 처리나 "셰이더" 스테이지들, 즉 버텍스 셰이더(202), 헐 셰이더(204), 도메인 셰이더(208), 지오메트리 셰이더(210), 및 프래그먼트 셰이더(218)를 구비한다. 이 프로그램 가능 셰이더 스테이지들은, 입력변수가 하나 이상이고 출력변수의 세트들을 발생하는, 각각의 셰이더 프로그램들을 실행한다. 일반적으로, 당해 상기 셰이더 프로그램은, 처리되는 작업 항목(예를 들면, 버텍스 셰이더일 경우에 버텍스)마다 실행될 것이다. 일반적으로, 실행 쓰레드는 처리되는 작업 항목마다 발행되고 나서, 그 쓰레드는 상기 셰이더 프로그램에서의 명령들을 실행하여 원하는 "셰이딩된" 출력 데이터를 생성할 것이다.
상기 애플리케이션(102)은, 고급 셰이더 프로그래밍 언어, 이를테면, GLSL, HLSL, OpenCL, 등을 사용하여 실행되는 상기 셰이더 프로그램들을 제공한다. 그리고, 이 셰이더 프로그램들은, 하나의 셰이더 언어 컴파일러에 의해 타겟 그래픽 처리 파이프라인(200)을 위한 이진 코드로 변환된다. 이것은, 상기 컴파일러내의 그 프로그램의 하나 이상의 내부(중간) 표시의 작성을 포함할 수도 있다. 상기 컴파일러는, 예를 들면, 상기 드라이버(108)의 일부이어도 되고, 이때 컴파일러에 의해 동작하는 전용 API 호출이 있다. 이렇게 하여, 컴파일러 실행은, 애플리케이션에서 발생한 API 호출들에 응답하여 상기 드라이버가 행한 상기, 예를 들면, 드로우 콜(draw call) 준비의 일부인 것처럼 보여질 수 있다.
물론, 상기 그래픽 프로세서(106)에 대한 그 밖의 구성도 가능할 것이다.
본 발명은, 도 1의 상기 그래픽 프로세서(106)가, 상이한 해상도로 렌더 출력의 상이한 구역들(타일들)을 렌더링함으로써, 포비티드 렌더링을 수행하는데 사용중인 상황에 관한 것으로, 그 후, 상이한 해상도 구역들(타일들)이 합성되어 상기 해상도가 그 화상에 걸쳐 달라지는 출력 포비티드 화상을 제공한다.
도 3은 본 발명의 방식으로 렌더링되는 장면(300)의 일례를 도시한 것이다. 상기 장면(300)을 표현할 렌더 출력은, 따로따로 렌더링될 우하부 타일(302)와 같은, 복수의 동등 사이즈의 비중첩 정사각형 구역들(타일들)로 분할된다. 상기 타일 위치들에 대한 x와 y 좌표도 도시되어 있다. 예를 들면, 상기 우하부 타일(302)의 좌표는 3,3이다.
도 3에 도시된 것처럼, 상기 포비티드 렌더링의 주시점(304)은, 상기 장면(300)의 좌상측을 향해 있는 것으로서 판정된다. 따라서, 본 실시예에서, 포비티드 렌더링을 수행할 때, 상기 그래픽 프로세서(106)는, 고해상도로 상기 렌더 출력의 좌상부를 향해 타일들을 렌더링하도록 제어되는 한편, 상기 렌더 출력의 우하부를 향하는 타일들은 순차적으로 저해상도들로 렌더링되고, 이때 상기 상이한 해상도 구역들은 적절하게 합성되어, 예를 들면 표시되는 상기 출력 "포비티드" 화상(출력 프레임)을 제공한다.
포비티드 렌더링이 요구된다는 사실은, 본 실시예에서, 상기 렌더 출력의 상기 구역들이 상기 해상도들과 연관된 스케일링 계수들을 함께 다수의 해상도들로 렌더링되는 상기 그래픽 프로세서(106)용 상기 드라이버(108)를 가리키는 그 렌더링(및 임의의 다른 렌더링, 등, 필요할 수도 있는 구성들)을 요구하는 상기 애플리케이션(102)에 의해 나타내어진다. 상기 애플리케이션(102)으로부터의 상기 코맨드들에 응답하여, 상기 드라이버(108)는, 이제 도 4에서 설명된 상기 프로세스(400)를 참조하여 후술할 방식으로 포비티드 렌더링을 수행하도록 상기 그래픽 프로세서(106)에 보내는 적절한 타일링 태스크와 렌더링 태스크를 구성한다.
도 4에 도시된 것처럼, 본 실시예에 있어서, 단계 402에서, 상기 장면에 대한 지오메트리는, (각기 각각의 구역을 렌더링하기 위한 상기 프래그먼트 처리를 위해) 각기 각각의 구역을 렌더링할 때 공통으로 사용되는(공유되는) 타일 지오메트리 리스트들의 단일의 세트를 한 번만 제공하기 위해, 셋업되고 타일링된다(즉, 상기 프리미티브들은, 각각의 렌더링 타일들에 대해 발생되어 리스트들로 분류된다).
특히, 상기 그래픽 프로세서(106)는, 출력 화상을 위해 요구되는 최고의 해상도로 렌더링중인 상기 장면(300)에 대해 한 번만, 상기 버텍스 위치 처리(셰이딩)와 상기 지오메트리 리스트(프리미티브 리스트들)의 양쪽을 수행하도록 제어된다. 이 프로세스들은, 원하는 대로, 이를테면 이 프로세스들을 위해 상기 그래픽 프로세서(106)의 통상의 동작에 따라 수행되어도 되지만, 렌더링되는 상기 최고의 해상도로 상기 장면(300)에 대한 지오메트리를 사용하여 행해질 것이다.
도 4에 도시된 것처럼, 이렇게 하여 상기 지오메트리 리스트들(상기 타일 리스트들)이 준비되어 있으면, 단계 406에서, 당해 구역에 대한 상기 지오메트리(프리미티브들)는, 그 타일에 대한 적절한 "타일별" 지오메트리 리스트(404)를 사용하여 페치된다.
그 후, 단계 408에서, 상기 지오메트리는, 당해 상기 타일에 대한 원하는 해상도에 대응한 스케일링 계수(412)에 근거하여 적절히 스케일링된다. 본 실시예에서, 상기 스케일링 계수는, (상기 렌더 출력의 각각의 구역들에 대한 스케일링 계수들의 어레이를 포함하는) 상기 애플리케이션(102)에서 제공한 "스케일링 텍스처"(410)를 샘플링함으로써 얻어진다. 상기 스케일링 텍스처(410)는, 상기 렌더 출력내에서 당해 상기 타일의 위치에 대응하는 어레이 장소에서 샘플링된다.
단계 408에서, (스케일링 계수 1인) 최고의 해상도 타일의 경우, 상기 페치된 지오메트리는, 그대로 간단히 사용될 수 있다. 그렇지만, 그 밖의 저해상도 타일들의 경우에는, 최고의 해상도로 준비되어 있는 상기 페치된 지오메트리는, 당해 상기 구역에 대한 적절한 스케일링 계수만큼 축소된다. 이 다운스케일링은 상기 버텍스 위치 로딩 연산의 일부로서 행해지지만, 원하는 경우, 그 밖의 구성도 가능할 것이다.
본 실시예에서는 아래의 식들을 상기 스케일링에 사용한다:
tile_origin = tile_ coord * tile_size
internal_ coord = primitive_ coord - tile_origin
new_ coord = tile_origin + (internal_ coord * scaling factor[ tileID ])
여기서:
tile_size는 샘플링 위치들(픽셀들)에서의 상기 타일의 x 또는 y 사이즈이고;
tile_coord는 상기 렌더 출력에서 상기 타일에 대한 x 또는 y 타일 좌표이고;
tile_origin은 상기 렌더 출력에서 상기 타일의 원점의 x 또는 y 위치이고;
primitive_coord는 상기 렌더 출력에서 상기 프리미티브에 대한 좌표이고;
internal_coord는 상기 타일 원점과 관련하여 상기 프리미티브에 대한 상기 내부 좌표이고;
tileID는 상기 타일에 대한 유일한 식별자이고;
scaling_factor[tileID]는 상기 타일ID를 갖는 타일에 대한 스케일링 계수이고;
new_coord는 상기 타일을 렌더링할 때 사용되는 상기 프리미티브에 대한 상기 스케일링된 좌표이다.
예를 들면, 우하부 구석에 위치되어서 타일 좌표가 3,3인 32×32샘플링 위치(픽셀)의 경우, 상기 타일의 원점의 위치는, 96,96(즉, 32×3,32×3)일 것이다. 그 후, 상기 렌더 출력에서 좌표 112,104인 프리미티브에 대해서, 상기 타일 원점에 관련하여 상기 프리미티브에 대한 상기 내부 좌표들은, 16,8(즉, 112-96, 104-96)일 것이다. 그 후, 상기 타일이 절반의 해상도로 렌더링되어 스케일링 계수를 1/2로 나타낸 경우, 상기 프리미티브를 그래픽 프래그먼트들로 래스터화하고 나서 그 프래그먼트들을 렌더링할 때 사용되는 상기 프리미티브에 대한 상기 스케일링된 좌표는, 104,100(즉, 96+(16*0.5), 96+(8*0.5))일 것이다.
또한, 단계 408에 도시된 것처럼, 원하는 해상도에 따라, 당해 상기 구역에 관해서 래스터화되고 렌더링되는 샘플링 위치들의 적절한 부구역도 선택된다.
도 5는 상기 렌더 출력의 상기 구역들에 관해서 래스터화되고 렌더링되게 선택된 샘플링 위치들의 부구역들을 도시한 것이다. 도 5에 도시된 것처럼, 본 실시예에서, 좌상부 타일은, 풀(full) 해상도로 렌더링되어서, 그 좌상부 타일의 샘플링 위치들 전부를 포함하는 구역(500)은, 래스터화 및 렌더링을 하도록 선택된다.
또한, 도 5에 도시된 것처럼, 본 실시예에서는, 타일들이 상기 좌상부 타일로부터 떨어져 순차적으로 저해상도로 렌더링되어서, 샘플링 위치들의 순차적으로 보다 작은 부구역들이 상기 좌상부 타일로부터 떨어져 래스터화 및 렌더링하도록 선택된다. 예를 들면, 도 5에 도시된 것처럼, 샘플링 위치들의 보다 작은 부구역(502)은 우하부 타일에 관해서 래스터화 및 렌더링을 수행하도록 선택되고, 그 우하부 타일에 관해서 래스터화 및 렌더링되지 않을 샘플링 위치들의 비선택된 부구역(504)을 그대로 둔다. 예를 들면, 절반의 해상도로 렌더링할 때, 상기 샘플링 위치들의 1/2행들과 1/2열들이 선택되고, 이는 상기 샘플링 위치들의 1/4을 포함하는 부구역이 상기 구역에 관해서 래스터화 및 렌더링을 하도록 선택되고 상기 샘플링 위치들의 3/4을 포함하는 비선택된 구역이 상기 구역에 관해서 래스터화 및 렌더링을 하도록 선택되지 않는다는 것을 의미한다.
여기서, 상기 지오메트리 스케일링 및 부구역 선택 프로세스들은, 주어진 부구역이 그래도 비스케일링된 지오메트리와 전체 타일과 같은 상기 장면(300)의 콘텐트를 커버하도록 보장하지만, 이 프로세스들은 보다 적은 렌더링된 데이터 요소들로 그렇게 커버한다는 것을 주목해야 한다. 이에 따라, 갭 없는 렌더 출력이, 예를 들면 각 부구역을 확장하여 그것의 대응한 타일을 채움으로써, 나중에 복구될 수 있다.
또, 도 4를 참조하면, 단계 414에서, 상기 스케일링된 지오메트리는, 샘플링 위치들의 상기 선택된 부구역에 걸쳐 래스터화되고, 그 결과로 얻어진 프래그먼트들은, 상기 타일 버퍼에 기록되는 데이터 요소들의 렌더링된 부구역(416)을 발생하도록 렌더링된다.
이 스테이지에서, 당해 데이터 요소의 상기 부구역에 대해 필요하면, 데이터 요소들의 상기 부구역에도, 균일한 데이터를 표현하는 데이터 요소들을 채워넣는 적절한 행들과 열들이 보충되어, 상기 타일 버퍼에서 데이터 요소들의 상기 어레이는, 데이터 요소들의 면에서 전체 구역이 렌더링되었었다면 상기 구역이 되었을 것이기 때문에 동일한 사이즈이다. 이에 따라, 구역의 저해상도 렌더링은 이후의 처리 스테이지들에 대해 실질적으로 명백할 수 있다. 보다 상세히 후술하듯이, 상기 균일한 데이터도 많이 일반적으로 사용된 압축 방식들로 잘 압축하게 된다.
그 밖의 실시예들에서, 데이터 요소들의 상기 부구역은, 데이터 요소들의 상기 출력 어레이가, 데이터 요소들의 면에서 전체 구역이 렌더링되었었다면 상기 구역이 되었을 것이기 때문에 실질적으로 동일한 사이즈이도록 업스케일되어도 된다. 또, 이에 따라, 구역의 저해상도 렌더링은 이후의 처리 스테이지들에 대해 실질적으로 명백할 수 있다. 이 실시예들에서, 상기 스케일링 계수들은 2의 제곱으로 한정될 수 있고, 상기 업스케일링은 최근접 인접 보간을 포함할 수 있어, 상기 업스케일링은, 동일한 값을 표현하는 데이터 요소들을 인접해지기 쉽다. 또, 실질적으로 유사한 데이터의 상기 부구역들은, 상기 균일한 데이터도 많이 일반적으로 사용된 압축 방식들로 잘 압축하게 된다.
그 후, 단계 418에서, 데이터 요소들의 상기 어레이는, 메모리에서의 상기 버퍼에 출력된다. 상기 렌더 출력의 각종 타일들이 렌더링되었던 해상도들은, 상기 렌더 출력과 함께 저장되어 상기 렌더 출력의 이후의 사용을 용이하게 할 수도 있다. 예를 들면, 상기 스케일링 텍스처는 상기 렌더 출력과 저장되어도 된다.
도 6a는 본 실시예에 따른 상이한 해상도들로 렌더링되어 있는 렌더 출력(600)의 구역들을 도시한 것이다. 이 실시예에서, 상술한 것처럼, 상기 주시점(602)은, 상기 렌더 출력(600)의 좌상부 구석을 향하고 있다. 따라서, 좌상부 타일(604)은 풀 해상도로 렌더링되어 있는 반면에, 우하부 구석, 이를테면 우하부 타일(606)을 향하는 타일들은 순차적으로 저해상도로 렌더링되어 있다. 이 실시예에서, 상기 주시점(602)은, 뷰어의 시선 움직임을 추적하여서 결정되어서, 그 주시점(602)은 반드시 중앙에 있지 않고 프레임별로 이동하여도 된다. 이 때문에, 상기 타일들이 렌더링되는 해상도들은, 뷰어의 머리나 시선 움직임에 따라 프레임별로 변경하여도 된다.
도 6b는 다른 실시예에 따른 상이한 해상도들로 렌더링되어 있는 렌더 출력(608)의 구역들을 도시한 것이다. 이 실시예에서, 상기 렌더 출력(608)은, 32×32 샘플링 위치들(픽셀들)의 5×5타일들로 분할되어 있다. 이 실시예에서, 상기 주시점(610)은, 상기 렌더 출력(608)의 중심을 향한다. 따라서, 중앙의 타일(612)은 풀 해상도로 렌더링되어 있는 반면에, 상기 출력 타일들, 이를테면 주변 타일(614)은 순차적으로 저해상도로 렌더링되어 있다. 이 실시예에서, 포비티드 렌더링은 상기 렌더 출력에 대해 렌즈 왜곡을 보정하기 위해 술통형 왜곡이 실행될 것이기 때문에 사용되고 있고, 따라서 상기 출력 타일들은 축소되어 저해상도로 렌더링될 수 있다. 그러므로, 이 실시예에서 상기 주시점(602)은, 상기 표시된 렌더 출력을 보는데 사용될 상기 렌즈의 중심에 고정된다.
따라서, 상기로부터 알 수 있는 것은, 이러한 포비티드 렌더링을 수행할 때, 최고의 해상도 구역은 (예를 들면, 뷰어가 실제로 주시하고 있는 장소를 식별하기 위해 응시 추적 센서들의 사용으로 결정되어도 되는) 상기 주시점 또는 주시점들의 위치에 따라 상기 렌더 출력의 중심으로부터 벗어나 있어도 되거나, 예를 들면 상기 렌더 출력의 중심에 고정되어도 된다는 것이다.
다시 도 4를 참조하면, 단계 420에서, 상기 프레임버퍼의 콘텐츠는 예를 들면 ARM 프레임 버퍼 압축(AFBC)을 사용하여 압축될 수 있다. 상술한 것처럼, 상기 프레임버퍼의 콘텐츠는 AFBC와, 균일한 데이터의 영역들을 효율적으로 압축하게 되는 그 밖의 유사한 압축 방식들을 사용하여 잘 압축하게 될 것이다. AFBC에 있어서, 예를 들면, 데이터 요소들의 각 16×16 또는 32×8 "AFBC 블록"은, 데이터 요소들의 4개의 2×2 블록들로 각각 분할되는 내부적으로 데이터 요소들의 16개의 4×4 블록들로 이루어진다. 데이터 요소들의 4×4 또는 2×2블록을 위해 필요한 데이터의 양은, 상기 블록의 상기 데이터 요소들이 동일한 데이터를 전부 표현하는 경우 감소될 수 있다. 게다가, 데이터 요소들의 4×4블록에 대한 상기 데이터는, 그 블록이 동일한 데이터를 표현하는 데이터 요소들의 다른 4×4블록의 복사본인 표시로 대체될 수 있다. 이 표시는, 상기 AFBC 블록용 표준 헤더내에 제공되어서, 추가의 비트들이 요구되지 않는다. 그러므로, AFBC는, 상기 렌더링 프로세스에 의해 도입된 균일한 데이터를 효율적으로 인코딩하여서 상기 렌더 출력의 효율적인 저장을 할 수 있고, 무손실 압축 방식의 사용에 의해 AFBC는 잔여 데이터 요소들을 위해 이용한다. 또한, AFBC는 데이터 요소들의 전체 압축 어레이를 압축해제할 필요 없이 상기 압축된 데이터의 4×4블록들로부터 데이터 값들에의 무작위 액세스를 할 수 있다. AFBC는, 예를 들면, US 2013/0034309 또는 US 2013/0195352에 기재되고, 그것들의 전체 내용은 여기서 참고로 포함되어 있다.
그 후, 단계 422에서, 상기 압축된 데이터는 메모리에 라이트백된다. 상기 렌더 출력의 각종 타일들이 렌더링되었던 해상도들은, (예를 들면, 데이터의 상기 압축된 블록들에 대한 헤더들에) 상기 압축된 데이터와 함께 저장되어 이후의 상기 렌더 출력의 이용을 용이하게 할 수도 있다. 상기 렌더 출력(600)은, 원하는 대로 사용될 수 있다. 예를 들면, 그 후, 상기 렌더 출력(600)은, 표시장치에 출력되거나, 텍스처로서 사용될 때 샘플링될 수 있다.
도 7은, 예를 들면 텍스처 매핑에 사용하기 위해, 하나 이상의 데이터 값들을 샘플링 하고 및/또는 얻기 위해, 상이한 해상도들로 렌더링되어 있는 렌더 출력을 샘플링하는 프로세스(700)를 도시한 것이다. 본 실시예에서, 상기 렌더 출력은 상기 그래픽 프로세서에 의해 샘플링되어도 되지만, 그 밖의 실시예들에서 상기 렌더 출력은 다른 적절한 데이터 프로세서, 이를테면 표시를 위한 디스플레이 프로세서에 의해 샘플링되어도 된다. 본 실시예에서, 상기 압축된 렌더 출력은 상기 렌더 출력을 제1 압축해제 및 업스케일링 없이 직접 샘플링된다. 그렇지만, 그 밖의 실시예들에서, 샘플링되는 상기 렌더 출력은 압축되지 않아도 및/또는 압축되어 있지 않아도 된다.
도 7에 도시된 것처럼, 단계 702에서는, 상기 렌더 출력에서 좌표(u,v)를 갖는 샘플링 위치에서 샘플을 요구한다.
그 후, 단계 704에서, 상기 좌표들은, 당해 상기 타일에 대한 스케일링 계수(706)에 근거하여 매핑된 샘플링 위치에 대한 새로운 좌표(u',v')에 매핑된다. 이 실시예에서, 상기 스케일링 계수는 스케일링 텍스처(708)를 샘플링하여서 얻어진다. 상기 스케일링 텍스처(708)는, 상기 렌더 출력내의 당해 타일의 위치에 대응하는 위치에서 얻어진다.
그렇지만, 상술한 것처럼, 그 밖의 실시예들에서, 상기 스케일링 계수는, 대신에 당해 데이터의 상기 압축된 블록에 대한 상기 헤더로부터 얻어질 수도 있다. 이 경우에, 상기 비매핑된 샘플링 위치에 대응하는 관련 16×16 또는 32×8 AFBC 블록에 대한 상기 헤더는, 그 스케일링 계수를 얻도록 판독되어도 되는데, 그 이유는 그 비매핑된 샘플링 위치는 여전히 그 적절한 AFBC 블록내에 속하기 때문이다.
본 실시예에서, 이하의 식들은 상기 매핑을 위해 사용된다:
tile_origin = tile_ coord * tile_size
internal_ coord = sampling_ coord - tile_origin
mapped_ coord = tile_origin + (internal_ coord * scaling factor[ tileID ])
여기서,
tile_size는 샘플링 위치들(픽셀들)에서의 상기 타일의 x 또는 y 사이즈이고;
tile_coord는 상기 렌더 출력에서 상기 타일에 대한 x 또는 y 타일 좌표이고;
tile_origin은 상기 렌더 출력에서 상기 타일의 원점의 x 또는 y 위치이고;
sampling_ coord는 상기 샘플링 위치에 대한 좌표이고;
internal_coord는 상기 타일 원점과 관련하여 상기 샘플링 위치에 대한 상기 내부 좌표이고;
tileID는 상기 타일에 대한 유일한 식별자이고;
scaling_factor[tileID]는 상기 타일ID를 갖는 타일에 대한 스케일링 계수이고;
mapped_coord는 상기 렌더 출력을 샘플링할 때 사용되는 상기 매핑된 샘플링 위치에 대한 상기 매핑된 좌표이다.
예를 들면, 타일 좌표 2,1인 32×32 샘플링 위치(픽셀) 타일에 대해, 상기 타일의 원점의 위치는 64,32(즉, 32×2, 32×1)일 것이다. 그 후, 상기 렌더 출력에서 좌표 80,56을 갖는 샘플링 위치에 대해, 상기 타일 원점과 관련하여 상기 샘플링 위치에 대한 상기 내부 좌표는 16,24(즉, 80-64, 56-32)일 것이다. 그 후, 상기 타일이 1/2의 스케일링 계수를 가지면, 상기 렌더 출력을 샘플링할 때 사용되는 상기 샘플링 위치에 대한 상기 스케일링된 좌표는 72,44(즉, 64+(16*0.5), 32+(24*0.5))일 것이다.
그 후, 단계 710에서는, 상기 매핑된 샘플링 위치에 대응한 관련 4×4 또는 2×2블록에 대한 상기 인코딩된 데이터가 판독되고, 상기 매핑된 샘플링 위치에 대응한 데이터 값은 상기 관련 블록으로부터 샘플링 되고 및/또는 얻어진다. 이에 따라, 본 실시예는, 16×16 또는 32×8 AFBC 블록 전체를 판독하고 디코딩하고 나서 그 디코딩된 블록을 업스케일할 필요성을 피할 수 있다.
도 8은 상기 예를 설명한다. 도 8은 도 3의 상기 장면(300)과 관련하여 원래의 샘플링 위치를 도시한 것이다. 또한, 도 8은 그 원래의 샘플링 위치와, 도 6의 상기 렌더 출력과 관련하여 상기 매핑된 샘플링 위치를 도시한 것이다. 도시된 것처럼, 상기 샘플링 위치는, 적절하게 위와 좌로 이동된다.
상기 설명되어 있는 것들 이외의 실시예들이 생각된다.
예를 들면, 타일에 대한 일정한 해상도 대신에, 타일에 대한 가변 해상도 프로파일을 갖는 것이 가능할 것이다. 이 실시예들에서, 형태 x'=x*계수의 식을 사용한 스케일링 좌표들 대신에, 상기 좌표들은, 형태 x'=x*(a+bx+cy)의 식을 사용하여 스케일링될 수 있었고, 여기서 x'는 새로운 x좌표이고, x와 y는 상기 타일의 원점으로부터 측정된 거리들이고, a, b 및 c는 상수들이다. 이것은, 상기 구간별 일정한 근사화와 반대로, 기본적인 "이상적" 해상도 곡선의 구간별 선형 근사화를 허용할 것이다. 다른 변형은, 형태 x'=x*(a+b*x_global+y*y_global)의 식을 사용하여 상기 좌표들을 스케일링하는 것일 것이고, 여기서 a, b 및 c는 글로벌 상수이고, x_global 및 y_global는 상기 렌더 출력을 위해 상기 주시점까지 측정된 거리들이다. 이것은, 단지 일부 파라미터들만을 갖는 상기 주시점에 근거하여 글로벌 선형 해상도 프로파일을 허용한다.
다른 예를 들면, 상이한 해상도들로 렌더링된 타일들의 경계들에서 보이는 블록 아티팩트들을 위한 잠재성을 감소시키기 위해서, 일부 중첩은, 상기 해상도 레벨간에 부드럽게 혼합하도록 상기 타일 사이에 제공되어도 된다. 달성될지도 모르는 일 방식은, 상기 타일에 대한 상기 선택된 부구역의 외측의 구역도 렌더링 하고 나서, 상기 렌더 출력으로부터 샘플링할 때 인접한 타일들로부터 렌더링된 데이터를 알파 혼합하기 위한 것이다. 이 실시예들에서, 상기 타일러는, 실제의 타일 사이즈보다 큰 타일용 바운딩 박스를 사용하여도 된다.
위로부터 알 수 있는 것은, 본 발명이, 그의 바람직한 실시예에서 적어도, 가변 해상도 렌더링을 수행할 때 효율적이고 유연한 그래픽 처리를 제공할 수 있다는 것이다. 이것은, 적어도 본 발명의 바람직한 실시예들에서, 렌더 출력의 구역에 대한 원하는 해상도를 취득하고 나서, 그 원하는 해상도에 따라, 상기 구역에 대해 렌더링되는 스케일링된 그래픽 지오메트리를 취득하고 상기 구역에 관해서 렌더링되는 상기 구역의 부구역을 선택함으로써, 이루어진다. 그 후, 상기 선택된 부구역은, 원하는 해상도에 따라 렌더링된 데이터 요소들의 부구역을 제공하도록, 상기 스케일링된 그래픽 지오메트리를 사용하여 렌더링될 수 있다.

Claims (31)

  1. 렌더 출력의 구역에 관해서 그래픽 처리를 수행하는 단계-상기 구역은 상기 렌더 출력이 렌더링 목적을 위해 분할되는 복수의 구역들 중 하나이다-이고,
    상기 구역에 대한 원하는 해상도 프로파일을 취득하는 것;
    상기 구역에 대한 상기 원하는 해상도 프로파일에 따라, 상기 구역에 대해 렌더링되는 스케일링된 그래픽 지오메트리를 취득하는 것;
    상기 구역에 대한 상기 원하는 해상도 프로파일에 따라, 상기 구역에 관해서 렌더링되는 상기 구역의 부구역을 선택하는 것; 및
    상기 구역에 관해서 렌더링을 수행하는 것으로서, 상기 스케일링된 그래픽 지오메트리를 사용하여 상기 렌더 출력의 상기 부구역을 렌더링하여서, 데이터 요소들의 렌더링된 부구역을 제공하는 것을 포함하는 것으로 이루어지는, 상기 그래픽 처리를 수행하는 상기 단계; 및
    상기 구역에 관해서, 데이터 요소들의 상기 렌더링된 부구역을 포함하는 데이터 요소들의 출력 어레이를 출력하는 단계를 포함하는, 그래픽 프로세서의 동작방법.
  2. 제 1 항에 있어서,
    상기 구역은, 상기 렌더 출력이 렌더링 목적을 위해 분할되는 복수의 그래픽 처리 타일들 중 하나인 그래픽 처리 타일을 포함하는, 그래픽 프로세서의 동작방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 구역에 대한 상기 원하는 해상도 프로파일을 취득하는 것은, 상기 구역을 위해 나타낸 특별한 스케일링 계수를 취득하는 것을 포함하고;
    상기 구역에 대해 렌더링되는 상기 스케일링된 그래픽 지오메트리를 취득하는 것은, 상기 구역을 위해 나타낸 상기 특별한 스케일링 계수에 따라, 상기 구역을 위해 나타낸 그래픽 지오메트리를 스케일링하는 것을 포함하는, 그래픽 프로세서의 동작방법.
  4. 제 3 항에 있어서,
    상기 구역을 위해 나타낸 상기 스케일링 계수는, 상기 렌더 출력의 복수의 구역들을 위해 제공된, 및 상기 렌더 출력의 복수의 구역들에 각각 대응한, 복수의 스케일링 계수들의 일 세트 또는 어레이에 나타내어지는, 그래픽 프로세서의 동작방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 구역에 관해서 렌더링되는 상기 부구역을 선택하는 것은, 상기 구역에 관해서 렌더링을 행할지를 상기 구역의 샘플링 위치들의 하나 이상의 행들 및/또는 하나 이상의 열들을 선택하는 것을 포함하고;
    상기 구역에 관해서 렌더링을 수행하는 것은, 샘플링 위치들의 상기 선택된 하나 이상의 행들 및/또는 하나 이상의 열들에 관해서 렌더링을 수행하는 것을 포함하는, 그래픽 프로세서의 동작방법.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 구역에 관해서 렌더링되는 상기 부구역을 선택하는 것은, 상기 구역에 관해서 렌더링하기 위한 샘플링 위치들의 하나 이상의 행들 및/또는 하나 이상의 열들을 선택하지 않는 것을 포함하고;
    상기 구역에 관해서 렌더링을 수행하는 것은, 샘플링 위치들의 비선택된 하나 이상의 행들 및/또는 비선택된 하나 이상의 열들에 관해서 렌더링을 수행하지 않는 것을 포함하는, 그래픽 프로세서의 동작방법.
  7. 제 1 항 또는 제 2 항에 있어서,
    데이터 요소들의 상기 출력 어레이를, 상기 구역에 관해서 렌더링되어 있지 않은 샘플링 위치들에 대응하는 데이터 요소들의 하나 이상의 행들 및/또는 하나 이상의 열들로 채워넣는 단계를 더 포함하는, 그래픽 프로세서의 동작방법.
  8. 제 1 항 또는 제 2 항에 있어서,
    데이터 요소들의 상기 출력 어레이를 압축하는 단계를 더 포함하는, 그래픽 프로세서의 동작방법.
  9. 제 1 항 또는 제 2 항에 있어서,
    데이터 요소들의 상기 출력 어레이로부터 샘플링 위치에 대한 데이터 값을 샘플링 하는 및/또는 얻는 단계를 더 포함하고, 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 단계는,
    상기 구역이 렌더링되었던 특별한 해상도에 근거하여 상기 샘플링 위치를 매핑된 샘플링 위치에 매핑하는 것; 및
    상기 매핑된 샘플링 위치를 사용하여 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것을 포함하는, 그래픽 프로세서의 동작방법.
  10. 렌더 출력의 구역에 대응한 데이터 요소들의 출력 어레이로부터의 샘플링 위치에 대한 데이터 값을 샘플링 하는 및/또는 얻는 단계를 포함하되, 상기 구역은 상기 렌더 출력이 렌더링 목적들을 위해 분할되었던 복수의 구역들 중 하나이고, 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 단계는,
    상기 구역이 렌더링되었던 특별한 해상도에 근거하여 상기 샘플링 위치를 매핑된 샘플링 위치에 매핑하는 것; 및
    상기 매핑된 샘플링 위치를 사용하여 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것을 포함하는, 데이터 프로세서의 동작방법.
  11. 제 10 항에 있어서,
    상기 데이터 프로세서는 그래픽 프로세서나 디스플레이 프로세서를 구비하는, 데이터 프로세서의 동작방법.
  12. 제 9 항에 있어서,
    데이터 요소들의 상기 출력 어레이는 데이터 요소들의 압축된 출력 어레이를 포함하고, 데이터 요소들의 상기 압축된 출력 어레이는 상기 매핑된 샘플링 위치를 사용하여 직접 샘플링되는, 그래픽 프로세서의 동작방법.
  13. 제 10 항 또는 제 11 항에 있어서,
    데이터 요소들의 상기 출력 어레이는 데이터 요소들의 압축된 출력 어레이를 포함하고, 데이터 요소들의 상기 압축된 출력 어레이는 상기 매핑된 샘플링 위치를 사용하여 직접 샘플링되는, 데이터 프로세서의 동작방법.
  14. 제 9 항에 있어서,
    데이터 요소들의 상기 출력 어레이로부터 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 단계는, 데이터 요소들의 상기 출력 어레이를 압축해제하는 것 및/또는 업스케일링 하는 것을 포함하지 않는, 그래픽 프로세서의 동작방법.
  15. 제 13 항에 있어서,
    데이터 요소들의 상기 출력 어레이로부터 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 단계는, 데이터 요소들의 상기 출력 어레이를 압축해제하는 것 및/또는 업스케일링 하는 것을 포함하지 않는, 데이터 프로세서의 동작방법.
  16. 렌더 출력의 구역에 관해서 그래픽 처리를 수행하도록 구성된 처리회로-상기 구역은 상기 렌더 출력이 렌더링 목적을 위해 분할되는 복수의 구역들 중 하나이고, 상기 구역에 관해서 그래픽 처리를 수행하는 것은:
    상기 구역에 대한 원하는 해상도 프로파일을 취득하는 것;
    상기 구역에 대한 상기 원하는 해상도 프로파일에 따라, 상기 구역에 대해 렌더링되는 스케일링된 그래픽 지오메트리를 취득하는 것;
    상기 구역에 대한 상기 원하는 해상도 프로파일에 따라, 상기 구역에 관해서 렌더링되는 상기 구역의 부구역을 선택하는 것; 및
    상기 구역에 관해서 렌더링을 수행하는 것으로서, 상기 스케일링된 그래픽 지오메트리를 사용하여 상기 렌더 출력의 상기 부구역을 렌더링하여서, 데이터 요소들의 렌더링된 부구역을 제공하는 것을 포함한다-; 및
    상기 구역에 관해서, 데이터 요소들의 상기 렌더링된 부구역을 포함하는 데이터 요소들의 출력 어레이를 출력하도록 구성된 출력회로를 구비하는, 그래픽 프로세서.
  17. 제 16 항에 있어서,
    상기 구역은, 상기 렌더 출력이 렌더링 목적을 위해 분할되는 복수의 그래픽 처리 타일들 중 하나인 그래픽 처리 타일을 포함하는, 그래픽 프로세서.
  18. 제 16 항 또는 제 17 항에 있어서,
    상기 구역에 대한 상기 원하는 해상도 프로파일을 취득할 때, 상기 처리회로는 상기 구역을 위해 나타낸 특별한 스케일링 계수를 취득하도록 구성되고;
    상기 구역에 대해 렌더링되는 상기 스케일링된 그래픽 지오메트리를 취득할 때, 상기 처리회로는 상기 구역을 위해 나타낸 상기 특별한 스케일링 계수에 따라, 상기 구역을 위해 나타낸 그래픽 지오메트리를 스케일링하도록 구성되는, 그래픽 프로세서.
  19. 제 18 항에 있어서,
    상기 구역을 위해 나타낸 상기 스케일링 계수는, 상기 렌더 출력의 복수의 구역들을 위해 제공된, 및 상기 렌더 출력의 복수의 구역들에 각각 대응한, 복수의 스케일링 계수들의 일 세트 또는 어레이에 나타내어지는, 그래픽 프로세서.
  20. 제 16 항 또는 제 17 항에 있어서,
    상기 구역에 관해서 렌더링되는 상기 부구역을 선택할 때, 상기 처리회로는 상기 구역에 관해서 렌더링을 행할지를 상기 구역의 샘플링 위치들의 하나 이상의 행들 및/또는 하나 이상의 열들을 선택하도록 구성되고;
    상기 구역에 관해서 렌더링을 수행할 때, 상기 처리회로는 샘플링 위치들의 상기 선택된 하나 이상의 행들 및/또는 하나 이상의 열들에 관해서 렌더링을 수행하도록 구성되는, 그래픽 프로세서.
  21. 제 16 항 또는 제 17 항에 있어서,
    상기 구역에 관해서 렌더링되는 상기 부구역을 선택할 때, 상기 처리회로는 상기 구역에 관해서 렌더링하기 위한 샘플링 위치들의 하나 이상의 행들 및/또는 하나 이상의 열들을 선택하지 않도록 구성되고;
    상기 구역에 관해서 렌더링을 수행할 때, 상기 처리회로는 샘플링 위치들의 비선택된 하나 이상의 행들 및/또는 비선택된 하나 이상의 열들에 관해서 렌더링을 수행하지 않도록 구성되는, 그래픽 프로세서.
  22. 제 16 항 또는 제 17 항에 있어서,
    상기 처리회로는, 데이터 요소들의 상기 출력 어레이를, 상기 구역에 관해서 렌더링되어 있지 않은 샘플링 위치들에 대응하는 데이터 요소들의 하나 이상의 행들 및/또는 하나 이상의 열들로 채워넣도록 한층 더 구성되는, 그래픽 프로세서.
  23. 제 16 항 또는 제 17 항에 있어서,
    데이터 요소들의 상기 출력 어레이를 압축하는 압축회로를 더 구비하는, 그래픽 프로세서.
  24. 제 16 항 또는 제 17 항에 있어서,
    데이터 요소들의 상기 출력 어레이로부터 샘플링 위치에 대한 데이터 값을 샘플링 하는 및/또는 얻는 샘플링 회로를 더 구비하고, 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것은,
    상기 구역이 렌더링되었던 특별한 해상도에 근거하여 상기 샘플링 위치를 매핑된 샘플링 위치에 매핑하는 것; 및
    상기 매핑된 샘플링 위치를 사용하여 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것을 포함하는, 그래픽 프로세서.
  25. 제 24 항에 있어서,
    데이터 요소들의 상기 출력 어레이는 데이터 요소들의 압축된 출력 어레이를 포함하고, 데이터 요소들의 상기 압축된 출력 어레이는 상기 매핑된 샘플링 위치를 사용하여 직접 샘플링되는, 그래픽 프로세서.
  26. 제 24 항에 있어서,
    데이터 요소들의 상기 출력 어레이로부터 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것은, 데이터 요소들의 상기 출력 어레이를 압축해제하는 것 및/또는 업스케일링 하는 것을 포함하지 않는, 그래픽 프로세서.
  27. 렌더 출력의 구역에 대응한 데이터 요소들의 출력 어레이로부터의 샘플링 위치에 대한 데이터 값을 샘플링 하도록 및/또는 얻도록 구성된 샘플링 회로를 구비하되, 상기 구역은 상기 렌더 출력이 렌더링 목적들을 위해 분할되었던 복수의 구역들 중 하나이고, 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것은,
    상기 구역이 렌더링되었던 특별한 해상도에 근거하여 상기 샘플링 위치를 매핑된 샘플링 위치에 매핑하는 것; 및
    상기 매핑된 샘플링 위치를 사용하여 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것을 포함하는, 데이터 프로세서.
  28. 제 27 항에 있어서,
    상기 데이터 프로세서는, 그래픽 프로세서나 디스플레이 프로세서를 포함하는, 데이터 프로세서.
  29. 제 27 항 또는 제 28 항에 있어서,
    데이터 요소들의 상기 출력 어레이는 데이터 요소들의 압축된 출력 어레이를 포함하고, 데이터 요소들의 상기 압축된 출력 어레이는 상기 매핑된 샘플링 위치를 사용하여 직접 샘플링되는, 데이터 프로세서.
  30. 제 27 항 또는 제 28 항에 있어서,
    데이터 요소들의 상기 출력 어레이로부터 상기 샘플링 위치에 대한 상기 데이터 값을 샘플링 하는 및/또는 얻는 것은, 데이터 요소들의 상기 출력 어레이를 압축해제하는 것 및/또는 업스케일링 하는 것을 포함하지 않는, 데이터 프로세서.
  31. 컴퓨터 프로그램이 하나 이상의 데이터 프로세서들상에서 작동할 때 청구항 1 또는 10의 방법을 실행하기 위한 컴퓨터 소프트웨어 코드를 갖는 컴퓨터 프로그램 소자.
KR1020190054052A 2018-05-09 2019-05-09 그래픽 처리 KR102669956B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1807558.0A GB2573543B (en) 2018-05-09 2018-05-09 Graphics Processing
GB1807558.0 2018-05-09

Publications (2)

Publication Number Publication Date
KR20190129013A KR20190129013A (ko) 2019-11-19
KR102669956B1 true KR102669956B1 (ko) 2024-05-29

Family

ID=62598156

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190054052A KR102669956B1 (ko) 2018-05-09 2019-05-09 그래픽 처리

Country Status (5)

Country Link
US (2) US10878527B2 (ko)
KR (1) KR102669956B1 (ko)
CN (1) CN110488967B (ko)
GB (1) GB2573543B (ko)
TW (1) TWI839352B (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110324601A (zh) * 2018-03-27 2019-10-11 京东方科技集团股份有限公司 渲染方法、计算机产品及显示装置
GB2578769B (en) 2018-11-07 2022-07-20 Advanced Risc Mach Ltd Data processing systems
GB2583061B (en) 2019-02-12 2023-03-15 Advanced Risc Mach Ltd Data processing systems
KR102582407B1 (ko) * 2019-07-28 2023-09-26 구글 엘엘씨 포비에이티드 메시들로 몰입형 비디오 콘텐츠를 렌더링하기 위한 방법들, 시스템들, 및 매체들
US11792420B2 (en) * 2019-11-04 2023-10-17 Qualcomm Incorporated Methods and apparatus for foveated compression
US11049216B1 (en) * 2020-01-21 2021-06-29 Arm Limited Graphics processing systems
US11030783B1 (en) 2020-01-21 2021-06-08 Arm Limited Hidden surface removal in graphics processing systems
CN113453046B (zh) * 2020-03-24 2022-07-12 腾讯科技(深圳)有限公司 沉浸式媒体提供方法、获取方法、装置、设备及存储介质
CN116347183A (zh) * 2020-06-04 2023-06-27 腾讯科技(深圳)有限公司 一种沉浸媒体的数据处理方法及相关装置
CN111798372B (zh) * 2020-06-10 2021-07-13 完美世界(北京)软件科技发展有限公司 图像渲染方法、装置、设备和可读介质
KR20210158144A (ko) 2020-06-23 2021-12-30 엘지디스플레이 주식회사 게이트 드라이버, 데이터 드라이버 및 이를 이용한 표시장치
US11734787B2 (en) * 2021-09-17 2023-08-22 Qualcomm Incorporated Foveated binned rendering associated with sample spaces
CN116895095A (zh) * 2023-09-11 2023-10-17 新云滕科技有限公司 自动售票机的人脸识别智能判图方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9075560B2 (en) * 2009-12-10 2015-07-07 Microsoft Technology Licensing, Llc Real-time compression with GPU/CPU
US10013731B2 (en) * 2011-06-30 2018-07-03 Intel Corporation Maximizing parallel processing in graphics processors
US9014496B2 (en) 2011-08-04 2015-04-21 Arm Limited Methods of and apparatus for encoding and decoding data in data processing systems
US8542939B2 (en) 2011-08-04 2013-09-24 Arm Limited Methods of and apparatus for using tree representations for representing arrays of data elements for encoding and decoding data in data processing systems
US9607428B2 (en) * 2015-06-30 2017-03-28 Ariadne's Thread (Usa), Inc. Variable resolution virtual reality display system
US10643381B2 (en) * 2016-01-12 2020-05-05 Qualcomm Incorporated Systems and methods for rendering multiple levels of detail
GB2553744B (en) * 2016-04-29 2018-09-05 Advanced Risc Mach Ltd Graphics processing systems
GB2550358B (en) * 2016-05-16 2020-08-26 Advanced Risc Mach Ltd Graphics processing systems
GB2553353B (en) * 2016-09-05 2021-11-24 Advanced Risc Mach Ltd Graphics processing systems and graphics processors
US20180137602A1 (en) * 2016-11-14 2018-05-17 Google Inc. Low resolution rgb rendering for efficient transmission
US11222397B2 (en) * 2016-12-23 2022-01-11 Qualcomm Incorporated Foveated rendering in tiled architectures
CA3057109A1 (en) * 2017-03-22 2018-09-27 Magic Leap, Inc. Depth based foveated rendering for display systems
US11164352B2 (en) * 2017-04-21 2021-11-02 Intel Corporation Low power foveated rendering to save power on GPU and/or display
US10885607B2 (en) * 2017-06-01 2021-01-05 Qualcomm Incorporated Storage for foveated rendering
US10853918B2 (en) * 2017-06-09 2020-12-01 Sony Interactive Entertainment Inc. Foveal adaptation of temporal anti-aliasing
US10713752B2 (en) * 2017-06-09 2020-07-14 Sony Interactive Entertainment Inc. Temporal supersampling for foveated rendering systems

Also Published As

Publication number Publication date
GB201807558D0 (en) 2018-06-20
CN110488967B (zh) 2024-03-01
GB2573543B (en) 2021-10-27
US12026798B2 (en) 2024-07-02
GB2573543A (en) 2019-11-13
US10878527B2 (en) 2020-12-29
US20190347757A1 (en) 2019-11-14
CN110488967A (zh) 2019-11-22
TW201947523A (zh) 2019-12-16
KR20190129013A (ko) 2019-11-19
US20210097642A1 (en) 2021-04-01
TWI839352B (zh) 2024-04-21

Similar Documents

Publication Publication Date Title
KR102669956B1 (ko) 그래픽 처리
KR102455696B1 (ko) 그래픽 처리 시스템
KR102269905B1 (ko) 데이터 처리 시스템
CN110663065B (zh) 用于中央凹形渲染的存储
US10134175B2 (en) Gradient adjustment for texture mapping to non-orthonormal grid
JP5595739B2 (ja) グラフィックスを処理する方法およびそのための装置
US9569811B2 (en) Rendering graphics to overlapping bins
EP2973423B1 (en) System and method for display of a repeating texture stored in a texture atlas
WO2007087538A2 (en) System and method for asynchronous continuous-level-of-detail texture mapping for large-scale terrain rendering
US10089782B2 (en) Generating polygon vertices using surface relief information
US11238639B2 (en) Gradient adjustment for texture mapping to non-orthonormal grid
KR20160046614A (ko) 텍스쳐를 처리하는 방법 및 장치
KR20160032597A (ko) 텍스쳐를 처리하는 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right