KR20110016938A - 기하 셰이더를 사용하는 테셀레이션 엔진을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품 - Google Patents

기하 셰이더를 사용하는 테셀레이션 엔진을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품 Download PDF

Info

Publication number
KR20110016938A
KR20110016938A KR1020107027889A KR20107027889A KR20110016938A KR 20110016938 A KR20110016938 A KR 20110016938A KR 1020107027889 A KR1020107027889 A KR 1020107027889A KR 20107027889 A KR20107027889 A KR 20107027889A KR 20110016938 A KR20110016938 A KR 20110016938A
Authority
KR
South Korea
Prior art keywords
data
calculated
shader
vertex
vertices
Prior art date
Application number
KR1020107027889A
Other languages
English (en)
Inventor
비니트 고엘
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20110016938A publication Critical patent/KR20110016938A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

Landscapes

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

Abstract

테셀레이션된 프리미티브 데이터를 기하 셰이더에 제공하기 위한 방법, 시스템, 및 컴퓨터 프로그램이 개시된다. 상기 방법은, 본래의 버텍스들의 세트 및 본래의 연결 데이터의 세트에 근거하여 테셀레이션된 버텍스들의 세트 및 계산된 연결 데이터의 세트를 계산하는 단계와, 상기 본래의 베텍스들의 세트 및 상기 테셀레이션된 버텍스들의 세트에 근거하여 계산된 버텍스 데이터를 생성하는 단계와, 상기 계산된 연결 데이터의 세트를 수신하는 단계와, 상기 계산된 연결 데이터의 세트에 근거하여 상기 계산된 버텍스 데이터의 서브세트를 요청하는 단계와, 그리고 상기 계산된 버텍스 데이터의 서브세트에 의해 정의된 프리미티브들을 처리하는 단계를 포함한다. 전술한 방법과 유사한 결과를 달성하기 위한 시스템 및 컴퓨터 프로그램 제품이 더 기술된다.

Description

