KR20120025534A - 연기형 버텍스 셰이딩을 갖는 그래픽스 프로세싱 유닛 - Google Patents

연기형 버텍스 셰이딩을 갖는 그래픽스 프로세싱 유닛 Download PDF

Info

Publication number
KR20120025534A
KR20120025534A KR1020117030389A KR20117030389A KR20120025534A KR 20120025534 A KR20120025534 A KR 20120025534A KR 1020117030389 A KR1020117030389 A KR 1020117030389A KR 20117030389 A KR20117030389 A KR 20117030389A KR 20120025534 A KR20120025534 A KR 20120025534A
Authority
KR
South Korea
Prior art keywords
vertex
vertices
visible
gpu
primitive
Prior art date
Application number
KR1020117030389A
Other languages
English (en)
Other versions
KR101281258B1 (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 KR20120025534A publication Critical patent/KR20120025534A/ko
Application granted granted Critical
Publication of KR101281258B1 publication Critical patent/KR101281258B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • 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/005General purpose rendering architectures

Landscapes

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

Abstract

연기형 버텍스 셰이딩을 이용하여 그래픽스 프로세싱 유닛 (GPU) 으로 그래픽스 이미지들을 프로세싱하기 위한 기술들이 서술된다. 예시적인 방법은 다음을 포함한다: 그래픽스 프로세싱 유닛 (GPU) 의 프로세싱 파이프라인 내에서, 이미지 기하학적 구조 (image geometry) 내의 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성하는 단계로서, 상기 버텍스 좌표들은 상기 버텍스들의 각각의 버텍스에 대한 위치 및 원근 (perspective) 파라미터를 포함하며, 상기 이미지 기하학적 구조는 그래픽스 이미지를 표현하는, 상기 생성 단계; GPU 의 프로세싱 파이프라인 내에서, 버텍스 좌표들에 기초하여 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별하는 단계; 및 상기 가시적인 프리미티브들을 식별하는 것에 응답하여, 상기 그래픽스 이미지의 표면 특성들을 결정하기 위해, 상기 GPU 의 프로세싱 파이프라인 내에서, 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하는 단계.

Description

연기형 버텍스 셰이딩을 갖는 그래픽스 프로세싱 유닛{GRAPHICS PROCESSING UNIT WITH DEFERRED VERTEX SHADING}
35 U.S.C.§119 하에서의 우선권 주장
본 특허출원은 2009년 5월 29일에 출원된 미국 가특허 출원 61/182,414의 우선권을 주장하며, 이는 그 전체가 참조로써 본 출원에 포함되며, 이에 대한 우선권이 청구된다.
본 발명개시는 그래픽스 프로세싱 유닛을 이용한 그래픽스 이미지들의 프로세싱에 관한 것이다.
그래픽스 프로세싱 유닛 (graphics processing unit; GPU) 은 디스플레이 디바이스상에서 그래픽스 이미지들을 조작하여 디스플레이하는데 이용되는 전용 그래픽스 렌더링 디바이스이다. GPU 는 여러가지 복잡한 알고리즘들에 대해 통상적인 범용 중앙 프로세싱 유닛 (central processing unit; CPU) 보다 더 효율적인 프로세싱을 제공하는 고도의 병렬 구조로 종종 구축된다. 예를 들어, 복잡한 알고리즘들은 3 차원의 컴퓨터처리된 그래픽스의 프로세싱 표현에 대응할 수도 있다. GPU 는 점, 선 및 삼각형을 형성하는 것과 같은 다수의 프리미티브 그래픽스 작업을 구현하여, CPU 로 디스플레이 디바이스에 직접 이미지를 작도하는 것보다 더 빠르게 디스플레이 디바이스 상에 복잡한 2 차원 또는 3 차원 이미지들을 생성할 수도 있다.
종종 비디오 게임 산업에서는 컴퓨터처리된 이미지의 최종적 표면 특성들을 결정하기 위해 버텍스 (Vertex) 셰이딩 및 프래그먼트 (픽셀) 셰이딩이 이용된다. GPU 는 일반적인 셰이더 기반 그래픽스 코어에서 적어도 세 개의 주요 파이프라인 스테이지들, 즉 버텍스 셰이더 스테이지, 프리미티브 셋업 및 보간 스테이지, 및 프래그먼트 셰이더 스테이지를 일반적으로 포함한다.
버텍스 셰이더는 이미지에 대한 이미지 기하학적 구조 (image geometry) 에 적용되어, 그 이미지 기하학적 구조 내에 포함된 프리미티브들에 대한 버텍스 좌표들 및 버텍스 속성들을 생성할 수도 있다. 버텍스 속성들은, 예를 들어, 버텍스와 연관된 색, 법선 및 텍스쳐 좌표들을 포함할 수도 있다. 프리미티브 셋업 모듈은 점, 선 또는 삼각형과 같은 프리미티브들을 형성할 수도 있다. 이미지 기하학적 구조에 대한 프리미티브들이 픽셀들로 변환될 수도 있고, 은닉된 프리미티브 및 픽셀 제거 (은닉된 표면 제거) 가 수행될 수도 있다. 그 후, 속성 보간기가 이미지 기하학적 구조에 대한 프리미티브들 내의 픽셀들에 대해 속성들을 보간하고, 보간된 속성 값들을 픽셀 렌더링을 위한 프래그먼트 셰이더에 보낸다. 그 후, 프래그먼트 셰이더로부터의 결과는 디스플레이 디바이스 상에서의 프로세싱된 이미지의 프리젠테이션을 위해 사후 프로세싱 블록 및 프레임 버퍼로 출력될 수도 있다.
어떠한 경우들에서, 디바이스는 이미지 데이터를 랜더링하기 위해 특정한 GPU 프로세싱 파이프라인을 통해, 다중 통과들, 또는 반복들을 수행할 수도 있다. GPU 파이프라인을 통한 제 1 통과는 속성들을 인출하고 버텍스 좌표들 및 위치와 관련된 버텍스 셰이딩 계산만을 수행할 수도 있다. 제 1 통과 동안, GPU 파이프라인은 비가시적인 프리미티브들을 리젝트할 수도 있고, 가시적인 프리미티브들과 관련된 정보를 메모리 버퍼에 저장할 수도 있다. GPU 파이프라인을 통한 제 2 의 후속적인 통과에서, GPU 파이프라인은 메모리 버퍼로부터 정보를 검색하고, 가시적인 프리미티브들만을 프로세싱하여, 버텍스 셰이딩 계산을 완료한다.
연기형 버텍스 셰이딩을 이용하여 그래픽스 프로세싱 유닛 (GPU) 으로 그래픽스 이미지들을 프로세싱하기 위한 기술들이 서술된다. 예를 들어, GPU 는 다중 버텍스 셰이더들을 이용하여 그래픽스 이미지들을 프로세싱하는 그래픽스 프로세싱 파이프라인을 포함할 수도 있다. 제 1 버텍스 셰이더는, 가시적인 프리미티브들이 식별될 수 있도록, 그래픽스 이미지를 표현하는 특정한 이미지 기하학적 구조 내에 포함된 프리미티브들의 버텍스들에 대한 버텍스 좌표들을 생성할 수도 있다. 두번째로, 그런 후 상이한 버텍스 셰이더가 그래픽스 이미지의 표면 특성들을 결정하기 위해 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성할 수도 있다. 이러한 방식에서, GPU 는 비가시적인 프리미티브들 또는 은닉 표면들과 연관된 버텍스들의 버텍스 인출 및 셰이딩을 위한 어떠한 계산 집약적 기능들을 수행할 필요성을 최소화하거나 또는 제거시킬 수도 있는데, 이것은 GPU 내에서의 성능을 향상시키고 전력 소모를 감소시키는데 도움을 줄 수도 있다. 뿐만 아니라, GPU 는 GPU 자신의 GPU 그래픽스 프로세싱 파이프라인을 통해, 다중 통과들보다는, 단일 통과 동안에 이러한 다양한 태스크들을 수행하는 것이 가능할 수도 있다.
하나의 예시에서, 방법은 다음을 포함한다: 그래픽스 프로세싱 유닛 (GPU) 의 프로세싱 파이프라인 내에서, 이미지 기하학적 구조 내의 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성하는 단계로서, 버텍스 좌표들은 버텍스들의 각각의 버텍스에 대한 위치 및 원근 (perspective) 파라미터를 포함하며, 이미지 기하학적 구조는 그래픽스 이미지를 표현하는, 상기 생성 단계; GPU 의 프로세싱 파이프라인 내에서, 버텍스 좌표들에 기초하여 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별하는 단계; 및 가시적인 프리미티브들을 식별한 것에 응답하여, 그래픽스 이미지의 표면 특성들을 결정하기 위해, GPU 의 프로세싱 파이프라인 내에, 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하는 단계.
하나의 예시에서, 디바이스는 그래픽스 프로세싱 유닛 (GPU) 을 포함한다. GPU 는, GPU 의 프로세싱 파이프라인 내에서, 이미지 기하학적 구조 내의 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성하도록 구성되며, 버텍스 좌표들은 버텍스들의 각각의 버텍스에 대한 위치 및 원근 파라미터를 포함하며, 이미지 기하학적 구조는 그래픽스 이미지를 표현한다. GPU 는 또한, GPU 의 프로세싱 파이프라인 내에서, 버텍스 좌표들에 기초하여 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별하고, 가시적인 프리미티브들을 식별한 것에 응답하여, 그래픽스 이미지의 표면 특성들을 결정하기 위해, 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하도록 구성된다.
하나의 예시에서, 컴퓨터 판독가능한 저장 매체는 하나 이상의 프로세서들로 하여금, 그래픽스 프로세싱 유닛 (GPU) 의 프로세싱 파이프라인 내에서, 이미지 기하학적 구조 내의 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성하고; GPU 의 프로세싱 파이프라인 내에서, 버텍스 좌표들에 기초하여 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별하며; 가시적인 프리미티브들을 식별한 것에 응답하여, 그래픽스 이미지의 표면 특성들을 결정하기 위해, GPU 의 프로세싱 파이프라인 내에, 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하도록 하게 하는 실행가능한 명령들을 포함하며, 버텍스 좌표들은 버텍스들의 각각의 버텍스에 대한 위치 및 원근 (perspective) 파라미터를 포함하며, 이미지 기하학적 구조는 그래픽스 이미지를 표현한다.
이 발명개시에서 설명된 기술들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 만약 소프트웨어로 구현되면, 소프트웨어는, 마이크로프로세서, 애플리케이션 특정 집적 회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 또는 디지털 신호 프로세서 (DSP), 또는 다른 등가적인 집적 논리 회로 또는 이산적 논리 회로와 같은, 하나 이상의 프로세서들을 지칭할 수도 있는, 프로세서에서 실행될 수도 있다. 본 기술들을 실행하기 위한 명령들을 포함한 소프트웨어는 초기에 컴퓨터 판독가능한 매체에 저장되고 프로세서에 의해 로딩되고 실행될 수도 있다.
이에 따라, 본 발명개시는 또한 프로세서로 하여금 본 발명개시에서 설명된 다양한 기술들 중 임의의 것을 수행하도록 하는 명령들을 포함한 컴퓨터 판독가능한 매체를 고려한다. 몇몇 경우들에서, 컴퓨터 판독가능한 매체는 제조자들에게 판매될 수도 있거나 및/또는 디바이스에서 사용될 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능한 매체를 포함할 수도 있으며, 몇몇 경우들에서는 또한 패키징 재료들을 포함할 수도 있다.
하나 이상의 양태들의 세부사항이 첨부 도면과 아래의 상세한 설명에서 설명된다. 다른 특징들, 목적들 및 장점들이 상세한 설명과 도면으로부터, 그리고 청구범위로부터 명백해질 것이다.
도 1 은 이미지 프로세싱을 위한 연기형 버텍스 인출기/셰이더 메커니즘을 구현하는 그래픽스 프로세싱 유닛 (GPU) 을 포함한 예시적인 디바이스를 나타내는 블록도이다.
도 2a 및 도 2b 는 제 1 예시에 따른, 이미지 프로세싱을 위한 다중 버텍스 인출기/디코더 및 다중 버텍스 셰이더를 구현하는 GPU 파이프라인의 블록도이다.
도 3a 및 도 3b 는 제 2 예시에 따른, 이미지 프로세싱을 위한 다중 버텍스 인출기/디코더 및 다중 버텍스 셰이더를 구현하는 GPU 파이프라인의 블록도를 나타낸다.
도 4 는 다중 버텍스 인출기/셰이더 메커니즘의 구현이 디스에이블된 예시적인 GPU 파이프라인을 나타내는 블록도이다.
도 5 는 도 2a 와 도 2b 및/또는 도 3a 와 도 3b 에서 도시된 GPU 와 같은, GPU 파이프라인 내의 컴포넌트들에 의해 수행될 수도 있는 예시적인 방법을 나타내는 흐름도이다.
도 6a 내지 도 6c 는 도 2a 와 도 2b 에서 도시된 GPU 와 같은, GPU 파이프라인 내의 다양한 컴포넌트들에 의해 수행될 수도 있는 예시적인 방법의 흐름도를 나타낸다.
도 1 은 이미지 프로세싱을 위한 연기형 (deferred) 버텍스 인출기/셰이더 메커니즘을 구현하기 위한 그래픽스 프로세싱 유닛 (GPU) (14) 을 포함한 예시적인 디바이스 (2) 를 나타내는 블록도이다. 도 1 의 예시에서, 디바이스 (2) 는 메인 메모리 디바이스 (28) 와 디스플레이 디바이스 (20) 에 결합된 프로세싱 시스템 (10) 을 포함한다. 프로세싱 시스템 (10) 은 제어기 (12), GPU (14), 내부 메모리 디바이스 (24), 및 디스플레이 프로세서 (26) 를 포함한다. 제어기 (12), GPU (14) 및/또는 디스플레이 프로세서 (26) 는 내부 메모리 (24) 및/또는 메인 메모리 (28) 에 데이터를 기입하거나 이로부터 데이터를 판독할 수도 있다. 몇몇 경우들에서, 내부 메모리 (24) 는 캐시 메모리를 포함할 수도 있다.
디바이스 (2) 는 독립형 디바이스를 포함할 수도 있거나 또는 보다 큰 시스템의 일부분일 수도 있다. 예를 들어, 디바이스 (2) 는 (무선 모바일 핸드셋과 같은) 무선 통신 디바이스, 디지털 카메라, 비디오 카메라, 비디오 전화기, 디지털 멀티미디어 플레이어, 개인 휴대 정보 단말기 (PDA), 비디오 게임 콘솔, 개인 컴퓨터 또는 랩탑 디바이스, 또는 그래픽스 데이터를 디스플레이할 수 있는 다른 디바이스를 포함할 수 있거나, 또는 이들의 일부분일 수도 있다. 디바이스 (2) 는 또한 상술한 디바이스들의 일부 또는 전부에서 이용될 수도 있는, 하나 이상의 집적 회로들, 또는 칩들 내에 포함될 수도 있다.
프로세싱 시스템 (10) 내에서, 제어기 (12) 는 GPU (14) 및/또는 디스플레이 프로세서 (26) 와 같은, 프로세싱 시스템 (10) 에서의 다른 프로세서들의 동작을 제어할 수 있다. 여기서 설명된 기술들에 따라, GPU (14) 는 GPU 파이프라인 (18) 및 GPU 파이프라인 (18) 에 결합된 버텍스 캐시/버퍼 (16) 를 포함한다. 버텍스 캐시/버퍼 (16) 는 GPU (14) 와 동일한 집적 회로, 또는 칩의 일부분인 온 칩 버퍼를 포함할 수도 있다. 버텍스 캐시/버퍼 (16) 의 병합은 GPU (14) 내의 GPU 파이프라인 (18) 을 통과하는 데이터의 양을 감소시킬 수도 있다.
몇몇 경우들에서, GPU (14) 는 제어기 (12) 로부터, 그래픽스 이미지를 랜더링하고 디스플레이하기 위한 하나 이상의 커맨드 또는 명령을 따라, 그래픽스 이미지를 표현하는 이미지 기하학적 구조를 수신할 수도 있다. 이미지 기하학적 구조는 이차원 (2D) 또는 삼차원 (3D) 컴퓨터처리된 그래픽스 이미지의 표현에 대응할 수도 있다. GPU (14) 는 랜더링 커맨드에 따라, 이미지 기하학적 구조를 프로세싱하여, 이미지 효과, 백그라운드 이미지, 비디오 게이밍 이미지, 또는 다른 이미지를 예컨대 디바이스 (2) 의 사용자에게 디스플레이 디바이스 (20) 를 통해 제공한다. 시간이 지남에 따라, GPU (14) 는 비디오 프레임들의 시퀀스에서의 비디오 프레임들로서 디스플레이될 수도 있는 이미지들을 위한 이와 같은 이미지 기하학적 구조들의 하나 이상을 프로세싱할 수도 있다. 디스플레이 디바이스 (20) 는 액정 디스플레이 (LCD), 음극선관 (CRT) 디스플레이, 플라즈마 디스플레이, 또는 디스플레이 프로세서 (26) 를 통해 프로세싱 시스템 (10) 에 결합되거나 또는 이와 통합된 또 다른 유형의 디스플레이 디바이스를 포함할 수도 있다.
몇몇 경우들에서, 제어기 (12) 는 비디오 게이밍 애플리케이션과 같은, 디바이스 (2) 내에서 동작하는 애플리케이션들로부터 하나 이상의 이미지 기하학적 구조들을 수신할 수도 있다. 다른 경우들에서, 제어기 (12) 는 무선 또는 유선 네트워크를 통해 디바이스 (2) 에 결합된 외부 서버와 같은, 디바이스 (2) 의 외부에서 동작하는 애플리케이션들로부터 하나 이상의 이미지 기하학적 구조들을 수신할 수도 있다. 예를 들면, 디바이스 (2) 는 스트리밍 미디어 또는 브로드캐스트 미디어를 통해 외부 서버로부터 이미지 기하학적 구조를 수신할 수도 있다.
제어기 (12) 로부터 이미지 기하학적 구조를 수신한 후, GPU (14) 는 이미지 기하학적 구조를 프로세싱하여 디스플레이 프로세서 (26) 를 통해 디스플레이 디바이스 (20) 상에서의 표현을 위한 대응하는 이미지를 준비할 수도 있다. 예를 들어, GPU (14) 는 점, 선 및 삼각형을 형성하는 것과 같은 다수의 프리미티브 그래픽스 작업들을 구현하여, 수신된 이미지 기하학적 구조에 의해 표현된 2D 또는 3D 이미지를 디스플레이 디바이스 (20) 상에 생성시킬 수도 있다. 디스플레이 프로세서 (26) 는 디스플레이 디바이스 (20) 상에서의 이미지의 디스플레이 전에 스케일링, 회전, 또는 다른 작업들과 같은, 일정한 작업들을 수행할 수도 있다.
일반적으로, GPU 파이프라인 (18) 은 이미지 기하학적 구조의 프리미티브들을 프로세싱하기 위해 다양한 프로세싱 스테이지들을 포함한다. 프리미티브들은 점, 선, 삼각형 및 다른 다각형을 포함한 가장 단순한 유형의 기하학적 도형들이며, 프리미티브들은 이미지 기하학적 구조 내에서 하나 이상의 버텍스들로 형성될 수도 있다. 프리미티브들 또는 프리미티브들의 일부분이 이미지 프레임 내에서 비가시적일 때 (예컨대, 오브젝트의 뒷쪽에 위치할 때) 그 프리미티브들 또는 프리미티브들의 일부분은 이미지의 특정한 프레임의 프로세싱 동안의 고려로부터 리젝트될 수도 있으며, 가시적인 프리미티브들의 은닉 표면들도 또한 제거될 수도 있다. 은닉 표면들은 이미지 프레임 내에서, 또 다른 오브젝트 뒤에 위치할 수도 있거나, 또는 투명한 표면들이다.
예를 들어, 도 2a 와 도 2b 및 도 3a 와 도 3b 의 예시들에서 도시된 바와 같이, GPU 파이프라인 (18) 은 프리미티브들의 버텍스들에 대응하는 어떠한 정보를 인출하여 디코딩하기 위한 버텍스 인출 및 디코딩 작업들을 포함할 수도 있으며, 이러한 정보는 후에 버텍스 셰이딩 작업들을 위해 이용된다. 도 1 에서 도시된 바와 같이, GPU 파이프라인 (18) 은, 아래에서 보다 자세하게 설명될 연기형 버텍스 인출기/셰이더 (22) 를 포함하며, 연기형 버텍스 인출기/셰이더 (22) 는 다중 버텍스 인출기/디코더 스테이지들 및 다중 버텍스 셰이딩 스테이지들을 포함한다. 제 1 버텍스 인출기 및 디코더는 이미지 기하학적 구조 내에 포함된 프리미티브들의 버텍스들과 연관된 일정한 좌표 속성들을 인출하고 디코딩할 수도 있으며, 이 좌표 속성들을 제 1 버텍스 셰이더에 제공할 수도 있다. 좌표 속성들은 버텍스 셰이더에 입력되고 버텍스 셰이더에서의 버텍스 위치 및 원근 파라미터들의 계산에 기여하는 속성들이다. 제 1 버텍스 셰이더는 이미지 기하학적 구조 내의 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성할 수도 있고, 버텍스 좌표들은 위치 및 원근 파라미터를 포함할 수도 있다.
제 1 버텍스 셰이더는 버텍스 좌표들을 버텍스 캐시/버퍼 (16) 내에 저장할 수도 있다. 몇몇 경우들에서, 버텍스 캐시/버퍼 (16) 는 버텍스 좌표들을 저장하기 위한 전용 저장 영역을 포함할 수도 있다. 버텍스 좌표들은 예컨대, 이미지 기하학적 구조 내의 버텍스의 위치를 식별하는 X, Y, 및 Z 좌표들 (예컨대, X, Y, Z 축들상의 XYZ 좌표들), 및 이미지 기하학적 구조에 대한 원근 파라미터를 포함한 W 좌표를 갖는 사차원 좌표 시스템에 기초하여 이미지 기하학적 구조 내의 프리미티브들의 버텍스들을 식별할 수도 있다.
GPU 파이프라인 (18) 의 프리미티브 셋업 엘리먼트는 버텍스 캐시/버퍼 (16) 에 저장된 버텍스 좌표들을 검색하고, 이 좌표들을 이용하여 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별할 수도 있다. 가시적인 프리미티브들을 식별한 것에 응답하여, 제 2 인출기 및 디코더는 가시적인 프리미티브들의 버텍스들에 대한 일정한 비좌표 속성들 (예컨대, 좌표 정보와 연관되지 않은 속성들) 을 인출하여 디코딩할 수도 있고, 이것들을 제 2 버텍스 셰이더에 제공할 수도 있다. 비좌표 속성들은 버텍스 셰이더에 입력되고 버텍스 셰이더에서의 좌표 위치 및 원근 파라미터들 이외의 다른 속성들의 계산에 기여하는 속성들이다. 몇몇 경우들에서, 좌표 속성들은 비좌표 속성들과 중첩하는 일정한 속성들을 가질 수도 있는데, 그 이유는 이러한 속성들은 버텍스 위치와 다른 속성들 모두의 계산들에 기여할 수도 있기 때문이다.
그 후 비좌표 속성들의 수신시, 제 2 버텍스 셰이더가 그래픽스 이미지의 표면 특성들을 결정하기 위해 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성할 수도 있다. 버텍스 속성들은, 예를 들어, 임의의 주어진 버텍스와 연관된 색, 법선 및 텍스쳐 좌표들을 포함할 수도 있다.
이러한 방식에서, GPU 파이프라인 (18) 은 일정한 비가시적인 프리미티브들 또는 은닉 표면들에 대한 인출 및 버텍스 셰이딩을 위한 일정한 계산 집약적 기능들을 수행할 필요성을 최소화하거나 또는 제거시킬 수도 있다. 과거에, 버텍스 인출/디코딩 및 버텍스 셰이딩은 일반적으로 대응 프리미티브들이 가시적인지 또는 비가시적인지 여부에 상관없이, 프리미티브 셋업 전에 이미지 기하학적 구조에서의 모든 프리미티브들의 버텍스들에 대해 수행되어 왔다. 버텍스 인출/디코딩 및 셰이딩 작업들 중 어떠한 것을 연기시킴으로써, 주어진 이미지 기하학적 구조 내의 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들의 인출 및 셰이딩 작업들을 제공하는 것이 가능하다. 이것은 불필요한 버텍스 스트림 인출 및 버텍스 셰이딩 계산들을 효율적으로 제거함으로써 전력 소모를 감소시키는 것을 도와줄 수도 있으며 또한 디바이스 (2) 내에서의 성능을 향상시킬 수도 있다. GPU 파이프라인 (18) 및 연기형 버텍스 인출기/셰이더 (22) 는 타일형 또는 비타일형 랜더링 아키텍쳐들에서 구현될 수도 있다.
도 2a 및 도 2b 는 제 1 예시에 따른, 이미지 프로세싱을 위한 다중 버텍스 인출기/디코더 (32, 48) 및 다중 버텍스 셰이더 (34, 50) 를 구현하는 GPU 파이프라인 (30) 의 블록도를 나타낸다. 이 예시에서, 도 2a 및 도 2b 에서 도시된 GPU 파이프라인 (30) 은 도 1 에 도시된 GPU 파이프라인 (18) 의 일부일 수도 있다. 하나의 양태에 따라, 버텍스 인출기/디코더 (32) (버텍스 인출기/디코더 #1), 버텍스 셰이더 (34) (버텍스 셰이더 #1), 버텍스 인출기/디코더 (48) (버텍스 인출기/디코더 #2), 및 버텍스 셰이더 (50) (버텍스 셰이더 #2) 는 도 1 에서 도시된 연기형 버텍스 인출기/셰이더 (22) 의 일부일 수도 있다. 다중 버텍스 인출기/디코더 (32, 48) 및 다중 버텍스 셰이더 (34, 50) 를 구현함으로써, GPU 파이프라인 (30) 은 버텍스 인출기/디코더 (48) (버텍스 인출기/디코더 #2) 및 버텍스 셰이더 (50) (버텍스 셰이더 #2) 까지 어떠한 기능을 연기시키고, 어떠한 비가시적인 프리미티브들에 대한 버텍스들의 버텍스 인출 및 셰이딩을 위한 계산 집약적 기능들 중의 몇몇을 수행할 필요성을 최소화하거나 제거시킬 수도 있다.
도 2a 에서, 커맨드 엔진 (31) 은 GPU 파이프라인 (30) 이 존재하는 디바이스 (예컨대, 도 1 에 도시된 디바이스 (2)) 의 제어기로부터 이미지에 대한 이미지 기하학적 구조 및 랜더링 커맨드들을 수신할 수도 있다. 이미지 기하학적 구조는 복잡한 2D 또는 3D 컴퓨터처리된 그래픽스의 표현들에 대응할 수도 있다. 커맨드 엔진 (31) 은 이미지 기하학적 구조 및 랜더링 커맨드들을 GPU 파이프라인을 따라 다른 프로세싱 스테이지들에 전달한다.
예를 들어, 커맨드 엔진 (31) 은 이미지 기하학적 구조 내에 포함된 프리미티브들의 버텍스들에 대한 버텍스 인덱스들을 제 1 버텍스 인출기/디코더 (32) 에 전달한다. 제 1 버텍스 인출기/디코더 (32) 는 이러한 버텍스 인덱스들을 수신하고 그 후에 버텍스들에 대한 속성들을 인출할 수도 있다. 예를 들어, 몇몇의 경우들에서, 제 1 버텍스 인출기/디코더 (32) 는 버텍스 캐시/버퍼 (38) 내에 포함될 수도 있는 것과 같은, 버텍스 캐시 메커니즘에서의 속성들에 대한 히트/미스 체크 (hit/miss checking) 를 제일먼저 수행할 수도 있다. (하나의 양태에서, 버텍스 캐시/버퍼 (38) 는 도 1 에서 도시된 버텍스 캐시/버퍼 (16) 의 일부일 수도 있다.) 임의의 미스된 (missed) 버텍스들에 대해, 버텍스 인출기/디코더 (32) 는 내부 메모리 (24) (도 1) 내에 포함될 수도 있는 것과 같은, 메모리 버퍼로부터 속성들을 인출할 수도 있다.
도 2a 및 도 2b 의 예시에서, 인출된 속성들은 버텍스들의 좌표들에 연관된 속성들 (즉, 좌표 속성들) 에 대응할 수도 있다. 좌표 속성들은 이미지 기하학적 구조에 대한 원근 파라미터 (예컨대, W 좌표) 및 버텍스의 위치 (예컨대, X, Y, Z 축들상에서의 XYZ 좌표들) 의 계산과 관련된 속성들을 포함할 수도 있다. 이러한 좌표 속성들은 제 1 버텍스 셰이더 (34) 가 버텍스들에 대한 실제의 좌표들 (예컨대, 위치 및 원근에 대한 XYZW 좌표들) 을 결정하는데 이용될 수도 있다. 하지만, 많은 경우들에서, 버텍스 인출기/디코더 (32) 는 인출된 좌표 속성들의 속성 포맷들을 디코딩하고 이것들을 버텍스 셰이더 (34) 에 의해 수용가능한 내부 포맷들로 변환시킬 수도 있다.
버텍스 셰이더 (34) 는 이미지 기하학적 구조에 적용되고 이미지 기하학적 구조 내의 버텍스들에서의 이미지의 표면 특성들을 결정한다. 이러한 방식으로, 버텍스 셰이더 (34) 는 이미지 기하학적 구조 내의 버텍스들 각각의 버텍스 좌표들을 생성한다. 버텍스 좌표들은 예컨대, 이미지 기하학적 구조 내의 버텍스의 위치를 식별하는 X, Y, 및 Z 좌표들, 및 이미지 기하학적 구조에 대한 원근 파라미터를 포함한 W 좌표를 갖는 사차원 좌표 시스템에 기초하여 이미지 기하학적 구조 내의 버텍스들을 식별한다. 버텍스 좌표들의 생성시, 버텍스 셰이더는 버텍스 좌표들을 버텍스 캐시/버퍼 (38) 에 저장할 수도 있다.
도 2a 의 예시에서 도시된 바와 같이, 버텍스 캐시/버퍼 (38) 는 상이한 유형들의 버텍스 데이터에 대한 구별되는 전용 저장 영역을 포함할 수도 있다. 버텍스 캐시/버퍼 (38) 의 좌표 저장 영역 (40) 은 예컨대 버텍스 셰이더 (34) 에 의해 제공될 수도 있는 버텍스 좌표들을 저장할 수 있다. 버텍스 캐시/버퍼 (38) 의 속성 저장 영역 (42) 은 예컨대 제 2 버텍스 셰이더 (50) 에 의해 제공될 수도 있는 버텍스 속성들을 저장할 수 있는데, 이것은 후에 보다 자세하게 설명될 것이다. 몇몇의 경우들에서, 버텍스 셰이더 (34) 는 프리미티브 셋업 모듈 (36) 에게, 버텍스 캐시/버퍼 (38) 의 좌표 저장 영역 (40) 내의 저장된 버텍스 좌표들에 대한 캐시 인덱스 값들을 제공할 수도 있다. 이 경우들에서, 캐시 인덱스 값들은 버텍스 인출기/디코더 (32) 에 의해 계산되어 버텍스 셰이더 (34) 에 전달될 수도 있다.
프리미티브 셋업 모듈 (36) 은 버텍스 캐시/버퍼의 좌표 저장 영역 (40) 으로부터 프리미티브 버텍스들에 대한 버텍스 좌표들 (예컨대, X, Y, Z, W 좌표들) 을 판독할 수도 있다. 프리미티브 셋업 모듈 (36) 은 버텍스 셰이더 (34) 에 의해 제공된 캐시 인덱스 값들을 이용하여 좌표 저장 영역 (40) 내에서 검색을 위한 버텍스 좌표들을 위치확인할 수도 있다. 프리미티브 셋업 모듈 (36) 은 이미지 기하학적 구조 내에서 하나 이상의 버텍스들로 프리미티브들을 형성한다. 프리미티브들은 가장 단순한 유형의 기하학적 도형들이고, 점, 선, 삼각형 및 다른 다각형을 포함할 수도 있다.
프리미티브 셋업 모듈 (36) 은 임의의 비가시적인 프리미티브들의 초기 리젝트를 수행할 수도 있다. 예를 들어, 뷰포트 또는 뷰잉 구역 밖에 위치할 수도 있는 임의의 프리미티브들은 비가시적인 프리미티브들로서 리젝트될 수도 있다. 프리미티브 셋업 모듈 (36) 은 또한 프리미티브들 내의 버텍스들의 XY 좌표들을 이용하여 오려내기 (scissoring) 및 백페이스 컬링 (backface culling) 을 수행함으로써 프리미티브들을 리젝트할 수도 있다. 오려내기 및 백페이스 컬링은 프리미티브들 또는 프리미티브들의 일부가 이미지 프레임 내에서 비가시적일 때 그 프리미티브들 또는 프리미티브들의 일부를 이미지의 특정한 프레임의 프로세싱 동안의 고려로부터 리젝트한다. 예를 들어, 프리미티브들 및 프리미티브들의 일부는 이미지 프레임 내의 오브젝트의 뒷면에 위치할 수도 있다.
프리미티브 셋업 모듈 (36) 은 이미지 기하학적 구조 내의 가시적인 프리미티브들을 스캔 컨버터 (44) 에 제공할 수도 있으며, 프리미티브들은 예컨대 프리미티브들에 포함된 픽셀들의 갯수 및 프리미티브들 내의 버텍스들 각각의 XY 좌표들에 기초하여 픽셀들로 래스터화될 수도 있다.
이와 병행하여, 프리미티브 셋업 모듈 (36) 은 가시적인 프리미티브들의 버텍스 인덱스들을 제 2 버텍스 인출기/디코더 (48) 에 제공할 수도 있다. 버텍스 인출기/디코더 (48) 는 이러한 버텍스 인덱스들을 수신하고 그 후에 버텍스들에 대한 속성들을 인출할 수도 있다. 예를 들어, 몇몇의 경우들에서, 버텍스 인출기/디코더 (48) 는 버텍스 캐시/버퍼 (38) 내에 포함될 수도 있는 것과 같은, 버텍스 캐시 메커니즘에서의 속성들에 대한 히트/미스 체크 (hit/miss checking) 를 제일먼저 수행할 수도 있다. 임의의 미스된 (missed) 버텍스들에 대해, 버텍스 인출기/디코더 (48) 는 내부 메모리 (24) (도 1) 내에 포함될 수도 있는 것과 같은, 메모리 버퍼로부터 속성들을 인출할 수도 있다.
도 2a 및 도 2b 의 예시에서, 버텍스 인출기/디코더 (48) 에 의해 인출된 속성들은 버텍스들의 좌표들 또는 좌표 작업들과 연관되지 않은 속성들에 대응할 수도 있으며, 이것들은 비좌표 속성들로서 칭해질 수도 있다. 이러한 비좌표 속성들은 제 2 버텍스 셰이더 (50) 가 이미지 기하학적 구조에서의 가시적인 프리미티브들의 버텍스들의 버텍스 속성들을 계산하는데 이용될 수도 있다. 버텍스 속성들은, 예를 들어, 주어진 버텍스와 연관된 색, 법선 및 텍스쳐 좌표들을 포함할 수도 있다. 버텍스 셰이더 (50) 는 계산시, 버텍스 캐시/버퍼 (38) 의 속성 저장 영역 (42) 내에 버텍스 속성들을 저장할 수도 있다. 하나의 양태에서, OpenGL/OpenGL SL (Open Graphics Library/Open Graphics Library Shading Language) 규격의 용어를 이용하여 버텍스 속성들은 "가변된다" 라고 칭해진다.
도 2a 및 도 2b 에서 도시되고, 이전에 설명한 바와 같이, 버텍스 캐시/버퍼 (38) 는 또한 두 개의 영역들, 즉 좌표 저장 영역 (40) 과 속성 저장 영역 (42) 으로 논리적으로 분할될 수도 있다. 버텍스 캐시/버퍼 (38) 의 이러한 두 개의 영역들은 GPU 파이프라인 (30) 에 의한 이용을 위해 GPU (예컨대, 도 1 의 GPU (14)) 에 의해 독립적으로 관리될 수도 있다. 좌표 저장 영역 (40) 은 버텍스 셰이더 (34) 에 의해 생성되고 프리미티브 셋업 모듈 (36) 에 의해 이용되는 버텍스 좌표들을 포함한다. 속성 저장 영역 (42) 은 버텍스 셰이더 (50) 에 의해 생성되고 속성 셋업 및 보간 모듈 (52) 에 의해 이용되는 버텍스 속성들을 포함한다. 버텍스 셰이더 (50) 는, 속성 셋업 및 보간 모듈 (52) 에게, 버텍스 캐시/버퍼 (38) 의 속성 저장 영역 (42) 내의 저장된 버텍스 속성들에 대한 캐시 인덱스 값들을 제공할 수도 있다. 이러한 캐시 인덱스 값들은 버텍스 인출기/디코더 (48) 에 의해 계산될 수도 있다.
도 2a 의 예시에서, 버텍스 인출기/디코더 (48) 및 버텍스 셰이더 (50) 는, GPU 파이프라인 (30) 내에서, 스캔 컨버터 (44) 및 조기 Z 모듈 (46) 의 파이프라인 레이턴시를 대략적으로 커버할 수도 있다. 그 결과로, 버텍스 인출기/디코더 (48) 및 버텍스 셰이더 (50) 의 작업들은 스캔 컨버터 (44) 및 조기 Z 모듈 (46) 의 작업들과 대략적으로 병행적으로 (in parallel) 수행될 수도 있으며, 이것은 다양한 성능 효율성들을 달성할 수도 있다. 조기 Z 모듈 (46) 은 예컨대 프리미티브들 내의 버텍스들의 Z 좌표들에 기초한 조기 깊이 및 스텐실 테스트를 이용하여 가시적인 프리미티브들의 은닉 표면들을 제거하기 위해 스캔 컨버터 (44) 와 함께 동작한다. 프리미티브들 또는 프리미티브들 내의 픽셀들 (예컨대, 표면들) 은 은닉된 것으로 간주될 수도 있고, 이에 따라 프리미티브들 또는 프리미티브들 내의 픽셀들이 이미지 프레임 내에서 또 다른 오브젝트 (예컨대, 또 다른 프리미티브) 뒤에 위치하거나 또는 이미지 프레임 내에서 투명할 때, 이미지의 특정한 프레임의 프로세싱 동안의 고려로부터 제거될 수도 있다.
버텍스 속성들이 버텍스 셰이더 (50) 에 의해 속성 저장 영역 (42) 에 저장된 후, 연기형 속성 셋업 및 보간 모듈 (52) 은 이러한 속성들을 속성 저장 영역 (42) 으로부터 검색할 수도 있다. 속성 셋업 및 보간 모듈 (52) 은 버텍스 셰이더 (50) 에 의해 제공된 캐시 인덱스 값들을 이용하여 속성 저장 영역 (42) 내에서 검색을 위한 버텍스 속성들을 위치확인할 수도 있다. 속성 셋업 및 보간 모듈 (52) 은 또한 조기 Z 모듈 (46) 로부터, 리젝트되지 않은 프리미티브들에 대한 픽셀들을 획득할 수도 있다. 그런 후 속성 셋업 및 보간 모듈 (52) 은 예컨대, 속성 구배 값들 (attribute gradient values) 에 기초하여 프리미티브들 내의 픽셀들에 대해 속성들을 보간할 수도 있다.
하나의 양태에서, 속성 구배는 수평 (X) 방향 또는 수직 (Y) 방향 중 어느쪽의 방향으로 움직이는 프리미티브 내의 제 1 픽셀에서의 속성 값과 제 2 픽셀에서의 속성 값간의 차이를 포함한다. 버텍스 속성들은 속성 구배를 계산하는데 이용될 수도 있다. 몇몇의 경우들에서, 속성 구배 셋업 레이트는 프리미티브들과 연관된 버텍스 속성들의 갯수에 매우 의존할 수도 있다. 따라서, 인출, 디코딩, 및 셰이딩 중 어떠한 기능을 연기시킴으로써, GPU 파이프라인 (30) 은 속성 셋업 및 보간 모듈 (52) 에 의해 프로세싱될 필요가 있는 속성들의 갯수를 제한시키고, 이로써 속성 셋업 및 보간 모듈 (52) 이 동작할 때의 효율성을 증가시킨다. 연기형 속성 셋업 및 보간 모듈 (52) 은, 프리미티브 셋업 모듈 (36) 에 의해 결정된, 가시적인 프리미티브들과 연관된 버텍스들에 대한 버텍스 속성들을 검색하고 프로세싱할 필요만 있을 수도 있으며, (조기 Z 모듈 (46) 에 의해 결정된) 은닉 표면들은 또한 제거될 수도 있다. 또 다른 양태에서, 연기형 속성 셋업 및 보간 모듈 (52) 은 계수 생성기와 같은, 또 다른 메커니즘에 의해 교체되거나 또는 구현될 수도 있다. 이 양태에서, 생성된 계수들에 대해 보간이 수행될 수도 있다.
도 2b 에서 도시된 바와 같이, 속성 셋업 및 보간 모듈 (52) 은 보간된 속성 값들을 픽셀/프래그먼트 셰이더 (54) 에 제공하여 프리미티브들의 픽셀 랜더링을 수행할 수도 있다. 픽셀/프래그먼트 셰이더 (54) 는 이미지 기하학적 구조에 대한 프리미티브들 내의 픽셀들에서의 이미지의 표면 특성들을 결정할 수도 있다. 그런 후 픽셀/프래그먼트 셰이더 (54) 의 결과들은 도 1 에서 도시된 디스플레이 디바이스 (20) 상에서와 같은 디스플레이를 위한 픽셀들을 준비하기 위해 사후 프로세싱 모듈 (56) 에 출력될 수 있다.
하나의 양태에서, 버텍스 셰이더 (34) 및 버텍스 셰이더 (50) 는 하드웨어 비용을 절약하기 위해 GPU 파이프라인 (30) 을 구현하기 위한 동일한 셰이더 프로세서 (미도시) 를 물리적으로 공유할 수도 있다. 하나의 양태에서, 버텍스 스트림 인출기/디코더 (32) 및 버텍스 스트림 인출기/디코더 (48) 는 하드웨어 비용을 절약하기 위해 동일한 스트림 캐시 (미도시) 를 공유할 수도 있다.
GPU 파이프라인 (30) 은 어떠한 비가시적인 프리미티브들 또는 은닉 표면들에 대한 인출 및 버텍스 셰이딩을 위한 어떠한 계산 집약적 기능들을 수행할 필요성을 최소화하거나 또는 제거시킬 수도 있다. 어떠한 버텍스 인출/디코딩 작업들 및 버텍스 셰이딩 작업들을 연기시킴으로써, 주어진 이미지 기하학적 구조 내의 가시적인 프리미티브들의 버텍스들만에 대한 인출 및 셰이딩 작업들을 제공하는 것이 가능하다. 이것은 비가시적인 것으로서 리젝트되었던 프리미티브들에 대한 불필요한 버텍스 스트림 인출 및 버텍스 셰이딩 계산들을 효율적으로 제거함으로써 전력 소모를 감소시키는 것을 도와줄 수도 있으며 또한 성능을 향상시킬 수도 있다.
도 3a 및 도 3b 는 제 2 예시에 따른, 이미지 프로세싱을 위한 다중 버텍스 인출기/디코더 및 다중 버텍스 셰이더를 구현하는 GPU 파이프라인 (60) 의 블록도를 나타낸다. 도 2a 및 도 2b 에서 도시된 GPU 파이프라인 (30) 과 마찬가지로, GPU 파이프라인 (60) 은 커맨드 엔진 (61), 제 1 버텍스 인출기/디코더 (62), 제 1 버텍스 셰이더 (64), 프리미티브 셋업 모듈 (66), 스캔 컨버터 (68), 조기 Z 모듈 (70), 제 2 버텍스 인출기/디코더 (78), 제 2 버텍스 셰이더 (80), 연기형 속성 셋업 및 보간 모듈 (82), 픽셀/프래그먼트 셰이더 (84), 및 사후 프로세싱 모듈 (86) 을 포함한다. 하나의 양태에 따라, 버텍스 인출기/디코더 (62) (버텍스 인출기/디코더 #1), 버텍스 셰이더 (64) (버텍스 셰이더 #1), 버텍스 인출기/디코더 (78) (버텍스 인출기/디코더 #2), 및 버텍스 셰이더 (80) (버텍스 셰이더 #2) 는 도 1 에서 도시된 연기형 버텍스 인출기/셰이더 (22) 의 일부일 수도 있다.
도 3a 및 도 3b 는 또한 GPU 파이프라인 (60) 이 버텍스 캐시/버퍼 (72) 와 상호작용하는 것을 도시한다. 도 2a 및 도 2b 에서 도시된 버텍스 캐시/버퍼 (38) 와 마찬가지로, 버텍스 캐시/버퍼 (72) 는 버텍스 좌표들 및 버텍스 속성들을 위한 구별되는 저장 영역들, 즉 좌표 저장 영역 (74) 과 속성 저장 영역 (76) 을 포함한다.
GPU 파이프라인 (30) 과 마찬가지로, GPU 파이프라인 (60) 은 버텍스 캐시/버퍼 (72) 와 상호작용할 때 버텍스 좌표 및 버텍스 속성 데이터를 저장하고 검색한다. 예를 들어, 버텍스 셰이더 (64) 는 좌표 저장 영역 (74) 내에 버텍스 좌표들을 저장할 수도 있다. 그런 후 프리미티브 셋업 모듈 (66) 은 비가시적인 프리미티브들을 식별하여 리젝트하기 위해 이미지 기하학적 구조 내의 프리미티브들의 버텍스들에 대한 버텍스 좌표들을 검색할 수도 있다. 하지만, GPU 파이프라인 (30) 과는 달리, GPU 파이프라인 (60) 은 프리미티브 셋업 모듈 (66) 로부터의 출력을 스캔 컨버터 (68) 와 조기 Z 모듈 (70) 에게만 제공한다. 스캔 컨버터 (68) 는 래스터화 기능을 수행하여 픽셀들을 생성하고, 조기 Z 모듈 (70) 은 임의의 은닉된 표면들을 리젝트할 수도 있다.
그런 후 가시적인 프리미티브들은 제 2 버텍스 인출기/디코더 (78) 에 전달되고, 그런 후 제 2 버텍스 인출기/디코더 (78) 는 이러한 프리미티브들의 버텍스 인덱스들에 대한 히트/미스 체크를 수행할 수도 있다. 그런 후 제 2 버텍스 셰이더 (80) 가 버텍스들에 대한 버텍스 속성들 (예컨대, 색, 법선, 텍스쳐) 을 생성하고, 이러한 속성들을 속성 저장 영역 (76) 내에 저장할 수 있도록, 버텍스 인출기/디코더 (78) 는 이러한 버텍스들에 대한 비좌표 속성들을 인출하고 디코딩할 수도 있다. 그런 후, 연기형 속성 셋업 및 보간 모듈 (82), 픽셀/프래그먼트 셰이더 (84), 및 사후 프로세싱 모듈 (86) 은 디스플레이를 위한 데이터를 프로세싱하기 위해 연기형 속성 셋업 및 보간 모듈 (52), 픽셀/프래그먼트 셰이더 (54), 및 사후 프로세싱 모듈 (56) (도 2a 및 도 2b) 과 유사한 기능들을 수행할 수도 있다.
GPU 파이프라인 (60) 은 어떠한 장점들을 제공할 수도 있다. 예를 들어, 버텍스 인출기/디코더 (78) 는 조기 Z 모듈 (70) 로부터의 출력을 수신하기 때문에, 버텍스 인출기/디코더 (78) 및 버텍스 셰이더 (80) 는 반드시 임의의 은닉 표면들의 버텍스들에 대한 버텍스 인덱스들을 프로세싱하거나 버텍스 속성들을 계산해야 할 필요는 없다. 조기 Z 모듈 (70) 은 추가적인 프로세싱으로부터 이와 같은 은닉 표면들 중 하나 이상을 제거할 수도 있는데, 이것은 버텍스 인출기/디코더 (78) 및 버텍스 셰이더 (80) 의 프로세싱 대역폭을 절감시킬 수도 있다. (도 2a 및 도 2b 의 예시에서, 버텍스 인출기/디코더 (48) 및 버텍스 셰이더 (50) 는 스캔 컨버터 (44) 및 조기 Z 모듈 (46) 과 실질적으로 병행적으로 동작한다. 이와 같은 예시에서는, 버텍스 인출기/디코더 (48) 및 버텍스 셰이더 (50) 가 잠재적으로 은닉된 표면들의 버텍스들을 프로세싱하는 사이클들을 소비할 필요가 있을 수도 있다.) 하지만, 많은 상황들에서, 훨씬 많은 수의 프리미티브들은 조기 Z 모듈 (70) 보다는 프리미티브 셋업 모듈 (66) 에 의해 리젝트될 수도 있으며, 이것은 GPU 파이프라인 (60) 의 예시의 이러한 잠재적인 장점을 경감시킬 수도 있다. (예를 들어, 매우 많은 수의 프리미티브들이 비가시적인 것으로서 프리미티브 셋업 모듈 (66) 에 의해 리젝트될 수도 있는 반면에, 표면들에 대한 보다 훨씬 작은 퍼센티지의 픽셀들/프리미티브들이 은닉된 것으로서 조기 Z 모듈 (70) 에 의해 리젝트될 수도 있다.)
GPU 파이프라인 (30) 과 비교할 때, GPU 파이프라인 (60) 은 또한 어떠한 한계들을 가질 수도 있다. 버텍스 인출기/디코더 (78) 및 버텍스 셰이더 (80) 는, 도 2a 및 도 2b 의 예시에서와 같은, 스캔 컨버터 (68) 및 조기 Z 모듈 (70) 과 실질적으로 병행적으로 동작하지 않기 때문에, 파이프라인 레이턴시에서의 증가가 존재할 수도 있다.
또한, 어떠한 경우들에서, 조기 Z 모듈 (70) 로부터 출력된 데이터 (예컨대, 픽셀들/프리미티브들) 는 버퍼링된 후 후속하여 속성 셋업 및 보간 모듈 (82) 에 의해 검색될 필요가 있을 수도 있다. 도 2a 및 도 2b 를 참조하여 전술한 바와 같이, 속성 셋업 및 보간 모듈은 일반적으로 버텍스 속성들을 계산한 제 2 버텍스 셰이더와 조기 Z 모듈 모두에 의해 제공된 정보를 보간하여 활용한다. 따라서, 도 3a 및 도 3b 의 예시에서, 조기 Z 모듈 (70) 은 자신의 출력 데이터를 버퍼 (예컨대, 별개의 FIFO (선입선출) 버퍼) 에 저장할 필요가 있을 수도 있다. 버텍스 셰이더 (80) 가 버텍스 속성 정보를 속성 저장 영역 (76) 에 저장한 후, 그런 후 연기형 속성 셋업 및 보간 모듈 (82) 은 버텍스 속성들을 버텍스 캐시/버퍼 (72) 로부터 검색하고 또한 조기 Z 모듈 (70) 에 의해 저장되었던 버퍼링된 정보를 검색할 필요가 있을 수도 있다. 이러한 추가적인 버퍼링 및 설계 비용은 도 2a 및 도 2b 에서 도시된 예시에 의해 잠재적으로 회피되거나 최소화될 수 있는 과잉의 오버헤드를 추가시킬 수도 있다. 도 2a 및 도 2b 의 예시에서, 스캔 컨버터 (44) 및 조기 Z 모듈 (46) 은 버텍스 인출기/셰이더 (48) 및 버텍스 셰이더 (50) 와 실질적으로 병행적으로 동작한다.
도 4 는 다중 버텍스 인출기/셰이더 메커니즘의 구현이 디스에이블된 예시적인 GPU 파이프라인 (90) 을 나타내는 블록도이다. 몇몇 경우들에서, 연기형 버텍스 인출기/셰이더 메커니즘의 이용이 구성가능할 수도 있다. 이 메커니즘은 GPU (예컨대, GPU (14)) 내에서 실행가능한 드라이버에 의해 인에이블되거나 구성될 수도 있다. 예를 들어, 도 2a 및 도 2b 의 예시에서, 제어기 (12) 에 의해 실행가능한 드라이버는 임의의 이점들 또는 프로세싱 효율성들이 최소화될 수도 있다라고 결정내릴 때 버텍스 스트림 인출기/디코더 (48) 및 버텍스 셰이더 (50) 를 선택적으로 디스에이블시킬 수도 있다.
하나의 시나리오에서, 드라이버는 버텍스 셰이더 (34) 에 의한 버텍스 좌표들 및 버텍스 셰이더 (50) 에 의한 버텍스 속성들의 연기된 프로세싱은 버텍스 좌표들과 속성들 모두를 계산하는 단일 버텍스 셰이더에 비해 상당한 프로세싱 또는 전력 절감을 제공하지 않을 수도 있다라고 결정할 수도 있다. 이 경우, 드라이버는 버텍스 인출기/디코더 (48) 및 버텍스 셰이더 (50) 를 디스에이블시킬 수도 있다. 몇몇 경우들에서, 드라이버는 드라이버에 의해 액세스가능한 그래픽스 명령들의 컴파일링으로부터 제공된 통계치들에 기초하여 이러한 결정을 내릴 수도 있다. 몇몇 경우들에서, 드라이버는 주어진 이미지 기하학적 구조를 위한 데이터의 이전 프레임들의 프로세싱에 기초하여 이러한 결정을 내릴 수도 있다.
도 4 의 GPU 파이프라인 (90) 은 제 2 버텍스 인출기/디코더 및 버텍스 셰이더가 디스에이블된 때의 예시적인 구현을 도시하며, 여기서는 단하나의 버텍스 인출기/디코더 및 버텍스 셰이더가 이용된다. GPU 파이프라인 (90) 은 커맨드 엔진 (91), 단일의 버텍스 인출기/디코더 (92), 버텍스 셰이더 (94), 프리미티브 셋업 모듈 (96), 스캔 컨버터 (98), 조기 Z 모듈 (100), 연기형 속성 셋업 및 보간 모듈 (102), 픽셀/프래그먼트 셰이더 (104), 및 사후 프로세싱 모듈 (106) 을 포함한다.
하나의 예시에서, 설명을 목적으로, 커맨드 엔진 (91) 은 그래픽스 커맨드들과 이미지 기하학적 구조를 수신하는 커맨드 엔진 (30) (도 2a) 과 유사하게 기능을 한다. 하지만, 버텍스 인출기/디코더 (32) 와는 달리, 도 4 의 버텍스 인출기/디코더 (92) 는 버텍스 인덱스들에 기초하여, 좌표 기반 속성들 및 비좌표 기반 속성들 모두를 비롯하여, 버텍스들에 대한 모든 속성들을 인출한다. 그런 후 버텍스 셰이더 (94) 는 수신된 이미지 기하학적 구조에 포함된 프리미티브들의 버텍스들에 대한 버텍스 속성들 및 버텍스 좌표들의 세트 모두를 생성하고, 이것들을 버텍스 캐시/버퍼 (108) 에 저장한다.
도 4 에서 도시된 버텍스 캐시/버퍼 (108) 는 예컨대 버텍스 좌표들 및 속성들에 대한 개별적인 저장 영역들 (40, 42) 을 포함한, 도 2a 및 도 2b 에서 도시된 버텍스 캐시/버퍼 (38) 와는 대조적으로, 하나로 결합된 캐시로서 관리된다. 또 다른 양태에서, 버텍스 캐시/버퍼 (108) 는 버텍스 좌표들 및 속성들에 대한 개별적인 저장 영역들을 포함할 수도 있다. 프리미티브 셋업 모듈 (96) 은 이미지 기하학적 구조에 포함된 프리미티브들의 모든 버텍스들에 대한 버텍스 좌표들을 검색하고, 임의의 비가시적인 프리미티브들을 리젝트한다. 스캔 컨버터 (98) 는 가시적인 프리미티브들을 픽셀들로 래스터화하고, 조기 Z 모듈 (100) 은 또한 임의의 은닉된 프리미티브들/픽셀들 (예컨대, 표면들) 을 제거할 수도 있다.
연기형 속성 셋업 및 보간 모듈 (102) 은 조기 Z 모듈 (100) 로부터의 출력을 수신하고, 또한 버텍스 캐시/버퍼 (108) 로부터의 모든 가시적인 프리미티브 버텍스들에 대한 버텍스 속성들을 검색한다. 연기형 속성 셋업 및 보간 모듈 (102) 은 리젝트되지 않은 프리미티브들의 버텍스들 (예컨대, 가시적인 프리미티브들의 버텍스들 및 은닉되지 않은 가시적인 프리미티브들의 표면들) 에 대응하는 버텍스 속성들만에 대해 속성 셋업 및 보간을 수행한다. 픽셀/프래그먼트 셰이더 (104) 및 사후 프로세싱 모듈 (106) 은 도 2b 에서 도시된 픽셀/프래그먼트 셰이더 (54) 및 사후 프로세싱 모듈 (56) 과 유사하게 기능을 한다.
도 5 는 도 2a 와 도 2b 및/또는 도 3a 와 도 3b 에서 도시된 GPU 파이프라인 (30 및/또는 60) 과 같은, GPU 파이프라인의 다양한 컴포넌트들에 의해 수행될 수도 있는 예시적인 방법을 나타내는 흐름도이다. 설명만을 목적으로, 도 5 에서 도시된 방법은 도 2a 와 도 2b 에서 도시된 GPU 파이프라인 (30) 에 의해 수행된다는 것을 가정할 것이다.
버텍스 셰이더 (34) 는, GPU 프로세싱 파이프라인 (30) 내에서, 도 1 에서 도시된 제어기 (12) 와 같은, 제어기로부터 커맨드 엔진 (31) 에 의해 수신된 이미지 기하학적 구조 내의 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들 생성할 수도 있다 (110). 커맨드 엔진 (31) 은 또한 제어기로부터 랜더링 커맨드들을 수신할 수도 있다. 버텍스 좌표들은 위치 및 원근 파라미터를 포함할 수도 있으며, 이미지 기하학적 구조는 그래픽스 이미지를 표현할 수도 있다. 몇몇 경우들에서, 버텍스 셰이더 (34) 는 이미지 기하학적 구조 내의 각각의 프리미티브의 버텍스들에서의 그래픽스 이미지의 표면 특성들의 결정 동안에 버텍스 좌표들을 생성할 수도 있다.
프리미티브 셋업 모듈 (36) 은 버텍스 좌표들에 기초하여 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별할 수도 있다 (112). 몇몇 경우들에서, 프리미티브 셋업 모듈 (36) 은 버텍스 좌표들에 기초하여 이미지 기하학적 구조 내의 비가시적인 프리미티브들을 리젝트함으로써 가시적인 프리미티브들을 식별할 수도 있다.
가시적인 프리미티브들을 식별한 것에 응답하여, 버텍스 셰이더 (50) 는 그래픽스 이미지의 표면 특성들을 결정하기 위해, GPU 파이프라인 (30) 내에서, 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들 (예컨대, 색, 텍스쳐, 투명도) 을 생성할 수도 있다 (114). GPU 파이프라인 (30) 에 의해 실행되는 랜더링 커맨드들에 기초하여 가시적인 프리미티브들의 표현을 생성하기 위해 버텍스 속성들이 이용될 수도 있다. 하나의 양태에서, 버텍스 셰이더 (50) 는 이와 같은 생성이 인에이블될 때에만 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성할 수도 있다. 상술한 바와 같이, GPU 의 드라이버는, 어떠한 경우들에서는, 다중 버텍스 인출기들/디코더들 및 버텍스 셰이더들을 이용하는 연기형 기능을 디스에이블시킬 수도 있다. 디스에이블된 경우, 버텍스 인출기/디코더 (48) 및 버텍스 셰이더 (50) 는 이용되지 않을 수도 있고, GPU 는 도 4 에서 도시된 GPU 파이프라인 (90) 을 구현할 수도 있다.
버텍스 셰이더 (34) 는 버텍스 인출기/디코더 (32) 로부터 이미지 기하학적 구조에서의 각각의 프리미티브의 버텍스들에 대한 좌표 속성들을 획득할 수도 있다. 그런 후 버텍스 셰이더 (34) 는 버텍스 인출기/디코더 (32) 로부터 수신된 버텍스들의 좌표 속성들에 기초하여 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성할 수도 있다. 버텍스 셰이더 (34) 는 버텍스 캐시/버퍼 (38) 내의 좌표 저장 영역 (40) 내에서와 같이, 버텍스 버퍼의 제 1 전용 영역에 버텍스 좌표들을 저장할 수도 있다. (전술한 바와 같이, 버텍스 캐시/버퍼 (38) 는 버텍스 셰이더 (50) 에 의해 생성된 버텍스 속성들을 저장하는 제 2 의 전용 영역인, 속성 저장 영역 (42) 을 포함할 수도 있다.)
하나의 양태에서, 버텍스 셰이더 (50) 는 버텍스 인출기/디코더 (48) 로부터 각각의 가시적인 프리미티브의 버텍스들에 대한 비좌표 속성들을 획득할 수도 있다. 그런 후 버텍스 셰이더 (50) 는 버텍스들의 비좌표 속성들에 기초하여 각각의 가시적인 프리미티브의 버텍스들에 대한 버텍스 속성들을 생성할 수도 있다. 이러한 버텍스 속성들은 속성 셋업 및 보간 모듈 (52) 에 의한 나중의 검색을 위해 버텍스 캐시/버퍼 (38) 의 속성 저장 영역 (42) 에 저장될 수도 있다.
도 2a 에서 도시된, 조기 Z 모듈 (46) 은 가시적인 프리미티브들 중 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거할 수 있다. 예를 들어, 만약 이미지 기하학적 구조 내에서 가시적인 프리미티브의 표면이 완전히 또 다른 프리미티브 뒤쪽에 위치하는 경우, 그 표면은 뷰 (view) 로부터 은닉될 수도 있다. 이 경우에서, 조기 Z 모듈 (46) 은 이러한 은닉 표면을 제거할 수도 있다. 조기 Z 모듈 (46) 은 버텍스 셰이더 (50) 에 의해 수행된 작업들과 실질적으로 병행적으로 자신의 작업들 중 임의의 것을 수행할 수도 있다. 예를 들어, 조기 Z 모듈 (46) 은 은닉 표면들을 제거할 수도 있는 반면에 버텍스 셰이더 (50) 는 버텍스 인출기/디코더 (48) 로부터 비좌표 속성들을 획득하고 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성한다. 버텍스 셰이더 (50) 는 버텍스 캐시/버퍼 (38) 의 속성 저장 영역 (42) 내에 생성된 버텍스 속성들을 저장할 수도 있다.
전술한 바와 같이, 몇몇 예시들에서, 제 2 버텍스 인출기/디코더 및 버텍스 셰이더는, 도 3a 및 도 3b 의 예시에서 도시된 바와 같이, 조기 Z 모듈의 다운스트림에 위치할 수도 있다. 이 예시에서, 버텍스 인출기/디코더 (78) 는 조기 Z 모듈 (70) 로부터 직접 출력을 수신한다. 따라서, 조기 Z 모듈 (70) 및 버텍스 인출기/디코더 (78) 는 자신의 기능을 병행적이라기 보단 순차적으로 (in series)수행한다. 버텍스 셰이더 (80) 가 버텍스 인출기/디코더 (78) 로부터 비좌표 속성들을 획득하고 이러한 가시적인 프리미티브들의 버텍스들에 대한 버텍스 속성들을 생성하기 전에, 조기 Z 모듈 (70) 은 가시적인 프리미티브들의 은닉 표면들을 제거할 수도 있다.
버텍스 셰이더 (80) 는 버텍스 인출기/디코더 (78) 로부터 각각의 가시적인 프리미티브의 버텍스들에 대한 비좌표 속성들을 획득하거나 또는 수신할 수도 있다. 그런 후 버텍스 셰이더 (80) 는 버텍스들의 비좌표 속성들에 기초하여 각각의 가시적인 프리미티브의 버텍스들에 대한 버텍스 속성들을 생성할 수도 있으며, 이러한 버텍스 속성들을 속성 저장 영역 (76) 에 저장할 수도 있다.
도 6a 내지 도 6c 는 도 2a 와 도 2b 에서 도시된 GPU 파이프라인 (30) 과 같은, GPU 파이프라인의 다양한 컴포넌트들에 의해 수행될 수도 있는 예시적인 방법의 흐름도를 나타낸다. 도 6a 내지 도 6c 는 또한 표시된 동작을 수행할 수도 있는 GPU 파이프라인 내의 다양한 컴포넌트들을 표시한다. 설명을 목적으로, 도 6a 내지 도 6c 에서 도시된 방법은 GPU 파이프라인 (30) 의 컴포넌트들에 의해 수행되는 것을 가정할 것이다.
처음에 도 6a 를 참조하면, 커맨드 엔진 (31) 은 도 1 에서 도시된 디바이스 (2) 의 제어기 (12) 와 같은, 제어기로부터 이미지 기하학적 구조 및 랜더링 커맨드를 수신할 수도 있다 (120). 그런 후, 커맨드 엔진 (31) 은 제 1 버텍스 인출기/디코더 (32) 에 버텍스 인덱스들을 보낸다 (122). 버텍스 인덱스들은 이미지 기하학적 구조 내에 포함된 프리미티브들의 버텍스들에 관련된다.
버텍스 인출기/디코더 (32) 는 버텍스 인덱스들에 기초하여 버텍스들에 대한 좌표 속성들 (예컨대, 위치 및 원근과 관련된 속성들) 을 인출할 수도 있다 (124). 예를 들어, 버텍스 인출기/디코더 (32) 는 버텍스 캐시 메커니즘 (예컨대, 버텍스 캐시/버퍼 (38)) 에 대한 좌표 속성들에 대한 히트/미스 체크를 수행할 수도 있고, 미스된 버텍스들에 대한 속성들을 개별적인 메모리 버퍼 (예컨대, 내부 메모리 (24)) 로부터 인출할 수도 있다. 버텍스 인출기/디코더 (32) 는 속성 포맷들을 디코딩하고 이것들을 버텍스 셰이더 (34) 에 의해 수용가능하거나 또는 인식가능할 수도 있는 내부 포맷들로 변환시킬 수도 있다 (126). 그런 후, 버텍스 인출기/디코더 (32) 는 변환된 좌표 속성들을 제 1 버텍스 셰이더 (34) 에 보낼 수도 있다 (128).
버텍스 인출기/디코더 (32) 로부터 좌표 속성 정보의 수신시, 버텍스 셰이더 (34) 는 이미지 기하학적 구조 내에 포함된 프리미티브들에 대한 버텍스들의 버텍스 좌표들 (예컨대, 위치 및 원근에 대한 XYZW 좌표들) 을 생성한다 (130). 버텍스 셰이더 (34) 는 버텍스 캐시/버퍼 (38) 내의 좌표 저장 영역 (40) 내에 이러한 버텍스 좌표들을 저장할 수도 있다 (132). 또한, 버텍스 셰이더 (34) 는 버텍스 인출기/디코더 (32) 에 의해 계산되었을 수도 있는, 저장된 버텍스 좌표들에 대한, 캐시 인덱스 값들을 프리미티브 셋업 모듈 (36) 에 제공할 수도 있다.
이제 도 6b 를 참조하면, 프리미티브 셋업 모듈 (36) 은 버텍스 캐시/버퍼 (38) 의 좌표 저장 영역 (40) 으로부터 버텍스 좌표들을 검색할 수도 있다 (134). 프리미티브 셋업 모듈 (36) 은 버텍스 셰이더 (34) 에 의해 제공된 캐시 인덱스 값들을 이용하여 좌표 저장 영역 (40) 내에서 검색을 위한 버텍스 좌표들을 위치확인할 수도 있다. 프리미티브 셋업 모듈 (36) 은 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별하고, 이미지 기하학적 구조 내의 프리미티브들의 버텍스 좌표들에 기초하여 비가시적인 프리미티브들을 리젝트한다 (136). 예를 들어, 특정한 프리미티브에 대한 버텍스 좌표들은 뷰잉 영역, 뷰포트의 경계 밖에 있을 수도 있다. 몇몇 경우들에서, 뷰포트의 위치 및 포지션은 애플리케이션에 의해 정의되거나, 디바이스에 의해 정의될 수도 있거나, 또는 커맨드 엔진 (31) 에 의해 수신된 랜더링 커맨드들에 의해 지정될 수도 있다. 몇몇 경우들에서, 프리미티브 셋업 모듈 (36) 은 백페이스 컬링을 수행한 후 프리미티브를 리젝트할 수도 있다. 백페이스 컬링은 프리미티브들이 뷰어와 마주보고 있거나 뷰어쪽으로 배향되어 있지 않음으로 인해 어느 프리미티브들이 뷰어에 가시적이지 않을 수 있는지를 결정할 수도 있다. 이러한 프리미티브들은 프리미티브 셋업 모듈 (36) 에 의해 리젝트될 수도 있다.
도 2a 및 도 2b 의 예시적인 GPU 파이프라인에서, 프리미티브 셋업 모듈 (36) 은 가시적인 프리미티브들의 버텍스들의 인덱스들을 제 2 버텍스 인출기/디코더 (48) 에 보낼 수도 있다 (140). 실질적으로 이와 병행하여, 프리미티브 셋업 모듈 (36) 은 또한 가시적인 프리미티브들을 스캔 컨버터 (44) 에 제공할 수도 있다 (138). 스캔 컨버터 (44) 는 가시적인 프리미티브들을 픽셀들로 변환시킬 수도 있다 (142). 조기 Z 모듈 (46) 은 이미지 기하학적 구조의 임의의 은닉 프리미티브들/픽셀들 (예컨대, 표면들) 을 제거할 수도 있다 (146). 프리미티브들 또는 프리미티브들 내의 픽셀들은 은닉된 것으로 간주될 수도 있고, 이에 따라 프리미티브들 또는 프리미티브들 내의 픽셀들이 이미지 프레임 내에서 또 다른 오브젝트 뒤에 위치하거나 또는 이미지 프레임 내에서 투명할 때, 이미지의 특정한 프레임의 프로세싱 동안의 고려로부터 제거될 수도 있다.
스캔 컨버터 (44) 및 조기 Z 모듈 (46) 이 각자의 개별적인 작업들을 수행하는 동안에, 버텍스 인출기/디코더 (48) 및 버텍스 셰이더 (50) 는 또한 어떠한 작업들을 수행할 수도 있다. 버텍스 인출기/디코더 (48) 는 프리미티브 셋업 모듈 (36) 에 의해 제공된 인덱스들을 이용하여 가시적인 프리미티브들의 버텍스들에 대한 비좌표 속성들 (예컨대, XYZW 좌표들과 관련되지 않은 속성들) 을 인출할 수도 있다 (144). 버텍스 인출기/디코더 (48) 는 버텍스들에 대한 비좌표 속성들을 디코딩하고 변환시킬 수도 있으며 (148) 그 후 변환된 비좌표 속성들을 제 2 버텍스 셰이더 (50) 에 보낼 수도 있다 (150).
이제 도 6c 를 참조하면, 버텍스 셰이더 (50) 는 이미지 기하학적 구조 내의 가시적인 프리미티브들의 버텍스들 각각에 대한 버텍스 속성들 (예컨대, 색, 텍스쳐) 을 생성할 수도 있다 (152). 그런 후 버텍스 셰이더 (50) 는 버텍스 캐시/버퍼 (38) 의 속성 저장 영역 (42) 내에 버텍스 속성들을 저장할 수도 있다 (154). 또한, 버텍스 셰이더 (50) 는 저장된 버텍스 속성들에 대한 캐시 인덱스 값들을 연기형 속성 셋업 및 보간 모듈 (52) 에 제공할 수도 있다. 이러한 캐시 인덱스 값들은 버텍스 인출기/디코더 (48) 에 의해 계산되어 버텍스 셰이더 (50) 에 제공될 수도 있다.
속성 셋업 및 보간 모듈 (52) 은 버텍스 캐시/버퍼 (38) 의 속성 저장 영역 (42) 으로부터 이러한 버텍스 속성들을 검색할 수도 있다 (156). 속성 셋업 및 보간 모듈 (52) 은 버텍스 셰이더 (50) 에 의해 제공된 캐시 인덱스 값들을 이용하여 속성 저장 영역 (42) 내에서 검색을 위한 버텍스 속성들을 위치확인할 수도 있다. 속성 셋업 및 보간 모듈 (52) 은 또한 조기 Z 모듈 (46) 로부터, 리젝트되지 않은 프리미티브들에 대한 픽셀들을 획득할 수도 있다. 그런 후 속성 셋업 및 보간 모듈 (52) 은 예컨대, 속성 구배 값들 (attribute gradient values) 에 기초하여 가시적인 프리미티브들의 픽셀들에 대해 버텍스 속성들을 보간할 수도 있다 (158).
인출, 디코딩, 및 셰이딩의 어떠한 기능을 연기시킴으로써, GPU 파이프라인 (30) 은 속성 셋업 및 보간 모듈 (52) 에 의해 프로세싱될 필요가 있는 속성들의 갯수를 제한시킬 수도 있고, 이로써 속성 셋업 및 보간 모듈 (52) 이 동작할 때의 효율성을 증가시킨다. 속성 셋업 및 보간 모듈 (52) 은 프리미티브 셋업 모듈 (36) 에 의해 결정된, 가시적인 프리미티브들과 연관된 버텍스들, 및 (조기 Z 모듈 (46) 에 의해 결정된) 은닉 표면들의 일부가 또한 아닌 버텍스들에 대한 버텍스 속성들을 검색하고 프로세싱할 필요만 있을 수도 있다.
속성 셋업 및 보간 모듈 (52) 은 보간된 속성 값들을 픽셀/프래그먼트 셰이더 (54) 에 제공할 수도 있다. 그런 후 픽셀/프래그먼트 셰이더 (54) 는 프리미티브들의 픽셀/프래그먼트 셰이딩을 수행할 수도 있다 (160). 픽셀/프래그먼트 셰이더 (54) 는 이미지 기하학적 구조에 대한 프리미티브들 내의 픽셀들에서의 이미지의 표면 특성들을 결정할 수도 있다. 그런 후, 픽셀/프래그먼트 셰이더 (54) 의 결과는 사후 프로세싱 모듈 (56) 에 출력될 수도 있다. 사후 프로세싱 모듈 (56) 은 도 1 에서 도시된 디스플레이 디바이스 (20) 에서와 같은, 디스플레이를 위한 픽셀들을 준비하기 위해, 픽셀 블렌딩 (blending) 작업들과 같은 하나 이상의 사후 프로세싱 작업들을 수행할 수도 있다 (162).
본 발명개시에서 설명된 기술들은 범용 마이크로프로세서, 디지털 신호 프로세서 (DSP), 애플리케이션 특정 집적 회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 프로그램가능 논리 디바이스 (PLD), 또는 다른 등가적인 논리 디바이스들 중 하나 이상 내에서 구현될 수도 있다. 따라서, 여기서 이용된 용어들 "프로세서" 또는 "제어기" 는 여기서 설명된 기술들의 구현을 위해 적합한 전술한 구조들 또는 임의의 다른 구조 중 임의의 하나 이상을 지칭할 수도 있다.
여기서 설명된 다양한 컴포넌트들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합 중 임의의 적절한 조합에 의해 실현될 수도 있다. 도면들에서, 다양한 컴포넌트들이 분리된 유닛들 또는 모듈들로서 도시된다. 하지만, 이러한 도면들을 참조하여 설명된 다양한 컴포넌트들 모두 또는 그 중 몇개는 공통적인 하드웨어, 펌웨어, 및/또는 소프트웨어 내의 결합된 유닛들 또는 모듈들에 통합될 수도 있다. 따라서, 컴포넌트들, 유닛들, 또는 모듈들로서의 특징들의 표현은 설명의 용이함을 위해 특별한 기능적 특징들을 부각시키려고 의도하였으며, 분리된 하드웨어, 펌웨어, 또는 소프트웨어 컴포넌트들에 의한 이와 같은 특징들의 구현을 반드시 필요로 하는 것은 아니다. 몇몇 경우들에서, 다양한 유닛들은 하나 이상의 프로세서들에 의해 수행된 프로그램가능한 프로세스들로서 구현될 수도 있다.
모듈들, 디바이스들, 또는 컴포넌트들로서 여기서 설명된 임의의 특징들은 집적된 논리 디바이스에서 함께 구현될 수도 있거나 또는 구별되지만 상호동작가능한 논리 디바이스들로서 따로따로 구현될 수도 있다. 다양한 양태들에서, 이와 같은 컴포넌트들은 적어도 부분적으로 하나 이상의 집적 회로 디바이스들에서 형성될 수도 잇으며, 이 집적 회로 디바이스들은 집적 회로 칩 또는 칩셋과 같은, 집적 회로 디바이스로서 총칭될 수도 있다. 이와 같은 회로는 단일 집적 회로 칩 디바이스에서 제공될 수도 있거나, 또는 다중의 상호동작가능한 집적 회로 칩 디바이스들에서 제공될 수도 있거나, 다양한 이미지, 디스플레이, 오디오, 또는 다른 멀티 미디어 애플리케이션들 및 디바이스들 중 임의의 것에서 이용될 수도 있다. 몇몇 양태들에서, 예를 들어, 이와 같은 컴포넌트들은 무선 통신 디바이스 핸드셋과 같은, 모바일 디바이스의 일부분을 형성할 수도 있다.
만약 소프트웨어로 구현된 경우, 본 기술들은 하나 이상의 프로세서들에 의해 실행될 때, 상술한 방법들 중 하나 이상을 수행하는 명령들을 갖는 코드를 포함한 컴퓨터 판독가능한 데이터 저장 매체에 의해 부분적으로 실현될 수도 있다. 컴퓨터 판독가능한 저장 매체는 패키징 재료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 컴퓨터 판독가능한 저장 매체는 SDRAM (synchronous dynamic random access memory) 과 같은 RAM (random access memory), ROM (read-only memory), NVRAM (non-volatile random access memory), EEPROM (electrically erasable programmable read-only memory), eDRAM (embedded dynamic random access memory), SRAM (static random access memory), 플래시 메모리, 자기 또는 광학 데이터 저장 매체를 포함할 수도 있다. 이용되는 임의의 소프트웨어는 범용 마이크로프로세서, ASIC, FPGA, 또는 다른 등가적인 집적 또는 이산적 논리 회로와 같은, 하나 이상의 프로세서들에 의해 실행될 수도 있다.
이 발명개시에서는 다양한 양태들이 설명되었다. 이러한 양태들 및 다른 양태들은 아래의 청구항들의 범위내에 있다.

Claims (54)

  1. 그래픽스 프로세싱 유닛 (GPU) 의 프로세싱 파이프라인 내에서, 이미지 기하학적 구조 (image geometry) 내의 각각의 프리미티브 (primitive) 의 버텍스들 (vertices) 에 대한 버텍스 좌표들을 생성하는 단계로서, 상기 버텍스 좌표들은 상기 버텍스들의 각각의 버텍스에 대한 위치 및 원근 (perspective) 파라미터를 포함하며, 상기 이미지 기하학적 구조는 그래픽스 이미지를 표현하는, 상기 버텍스 좌표들을 생성하는 단계;
    상기 GPU 의 프로세싱 파이프라인 내에서, 상기 버텍스 좌표들에 기초하여 상기 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별하는 단계; 및
    상기 가시적인 프리미티브들을 식별하는 것에 응답하여, 상기 그래픽스 이미지의 표면 특성들을 결정하기 위해, 상기 GPU 의 프로세싱 파이프라인 내에서, 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 버텍스 좌표들을 생성하는 단계는 상기 이미지 기하학적 구조 내의 각각의 프리미티브의 상기 버텍스들에서의 상기 그래픽스 이미지의 표면 특성들의 결정 동안에 상기 버텍스 좌표들을 생성하는 단계를 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 버텍스 속성들은 각각의 버텍스와 연관된 색 또는 텍스쳐 파라미터 중 하나 이상을 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 버텍스 속성들을 이용하여, 상기 GPU 의 프로세싱 파이프라인 내에서, 상기 GPU 에 의해 수신된 랜더링 커맨드들에 기초하여 상기 가시적인 프리미티브들의 표현을 생성하는 단계를 더 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 GPU 의 상기 프로세싱 파이프라인 내의 상기 이미지 기하학적 구조에서의 각각의 프리미티브의 버텍스들에 대한 좌표 속성들을 획득하는 단계를 더 포함하며, 상기 버텍스 좌표들을 생성하는 단계는 상기 버텍스들의 좌표 속성들에 기초하여 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성하는 단계를 포함하는, 방법.
  6. 제 1 항에 있어서,
    버텍스 버퍼의 제 1 전용 영역에 상기 버텍스 좌표들을 저장하는 단계; 및
    상기 버텍스 버퍼의 제 2 의 상이한 전용 영역에 상기 버텍스 속성들을 저장하는 단계를 더 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 가시적인 프리미티브들 중 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하는 단계를 더 포함하는, 방법.
  8. 제 7 항에 있어서,
    상기 하나 이상의 은닉 표면들을 제거하는 단계는 상기 가시적인 프리미티브들의 버텍스들만에 대한 상기 버텍스 속성들을 생성하는 단계와 병행적으로 (in parallel) 수행되는, 방법.
  9. 제 7 항에 있어서,
    상기 하나 이상의 은닉 표면들을 제거하는 단계는 상기 가시적인 프리미티브들의 버텍스들만에 대한 상기 버텍스 속성들을 생성하기 전에 수행되는, 방법.
  10. 제 1 항에 있어서,
    각각의 가시적인 프리미티브의 버텍스들에 대한 비좌표 속성들을 획득하는 단계를 더 포함하며, 상기 버텍스 속성들을 생성하는 단계는 상기 버텍스들의 비좌표 속성들에 기초하여 상기 각각의 가시적인 프리미티브의 버텍스들에 대한 상기 버텍스 속성들을 생성하는 단계를 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 가시적인 프리미티브들 중 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하는 단계를 더 포함하며, 상기 하나 이상의 은닉 표면들을 제거하는 단계는 상기 비좌표 속성들을 획득하는 것 및 상기 버텍스 속성들을 생성하는 것과 병행적으로 수행되는, 방법.
  12. 제 10 항에 있어서,
    상기 가시적인 프리미티브들 중 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하는 단계를 더 포함하며, 상기 하나 이상의 은닉 표면들을 제거하는 단계는 상기 비좌표 속성들을 획득하는 것과 상기 버텍스 속성들을 생성하는 것 이전에 수행되는, 방법.
  13. 제 10 항에 있어서,
    상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하는 단계는 상기 생성이 인에이블되었다라고 결정할 때에 발생하는, 방법.
  14. 그래픽스 프로세싱 유닛 (GPU) 을 포함하며, 상기 GPU 는,
    상기 GPU 의 프로세싱 파이프라인 내에서, 그래픽스 이미지를 표현하는 이미지 기하학적 구조 내의 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성하고;
    상기 GPU 의 프로세싱 파이프라인 내에서, 상기 버텍스 좌표들에 기초하여 상기 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별하며;
    상기 가시적인 프리미티브들을 식별하는 것에 응답하여, 상기 그래픽스 이미지의 표면 특성들을 결정하기 위해, 상기 GPU 의 프로세싱 파이프라인 내에서, 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하도록 구성되며, 상기 버텍스 좌표들은 상기 버텍스들의 각각의 버텍스에 대한 위치 및 원근 파라미터를 포함하는, 디바이스.
  15. 제 14 항에 있어서,
    상기 GPU 는 상기 이미지 기하학적 구조 내의 각각의 프리미티브의 상기 버텍스들에서의 상기 그래픽스 이미지의 표면 특성들의 결정 동안에 상기 버텍스 좌표들을 생성하도록 구성된, 디바이스.
  16. 제 14 항에 있어서,
    상기 버텍스 속성들은 각각의 버텍스와 연관된 색 또는 텍스쳐 파라미터 중 하나 이상을 포함하는, 디바이스.
  17. 제 14 항에 있어서,
    상기 GPU 는 또한, 상기 GPU 의 프로세싱 파이프라인 내에서, 상기 GPU 에 의해 수신된 랜더링 커맨드들에 기초하여 상기 가시적인 프리미티브들의 표현을 생성하기 위해 상기 버텍스 속성들을 이용하도록 구성된, 디바이스.
  18. 제 14 항에 있어서,
    상기 GPU 는 또한 상기 GPU 의 프로세싱 파이프라인 내에서 상기 이미지 기하학적 구조에서의 각각의 프리미티브의 버텍스들에 대한 좌표 속성들을 획득하도록 구성되며, 상기 GPU 는 상기 버텍스들의 상기 좌표 속성들에 기초하여 각각의 프리미티브의 버텍스들에 대한 상기 버텍스 좌표들을 생성하도록 구성된, 디바이스.
  19. 제 14 항에 있어서,
    제 1 전용 영역과 제 2 전용 영역을 갖는 온 칩 버텍스 버퍼를 더 포함하며, 상기 GPU 는 또한 상기 버텍스 버퍼의 상기 제 1 전용 영역에 상기 버텍스 좌표들을 저장하고, 상기 버텍스 버퍼의 상기 제 2 전용 영역에 상기 버텍스 속성들을 저장하도록 구성된, 디바이스.
  20. 제 14 항에 있어서,
    상기 GPU 는 또한 상기 가시적인 프리미티브들 중의 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하도록 구성된, 디바이스.
  21. 제 20 항에 있어서,
    상기 GPU 는 상기 가시적인 프리미티브들의 상기 버텍스들만에 대한 상기 버텍스 속성들을 생성하는 것과 병행적으로 상기 하나 이상의 은닉 표면들을 제거하도록 구성된, 디바이스.
  22. 제 20 항에 있어서,
    상기 GPU 는 상기 가시적인 프리미티브들의 상기 버텍스들만에 대한 상기 버텍스 속성들을 생성하기 전에 상기 하나 이상의 은닉 표면들을 제거하도록 구성된, 디바이스.
  23. 제 14 항에 있어서,
    상기 GPU 는 또한 각각의 가시적인 프리미티브의 버텍스들에 대한 비좌표 속성들을 획득하도록 구성되며, 상기 GPU 는 상기 버텍스들의 비좌표 속성들에 기초하여 상기 각각의 가시적인 프리미티브의 버텍스들에 대한 상기 버텍스 속성들을 생성하도록 구성된, 디바이스.
  24. 제 23 항에 있어서,
    상기 GPU 는 또한 상기 가시적인 프리미티브들 중의 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하도록 구성되며, 상기 GPU 는 상기 비좌표 속성들을 획득하는 것 및 상기 버텍스 속성들을 생성하는 것과 병행적으로 상기 하나 이상의 은닉 표면들을 제거하도록 구성된, 디바이스.
  25. 제 23 항에 있어서,
    상기 GPU 는 또한 상기 가시적인 프리미티브들 중의 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하도록 구성되며, 상기 GPU 는 상기 비좌표 속성들을 획득하는 것과 상기 버텍스 속성들을 생성하는 것 이전에 상기 하나 이상의 은닉 표면들을 제거하도록 구성된, 디바이스.
  26. 제 23 항에 있어서,
    상기 GPU 는 상기 생성이 인에이블되었다라고 결정할 때에 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하도록 구성된, 디바이스.
  27. 제 14 항에 있어서,
    상기 디바이스는 무선 통신 디바이스 핸드셋을 포함하는, 디바이스.
  28. 제 14 항에 있어서,
    상기 디바이스는 하나 이상의 집적 회로 디바이스들을 포함하는, 디바이스.
  29. 실행가능한 명령들을 포함한 컴퓨터 판독가능한 저장 매체로서,
    상기 실행가능한 명령들은 하나 이상의 프로세서들로 하여금,
    그래픽스 프로세싱 유닛 (GPU) 의 프로세싱 파이프라인 내에서, 그래픽스 이미지를 표현하는 이미지 기하학적 구조 내의 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성하고;
    상기 GPU 의 프로세싱 파이프라인 내에서, 상기 버텍스 좌표들에 기초하여 상기 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별하며;
    상기 가시적인 프리미티브들을 식별하는 것에 응답하여, 상기 그래픽스 이미지의 표면 특성들을 결정하기 위해, 상기 GPU 의 프로세싱 파이프라인 내에서, 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하도록 하기 위한 것이며, 상기 버텍스 좌표들은 상기 버텍스들의 각각의 버텍스에 대한 위치 및 원근 파라미터를 포함하는, 컴퓨터 판독가능한 저장 매체.
  30. 제 29 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 버텍스 좌표들을 생성하도록 하기 위한 상기 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 이미지 기하학적 구조 내의 각각의 프리미티브의 상기 버텍스들에서의 상기 그래픽스 이미지의 표면 특성들의 결정 동안에 상기 버텍스 좌표들을 생성하도록 하기 위한 명령들을 포함한, 컴퓨터 판독가능한 저장 매체.
  31. 제 29 항에 있어서,
    상기 버텍스 속성들은 각각의 버텍스와 연관된 색 또는 텍스쳐 파라미터 중 하나 이상을 포함하는, 컴퓨터 판독가능한 저장 매체.
  32. 제 29 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 GPU 의 프로세싱 파이프라인 내에서, 상기 GPU 에 의해 수신된 랜더링 커맨드들에 기초하여 상기 가시적인 프리미티브들의 표현을 생성하기 위해 상기 버텍스 속성들을 이용하도록 하기 위한 명령들을 더 포함하는, 컴퓨터 판독가능한 저장 매체.
  33. 제 29 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 GPU 의 프로세싱 파이프라인 내에서 상기 이미지 기하학적 구조에서의 각각의 프리미티브의 버텍스들에 대한 좌표 속성들을 획득하도록 하기 위한 명령들을 더 포함하며, 상기 하나 이상의 프로세서들로 하여금 상기 버텍스 좌표들을 생성하도록 하기 위한 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 버텍스들의 좌표 속성들에 기초하여 상기 각각의 프리미티브의 버텍스들에 대한 상기 버텍스 좌표들을 생성하도록 하기 위한 명령들을 포함하는, 컴퓨터 판독가능한 저장 매체.
  34. 제 29 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금,
    버텍스 버퍼의 제 1 전용 영역에 상기 버텍스 좌표들을 저장하며;
    상기 버텍스 버퍼의 제 2 의 상이한 전용 영역에 상기 버텍스 속성들을 저장하도록 하기 위한 명령들을 더 포함하는, 컴퓨터 판독가능한 저장 매체.
  35. 제 29 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 가시적인 프리미티브들 중의 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들을 더 포함하는, 컴퓨터 판독가능한 저장 매체.
  36. 제 35 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하는 것과 병행적으로 상기 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들을 포함하는, 컴퓨터 판독가능한 저장 매체.
  37. 제 35 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하기 이전에 상기 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들을 포함하는, 컴퓨터 판독가능한 저장 매체.
  38. 제 29 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 각각의 가시적인 프리미티브의 버텍스들에 대한 비좌표 속성들을 획득하도록 하기 위한 명령들을 더 포함하며, 상기 하나 이상의 프로세서들로 하여금 상기 버텍스 속성들을 생성하도록 하기 위한 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 버텍스들의 비좌표 속성들에 기초하여 상기 각각의 가시적인 프리미티브의 버텍스들에 대한 상기 버텍스 속성들을 생성하도록 하기 위한 명령들을 포함하는, 컴퓨터 판독가능한 저장 매체.
  39. 제 38 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 가시적인 프리미티브들 중 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들을 더 포함하며, 상기 하나 이상의 프로세서들로 하여금 상기 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 비좌표 속성들을 획득하는 것 및 상기 버텍스 속성들을 생성하는 것과 병행적으로 상기 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들을 포함하는, 컴퓨터 판독가능한 저장 매체.
  40. 제 38 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 가시적인 프리미티브들 중 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들을 더 포함하며, 상기 하나 이상의 프로세서들로 하여금 상기 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 비좌표 속성들을 획득하는 것 및 상기 버텍스 속성들을 생성하는 것 이전에 상기 하나 이상의 은닉 표면들을 제거하도록 하기 위한 명령들을 포함하는, 컴퓨터 판독가능한 저장 매체.
  41. 제 38 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 가시적인 프리미티브들의 버텍스들만에 대한 상기 버텍스 속성들을 생성하도록 하기 위한 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 생성이 인에이블되었다라고 결정할 때에 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하도록 하기 위한 명령들을 포함하는, 컴퓨터 판독가능한 저장 매체.
  42. 그래픽스 프로세싱 유닛 (GPU) 의 프로세싱 파이프라인 내에서, 이미지 기하학적 구조 (image geometry) 내의 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성하는 것으로서, 상기 버텍스 좌표들은 상기 버텍스들의 각각의 버텍스에 대한 위치 및 원근 (perspective) 파라미터를 포함하며, 상기 이미지 기하학적 구조는 그래픽스 이미지를 표현하는, 상기 생성하는 것;
    상기 GPU 의 프로세싱 파이프라인 내에서, 상기 버텍스 좌표들에 기초하여 상기 이미지 기하학적 구조 내의 가시적인 프리미티브들을 식별하는 것; 및
    상기 가시적인 프리미티브들을 식별하는 것에 응답하여, 상기 그래픽스 이미지의 표면 특성들을 결정하기 위해, 상기 GPU 의 프로세싱 파이프라인 내에서, 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하는 것을 포함하는, 디바이스.
  43. 제 42 항에 있어서,
    상기 버텍스 좌표들을 생성하기 위한 수단은 상기 이미지 기하학적 구조 내의 각각의 프리미티브의 상기 버텍스들에서의 상기 그래픽스 이미지의 표면 특성들의 결정 동안에 상기 버텍스 좌표들을 생성하기 위한 수단을 포함하는, 디바이스.
  44. 제 42 항에 있어서,
    상기 버텍스 속성들은 각각의 버텍스와 연관된 색 또는 텍스쳐 파라미터 중 하나 이상을 포함하는, 디바이스.
  45. 제 42 항에 있어서,
    상기 버텍스 속성들을 이용하여, 상기 GPU 의 프로세싱 파이프라인 내에서, 상기 GPU 에 의해 수신된 랜더링 커맨드들에 기초하여 상기 가시적인 프리미티브들의 표현을 생성하기 위한 수단을 더 포함하는, 디바이스.
  46. 제 42 항에 있어서,
    상기 GPU 의 상기 프로세싱 파이프라인 내에서 상기 이미지 기하학적 구조에서의 각각의 프리미티브의 버텍스들에 대한 좌표 속성들을 획득하기 위한 수단을 더 포함하며, 상기 버텍스 좌표들을 생성하기 위한 수단은 상기 버텍스들의 좌표 속성들에 기초하여 상기 각각의 프리미티브의 버텍스들에 대한 버텍스 좌표들을 생성하기 위한 수단을 포함하는, 디바이스.
  47. 제 42 항에 있어서,
    버텍스 버퍼의 제 1 전용 영역에 상기 버텍스 좌표들을 저장하기 위한 수단; 및
    상기 버텍스 버퍼의 제 2 의 상이한 전용 영역에 상기 버텍스 속성들을 저장하기 위한 수단을 더 포함하는, 디바이스.
  48. 제 42 항에 있어서,
    상기 가시적인 프리미티브들 중의 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하기 위한 수단을 더 포함하는, 디바이스.
  49. 제 48 항에 있어서,
    상기 하나 이상의 은닉 표면들을 제거하기 위한 수단은 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하는 것과 병행적으로 상기 하나 이상의 은닉 표면들을 제거하기 위한 수단을 포함하는, 디바이스.
  50. 제 48 항에 있어서,
    상기 하나 이상의 은닉 표면들을 제거하기 위한 수단은 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하기 전에 상기 하나 이상의 은닉 표면들을 제거하기 위한 수단을 포함하는, 디바이스.
  51. 제 42 항에 있어서,
    각각의 가시적인 프리미티브의 버텍스들에 대한 비좌표 속성들을 획득하기 위한 수단을 더 포함하며, 상기 버텍스 속성들을 생성하기 위한 수단은 상기 버텍스들의 비좌표 속성들에 기초하여 상기 각각의 가시적인 프리미티브의 버텍스들에 대한 상기 버텍스 속성들을 생성하기 위한 수단을 포함하는, 디바이스.
  52. 제 51 항에 있어서,
    상기 가시적인 프리미티브들 중의 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하기 위한 수단을 더 포함하며, 상기 하나 이상의 은닉 표면들을 제거하기 위한 수단은 상기 비좌표 속성들을 획득하는 것 및 상기 버텍스 속성들을 생성하는 것과 병행적으로 상기 하나 이상의 은닉 표면들을 제거하기 위한 수단을 포함하는, 디바이스.
  53. 제 51 항에 있어서,
    상기 가시적인 프리미티브들 중의 적어도 또 다른 하나의 가시적인 프리미티브에 대한 하나 이상의 은닉 표면들의 상대적인 위치들에 기초하여 상기 가시적인 프리미티브들 중의 적어도 하나의 가시적인 프리미티브의 하나 이상의 은닉 표면들을 제거하기 위한 수단을 더 포함하며, 상기 하나 이상의 은닉 표면들을 제거하기 위한 수단은 상기 비좌표 속성들을 획득하는 것과 상기 버텍스 속성들을 생성하는 것 이전에 상기 하나 이상의 은닉 표면들을 제거하기 위한 수단을 포함하는, 디바이스.
  54. 제 51 항에 있어서,
    상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하기 위한 수단은 상기 생성이 인에이블되었다라고 결정할 때에 상기 가시적인 프리미티브들의 버텍스들만에 대한 버텍스 속성들을 생성하기 위한 수단을 포함하는, 디바이스.
KR1020117030389A 2009-05-29 2010-05-28 연기형 버텍스 셰이딩을 갖는 그래픽스 프로세싱 유닛 KR101281258B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US18241409P 2009-05-29 2009-05-29
US61/182,414 2009-05-29
US12/557,427 US8436854B2 (en) 2009-05-29 2009-09-10 Graphics processing unit with deferred vertex shading
US12/557,427 2009-09-10
PCT/US2010/036661 WO2010138870A2 (en) 2009-05-29 2010-05-28 Graphics processing unit with deferred vertex shading

Publications (2)

Publication Number Publication Date
KR20120025534A true KR20120025534A (ko) 2012-03-15
KR101281258B1 KR101281258B1 (ko) 2013-07-03

Family

ID=43219705

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117030389A KR101281258B1 (ko) 2009-05-29 2010-05-28 연기형 버텍스 셰이딩을 갖는 그래픽스 프로세싱 유닛

Country Status (7)

Country Link
US (1) US8436854B2 (ko)
EP (1) EP2435988A2 (ko)
JP (1) JP5596136B2 (ko)
KR (1) KR101281258B1 (ko)
CN (1) CN102598062B (ko)
TW (1) TW201104620A (ko)
WO (1) WO2010138870A2 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160101874A (ko) * 2015-02-18 2016-08-26 에이알엠 리미티드 그래픽 처리 시스템
KR20170005033A (ko) * 2014-06-30 2017-01-11 인텔 코포레이션 감소된 픽셀 쉐이딩을 위한 기술
KR20190029842A (ko) * 2017-09-12 2019-03-21 주식회사 케이쓰리아이 지피유 가속 컴퓨팅을 이용한 3차원 복원 클라우드 포인트 생성 방법
KR20190051961A (ko) * 2016-09-22 2019-05-15 어드밴스드 마이크로 디바이시즈, 인코포레이티드 프리미티브 셰이더
US11769294B2 (en) 2012-04-04 2023-09-26 Qualcomm Incorporated Patched shading in graphics processing

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8810592B2 (en) * 2009-10-09 2014-08-19 Nvidia Corporation Vertex attribute buffer for inline immediate attributes and constants
KR101681056B1 (ko) * 2010-10-01 2016-12-01 삼성전자주식회사 정점 처리 방법 및 장치
US9092873B2 (en) * 2011-02-03 2015-07-28 L-3 Communications Corporation Rasterizer packet generator for use in graphics processor
FR2964775A1 (fr) * 2011-02-18 2012-03-16 Thomson Licensing Procede d'estimation de l'occultation dans un environnement virtuel
GB201103699D0 (en) 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphic processing
GB201103698D0 (en) * 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphics processing
US8854383B2 (en) * 2011-04-13 2014-10-07 Qualcomm Incorporated Pixel value compaction for graphics processing
US8884963B2 (en) * 2011-05-04 2014-11-11 Qualcomm Incorporated Low resolution buffer based pixel culling
US9019280B2 (en) 2011-07-22 2015-04-28 Qualcomm Incorporated Area-based rasterization techniques for a graphics processing system
JP5845910B2 (ja) * 2012-01-13 2016-01-20 富士通株式会社 画像描画装置、画像描画プログラム、及び、画像描画方法
US10176621B2 (en) 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders
US10102603B2 (en) 2013-06-10 2018-10-16 Sony Interactive Entertainment Inc. Scheme for compressing vertex shader output parameters
US10096079B2 (en) 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US10134102B2 (en) 2013-06-10 2018-11-20 Sony Interactive Entertainment Inc. Graphics processing hardware for using compute shaders as front end for vertex shaders
CN103974062B (zh) * 2013-06-24 2018-10-26 福州瑞芯微电子股份有限公司 图像显示装置、图像显示系统和图像显示方法
US9208602B2 (en) * 2013-09-27 2015-12-08 Intel Corporation Techniques and architecture for improved vertex processing
KR102066533B1 (ko) 2013-11-19 2020-01-16 삼성전자 주식회사 도메인 쉐이딩 방법과 이를 수행하는 장치들
GB2521171B (en) * 2013-12-11 2020-02-05 Advanced Risc Mach Ltd Clipping of graphics primitives
KR20150069617A (ko) * 2013-12-13 2015-06-24 삼성전자주식회사 그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템
GB2527822B (en) * 2014-07-03 2020-10-07 Advanced Risc Mach Ltd Graphics processing
US9773294B2 (en) * 2014-07-03 2017-09-26 Mediatek Inc. Graphics processing system for determining whether to store varying variables into varying buffer based at least partly on primitive size and related graphics processing method thereof
US20160035128A1 (en) * 2014-08-03 2016-02-04 Mediatek Singapore Pte. Ltd. Graphics processing system for performing deferred vertex attribute shading based on split vertex bitstreams and related graphics processing method
US9424686B2 (en) * 2014-08-08 2016-08-23 Mediatek Inc. Graphics processing circuit having second vertex shader configured to reuse output of first vertex shader and/or process repacked vertex thread group and related graphics processing method thereof
US9824412B2 (en) * 2014-09-24 2017-11-21 Intel Corporation Position-only shading pipeline
KR20160051155A (ko) * 2014-10-31 2016-05-11 삼성전자주식회사 렌더링 장치 및 방법
CA3005258A1 (en) 2015-11-12 2017-05-18 Linamar Corporation Rear drive module having a ring gear disconnect and synch-lock mechanism
GB2546073B (en) * 2016-01-05 2018-09-26 Advanced Risc Mach Ltd Graphics processing
US10192280B2 (en) 2016-04-08 2019-01-29 Qualcomm Incorporated Per-vertex variable rate shading
GB2550358B (en) * 2016-05-16 2020-08-26 Advanced Risc Mach Ltd Graphics processing systems
US10062139B2 (en) * 2016-07-25 2018-08-28 Qualcomm Incorporated Vertex shaders for binning based graphics processing
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
CN106709982B (zh) * 2016-10-20 2020-03-17 哈尔滨安天科技集团股份有限公司 一种基于连续折线形三维管道的绘制方法及系统
US10235811B2 (en) 2016-12-29 2019-03-19 Intel Corporation Replicating primitives across multiple viewports
US10510181B2 (en) * 2017-06-27 2019-12-17 Samsung Electronics Co., Ltd. System and method for cache management using a cache status table
GB2564400B (en) 2017-07-06 2020-11-25 Advanced Risc Mach Ltd Graphics processing
CN108022201B (zh) * 2017-11-24 2021-09-14 中国航空工业集团公司西安航空计算技术研究所 一种三角形图元并行光栅化定序方法
US10628910B2 (en) 2018-09-24 2020-04-21 Intel Corporation Vertex shader with primitive replication
CN109816761B (zh) * 2018-12-25 2023-03-21 东软集团股份有限公司 图形转换方法、装置、存储介质和电子设备
US11189073B2 (en) 2020-03-20 2021-11-30 Arm Limited Graphics processing
US11790479B2 (en) * 2021-01-29 2023-10-17 Arm Limited Primitive assembly and vertex shading of vertex attributes in graphics processing systems
CN117292039B (zh) * 2023-11-27 2024-02-13 芯瞳半导体技术(山东)有限公司 顶点坐标生成方法、装置、电子设备及计算机存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2883523B2 (ja) * 1992-08-26 1999-04-19 株式会社ナムコ 画像合成装置及び画像合成方法
US5986669A (en) * 1996-09-10 1999-11-16 Intergraph Corporation Graphics processing with efficient clipping
JP3409987B2 (ja) * 1997-02-05 2003-05-26 シャープ株式会社 3次元画像生成方法および装置とこの方法および装置を用いた3次元画像処理装置
US6891533B1 (en) * 2000-04-11 2005-05-10 Hewlett-Packard Development Company, L.P. Compositing separately-generated three-dimensional images
JP2004102841A (ja) * 2002-09-11 2004-04-02 Toshiba Corp クリッピング処理装置、グラフィックスシステム、クリッピング処理方法及びグラフィックス方法
US7148888B2 (en) * 2003-04-04 2006-12-12 Via Technologies, Inc. Head/data request in 3D graphics
US7400325B1 (en) * 2004-08-06 2008-07-15 Nvidia Corporation Culling before setup in viewport and culling unit
US7292239B1 (en) * 2004-08-06 2007-11-06 Nvidia Corporation Cull before attribute read
US7468726B1 (en) * 2005-12-01 2008-12-23 Nvidia Corporation Culling in a vertex processing unit
US7952588B2 (en) * 2006-08-03 2011-05-31 Qualcomm Incorporated Graphics processing unit with extended vertex cache
US8212840B2 (en) * 2006-10-23 2012-07-03 Qualcomm Incorporated 3-D clipping in a graphics processing unit

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11769294B2 (en) 2012-04-04 2023-09-26 Qualcomm Incorporated Patched shading in graphics processing
KR20170005033A (ko) * 2014-06-30 2017-01-11 인텔 코포레이션 감소된 픽셀 쉐이딩을 위한 기술
KR20160101874A (ko) * 2015-02-18 2016-08-26 에이알엠 리미티드 그래픽 처리 시스템
KR20190051961A (ko) * 2016-09-22 2019-05-15 어드밴스드 마이크로 디바이시즈, 인코포레이티드 프리미티브 셰이더
KR20190029842A (ko) * 2017-09-12 2019-03-21 주식회사 케이쓰리아이 지피유 가속 컴퓨팅을 이용한 3차원 복원 클라우드 포인트 생성 방법

Also Published As

Publication number Publication date
WO2010138870A3 (en) 2012-04-12
US20100302246A1 (en) 2010-12-02
TW201104620A (en) 2011-02-01
CN102598062B (zh) 2016-03-09
JP5596136B2 (ja) 2014-09-24
WO2010138870A2 (en) 2010-12-02
CN102598062A (zh) 2012-07-18
US8436854B2 (en) 2013-05-07
EP2435988A2 (en) 2012-04-04
JP2012528410A (ja) 2012-11-12
KR101281258B1 (ko) 2013-07-03

Similar Documents

Publication Publication Date Title
KR101281258B1 (ko) 연기형 버텍스 셰이딩을 갖는 그래픽스 프로세싱 유닛
US9129443B2 (en) Cache-efficient processor and method of rendering indirect illumination using interleaving and sub-image blur
Tarini et al. Ambient occlusion and edge cueing for enhancing real time molecular visualization
KR100510131B1 (ko) 픽셀 캐쉬 및 이를 이용한 3차원 그래픽 가속 장치 및 방법
Lensing et al. Instant indirect illumination for dynamic mixed reality scenes
US8009172B2 (en) Graphics processing unit with shared arithmetic logic unit
US9761037B2 (en) Graphics processing subsystem and method for updating voxel representation of a scene
JP2009545825A (ja) 拡張型頂点キャッシュを備えたグラフィック処理装置
US20140098096A1 (en) Depth texture data structure for rendering ambient occlusion and method of employment thereof
WO2022143367A1 (zh) 一种图像渲染方法及其相关设备
Broecker et al. Adapting ray tracing to spatial augmented reality
KR20180037838A (ko) 텍스쳐를 처리하는 방법 및 장치
JP2006517705A (ja) コンピュータグラフィックスシステム及びコンピュータグラフィクイメージのレンダリング方法
US20230147244A1 (en) Methods and apparatus for occlusion handling techniques
US20140160124A1 (en) Visible polygon data structure and method of use thereof
Hong et al. Motion-blurred shadows utilizing a depth-time ranges shadow map
JP2008502979A (ja) 逆テクスチャマッピング3dグラフィックスシステム
US9589316B1 (en) Bi-directional morphing of two-dimensional screen-space projections
Doghramachi Tile-Based Omnidirectional Shadows
Kim et al. A 36 fps SXGA 3-D display processor embedding a programmable 3-D graphics rendering engine
Jansson Ambient Occlusion for Dynamic Objects and Procedural Environments
WO2022211966A1 (en) Post-depth visibility collection with two level binning
Lee et al. Coherence aware GPU‐based ray casting for virtual colonoscopy
Walton et al. Interacting with volume data: Deformations using forward projection
Palmér Analytical motion blurred shadows

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 7