KR20170124091A - 그래픽 처리 시스템 - Google Patents

그래픽 처리 시스템 Download PDF

Info

Publication number
KR20170124091A
KR20170124091A KR1020170054070A KR20170054070A KR20170124091A KR 20170124091 A KR20170124091 A KR 20170124091A KR 1020170054070 A KR1020170054070 A KR 1020170054070A KR 20170054070 A KR20170054070 A KR 20170054070A KR 20170124091 A KR20170124091 A KR 20170124091A
Authority
KR
South Korea
Prior art keywords
resolution
images
rendering
image
rendered
Prior art date
Application number
KR1020170054070A
Other languages
English (en)
Other versions
KR102455696B1 (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 KR20170124091A publication Critical patent/KR20170124091A/ko
Application granted granted Critical
Publication of KR102455696B1 publication Critical patent/KR102455696B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based 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
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/37Details of the operation on graphic patterns
    • G09G5/373Details of the operation on graphic patterns for modifying the size of the graphic pattern
    • 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
    • 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/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
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/04Partial updating of the display screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Remote Sensing (AREA)
  • Architecture (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

포비티드 렌더링을 행할 때, 그래픽 프로세서는, 씬에 대한 동일한 관점으로부터 복수의, 예를 들면, 3개의 다른 해상도 버전(64, 65, 66)을 렌더링하도록 제어된다. 그리고, 그 렌더링된 다른 해상도 화상들은, 표시된 출력 “포비티드”화상(출력 프레임)을 제공하도록 적절하게 조합(합성)된다.
상기 씬에 대한 지오메트리는, 렌더링중인 화상들의 렌더링 타일들마다 한번만 처리되어 리스트들로 소팅되어(70), 각기 각각의 해상도 화상(64, 65, 66)을 렌더링할 때 공통으로 사용된 지오메트리 리스트들(71)의 단일의 세트를 제공한다(72, 73, 74).

Description

그래픽 처리 시스템{GRAPHICS PROCESSING SYSTEMS}
본 발명은 그래픽 처리에 관한 것으로, 특히 포비티드(foveated) 렌더링을 행할 때 타일기반 그래픽 처리 시스템의 연산에 관한 것이다.
포비티드 렌더링은, 표시중인 프레임(화상)의 일부("중심와(foveal) 뷰")를 표시하기 위해 고해상도로 렌더링하지만, 그 프레임의 나머지 부분을 저해상도로 렌더링하는 렌더링 기술이다. 이것은, 유저가 직접 주시하고 있는 프레임의 일부가 시각적 수용성을 위해 고해상도로서 렌더링될 필요가 있을 수 있고, 유저가 직접 주시하지 않고 있는 프레임의 주변 영역들이 계속 시각적으로 수용 가능하게 보이면서 저해상도로 렌더링될 수 있다는 사실에 기초한다. 그리고, 이것은, 최고의 필요한 "중심와" 해상도로 표시되는 전체 프레임을 렌더링하기보다는 저해상도로 상기 프레임의 보다 많은 주변 영역들을 렌더링함으로써, 상기 그래픽 처리 유닛(GPU)의 렌더링 부담을 경감시키는데 사용될 수 있다.
포비티드 렌더링은, 일반적으로, 프레임의 고해상도 버전들을 렌더링할 하나 이상의 "주시점들"을 식별하여서 실시되고, 이때 상기 주시점이나 주시점들로부터 멀리 떨어진 영역들은 저해상도로 렌더링된다. 이와 같이 하여, 각 주시점은, 프레임의 최고의 해상도 영역을 가리키고, 일반적으로 눈의 망막의 중심, 즉 중심와에 대응시키기 위한 것이다.
포비티드 렌더링을 행할 때, 상기 프레임의 최고의 해상도 영역의 장소(주시점 또는 주시점들)는 임의의 적절하고 원하는 방식으로 결정되어도 된다. 예를 들면, 머리 추적 또는 시선 추적 시스템의 일부의 형태는, 최고의 해상도로 렌더링되어야 하는 프레임의 영역들을 식별하도록, 유저가 그 화상을 어디를 주시하고 있는지를 식별하려고 하는데 사용되어도 된다.
포비티드 렌더링의 특별한 이용은, 가상현실 디스플레이들(예를 들면, 가상현실 헤드 마운트 디스플레이들(VR HMD들))을 위한 화상들을 렌더링할 때다. 고해상도 헤드 마운트 가상현실 디스플레이들은, 일반적으로 심한 술통형 왜곡의 특징을 갖는 렌즈들을 사용한다. 이것의 효과는 (시선마다) 상기 디스플레이의 중심을 향하는 렌더링된 화상이 확대되는 반면에 그 주변 면적의 크기 모두 압축(축소)되는 것이다. 그리고, 이것의 효과는, 그 주변 영역들이, 유저의 전반적인 시각 효과에 있어서 상당한 손실 없이 중심 확대 영역보다 저품질로 렌더링될 수 있는 것이다.
출원인은, 특히 타일 기반 그래픽 프로세서와 그래픽 처리 시스템의 경우에, 포비티드 렌더링을 행할 때, 그래픽 프로세서와 그래픽 처리 시스템의 연산에 대한 개선을 위한 여지가 남아 있다고 믿는다.
본 발명의 제1 측면에서는, 타일 기반 그래픽 프로세서의 연산방법을 제공하고, 이 방법은,
씬(scene)의 동일한 뷰(view)의 일부 또는 전부이지만 다른 해상도로 나타내는 복수의 화상의 세트를 상기 그래픽 프로세서가 렌더링할 때:
제1 해상도로 렌더링되는 상기 씬에 대해 렌더링될 상기 화상들의 서브영역들마다, 처리될 그래픽 지오메트리(geometry)의 리스트들을 준비하는 단계; 및
상기 제1 해상도로 렌더링될 상기 씬에 대해 준비되어 있는 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링함으로써, 상기 씬의 다른 해상도 뷰들을 나타내는 각각의 화상들을 렌더링하는 단계를 포함한다.
본 발명의 제2 측면에서는, 타일 기반 그래픽 프로세서를 제공하고, 이 그래픽 프로세서는,
렌더링될 화상의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들을 준비하는 지오메트리 리스트 준비회로; 및
상기 지오메트리 리스트 준비회로에서 준비한 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 렌더링될 화상들의 타일들을 렌더링하는 렌더링 회로를 구비하고,
상기 지오메트리 리스트 준비회로는, 한층 더, 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도로 나타내는 복수의 화상의 세트를 상기 그래픽 프로세서가 렌더링할 때, 제1 해상도로 렌더링되는 상기 씬에 대해 렌더링될 상기 화상들의 서브영역들마다, 처리될 그래픽 지오메트리의 리스트들을 준비할 수 있고,
상기 렌더링 회로는, 한층 더, 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도로 나타내는 복수의 화상의 세트를 상기 그래픽 프로세서가 렌더링할 때, 상기 제1 해상도로 렌더링될 상기 씬에 대해 준비되어 있던 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링함으로써, 상기 씬의 다른 해상도 뷰들을 나타내는 각각의 화상들을 렌더링할 수 있다.
본 발명은, 표시를 위한 동일한 뷰의 복수의 다른 해상도 버전을 렌더링할 때(즉, 포비티드 렌더링을 행할 때) 타일 기반 그래픽 프로세서의 연산에 관한 것이다.
타일 기반 렌더링에 있어서, 2차원 렌더 출력 또는 타겟(즉, 표시될 출력 프레임 등의 렌더링 프로세스의 출력)은 통상 "타일들"이라고 하는 보다 작은 면적의 복수의 서브영역으로서 렌더링된다. 그 타일들은, 각각 별개로 렌더링된다. 그리고, 그 렌더링된 타일들은 완전한 렌더링 출력(예를 들면, 표시용 프레임)을 제공하도록 재조합된다. 이러한 구성에서, 상기 렌더 타겟(출력)은, 일반적으로, 사이즈와 형상이 규칙적인 렌더링 타일들(통상, 정사각형들이나 직사각형들 등)로 (면적별로) 분할되지만, 이것은 필수적이지는 않다.
"타일링" 및 "타일 기반" 렌더링에 통상 사용되는 그 밖의 용어들은, "청킹(chunking)"(상기 렌더링 타일들을 "청크들"이라고 함) 및 "버킷" 렌더링을 포함한다. 이후, "타일" 및 "타일링"의 용어는 편의상 사용되지만, 이들 용어는 모든 대체적이고 동등한 용어들과 기술들을 포함하기 위한 것이라는 것을 알아야 한다.
이러한 타일 기반 렌더링의 이점은, 주어진 타일에 보이지 않는 프리미티브들은 그 타일에 대해 처리될 필요가 없기 때문에, 그 타일이 처리될 때 무시될 수 있다는 것이다. 이에 따라 주어진 렌더 출력에 대해 필요한 그래픽 처리의 전반적인 양을 감소시킬 수 있다.
타일 기반 렌더링 시스템에서, 이에 따라, 통상적으로, 예를 들면, 하나의 타일에 실제로 존재하지 않는 지오메트리(예를 들면, 프리미티브들)를 불필요하게 렌더링하는 것을 피하기 위해서, 주어진 렌더링 타일에 실제로 존재하는 처리될 지오메트리(예를 들면, 그래픽 프리미티브들)를 식별하여 아는 것이 바람직하다. 이를 용이하게 하기 위해서, 렌더링될 지오메트리(예를 들면, 프리미티브들)의 리스트들은, 상기 렌더 출력의 서브영역들마다 준비된다. 그 후, 이러한 "지오메트리-리스트들"("프리미티브-리스트들")은, 개개의 렌더링 타일들에 대해 렌더링될 지오메트리(예를 들면, 프리미티브들)를 식별하는데 사용된다.
따라서, 타일 기반 그래픽 처리의 중요한 측면은, 렌더링될 화상이 분할되는 서브영역들에 대해 렌더링하기 위한 지오메트리(예를 들면, 프리미티브들)의 적절한 리스트들을 준비하는 것이다.
본 발명에서, 상기 화상의 서브영역들에 대한 상기 지오메트리(프리미티브)는, 주어진 제1 해상도로 렌더링되는 씬에 대해 발생되지만, 그 제1 해상도로 준비되었던 그 지오메트리 리스트들(예를 들면, 프리미티브들의 리스트들)은 상기 렌더링 프로세스에 요구된 상기 뷰의 각 해상도 버전을 렌더링할 때 사용된다(그리고, 특히, 상기 지오메트리 리스트들이 준비되었던 제1 해상도와 다른 해상도를 갖는 뷰의 버전 또는 버전들을 비롯하여, 상기 지오메트리 리스트들이 준비되었던 제1 해상도와 같은 해상도를 갖는 임의의 뷰에 대해서도 렌더링할 때 사용될 것이다).
이에 관하여, 출원인은, 상기 (동일한) 뷰의 다른( 및 모든) 해상도 버전들을 렌더링하기 위한 적절한 지오메트리 리스트들을 제공하기 위해 씬에 대한 주어진 해상도로 준비된 지오메트리 리스트들을 적절하게 크기를 조정하는 것이 비교적 쉬울 수 있다는 것을 알았다. 그 후, 이것은, 예를 들면, 포비티드 렌더링을 행할 때, 발생될 다른 해상도 화상들에 하나씩 지오메트리 리스트들의 다수의 세트를 준비할 필요가 없기 때문에, 포비티드 렌더링을 행할 때 상기 그래픽 프로세서의 처리 부담을 경감시킬 수 있다.
렌더링되는 렌더링중인 씬의 동일한 뷰의 다른 해상도 버전들에 대응한 복수의 화상의 세트는, 포비티드 렌더링에 사용될 수 있는 화상들의 임의의 적절한 세트(즉, 동일한 관점(동일한 뷰 위치(로부터)를 갖고 동일한 뷰 방향(으로)을 갖는 뷰들)에서 나오지만 다른 해상도를 갖는, 상기 씬의 뷰들을 포함하는 화상들의 세트)일 수 있다.
복수의 화상의 세트에서 뷰의 최고의 해상도 화상이 있고, 이에 따라 뷰의 최고의 해상도가 표시될 고정 위치에 표시될 "중심와" 뷰를 포함할 것이다. 그 후, 예를 들면, 표시중인 출력 프레임의 주변을 향해 상기 주시점으로부터 떨어져 사용 및 표시되어도 되고, 바람직하게는 사용 및 표시되는 상기 뷰의 하나 이상의 저해상도 버전이 있다.
최고의 해상도 뷰와 저해상도 뷰인, 단지 2개의 다른 해상도 뷰가 있을 수 있다. 또는, 뷰에 대한 3개 이상의 다른 해상도 화상들은 최고의 해상도 뷰와 상기 뷰의 2개 이상의 저해상도 화상으로 이루어지게 준비될 수 있다. 바람직한 실시예에서는, 상기 뷰의 3개의 다른 해상도 화상들, 즉 최고의 해상도 화상, "중간" 해상도 화상 및 "최저의" 해상도 화상을 준비한다.
상기 다른 해상도 화상들은, 주어진, 특별한, 및 바람직하게 선택된, 스케일링 계수에 의해, 서로 관계되는 것이 바람직하다. 2개보다 많은 해상도 화상이 있을 때, "인접한" 해상도 화상들의 각기 각각의 쌍의 화상들이 동일한 스케일 계수만큼 서로 관련되어도 된다(그리고, 일 실시예에서는 관련된다)(즉, 다른 해상도 화상들간에 일정한 스케일 계수가 사용된다). 가상현실 헤드 마운트 디스플레이와 같은 일부의 경우에, 최저의 해상도 뷰는 그 밖의 뷰보다 해상도에 있어서 보다 많이 이격될지도 모른다(즉, 즉시 레벨 뷰들이, 예를 들면, 실제로, 부재할 수 있다).
상기 스케일 계수는, 바람직하게는 2의 거듭제곱이다. 하지만, 원하는 경우, 그 밖의 배치를 사용할 수 있다. 바람직한 일 실시예에서, 고해상도 화상은, (해상도 계층에서) 직전의 저해상도 화상의 해상도에 2배이다, 즉 각 화상의 해상도는 2의 배수(또는, 이에 따라 절반의 배수)만큼 상기 해상도 계층에서의 인접한 화상 또는 화상들에 관계된다.
렌더링될 화상들의 각각의 서브영역들로 분류되고, 렌더링될 화상들의 서브영역들에 대해 처리될 그래픽 지오메트리의 리스트들에 포함된 그래픽 지오메트리는, 씬을 렌더링하기 위해 규정된 임의의 적절하고 원하는 그래픽 지오메트리일 수 있다. 바람직한 실시예에서, 상기 그래픽 지오메트리는 그래픽 프리미티브들, 이를테면, 및 바람직하게는, 단순 폴리곤들, 이를테면, 삼각형들, 사각형들, 선들 및/또는 점들을 포함한다.
따라서, 특히 바람직한 실시예에서, 렌더링될 화상의 서브영역들마다 처리될 그래픽 프리미티브들의 리스트들이 렌더링될 상기 씬의 최고의 해상도 뷰에 대해 준비되고 나서, 상기 씬의 다른 해상도 뷰들을 나타내는 각각의 화상들은, 렌더링될 상기 씬의 최고의 해상도 뷰의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링하여서 렌더링된다(그리고, 이에 따라 상기 그래픽 프로세서의 상기 지오메트리 리스트들 준비회로와 렌더링 회로가 구성된다).
그렇지만, 상기 지오메트리 리스트들은, 원하는 경우, 그래픽 프리미티브들 뿐만 아니라, 또는 그래픽 프리미티브들 대신에, 규정될 수 있는 그 밖의 그래픽 지오메트리도 포함할 수 있다.
본 발명에서 렌더링 목적을 위해 렌더 출력(화상들)을 분할하는 렌더링 타일들은, 임의의 적절하고 원하는 상기와 같은 타일들일 수 있다. 상기 렌더링 타일들의 사이즈와 형상은, 예를 들면, 그래픽 프로세서가 이용 및 처리하도록 구성된 타일 구성에 좌우될 수도 있고, 바람직하게는 좌우된다.
상기 렌더링 타일들은, 바람직하게는, 비록 이것이 필수적이지는 않지만, 모두 동일한 사이즈와 형상이다(즉, 바람직하게는, 사이즈와 형상이 규칙적인 타일들이 사용된다). 상기 타일들은, 바람직하게는, 정사각형 또는 직사각형이다. 타일들의 사이즈와 수는 원하는 대로 선택될 수 있다. 바람직한 구성에서, 각 타일은 사이즈에 있어서 16×16 또는 32×32 샘플링 위치다(그렇지만, 이때의 렌더 타겟(렌더링중인 화상)은, 사용중인 렌더 출력 사이즈와 형상에 대해 필요한 것처럼 많은 상기 타일들로 분할된다).
지오메트리(예를 들면, 프리미티브) 리스트들이 준비되는 서브영역들은, 렌더링중인 상기 화상들의 임의의 적절하고 원하는 서브영역들(면적들)일 수 있다.
일 실시예에서, 지오메트리 리스트들이 준비될 수도 있는 화상 서브영역들은, 모두 렌더링 타일들의 정수를 포함한다. 예를 들면, 각 서브영역의 사이즈는, 단일의 렌더링 타일에 해당하도록 될 수 있거나, 또는 이와는 달리, 서브영역의 사이즈는, 하나보다 많은 렌더링 타일에 해당하도록(즉, 타일을 포함하도록) 될 수 있다. 바람직한 일 실시예에서, 각 서브영역은, 단일의 렌더링 타일에 해당한다.
그러나, 다른 실시예에서, 상기 렌더 타겟 서브영역들의 사이즈는, 렌더링 타일들의 부분들에 해당하도록 되어도 된다. 예를 들면, 그 서브영역들의 사이즈는, 타일의 절반, 또는 타일의 사분의 일, 또는 타일의 하나 반 등에 해당(즉, 포함)하도록 되어도 된다.
일 실시예에서, 상기 화상들은, 서브영역들의 단일의 세트(만으로)로 분할된다.
다른 실시예에서, 지오메트리(예를 들면, 프리미티브) 리스트들은, 서브영역들의 적어도 2개의 다른 세트들에 대해 준비되어도 된다.
이 경우에, 프리미티브 리스트들이 준비될 수 있는 렌더 타겟 서브영역들의 세트들은, 바람직하게는, 그 렌더 타겟이 서브영역들의 세트들의 복수의 층에 의해 효과적으로 중첩되도록 배치된다(이때 각 층은 서브영역들의 하나의 세트다). 각 층은, 나머지 층들에 대해 프리미티브 리스트들이 준비될 수 있는 다른 사이즈의 서브영역들을 가져야 하고, 바람직하게는 갖는다. 그 층들(서브영역들의 세트들)은, 가장 바람직하게는 해상도의 레벨들을 점차적으로 감소시킨다(즉, 그들의 서브영역들은 렌더링 타일들의 수를 증가시키는 것을 포함한다).
이들 배치에 따라, 예를 들면, 렌더 타겟이 서브영역들의 복수의 다른 해상도 층의 계층에 의해 효과적으로 커버될 수 있고, 이때 이러한 각 "층"은 각 서브영역이 예를 들면, 및 바람직하게는, 렌더링 타일들의 동일한 수와 렌더링 타일들의 다른 수를 포함하는 다른 "층들"에서의 서브영역들을 포함하는, 복수의 서브영역의 세트로 이루어진다.
이러한 배치들에 의해, 지오메트리 리스트들이 화상(렌더 타겟)의 해상도(즉, 서브면적들로의 분할)의 레벨들을 점차적으로 감소시키기 위해 효과적으로 준비될 수 있다. 이에 따라, 상기 지오메트리 리스트들이 준비되는 해상도가 달라져 제어될 수 있다.
바람직한 실시예에서, 지오메트리(예를 들면, 프리미티브) 리스트들이 준비된 서브영역들의 배치는, 최고의 해상도에서 요구되는 뷰(씬)의 영역들에 근거하여 및 바람직하게는, 이 영역들에 따라, 구성된다.
특히 바람직한 실시예에서, 화상 서브영역 구성(패턴)은, (예를 들면, 단지 씬(출력 프레임)의 좌상 구석에서 시작하는 대신에) 요구될 상기 씬의 최고의 해상도 영역(포비티드 영역)의 중심 둘레에서 대칭적이도록 배치된다. 예를 들면, 고해상도 영역이 예를 들면 a*a 샘플링 위치들일 경우, 상기 화상 서브영역 구성은, 그 영역을 단일의 a*a 샘플링 위치 서브영역이 정확히 커버하도록 설정될 수 있고, 바람직하게는 설정된다(이때, 그에 따라 그 보다 큰 서브영역내의 보다 작은 서브영역들이 구성된다).
렌더링중인 상기 화상들의 주어진 서브영역에 대해 어느 상기 지오메트리를 처리(하여서 상기 화상들의 주어진 서브영역에 대한 지오메트리 리스트에 포함)할 것인지의 식별은, 임의의 적절하고 원하는 방식으로, 예를 들면 임의의 적절하고 공지된 "타일링"(비닝(binning)) 기술을 사용하여 행해질 수 있다. 따라서, 예를 들면, 이 프로세스를 위해서는 정확한 비닝 및/또는 바운딩 박스 바인딩을 사용할 수 있다.
렌더링될 상기 씬에 대해 그래픽 지오메트리의 리스트들(예를 들면, 프리미티브 리스트들)을 준비하는 "제1" 해상도는, 임의의 적절하고 원하는 해상도일 수 있다. 바람직하게는, 그것은, 렌더링될 것이지만 필수적이지 않은 상기 씬의 뷰들 중 하나의 해상도다.
특히 바람직한 실시예에서, 상기 제1 해상도는, 요구될 상기 씬의 최고 해상도 뷰(즉, 상기 "포비티드" 뷰)의 해상도다. 따라서, 바람직한 실시예에서, 렌더링될 상기 씬에 대한 상기 화상들의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들은, 렌더링될 상기 씬의 최고의 해상도 뷰의 해상도로 준비된다.
이에 따라, 바람직한 실시예에서, 상기 화상의 서브영역들에 대한 지오메트리(프리미티브) 리스트들은 상기 씬의 뷰가 렌더링될 최고의 해상도(즉, 복수의 화상의 세트에서 최고의 해상도 화상의 해상도)를 사용하거나 이 최고의 해상도에서 발생되지만, 그 지오메트리 리스트들(예를 들면, 프리미티브들의 리스트들)도 상기 렌더링 프로세스, 예를 들면, 포비티드 렌더링 프로세스에 요구되는 상기 뷰의 저해상도 버전들(저해상도 화상들)을 렌더링할 때 사용된다.
그렇지만, 그 밖의 배치들, 이를테면 렌더링될 상기 씬의 최고의 해상도 뷰의 해상도보다 낮은 해상도로 상기 지오메트리 리스트들을 준비하는 것은, 원하는 경우에 사용될 수 있다.
렌더링될 상기 화상의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들은, 전체 씬이 렌더링되도록(즉, 렌더링될 복수의 화상의 세트의 화상이 커버할(커버할 수 있는) 최대 면적을 커버하도록) 준비되어야 하고, 바람직하게는 준비된다. 달리 말하면, 렌더링될 상기 화상의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들은, 마치 당해 해상도(예를 들면, 복수의 화상의 세트의 최고의 해상도)로 전체 씬을 렌더링하고 있는 중인 것처럼 준비된다.
이에 따라, 또한 이에 대응하게, 예를 들면, 최고의 해상도 화상이 실제로 전체 씬에 대해 렌더링되지 않아도 되고(예를 들면, 뷰의 필드가 보다 작아도 되고), 또한 지오메트리 리스트들이 그 최고의 해상도로 준비되는 경우에, 처리될 그래픽 지오메트리의 리스트들은, 최고의 해상도로 렌더링되는 뷰의 실제의 필드(씬의 일부)가 전체 씬을 포함하지 않아도 되는(그리고, 일반적으로 포함하지 않는) 경우에도, 전체적인 상기 씬의 범위를 위해 준비될 것이다.
지오메트리 소팅(sorting)(리스팅) 프로세스는, 렌더링될 지오메트리(예를 들면, 프리미티브들)의 버텍스들에 대해 적절하게 변환된(버텍스 셰이딩된) 위치들에 관해 연산해야 하고, 바람직하게는 연산(사용)한다.
이에 따라, 바람직한 실시예에서, 상기 화상들의 서브영역들에 대한 지오메트리 리스트들이 발생되기 전에, 상기 화상들의 세트에 대해 처리될 지오메트리의 세트에 대해, 바람직하게는 상기 지오메트리 소팅(리스팅) 프로세스에서 사용하기 위한 적절한 버텍스 셰이딩된 버텍스 위치들의 세트를 제공하도록 적절한 버텍스 셰이딩 연산이 행해진다. 이 버텍스 셰이딩은, 바람직하게는, 상기 지오메트리 소팅(타일링) 프로세스가 행해지고, 그 버텍스 셰이딩의 결과가 상기 서브영역 지오메트리 리스트들을 준비하는데 사용되는, 해상도에서 행해진다.
또, 바람직한 실시예에서, 상기 버텍스 셰이딩은 요구되는 최고의 해상도 화상의 해상도로 행해진다. 또, 상기 버텍스들은, 바람직하게는, 그 최고의 해상도로 모든 씬에 대해 처리된다.
따라서, 특히 바람직한 실시예에서, 상기 버텍스 위치 처리(셰이딩)와 지오메트리 리스트(프리미티브 리스트) 발생 프로세스 양쪽은 제1 해상도(예를 들면, 출력 화상에 요구되는 최고의 해상도)로 한번만 행해진다.
특히 바람직한 실시예에서, 상기 지오메트리 리스트 준비 연산은, 렌더링중인 상기 뷰의 저 및 고 해상도 화상들이 (복수의 화상의 세트의 조합을 포함하는) 전반적인 출력 프레임에서 요구되는 곳을 고려(근거)하도록 구성된다.
따라서, 바람직한 실시예에서, 상기 지오메트리 리스트 준비 프로세스는, 상기 출력 프레임의 서브영역들에 표시되도록 요구될 화상의 해상도를 고려함에 따라서, 상기 지오메트리 리스트들을 준비하도록 구성된다.
예를 들면, 및 바람직하게는, 상기 지오메트리 리스트 준비 연산은, 저해상도 화상만을 표시하는 것이 알려진 상기 출력 프레임의 그 영역들의 보다 큰 서브영역들에 대해서 지오메트리 리스트들을 준비하도록 구성될 수 있다. 예를 들면, 상기 지오메트리 리스트 준비 연산은, 상기 출력 프레임의 엣지들에서 64×64개의 샘플링 위치 서브영역들을 사용하지만, 최고의 해상도 화상이 표시될 중심와점(주시점)에서와 둘레에서 16×16개의 샘플링 위치 서브영역들을 사용할 수 있었다. 따라서, 바람직한 실시예에서, 지오메트리 리스트들을 준비하는 서브영역들의 사이즈는, 그 서브영역들이 관계하는(커버하는) 화상 영역들(면적들)에 표시될 화상(들)의 해상도에 근거하여 선택(제어 및 구성)된다.
이에 대응하게, 그 밖의 연산, 이를테면 (모든 샘플링 위치들을 완전히 놓칠 가능성이 있거나 반드시 놓칠 만큼 작은 프리미티브들 등의 임의의 지오메트리가 식별되어 지워지는) 샘플 인식 타일링은, 당해 서브영역이 표시될 가능성이 있거나 표시될 상기 해상도를 고려하도록 가능하게 및/또는 적절하게 구성될 수 있다.
마찬가지로, 프리미티브들 등은, 저해상도 화상 영역들에서 더 적극적으로 추려내어질 수 있다.
이에 대응하게, 버텍스 위치들이 미리 정의된 그리드에 맞추어지는 경우, 상기 버텍스 위치들이 맞추어지는 그리드의 해상도는, (각각의 서브영역마다) 상기 서브영역들에 대해 상기 화상이 표시될 해상도에 근거하여, 상이한 화상 서브영역들과 다르게 구성될 수 있다.
이러한 연산은, 발생중인 전반적인 출력 프레임의 부분들마다 표시될 상기 해상도에 대한 적절한 정보를 상기 지오메트리 리스트 준비 연산(상기 지오메트리 리스트 처리회로)에 제공함으로써, 실행될 수 있고, 바람직하게는 실행된다. 이 해상도 정보는, 예를 들면, 적절한 메타데이터 및/또는, 그 메타데이터의 일부로서 상기 그래픽 프로세서에 제공된 상태 정보 및/또는 (예를 들면, 타일러 태스크(잡)에서 참조한 디스크립터에서의 상태 등으로서) 당해 그래픽 처리 태스크의 상태 정보로서 제공될 수 있다.
처리될 지오메트리(예를 들면, 프리미티브들)의 리스트들이 화상 서브영역마다 준비되어 있다면, 바람직하게는 상기 지오메트리 리스트들은, 예를 들면 및 바람직하게는, 상기 화상들이 렌더링 중일 때 각각의 렌더링 타일마다 지오메트리(예를 들면, 프리미티브들)가 고려될(즉, 렌더링될) 필요가 있는지를 상기 렌더링 프로세스가 식별 가능하게 하는데 사용하기 위해서 저장된다.
상기 서브영역들에 대한 지오메트리 리스트들이 제1 해상도(예를 들면, 화상들의 세트에서 출력 화상을 위해 요구될 최고의 해상도)로 준비되어 있다면, 그렇게 해서 준비된 지오메트리 리스트들은, 각각의 다른 해상도로 상기 뷰를 나타내는 복수의 화상의 세트를 렌더링하는데 사용되어야 하고, 바람직하게는 사용된다.
이를 행하기 위해서, 그래픽 프로세서는, 요구되는 해상도 화상의 적절한 레벨마다 타일들을 렌더링하기 위해 상기 서브영역들에 대한 지오메트리 리스트들을 사용한다.(이에 관해서, 비록 처리될 지오메트리의 리스트들을 준비할 때 사용되는 서브영역들이 정확히 개개의 렌더링 타일들에 대응하지 않아도 될지라도, 렌더링 타일 기준으로(즉, 상기 출력 화상이 렌더링 목적을 위해 분할되어 있는 렌더링 타일들마다) 상기 화상들의 렌더링이 행해질 것이라는 것을 주목해야 한다)
주어진 화상의 타일을 렌더링하기 위해서, 상기 그래픽 프로세서는, 당해 상기 렌더링 타일을 (적어도 부분적으로) 포함하는 서브영역이나 영역들에 대한 지오메트리 리스트들로부터, 상기 렌더링 타일에 대해 처리될 지오메트리(예를 들면, 프리미티브들)를 결정(식별)하고 나서, 그에 따라 그 지오메트리를 (예를 들면, 및 바람직하게는, 상기 지오메트리(예를 들면, 프리미티브들)를 그래픽 프래그먼트들로 래스터화고 나서 그 그래픽 프래그먼트들을 렌더링하여 렌더링된 출력 그래픽 프래그먼트 데이터를 상기 타일에 제공하여서) 처리할 것이다.
따라서, 제1(예를 들면, 최고의) 해상도로 렌더링될 상기 씬에 대해 준비되어 있던 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링하는 것은, 제1(예를 들면, 최고의) 해상도로 렌더링될 상기 씬에 대해 준비되어 있던 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여, 렌더링 중인 상기 화상( 및 렌더링될 각 화상)의 렌더링 타일들마다 처리될 상기 지오메트리를 결정(식별)하는 것을 포함해야 하고, 바람직하게는 포함한다.
따라서, 본 발명은, 바람직하게는, 요구된 상기 해상도들 중 하나의 해상도로 상기 씬의 뷰를 나타내는 화상을 나타내는 출력 값들의 세트를 발생하도록, 상기 준비된 지오메트리 리스트들을 사용하여 하나 이상의 프리미티브들을 렌더링하는 것을 포함한다. 이것은, 바람직하게는, 요구된 (다른) 뷰마다 행해진다.
렌더링 프로세스는, 예를 들면, 당해 그래픽 프로세서의 특성에 따라 임의의 원하고 적절한 방식으로 행해질 수 있다.
바람직한 실시예에서, 상기 씬의 다른 해상도를 나타내는 각각의 화상들을 렌더링하는 단계는, 바람직하게는, 렌더링 타일에 대한 제1(예를 들면, 최고의) 해상도로 준비된 지오메트리 리스트로부터 상기 렌더링 타일에 대해 처리될 지오메트리(예를 들면, 프리미티브들)를 식별하는 것과, 상기 식별된 지오메트리를 처리하는데 필요한 임의의 지오메트리 셋업 연산들(예를 들면, 프리미티브 셋업 연산들)을 행하는 것과, 상기 식별된 지오메트리를, 렌더링하기 위한 그래픽 프래그먼트들로 래스터화하는 것과, 그 후 상기 지오메트리에 대한 렌더링된 출력 그래픽 프래그먼트 데이터를 상기 타일에 제공하기 위해 상기 그래픽 프래그먼트들을 렌더링(셰이딩)하는 것을 포함한다. 또한, 그 렌더링 프로세스는, 상기 그래픽 프로세서나 그래픽 처리용 파이프라인이, 출력용(예를 들면, 표시용) 지오메트리를 렌더링할 때, 이를테면 숨겨진 표면 제거 연산, 깊이 시험, 스텐실 시험, 블렌딩, 텍스처 매핑 등을 행할 때, 행할 수도 있는 임의의 다른 처리를 포함할 수 있고, 바람직하게는 포함한다.
이에 대응하게, 상기 그래픽 프로세서의 상기 렌더링 회로는, 바람직하게는, 렌더링 타일에 대한 제1(예를 들면, 최고의) 해상도로 준비된 지오메트리 리스트로부터 상기 렌더링 타일에 대해 처리될 지오메트리(예를 들면, 프리미티브들)를 식별하고, 상기 식별된 지오메트리를 처리하는데 필요한 임의의 지오메트리 셋업 연산들(예를 들면, 프리미티브 셋업 연산들)을 행하고, 상기 식별된 지오메트리를, 렌더링하기 위한 그래픽 프래그먼트들로 래스터화하고 나서, 상기 지오메트리에 대한 렌더링된 출력 그래픽 프래그먼트 데이터를 상기 타일에 제공하기 위해 상기 그래픽 프래그먼트들을 렌더링(셰이딩)할 수 있고, 상기 그래픽 프로세서의 상기 렌더링 회로는, 바람직하게는, 렌더링 타일에 대한 제1(예를 들면, 최고의) 해상도로 준비된 지오메트리 리스트로부터 상기 렌더링 타일에 대해 처리될 지오메트리(예를 들면, 프리미티브들)를 식별하고, 상기 식별된 지오메트리를 처리하는데 필요한 임의의 지오메트리 셋업 연산들(예를 들면, 프리미티브 셋업 연산들)을 행하고, 상기 식별된 지오메트리를, 렌더링하기 위한 그래픽 프래그먼트들로 래스터화하고 나서, 상기 지오메트리에 대한 렌더링된 출력 그래픽 프래그먼트 데이터를 상기 타일에 제공하기 위해 상기 그래픽 프래그먼트들을 렌더링(셰이딩)하도록 구성된 처리회로를 구비한다. 또, 상기 그래픽 프로세서의 상기 렌더링 회로는, 바람직하게는 상기 그래픽 프로세서나 그래픽 처리용 파이프라인이, 출력용(예를 들면, 표시용) 지오메트리를 렌더링할 때, 이를테면 숨겨진 표면 제거 연산, 깊이 시험, 스텐실 시험, 블렌딩, 텍스처 매핑 등을 행할 때, 행할 수도 있는 다른 처리를 행할 수 있고, 상기 그래픽 프로세서의 상기 렌더링 회로는, 바람직하게는 상기 그래픽 프로세서나 그래픽 처리용 파이프라인이, 출력용(예를 들면, 표시용) 지오메트리를 렌더링할 때, 이를테면 숨겨진 표면 제거 연산, 깊이 시험, 스텐실 시험, 블렌딩, 텍스처 매핑 등을 행할 때, 행할 수도 있는 다른 처리를 행하도록 구성된 처리회로를 구비한다.
상기 렌더링 프로세스는, 단일의 서브영역 지오메트리만을 사용하여 타일에 대해 처리될 상기 지오메트리를 결정하는 것을 포함할 수도 있거나, 또는, 2개 이상의 서브영역 지오메트리 리스트들에 적어도 부분적으로 타일이 포함되는 경우, 복수의 서브영역 지오메트리 리스트들을 사용하여 타일에 대해 처리될 필요가 있는 상기 지오메트리를 결정하는 것을 포함할 수도 있다.
준비된 지오메트리 리스트들을 사용하여 상기 지오메트리 리스트들이 준비되었던 해상도를 갖는 화상(예를 들면, 최고의(풀(full)) 해상도 화상)을 렌더링할 때, 그것은, 상기 준비된 지오메트리 리스트들이 존재하는 것으로서 상기 준비된 지오메트리 리스트들을 사용하여서만 행해질 수 있고, 바람직하게는 행해진다(그 이유는, 상기 지오메트리 리스트들이 이미 발생될 해상도로 상기 지오메트리를 나타내기 때문이다).
상기 준비된 제1(예를 들면, "최고의"("풀")) 해상도 지오메트리 리스트들은, 임의의 적절하고 원하는 방식으로 상기 뷰의 복수의 화상의 세트의 다른 (예를 들면, 저) 해상도 화상들을 렌더링할 때 사용될 수 있다.
특히 바람직한 실시예에서, 다른 해상도 화상들에 대해 처리될 지오메트리는, 렌더링중인 상기 화상의 해상도를 상기 지오메트리 리스트들이 준비되었던 상기 "제1" 해상도에 관련시키는 적절한 스케일링 계수만큼(예를 들면, 및 바람직하게는, 적절한 2의 거듭제곱의 스케일링 계수, 이를테면 2의 배수만큼) 상기 "제1" 해상도 지오메트리 리스트들에서의 지오메트리를 크기 조정함으로써 상기 "제1" 해상도 지오메트리 리스트(들)로부터 도출된다. 이러한 크기 조정(scaling)은, 바람직하게는, 버텍스 위치 로딩 연산의 일부로서 행해지지만, 그 밖의 배치는, 원하는 경우에, 가능할 것이다.
따라서, 지오메트리 리스트들이 준비되었던 제1 해상도보다 낮은 해상도를 갖는 화상이 렌더링될 경우에, 특히 바람직한 실시예에서, 이 저해상도 화상에 대해 처리될 지오메트리는, 상기 "제1" 해상도 지오메트리 리스트들에서의 지오메트리를 축소함으로써, 바람직하게는 렌더링중인 상기 화상의 해상도를 상기 지오메트리 리스트들이 준비되었던 상기 "제1" 해상도에 관련시키는 적절한 스케일링 계수만큼(예를 들면, 및 바람직하게는, 적절한 2의 거듭제곱의 스케일링 계수, 이를테면 2의 배수만큼) 상기 제1" 해상도 지오메트리 리스트들에서의 지오메트리를 축소함으로써, 상기 "제1" 해상도 지오메트리 리스트(들)로부터 도출된다.
이에 대응하게, 지오메트리 리스트들이 준비되었던 제1 해상도보다 높은 해상도를 갖는 화상이 렌더링될 경우에, 특히 바람직한 실시예에서, 이 고해상도 화상에 대해 처리될 지오메트리는, 상기 "제1" 해상도 지오메트리 리스트들에서의 지오메트리를 확대함으로써, 바람직하게는 렌더링중인 상기 화상의 해상도를 상기 지오메트리 리스트들이 준비되었던 상기 "제1" 해상도에 관련시키는 적절한 스케일링 계수만큼(예를 들면, 및 바람직하게는, 적절한 2의 거듭제곱의 스케일링 계수, 이를테면 2의 배수만큼) 상기 제1" 해상도 지오메트리 리스트들에서의 지오메트리를 확대함으로써, 상기 "제1" 해상도 지오메트리 리스트(들)로부터 도출된다.
출력 프레임의 모든 처리 타일들(즉, 전체적으로)에 대한 각기 다른 해상도 화상들을 발생하는 것만 가능하겠지만(바람직한 일 실시예에서는, 그것이 바로 발생된 것이다), 특히 바람직한 실시예에서, 상기 다른 해상도 화상들은, 바람직하게는, 전반적인 출력 프레임의 주어진, 특별한, 및 바람직하게는 선택된 렌더링 타일들에 대해서만 발생된다. 달리 말하면, 상기 씬의 다른 해상도 뷰들을 나타내는 각각의 화상들의 렌더링은, 바람직하게는, 상기 씬의 완전한 뷰의 전부가 아닌 일부의 뷰를 그 각각의 화상들 중 적어도 하나에 대해 렌더링하는 것을 포함한다. 가장 바람직하게는, 렌더링 중인 복수의 화상의 세트의 화상마다, 그 화상의 전부가 아닌 일부의 화상만이 렌더링된다.
예를 들면, 및 바람직하게는, 최고의 해상도 화상은, 바람직하게는, 상기 최고의(풀) 해상도 화상이 표시되어야 할지도 모르는 출력 프레임의 일부에 대해 렌더링된 타일들에 대해(즉, 상기 주시점 또는 주시점들 둘레를 중심으로 한, 예를 들면 상기 출력 프레임의 중심에 있는 렌더링 타일들에 대해) 적어도 발생된다(바람직하게는, 발생될 뿐이다). 따라서, 상기 최고의 해상도 화상은, 바람직하게는, 표시될 (전체) 출력 프레임의 전부가 아닌 일부의 출력 프레임에 대해서만 발생된다.
이에 대응하게, 상기 저해상도 화상 또는 저해상도 화상들은, 바람직하게는, 적어도 상기 주시점 또는 주시점들로부터(예를 들면, 상기 씬의 중심으로부터) 한층 더 떨어져 있는 그 렌더링 타일들에 대해 발생되지만, 상기 주시점 또는 주시점들에 또는 근처에 있는(예를 들면, 상기 출력 프레임의 중심에 또는 근처에 있는) 그 렌더링 타일들에 대해 발생되지 않을 수도 있고, 바람직한 실시예에서는 발생되지 않는다.
이에 관해서, 출원인은, 최고의(풀) 해상도 화상(즉, 중심와 뷰)이 사용될 출력 프레임의 그 영역들에 대해, 상기 저해상도 화상들은 결코 그 타일들에 표시되지 않을 수도 있다는 것을 알았다. 따라서, 특히 바람직한 실시예에서, 상기 저해상도 화상들은, 사용되지 않는다는 것이 알려지는 타일들(즉, 실제로는 상기 주시점 또는 주시점들에 또는 근처에 있는 타일들)에 대해 발생되지 않는다.
상기 저해상도 화상(들)에서 렌더링될 필요가 없는 타일들의 상기와 같은 하나의 영역 또는 영역들은, 원하는 대로, 예를 들면, 상기 포비티드 렌더링을 위한 주시점 또는 주시점들 및/또는, 최고의 해상도 화상과 저해상도 화상들간의 스케일링 계수에 관한 정보로부터 식별될 수 있다.
따라서, 특히 바람직한 실시예에서, 최고의 해상도 화상은, 전반적인 출력 프레임의 렌더링 타일들의 전부가 아닌 일부의 렌더링 타일을 포함하는 하나의 영역에 대해 렌더링되고, 상기 저해상도 화상 또는 화상들은 최고의 해상도 화상이 렌더링되어 있는 렌더링 타일들의 적어도 일부에 대해서는 렌더링되지 않는다. 이에 대응하게, 바람직한 실시예에서, 최고의 해상도 화상은, 저해상도 화상 또는 화상들이 렌더링되어 있는 상기 렌더링 타일들의 적어도 일부에 대해 렌더링되지 않는다.
마찬가지로, 특히 바람직한 실시예에서는, 풀 해상도 화상의 중심부만이 렌더링된다(즉, 상기 풀 해상도 화상의 엣지에서의 렌더링 타일들이 렌더링되지 않는다). 이에 대응하게, 바람직한 실시예에서, 저해상도 화상에 대해, 바람직하게는 저해상도 화상마다, 그 화상의 중심에 있는 하나 이상의 렌더링 타일들이 렌더링되지 않는다(하지만, 그 화상의 엣지에서의 렌더링 타일들이 렌더링되는 것이 바람직하다).
바람직한 실시예에서, 렌더링될 필요가 없는 화상에서의 임의의 렌더링 타일들은, 렌더링 프로세스가 당해 상기 화상(들)에 대한 그 타일들의 렌더링을 피하게(생략하게) 하도록, 상기 렌더링 프로세스에 지시된다.
이 정보는, 임의의 적절하고 원하는 방식으로 상기 렌더링 프로세스에 지시될 수 있다. 예를 들면, 상기 그래픽 프로세서의 드라이버는, 화상(예를 들면, 저해상도 화상들)에서 렌더링되지 않는 타일들을 제외하도록 렌더링 태스크들을 구성할 수 있다. 예를 들면, 화상용 상기 렌더링 프로세스는, 불필요한 타일들을 제외하는 복수의 렌더링 태스크로 분할될 수 있다. 상기 드라이버가 예를 들면, 렌더링될 타일들의 리스트를 렌더링 태스크에 제공하는 경우에, 상기 드라이버는, 단지 화상(들)에 대한 렌더링 프로세스로부터 생략될 타일들을 생략하도록 구성될 수 있다. 또한, 또는 이 대신에, 타일들이 화상에 대해 렌더링되지 않아야 하는 면적(예를 들면, 직사각형)을 식별하는, 예를 들면, "렌더 제외 영역"을 나타내는 것이 가능할 것이다.
특히 바람직한 실시예에서, 상기 출력 프레임의 각 렌더링 타일은, 해상도 화상 또는 화상들(디테일의 레벨(들))이 그 타일 장소에 대해 생성되어야 하는 표시와 관련되어 있다. 이 정보는, 상기 서브영역들에 대한 지오메트리 리스트들과 함께 제공되어도 되고, 바람직한 실시예에서는 제공된다. 물론, 그 밖의 배치도 가능할 것이다.
그 후, 렌더링 타일(그리고 타일 장소)마다, 대응하게 나타내어진 해상도 화상들(디테일의 레벨(들))이 발생된다.
물론, 다른 해상도 화상들내의 선택된 타일들의 렌더링을 상기 렌더링 프로세스에 생략시키는 그 밖의 배치도, 원하는 경우에 사용될 수 있다.
상기 실시예들에서는, 주어진 출력 프레임에 대해서, 예를 들면 및 바람직하게는, 타일들이 렌더링될 상기 포비티드 화상에 대한 주시점 또는 주시점들과 관련되어지는 장소에 따라, 상기 출력 프레임의 타일들의 일부를 단일의 해상도(디테일의 레벨)로만 렌더링하는 반면에, 상기 출력 프레임의 나머지 타일들을 해상도의 2개(또는 그 이상)의 레벨로 렌더링할 수도 있다는 것을 알 것이다.
예를 들면, 디테일의 레벨이 3인 4k*4k 출력 화상을 렌더링하고, 상기 주시점(중심와 뷰)이 씬의 중심에 있다고 가정하면, 바람직한 실시예에서, 상기 렌더링 프로세스는, 1k*1k 샘플링 위치들을 커버하는, (주시점 둘레의) 출력 프레임의 중심에 대한 하나의 1k*1k 풀 해상도 화상; ((상술한 것처럼) 상기 풀 해상도 화상이 표시되기만 할 (주시점 둘레의) 중심에서의 구멍들도 가질 가능성이 있고, 바람직하게는 갖는) 2k*2k 샘플링 위치들을 커버하는 하나의 1k*1k 하프(half) 해상도 화상; 및 (또, 풀 해상도 및/또는 하프 해상도 화상이 표시되기만 할 (주시점 둘레의) 출력 프레임의 중심에서의 구멍들도 가질 가능성이 있고, 바람직하게는 갖는) 4k*4k 샘플링 위치들을 커버하는 하나의 1k*1k 쿼터 해상도 화상을, 발생하도록 연산한다.
바람직하게는, 각기 다른 해상도 화상들은 별도의 출력 표면으로서 발생되고, 이때의 상기 다른 해상도 화상들은 표시되는 최종("포비티드") 출력 프레임을 제공하도록 적절하게 조합된다.
이하, 보다 상세하게, 최종의 출력 표면을 제공하기 위해 상기 다른 해상도 화상들을 조합하는 프로세스에 대해서 설명한다.
따라서, 바람직한 실시예에서, 렌더링중인 복수의 화상의 세트에서의 각 화상은, 별도의 화상으로서 발생되고, 예를 들면, 및 바람직하게는, 상기 그래픽 프로세서가 일부인 전체 데이터 처리 시스템의 메인 메모리에서, 예를 들면 및 바람직하게는 각각의 출력 프레임(프레임 버퍼)로서 저장된다. 각기 다른 해상도 화상들이 렌더링되어 있으면, 그 다른 해상도 화상들은, 바람직하게는, 표시될 전체 "포비티드" 출력 화상을 적절하게 제공하도록 조합된다.
이에 관하여, 각기 다른 해상도 화상들을 별도로 차례로 발생하는 것이 가능할 것이지만, 특히 바람직한 실시예에서, 그 다른 해상도 화상들에 대한 타일들의 렌더링이 인터리브 된다. 예를 들면, 주어진 타일에 대해, 2개의 다른 해상도 화상들을 발생할 경우, 바람직한 실시예에서, 상기 타일은, 상기, 예를 들면, 제1 해상도로 발생되고 나서, 상기, 예를 들면, 제2 해상도로 발생된 후, (그 후 다시, 예를 들면, 제1 해상도 후 제2 해상도로 발생되어도 되는) 다음의 타일을 발생하는 것 등으로 진행한다. 이것은, 예를 들면, 타일에 대한 동일한 지오메트리 리스트들을 반복적으로 재로딩할 필요가 없을 수도 있기 때문에, 렌더링 효율을 향상시키는데 도움이 될 수 있다.
렌더링중인 상기 화상의 해상도에 따라 상기 지오메트리 리스트들에서의 지오메트리를 (필요한 경우) 적절하게 크기 조정을 하는 것을 비롯하여, 특히 바람직한 실시예에서, 상기 뷰의 다른 해상도 화상들의 렌더링은, 바람직하게는, 렌더링중인 상기 화상의 해상도(디테일의 레벨)에 따라(에 근거하여) 구성된다(달라진다).
따라서, 특히 바람직한 실시예에서, 렌더링 프로세스용 하나 이상의 렌더링 파라미터는, 렌더링중인 상기 화상의 해상도에 근거하여 설정된다.
예를 들면 및 바람직하게는, 안티 앨리어싱(예를 들면 및 바람직하게는, 멀티샘플링 카운트)은, 렌더링중인 해상도 레벨(디테일의 레벨)에 근거하여 선택(설정)될 수 있고, 바람직하게는 선택(설정)된다. 이에 대응하게, 상기 프래그먼트 셰이딩 주파수는, 렌더링 중인 해상도 레벨에 따라 달라질 수 있고, 바람직하게는 달라진다. 추가로, 또는 이와는 달리, 샘플별 셰이딩은, 렌더링중인 뷰의 해상도의 레벨에 따라 사용 가능 또는 사용 금지될 수 있다.
따라서, 특히 바람직한 실시예에서, 상기 뷰의 다른 해상도 화상들에 대한 렌더링 프로세스는, 다른 멀티샘플 카운트 및/또는, 최고의(풀) 해상도 중심와 뷰 화상과 저해상도 비중심와 뷰 화상들간의 프래그먼트 셰이딩 주파수를 사용한다.
그 후, 이에 따라, 렌더링중인 고해상도 화상과 저해상도 화상이 다른( 및 적절한) 품질로 렌더링될 수 있고, 그것을 행하는 것이 가능하고 적절할 경우 그래픽 프로세서에 처리 부담을 한층 더 감소시킬 수 있다.
상술한 것처럼, 바람직한 실시예에서, 적어도 본 발명의 연산은 동일한 뷰의 복수의 화상의 세트를 생성하고, 이때의 각 화상은 주어진 해상도로 상기 뷰의 일부 또는 전부를 나타낸다. 표시될 전반적인 출력 프레임을 제공하려면, 상기 복수의 다른 해상도 화상들은, 최종의 전반적인 출력 화상을 제공하기 위해 적절하게 조합(합성)되어야 하고, 바람직하게는 조합(합성)된다. 이러한 상기 다른 화상의 조합은, 중심와 주시점 또는 주시점들에서 최고의 해상도 뷰를 표시하지만, 그 저해상도 화상이나 화상들을 상기 주시점이나 주시점들로부터 멀리(예를 들면, 출력 프레임의 주변을 향해) 표시하는 것을 포함해야 하고, 바람직하게는 포함한다.
전반적인 출력 프레임에서 임의의 주어진 위치에 대해 해상도 화상을 표시하기 위한 선택은, 원하는 대로, 예를 들면 및 바람직하게는, 포비티드 렌더링을 행할 때 당해 그래픽 프로세서와 그래픽 처리 시스템에 사용되는 방식으로, 행해져 나타내어질 수 있다.
예를 들면, 적절한 머리 추적 또는 시선 추적 정보는, 상기 출력 프레임에서 및/또는, 가상현실 헤드 마운트 디스플레이의 경우에, 상기 출력 프레임의 중심이 최고의 해상도 화상을 표시해야 하는 영역으로서 식별되어 나타내어질 수 있는 경우에 어느 해상도 화상이 표시되어야 하는지를 식별하는데 사용될 수 있었고, 이때의 상기 출력 프레임의 주변을 향하는 영역들은 저해상도로 표시된다.
이에 관하여, 표시된 출력 프레임에서 임의의 주어진 위치(예를 들면, 타일 장소)에서 표시하기 위해 상기 화상들 중 하나(예를 들면, 최고의해상도 화상 또는 하나의 저해상도 화상)를 선택하는 것만이 가능할 것이다. 그렇지만, 특히 바람직한 실시예에서, 각종 다른 화상은, 상기 전반적인 출력 화상을 제공하기 위해 적절하게 조합된다. 바람직하게는, 이것은, 한쪽의 해상도 화상으로부터 다른 쪽의 해상도 화상으로 트랜지션이 있는 상기 출력 프레임의 영역들에서 다른 해상도 화상들의 적절한 보간(필터링)에 의해 행해진다.
바람직하게는, 상기 그래픽 프로세서의 필터링 회로(하드웨어)는, 표시된 출력 프레임을 제공하기 위해 상기 다른 해상도 화상들을 샘플링하여 조합된다.
가장 바람직하게는, 2중 선형 필터링은 단일 해상도 화상내에서 샘플링하는데 사용되고, 3중 선형 필터링은 요구될 때 2개의 다른 해상도 화상들들 사이에서 샘플링하고 필터링하는데 사용된다.
상기 출력 프레임을 제공하기 위해 상기 다른 해상도 화상들의 적절한 조합은, 임의의 적절하고 원하는 방식으로 행해질 수 있다. 특히 바람직한 실시예에서, 이것은, 상기 그래픽 프로세서의 텍스처 매핑 회로를 사용하여, 가장 바람직하게는 상기 그래픽 프로세서의 텍스처 매핑 보간회로를 사용하여 행해진다.
따라서, 특히 바람직한 실시예에서, 렌더링된 복수의 화상의 세트에서 다른 해상도 화상들은 상기 그래픽 프로세서에 입력되도록 각각의 텍스처 맵으로서 처리되고 나서, 상기 그래픽 프로세서는, 예를 들면 표시될 전반적인 최종의, "포비티드" 출력 화상을 제공하기 위해 그 텍스처 맵들을 사용하는 경우 렌더링 패스(pass)를 행한다.
특히 바람직한 실시예에서, 상기 다른 해상도 화상들은, 마치 밉맵들의 세트의 각기 각각의 밉맵 레벨인 것처럼 (텍스처 밉맵으로서) 처리되고 나서, 상기 출력 프레임은 예를 들면 및 바람직하게는 적절한 필터링 프로세스를 사용하여서 상기 밉맵들의 상기 세트로부터 적절하게 샘플링함으로써 발생된다.
이 연산을 용이하게 하기 위해서, 상기 밉맵 텍스처를 샘플링할 때 설정되어 사용된 디테일의 레벨은, 바람직하게는, 샘플링중인 전반적인 출력 프레임내의 장소에 따라(예를 들면, 및 바람직하게는, 상기 포비티드 화상에 대한 주시점에 대해 상기 출력 프레임에서의 위치에 근거하여) 달라진다.
특히 바람직한 실시예에서, 상기 다른 해상도 화상들을 포함하는 상기 밉맵을 샘플링하는데 사용되는 디테일 선택의 레벨은, 샘플링중인 해상도 레벨에서 당해 상기 위치에 이용 가능한 실제의(규정된, 렌더링된) 데이터가 있는 것을 보장하도록 상기 출력 프레임에서의 장소에 따라 선택(설정)된다.
가장 바람직하게는, 상기 뷰의 다른 해상도 화상들을 포함하는 상기 밉맵을 샘플링할 때 사용된 디테일의 샘플링 레벨은, 상기 출력 프레임에서 주어진 위치에 대해 규정된 콘텐트(즉, 렌더링된 데이터)를 갖는 가장 상세한 해상도 화상(밉맵 레벨)이 항상 그 위치에 대해 샘플링되도록( 및/또는(그리고 바람직하게는) 한쪽의 밉맵 레벨(해상도의 레벨)로부터 다른 쪽의 밉맵 레벨로 "부드럽게" 상기 샘플링이 천이하게 연산하도록) 구성 및 설정된다.
특히 바람직한 실시예에서, 사용되는 디테일의 레벨은, 상기 주시점에 또는 근처의 위치들에 대해 최고의 해상도 화상(밉맵 레벨)을 샘플링하도록 설정되지만, 주시점으로부터 한층 더 떨어져 있는 출력 프레임내의 위치들에 대해서는, 상기 디테일의 레벨은, 바람직하게는, 우선적으로 상기 저해상도 화상들로부터 선택하도록, 및/또는(그리고, 바람직하게는) 고해상도 화상의 엣지 둘레의 저해상도 화상들에 보다 부드럽게 천이시키도록 편향되어 있다.
특히 바람직한 실시예에서, 상기 다른 해상도 화상들은, 각 밉맵 레벨이 동일한 물리적 치수를 갖지만, 마치 그 물리적으로 저장된 데이터가 보다 큰 "가상" 레벨의 중심에 대한 데이터인 것처럼 해석되도록, 밉맵 텍스처로서 배치된다. 이에 따라, 그 후, 상기 밉맵을 샘플링할 때 디테일의 레벨은, "트루(true)"(규정된(렌더링된)) 데이터가 항상 상기 출력 프레임에서 주어진 위치에 대해 샘플링되는 것을 보장하도록 설정될 것이다.
바람직하게는, 각기 다른 해상도 화상은 동일한 물리적 사이즈를 갖도록(즉, 동일한 수의 샘플링 위치들을 차지하도록) 구성되지만, 그후, 그것의 해상도에 따라, 상기 데이터는 보다 큰 가상 밉맵 레벨의 중심이라고 생각되고, 이때의 상기 보다 큰 가상 레벨의 사이즈는 당해 상기 화상의 해상도에 좌우된다.
예를 들면, 해상도(디테일)의 3개의 레벨이 각각 그들 사이의 2의 스케일링 계수를 갖는 4k*4k 출력 프레임에 대해서는, 본 배치에 있어서, 최고의 밉맵 레벨, 레벨 0은, 바람직하게는 최고의 해상도로 상기 뷰의 중심을 포함하는 1k*1k 텍스처로서 저장되지만, 실제로 저장된 1k*1k 부분이 중심인 4k*4k 레벨로서 처리된다(이때 상기 레벨의 나머지는 무시된다). 이에 대응하게, 또, 다음의 저 밉맵 레벨, 레벨 1은, 바람직하게는, 1k*1k 텍스처로서 저장되지만, 하프 해상도로 상기 출력 프레임의 중심을 포함한다(그리고, 이에 대응하게, 그것은, 실제로 그 중심에 본 1k*1k 데이터가 있는 2k*2k 레벨로서 처리되고, 이때 그 레벨의 결과는 무시된다). 또, 제3 밉맵 레벨, 레벨 2는, 바람직하게는 1k*1k 텍스처로서 저장되지만, 그것은 쿼터 해상도로 상기 씬의 중심을 포함하고 풀 1k*1k 레벨로서 처리된다.
이 배치들에 있어서, 2보다 큰 상기 밉맵 텍스처 레벨들은, 규정되어 있지 않은 채로 있고 사용될 수 없거나, 상기 뷰의 한층 더 낮은 해상도 버전들, 예를 들면, 레귤러 텍스처로서 저장하는데 사용될 수 있다.
비록 표시될 씬의 주어진 뷰를 나타내는 다른 해상도 화상들의 발생을 특별히 참조하여 본 발명을 상술하였지만, 당업자라면 알 수 있듯이, 본 프로세스는, 바람직하게는, 표시될 복수의 뷰에 대해, 예를 들면 및 바람직하게는, 포비티드 렌더링을 사용하여 표시될 연속적인 출력 프레임들의 시퀀스에 대해 반복된다.
이에 대응하게, 표시중인 화상들이 가상현실 디스플레이를 위한 것인 (따라서, 복수의 다른 관점, 이를테면 (씬의 2개의 화상, 즉 상기 좌안에서 본 것 같은 상기 씬에 대응한 화상과, 상기 우안에서 본 것과 같은 상기 씬에 대응한 화상이 발생되고 나서, 상기 화상들이 보여질 때 적절하게 3차원 효과를 제공하도록 표시되는) 입체 렌더링을 위한 "좌안" 뷰와 "우안" 뷰로부터 씬의 복수의 다른 뷰를 렌더링하는 것을 포함하는) 경우에, 렌더링될 각기 다른 뷰, 예를 들면 및 바람직하게는 좌안 화상과 우안 화상의 양쪽은, 바람직하게는, 본 발명의 방식으로 포비티드 렌더링을 사용하여 렌더링된다.
상기로부터 알 수 있듯이, 본 발명은, 포비티드 렌더링을 행할 때 그래픽 프로세서의 연산에 관한 것이다. 따라서, 바람직한 실시예에서는, 먼저, 상기 그래픽 프로세서가 포비티드 렌더링을 행하는 것(다른 해상도의 씬의 동일한 뷰의 일부 또는 전부를 나타내는 복수의 화상의 세트를 렌더링하는 것)을 인식하고 나서, 그에 따라 본 발명의 방식으로 상기 연산을 기동한다.
그것은, 상기 그래픽 프로세서가 임의의 적절하고 원하는 방식으로 포비티드 렌더링을 행할 때(씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도로 나타내는 복수의 화상의 세트를 렌더링할 때) 인식(결정)될 수 있다.
바람직한 실시예에서, 이것은, 예를 들면 및 바람직하게는 포비티드 렌더링이 요구되는 것을 나타내는 그래픽 처리를 필요로 하는 애플리케이션에 의해 제공중인 예를 들면 및 바람직하게는 그래픽 프로세서에 의해 실행될 그래픽 처리 태스크나 태스크들과 관련된 정보, 이를테면 상태 정보 및/또는 메타데이터로부터 결정되어도 되고, 바람직하게는 이로부터 결정된다. 예를 들면, 상기 그래픽 프로세서에 의한 그래픽 처리를 필요로 하는 애플리케이션은, 포비티드 렌더링이 행해지고 있는 중인 그래픽 처리 연산들을 요구할 때 표시를 제공하여도 된다.
특히 바람직한 실시예에서, 상기 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도로 나타내는 복수의 화상의 세트를 렌더링하는 포비티드 렌더링이 행해진다는 사실은, 그래픽 렌더링을 필요로 하는 애플리케이션이 그 렌더링을 필요로 하는 것을 나타내는데 사용될 수 있는 함수 호출에 의해 나타내어진다. 예를 들면, OpenGL API의 경우에, 이것은, 적절한 함수 호출의 이용에 의해 인식될 수 있고, 예를 들면, 그것은, 예를 들면, OpenGL/Open GL ES의 확장으로서 멀티뷰 렌더링을 나타내는데 사용되는 OVR_멀티뷰 함수 호출과 같다. 이 함수 호출의 이용(예를 들면, API 확장)은, 예를 들면 및 바람직하게는, 상기 그래픽 프로세서의 드라이버에 의해, 포비티드 렌더링이 요구되는 것을 나타내도록 인식될 수 있다(이때의 드라이버는, 본 발명의 방식으로 상기 그래픽 프로세서를 기동시켜 상기 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도들로 나타내는 복수의 화상의 세트의 렌더링을 행한다). 그 밖의 그래픽 API들(애플리케이션 프로그래밍 인터페이스들)에 대응한 배치들을 사용할 수 있다.
바람직하게는, 애플리케이션은, 예를 들면 함수 호출을 거쳐, 상기 지오메트리가 상기 다른 해상도 뷰들과 연관된 원하는 스케일 계수와 함께 다중 뷰(표면)에 대해 렌더링되는 것을 나타낼 수 있다. 또한, 애플리케이션, 예를 들면, 함수 호출은, 멀티샘플 구성/샘플별 셰이딩 구성 등의 프리뷰 지오메트리 리스팅 파라미터 및/또는 렌더링 파라미터, 및/또는 어떤 해상도로 어느 타일들을 렌더링해야 하는지를 나타내는 것이 가능할 수도 있고, 바람직한 실시예에서는 나타낼 수 있다.
물론, 그 밖의 배치도 가능할 것이다. 예를 들면, 당해 그래픽 처리 태스크들이 다수의 프레임 버퍼를 생성하고, 및/또는 실행될 셰이더 프로그램이 특별한 변수 또는 변수들을 사용하는 것을 인식할 수 있다.
상기 그래픽 프로세서가 상기 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도들로 각각 나타내는 복수의 화상의 세트를 렌더링하는 것을 인식하면, 본 발명의 방식으로 상기 그래픽 프로세서의 연산은, 임의의 적절하고 원하는 방식으로 기동될 수 있다(상기 그래픽 프로세서는, 임의의 적절하고 원하는 방식으로 본 발명의 방식으로 연산하도록 구성될 수 있다).
바람직한 실시예에서, 상기 그래픽 프로세서용 상기 드라이버는, 다른 해상도 화상들간의 적절한 스케일 계수를 갖는 본 발명의 방식으로 복수의 화상의 세트를 렌더링하기 위해 상기 그래픽 프로세서에 지시한다(상기 그래픽 프로세서에 코맨드들을 발행한다).
이에 대응하게, 상기 화상들의 세트를 렌더링할 때 상기 그래픽 프로세서에서 실행할 버텍스 셰이딩 프로그램 및/또는 프래그먼트 셰이딩 프로그램과 같은 어떠한 셰이딩 프로그램들도, 적절하게 구성되는 것이 바람직하다. 바람직하게는, 이것은, (상기 그래픽 처리 시스템용 컴파일러 처리 회로에 의해) 상기 그래픽 프로세서(그래픽 프로세서의 임의의 셰이더)를 위해 상기 컴파일러에 의해 행해진다.
(상기 컴파일러는, 예를 들면 및 바람직하게는, 호스트 프로세서상에서 실행하는 그래픽 처리 파이프라인용 드라이버의 일부로서, 예를 들면 및 바람직하게는, 상기 그래픽 처리를 요구하고 있는 애플리케이션이 실행하는, 예를 들면, 그래픽 처리 시스템의 호스트 프로세서상에서 실행하여도 된다(그리고, 바람직한 실시예에서는, 그래픽 처리 시스템의 호스트 프로세서상에서 실행한다). 물론, 그 밖의 배치도, 원하는 경우, 가능할 것이다.)
상기로부터, 본 발명에 있어서, 지오메트리 리스트 준비 연산은 렌더링중인 화상들의 세트에 대해 한번 행해지지만, 상기 뷰들을 렌더링하기 위한 그 밖의 연산들, 이를테면 상기 래스터 연산 및 렌더링(프래그먼트 셰이딩) 연산은, 그래도 (적절하게, 행해져 있는 것보다 상기 단일의 지오메트리 리스트 준비 태스크로부터 준비된 지오메트리 리스트를 사용하여서) 뷰마다 따로따로 행해져야 하고, 바람직하게는 행해진다는 것을 알 것이다.
따라서, 바람직한 실시예에서, N개의 화상들의 세트가 렌더링되는 경우, 단일의 지오메트리 리스트 준비(타일링) 태스크는, 바람직하게는 (모든 뷰들에 사용될) 규정되어 실행되지만, N개의 렌더링(프래그먼트 셰이딩) 잡들(태스크들)은, 바람직하게는, (뷰마다 하나) 규정되어 실행된다. 상기 지오메트리 리스트 준비 태스크는 지오메트리 리스트들을 상기 제1 해상도로 생성한다. 각 렌더링 태스크는 상기 뷰들 중 하나에 대해 상기 렌더링된 출력(화상)을 생성한다. 상기 그래픽 프로세서용 드라이버는, 바람직하게는, 이렇게 하여 상기 그래픽 프로세서용 태스크들(잡들)을 구성한다.
또한, 각 렌더링 태스크는, 바람직하게는, 상기 준비된 지오메트리 리스트들이 그 렌더링 태스크에 대해 래스터화되어야 하는 상기 해상도를 가리킨다. 상술한 것처럼, 상기 렌더링 태스크들도, 어느 렌더링 타일들에대해 당해 상기 화상을 렌더링해야 하는지를 가리킬 수 있고, 바람직하게는 가리킨다.
바람직하게는, (예를 들면, 전체 그래픽 처리 시스템의 호스트 프로세서 상에서 실행중인) 상기 그래픽 프로세서용 상기 드라이버는, 그와 같은 상기 그래픽 프로세서의 태스크들을 포비티드 렌더링을 필요로 할 때 설정한다.
물론, 그 밖의 배치도, 가능할 것이다.
상기로부터 알 수 있듯이, 상기 그래픽 프로세서는, 바람직하게는, 상기 그래픽 프로세서에 의해 그래픽 처리를 필요로 할 수 있는 애플리케이션들을 실행하는 호스트 프로세서를 구비하는, 전체 그래픽 처리 시스템의 일부다.
호스트 프로세서는, 적절한 코맨드들과 데이터를 그래픽 프로세서에 보내어 그 그래픽 프로세서를 제어하여 그래픽 처리 연산들을 행하고, (본 발명의 방식에서 포함하는) 상기 호스트 프로세서상에서 실행하는 애플리케이션들에 의해 요구된 그래픽 처리(렌더) 출력을 생성시킨다.
이를 용이하게 하기 위해서, 또한, 상기 호스트 프로세서는, 상기 그래픽 프로세서용 드라이버와, 그 그래픽 프로세서의 프로그램 가능한 셰이딩 스테이지들에 의해 실행될 셰이더 프로그램들을 컴파일링하기 위한 하나의 컴파일러 또는 컴파일러들을 실행시켜야 하고, 바람직하게는 실행시킨다(이때의 컴파일러는, 상기 드라이버의 일부이어도 되고, 바람직한 실시예에서는 일부다).
따라서, 바람직한 실시예에서, 상기 그래픽 프로세서는, 상기 그래픽 프로세서용 드라이버 및/또는 상기 그래픽 프로세서용 하나의 컴파일러나 컴파일러들을 실행시키는 (상기 전체 그래픽 처리 시스템의 일부인) 호스트 마이크로프로세서와 통신하고 있다. 또한, 상기 그래픽 프로세서 및/또는 호스트 마이크로프로세서는, 바람직하게는, 상기 그래픽 프로세서에서 발생한 화상들을 표시하기 위한 디스플레이와 통신하고 있다(따라서, 바람직한 실시예에서, 상기 그래픽 처리 시스템은, 상기 그래픽 프로세서에서 발생한 화상들을 표시하기 위한 디스플레이를 더 구비한다).
따라서, 본 발명의 다른 측면에서는,
호스트 프로세서; 및
타일 기반 그래픽 프로세서를 구비한, 그래픽 처리 시스템을 제공하고,
상기 그래픽 프로세서는,
렌더링될 화상의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들을 준비하는 지오메트리 리스트 준비회로; 및
상기 지오메트리 리스트 준비회로에서 준비한 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 렌더링될 화상들의 타일들을 렌더링하는 렌더링 회로를 구비하고,
상기 그래픽 처리 시스템( 및 바람직하게는 상기 호스트 프로세서)은,
상기 그래픽 프로세서가 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도들로 나타내는 복수의 화상의 세트를 렌더링할 때 인식하도록 구성되고;
상기 그래픽 프로세서가 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도들로 나타내는 복수의 화상의 세트를 렌더링한다고 인식될 때:
제1 해상도로 렌더링될 상기 씬에 대해 렌더링될 상기 화상들의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들을, 상기 그래픽 프로세서의 상기 지오메트리 리스트 준비회로에 준비시키고;
상기 제1 해상도로 렌더링될 상기 씬에 대해 준비되어 있던 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링함으로써 상기 씬의 상기 다른 해상도들을 나타내는 각각의 화상들을, 상기 그래픽 프로세서의 상기 렌더링 회로에 렌더링시키도록 구성된,
처리회로를 더 구비한다.
본 발명의 또 다른 측면에서는, 그래픽 처리 시스템의 연산방법을 제공하고, 상기 그래픽 처리 시스템은,
호스트 프로세서; 및
타일 기반 그래픽 프로세서를 구비한, 그래픽 처리 시스템을 제공하고,
상기 그래픽 프로세서는,
렌더링될 화상의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들을 준비하는 지오메트리 리스트 준비회로; 및
상기 지오메트리 리스트 준비회로에서 준비한 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 렌더링될 화상들의 타일들을 렌더링하는 렌더링 회로를 구비하고,
상기 연산방법은,
상기 그래픽 처리 시스템의 상기 호스트 프로세서가, 상기 호스트 프로세서상에서 실행하는 애플리케이션이, 상기 그래픽 프로세서에, 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도들로 나타내는 복수의 화상의 세트를 렌더링하도록 요구하는 것을 인식하는 단계와;
상기 그래픽 프로세서가 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도들로 나타내는 복수의 화상의 세트를 렌더링한다고 인식될 때, 상기 그래픽 처리 시스템의 상기 호스트 프로세서가, 상기 그래픽 프로세서에 대해:
제1 해상도로 렌더링될 상기 씬에 대해 렌더링될 상기 화상들의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들의 준비를 지시하고;
상기 제1 해상도로 렌더링될 상기 씬에 대해 준비되어 있던 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링함으로써 상기 씬의 상기 다른 해상도들을 나타내는 각각의 화상들의 렌더링을 지시하는 단계와;
상기 그래픽 프로세서가, 상기 호스트 프로세서에서 지시하는 것에 응답하여:
상기 그래픽 프로세서의 상기 지오메트리 리스트 준비회로에 의해, 상기 제1 해상도로 렌더링될 상기 씬에 대해 렌더링될 상기 화상들의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들을 준비하는 단계와;
상기 그래픽 프로세서의 상기 렌더링 회로에 의해, 상기 제1 해상도로 렌더링될 상기 씬에 대해 준비되어 있던 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링함으로써 상기 씬의 다른 해상도 뷰들을 나타내는 각각의 화상들을 렌더링하는 단계를 포함한다.
당업자라면 알 수 있듯이, 본 발명의 이 측면들 및 실시예들은, 적절하게, 본 발명의 설명에서 기재된 본 발명의 상기 바람직하고 선택적인 특징들의 어느 하나 이상 또는 전부를 포함할 수 있고, 바람직하게는, 포함한다. 따라서, 예를 들면, (바람직하게는 상술한 방식들 중 하나로) 호스트 프로세서 상에서 실행하는 애플리케이션에 의해 포비티드 렌더링이 요구될 때 식별하고 나서, 상기 그래픽 프로세서가 그에 따라 연산되게("지시하게") 하는 것이, 바람직하게는 호스트 프로세서상의 드라이버다.
마찬가지로, 상기 그래픽 처리 시스템은, 바람직하게는, 상기 그래픽 프로세서에서 발생한 화상들을 표시하기 위한 디스플레이를 갖고 및/또는 이 디스플레이와 통신하고 있고, 및/또는 상기 그래픽 프로세서에서 발생한 화상들이, 예를 들면, 이후의 처리를 위해, 예를 들면 표시를 위해, 저장되어도 되는 메모리를 갖거나 메모리와 통신하고 있다. 마찬가지로, 포비티드 렌더링을 행하기 위한 요구사항을 가리키는 호스트 프로세서상에 애플리케이션이 있는 것이 바람직하고, 상기 요구사항은, 예를 들면, 상기 호스트 프로세서상에서 실행하는 드라이버에 의해 인식되고, 이때, 이에 따라, 상기, 예를 들면, 상기 호스트 프로세서상의 드라이버는 상기 포비티드 렌더링을 위한 상기 복수의 화상의 렌더링을 상기 그래픽 프로세서에 지시하도록 연산한다.
상술한 상기 구성요소들과 스테이지들뿐만 아니라, 상기 그래픽 프로세서는, 그래픽 프로세서가 통상적으로 구비할 수 있는 그 밖의 처리 스테이지들 중 어느 하나 이상, 바람직하게는 전부도 포함할 수 있고, 바람직하게는 포함한다. 따라서, 예를 들면, 상기 그래픽 프로세서는, 바람직하게는, 프리미티브 셋업 스테이지, 래스터화기 및 렌더러를 구비한다. 바람직한 실시예에서, 상기 렌더러는, 프로그램 가능 프래그먼트 셰이더의 형태이거나 프로그램 가능 프래그먼트 셰이더를 구비한다.
또한, 상기 그래픽 프로세서는, 바람직하게는, 타일 샘플 값들을 저장하는 타일 버퍼 및/또는, 상기 타일 버퍼에 있는 데이터를 (예를 들면, 상기 타일 버퍼에 있는 데이터가 완료되면) 외부(메인) 메모리에(예를 들면, 프레임 버퍼에) 모두 다 기록하도록 연산하는 라이트 아웃(write out)부를 구비한다.
상기 그래픽 프로세서는, 바람직하게는, 하나 이상의 프로그램 가능 셰이딩 스테이지, 이를테면, 버텍스 셰이딩 스테이지, 헐 셰이더, 테셀레이션 스테이지(예를 들면, 여기서 테셀레이션은 셰이더 프로그램을 실행하여서 행해진다), 도메인(평가) 셰이딩 스테이지(셰이더), 지오메트리 셰이딩 스테이지(셰이더), 및 프래그먼트 셰이더 중 하나 이상, 및 바람직하게는 전부를 포함한다.
또한, 상기 그래픽 프로세서는, 그래픽 프로세서가 깊이(또는 깊이 및 스텐실) 테스터(들), 블렌더, 라이트 아웃부 등등을 포함하는 임의의 적절하고 원하는 처리 스테이지들을 포함하여도 된다.
상기 버텍스 셰이더, 프래그먼트 셰이더 등 등의 그래픽 처리 파이프라인의 임의의 프로그램 가능한 셰이딩 스테이지들은, 원하는 대로 및 임의의 적절한 방식으로 구현될 수 있고, 또 예를 들면, 버텍스 셰이딩, 프래그먼트 셰이딩 등의 임의의 원하는 적절한 셰이딩과, 기능들을 각각 및 적절하게 행할 수 있다.
각 프로그램 가능 처리 스테이지(셰이더)는, 프로그램 가능 처리 회로 등의 임의의 적절한 프로그램 가능 하드웨어 소자를 구비할 수도 있다. 각 프로그램 가능 처리 스테이지(셰이더)는 상기 처리 파이프라인의 다른 프로그램 가능 처리 스테이지들(셰이더들)에 별도의 회로소자로서 제공되어도 되거나, 상기 프로그램 가능 처리 스테이지들은 (원하는 프로그램 가능 처리 스테이지(셰이더)로서의 역할을 하도록 다르게 프로그래밍된) 그들의 프로그램 가능 처리 회로의 일부 또는 전부를 공유하여도 된다.
바람직한 실시예에서, 상기 그래픽 프로세서는, 여기서 기재된 데이터를 저장 및/또는 여기서 기재된 프로세스들을 행하기 위한 소프트웨어를 저장하는 하나 이상의 메모리들 및/또는 메모리 디바이스들을 구비하고, 및/또는 상기 하나 이상의 메모리들 및/또는 메모리 디바이스들과 통신하고 있다.
특히 바람직한 실시예에서, 상기 본 발명의 각종 기능들은, 예를 들면, 디스플레이 디바이스용 프레임 버퍼에 기록된 상기 렌더링된 프래그먼트 데이터를 발생하여 출력하는 단일의 그래픽 처리 플랫폼상에서 실시된다.
본 발명은, 임의의 적절한 시스템, 이를테면, 적절하게 구성된 마이크로프로세서 기반 시스템에 구현될 수 있다. 일부의 실시예에서, 본 발명은, 컴퓨터 및/또는 마이크로프로세서 기반 시스템에 구현된다.
본 발명은, 바람직하게는, 휴대형 디바이스, 이를테면 및 바람직하게는, 휴대전화 또는 태블릿에 구현된다.
본 발명은, 가상현실 헤드셋 등의 가상현실 디스플레이 디바이스들을 위한, 포비티드 렌더링을 필요로 할 디바이스들에 특히 적용 가능할 것이라고 믿는다.
따라서, 본 발명의 다른 측면에서는, 본 발명의 상기 측면들 및 실시예들의 임의의 하나 이상의 상기 그래픽 프로세서나 시스템을 구비한 가상현실 디스플레이 디바이스를 제공한다. 이에 대응하게, 본 발명의 다른 측면에서는, 본 발명의 상기 측면들 및 실시예들의 임의의 하나 이상의 방식으로 상기 가상현실 디스플레이 디바이스를 연산시키는 것을 포함하는 가상현실 디스플레이 디바이스의 연산 방법을 제공한다.
본 발명의 각종 기능들은, 임의의 원하는 적절한 방식으로 실시될 수 있다. 예를 들면, 본 발명의 기능들은, 원하는 대로, 하드웨어나 소프트웨어로 구현될 수 있다. 따라서, 예를 들면, 달리 나타내지 않으면, 본 발명의 각종 기능적 요소, 스테이지, 및 "수단"은, 원하는 방식으로 연산하도록 프로그래밍될 수 있는 적절하게 전용 하드웨어 요소(처리회로) 및/또는 프로그램 가능한 하드웨어 요소(처리회로)와 같은 각종 기능 등을 행할 수 있는, 적절한 프로세서나 프로세서들, 콘트롤러나 콘트롤러들, 기능 유닛들, 회로, 처리 로직, 마이크로프로세서 구성 등을 포함할 수도 있다.
또한, 여기서는, 당업자라면 알 수 있듯이, 본 발명의 각종 기능 등이, 주어진 프로세서상에서 병렬로 복제 및/또는 실행될 수도 있다는 것을 주목해야 한다. 마찬가지로, 각종 처리 스테이지는, 필요한 경우 처리회로 등을 공유할 수도 있다.
또한, 당업자라면, 본 발명의 상술한 측면들과 실시예들 모두가, 적절하게, 여기서 설명한 바람직하고 선택적 특징들 중 어느 하나 이상 또는 전부를 포함할 수 있다는 것을 알 것이다.
본 발명에 따른 방법들은, 소프트웨어, 예를 들면 컴퓨터 프로그램들을 적어도 일부 사용하여 구현되어도 된다. 이렇게 하여 안 것은, 또 다른 실시예들에서 볼 때, 본 발명은, 데이터 처리수단에 인스톨될 때 여기서 설명된 방법들을 실행하도록 구체적으로 구성된 컴퓨터 소프트웨어와, 데이터 처리수단상에 연산할 때 여기서 설명된 방법들을 행하기 위한 컴퓨터 소프트웨어 코드 부분들을 포함한 컴퓨터 프로그램 요소와, 상기 프로그램이 데이터 처리 시스템상에 연산할 때 여기서 설명된 방법이나 방법들의 단계 모두를 행하도록 구성된 코드수단을 포함한 컴퓨터 프로그램을 제공한다는 것이다. 상기 데이터 처리 시스템은, 마이크로프로세서, FPGA(Field Programmable Gate Array) 등이어도 된다.
또한, 본 발명은, 그래픽 프로세서, 렌더러 또는, 데이터 처리수단을 갖는 다른 시스템을 연산시키는데 사용될 때 상기 데이터 처리수단과 관련지어 상기 그래픽 프로세서, 렌더러 또는 시스템이 본 발명의 방법들의 단계들을 실행하도록 상기 소프트웨어를 구비한 컴퓨터 소프트웨어 캐리어까지 확장된다. 이러한 컴퓨터 소프트웨어 캐리어는, ROM칩, CD ROM, RAM, 플래시 메모리나, 디스크 등의 물리적 기억매체일 수 있거나, 유선상의 전자신호, 광신호 또는 위성 등에 관한 무선신호 등의 신호일 수 있다.
본 발명의 방법들의 모든 단계들을 컴퓨터 소프트웨어로 실행할 필요가 없고 이에 따라서 또 다른 넓은 실시예로부터 본 발명은 컴퓨터 소프트웨어와, 여기 기재된 방법들의 단계들의 적어도 하나를 실행하기 위한 컴퓨터 소프트웨어 캐리어 상에 인스톨된 상기 소프트웨어를 제공한다는 것도 또한 알 것이다.
따라서, 본 발명은, 컴퓨터 시스템에 사용하기 위한 컴퓨터 프로그램 제품으로서 적절히 구체화되어도 된다. 이러한 구현은, 유형의, 비일시적 매체, 이를테면 컴퓨터 판독 가능한 매체, 예를 들면, 디스켓, CD ROM, ROM, RAM, 플래시 메모리, 또는 하드디스크에 고정된 일련의 컴퓨터 판독 가능한 명령어들을 포함할 수도 있다. 또한, 본 발명은, 광학적이거나 아날로그적 통신회선을 포함하지만 이에 한정되지 않거나, 또는, 마이크로웨이브, 적외선 또는 그 밖의 투과 기술을 포함하지만 이에 한정되지 않는 무선 기술을 무형으로 사용하는 유형의 매체 상에서, 모뎀이나 그 밖의 인터페이스 디바이스를 거쳐 컴퓨터 시스템에 전송가능한, 일련의 컴퓨터 판독 가능한 명령어를 포함할 수 있었다. 상기 일련의 컴퓨터 판독 가능한 명령어는, 여기서 이전에 설명된 기능성의 모두 또는 일부를 구체화한다.
당업자는, 여러 가지의 컴퓨터 아키텍처나 운영체계에 사용하기 위한 다수의 프로그래밍 언어로 상기 컴퓨터 판독 가능한 명령어를 기록할 수 있다는 것을 알 것이다. 또한, 이러한 명령어는, 반도체, 마그네틱, 또는 광학적 기술을 포함하지만 이에 한정되지 않는 현재 또는 미래의 어떠한 메모리 기술을 사용하여서도 저장될 수도 있거나, 광학적, 적외선 또는 마이크로웨이브를 포함하지만 이에 한정되지 않는 현재 또는 미래의 어떠한 통신기술을 사용하여서도 전송되어도 된다. 이러한 컴퓨터 프로그램 제품은, 인쇄된 문서나 전자 문서가 첨부되는 착탈 가능한 매체, 예를 들면, 컴퓨터 시스템, 예를 들면, 시스템 ROM이나 고정형 디스크 상에 사전 적재된 쉬링크 랩 소프트웨어로서 배포되거나, 네트워크, 예를 들면, 인터넷이나 월드 와이드 웹상에서 서버나 전자 게시판으로부터 배포되어도 된다고 생각된다.
이제, 본 발명의 다수의 바람직한 실시예를, 예시로만 또한 아래의 첨부도면을 참조하여 설명하겠다:
도 1은 컴퓨터 그래픽 처리 시스템의 예를 도시한 것이고,
도 2는 본 발명의 방식으로 연산될 수 있는 그래픽 처리 파이프라인을 개략적으로 도시한 것이고,
도 3은 포비티드 렌더링을 나타내고,
도 4는 표시용 포비티드 화상을 제공하도록 조합될 수도 있는 동일한 뷰의 복수의 다른 해상도 화상의 세트의 예를 도시한 것이고,
도 5는 포비티드 화상을 제공하기 위해 화상들의 합성을 개략적으로 도시한 것이고,
도 6은 본 발명의 실시예에서 포비티드 렌더링을 위한 다른 해상도 화상들의 세트의 렌더링을 개략적으로 도시한 것이고,
도 7은 본 발명의 실시예에서 포비티드 렌더링을 위한 다른 해상도 화상들의 세트의 렌더링을 개략적으로 도시한 것이고,
도 8, 9 및 10은, 본 발명의 실시예에서 출력 포비티드 화상을 제공하기 위해 다른 해상도 뷰들을 합성하는 것을 개략적으로 도시한 것이다.
동일한 참조부호는 도면에서 적절한 경우 동일한 구성요소에 사용된다.
이제, 본 발명의 다수의 바람직한 실시예를, 표시용 컴퓨터 그래픽의 처리의 맥락에서 설명하겠다.
도 1은 전형적인 컴퓨터 그래픽 처리 시스템을 도시한 것이다.
호스트 프로세서(1)상에서 실행하는 게임과 같은 애플리케이션(2)은, 연관된 그래픽 프로세서(그래픽 처리 유닛(GPU))(3)에 의해 행해질 그래픽 처리 동작들을 필요로 한다. 이를 위해서, 상기 애플리케이션은, 상기 호스트 프로세서(3)상에서 동작하는 상기 그래픽 프로세서(3)용 드라이버(4)에 의해, 상기 애플리케이션(2)에서 요구한 그래픽 출력을 발생하기 위해 적절한 코맨드들을 상기 그래픽 프로세서(3)에 발생하도록 해석된 API(애플리케이션 프로그래밍 인터페이스) 호출(call)들을 발생한다. 이를 용이하게 하기 위해서, "코맨드들"의 세트는 그래픽 출력을 위해(예를 들면, 표시될 프레임을 생성하기 위해) 상기 호스트 시스템(1)상에서 동작하는 애플리케이션(2)으로부터의 코맨드들에 응답하여 상기 그래픽 프로세서(3)에 제공된다.
도 2는 본 실시예의 그래픽 프로세서(3)를 보다 상세히 도시한 것이다.
도 2에 도시된 그래픽 프로세서(3)는, 타일 기반 렌더이고, 이에 따라 발생될 출력 프레임 등의 렌더 출력 데이터 어레이의 타일들을 생성한다.
(타일 기반 렌더링에 있어서, 전체 렌더 출력, 예를 들면, 즉시 모드 렌더링에서처럼 한꺼번에 효율적으로 처리중인 프레임이라기보다는, 렌더 출력, 예를 들면 표시될 프레임은, 통상 "타일들"이라고 하는 보다 작은 복수의 서브영역으로 분할된다. 각 타일(서브영역)은 별개로(일반적으로는 하나씩 하나씩) 렌더링되고 나서, 그 렌더링된 타일들(서브영역들)은 완전한 렌더 출력, 예를 들면, 표시용 프레임을 제공하도록 재조합된다. 이러한 구성에서, 상기 렌더 출력은, 일반적으로, 사이즈와 형상이 규칙적인 서브영역들(타일들)(통상, 정사각형들이나 직사각형들 등)로 분할되지만, 이것은 필수적이지는 않다.)
일반적으로, 상기 렌더 출력 데이터 어레이는, 종래기술에 공지된 것처럼, 스크린이나 프린터와 같은 표시장치에 표시하도록 구성된 하나의 출력 프레임일 수도 있지만, 또한, 예를 들면, 나중 렌더링 패스들(passes)("렌더 투(to) 텍스처" 출력으로서도 알려짐) 등에서 사용하기 위한 중간 데이터를 포함할 수도 있다.
하나의 컴퓨터 그래픽 화상이 표시될 때, 지오메트리의 세트, 통상 일련의 프리미티브들(폴리곤들)로서 먼저 정의되고, 지오메트리(예를 들면, 프리미티브들)는 그래픽 렌더링을 위한 그래픽 프래그먼트들로 차례로 분할(래스터화)된다. 통상의 그래픽 렌더링 연산시에, 상기 렌더러는, 각 프래그먼트와 연관된 상기(예를 들면) 색(적색, 녹색, 청색, RGB)과 투명도(알파, α) 데이터를 수정하여 그 프래그먼트들이 정확히 표시될 수 있다. 그 프래그먼트들이 상기 렌더러를 전체 순회하였다면, 그들의 연관된 데이터 값들은, 출력, 예를 들면 표시를 가능하게 메모리에 저장된다.
도 2는 본 실시예들의 연산에 관한 그래픽 프로세서(3)의 주 요소들과 파이프라인 스테이지들을 도시한 것이다. 당업자라면 알듯이, 도 2에 도시되지 않은 그래픽 프로세서(그래픽 처리 파이프라인)의 그 밖의 요소들 및 스테이지들도 있을 수 있다. 또한, 여기서는, 도 2가 단지 개략적인 도면이고, 예를 들면, 실제로 상기 도시된 기능부들과 파이프라인 스테이지들은, 비록 도 2에 별개의 스테이지들로서 개략적으로 도시될지라도 상당한 하드웨어 회로들을 공유하여도 된다는 것을 주목해야 한다. 또한, 도 2에 도시된 것처럼 그래픽 처리 파이프라인의 각 스테이지, 요소 및 부 등이 원하는 대로 구현될 수도 있음에 따라서, 예를 들면, 필요한 동작과 기능들을 행하기 위한 적절한 회로 및/또는 처리 로직 등을 구비할 것이다.
도 2에 도시된 것처럼, 그래픽 프로세서(3)가 실행하는 그래픽 처리 파이프라인은, 버텍스(vertex) 셰이더(20), 헐(hull) 셰이더(21), 테셀레이터(22), 도메인 셰이더(23), 지오메트리 셰이더(24), 타일러(25), 래스터화 스테이지(26), 이른 Z(깊이) 및 스텐실 테스트 스테이지(27), 프래그먼트 셰이딩 스테이지(28) 형태의 렌더러, 늦은 Z(깊이) 및 스텐실 테스트 스테이지(29), 블렌딩 스테이지(30), 타일 버퍼(31) 및 다운샘플링 및 라이트아웃(writeout)(멀티샘플 리졸브(resolve)) 스테이지(32)로 이루어진, 다수의 스테이지를 포함한다.
버텍스 셰이더(20)는, 발생될 출력을 위해 버텍스들 등과 연관된 입력 데이터 값들을 취하고, 이들 데이터 값들을 처리하여, 그래픽 처리 파이프라인(3)의 다음의 스테이지에서 사용하기 위한 일련의 대응한 "셰이딩된 버텍스" 출력 데이터 값들을 발생한다.
처리될 각 프리미티브는 통상, 버텍스들의 세트에 의해 규정되고 나타내어진다. 일반적으로, 프리미티브용 각 버텍스는 "속성"들의 세트, 즉 그 버텍스에 대한 데이터 값들의 세트와 연관되어 있다. 이 속성들은, 일반적으로, 위치 데이터와, 그 밖의 비위치 데이터(가변하는), 예를 들면, 당해 버텍스용, 규정 색, 라이트, 노멀, 텍스처 좌표들 등을 포함한다.
상기 그래픽 프로세서에서 발생할 주어진 출력에 대해서, 일반적으로 당해 출력을 위해 규정된 버텍스들의 세트가 있다. 그리고, 상기 출력을 위해 처리될 프리미티브들은, 발생중인 그래픽 처리 출력을 위한 버텍스들의 상기 세트에서 주어진 버텍스들을 포함하는 것으로서 나타내어질 것이다.
상기 버텍스 셰이딩 연산은, 버텍스마다 상기 속성들을 이후의 그래픽 처리 연산을 위해 원하는 형태로 변환하도록 연산한다. 이것은, 예를 들면, 버텍스 위치 속성들을, 초기에 규정된 세계나 유저 공간으로부터 그래픽 처리 시스템의 출력이 표시될 스크린 공간으로 변환하는 것과, 렌더링될 화상에서 라이팅(lighting)의 효과를 고려하도록 입력 데이터를 수정하는 것을 포함하여도 된다.
헐 셰이더(21)는 패치(patch) 제어점들의 세트들에 관한 연산을 행하고 패치 상수들로서 알려진 부가 데이터를 발생한다. 상기 테셀레이션 스테이지(22)는 상기 헐의 고위 표시를 작성하기 위해 지오메트리를 세부분할하고, 상기 도메인 셰이더(23)는 (하나의 버텍스 셰이더와 같은) 테셀레이션 스테이지에 의해 출력된 버텍스들에 관해 연산들을 행한다. 상기 지오메트리 셰이더(24)는 삼각형들, 점들 또는 선들과 같은 전체 프리미티브들을 처리한다.
상기 버텍스 셰이더(20)와 함께 이들 스테이지들은, 그래픽 프로세서(3)에 제공된 코맨드들과 버텍스 데이터에 응답하여, 변환연산과 라이팅 연산 등의 필요한 프래그먼트 프론트엔트 연산들과, 렌더링될 프리미티브들을 셋업하기 위한 프리미티브 셋업 전부를 효과적으로 행한다.
렌더링될 모든 프리미티브들이 적절하게 셋업되어 있다면, 상기 타일러(25)는, 처리 목적을 위해 렌더 출력이 분할되어 있던 타일마다 어느 프리미티브들이 처리될 필요가 있는지를 판정한다. 이를 행하기 위해서, 상기 타일러(25)는, 처리될 프리미티브마다의 장소와 상기 타일 위치들을 비교하고, 그 프리미티브가 (잠재적으로) 속할 수 있다고 판정하는 타일마다 각각의 프리미티브 리스트에 상기 프리미티브를 부가한다. 프리미티브들을 타일 리스트들로 소팅 및 비닝하는 임의의 적절한 원하는 기술, 이를테면, 정확한 비닝 또는 바운딩 박스 비닝 또는 그 사이에서의 어떠한 기술도 상기 타일링 프로세스에 사용될 수 있다.
이렇게 렌더링될 프리미티브들의 리스트들(프리미티브-리스트들)이 렌더링 타일마다 준비되어 있다면, 그 프리미티브-리스트들은, 사용하도록, 예를 들면, 상기 시스템이 당해 타일이 렌더링될 때 프리미티브들을 고려(렌더링)할 필요가 있는지를 식별하게 하도록 저장된다.
상기 타일러가 타일 리스트들(타일마다 처리될 프리미티브들의 리스트들)의 준비를 완료했다면, 각 타일은 렌더링될 수 있다.
이를 해결하기 위해서, 각 타일은, 상기 타일러(25)에 후속하는 도 2에 도시된 그래픽 처리 파이프라인 스테이지들에 의해 처리된다.
따라서, 주어진 타일이 처리중일 때, (그 타일에 대해 타일 리스트에 열거된) 그 타일에 대해 처리될 각 프리미티브는, 상기 래스터화기(26)에 건네진다.
상기 그래픽 처리 파이프라인(3)의 래스터화 스테이지(26)는, 프리미티브들을 개개의 처리용 그래픽 프래그먼트들로 래스터화하도록 연산한다. 이를 행하기 위해서, 래스터화기(26)는, 그 프리미티브들을 샘플링점들로 래스터화하고, 그 프리미티브들을 렌더링하기 위한 (적절한 샘플링 위치들을 나타내는) 적절한 위치들을 갖는 그래픽 프래그먼트들을 발생한다.
그리고, 상기 래스터화기에서 발생한 프래그먼트들은, 계속 처리용 파이프라인의 나머지에 보내진다.
이른 Z/스텐실 스테이지(27)는, 이 스테이지에서 어떠한 프래그먼트들이 지워질 수(추려낼 수) 있는지를 알기 위해서, 래스터화기(26)로부터 수신하는 프래그먼트들에 관해 Z(깊이) 테스트를 실행한다. 이를 행하기 위해서, Z/스텐실 스테이지(27)는, 이미 렌더링되어 있던 프래그먼트들에 의해 새로운 프래그먼트들이 차단되는지( 또는 아닌지)를 판정하기 위해서, 상기 래스터화기(26)로부터 발행하는 프래그먼트들(과 연관된)의 깊이 값들과, 이미 렌더링된 프래그먼트들의 깊이 값들(이들 깊이 값들이 타일 버퍼(31)의 일부인 깊이(Z) 버퍼에 기억된다)을 비교한다. 동시에, 이른 스텐실 테스트가 실시된다.
그리고, 이른 Z 및 스텐실 테스트 스테이지(27)를 통과하는 프래그먼트들은, 상기 프래그먼트 셰이딩 스테이지(28)에 보내진다. 프래그먼트 셰이딩 스테이지(28)는, 그 프래그먼트들을 처리하여 적절한 렌더링된 프래그먼트 데이터를 발생하기 위해서, 상기 이른 Z 및 스텐실 테스트들을 통과하는 프래그먼트들에 관한 적절한 프래그먼트 처리 연산들을 행한다.
이 프래그먼트 처리는, 적절한 프래그먼트 데이터를 발생하기 위해서, 임의의 적절한 원하는 프래그먼트 셰이딩 처리들, 이를테면, 상기 프래그먼트들에 관한 프래그먼트 셰이더 프로그램들을 실행하는 처리, 텍스처들을 프래그먼트들에 적용하는 처리, 포깅(fogging)이나 그 밖의 연산들을 상기 프래그먼트들에 적용하는 처리 등을 포함할 수도 있다. 본 실시예에서, 프래그먼트 셰이딩 스테이지(28)는, 하나의 셰이더 파이프라인(하나의 프로그램 가능 프래그먼트 셰이더)의 형태로 되어 있다.
그리고, 그 중에서 특히, 렌더링된 프래그먼트가 실제로 최종의 화상에서 보여지는지를 판정하기 위해서 상기 셰이딩된 프래그먼트들에 관한 파이프라인 깊이 테스트의 끝을 실시하는 "늦은" 프래그먼트 Z 및 스텐실 테스트 스테이지(29)가 있다. 이 깊이 테스트는, 타일 버퍼(31)에서 Z버퍼에 저장된 프래그먼트의 위치에 대한 Z 버퍼 값을 사용하여, 새로운 프래그먼트들에 대한 프래그먼트 데이터가, 프래그먼트 셰이딩 스테이지(28)로부터 발행하는 프래그먼트들(과 연관된)의 깊이 값들과 (그 깊이 버퍼에 저장된 것처럼) 이미 렌더링되어 있던 프래그먼트들의 깊이 값들을 비교함으로써, 이미 렌더딩되어 있던 프래그먼트들의 프래그먼트 데이터를 교체해야 하는지를 판정한다. 이 늦은 프래그먼트 깊이 및 스텐실 테스트 스테이지(29)도 상기 프래그먼트들에 관한 임의의 필요한 "늦은" 알파 및/또는 스텐실 테스트들을 실시한다.
그 후, 상기 늦은 프래그먼트 테스트 스테이지(29)를 통과하는 프래그먼트들은, 필요한 경우, 블렌더(30)에서 타일 버퍼(31)에 이미 저장된 프래그먼트들과 임의의 필요한 블렌딩 연산들이 실행된다. 또한, (미도시된) 디더 등과 같은 프래그먼트들에 관해 필요한 임의의 그 밖의 나머지 연산들도 이 스테이지에서 실시된다.
끝으로, 상기 (블렌딩된) 출력 프래그먼트 데이터(값들)는, 예를 들면 표시용 프레임 버퍼(33)에 출력될 수 있는 곳으로부터 타일 버퍼(31)에 기록된다. 또한, 하나의 출력 프래그먼트에 대한 깊이 값은, 타일 버퍼(31)내 Z버퍼에 적절하게 기록된다.(이 타일 버퍼는, 색 및 깊이 버퍼들이 나타내는 샘플링점마다(본질적으로, 처리중인 하나의 타일의 샘플링점마다) 각각 적절한 색, 등 또는 Z값을 저장하는 색 및 깊이 버퍼들을 저장한다.) 이들 버퍼는, 전체 렌더 출력(예를 들면, 표시될 화상)의 일부(하나의 타일)를 나타내는 프래그먼트 데이터의 어레이를 저장하고, 이때 그 버퍼들에서의 샘플 값들의 각각의 세트들이 전체 렌더 출력(예를 들면, 샘플 값들의 각 2×2 세트는 출력 화소에 대응할 수도 있고, 여기서 4배 멀티샘플링이 사용중이다)의 각각의 화소에 대응한다.
타일 버퍼는, 그래픽 처리 파이프라인(칩)에 위치된(에 국소적인) RAM의 일부로서 제공된다.
상기 타일 버퍼(31)로부터의 데이터는, 다운샘플링(멀티샘플 리졸브) 라이트아웃부(32)에 입력되기 때문에, 외부 메모리 출력 버퍼, 이를테면 하나의 표시장치(미도시됨)의 일 프레임 버퍼(33)에 출력된다(라이트백(written back)된다). (그 표시장치는, 예를 들면, 화소들의 어레이로 이루어진 디스플레이, 이를테면 컴퓨터 모니터나 프린터를 구비할 수 있다.)
다운샘플링 및 라이트아웃부(32)는, 출력버퍼에 출력하기 위한 출력 값들(화소들)을 발생하기 위해서, 상기 타일 버퍼(31)에 저장된 프래그먼트 데이터를, (즉, 출력장치의 화소들에 대응한 화소 데이터의 어레이가 발생되도록) 출력버퍼(장치)에 대한 적절한 해상도로 다운샘플링한다.
상기 렌더 출력의 하나의 타일이 처리되었고 그것의 데이터가 저장을 위해 메인 메모리에(예를 들면, 메인 메모리에서의 하나의 프레임 버퍼(33)에) 내보내졌으면, 전체 렌더 출력(예를 들면, 표시될 프레임(화상))을 발생하기 위해 충분한 타일들이 처리될 때까지 다음 타일이 처리되는 등 한다. 그리고, 그 처리는 다음 렌더 출력(예를 들면, 프레임)에 대해 반복되는 등 한다.
도 2로부터 알 수 있듯이, 그래픽 처리 파이프라인(3)은, 다수의 프로그램 가능 처리나 "세이더" 스테이지들, 즉 버텍스 셰이더(20), 헐 셰이더(21), 도메인 셰이더(23), 지오메트리 셰이더(24), 및 프래그먼트 셰이더(28)를 구비한다. 이들 프로그램 가능 셰이더 스테이지들은, 입력변수가 하나 이상이고 출력변수의 세트들을 발생하는, 각각의 셰이더 프로그램들을 실행한다. 일반적으로, 당해 상기 셰이더 프로그램은, 처리될 작업 항목(예를 들면, 버텍스 셰이더일 경우에 버텍스)마다 실행될 것이다. 일반적으로, 실행 쓰레드는 처리될 작업 항목마다 발행되고 나서, 그 쓰레드는 상기 셰이더 프로그램에서의 명령어들을 실행하여 원하는 "셰이딩된" 출력 데이터를 생성할 것이다.
상기 애플리케이션(2)은, 고급 셰이더 프로그래밍 언어, 이를테면, GLSL, HLSL, OpenCL, 등을 사용하여 실행될 상기 셰이더 프로그램들을 제공한다. 그리고, 이들 셰이더 프로그램들은, 하나의 셰이더 언어 컴파일러에 의해 타겟 그래픽 처리 파이프라인(3)을 위한 이진 코드로 변환된다. 이것은, 상기 컴파일러내의 그 프로그램의 하나 이상의 내부(중간) 표시의 작성을 포함할 수도 있다. (상기 컴파일러는, 예를 들면, 드라이버(4)의 일부이어도 되고, 이때 컴파일러에 의해 동작하는 전용 API 호출이 있다. 이렇게 하여, 컴파일러 실행은, 애플리케이션에서 발생한 API 호출들에 응답하여 상기 드라이버가 행한 상기, 예를 들면, 드로우 콜(draw call) 준비의 일부인 것처럼 보여질 수 있다.)
물론, 상기 그래픽 프로세서(3)에 대한 그 밖의 배치도 가능할 것이다.
본 발명은, 씬의 동일한 뷰이지만 다른 해상도들로 나타내는 복수의 화상의 세트를 렌더링함으로써 포비티드 렌더링을 행하는데 도 2의 그래픽 프로세서(3)가 사용중인 상황에 관한 것으로, 그 다른 해상도 뷰들은 조합되어 상기 해상도가 상기 화상에 따라 달라지는 출력 포비티드 화상을 제공한다.
도 3은 상기 주시점(최고의 해상도의 영역)(40)이 상기 화상의 좌측을 향하는 포비티드 화상의 예를 도시한 것이다. 상기 주시점으로부터 떨어진 화상의 영역들(41)이 저해상도로 표시된다는 것을 알 수 있다.
본 실시예에 있어서, 포비티드 렌더링을 행할 때, 상기 그래픽 프로세서(3)는, 예를 들면, 씬의 동일한 뷰의 복수의, 예를 들면, 3개의 다른 해상도 버전들을 렌더링하도록 제어되고, 이때 상기 뷰의 다른 해상도 화상들이 적절하게 조합(합성)되어, 예를 들면 표시된 상기 출력된 "포비티드" 화상(출력 프레임)을 제공한다.
도 4는 표시용 포비티드 화상을 제공하기 위해 조합되어도 되는 씬의 동일한 뷰의 3개의 다른 해상도 화상들의 세트의 예를 도시한 것이다. 도 4에 도시된 것처럼, 상기 뷰의 3개의 다른 해상도 버전들, 즉 상기 뷰 50의 최고의 해상도 버전, 뷰 51의 "중간" 해상도 버전, 및 상기 뷰 52의 저해상도 버전이 발생된다. 그리고, 이들 다른 화상들이 조합(합성)되어, 최종의 표시용 출력 "포비티드" 화상을 제공하여도 된다. (도 4에서, 상기 다른 해상도 화상들은, 비교를 위해 동일한 사이즈로 크기가 조정되게 도시되어 있다.)
도 5는 최종의 포비티드 출력 화상(뷰)(60)을 제공하기 위해 도 4에 도시된 화상들에 대응한 다른 해상도 화상(64, 65, 66)의 합성을 개략적으로 도시한 것이다. 도 5에 도시된 것처럼, 최종의 출력된 포비티드 뷰(화상)(60)는 상기 다른 해상도 화상(64, 65, 66)으로 구성되고, 상기 다른 해상도 화상(64, 65, 66)의 각각은 렌더링중인 전체 씬의 뷰의 다른 필드들(부분들)을 도시한다.
특히, 최고의 해상도 뷰(64)의 적절한 영역은, 예를 들면, 유저가 주시하고 있는 중인 상기 출력 포비티드 뷰의 영역 61에서 표시되고, 이때 저해상도 뷰의 적절한 영역 65, 66은 그 최고의 해상도 영역 61로부터 떨어져 상기 출력 화상(60)의 영역 62, 63에 적극적으로 표시된다.
도 6은 본 발명의 실시예에서 상기 출력, 즉 최종의 포비티드 뷰(60)를 표시하기 위한 3개의 다른 해상도 화상들(64, 65, 66)의 렌더링을 개략적으로 도시한 것이다.
포비티드 렌더링을 필요로 한다는 사실은, 본 실시예에서는, 씬에 대한 지오메트리가 상기 중심와 뷰와 연관된 스케일 계수와 함께 다중 뷰(표면)에 대해 렌더링되는 상기 그래픽 프로세서(3)용 상기 드라이버(4)에 가리키는 그 렌더링( 및 임의의 다른 렌더링 등, 원하는 구성들)을 필요로 하는 상기 애플리케이션(2)에 의해 나타내어진다. 상기 애플리케이션(2)으로부터의 상기와 같은 코맨드들에 응답하여, 상기 드라이버는, 이후 설명될 방식으로 포비티드 렌더링을 행하기 위해 상기 그래픽 프로세서(3)에 보내는 적절한 타일링 태스크 및 렌더링 태스크를 구성한다.
도 6에 도시된 것처럼, 본 실시예에서, 또한 본 발명에 따라, 상기 씬에 대한 지오메트리는 한번만 처리 및 타일링되어(렌더링중인 화상들의 렌더링 타일들마다 리스트들로 소팅되어)(단계 70), (각각의 해상도 화상을 각기 렌더링하는 프래그먼트 처리를 위해) 각각의 해상도 화상을 각각 렌더링할 때 공통으로 사용된(공유된) 지오메트리 리스트들(71)의 단일의 세트를 제공한다(단계 72, 73, 74).
특히, 상기 그래픽 프로세서(3)는, 출력 화상에 대해 요구되는 최고의 해상도로 렌더링중인 상기 씬에 대해 한번만 상기 버텍스 위치 처리(셰이딩)와 지오메트리 리스트(프리미티브 리스트들) 발생 처리(상기 타일링 프로세스)의 양쪽을 행하도록 제어된다.
이 프로세스들은, 원하는 대로, 이를테면, 및 바람직하게는, 이 프로세스들에 대한 그래픽 프로세서(3)의 통상의 연산에 따라 행해져도 되지만, 최종의 포비티드 뷰를 생성하기 위해 렌더링되는 최고의 해상도로 상기 씬에 대한 지오메트리를 사용하여 행해질 것이다.
도 6에 도시된 것처럼, 이렇게 상기 지오메트리 리스트들(타일 리스트들)이 준비되어 있다면, 지오메트리 리스트들(타일 리스트들)의 그 단일의 세트는, 상기 뷰(의 일부 또는 전부)를 도시하는 각각의 다른 해상도 화상을 각각 렌더링할 때 사용된다.
이 프로세스에서, 최고의 해상도 뷰(64)에 대해서, 상기 준비된 지오메트리 리스트들은, 그 최고의 해상도 화상(64)을 렌더링할 때 렌더링 타일마다 처리될 필요가 있는 지오메트리를 식별할 때만 사용될 수 있다.
그 밖의 저해상도 화상들(65, 66)에 대해서는, 최고의 해상도로 준비되어 있던 지오메트리 리스트들( 및 그 리스트들에서의 지오메트리)은, (예를 들면, 선형 스케일링을 사용하여) 당해 저해상도 화상의 해상도를 상기 지오메트리 리스트들이 준비되어 있던 상기 최고의 해상도에 관련시키는) 적절한 스케일링 계수만큼 상기 "풀" 해상도 지오메트리 리스트에서의 지오메트리를 축소하여서 저해상도 화상들에 대해 렌더링될 지오메트리(프리미티브들)를 식별하여 규정하는데 사용된다. 이 축소(downscaling)는, 버텍스 위치 로딩 연산의 일부로서 행해지지만, 원하는 경우, 그 밖의 배치도 가능할 것이다.
도 6에 도시된 것처럼, 본 실시예에서, 상기 다른 해상도 화상들(64, 65, 66)에 대한 렌더링 프로세스는, 모든 "완전한" 화상이 아닌 일부만이 다른 각각의 해상도로 렌더링되도록 한층 더 구성된다. 특히, 최종 합성에서 미사용될 화상들의 영역들은 렌더링되지 않는다.
도 7은 이것을 한층 더 예시한 것으로, (도 5로부터 알 수 있듯이) 최종의 포비티드 뷰를 생성하는데 사용될 최고의 해상도 화상의 일부(61)만이 최고의 해상도 화상(64)에 대해 렌더링되는 것을 도시한 것이다. 이에 대응하게, "중간" 해상도 화상(65)에 대해서, 최고의 해상도 화상(64)을 표시할 영역 61은 생략되고, 최저의 해상도 화상(66)에 대해서는, 최고의 해상도 화상 및 "중간" 해상도 화상을 표시할 영역 62는 생략된다(렌더링되지 않는다).
본 실시예에서, 각기 다른 해상도 화상의 선택된 부분들만의 이 렌더링은, 해상도 화상 또는 화상들이 상기 타일 장소에 대해 생성되어야 하는 상기 출력 화상(프레임)의 렌더링 타일마다 나타내어져서 이루어진다. 이 정보는, 상기 렌더링 타일들에 대한 지오메트리 리스트들과 함께 제공된다. 그 밖의 배치, 이를테면, 상기 렌더링 태스크를 상기 그래픽 프로세서에 제공할 때, 및/또는 화상에 대해 타일들을 렌더링해야 하는 면적을 식별하는 "렌더 제외 영역"을 나타낼 때, 렌더링될 타일들의 적절한 리스트를 제공하도록 구성되는 상기 그래픽 프로세서용 드라이버가, 원하는 경우, 대신에 사용될 수 있다.
상기 다른 해상도 화상들(64, 65, 66)(의 적절한 부분들)이 그래픽 프로세서(3)에 의해 렌더링되어 있다면, 본 실시예에 있어서, 그 화상들은, 그래픽 처리 시스템의 메모리의 적절한 프레임 버퍼들에 저장된다. 그리고, 그 화상들은, 적절하게 조합(합성)되어 (도 5에 도시된 것처럼) 표시될 최종의 출력된 포비티드 뷰를 제공한다.
본 실시예에서, 상기 최종의 포비티드 출력 뷰를 제공하기 위해 상기 뷰의 다른 해상도 화상들의 합성은, 표시될 상기 최종의 출력된 포비티드 뷰에 걸쳐 상기 다른 해상도 화상들을 적절하게 샘플링하여 조합하도록, 상기 그래픽 프로세서에 의해 각기 다른 해상도 뷰를 그래픽 텍스처로서 취급하고 나서 (상기 프래그먼트 셰이더(28)의 일부로서 구현될) 텍스처 매핑 연산(텍스처 매핑 회로)을 사용함으로써, 행해진다.
특히, 본 실시예에서, 각기 다른 해상도 화상은 밉맵 텍스처에서 밉맵 레벨로서 저장되고 나서, 상기 다른 화상들은 상기 밉맵 텍스처를 적절하게 샘플링할 때 사용하기 위한 디테일의 레벨을 설정함으로써 상기 출력된 포비티드 뷰를 발생하도록 적절하게 샘플링된다. 특히, 상기 밉맵 샘플링 프로세스에 대한 디테일의 레벨은, 텍스처 샘플링 연산이 항상, 각각의 위치에서 규정된 콘텐트를 갖는(즉, 실제의 렌더링된 프래그먼트 데이터를 갖는) 가장 상세한 밉맵 레벨(즉, 가장 상세한 해상도 화상)을 샘플링하도록, 또한 한쪽의 밉맵 레벨로부터(즉, 한쪽의 해상도 화상의 레벨로부터) 다른 쪽의 밉맵 레벨로 상대적으로 완만하게 천이하도록, 상기 출력 화상에 걸쳐 각각의 위치마다 설정된다.
도 8, 9 및 10은, 그 연산을 도시한 것이다.
도 8은 원형 트랜지션 마스크(80, 81)를 사용하여 다른 해상도 화상들을 조합하는 것을 도시한 것이다. 도 9는 단일의 화상(밉맵 레벨)이 최종의 출력된 포비티드 화상(60)에 대해 샘플링 중인 2중 선형 보간을 사용하도록 구성되는 텍스처 샘플링 연산(90)을 도시한 것이다. 도 10은, 2개의 다른 밉맵 레벨들(화상들)간의 3중 선형 보간이, 상기 출력된 포비티드 뷰(60)에서 2개의 다른 해상도 화상들(2개의 다른 밉맵 레벨들)간에 천이가 있는 영역(100)에서 텍스처 샘플링 연산(91)에 대해 사용되도록, 설정되고 있는 디테일의 레벨을 도시한 것이다.
이 도면들로부터, 상기 포비티드 렌더링을 행할 때, 최고의 해상도 화상은, (예를 들면, 시선 추적 센서들을 사용하여 뷰어가 실제로 어디를 주시하고 있는지를 식별하도록 결정되어도 되는) 상기 주시점 또는 주시점들의 위치에 따라, 표시된 최종의 출력 화상의 중심에 꼭 있는 건 아니지만, 상기 뷰의 어디에서나 오프셋될 수 있다는 것을 알 수 있다.
상기 출력 프레임에서(최종의 출력된 포비티드 화상 60에서) 어느 영역들에 사용되는 화상 또는 화상들 및 디테일의 레벨은, 예를 들면, 샘플링중인 (s, t) 텍스처 좌표에 의존되는 화상들을 샘플링할 때 사용하기 위해 디테일의 레벨의 결정을 구성하는 상기 드라이버에 의해 나타내어질 수 있어, 예를 들면, 최고의 해상도 텍스처는 상기 주시점 또는 주시점들 근처에서 샘플링된다. 상기 주시점 또는 주시점들은, 예를 들면, 최고의 해상도를 원하는 직사각형을 나타냄으로써 상기 그래픽 처리를 요구하고 있는 예를 들면, 애플리케이션에 의해 상기 드라이버에 지시되어도 된다. 그리고, 상기 드라이버는 그 직사각형의 중심(그 직사각형의 중심에서의 텍스처 좌표들)을 샘플링하는 것이 최고의 해상도 텍스처로부터 샘플링하도록 디테일 결정의 레벨의 계수를 구성하는 반면에, 그 직사각형의 엣지들을 향해 샘플링하는 것은 최고의 해상도 화상과 두 번째 최고의 해상도 화상 사이 등에서 샘플링하여 보간하기 시작할 것이다.
상기 실시예들에 대한 다수의 변형, 수정 등이, 원하는 경우 가능할 것이다. 예를 들면, 상기 지오메트리 리스트들을 준비할 때(상기 타일링 연산을 행할 때), 그 프로세스는, 상기 최종의 출력된 포비티드 뷰에서 상기 화상의 다른 영역들을 위해 표시될 해상도의 레벨에 근거하여 렌더링중인 화상들의 다른 영역들을 위해 달라질 수 있다. 예를 들면, 지오메트리 리스트들은, 저해상도로 표시될 상기 최종의 출력 화상의 그 영역들에 대해 보다 큰 화상 서브영역들을 위해 준비될 수 있다.
마찬가지로, 상기 렌더링 구성, 이를테면 멀티샘플 카운트 및/또는 샘플별 테스팅이 사용 가능 또는 사용 금지될 수 있는지는, 렌더링 중인 상기 화상의 해상도에 따라 조정될 수 있다.
화상 서브영역 패턴(타일링 패턴)이 예를 들면, 단순히 상기 출력 프레임의 좌상부에서 시작하는 대신에, 표시될 상기 씬의 최고의 해상도(포비티드) 영역의 중심 둘레에서 대칭적이도록 상기 화상 서브영역 패턴을 이동시키는 것도 가능할 것이다. 고해상도 영역이 예를 들면, 512*512 샘플링 위치들(예를 들면, 화소들)이면, 상기 지오메트리 리스트들을 준비하기 위한 상기 화상 서브영역 패턴은 그 고해상도 영역이 단일의 512*512 샘플링 위치 화상 서브영역에 의해 정확히 커버되도록 설정될 수 있다. 그리고, 이것은, 예를 들면, 최소의 해상도 화상을 커버하는 다수의 512*512 샘플링 위치 화상 서브영역을 갖는 것을 피할 것이고, 이때 그들의 영역들 사이의 엣지들은 잠재적으로 비중심 장소에서 최고의 해상도 영역을 통과한다.
따라서, 특히 본 발명의 바람직한 실시예에서, 렌더링될 지오메트리(프리미티브들)에 대한 버텍스들은 상기 화상의 최고의 해상도 부분에 필요한 정밀도로 렌더링되고(즉, 상기 버텍스들은, 마치 상기 씬의 전부가 최고의 해상도로 렌더링되는 것처럼, 렌더링되고), 이에 대응하게, 상기 지오메트리(프리미티브들) 리스트들은 마치 전체 씬이 필요로 할 최고의 해상도로 렌더링되는 것처럼 준비되지만, 상기 씬의 저해상도 부분들의 처리를 보다 효율적으로 하기 위해서, 상기 지오메트리 리스트 준비 연산(타일링 연산) 및/또는 상기 래스터화 연산이 조정된다.
특히, 저해상도로만 표시할 상기 씬의 일부에 대한 지오메트리 리스트들을 준비할 때(상기 타일링 연산을 행할 때), 바람직한 실시예에서, 가장 작은 지오메트리 리스트 서브영역 레벨은 사용되지 않아서, 예를 들면, 상기 렌더링이 양 방향으로 하프 해상도에서 일어날 영역에 대해서, 지오메트리 리스트들은, 프리미티브가 16*16 샘플링 위치 화상 서브영역에 딱 맞을 경우에도, 16*16 샘플링 위치 서브영역들 대신에, 32*32 샘플링 위치(예를 들면, 화소) 서브영역들을 위해 준비된다.
또한, 저해상도 영역들에서의 지오메트리(예를 들면, 프리미티브들)(예를 들면, 결국 최고의 해상도에서 하나의 샘플링 위치가 저해상도에서 알아볼 수 없을 수도 있게 될 프리미티브)를 보다 적극적으로 추려내는 것도 가능할 것이다.
그 후, 상기 화상의 저해상도 영역에 대한 타일을 렌더링할 때, 예를 들면, 양방향으로 하프 해상도에서, 상기 지오메트리 리스트 서브영역들은, 바람직하게는, 실제로 존재하는 것보다 작은 하나의 스텝인 것으로서 취급된다. 예를 들면, 32*32 샘플링 위치 화상 서브영역은, 마치 16*16 샘플링 위치 서브영역인 것처럼 취급될 수 있다. 또한, 상술한 것처럼, 버텍스 좌표들은, 이 영역에서 렌더링할 때 (실제의 래스터화 전에) 크기 조정될 것이다.
2개의 다른 해상도의 화상들을 필요로 하는 영역들에 있어서, 상기 지오메트리 리스트들과 상기 버텍스들은 그대로 유지되지만, 적절한 크기 조정은 상기 렌더링 타일들을 판독하여 래스터화할 때 적용될 것이다.
포비티드 렌더링을 행하지 않는 경우 사이즈에 있어서 4096*4096 샘플링 위치들인 출력 프레임을 렌더링할 때 상기와 같은 배치의 일례는 다음과 같다.
3개의 다른 해상도 화상들, 즉 풀 해상도에서 1024*1024 샘플링 위치들의 제1 화상; 주시점에서(예를 들면, 상기 중심에서) "구멍"을 갖는 상기 풀 해상도 화상의 2048*2048 샘플링 위치들을 커버하는, 하프 해상도에서 1024*1024 샘플링 위치들의 제2 화상; 및 상기 주시점 둘레에(예를 들면, 상기 중심에서) "구멍"을 다시 갖는 상기 풀 해상도 화상의 4096*4096 샘플링 위치들을 커버하는 쿼터 해상도에서 1024*1024 샘플링 위치들의 제3 화상은, 상기 포비티드 렌더링을 위해 생성될 것이다.
이 화상들을 생성할 때, 상기 버텍스 셰이딩 및 지오메트리 리스트 준비(타일링 연산)는, 4096*4096 해상도에서 행해지지만, 그 화상 서브영역들에 대한 조정은 전체 화상의 다른 영역들에서 사용될 것이다.
상기 풀 해상도 화상은 정상으로서 렌더링될 것이다.
상기 하프 해상도 화상을 렌더링할 때, 32*32 샘플링 위치 화상 서브영역들은, 렌더링하면서 즉시 16*16 샘플링 위치 타일들까지 축소될 것이다.(이 화상이 풀 해상도 화상과 중첩하는 작은 영역의 경우, 8*8 샘플링 위치 화상 서브영역 지오메트리 리스트 "저장소들(bins)"이 실제로 사용될 것이다.)
상기 쿼터 해상도 화상을 렌더링할 때, 64*64 샘플링 위치 화상 서브영역들은, 렌더링하면서 즉시 16*16 샘플링 위치 타일들까지 축소될 것이다. 또, 상기 쿼터 해상도 화상이 상기 하프 해상도 화상과 중첩하는 작은 영역의 경우, 상기 프로세스는, 실제로 8*8 샘플링 위치 지오메트리 리스트 "저장소들"을 사용할 것이다.
상기로부터, 본 발명의 바람직한 실시예에서, 본 발명은 적어도, 타일 기반 그래픽 프로세서들과 그래픽 처리 시스템들을 사용하여 포비티드 렌더링을 행하기 위해 보다 효율적인 프로세스와 시스템을 제공할 수 있다는 것을 알 수 있다. 이것은, 본 발명의 바람직한 실시예들에서, 적어도, 상기 출력된 포비티드 화상을 발생하기 위해 렌더링 중인 화상들의 세트에 대해 한번만 상기 지오메트리 소팅(타일링) 프로세스를 행하고 나서, 최종의 출력된 포비티드 화상을 생성하는데 필요한 각기 다른 해상도 화상을 렌더링할 때 지오메트리 리스트들의 상기 단일의 세트를 사용함으로써, 이루어진다.

Claims (28)

  1. 타일 기반 그래픽 프로세서의 연산방법으로서,
    씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도로 나타내는 복수의 화상의 세트를 상기 그래픽 프로세서가 렌더링할 때:
    제1 해상도로 렌더링되는 상기 씬에 대해 렌더링될 상기 화상들의 서브영역들마다, 처리될 그래픽 지오메트리의 리스트들을 준비하는 단계; 및
    상기 제1 해상도로 렌더링될 상기 씬에 대해 준비되어 있는 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링함으로써, 상기 씬의 다른 해상도 뷰들을 나타내는 각각의 화상들을 렌더링하는 단계를 포함하는, 연산방법.
  2. 제 1 항에 있어서,
    처리될 그래픽 지오메트리의 리스트들이 준비되는 제1 해상도는, 상기 씬의 동일한 뷰의 일부 또는 전부를 나타내는 복수의 화상의 세트의 화상에 대해 요구될 최고의 해상도를 포함하는, 연산방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    지오메트리 리스트 준비 연산은, 렌더링중인 상기 뷰의 저 및 고 해상도 화상들이 복수의 화상의 세트의 화상들의 조합을 포함한 출력 화상에서 요구되는 곳을 고려하도록 구성되는, 연산방법.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 제1 해상도보다 저해상도를 갖는 화상들의 상기 세트의 하나의 화상을 렌더링할 때 상기 제1 해상도로 준비되어 있던 지오메트리 리스트들을 사용할 경우, 렌더링중인 상기 저해상도 화상의 해상도에 근거하여 상기 제1 해상도로 준비되어 있던 지오메트리 리스트들에서의 지오메트리를 축소하는 것을 포함하는, 연산방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    복수의 화상의 세트의 상기 화상들의 조합을 포함한 출력 화상의 렌더링 타일들 전부가 아닌 일부를 포함하는 영역에 대한 화상들의 세트의 최고의 해상도 화상을 렌더링하는 것; 및
    최고의 해상도 화상이 렌더링되어 있지 않은 상기 출력 화상의 렌더링 타일들의 적어도 일부에 대해 복수의 화상의 세트의 저해상도 화상 또는 저해상도 화상들을 렌더링하는 것을 포함하는, 연산방법.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 복수의 화상의 세트의 해상도 화상 또는 해상도 화상들이 타일의 장소에 대해 렌더링되어야 하는 복수의 화상의 세트의 화상들의 조합을 포함한 출력 화상의 렌더링 타일마다 나타내는 것을 포함하는, 연산방법.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 다른 해상도 화상들에 대해 상기 렌더링 타일들의 렌더링을 인터리브하는 것을 포함하는, 연산방법.
  8. 제 1 항 또는 제 2 항에 있어서,
    렌더링중인 화상의 해상도에 근거하여 상기 복수의 화상의 세트의 하나의 화상에 대한 렌더링 프로세스를 위한 하나 이상의 렌더링 파라미터들을 설정하는 것을 포함하는, 연산방법.
  9. 제 1 항에 있어서,
    상기 그래픽 프로세서의 텍스처 매핑 연산을 사용한 표시를 위해 복수의 화상의 세트의 화상들의 조합을 포함한 출력 화상을 제공하도록, 복수의 화상의 세트의 상기 렌더링된 화상들을 조합하는 것을 포함하는, 연산방법.
  10. 제 9 항에 있어서,
    상기 화상들의 세트의 다른 해상도 화상들을 밉맵의 세트의 각각의 밉맵 레벨들로서 취급하여서 상기 출력 화상을 제공하도록, 상기 다른 해상도 화상들을 조합하는 것; 및
    상기 밉맵의 세트로부터 샘플링하여서 상기 출력 화상을 발생하는 것을 포함하는, 연산방법.
  11. 제 10 항에 있어서,
    상기 출력 화상에서 주어진 위치에 대해 렌더링된 데이터를 갖는 적어도 가장 상세한 해상도 화상이 그 위치에 대해 샘플링되도록, 상기 뷰의 다른 해상도 화상들을 포함하는 상기 밉맵을 샘플링할 때 사용된 디테일의 샘플링 레벨을 설정하는 것을 포함하는, 연산방법.
  12. 제 10 항에 있어서,
    상기 밉맵에서 각기 다른 해상도 화상은, 동일한 물리적 사이즈를 갖도록 구성되지만, 그 화상의 해상도에 따라, 상기 데이터는 보다 큰 가상 밉맵 레벨의 중심이라고 생각되고, 이때의 상기 보다 큰 가상 밉맵 레벨의 사이즈는 당해 상기 화상의 해상도에 좌우되는, 연산방법.
  13. 제 1 항 또는 제 2 항에 있어서,
    입체 렌더링을 위해, 좌안 뷰에 해당한 한쪽의 세트와, 우안 뷰에 해당한 다른 쪽의 세트로 이루어진, 복수의 다른 해상도 화상의 2세트를 발생하는 것을 포함하는, 연산방법.
  14. 그래픽 처리 시스템의 연산방법으로서, 상기 그래픽 처리 시스템은,
    호스트 프로세서; 및
    타일 기반 그래픽 프로세서를 구비하고,
    상기 그래픽 프로세서는,
    렌더링될 화상의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들을 준비하는 지오메트리 리스트 준비회로; 및
    상기 지오메트리 리스트 준비회로에서 준비한 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 렌더링될 화상들의 타일들을 렌더링하는 렌더링 회로를 구비하고,
    상기 연산방법은,
    상기 그래픽 처리 시스템의 상기 호스트 프로세서가, 상기 호스트 프로세서상에서 실행하는 애플리케이션이, 상기 그래픽 프로세서에, 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도들로 나타내는 복수의 화상의 세트를 렌더링하도록 요구하는 것을 인식하는 단계와;
    상기 그래픽 프로세서가 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도들로 나타내는 복수의 화상의 세트를 렌더링한다고 인식될 때, 상기 그래픽 처리 시스템의 상기 호스트 프로세서가, 상기 그래픽 프로세서에 대해:
    제1 해상도로 렌더링될 상기 씬에 대해 렌더링될 상기 화상들의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들의 준비를 지시하고;
    상기 제1 해상도로 렌더링될 상기 씬에 대해 준비되어 있던 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링함으로써 상기 씬의 상기 다른 해상도들을 나타내는 각각의 화상들의 렌더링을 지시하는 단계와;
    상기 그래픽 프로세서가, 상기 호스트 프로세서에서 지시하는 것에 응답하여:
    상기 그래픽 프로세서의 상기 지오메트리 리스트 준비회로에 의해, 상기 제1 해상도로 렌더링될 상기 씬에 대해 렌더링될 상기 화상들의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들을 준비하는 단계와;
    상기 그래픽 프로세서의 상기 렌더링 회로에 의해, 상기 제1 해상도로 렌더링될 상기 씬에 대해 준비되어 있던 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링함으로써 상기 씬의 다른 해상도 뷰들을 나타내는 각각의 화상들을 렌더링하는 단계를 포함하는, 연산방법.
  15. 렌더링될 화상의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들을 준비하는 지오메트리 리스트 준비회로; 및
    상기 지오메트리 리스트 준비회로에서 준비한 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 렌더링될 화상들의 타일들을 렌더링하는 렌더링 회로를 구비하는, 타일 기반 그래픽 프로세서로서,
    상기 지오메트리 리스트 준비회로는, 한층 더, 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도로 나타내는 복수의 화상의 세트를 상기 그래픽 프로세서가 렌더링할 때, 제1 해상도로 렌더링되는 상기 씬에 대해 렌더링될 상기 화상들의 서브영역들마다, 처리될 그래픽 지오메트리의 리스트들을 준비할 수 있고;
    상기 렌더링 회로는, 한층 더, 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도로 나타내는 복수의 화상의 세트를 상기 그래픽 프로세서가 렌더링할 때, 상기 제1 해상도로 렌더링될 상기 씬에 대해 준비되어 있던 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링함으로써, 상기 씬의 다른 해상도 뷰들을 나타내는 각각의 화상들을 렌더링할 수 있는, 타일 기반 그래픽 프로세서.
  16. 제 15 항에 있어서,
    처리될 그래픽 지오메트리의 리스트들이 준비되는 제1 해상도는, 상기 씬의 동일한 뷰의 일부 또는 전부를 나타내는 복수의 화상의 세트의 화상에 대해 요구될 최고의 해상도를 포함하는, 타일 기반 그래픽 프로세서.
  17. 제 15 항 또는 제 16 항에 있어서,
    지오메트리 리스트 준비 연산은, 렌더링중인 상기 뷰의 저 및 고 해상도 화상들이 복수의 화상의 세트의 화상들의 조합을 포함한 출력 화상에서 요구되는 곳을 고려하도록 구성된, 타일 기반 그래픽 프로세서.
  18. 제 15 항 또는 제 16 항에 있어서,
    상기 렌더링 회로는,
    상기 제1 해상도보다 저해상도를 갖는 화상들의 상기 세트의 하나의 화상을 렌더링할 때 상기 제1 해상도로 준비되어 있던 지오메트리 리스트들을 사용할 경우, 렌더링중인 상기 저해상도 화상의 해상도에 근거하여 상기 제1 해상도로 준비되어 있던 지오메트리 리스트들에서의 지오메트리를 축소하도록 구성된, 타일 기반 그래픽 프로세서.
  19. 제 15 항 또는 제 16 항에 있어서,
    상기 렌더링 회로는,
    복수의 화상의 세트의 상기 화상들의 조합을 포함한 출력 화상의 렌더링 타일들 전부가 아닌 일부를 포함하는 영역에 대한 화상들의 세트의 최고의 해상도 화상을 렌더링하고;
    최고의 해상도 화상이 렌더링되어 있지 않은 상기 출력 화상의 렌더링 타일들의 적어도 일부에 대해 복수의 화상의 세트의 저해상도 화상 또는 저해상도 화상들을 렌더링하도록 구성된, 타일 기반 그래픽 프로세서.
  20. 제 15 항 또는 제 16 항에 있어서,
    상기 렌더링 회로는,
    상기 다른 해상도 화상들에 대해 상기 렌더링 타일들의 렌더링을 인터리브하도록 구성된, 타일 기반 그래픽 프로세서.
  21. 제 15 항 또는 제 16 항에 있어서,
    상기 복수의 화상의 세트의 하나의 화상에 대한 렌더링 프로세스를 위한 하나 이상의 렌더링 파라미터들은, 렌더링중인 화상의 해상도에 근거하여 설정되는, 타일 기반 그래픽 프로세서.
  22. 제 15 항에 있어서,
    텍스처 매핑 회로를 더 구비하고,
    상기 그래픽 프로세서는, 상기 그래픽 프로세서의 상기 텍스처 매핑 회로를 사용한 표시를 위해 복수의 화상의 세트의 화상들의 조합을 포함한 출력 화상을 제공하기 위해, 복수의 화상의 세트의 상기 렌더링된 화상들을 조합하도록 구성된, 타일 기반 그래픽 프로세서.
  23. 제 22 항에 있어서,
    상기 다른 해상도 화상들은,
    상기 화상들의 세트의 다른 해상도 화상들을 밉맵의 세트의 각각의 밉맵 레벨들로서 취급하고;
    상기 밉맵의 세트로부터 샘플링하여서 상기 출력 화상을 발생함으로써,
    상기 출력 화상을 제공하도록 조합되는, 타일 기반 그래픽 프로세서.
  24. 제 23 항에 있어서,
    상기 뷰의 다른 해상도 화상들을 포함하는 상기 밉맵을 샘플링할 때 사용된 디테일의 샘플링 레벨은, 상기 출력 화상에서 주어진 위치에 대해 렌더링된 데이터를 갖는 적어도 가장 상세한 해상도 화상이 그 위치에 대해 샘플링되도록 설정되는, 타일 기반 그래픽 프로세서.
  25. 제 23 항 또는 제 24 항에 있어서,
    상기 밉맵에서 각기 다른 해상도 화상은, 동일한 물리적 사이즈를 갖도록 구성되지만, 그 화상의 해상도에 따라, 상기 화상은 보다 큰 가상 밉맵 레벨의 중심이라고 생각되고, 이때의 상기 보다 큰 가상 밉맵 레벨의 사이즈가 당해 상기 화상의 해상도에 좌우되는, 타일 기반 그래픽 프로세서.
  26. 호스트 프로세서; 및
    타일 기반 그래픽 프로세서를 구비한, 그래픽 처리 시스템으로서,
    상기 그래픽 프로세서는,
    렌더링될 화상의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들을 준비하는 지오메트리 리스트 준비회로; 및
    상기 지오메트리 리스트 준비회로에서 준비한 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 렌더링될 화상들의 타일들을 렌더링하는 렌더링 회로를 구비하고,
    상기 그래픽 처리 시스템은,
    상기 그래픽 프로세서가 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도들로 나타내는 복수의 화상의 세트를 렌더링할 때 인식하도록 구성되고;
    상기 그래픽 프로세서가 씬의 동일한 뷰의 일부 또는 전부이지만 다른 해상도들로 나타내는 복수의 화상의 세트를 렌더링한다고 인식될 때:
    제1 해상도로 렌더링될 상기 씬에 대해 렌더링될 상기 화상들의 서브영역들마다 처리될 그래픽 지오메트리의 리스트들을, 상기 그래픽 프로세서의 상기 지오메트리 리스트 준비회로에 준비시키고;
    상기 제1 해상도로 렌더링될 상기 씬에 대해 준비되어 있던 화상 서브영역들에 대해 처리될 지오메트리의 리스트들을 사용하여 각 화상의 각각의 렌더링 타일들을 렌더링함으로써 상기 씬의 상기 다른 해상도들을 나타내는 각각의 화상들을, 상기 그래픽 프로세서의 상기 렌더링 회로에 렌더링시키도록 구성된,
    처리회로를 더 구비하는, 그래픽 처리 시스템.
  27. 청구항 15의 상기 그래픽 프로세서 또는 청구항 26의 상기 시스템을 구비하는, 가상현실 디스플레이 디바이스.
  28. 데이터 프로세서상에서 작동될 때 컴퓨터에 청구항 1 또는 14의 상기 방법을 실행시키기 위해 매체에 저장된 컴퓨터 프로그램.
KR1020170054070A 2016-04-29 2017-04-27 그래픽 처리 시스템 KR102455696B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1607499.9 2016-04-29
GB1607499.9A GB2553744B (en) 2016-04-29 2016-04-29 Graphics processing systems

Publications (2)

Publication Number Publication Date
KR20170124091A true KR20170124091A (ko) 2017-11-09
KR102455696B1 KR102455696B1 (ko) 2022-10-18

Family

ID=56234124

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170054070A KR102455696B1 (ko) 2016-04-29 2017-04-27 그래픽 처리 시스템

Country Status (4)

Country Link
US (1) US11010959B2 (ko)
KR (1) KR102455696B1 (ko)
CN (1) CN107392989B (ko)
GB (1) GB2553744B (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101869912B1 (ko) 2017-12-26 2018-06-21 세종대학교 산학협력단 포비티드 영상 디스플레이 장치, 이에 의해 수행되는 포비티드 영상 디스플레이 방법 및 이를 저장하는 기록매체
KR20190129013A (ko) * 2018-05-09 2019-11-19 에이알엠 리미티드 그래픽 처리
KR20210027482A (ko) * 2018-07-12 2021-03-10 인터디지털 브이씨 홀딩스 인코포레이티드 볼류메트릭 비디오 전송을 위한 방법들 및 장치
KR20220054604A (ko) * 2019-08-26 2022-05-03 에이티아이 테크놀로지스 유엘씨 단일-스트림 포빌 디스플레이 전송

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2553744B (en) 2016-04-29 2018-09-05 Advanced Risc Mach Ltd Graphics processing systems
US10262387B2 (en) 2016-11-14 2019-04-16 Google Llc Early sub-pixel rendering
US10564715B2 (en) * 2016-11-14 2020-02-18 Google Llc Dual-path foveated graphics pipeline
US10514546B2 (en) 2017-03-27 2019-12-24 Avegant Corp. Steerable high-resolution display
US10628907B2 (en) 2017-04-01 2020-04-21 Intel Corporation Multi-resolution smoothing
US10649524B2 (en) 2017-04-07 2020-05-12 Intel Corporation Apparatus and method for foveated rendering, bin comparison and TBIMR memory-backed storage for virtual reality implementations
US10649521B2 (en) * 2017-04-24 2020-05-12 Intel Corporation Compensating for high head movement in head-mounted displays
CN109993760A (zh) * 2017-12-29 2019-07-09 北京京东尚科信息技术有限公司 一种图片的边缘检测方法和装置
GB2571979B8 (en) * 2018-03-15 2023-07-12 Advanced Risc Mach Ltd Graphics processing
CN110324601A (zh) * 2018-03-27 2019-10-11 京东方科技集团股份有限公司 渲染方法、计算机产品及显示装置
TWI694271B (zh) * 2018-05-20 2020-05-21 宏達國際電子股份有限公司 操作方法、頭戴式裝置及追蹤系統
US10567780B2 (en) 2018-06-14 2020-02-18 Telefonaktiebolaget Lm Ericsson (Publ) System and method for encoding 360° immersive video
US10623736B2 (en) 2018-06-14 2020-04-14 Telefonaktiebolaget Lm Ericsson (Publ) Tile selection and bandwidth optimization for providing 360° immersive video
US10419738B1 (en) 2018-06-14 2019-09-17 Telefonaktiebolaget Lm Ericsson (Publ) System and method for providing 360° immersive video based on gaze vector information
US10672185B2 (en) 2018-07-13 2020-06-02 Nvidia Corporation Multi-rate shading using replayed screen space tiles
US10841662B2 (en) 2018-07-27 2020-11-17 Telefonaktiebolaget Lm Ericsson (Publ) System and method for inserting advertisement content in 360° immersive video
CN108924629B (zh) * 2018-08-28 2021-01-05 恒信东方文化股份有限公司 一种vr图像处理方法
CN112585673A (zh) * 2018-08-29 2021-03-30 索尼公司 信息处理设备、信息处理方法及程序
GB2577062B (en) * 2018-09-11 2021-04-28 Advanced Risc Mach Ltd Methods, apparatus and processor for producing a higher resolution frame
US10650568B2 (en) 2018-09-13 2020-05-12 Qualcomm Incorporated In-flight adaptive foveated rendering
US10440416B1 (en) 2018-10-01 2019-10-08 Telefonaktiebolaget Lm Ericsson (Publ) System and method for providing quality control in 360° immersive video during pause
US10757389B2 (en) 2018-10-01 2020-08-25 Telefonaktiebolaget Lm Ericsson (Publ) Client optimization for providing quality control in 360° immersive video during pause
CN111047676B (zh) * 2018-10-12 2023-04-25 中国移动通信集团广西有限公司 一种图像渲染方法、装置及存储介质
US12020368B1 (en) * 2018-11-02 2024-06-25 Meta Platforms Technologies, Llc Pixel replication and interpolation for foveated rendering in a display engine
GB2578769B (en) * 2018-11-07 2022-07-20 Advanced Risc Mach Ltd Data processing systems
WO2020118276A1 (en) 2018-12-07 2020-06-11 Avegant Corp. Steerable positioning element
CN109741429B (zh) * 2018-12-21 2020-06-19 浙江远算云计算有限公司 一种用于非结构化流体仿真模型的vr动画可视化方法
US11126261B2 (en) 2019-01-07 2021-09-21 Avegant Corp. Display control system and rendering pipeline
GB2583061B (en) 2019-02-12 2023-03-15 Advanced Risc Mach Ltd Data processing systems
WO2020205784A1 (en) 2019-03-29 2020-10-08 Avegant Corp. Steerable hybrid display using a waveguide
US10997954B2 (en) * 2019-07-24 2021-05-04 Qualcomm Incorporated Foveated rendering using variable framerates
EP4005201A1 (en) * 2019-07-28 2022-06-01 Google LLC Methods, systems, and media for rendering immersive video content with foveated meshes
CN111128068B (zh) * 2019-11-28 2022-10-21 武汉天马微电子有限公司 一种显示装置和显示面板的驱动显示方法
EP4062225A4 (en) 2020-01-06 2023-12-27 Avegant Corp. HEAD MOUNTED SYSTEM WITH COLOR SPECIFIC MODULATION
US11321901B2 (en) 2020-02-13 2022-05-03 Mediatek Inc. Hybrid rendering mechanism of a graphics pipeline and an effect engine
CN113741836B (zh) * 2020-05-29 2024-06-04 西安诺瓦星云科技股份有限公司 媒体处理方法、装置和系统
US11574380B2 (en) * 2020-10-13 2023-02-07 Qualcomm Incorporated Methods and apparatus for optimizing GPU kernel with SIMO approach for downscaling utilizing GPU cache
GB202109425D0 (en) * 2021-06-30 2021-08-11 Ucl Buisness Plc Metamerisation of images
CN113554738A (zh) * 2021-07-27 2021-10-26 广东三维家信息科技有限公司 全景图像展示方法、装置、电子设备及存储介质
US11734787B2 (en) * 2021-09-17 2023-08-22 Qualcomm Incorporated Foveated binned rendering associated with sample spaces
US11875445B2 (en) * 2021-10-12 2024-01-16 Electronic Arts Inc. Seamless image processing of a tiled image region
GB2621119A (en) * 2022-07-29 2024-02-07 Advanced Risc Mach Ltd Graphics processing
US20240046410A1 (en) * 2022-08-02 2024-02-08 Qualcomm Incorporated Foveated scaling for rendering and bandwidth workloads

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070146378A1 (en) * 2005-11-05 2007-06-28 Arm Norway As Method of and apparatus for processing graphics

Family Cites Families (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPQ055999A0 (en) * 1999-05-25 1999-06-17 Silverbrook Research Pty Ltd A method and apparatus (npage01)
CA1309198C (en) 1987-12-10 1992-10-20 Carlo J. Evangelisti Parallel rendering of smoothly shaded color triangles with anti-aliased edges for a three dimensional color display
GB8828342D0 (en) 1988-12-05 1989-01-05 Rediffusion Simulation Ltd Image generator
US5175808A (en) 1989-09-12 1992-12-29 Pixar Method and apparatus for non-affine image warping
US5305430A (en) 1990-12-26 1994-04-19 Xerox Corporation Object-local sampling histories for efficient path tracing
GB2251770B (en) 1991-01-09 1995-01-11 Du Pont Pixel Systems Graphics accelerator system with polygon traversal operation
US5150454A (en) 1991-10-16 1992-09-22 Patrick Wood Printing system and method
JP2807608B2 (ja) 1992-12-29 1998-10-08 株式会社ナムコ ソーティング処理装置、これを用いた画像合成装置及びソーティング処理方法
US5555358A (en) 1993-03-01 1996-09-10 Xionics Document Technologies, Inc. Digital printing system and process using compact trapezoidal representations
US5500928A (en) 1993-03-01 1996-03-19 Xionics Document Technologies, Inc. Digital printing system and process using adaptive compression
US5509110A (en) 1993-04-26 1996-04-16 Loral Aerospace Corporation Method for tree-structured hierarchical occlusion in image generators
US5729672A (en) 1993-07-30 1998-03-17 Videologic Limited Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces
GB9315852D0 (en) 1993-07-30 1993-09-15 Video Logic Ltd Shading three-dimensional images
GB2298111B (en) 1995-01-31 2000-01-19 Videologic Ltd Improvements relating to computer 3d rendering systems
US5949428A (en) 1995-08-04 1999-09-07 Microsoft Corporation Method and apparatus for resolving pixel data in a graphics rendering system
US5864342A (en) 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
US5886701A (en) 1995-08-04 1999-03-23 Microsoft Corporation Graphics rendering device and method for operating same
JP4540753B2 (ja) 1995-08-04 2010-09-08 マイクロソフト コーポレーション グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム
US5574836A (en) 1996-01-22 1996-11-12 Broemmelsiek; Raymond M. Interactive display apparatus and method with viewer position compensation
US5844571A (en) 1996-06-10 1998-12-01 International Business Machines Corporation Z buffer bandwidth reductions via split transactions
US6288722B1 (en) 1996-10-17 2001-09-11 International Business Machines Corporation Frame buffer reconfiguration during graphics processing based upon image attributes
US5844576A (en) 1996-12-30 1998-12-01 Cirrus Logic, Inc. Tiled linear host texture storage
US6697063B1 (en) 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
GB9716251D0 (en) 1997-08-01 1997-10-08 Philips Electronics Nv Attribute interpolation in 3d graphics
AUPO951397A0 (en) * 1997-09-29 1997-10-23 Canon Information Systems Research Australia Pty Ltd A method for digital data compression
WO2000011603A2 (en) 1998-08-20 2000-03-02 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
GB2343603B (en) 1998-11-06 2003-04-02 Videologic Ltd Shading 3-dimensional computer generated images
ATE267439T1 (de) 1998-11-09 2004-06-15 Broadcom Corp Anzeigesystem zur mischung von graphischen daten und videodaten
US6344852B1 (en) 1999-03-17 2002-02-05 Nvidia Corporation Optimized system and method for binning of graphics data
US6304266B1 (en) 1999-06-14 2001-10-16 Schlumberger Technology Corporation Method and apparatus for volume rendering
US6819321B1 (en) 2000-03-31 2004-11-16 Intel Corporation Method and apparatus for processing 2D operations in a tiled graphics architecture
US20020039100A1 (en) 2000-06-08 2002-04-04 Stephen Morphet Memory management for systems for generating 3-dimensional computer images
US20020015064A1 (en) 2000-08-07 2002-02-07 Robotham John S. Gesture-based user interface to multi-level and multi-modal sets of bit-maps
US6697064B1 (en) 2001-06-08 2004-02-24 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
GB2378108B (en) 2001-07-24 2005-08-17 Imagination Tech Ltd Three dimensional graphics system
US7158141B2 (en) 2002-01-17 2007-01-02 University Of Washington Programmable 3D graphics pipeline for multimedia applications
US6816161B2 (en) 2002-01-30 2004-11-09 Sun Microsystems, Inc. Vertex assembly buffer and primitive launch buffer
GB2387094B (en) 2002-03-26 2005-12-07 Imagination Tech Ltd 3-D Computer graphics rendering system
US7002571B2 (en) 2002-06-04 2006-02-21 Intel Corporation Grid-based loose octree for spatial partitioning
US7009608B2 (en) 2002-06-06 2006-03-07 Nvidia Corporation System and method of using multiple representations per object in computer graphics
JP2006515939A (ja) 2002-06-20 2006-06-08 アルベルト・バロンチェッリ 表示システムのためのベクトルグラフィックス回路
JP4467267B2 (ja) 2002-09-06 2010-05-26 株式会社ソニー・コンピュータエンタテインメント 画像処理方法、画像処理装置、および画像処理システム
US7138998B2 (en) 2002-11-14 2006-11-21 Intel Corporation Multi-resolution spatial partitioning
GB0301448D0 (en) 2003-01-22 2003-02-19 Falanx Microsystems As Microprocessor systems
US20060129908A1 (en) 2003-01-28 2006-06-15 Markel Steven O On-content streaming media enhancement
US7075535B2 (en) * 2003-03-05 2006-07-11 Sand Codex System and method for exact rendering in a zooming user interface
GB0307095D0 (en) 2003-03-27 2003-04-30 Imagination Tech Ltd Improvements to a tiling system for 3d rendered graphics
US7148890B2 (en) 2003-04-02 2006-12-12 Sun Microsystems, Inc. Displacement mapping by using two passes through the same rasterizer
GB0319697D0 (en) 2003-08-21 2003-09-24 Falanx Microsystems As Method of and apparatus for differential encoding and decoding
US6911985B1 (en) 2003-12-10 2005-06-28 Lsi Logic Corporation Method and apparatus for reducing frame buffer size in graphics systems
CN1641702A (zh) 2004-01-13 2005-07-20 邓兴峰 由平面图象设计立体图象的方法
US7418156B1 (en) 2004-04-16 2008-08-26 Apple Inc. Domain of definition in warper/morpher
US7190366B2 (en) * 2004-05-14 2007-03-13 Nvidia Corporation Method and system for a general instruction raster stage that generates programmable pixel packets
JP4769984B2 (ja) 2004-05-24 2011-09-07 エスティー‐エリクソン、ソシエテ、アノニム タイルベース・グラフィック・レンダリング
US7167171B2 (en) 2004-06-29 2007-01-23 Intel Corporation Methods and apparatuses for a polygon binning process for rendering
US7813562B2 (en) 2004-09-27 2010-10-12 Intel Corporation Low-latency remote display rendering using tile-based rendering systems
US20070168370A1 (en) * 2004-11-16 2007-07-19 Hardy Mark D System and methods for provisioning geospatial data
GB0426170D0 (en) 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
US7551182B2 (en) 2005-01-18 2009-06-23 Oculus Info Inc. System and method for processing map data
GB0519597D0 (en) 2005-09-26 2005-11-02 Imagination Tech Ltd Scalable multi-threaded media processing architecture
GB2444863B (en) * 2005-12-05 2008-10-08 Arm Norway As Method of and apparatus for processing graphics
US9965886B2 (en) 2006-12-04 2018-05-08 Arm Norway As Method of and apparatus for processing graphics
GB2444628B (en) 2006-12-04 2009-02-04 Arm Norway As Method and apparatus for processing graphics
GB0710795D0 (en) 2007-06-05 2007-07-18 Arm Norway As Method of and apparatus for processing graphics
ITMI20070038A1 (it) 2007-01-12 2008-07-13 St Microelectronics Srl Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle.
EP2017707B1 (en) * 2007-07-06 2017-04-12 Dassault Systèmes Widget of graphical user interface and method for navigating amongst related objects
US8933943B2 (en) 2008-04-30 2015-01-13 Intel Corporation Technique for performing load balancing for parallel rendering
GB0818278D0 (en) 2008-10-06 2008-11-12 Advanced Risc Mach Ltd Graphics processing systems
GB0900700D0 (en) * 2009-01-15 2009-03-04 Advanced Risc Mach Ltd Methods of and apparatus for processing graphics
US20110149111A1 (en) * 2009-12-22 2011-06-23 Prentice Wayne E Creating an image using still and preview
JP5683174B2 (ja) * 2010-08-31 2015-03-11 キヤノン株式会社 画像処理装置およびその制御方法
US9171350B2 (en) * 2010-10-28 2015-10-27 Nvidia Corporation Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up
US10359528B2 (en) * 2013-03-15 2019-07-23 Pgs Geophysical As Systems and methods for randomizing firing times of simultaneous sources in marine surveys
US9767595B2 (en) * 2013-05-02 2017-09-19 Arm Limited Graphics processing systems
US10481769B2 (en) * 2013-06-09 2019-11-19 Apple Inc. Device, method, and graphical user interface for providing navigation and search functionalities
US9703355B2 (en) * 2013-08-28 2017-07-11 Qualcomm Incorporated Method, devices and systems for dynamic multimedia data flow control for thermal power budgeting
GB2525636B (en) * 2014-04-30 2020-08-19 Geomerics Ltd Graphics processing systems
KR102255143B1 (ko) * 2014-09-02 2021-05-25 삼성전자주식회사 벤디드 디스플레이를 구비한 휴대 단말기의 제어 방법 및 장치
CN104318882A (zh) 2014-11-10 2015-01-28 京东方科技集团股份有限公司 一种显示模组检测设备
US11010956B2 (en) * 2015-12-09 2021-05-18 Imagination Technologies Limited Foveated rendering
US10643381B2 (en) * 2016-01-12 2020-05-05 Qualcomm Incorporated Systems and methods for rendering multiple levels of detail
US10438400B2 (en) * 2016-03-08 2019-10-08 Nvidia Corporation Perceptually-based foveated rendering using a contrast-enhancing filter
US10192280B2 (en) * 2016-04-08 2019-01-29 Qualcomm Incorporated Per-vertex variable rate shading
GB2553744B (en) 2016-04-29 2018-09-05 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
US11222397B2 (en) 2016-12-23 2022-01-11 Qualcomm Incorporated Foveated rendering in tiled architectures
EP4411519A2 (en) 2017-03-22 2024-08-07 Magic Leap, Inc. Depth based foveated rendering for display systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070146378A1 (en) * 2005-11-05 2007-06-28 Arm Norway As Method of and apparatus for processing graphics

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101869912B1 (ko) 2017-12-26 2018-06-21 세종대학교 산학협력단 포비티드 영상 디스플레이 장치, 이에 의해 수행되는 포비티드 영상 디스플레이 방법 및 이를 저장하는 기록매체
KR20190129013A (ko) * 2018-05-09 2019-11-19 에이알엠 리미티드 그래픽 처리
KR20210027482A (ko) * 2018-07-12 2021-03-10 인터디지털 브이씨 홀딩스 인코포레이티드 볼류메트릭 비디오 전송을 위한 방법들 및 장치
KR20220054604A (ko) * 2019-08-26 2022-05-03 에이티아이 테크놀로지스 유엘씨 단일-스트림 포빌 디스플레이 전송

Also Published As

Publication number Publication date
KR102455696B1 (ko) 2022-10-18
GB2553744A (en) 2018-03-21
CN107392989B (zh) 2023-03-21
GB2553744B (en) 2018-09-05
US11010959B2 (en) 2021-05-18
CN107392989A (zh) 2017-11-24
GB201607499D0 (en) 2016-06-15
US20170316601A1 (en) 2017-11-02

Similar Documents

Publication Publication Date Title
KR102455696B1 (ko) 그래픽 처리 시스템
CN110488967B (zh) 图形处理
KR102442487B1 (ko) 그래픽 처리 시스템 및 그래픽 프로세서
US10102663B2 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US10417741B2 (en) Varying effective resolution by screen location by altering rasterization parameters
CN105046736B (zh) 图形处理系统和操作图形处理系统的方法、存储介质
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
TWI637346B (zh) 圖形處理系統
US9558585B2 (en) Hidden surface removal in graphics processing systems
CN105023233B (zh) 图形处理系统及其操作方法、计算机存储介质
US7777750B1 (en) Texture arrays in a graphics library
WO2018222271A1 (en) Storage for foveated rendering
US20130127858A1 (en) Interception of Graphics API Calls for Optimization of Rendering
JP2010165357A (ja) グラフィックスを処理する方法およびそのための装置
CN113256764A (zh) 一种光栅化装置、方法及计算机存储介质
US20180122132A1 (en) Geometry shadow maps with per-fragment atomics
US11321803B2 (en) Graphics processing primitive patch testing

Legal Events

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