기하 셰이더를 사용하는 테셀레이션 엔진을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품{SYSTEM, METHOD, AND COMPUTER PROGRAM PRODUCT FOR A TESSELLATION ENGINE USING A GEOMETRY SHADER}
본 발명은 일반적으로 그래픽 프로세싱 유닛에서 테셀레이션 오퍼레이션들(tessellation operations)을 최적화하는 것에 관한 것이다.
그래픽 프로세싱 유닛(GPU)은 그래픽 프로세싱 오퍼레이션들에 최적화된 특정 목적의 집적 회로(special-purpose integrated circuit)이다. GPU는 대개 그래픽 프로세싱이 필요한 애플리케이션들(예를 들어, 비디오 게임 애플리케이션들)을 실행하는데 사용되는 컴퓨팅 디바이스들(예를 들어, 개인용 컴퓨터, 렌더링 팜 또는 서버, 휴대용 디바이스, 디지털 텔레비전 등)에 통합된다.
대부분의 최신 GPU 실시예들에서, 그래픽 오퍼레이션들의 프로세싱은, 각각 프로세싱 파이프라인의 서로 다른 스테이지(stage)에 위치하는 다양한 기능 유닛들로 나누어진다. 일반적으로, GPU로의 입력은 버텍스(vertex)들의 세트 및 상기 버텍스들이 서로 어떻게 연결되는지를 나타내는 연결 정보의 형태로 되어 있다. 버텍스들의 세트에 대한 연결 정보와 결합된 버텍스들의 세트는 기하 프리미티브(geometric primitive)를 정의한다. 대개, 선택되는 기하 프리미티브는 세개의 버텍스들 및 세개의 모서리들(edges)로 정의되는 삼각형이며, 상기 모서리들은 연결 정보로서 표시된다.
렌더링을 위하여 각각의 기하 프리미티브가 GPU에 의해 처리됨에 따라, 개개의 버텍스들이 버텍스 셰이더(vertex shader)에 의해 처리된다. 버텍스 셰이더는 일반적으로 개개의 버텍스들에 적용되는 오퍼레이션들을 수행하는데 사용된다. 이러한 오퍼레이션들의 예는 변환 오퍼레이션들(transform operations) 및 라이팅 오퍼레이션들(lighting operations)을 포함한다. 이러한 오퍼레이션들의 결과로서, 일반적으로, 계산된 버텍스 위치에 관한 데이터, 그 버텍스에서의 프리미티브의 컬러, 그리고 텍스쳐 매핑(texture mapping)을 위한 그 버텍스에서의 텍스쳐 좌표(texture coordinates)가 계산된다.
개개의 버텍스들에 관련된 계산들이 수행된 후, 파이프라인의 추가 스테이지(additional stage)는 프리미티브들에 대한 오퍼레이션들을 전체적으로 수행할 수 있다. 일반적으로 기하 셰이더(geometry shader)로서 지칭되는 이 스테이지는, 그래픽 기법들을 전체 프리미티브에 적용하여, 잠재적으로 추가의 프리미티브들이 생성되게 할 수 있다. 예를 들어, 기하 셰이더는, 버텍스들을 재배치하거나 퍼 및 핀 기법들(fur and fin techniques)을 적용하기 위하여, 변위 맵(displacement map)을 적용하는데 사용될 수 있다.
기하 셰이더 스테이지의 완료 후, 출력은 대개 이차원 이미지로의 변환을 위해 래스터라이저(rasterizer)로 송신되며, 픽셀 셰이더에 의해 추가적인 향상 (further enhancements)이 수행될 수 있다.
기하 셰이더에 의해 수행되는 기법들은 일반적으로 렌더링된 오브젝트의 외관(appearance) 향상을 위하여 추가적인 프리미티브들이 생성되게 한다. 변위 맵을 적용함으로써, 예를 들어, 추가적인 버텍스들을 제공하기 위하여 추가적인 프리미티브들이 생성되며, 이 추가적인 버텍스들은 텍스쳐 비트맵에 따라 이동배치(displace)된다. 일반적으로, 더 많은 프리미티브들이 이 기법의 계산에서 사용되므로, 더 부드럽고 더 실제적인 최종 오브젝트가 나타난다. 그러나, 너무 많은 버텍스들을 제공하는 것은 버텍스 셰이더 및 기하 셰이더를 압도(overwhelm)할 수 있으며, 특히 렌더링되는 오브젝트가 뷰잉 면(viewing plane)으로부터 상당한 거리에 위치할 때, 오브젝트의 렌더링이 눈에 띄게 개선되게 할 수 없을 것이다.
종래의 실시예들은 버텍스 셰이더 스테이지 직전에 프리미티브들의 수를 증가시키기 위해 테셀레이션 엔진을 사용하는 것에 의존해왔다. 예를 들어, 본 명세서에 그 전체가 참조로서 포함되는 공동 소유 미국 특허 공보 No. 2004/0085312(Buchner et al. 출원 번호 10/287,143)는, 이러한 테셀레이션을 수행하기 위한 방법 및 장치를 개시한다. 그러나, 종래의 실시예들은 단순히 테셀레이션 엔진으로부터의 출력이 버텍스 셰이더에 의해 처리되고, 그후 디스플레이로 렌더링을 위해 레스터라이저로 전송될 수 있게 하였다. 종래의 실시예를 사용하는 개발자가 프리미티브들을 테셀레이션하여 프리미티브 개수를 증가시키고, 상기 테셀레이션된 프리미티브들을 기하 셰이더를 통해 실행하기를 원한다면, 테셀레이션된 출력을 메모리 어딘가에 저장할 필요가 있었다. 기하 셰이더로 하여금 테셀레이션된 데이터에 대한 계산을 수행할 수 있도록 하기 위하여, 개발자는 이 테셀레이션된 데이터에 대해 GPU 파이프라인을 다시 실행(re-run)시킬 필요가 있을 것이다.
따라서, 기하 셰이더 내의 테셀레이션된 데이터를 더 처리할 때 테셀레이션으로 인한 렌더링 비용을 감소시키는 개선된 기법들이 필요하다.
본 발명의 실시예들은 테셀레이션된 프리미티브 데이터를 기하 셰이더에 제공하는 방법을 포함한다. 상기 방법은, 본래의 버텍스들의 세트 및 본래의 연결 데이터의 세트에 근거하여 테셀레이션 엔진에서 계산된 연결 데이터의 세트 및 테셀레이션된 버텍스들의 세트를 계산하는 단계와, 상기 테셀레이션된 버텍스들의 세트 및 상기 본래의 버텍스들의 세트에 근거하여 버텍스 셰이더에서 계산된 버텍스 데이터를 생성하는 단계와, 기하 셰이더에서 계산된 연결 데이터의 세트를 수신하는 단계와, 기하 셰이더에서, 상기 계산된 연결 데이터의 세트에 근거하여 계산된 버텍스 데이터의 서브세트를 요청하는 단계와, 그리고 상기 계산된 버텍스 데이터의 서브세트에 의해 정의된 프리미티브들을 처리하는 단계를 포함한다.
본 발명의 실시예들은 테셀레이션된 프리미티브 데이터를 기하 셰이더에 제공하기 위한 그래픽 프로세싱 유닛을 더 포함한다. 상기 그래픽 프로세싱 유닛은, 본래의 버텍스들의 세트 및 본래의 연결 데이터의 세트에 근거하여 테셀레이션된 버텍스들의 세트 및 계산된 연결 데이터의 세트를 계산하기 위한 테셀레이션 엔진, 상기 본래의 버텍스들의 세트 및 상기 테셀레이션된 버텍스들의 세트에 근거하여 계산된 버텍스 데이터를 생성하기 위한 버텍스 셰이더, 및 상기 계산된 연결 데이터의 세트를 수신하고, 상기 계산된 연결 데이터에 근거하여 상기 계산된 버텍스 데이터의 서브세트를 요청하고, 그리고 상기 계산된 버텍스 데이터의 서브세트에 의해 정의된 프리미티브들을 처리하기 위한 기하 셰이더를 포함한다.
본 발명의 실시예들은, 프로세서로 하여금 기하 셰이더에 테셀레이션된 프리미티브 데이터를 제공할 수 있게 해주는 컴퓨터 프로그램 로직이 기록된 컴퓨터 사용가능 매체를 포함하는 컴퓨터 프로그램 제품을 더 포함한다. 상기 컴퓨터 프로그램 로직은 명령어들 및/또는 데이터를 포함하는바, 상기 명령어들 및 데이터는 상기 프로세서로 하여금, 본래의 버텍스들의 세트 및 본래의 연결 데이터의 세트에 근거하여 테셀레이션 엔진에서 테셀레이션된 버텍스들의 세트및 계산된 연결 데이터의 세트를 계산하고, 상기 기하 셰이더에서 상기 계산된 연결 데이터의 세트를 수신하고, 상기 기하 셰이더에서 상기 계산된 연결 데이터의 세트에 근거하여 상기 계산된 버텍스 데이터의 서브세트를 요청하고, 그리고 상기 계산된 버텍스 데이터의 서브세트에 의해 정의된 프리미티브들을 처리할 수 있게 해준다.
본 발명의 추가적인 피쳐들 및 이점들, 그리고 본 발명의 구조 및 다양한 실시예들의 구조 및 동작은 첨부의 도면들을 참조로 하기에서 자세히 설명된다. 본 발명은 본 명세서에서 설명되는 구체적인 실시예들에 국한되는 것이 아니다. 그러한 실시예들은 단지 예시의 목적으로 제공되는 것이다. 당업자들에게는 본 명세서에 포함된 내용에 근거한 추가적인 실시예들이 자명할 것이다.
본 명세서에 포함되며 본 명세서의 일부를 이루는 첨부의 도면들은, 본 발명의 실시예들을 도시하며, 상세한 설명과 함께 본 발명의 원리들을 설명하고, 당업자가 본 발명을 사용할 수 있게 해줄 것이다.
도 1은 본 발명의 실시예에 따라 일반적인 GPU 파이프라인 실시예를 도시한다.
도 2는 본 발명의 실시예에 따라 테셀레이션 엔진을 포함하는 일반적인 GPU 파이프라인 실시예를 도시한다.
도 3은 본 발명의 일 실시예에 따라 파이프라인 내에 테셀레이션 엔진을 포함하는 최적화된 GPU 파이프라인 실시예를 도시한다.
도 4는 본 발명의 일 실시예에 따른 GPU 파이프라인 실시예의 스테이지들 사이의 통신을 도시한다.
도 5는 본 발명의 실시예에 따라, 테셀레이션 엔진을 구비한 GPU 파이프라인 실시가 기하 셰이더에 의해 프로세싱을 향상시키도록 동작하는 단계들을 도시하는 흐름도이다.
도 6은 본 발명의 실시예들이 구현되는 예시적인 컴퓨터 시스템을 도시한다.
도 7은 본 발명의 실시예들이 구현되는 컴퓨터 시스템에서의 인터페이스 계층들(interface layers)의 예를 도시한다.
본 발명의 추가적인 피쳐들 및 이점들은 첨부의 도면들을 참조로 본 발명의 다양한 실시예들의 구조 및 동작과 함께 하기에서 자세히 설명된다. 본 발명은 본 명세서에 설명된 구체적인 실시예들에 국한된 것이 아님을 알아야 한다. 이러한 실시예들은 본 명세서에서 단지 예시적인 목적으로 제시된 것이다. 본 명세서에 포함된 가르침들에 근거하여 추가적인 실시예들이 당업자에게 자명할 것이다.
본 발명에 대한 아래의 상세한 설명은 본 발명에 따른 예시적인 실시예들을 설명하는 첨부의 도면을 참조하여 설명된다. 본 발명의 정신 및 범주 내에서 다른 실시예들이 가능하며 실시예들에 대한 수정이 이루어질 수 있다. 따라서, 상세한 설명은 본 발명을 제한하려 의도된 것이 아니다. 오히려, 본 발명의 범주는 첨부의 청구항들에 의해 정의된다.
하기에서 설명될 바와 같이, 본 발명이 소프트웨어, 하드웨어, 펌웨어, 및/또는 도면에 도시되는 엔티티들의 많은 다른 실시예들로 구현될 수 있다는 것은 당업자에게는 자명할 것이다. 본 발명을 구현하기 위하여 하드웨어에 대해 특화된 제어를하는 임의의 실제 소프트웨어 코드는 본 발명을 제한 하는 것이 아니다. 따라서, 본 발명의 동작 특성은, 본 명세서에 제시된 세부사항들에 대해, 실시예들에 대한 수정 및 변경이 가능하다는 이해하에서 설명될 것이다. 추가적으로, 그리고 당업자에게 자명할 바와 같이, 본 발명의 다양한 실시예들에 대한 시뮬레이션, 신세시스 및/또는 제조는, 일반적인 프로그래밍 언어(예를 들어, C 또는 C++), 베릴로그 HDL, VHDL, 알테라 HDL(AHDL) 등을 포함하는 하드웨어 기술 언어(HDL)를 포함하는 컴퓨터 판독가능 코드(위에 기술된 것과 같음), 또는 다른 사용가능한 프로그래밍 및/또는 스케메틱 캡쳐 툴들(예를 들어, 회로 캡쳐 툴)을 통해 부분적으로 달성될 수 있다. 이러한 컴퓨터 판독가능 코드는 반도체, 자기 디스크, 광학 디스크(예를 들어, CD-ROM, DVD-ROM)를 포함하는 임의의 알려진 컴퓨터 사용가능 매체 내에 배치될 수 있고, 컴퓨터 사용가능(예를 들어, 판독가능) 전송 매체(예를 들어, 캐리어 웨이브 또는 디지털, 광학, 또는 아날로그 기반 매체를 포함하는 임의의 다른 매체) 내에 포함된 컴퓨터 데이터 신호로서 배치될 수 있다. 따라서, 코드는 인터넷 및 인터넷들을 포함하는 통신 네트워크를 통해 전송될 수 있다. 위에서 기술된 시스템 및 기법들에 의해 제공되는 구조 및/또는 달성되는 기능들은, 프로그램 코드로 구현되는 코어(예를 들어, GPU 코어)로 나타낼 수 있으며, 집적 회로 제품의 일부로서 하드웨어로 변형될 수 있다.
도 1은 적어도 네개의 프로세싱 스테이지(stage)들을 가지는 일반적인 GPU(graphics processing unit) 파이프라인(100)를 도시한다. 최신 GPU 파이프라인(100)은 대개 버텍스 셰이더(102) 스테이지, 기하 셰이더(104) 스테이지, 래스터라이저(106) 스테이지, 및 픽셀 셰이더(108) 스테이지를 가진다. 일반적인 GPU 파이프라인(100)의 사용시, 그래픽 어플리케이션은 버텍스들의 세트 및 연결 데이터의 세트로 버텍스 셰이더(102)를 제공한다. 이 버텍스들의 세트 및 연결 데이터의 세트는 함께 렌더링될 오브젝트 또는 장면(scene)을 정의한다.
버텍스 셰이더(102)는 버텍스들의 세트가 퍼-버텍스 오퍼레이션들(per-vertex operations)을 수행하도록 조정할 수 있다. 이러한 오퍼레이션은, 예를 들어, 변형 오퍼레이션들 및 라이팅 오퍼레이션들이다. 버텍스 셰이더는, 예를 들어, 오브젝트를 포함하는 버텍스들 각각에 오프셋을 더함으로써 장면 내의 오브젝트를 이동시켜, 그래픽 애플리케이션으로 하여금 렌더링될 오브젝트를 조정할 수 있게 해준다. 예를 들어, 그래픽 어플리케이션이 렌더링될 오브젝트를 x,y,z 공간에서 x축을 따라 5 단위만큼 이동시키기를 원한다면, 버텍스 셰이더는 오브젝트를 포함하는 각각의 버텍스의 x-좌표에 +5 오프셋을 계산하는데 유용할 것이며, 결과적으로 전체 오브젝트를 새로운 오프셋 위치로 이동하게 할 것이다. 본 발명의 실시예에 따라, 이러한 계산들은 단일-명령 복수-데이터("SIMD": single-instruction multiple data) 명령을 GPU 파이프라인(100)에 발행함으로써 달성된다.
기하 셰이더(104)는 추가의 조정을 위한 준비시 버텍스 셰이더로부터 조정된 버텍스 세트 및 연결 데이터 세트를 얻는다. 기하 셰이더(104)는 프리미티브라고 알려진 간단한 기하 형상들(geometric shapes) 대해 동작하도록 구성된다. 프리미티브들은 버텍스 데이터의 임의의 세트 및 그 세트 내의 버텍스들 사이의 연결 데이터일 수 있지만, 대부분의 기하 셰이더(104) 구현들은 주로 삼각형들에 대해 동작한다. 삼각형들은 세개의 꼭짓점들 및 이 세개의 꼭짓점들 사이의 연결 데이터에 의해 정의된다. 기하 셰이더(104)는, 예를 들어, 프리미티브들의 세트 내의 버텍스들을 재배치(repositioning)하기 위해 또는 프리미티브들의 세트에 퍼 및 핀 기법들을 적용하기 위해 변위 맵을 적용하는데 사용될 수 있다.
위에서 언급한 기법들을 적용한 기하 셰이더(104)의 결과는 추가적인 버텍스들 및 연결 데이터의 생성일 수 있으며, 따라서 추가의 프리미티브들을 형성하는 것일 수 있다. 예를 들어, 변위 맵의 적용은, 전에 버텍스들이 위치되지 않았던 오브젝트의 영역들을 옮겨 놓기 위하여 추가의 버텍스들, 및 대응하는 연결 데이터가 생성되게 할 수 있다.
버텍스 셰이더(102) 및 기하 셰이더(104)에 적용되는 기법들은 기하 셰이더(104)로의 입력으로서 프리미티브 개수가 더 많을 때(higher primitive counts), 결과적으로 더 부드럽고, 더 복잡한 오브젝트가 되는 이점을 가지는 경향이 있다. 따라서, 버텍스 셰이더(102) 및 기하 셰이더(104)에서 피리미티브-조정 기법들의 적용으로부터 보다 나은 결과를 얻기 위해서는, GPU 파이프라인(100)으로의 입력들로서 고차의 표면들(high-order surfaces)을 사용하는 것이 유리하다.
래스터라이저(106)는 뷰잉 면에 근거하여, 최종 버텍스 세트 및 연결 데이터 세트를 취하고, 상기 버텍스 세트 및 연결 데이터 세트를 포함하는 장면이 대응하는 시점(point of view)에서 2차원으로 렌더링될 때 어떻게 보일지를 결정한다. 일반적으로 2차원 디스플레이 디바이스 상에서 디스플레이될 준비가 된 화소(picture element, "pixel")들의 세트로 구성된 이러한 렌더링된 장면은, 퍼-픽셀(per-pixel) 레벨에서의 추가적인 프로세싱을 위해 픽셀 셰이더(108)로 송신된다.
앞에서 언급된 바와 같이, 이미지 품질을 위하여, GPU 파이프라인(100) 내에서 프리미티브들의 처리를 행할 때 함께 작업할 추가의 프리미티브들을 가지는 것이 일반적으로 유리하다.
도 2는 GPU 파이프라인(200)의 블럭도이다. GPU 파이프라인(200)은, GPU 파이프라인(100)에서와 마찬가지로, 버텍스 셰이더(203), 기하 셰이더(104), 래스터라이저(106), 및 픽셀 셰이더(108)를 포함한다. GPU 파이프라인은 또한 기존의 프리미티브들에 근거하여 추가적인 프리미티브들을 발생시키는 프로세스("테셀레이션"으로 알려져 있는 프로세스)를 달성하기 위하여 테셀레이션 엔진(202)를 또한 포함한다.
테셀레이션 엔진(202)은 버텍스 데이터 세트 및 연결 데이터 세트를 취하고, 결과적인 프리미티브들을 테셀레이션하도록 동작가능하며, 추가의 프로세싱을 위하여 버텍스 셰이더(203)에 새로운 버텍스 데이터 세트 및 새로운 연결 데이터를 제공한다. 본 명세서에 그 전체가 참조로써 포함된 공동소유 미국 특허 출원 공개번호 제2004/0085312(Buchner et al. 출원번호 10/287,143)은 그러한 테셀레이션을 행하기 위한 방법 및 장치를 개시한다. 테셀레이션 엔진(202)의 출력은 그후 전통적인 경로에서와 마찬가지로 버텍스 셰이더(203)로 송신되어, 버텍스 셰이더(203)가 새로운 버텍스들의 세트를 계산하고 그것들을 평가 셰이더(evaluation shader)(204) 내에 저장할 수 있게 해준다. 래스터라이저(106)는 후속적으로 평가 셰이더(204)로부터 버텍스들을 검색하여 이전과 같이 오퍼레이션들을 계속할 수 있다.
이 실시에에서, 기하 셰이더(104)가 테셀레이션된 출력을 검색할 수 있는 수단이 없으므로, 파이프라인(202) 내의 테셀레이션된 출력에 대해 기하 셰이더 오퍼레이션들을 행하는 것은 불가능하다. 따라서, 테셀레이션된 데이터에 기하 셰이더(104) 기법들을 적용하기 위해서는, 테셀레이션된 데이터를 메모리 어딘가에 저장하고, 버텍스 셰이더(203)에 대한 입력으로서 테셀레이션된 데이터를 사용하여 파이프라인(200)을 재시작하여 데이터를 기하 셰이더(104)에 전달할 필요가 있을 것이다.
테셀레이션으로 최적화된 GPU 파이프라인(OPTIMIZED GPU PIPELINE WITH TESSELLATION)
도 3은 본 발명의 실시에에 따른 최적화된 GPU 파이프라인(300)의 도면이다. 파이프라인(300)은 테셀레이션 엔진(202), 버텍스 셰이더(102), 평가 셰이더(204), 기하 셰이더(104), 래스터라이저(106), 및 픽셀 셰이더(108)를 포함한다.
테셀레이션 엔진(202)은 본 발명의 실시예에 따라 메모리 위치(도시되지 않음)로부터 버텍스들의 세트 및 연결 정보의 세트를 검색하도록 동작가능하다. 본 명세서에 그 전체가 참조로써 포함된 공동소유 미국 특허 출원 공개번호 제2004/0085312(Buchner et al. 출원번호 10/287,143)은, 본 발명의 실시예에 따라 테셀레이션 엔진이 테셀레이션된 프리미티브들을 생성할 수 있게 해준다.
본 발명의 추가적인 실시예에 따라, 테셀레이션 엔진(202)에서의 테셀레이션 기법의 적용은 테셀레이션된 버텍스들뿐만 아니라 본래의 입력 프리미티브들에 대해 본래의 버텍스들이 출력되게 한다. 새로운 연결 정보는 본래 버텍스들 및 테셀레이션된 버텍스들에 대응하는 테셀레이션 엔진에 의해 생성된다. 예시적인 실시예에서, 테셀레이션된 버텍스들은, 무게중심 좌표(barycentric coordinates)로서 출력된다.
도 3에 도시된 바와 같이, 테셀레이션 엔진(202)으로부터의 출력이 기하 셰이더(104) 및 버텍스 셰이더(203) 모두에 송신된다. 본 발명의 실시예에 따라, 테셀레이션 엔진(202)은 테셀레이션된 버텍스들 및 본래 버텍스들을 포함하는 계산된 버텍스 세트를 버텍스 셰이더(203)로 송신한다. 버텍스 셰이더(203)는, 본 발명의 실시예에 따라, 계산된 버텍스 세트를 위한 버텍스 값들을 계산하도록 동작된다. 본 발명의 추가적인 실시예에 따라, 버텍스 셰이더(203)는 계산된 버텍스 세트의 버텍스들에 대한 추가의 버텍스 오퍼레이션들(에를 들어, 변형 오퍼레이션)을 수행할 수 있다. 본 기술분야의 당업자는 버텍스 셰이더의 기능이 버텍스-레벨 조정을 위한 잘 알려진 기법들을 포함한다는 것을 이해할 것이다. 계산된 버텍스 세트에 대한 모든 변경이 수행될 때, 계산된 버텍스 세트가 평가 셰이더(204)에 기입된다. 본 발명의 실시예에 따라, 평가 셰이더(204)는 계산된 버텍스 세트가 기입될 링 버퍼(ring buffer)를 포함한다.
테셀레이션 엔진(202)은 본래의 그리고 테셀레이션된 모든 버텍스들의 연결 데이터를 직접 기하 셰이더(108)로 전송한다. 기하 셰이더(104)는 본 발명의 실시예에 따라 연결 데이터의 서브세트에 의해 정의되는 프리미티브에 대응하는 버텍스들을 얻기 위해 이 연결 데이터를 사용할 수 있다. 기하 셰이더(104)는 평가 셰이더(204)로부터 버텍스 데이터를 검색하며, 상기 버텍스 데이터는 본 발명의 실시예에 따라 버텍스 셰이더(102)에 의해 저장된다.
도 4의 통신 흐름도(400)는 본 발명의 실시예에 따른 이러한 프로세스를 더 도시한다. 흐름도(400)는 테셀레이션 엔진(202), 버텍스 셰이더(203), 평가 셰이더(204), 및 기하 셰이더(104) 사이의 통신을 보여준다. 테셀레이션을 수행한 후, 테셀레이션 엔진(202)은 단계(402)에서 본래의 그리고 테셀레이션된 버텍스 세트를 버텍스 셰이더(203)에 전송한다. 계산된 버텍스 세트를 계산함에 따라, 버텍스 셰이더(203)는 단계(404)에서 평가 셰이더(203)에 상기 계산된 버텍스 세트를 저장한다. 또한, 테셀레이션 엔진(202)이 단계(406)에서 모든 버텍스들에 대한 계산된 연결 데이터를 기하 셰이더(104)에 직접 전송한다.
연결 데이터를 가지고, 기하 셰이더(104)는 본 발명의 실시예에 따라 단계(408)에서 연결 데이터에 의해 정의된 프리미티브에 대응하는 버텍스들의 세트를 요청한다. 평가 셰이더(204)는 단계(410)에서 요청된 버텍스들을 제공한다. 기하 셰이더(104)는 단계(410)에서 리턴된 버텍스들에 대한 프리미티브-레벨 오퍼레이션들을 수행하도록 동작할 수 있다.
동작 방법(METHOD OF OPERATION)
도 5는 본 발명의 실시에에 따라, 도 3의 GPU 파이프라인(300)이 최적화된 테셀레이션 그래픽(optimized tessellated graphics)을 제공하도록 동작하는 단계들을 도시한다. 상기 방법은 단계(501)에서 시작하여, 테셀레이션이 요청되었는지 여부를 결정하는 단계(502)로 진행한다.
본 발명의 실시예에 따라, 특정 임계값(threshold)이 도달되었을 때에만 테셀레이션이 적용된다. 이 임계값은, 예를 들어, 뷰잉 면으로부터 렌더링되는 오브젝트의 거리, 오브젝트의 곡률(curvature), 또는 다른 기준일 수 있다. 당업자는 복잡도를 감지하는 그래픽 어플리케이션 사용자의 능력에 따라, 렌더링된 오브젝트의 복잡도를 최적화하기 위한 다른 임계값들이 존재한다는 것을 이해할 것이다. 또한, 특정 GPU 파이프라인(300)의 계산 성능, 디스플레이 영역, 및 사용자 선호와 같은 고려사항들에 근거하여, 본 발명의 실시예에 따라 임계값이 수정된다. 단계(502)에서 테셀레이션이 요청되지 않는다면, 상기 방법은 테셀레이션을 수행하지 않고 단계(506)으로 진행한다.
단계(504)에서, 테셀레이션 엔진(202)이 테셀레이션된 버텍스들을 계산하고 모든 버텍스들(본래의 버텍스들 및 테셀레이션된 버텍스들) 사이의 연결들을 정의하는 새로운 연결 데이터를 생성하여, 테셀레이션 엔진(202)에서 테셀레이션이 수행된다. 단계(506)에서, 본 발명의 실시예에 따라 버텍스 셰이더(203)가 수정된 버텍스 데이터를 계산한다. 앞에서 기술한 바와 같이, 도 4의 단계(402)에서, 버텍스 셰이더(203)는 테셀레이션 엔진(202)로부터 본래의 버텍스 세트 및 테셀레이션된 버텍스 세트를 수신하며, 버텍스 셰이더(203)는 단계(404)에서 계산된 버텍스 세트를 생성하도록 동작가능하다. 본 발명의 추가적인 실시예에 따르면, 계산된 버텍스 세트가 평가 셰이더(204)에 저장된다.
방법은 단계(508)로 진행하며, 여기서 기하 셰이더(104)가 테셀레이션 엔진(202)로부터 연결 데이터를 수신한다. 단계(510)에서, 기하 셰이더(104)는 연결 데이터에 대응하는 프리미티브들을 식별하며 대응하는 버텍스들을 검색한다. 본 발명의 실시예에 따라, 기하 셰이더(104)는 평가 셰이더(204)로부터 버텍스들을 검색하며, 여기서 버텍스들은 버텍스 셰이더(203)에 의해 저장된 것이다. 기하 셰이더(104)는 그후 상기 검색된 프리미티브들에 대해 프리미티브-레벨 오퍼레이션들을 수행하며, 상기 방법은 단계(512)에서 종료된다.
컴퓨터 시스템 구현
본 발명의 다양한 양상들이 소프트웨어, 펌웨어, 하드웨어, 또는 그것들의 조합에 의해 실시될 수 있다. 도 6은 본 발명, 또는 본 발명의 일부가 컴퓨터-판독가능 코드로서 구현된 예시적인 컴퓨터 시스템(600)이다. 예를 들어, 도 5의 흐름도(500)에 의해 도시된 방법들이 시스템(600)에서 구현될 수 있다. 본 발명의 다양한 실시예들이 이 예시적인 컴퓨터 시스템(600)에 관하여 설명된다. 본 내용을 숙지한 후, 디른 컴퓨터 시스템들 및/또는 컴퓨터 구조들을 사용하여 본 발명을 어떻게 실시할 지는 당업자들에게 명백하게 될 것이다.
컴퓨터 시스템(600)은 프로세서(604)와 같은 하나 이상의 프로세서들을 포함한다. 프로세서(604)는 특수 목적 또는 범용 프로세서일 수 있다. 프로세서(604)는 통신 인프라스트럭쳐(606)(예를 들어, 버스 또는 네트워크)에 연결된다.
컴퓨터 시스템(600)은 또한 메인 메모리(608), 바람직하게는 랜덤 액세스 메모리(RAM)를 포함하며, 또한 제2 메모리(610)를 포함할 수 있다. 제2 메모리는, 예를 들어, 하드 디스크 드라이브(612), 착탈식 저장 드라이브(614), 및/또는 메모리 스틱을 포함할 수 있다. 착탈식 저장 드라이브(614)는 플로피 디스크 드라이브, 자기 테잎 드라이브, 광학 디스크 드라이브, 플래시 메모리 등을 포함할 수 있다. 착탈식 저장 드라이브(614)는 잘 알려진 방식으로 착탈식 저장 유닛(618)으로부터 판독 및/또는 착탈식 저장 유닛(618)에 기록한다. 착탈식 저장 유닛(618)은 플로피 디스크, 자기 테입, 광학 디스크 등을 포함할 수 있으며, 이는 착탈식 저장 드라이브(614)에 의해 판독 및 기입된다. 당업자에게 자명할 바와 같이, 착탈식 저장 유닛(618)은 그 내부에 컴퓨터 소프트웨어 및/또는 데이터가 저장된 컴퓨터-사용가능 저장 매체를 포함한다.
대안적인 실시예들에서, 제2 메모리(610)는 컴퓨터 프로그램들 또는 다른 명령어들이 컴퓨터 시스템(600)으로 로딩될 수 있게 해주는 다른 유사한 수단들을 포함할 수 있다. 이러한 수단들은, 예를 들어, 착탈식 저장 유닛(622) 및 인터페이스(620)를 포함할 수 있다. 이러한 수단들의 예는 프로그램 카트리지 및 카트리지 인터페이스(비디오 게임 디바이스에서 볼 수 있는 것과 같은 카트리지 인터페이스), 착탈식 메모리 칩(예를 들어, EPROM 또는 PROM) 및 관련된 소켓, 그리고 소프트웨어 및 데이터가 상기 착탈식 저장 유닛(622)으로부터 컴퓨터 시스템(600)으로 전송될 수 있게 해주는 다른 착탈식 저장 유닛들(622) 및 인터페이스들(620)을 포함한다.
컴퓨터 시스템(600)은 또한 통신 인터페이스(624)를 포함할 수 있다. 통신 인터페이스(624)는 소프트웨어 및 데이터가 컴퓨터 시스템(600)과 외부 디바이스들 사이에서 전송될 수 있게 해준다. 통신 인터페이스(624)는 모뎀, 네트워크 인터페이스(예를 들어, 이더넷 카드), 통신 포트, PCMCIA 슬롯 및 카드, 등을 포함할 수 있다. 통신 인터페이스(624)를 통해 전송되는 소프트웨어 및 데이터는 신호들의 형태이며, 상기 신호들은 전자 신호, 전자기 신호, 광학 신호, 또는 통신 인터페이스(624)에 의해 수신되는 다른 신호들의 형태일 수 있다. 이 신호들은 통신 경로(626)를 통해 통신 인터페이스(624)에 제공된다. 통신 경로(626)는 신호들을 운반하며, 와이어 또는 케이블, 광섬유, 전화선, 셀룰러 폰 링크, RF 링크 또는 다른 통신 채널들을 사용하여 구현될 수 있다.
본 명세서에서, 용어 "컴퓨터 프로그램 매체" 및 "컴퓨터-사용가능 매체"는 일반적으로 착탈식 저장 유닛(618), 착탈식 저장 유닛(622), 및 하드 디스크 드라이브(512) 내에 인스톨되는 하드 디스크와 같은 매체를 지칭하는 데 사용된다. 통신 경로(626)를 통해 운반되는 신호들은 또한 여기에서 설명된 로직을 포함할 수 있다. 컴퓨터 프로그램 매체 및 컴퓨터-사용가능 매체는 또한 메모리 반도체(예를 들어, DRAM)일 수 있는 메인 메모리(608) 및 제2 메모리(610)와 같은 메모리들을 지칭할 수 있다. 이 컴퓨터 프로그램 제품들은 소프트웨어를 컴퓨터 시스템(600)에 제공하기 위한 수단이다.
컴퓨터 프로그램들(컴퓨터 제어 로직 또는 데이터 및/또는 명령어들이라고도 지칭됨)은 메인 메모리(608) 및/또는 제2 메모리(610)에 저장된다. 컴퓨터 프로그램들은 또한 통신 인터페이스(624)를 통해 수신될 수 있다. 이러한 컴퓨터 프로그램들은, 실행될 때, 컴퓨터 시스템(600)으로 하여금 여기에서 논의된 것과 같이 본 발명을 구현할 수 있게 해준다. 특히, 컴퓨터 프로그램들은, 실행될 때, 프로세서(604)로 하여금 위에서 논의된 도 5의 흐름도(500)에 도시된 방법의 단계들과 같은 본 발명의 프로세스들을 실시할 수 있게 해준다. 따라서, 이러한 컴퓨터 프로그램들은 컴퓨터 시스템(600)의 제어기(controller)들을 나타낸다. 본 발명이 소프트웨어를 사용하여 구현될 때, 상기 소프트웨어는 컴퓨터 프로그램 제품에 저장될 수 있으며, 착탈식 저장 드라이브(614), 인터페이스(620), 하드 드라이브(612) 또는 통신 인터페이스(624)를 사용하여 컴퓨터 시스템(600)에 로딩될 수 있다.
본 발명은 또한 임의의 컴퓨터 사용가능 매체에 저장된 소프트웨어를 포함하는 컴퓨터 프로그램 제품에 관한 것이다. 그러한 소프트웨어는, 하나 이상의 데이터 프로세싱 디바이스에서 실행될 때, 데이터 프로세싱 디바이스(들)로 하여금 여기에서 설명된 것과 같이, 또는 위에서 지적한 바와 같이, 컴퓨팅 디바이스들(예를 들어, ASIC 또는 프로세서)의 신세시스 및/또는 제조가 여기에서 설명된 본 발명의 실시예들을 수행할 수 있게 해준다. 본 발명의 실시예들은 현재 알려져 있는 또는 미래에 사용될 임의의 컴퓨터-사용가능 또는 판독가능 매체를 사용한다. 컴퓨터 사용가능 매체들의 예는 제1 저장 디바이스들(예를 들어, 임의의 타입의 랜덤 액세스 메모리), 제2 저장 디바이스들(예를 들어, 하드 드라이브, 플로피 디스크, CD ROM, ZIP 디스크, 테잎, 자기 저장 매체, 광학 저장 매체, MEMS, 나노기술 저장 디바이스 등), 및 통신 매체(예를 들어, 유선 및 무선 통신 네트워크, LAN(local area networks), WAN(wide are networks), 인트라넷 등)를 포함하나 이에 국한되지는 않는다.
애플리케이션-레벨 구현(APPLICATION-LEVEL IMPLEMENTATION)
도 7은 본 발명의 실시예에 따라, 그래픽 애플리케이션들(702)이 여기에서 개시된 그래픽 하드웨어와 상호작용하게 동작할 수 있도록 하는 다양한 추상화 층들을 도시하는 도면(700)이다. 애플리케이션(702)은 그래픽 API들(704) 및 운영 시스템("OS") API들(706)을 포함하는 다수의 애플리케이션 프로그래밍 인터페이스들("API들")에 메시지를 송신할 수 있다. 그래픽 API들(704)은, 예를 들어, Microsoft Corporation(Redmond, Washington)의 Microsoft DirectX 10, 또는 Silicon Graphics, Inc(Sunnyvale, California)의 Open Graphics Library("OpenGL")를 포함한다.
다양한 API들은 또한 그래픽 하드웨어 제조사에 의해 일반적으로 제공되는 추상화 계층과 상호작용하여 특정 그래픽 하드웨어, 즉 그래픽 하드웨어 드라이버들(708)과 상호작용할 수 있다. 다양한 통신 레벨들이 운영 시스템 커널(710)에 의해 수신되며, 상기 운영 시스템 커널(710)은 적절한 메시지들을 그래픽 하드웨어(712)에 송신한다.
본 발명의 실시예에 따르면, 앞에서 언급된 도 3의 그래픽 파이프라인(300)이 그래픽 하드웨어(712) 내에 구현된다. 본 발명의 추가적인 실시에에 따라, 그래픽 하드웨어 드라이버들(708) 및 그래픽 API(704)는 그래픽 파이프라인(300)의 테셀레이션 특징들을 사용하도록 최적화된다.
본 발명의 다양한 실시예들이 위에서 기술되었지만, 이것들은 단지 예시로서 제시되었으며, 본 발명이 상기 실시예들에 국한되지 않는다는것이 이해되어야 한다. 당업자는 첨부된 청구항들에 정의된 것과 같은 본 발명의 정신 및 범주로부터 벗어남 없이 형태 및 세부사항들에 있어서 다양한 변형이 이루어질 수 있다는 것이 이해될 것이다. 본 발명은 이 예들에 국한된 것이 아님이 이해되어야 한다. 본 발명은 본 명세서에서 설명된 것과 같이 동작하는 임의의 엘리먼트들에 적용가능하다. 따라서, 본 발명의 폭 및 범위는 위에서 설명된 예시적인 실시예들 중 임의의 것에 의해 제한되어서는 안되며, 첨부의 청구항들 및 그 등가에 의해서만 정의된다.

Claims (22)

  1. 테셀레이션된 프리미티브 데이터(tessellated primitive data)를 기하 셰이더(geometry shader)에 제공하는 방법으로서,
    테셀레이션 엔진(tessellation engine)에서, 본래의 버텍스들의 세트(original set of vertices) 및 본래의 연결 데이터의 세트(original set of connectivity data)에 근거하여 테셀레이션된 버텍스들의 세트 및 계산된 연결 데이터의 세트를 계산하는 단계와,
    버텍스 셰이더(vertex shader)에서, 상기 본래의 버텍스들의 세트 및 상기 테셀레이션된 버텍스들의 세트에 근거하여 계산된 버텍스 데이터(computed vertex data)를 생성하는 단계와;
    상기 기하 셰이더에서, 상기 계산된 연결 데이터의 세트를 수신하는 단계와;
    상기 기하 셰이더에서, 상기 계산된 연결 데이터의 세트에 근거하여 상기 계산된 버텍스 데이터의 세브세트를 요청하는 단계와; 그리고
    상기 계산된 버텍스 데이터의 서브세트에 의해 정의된 프리미티브들을 처리하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1 항에 있어서,
    상기 버텍스들의 세트가 임계값에 도달하지 않으면 표면 데이터 출력(surface data output)을 처리하기 위한 상기 테셀레이션 엔진을 사용을 디스에이블링하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제2 항에 있어서,
    상기 임계값은 뷰잉 면(viewing plane)으로부터의 거리에 의해 정의되는 것을 특징으로 하는 방법.
  4. 제3 항에 있어서,
    상기 임계값은 뷰잉 윈도우(viewing window)의 사이즈에 근거하여 조정되는 것을 특징으로 하는 방법.
  5. 제1 항에 있어서,
    상기 버텍스 셰이더 내의 평가 셰이더(evaluation shader)에서 상기 계산된 버텍스 데이터를 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제5 항에 있어서,
    상기 계산된 연결 데이터의 세트에 근거하여 상기 계산된 버텍스 데이터의 서브세트를 요청하는 단계는, 상기 평가 셰이더로부터 상기 계산된 버텍스 데이터의 서브세트를 요청하는 것임을 특징으로 하는 방법.
  7. 테셀레이션된 프리미티브 데이터를 기하 셰이더에 제공하기 위한 그래픽 프로세싱 유닛으로서, 상기 그래픽 프로세싱 유닛은,
    본래 버텍스들의 세트 및 본래 연결 데이터의 세트에 근거하여 계산된 연결 데이터의 세트 및 테셀레이션된 버텍스들의 세트를 계산하기 위한 테셀레이션 엔진과;
    상기 본래 버텍스들의 세트 및 상기 테셀레이션된 버텍스들의 세트에 근거하여 계산된 버텍스 데이터를 생성하기 위한 버텍스 셰이더와; 그리고
    상기 계산된 연결 데이터의 세트를 수신하고, 상기 계산된 연결 데이터의 세트에 근거하여 상기 계산된 버텍스 데이터의 서브세트를 요청하고, 그리고 상기 계산된 버텍스 데이터의 서브세트에 의해 정의된 프리미티브들을 처리하기 위한 기하 셰이더를 포함하는 것을 특징으로 하는 그래픽 프로세싱 유닛.
  8. 제7 항에 있어서,
    상기 테셀레이션 엔진은 본래 버텍스들의 세트가 임계값에 도달하지 않으면 디스에이블되는 것을 특징으로 하는 그래픽 프로세싱 유닛.
  9. 제8 항에 있어서,
    상기 임계값은 뷰잉 면으로부터의 거리에의해 정의되는 것을 특징으로 하는 그래픽 프로세싱 유닛.
  10. 제9 항에 있어서,
    상기 임계값은 뷰잉 윈도우의 사이즈에 근거하여 조정되는 것을 특징으로 하는 그래픽 프로세싱 유닛.
  11. 제7 항에 있어서,
    상기 버텍스 셰이더는 평가 셰이더에서 상기 계산된 버텍스 데이터를 저장하도록 동작가능한 것을 특징으로 하는 그래픽 프로세싱 유닛.
  12. 제11 항에 있어서,
    상기 기하 셰이더는 상기 평가 셰이더로부터 상기 계산된 버텍스 데이터의 서브세트를 요청하도록 동작가능한 것을 특징으로 하는 그래픽 프로세싱 유닛.
  13. 프로세서로 하여금 기하 셰이더에 테셀레이션된 프리미티브 데이터를 제공할 수 있게 해주기 위한 컴퓨터 프로그램 로직이 기록된 컴퓨터 사용가능 매체를 포함하는 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 로직은 데이터 및 명령어들을 포함하며, 상기 데이터 및 명령어들은 상기 프로세서로 하여금,
    본래의 버텍스들의 세트 및 본래의 연결데이터의 세트에 근거하여 테셀레이션 엔진에서 테셀레이션된 버텍스들의 세트 및 계산된 연결 데이터의 세트를 계산하고,
    상기 본래 버텍스들의 세트 및 상기 테셀레이션된 버텍스들의 세트에 근거하여 버텍스 셰이더에서 계산된 버텍스 데이터를 생성하고,
    기하 셰이더에서 상기 계산된 연결 데이터의 세트를 수신하고,
    상기 기하 셰이더에서, 상기 계산된 연결 데이터의 세트에 근거하여 상기 계산된 버텍스 데이터의 서브세트를 요청하고, 그리고
    상기 계산된 버텍스 데이터의 서브세트에의해 정의된 프리미티브들을 처리할 수 있게 해주는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  14. 제13 항에 있어서,
    상기 버텍스들의 세트가 임계값에 도달하지 않으면, 표면 데이터 출력을 처리하기 위한 상기 테셀레이션 엔진의 사용을 디스에이블링하게 하는 것을 특징으로 하는 컴퓨터 프로그램 로직.
  15. 제14 항에 있어서,
    상기 임계값은 뷰잉 면으로부터의 거리에 의해 정의되는 것을 특징으로 하는 컴퓨터 프로그램 로직.
  16. 제15 항에 있어서,
    상기 임계값은 뷰잉 윈도우의 사이즈에 근거하여 조정되는 것을 특징으로 하는 컴퓨터 프로그램 로직.
  17. 제13 항에 있어서,
    상기 프로세서로 하여금 상기 버텍스 셰이더 내의 평가 셰이더에 상기 계산된 버텍스 데이터를 저장할 수 있게 해주는 데이터 및 명령어들을 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램 로직.
  18. 제17 항에 있어서,
    상기 프로세서로 하여금 상기 계산된 버텍스 데이터의 서브세트를 요청할 수 있게 해주는 데이터 및 명령어들은, 상기 프로세서로 하여금 상기 평가 셰이더로부터 상기 계산된 버텍스 데이터의 서브세트를 요청할 수 있게 해주는 데이터 및 명령어들을 포함하는 것을 특징으로 하는 컴퓨터 프로그램 로직.
  19. 제13 항에 있어서,
    상기 데이터 및 명령어들은 하드웨어 기술 언어 데이터 및 명령어들을 포함하는 것을 특징으로 하는 컴퓨터 프로그램 로직.
  20. 그래픽 프로세싱 유닛으로서,
    본래의 버텍스들의 세트 및 본래의 연결 데이터의 세트에 근거하여 테셀레이션된 버텍스들의 세트 및 계산된 연결 데이터의 세트를 계산하는 테셀레이션 엔진과;
    상기 테셀레이션된 버텍스들의 세트 상기 본래의 버텍스들의 세트에 근거하여 계산된 버텍스 데이터를 생성하는 버텍스 셰이더를 포함하는 것을 특징으로 하는 그래픽 프로세싱 유닛.
  21. 제20 항에 있어서,
    상기 계산된 연결 데이터의 세트를 수신하고, 상기 계산된 연결 데이터의 세트에 근거하여 상기 계산된 버텍스 데이터의 서브세트를 요청하고, 그리고 상기 계산된 버텍스 데이터의 서브세트에 의해 정의된 프리미티브들을 처리하는 기하 셰이더를 더 포함하는 것을 특징으로 한느 그래픽 프로세싱 유닛.
  22. 제20 항에 있어서,
    상기 그래픽 프로세싱 유닛은 컴퓨터 판독가능 매체에 저장된 명령어들의 세트를 포함하고, 상기 명령어들은 하드웨어 기술 언어 명령어들을 포함하는 것을 특징으로 하는 그래픽 프로세싱 유닛.
KR1020107027889A 2008-05-29 2009-05-27 기하 셰이더를 사용하는 테셀레이션 엔진을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품 KR20110016938A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US5693608P 2008-05-29 2008-05-29
US61/056,936 2008-05-29

Publications (1)

Publication Number Publication Date
KR20110016938A true KR20110016938A (ko) 2011-02-18

Family

ID=41377428

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107027889A KR20110016938A (ko) 2008-05-29 2009-05-27 기하 셰이더를 사용하는 테셀레이션 엔진을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품

Country Status (6)

Country Link
US (2) US8836700B2 (ko)
EP (1) EP2289000B1 (ko)
JP (1) JP5616333B2 (ko)
KR (1) KR20110016938A (ko)
CN (1) CN102047238B (ko)
WO (1) WO2009145889A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8952962B2 (en) 2011-09-14 2015-02-10 Samsung Electronics Co., Ltd. Graphics processing method and apparatus using post fragment shader

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8810572B2 (en) * 2011-10-31 2014-08-19 Qualcomm Incorporated Tessellation cache for object rendering
KR102109130B1 (ko) 2013-08-12 2020-05-08 삼성전자주식회사 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들
US9679347B2 (en) * 2014-02-18 2017-06-13 Qualcomm Incorporated Shader pipeline with shared data channels
US10134171B2 (en) * 2014-09-29 2018-11-20 Arm Limited Graphics processing systems
US10193824B2 (en) 2015-09-06 2019-01-29 RISC Networks, LLC Systems and methods for intelligent application grouping
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
CN108022202B (zh) * 2017-11-24 2021-03-26 中国航空工业集团公司西安航空计算技术研究所 一种超前消隐几何引擎结构
US11175423B2 (en) * 2019-08-22 2021-11-16 Schlumberger Technology Corporation Real time deformation of seismic slices using programmable shaders
WO2023126957A1 (en) 2021-12-27 2023-07-06 Hindustan Petroleum Corporation Limited Homogenous catalytic composition for improving lpg combustion

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2460700A (en) * 1947-07-01 1949-02-01 Leo Corp Method of operating an internal-combustion engine
USRE25277E (en) * 1954-09-02 1962-10-30 Catalyzed metal fuel
US3446825A (en) * 1966-04-18 1969-05-27 Monsanto Co Substituted pi-allyl palladium chloride complexes
US4295816A (en) * 1977-12-20 1981-10-20 Robinson B Joel Catalyst delivery system
US4382017A (en) * 1980-09-02 1983-05-03 Robinson Charles A Means and method for providing a non-freezing catalyst solution
US4897473A (en) * 1981-05-01 1990-01-30 Union Carbide Chemicals And Plastics Company Inc. Homologation of carbonyloxy containing compounds
US4802335A (en) * 1982-07-29 1989-02-07 Stephen Masiuk Method of and apparatus for improving the efficiency of internal combustion engines
US4665268A (en) * 1982-09-30 1987-05-12 Mobil Oil Corporation Catalytic conversion of methanol to light olefins
US4475483A (en) * 1983-04-15 1984-10-09 Robinson Barnett J Catalyst delivery system
US5749928A (en) * 1984-12-04 1998-05-12 Platinum Plus, Inc. Method for reducing emissions from or increasing the utilizable energy of fuel for powering internal combustion engines
US4892562A (en) * 1984-12-04 1990-01-09 Fuel Tech, Inc. Diesel fuel additives and diesel fuels containing soluble platinum group metal compounds and use in diesel engines
US4811162A (en) * 1987-04-27 1989-03-07 Engelhard Corporation Capacitor end termination composition and method of terminating
US5501714A (en) * 1988-12-28 1996-03-26 Platinum Plus, Inc. Operation of diesel engines with reduced particulate emission by utilization of platinum group metal fuel additive and pass-through catalytic oxidizer
US5034020A (en) * 1988-12-28 1991-07-23 Platinum Plus, Inc. Method for catalyzing fuel for powering internal combustion engines
US5693106A (en) * 1992-07-22 1997-12-02 Platinum Plus, Inc. Platinum metal fuel additive for water-containing fuels
DE3932322A1 (de) * 1989-09-28 1991-04-11 Hoechst Ag Verfahren zur herstellung von gemischen oelloeslicher eisen- und magnesiumsalze gesaettigter aliphatischer monocarbonsaeuren und ihre verwendung
US5212032A (en) * 1991-11-26 1993-05-18 Eastman Kodak Company Moisture stable polyurethane biasable transfer members
US5331924A (en) * 1992-03-12 1994-07-26 Kraus Gregory A Catalytic liquid injection system for emission control
US5449387A (en) * 1992-06-17 1995-09-12 Rhone-Poulenc Chemicals Limited Cerium (IV) catalyst compounds and promoting combustion of hydrocarbon fuels therewith
US5261029A (en) * 1992-08-14 1993-11-09 Sun Microsystems, Inc. Method and apparatus for the dynamic tessellation of curved surfaces
US5732548A (en) * 1994-10-07 1998-03-31 Platinum Plus, Inc. Method for reducing harmful emissions from two-stroke engines
US6139723A (en) * 1996-02-23 2000-10-31 Hydrocarbon Technologies, Inc. Iron-based ionic liquid catalysts for hydroprocessing carbonaceous feeds
US6197366B1 (en) * 1997-05-06 2001-03-06 Takamatsu Research Laboratory Metal paste and production process of metal film
JPH1173527A (ja) * 1997-06-30 1999-03-16 Sun Microsyst Inc グラフィカル・オブジェクトの規則的にタイリングされた表面部分を表現する3次元幾何データの圧縮および伸張
US20050044778A1 (en) * 1997-12-08 2005-03-03 Orr William C. Fuel compositions employing catalyst combustion structure
JP4065933B2 (ja) * 1998-01-12 2008-03-26 独立行政法人産業技術総合研究所 アクロレイン製造用触媒、その製造方法およびアクロレインの製造方法
EP1155051B1 (en) * 1998-12-30 2004-10-13 Union Carbide Chemicals & Plastics Technology Corporation Compositions of preactivated unsupported catalyst having a given concentration and methods of using them
JP3245142B2 (ja) * 2000-01-28 2002-01-07 株式会社ナムコ ゲームシステム及び情報記憶媒体
JP2001250128A (ja) * 2000-03-03 2001-09-14 Namco Ltd ゲームシステム及び情報記憶媒体
US7407905B2 (en) * 2000-06-14 2008-08-05 Battelle Energy Alliance, Llc Method for reactivating catalysts and a method for recycling supercritical fluids used to reactivate the catalysts
FR2813209B1 (fr) * 2000-08-23 2002-11-29 Inst Francais Du Petrole Catalyseur bimetallique supporte comportant une forte interaction entre un metal du groupe viii et de l'etain et son utilisation dans un procede de reformage catalytique
US6597356B1 (en) * 2000-08-31 2003-07-22 Nvidia Corporation Integrated tessellator in a graphics processing unit
US6566295B2 (en) * 2000-11-30 2003-05-20 General Electric Company Method and catalyst system for producing aromatic carbonates
US6776606B2 (en) * 2001-03-02 2004-08-17 Emmissions Technology, Llc Method for oxidizing mixtures
US6986327B2 (en) * 2001-07-11 2006-01-17 Sfa International, Inc. Method of reducing smoke and particulate emissions from steam boilers and heaters operating on liquid petroleum fuels
GB0126663D0 (en) * 2001-11-06 2002-01-02 Oxonica Ltd Cerium oxide nanoparticles
GB0126990D0 (en) * 2001-11-09 2002-01-02 Carroll Robert Method and composition for improving fuel consumption
US6919896B2 (en) 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US8482559B2 (en) 2002-11-04 2013-07-09 Ati Technologies Ulc Method and apparatus for triangle tessellation
US7276094B2 (en) * 2003-11-25 2007-10-02 Ethyl Petroleum Additives, Inc. Mixed metal catalyst additive and method for use in hydrocarbonaceous fuel combustion system
DE102004005997A1 (de) * 2004-02-06 2005-09-01 Hte Ag The High Throughput Experimentation Company Mit Eisenoxid stabilisierter Edelmetall-Katalysator zur Entfernung von Schadstoffen aus Abgasen von Mager-Motoren
US7570267B2 (en) 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7639252B2 (en) * 2004-08-11 2009-12-29 Ati Technologies Ulc Unified tessellation circuit and method therefor
US7584905B2 (en) * 2004-11-08 2009-09-08 Emissions Technology, Inc. Fuel combustion catalyst microburst aerosol delivery device and continuous and consistent aerosol delivery device
US7212204B2 (en) * 2005-01-27 2007-05-01 Silicon Graphics, Inc. System and method for graphics culling
US8111260B2 (en) * 2006-06-28 2012-02-07 Microsoft Corporation Fast reconfiguration of graphics pipeline state
US20080055321A1 (en) * 2006-08-31 2008-03-06 Ati Technologies Inc. Parallel physics simulation and graphics processing
US20080094408A1 (en) * 2006-10-24 2008-04-24 Xiaoqin Yin System and Method for Geometry Graphics Processing
WO2008053597A1 (fr) * 2006-11-01 2008-05-08 Digital Media Professionals Inc. Dispositif pour accélérer le traitement d'un cache de vertex de primitives étendues
US20080277316A1 (en) * 2007-05-07 2008-11-13 Carter Technologies Catalytic conversion of methane and natural gas to condensable hydrocarbons
KR101555070B1 (ko) 2007-05-18 2015-09-22 카나타 케미컬 테크놀로지스 인코포레이티드 암모니아 보란으로부터 수소를 제조하는 방법
US8643644B2 (en) * 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8952962B2 (en) 2011-09-14 2015-02-10 Samsung Electronics Co., Ltd. Graphics processing method and apparatus using post fragment shader

Also Published As

Publication number Publication date
EP2289000A1 (en) 2011-03-02
US20090298674A1 (en) 2009-12-03
WO2009145889A1 (en) 2009-12-03
EP2289000B1 (en) 2018-08-08
CN102047238A (zh) 2011-05-04
US8741798B2 (en) 2014-06-03
US8836700B2 (en) 2014-09-16
EP2289000A4 (en) 2013-02-20
JP5616333B2 (ja) 2014-10-29
US20090295798A1 (en) 2009-12-03
CN102047238B (zh) 2013-10-16
JP2011522322A (ja) 2011-07-28

Similar Documents

Publication Publication Date Title
KR101033779B1 (ko) 확장된 버텍스 캐시를 갖는 그래픽스 프로세싱 유닛을 이용하여 이미지를 프로세싱하는 방법 및 장치
KR20110016938A (ko) 기하 셰이더를 사용하는 테셀레이션 엔진을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품
CN106663333B (zh) 用于滤波的粗略像素遮蔽的方法和装置
TWI646502B (zh) 映射多重速率著色至單一程式之技術
US11657560B2 (en) VRS rate feedback
US9569885B2 (en) Technique for pre-computing ambient obscurance
JP7266021B2 (ja) 可変レートシェーディング
US9153209B2 (en) Method and system for generating a displacement map from a normal map
KR102266962B1 (ko) 그래픽 파이프라인의 메모리 사용 감소를 위한 컴파일러 지원 기술
KR20090079241A (ko) 공유된 산술 논리 유닛을 구비한 그래픽 처리 유닛
US20200380744A1 (en) Variable Rasterization Rate
US20180211434A1 (en) Stereo rendering
US9898838B2 (en) Graphics processing apparatus and method for determining level of detail (LOD) for texturing in graphics pipeline
WO2018140223A1 (en) Stereo rendering
US20240177394A1 (en) Motion vector optimization for multiple refractive and reflective interfaces
KR20180037838A (ko) 텍스쳐를 처리하는 방법 및 장치
US11030791B2 (en) Centroid selection for variable rate shading
US11972518B2 (en) Hybrid binning
US11481967B2 (en) Shader core instruction to invoke depth culling
JP7515008B2 (ja) 深度カリングを呼び出すためのシェーダコア命令
US11900499B2 (en) Iterative indirect command buffers
US20240087078A1 (en) Two-level primitive batch binning with hardware state compression
EP4315258A1 (en) Post-depth visibility collection with two level binning
WO2021262370A1 (en) Fine grained replay control in binning hardware

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination