KR20160003223A - 그래픽 파이프라인을 사용한 2 차원 곡선의 테셀레이션 - Google Patents

그래픽 파이프라인을 사용한 2 차원 곡선의 테셀레이션 Download PDF

Info

Publication number
KR20160003223A
KR20160003223A KR1020157034161A KR20157034161A KR20160003223A KR 20160003223 A KR20160003223 A KR 20160003223A KR 1020157034161 A KR1020157034161 A KR 1020157034161A KR 20157034161 A KR20157034161 A KR 20157034161A KR 20160003223 A KR20160003223 A KR 20160003223A
Authority
KR
South Korea
Prior art keywords
instruction
graphics pipeline
curve
triangles
pan
Prior art date
Application number
KR1020157034161A
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 KR20160003223A publication Critical patent/KR20160003223A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

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

Abstract

그래픽 처리 유닛(GPU) 상에서 실행 중인 그래픽 파이프라인을 사용하여 2차원(2D) 곡선들을 효율적으로 테셀레이트하기 위한 방법들, 시스템들, 및 컴퓨터 저장 매체가 제공된다. 중앙 처리 유닛(CPU)는 하나 이상의 2D 곡선들을 가지는 기하 형태를, 팬 원점과 4 개의 제어점들을 갖는 적어도 하나의 베지어 팬을 가지는 중간 테셀레이션으로 변환한다. 중간 테셀레이션이 그래픽 파이프라인으로 보내진다. 그래픽 파이프라인 내의 헐 쉐이더는, 베지어 팬의 4 개의 제어점들을 포함하는 경계 상자의 폭 또는 높이의 최대값에 기초하여 베지어 팬 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해, 그 곡선을 근사화하도록 구성되어 있다. 그래픽 파이프라인 내의 도메인 쉐이더는 베지어 팬의 곡선을 따라 규정된 삼각형들 각각에 대한 정점 위치를 결정하도록 구성되어 있다.

Description

그래픽 파이프라인을 사용한 2 차원 곡선의 테셀레이션{TESSELLATION OF TWO-DIMENSIONAL CURVES USING A GRAPHICS PIPELINE}
본 발명은 그래픽 파이프라인을 사용한 2 차원 곡선의 테셀레이션에 관한 것이다.
2 차원(2D) 그래픽 라이브러리의 주된 임무들 중 하나는 장면 데이터를 받아서, 원호, 베지어 곡선(Bezier curve), 및 라인 세그먼트(line segment)와 같은 상위 레벨 프리미티브들로 테셀레이트(tessellate)하고, 컴퓨터 디스플레이 상에 출력하기 위해 또는 비트맵 파일 형식으로 저장하기 위해 데이터를 래스터화(rasterize)하는 것이다. 속도를 위해, 그래픽 라이브러리는 렌더링의 일부 스테이지들을 그래픽 처리 유닛(graphics processing unit; GPU)로 오프로딩할 수 있다. 원호 및 베지어 곡선과 같은 기하 형태들은 전형적으로 오프로딩(offloading)에 대해 특정의 난제들을 제기해 왔는데, 그 이유는 GPU가 보통 이러한 기하 형태들을 사용할 수 없거나 이 유형들의 기하 형태들을 높은 픽셀당 비용으로 사용할 수 있기 때문이다. 따라서, 오프로딩 이전에, 중앙 처리 유닛(central processing unit; CPU)는 먼저 원호들 및 베지어 곡선들을 GPU가 처리할 수 있는 하위 레벨 프리미티브들(삼각형 등)로 변환해야만 한다. 이것은 귀중한 CPU 처리 능력을 소비하고 종종 렌더링 프로세스에서 병목 현상을 야기한다.
이 발명의 내용은 이하에서 발명을 실시하기 위한 구체적인 내용에 추가로 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 발명 요지의 주요 특징들 또는 필수적인 특징들을 확인하기 위한 것이 아니며, 청구된 발명 요지의 범주를 정하는 데 보조 수단으로 사용되기 위한 것도 아니다.
본 발명의 실시예들은, 그 중에서도 특히, GPU 상에서 실행 중인 그래픽 파이프라인을 사용하여 2D 곡선들을 효율적으로 테셀레이트하는 시스템들, 방법들, 및 컴퓨터 저장 매체에 관한 것이다. CPU는 하나 이상의 2D 곡선들을 가지는 장면 데이터 및/또는 객체들을 적어도 하나의 베지어 팬(Bezier fan)을 가지는 중간 테셀레이션(intermediate tessellation)으로 변환한다. 중간 테셀레이션이 그래픽 파이프라인으로 송신된다. 그래픽 파이프라인 내의 헐 쉐이더(hull shader)는, 베지어 팬의 제어점(control point)들을 포함하는 경계 상자의 폭 또는 높이의 최대값에 기초하여 베지어 팬 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해, 곡선을 근사화하도록 구성되어 있다. 그래픽 파이프라인 내의 도메인 쉐이더(domain shader)는 베지어 팬의 곡선을 따라 규정된 삼각형들 각각에 대한 정점 위치(vertex position)를 결정하도록 구성되어 있다.
본 발명의 실시예들은 TIR(target independent rasterization)과 결합되어 사용될 수 있다. TIR은 그래픽 파이프라인에서의 래스터화 스테이지 동안 취해지는 픽셀 샘플들의 개수("샘플링 레이트"라고 함)가 렌더링된 영상을 위해 할당된 메모리와 무관하게 명시될 수 있게 한다.
첨부 도면들을 참조하여 이하에서 본 발명에 대해 상세히 기술한다.
도 1은 본 발명의 실시예들을 구현하는 데 사용하기 적당한 예시적인 컴퓨팅 환경의 블록도.
도 2는 본 발명의 실시예들을 구현하는 데 사용하기 적당한 2 차원 곡선들에 대한 테셀레이션 방법을 규정하기 위한 예시적인 컴퓨팅 시스템 아키텍처의 블록도.
도 3은 본 발명의 실시예들을 구현하는 데 사용하기 적당한 하나 이상의 삼각형들 및 하나 이상의 베지어 팬들을 가지는 중간 테셀레이션을 래스터화하는 데 사용하기 위한 그래픽 파이프라인을 나타낸 도면.
도 4는 본 발명의 일 실시예에 따른 베지어 팬을 나타낸 도면.
도 5는 본 발명의 일 실시예에 따른 중간 테셀레이션을 나타낸 도면.
도 6은 본 발명의 일 실시예에 따른, 그래픽 처리 유닛 상에서 실행 중인 그래픽 파이프라인에서 테셀레이트된 중간 테셀레이션을 나타낸 도면.
도 7은 본 발명의 일 실시예에 따른, 베지어 팬의 4 개의 제어점들을 둘러싸고 있는 경계 상자를 나타낸 도면.
도 8은 본 발명의 일 실시예에 따른, 그래픽 처리 유닛 상에서 실행 중인 그래픽 파이프라인에서 테셀레이트된 중간 테셀레이션을 나타낸 도면.
도 9는 본 발명의 일 실시예에 따른, 안티앨리어싱된 2 차원 곡선들을 렌더링하는 예시적인 방법의 흐름도.
도 10은 본 발명의 일 실시예에 따른, 2 차원 곡선을 테셀레이트하라고 그래픽 처리 유닛에 지시하는 예시적인 방법의 흐름도.
법적 요건들을 충족시키기 위해 본 발명의 발명 요지가 본 명세서에 구체적으로 기술되어 있다. 그렇지만, 설명 자체가 이 특허의 범주를 제한하는 것으로 의도되어 있지 않다. 오히려, 발명자들은, 현재 또는 장래의 다른 기술들과 함께, 본 문서에 기술된 단계들과 상이한 단계들 또는 본 문서에 기술된 단계들과 유사한 단계들의 조합들을 포함시키기 위해, 청구된 발명 요지가 다른 방식들로도 구현될 수 있다는 것을 생각하고 있다. 더욱이, "단계" 및/또는 "블록"이라는 용어들이 이용되는 방법들의 상이한 구성요소들을 암시하기 위해 본 명세서에서 사용될 수 있지만, 개별 단계들의 순서가 명확하게 기술되어 있지 않은 한 그리고 그러한 경우를 제외하고는, 이 용어들이 본 명세서에 개시된 다양한 단계들 사이에 임의의 특정의 순서를 암시하는 것으로 해석되어서는 안된다.
본 명세서에 설명된 기술의 다양한 양태들은 일반적으로, 그 중에서도 특히, GPU 상에서 실행 중인 그래픽 파이프라인을 사용하여 2D 곡선들을 효율적으로 테셀레이트하는 시스템들, 방법들, 및 컴퓨터 저장 매체에 관한 것이다. CPU는 하나 이상의 2D 곡선들을 가지는 장면 데이터 객체들을 하나의 팬 원점(fan origin)과 4 개의 기준점들을 갖는 적어도 하나의 베지어 팬을 가지는 중간 테셀레이션으로 변환한다. 중간 테셀레이션이 그래픽 파이프라인으로 송신된다. 그래픽 파이프라인 내의 헐 쉐이더는, 베지어 팬의 4 개의 제어점들을 포함하는 경계 상자의 폭 또는 높이의 최대값에 기초하여 베지어 팬 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해, 곡선을 근사화하도록 구성되어 있다. 그래픽 파이프라인 내의 도메인 쉐이더는 베지어 팬의 곡선을 따라 규정된 삼각형들 각각에 대한 정점 위치를 결정하도록 구성되어 있다.
본 발명의 실시예들은 TIR(target independent rasterization)과 결합되어 사용될 수 있다. TIR은 그래픽 파이프라인에서의 래스터화 스테이지 동안 취해지는 픽셀 샘플들의 개수(”샘플링 레이트”라고 함)가 렌더링된 영상을 위해 할당된 메모리와 무관하게 명시될 수 있게 한다.
그에 따라, 하나의 실시예에서, 본 발명은, 실행될 때, 안티앨리어싱된 2D 곡선들을 렌더링하는 방법을 수행하는 컴퓨터 실행가능 명령어들을 담고 있는 하나 이상의 컴퓨터 저장 매체에 관한 것이다. 본 방법은 장면 데이터를 장면 데이터 내의 객체들로부터 테셀레이트된 기하 형상들의 세트를 포함하는 중간 테셀레이션으로 변환하는 단계를 포함한다. 기하 형상들의 세트는 팬 원점 및 4 개의 제어점들을 가지는 적어도 하나의 베지어 팬을 포함한다. 그래픽 파이프라인 내의 헐 쉐이더를, 그 중에서도 특히, 적어도 하나의 베지어 팬의 4 개의 제어점들을 포함하는 최소 경계 상자의 폭 또는 높이의 최대값에 기초하여 적어도 하나의 베지어 팬의 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해, 곡선을 근사화하도록 구성하는 제1 명령어가 발생된다. 그래픽 파이프라인 내의 도메인 쉐이더를 적어도 하나의 베지어 팬의 곡선을 따라 규정된 개수의 삼각형들 각각에 대한 정점 위치를 결정하도록 구성하는 제2 명령어가 발생된다. 중간 테셀레이션이 그래픽 파이프라인으로 전달된다.
다른 실시예에서, 본 발명은 GPU 상에서 실행 중인 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화하는 방법에 관한 것이고, 여기서 중간 테셀레이션은 팬 원점 및 4 개의 제어점들을 가지는 적어도 하나의 베지어 팬을 포함한다. 본 방법은 컴퓨팅 디바이스의 CPU로부터 중간 테셀레이션을 수신하는 단계 및 그래픽 파이프라인 내의 헐 쉐이더를, 그 중에서도 특히, 적어도 하나의 베지어 팬의 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해, 곡선을 근사화하도록 구성하는 제1 명령어를 수신하는 단계를 포함한다. 헐 쉐이더는, 컴퓨팅 디바이스를 통해, 제1 명령어에 기초하여 구성된다. 그래픽 파이프라인 내의 도메인 쉐이더를 적어도 하나의 베지어 팬의 곡선을 따라 규정된 개수의 삼각형들 각각에 대한 정점 위치를 결정하도록 구성하는 제2 명령어가 발생된다. 도메인 쉐이더는, 컴퓨팅 디바이스를 통해, 제2 명령어에 기초하여 구성된다.
또 다른 실시예에서, 본 발명은 GPU를 제어하기 위한 애플리케이션 프로그램 인터페이스(application program interface; API)를 저장하는 컴퓨터 저장 매체에 관한 것이다. API는, 그 중에서도 특히, 베지어 팬을 규정하는 4 개의 제어점들을 포함하는 최소 경계 상자의 폭 또는 높이의 최대값에 기초하여 적어도 하나의 베지어 팬의 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해, 곡선을 근사화하기 위해 헐 쉐이더 구성요소에 의해 사용되는 파라미터들을 규정하는 세분 인자 속성(subdivision-factor property)을 포함한다. API는 또한 적어도 하나의 베지어 팬의 곡선을 따라 규정된 개수의 삼각형들 각각에 대한 정점 위치를 결정하기 위해 도메인 쉐이더 구성요소에 의해 사용되는 파라미터들을 규정하는 위치 인자 속성(position-factor property)을 포함한다.
본 발명의 실시예들의 개요를 간략하게 기술하였으며, 본 발명의 실시예들을 구현하는 데 사용하기 적당한 예시적인 운영 환경이 기술된다. 도면들을 전반적으로 참조하고 상세하게는 도 1을 먼저 참조하면, 본 발명의 실시예들을 구현하기 위한 예시적인 운영 환경이 도시되어 있으며 전체로서 컴퓨팅 디바이스(100)로서 나타내어져 있다. 컴퓨팅 디바이스(100)는 적당한 컴퓨팅 환경의 일례에 불과하고, 본 발명의 용도 또는 기능의 범주에 관한 어떤 제한을 암시하려고 의도되어 있지 않다. 컴퓨팅 디바이스(100)가 예시된 구성요소들 중 임의의 것 또는 예시된 구성요소들의 임의의 조합에 관한 어떤 의존관계 또는 요구사항을 갖는 것으로 해석되어서도 안된다.
본 발명은 일반적으로 컴퓨터 또는 다른 기계[PDA(personal data assistant) 또는 다른 핸드헬드 디바이스 등]에 의해 실행되는 프로그램 구성요소들과 같은 컴퓨터 실행가능 명령어들을 비롯한 컴퓨터 코드 또는 기계 사용 가능 명령어들과 관련하여 기술될 수 있다. 일반적으로, 루틴, 프로그램, 객체, 구성요소, 데이터 구조 등을 비롯한 프로그램 구성요소들은 특정의 작업들을 수행하거나 특정의 추상 데이터 형식들을 구현하는 코드를 지칭한다. 본 발명의 실시예들은 핸드헬드 디바이스, 가전 제품, 범용 컴퓨터, 특수 컴퓨팅 디바이스(specialty computing device) 등을 비롯한 각종의 시스템 구성들에서 실시될 수 있다. 본 발명의 실시예들은 또한 작업들이 통신 네트워크를 통해 연결되어 있는 원격 처리 디바이스들에 의해 수행되는 분산 컴퓨팅 환경들에서도 실시될 수 있다.
계속하여 도 1을 참조하면, 컴퓨팅 디바이스(100)는 메모리(112), 하나 이상의 프로세서들(114), 하나 이상의 제시 구성요소(presentation component)들(116), 입출력(I/O) 포트들(118), I/O 구성요소들(120), 예시적인 전원(122), 및 GPU(124)를 직접적으로 또는 간접적으로 결합시키는 버스(110)를 포함한다. 버스(110)는 하나 이상의 버스들일 수 있는 것(주소 버스, 데이터 버스, 또는 이들의 조합 등)을 나타낸다. 도 1의 다양한 블록들이 명확함을 위해 선으로 나타내어져 있지만, 실제로는, 다양한 구성요소들을 구분하는 것이 그렇게 명확하지 않으며, 비유적으로 말하면, 이 선들이 보다 정확하게는 애매모호하다. 예를 들어, 디스플레이 디바이스와 같은 제시 구성요소(presentation component)를 I/O 구성요소(120)라고 생각할 수 있다. 또한, CPU들 및 GPU들이 메모리를 가진다. 도 1의 도면은 본 발명의 하나 이상의 실시예들과 관련하여 사용될 수 있는 예시적인 컴퓨팅 디바이스를 나타낸 것에 불과하다. "워크스테이션", "서버", "랩톱", "핸드헬드 디바이스” 등과 같은 카테고리들 간에 구별을 두지 않는데, 그 이유는 이들 모두가 도 1의 범주 내에 속하는 것으로 생각되고 "컴퓨터" 또는 "컴퓨팅 디바이스"를 지칭하기 때문이다.
컴퓨팅 디바이스(100)는 전형적으로 각종의 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨팅 디바이스(100)에 의해 액세스 가능한 임의의 이용 가능 매체일 수 있고, 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체 둘 다를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하고; 컴퓨터 저장 매체는 신호 자체를 포함하지 않는다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보를 저장하기 위해 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광 디스크 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 디바이스, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨팅 디바이스(100)에 의해 액세스될 수 있는 임의의 다른 매체가 있지만, 이들로 제한되지 않는다. 통신 매체는, 다른 한편으로, 컴퓨터 판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터를 반송파 또는 다른 전송 메커니즘과 같은 피변조 데이터 신호(modulated data signal)에 구현하고 임의의 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는 신호의 특성 세트 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정되거나 변경된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 연결(direct-wired connection)과 같은 유선 매체와, 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기한 것들 중 임의의 것의 조합들도 컴퓨터 판독 가능 매체의 범주 내에 포함되어야 한다.
메모리(112)는 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 메모리(112)는 이동식, 비이동식, 또는 이들의 조합일 수 있다. 예시적인 메모리는 고상 메모리(solid-state memory), 하드 드라이브, 광 디스크 드라이브 등을 포함한다. 컴퓨팅 디바이스(100)는 버스(110), 메모리(112) 또는 I/O 구성요소들(120)과 같은 다양한 엔터티들로부터 데이터를 판독하는 하나 이상의 프로세서들(114)을 포함한다. 제시 구성요소(들)(116)는 사용자 또는 다른 디바이스에 데이터 표시(data indication)를 제시한다. 예시적인 제시 구성요소들(116)은 디스플레이 디바이스, 스피커, 인쇄 구성요소, 진동 구성요소 등을 포함한다. I/O 포트들(118)은 컴퓨팅 디바이스(100)가 I/O 구성요소들(120)을 비롯한 다른 디바이스들(이들 중 일부는 내장되어 있을 수 있음)에 논리적으로 결합될 수 있게 한다. 예시적인 I/O 구성요소들(120)은 마이크, 조이스틱, 게임 패드, 위성 안테나, 카메라, 스캐너, 프린터, 무선 디바이스 등을 포함한다. 예시적인 I/O 구성요소들(120)과의 상호작용은 터치, 음성, 제스처 등을 통할 수 있다.
컴퓨팅 디바이스(100)의 구성요소들은 영상 처리에서 사용될 수 있다. 예를 들어, 컴퓨팅 디바이스(100)는 원시 영상을 처리하여 그에 다양한 효과들 및 조절들을 적용하는, 도 3의 그래픽 파이프라인(300)과 유사한, 그래픽 파이프라인을 구현하는 데 사용될 수 있다. 그래픽 파이프라인은 디지털 영상에 대해 수행되는 일련의 동작들을 포함한다. 이 파이프라인들은 일반적으로, 이용 가능한 하드웨어를 이용하면서, 디지털 영상의 효율적인 처리를 가능하게 하도록 설계되어 있다.
그래픽 파이프라인을 구현하기 위해, GPU(124) 상의 하나 이상의 절차적 쉐이더(procedural shader)들이 이용된다. 절차적 쉐이더들은 그래픽 데이터에 대해 특수 연산들을 수행하기 위한 GPU(124)의 특수 처리 서브유닛들이다. 절차적 쉐이더의 일례는, 일반적으로 2D 곡선들(예를 들어, 베지어 팬 등)을 처리하는 헐 쉐이더(126)이다. 예를 들어, 헐 쉐이더(126)는 2D 곡선을 규정하는 제어점들을 둘러싸는 최소 경계 상자와 연관된 치수에 기초하여 2D 곡선을 규정된 개수의 삼각형들로 세분하는 것에 관련된 계산들을 적용할 수 있다. 절차적 쉐이더의 다른 예는 도메인 쉐이더(128)이다. 예를 들어, 헐 쉐이더(126)의 출력은 도메인 쉐이더(128)로 전달되고, 도메인 쉐이더(128)가 다시 2D 곡선을 따라 규정된 개수의 삼각형들 각각에 대한 정점 위치를 규정하기 위해 계산들을 적용한다. 정점 쉐이더(vertex shader) 및 픽셀 쉐이더(pixel shader)와 같은 다른 절차적 쉐이더들이 또한 이용되고; 이 쉐이더들은 도 3과 관련하여 이하에서 더 상세히 설명될 것이다. 절차적 쉐이더가 그의 동작들을 마친 후에, 정보가 GPU 버퍼(130)에 위치될 수 있다. 정보가 접속된 디스플레이 디바이스 상에 제시될 수 있거나, 추가의 동작들을 위해 다시 호스트로 송신될 수 있다.
GPU 버퍼(130)는 처리된 장면 데이터가 저장될 수 있는 GPU(124) 상의 저장 위치를 제공한다. 장면 데이터와 관련하여 다양한 처리 동작들이 수행되기 때문에, 데이터가 GPU 버퍼(130)로부터 액세스되고, 변경되며, 이어서 버퍼(130) 상에 다시 저장될 수 있다. GPU 버퍼(130)는 처리 중인 데이터가, 그래픽 파이프라인에 의해 변환되는 동안, GPU(124) 상에 남아 있을 수 있게 한다. 데이터를 GPU(124)로부터 메모리(112)로 전달하는 일은 시간이 많이 걸리기 때문에, 처리 동작들이 완료될 때까지 데이터가 GPU 버퍼(130) 상에 남아 있는 것이 바람직할 수 있다.
헐 쉐이더(126) 및 도메인 쉐이더(128)와 관련하여, 명령어들을 헐 쉐이더(126) 및 도메인 쉐이더(128)로 다운로드하는 것에 의해 특수 기능이 달성될 수 있다. 게다가, 많은 상이한 동작들의 기능이 픽셀 쉐이더 및 래스터라이저(rasterizer)와 같은 다른 구성요소들에 맞게 조정된 명령어 세트에 의해 제공될 수 있다. 예를 들어, 부정(negating), 재매핑(remapping), 바이어싱(biasing), 및 다른 기능이 많은 그래픽 애플리케이션들에 유용하다. GPU(124) 상의 헐 쉐이더(126) 및 도메인 쉐이더(128)를 2D 곡선들을 처리하도록 프로그램할 수 있는 것은 GPU(124)의 병렬 아키텍처를 이용하는 것에 의해 달성되는 처리 속도로 인해 그래픽 연산들에 유리하다. 이 특수 명령어 세트는 개발을 용이하게 하고 성능을 향상시키는 것에 의해 가치를 부가할 수 있다. 쉐이더들(126 및 128)의 명령어 개수 한계(instruction count limit) 및 다른 하드웨어 제한들이 초과되지 않는 것으로 가정하면, 이 명령어들을 실행하는 것에 의해, 각종의 기능들이 헐 쉐이더(126) 및 도메인 쉐이더(128)에 의해 수행될 수 있다. 헐 쉐이더(126), 도메인 쉐이더(128), 및 다른 구성요소들은 하나 이상의 API(application program interface)들을 통해 명령어들을 수신할 수 있다.
도 2를 참조하면, 본 발명의 실시예들에 대해 사용하기 적당한 예시적인 컴퓨팅 시스템 아키텍처(200)를 나타내는 블록도가 예시되어 있다. 도 2에 도시된 컴퓨팅 시스템 아키텍처(200)는 하나의 적당한 컴퓨팅 시스템의 일례에 불과하고, 본 발명의 용도 또는 기능의 범주를 제한하지 않는다. 컴퓨팅 시스템 아키텍처(200)가 모듈들/구성요소들 중 임의의 하나의 모듈/구성요소 또는 그들의 임의의 조합에 관련된 어떤 의존관계 또는 요구사항을 갖는 것으로 해석되어서도 안된다.
컴퓨팅 시스템 아키텍처(200)는 컴퓨팅 디바이스(206) 및 디스플레이(216)를 포함한다. 컴퓨팅 디바이스(206)는 영상 모듈(208), GPU 드라이버(210), API 모듈(212), 및 운영 체제(214)를 포함한다. 컴퓨팅 디바이스(206)는, 예를 들어, 도 1을 참조하여 앞서 기술한 컴퓨팅 디바이스(100)와 같은, 임의의 유형의 컴퓨팅 디바이스일 수 있다. 제한이 아닌 단지 예로서, 컴퓨팅 디바이스(206)는 개인용 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 핸드헬드 디바이스, 모바일 핸드셋(mobile handset), 소비자 전자 디바이스(consumer electronic device) 등일 수 있다.
영상 모듈(208)은 렌더링될 객체 또는 장면에 대한 데이터를 전송한다. 영상 모듈(208)은 객체들 또는 장면들을 렌더링하는 컴퓨터 프로그램일 수 있다. 렌더링될 객체들 또는 장면들은 비디오 게임 영상, 비디오 클립, 영화 영상, 및 정적 화면 영상(static screen image)을 포함할 수 있지만, 이들로 제한되지 않는다. 객체들은 3 차원 또는 2 차원일 수 있다. API 모듈(212)은 영상 모듈(208)과 같은 컴퓨터 프로그램들에 의해 행해지는 요청들을 지원하기 위해 운영 체제(214)에 의해 제공될 수 있는 인터페이스이다. Direct3D® 및 OpenGL®은 영상 모듈(208)의 요청들을 지원하는 API들의 예들이다. 디바이스(206)는 디스플레이 디바이스(216)와 통신한다.
영상 모듈(208)은 그래픽 파이프라인에 있는 하나 이상의 구성요소들에 대한 구성 명령어들을 제공할 수 있다. 명령어들이 또한 운영 체제(214)에 의해 제공될 수 있다. 명령어들은 API 모듈(212)로 전달될 수 있고, API 모듈(212)은 GPU 드라이버들(210)의 기능들을 영상 모듈(208)에 노출시킨다. API 모듈(212)은, 수신된 명령어들에 기초하여, GPU 드라이버들(210)에서의 기능들을 구성할 수 있다. 나중에 더 상세히 설명되는 바와 같이, API 모듈(212)은, 그 중에서도 특히, 2D 곡선을 규정하는 제어점들을 포함하는 최소 경계 상자의 폭 또는 높이의 최대값에 기초하여 2D 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해, 곡선을 근사화하기 위해 도 1의 헐 쉐이더(126)와 같은 헐 쉐이더에 의해 사용되는 파라미터들을 규정하는 세분 인자 속성을 가진다. API 모듈(212)은 또한 2D 곡선을 따라 규정된 개수의 삼각형들 각각에 대한 정점 위치를 결정하는 것에 의해 2D 곡선을 위치시키기 위해, 도 1의 도메인 쉐이더(128)와 같은 도메인 쉐이더에 의해 사용되는 파라미터들을 규정하는 위치 인자 속성을 가질 수 있다. 그에 부가하여, API 모듈(212)은 렌더링된 영상에 할당된 GPU 상의 메모리의 양을 규정하는 렌더링 대상 저장 속성(render-target storage property) 및 래스터라이저 구성요소에 의해 사용되는 샘플링 레이트를 규정하는 샘플링 레이트 속성(sampling-rate property)을 가질 수 있다. 영상 모듈(208)은 프레임마다 이 속성들에 대한 명령어들을 제공하거나 단일의 장면 또는 객체를 렌더링하는 동안 이 기능들을 여러 번 변경할 수 있다.
도 3을 참조하면, 예시적인 그래픽 파이프라인(300)이 도시되어 있다. 그래픽 파이프라인(300)은 장면 데이터를 디스플레이 디바이스 상에 디스플레이될 수 있는 데이터의 래스터화된 비트맵 표현들[커버리지 마스크(coverage mask) 또는 렌더링된 영상이라고도 알려져 있음]로 변환하기 위한 스테이지들을 포함한다. 그래픽 파이프라인(300)은 입력 어셈블러(input assembler)(310), 정점 쉐이더(312), 헐 쉐이더(314), 테셀레이터(tessellator)(316), 도메인 쉐이더(318), 기하 형태 쉐이더(geometry shader)(320), 래스터라이저(324), 픽셀 쉐이더(326), 및 출력 병합기(output merger)(328)를 포함한다. 그래픽 파이프라인(300)에 의해 생성되는 렌더링된 영상은 렌더링된 영상을 위해 할당된 GPU 버퍼(330)에 기입될 수 있다[예컨대, 그래픽 파이프라인(300)과 GPU 버퍼(330)를 연결시키는 화살표들로 나타내어져 있음]. 도 3에 도시된 그래픽 파이프라인(300)은 예시적인 것이고, 부가 구성요소들이 추가될 수 있거나, 구성요소들이 제거될 수 있다.
입력 어셈블러(310)는 메모리[예컨대, GPU 버퍼(330)]로부터 정점들은 물론, 베지어 팬들과 연관된 제어점들 및 팬 원점들을 판독하고, 이 데이터 점들(예컨대, 삼각형들 및 베지어 팬들의 세트)로부터 기하 형태들을 형성하며, 파이프라인 작업 항목들을 생성한다. 각각의 프리미티브 세트(예컨대, 삼각형들 대 베지어 팬들)는 그래픽 파이프라인(300)의 개별적인 패스(pass)로서 취급된다. 그렇지만, 효율을 위해, 다수의 기하 형태들로부터의 유사한 프리미티브들이 그래픽 파이프라인(300) 상의 단일의 패스에서 한꺼번에 처리될 것이다.
삼각형 프리미티브들은 정점 쉐이더(312) 및 픽셀 쉐이더(326)를 사용하여 래스터화된다. 정점 쉐이더(312)는 객체들의 정점 데이터에 대해 수학적 연산들을 수행함으로써 3-D 환경에서 객체들에 특수 효과들을 추가하는 데 사용되는 그래픽 처리 함수이다. 기하 형태 쉐이더(320)는 그래픽 파이프라인(300)의 시작 단계로 송신된 그 프리미티브들로부터 점, 선, 및 삼각형과 같은 새로운 그래픽 프리미티브들을 생성한다. 래스터라이저(324)는, 디스플레이 또는 파일로 출력하기 위해, 장면 데이터를 래스터 영상(예컨대, 픽셀들)으로 변환한다. 래스터라이저(324)는 픽셀당 몇 개의 서브픽셀들로 장면 데이터를 샘플링할 수 있다. 픽셀 쉐이더(326)는 보통 영상에 효과(예를 들어, 사실주의 효과, 범프 매핑(bump mapping) 효과, 그림자 효과, 안티앨리어싱 효과, 및 폭발 효과)를 적용하기 위해 픽셀 색상을 조작하는 역할을 한다. 픽셀마다 효과들을 계산하는 것은 그래픽 함수이다. 출력 병합기(328)는 블렌딩(blend), 깊이(depth) 및 스텐실(stencil) 연산들을 수행한다. 출력 병합기(328)에 의해 생성되는 렌더링된 영상은 GPU 버퍼(330)에 기입된다.
베지어 팬 프리미티브들이, 앞서 개략적으로 기술된 다른 쉐이더들 및/또는 구성요소들에 부가하여, 헐 쉐이더(314), 테셀레이터(316), 및 도메인 쉐이더(318)를 사용하여 래스터화된다. 이하에서 더 상세히 기술될 것인 바와 같이, 헐 쉐이더(314)는, 그 중에서도 특히, 베지어 팬이 변형된 삼각형으로서 취급될 것임을 명시하고, 변형된 삼각형의 내부를 하나 이상의 삼각형들 및 곡선 세그먼트(curve segment)로 분할하며, 곡선 세그먼트가 어떻게 세분될 것인지를 명시하는 것에 의해 곡선 세그먼트를 근사화시킨다. 예를 들어, 헐 쉐이더(314)는 베지어 팬의 제어점들을 둘러싸는 경계 상자의 치수에 기초하여 곡선 세그먼트를 근사화시키는 데 사용될 삼각형들의 개수를 명시한다. 테셀레이터(316)는 헐 쉐이더(314)에 의해 명시된 파라미터들에 기초하여 베지어 팬의 테셀레이션을 수행한다.
테셀레이터(316)의 출력은 도메인 쉐이더(318)로 전달된다. 도메인 쉐이더(318)는 또한, 헐 쉐이더(314)로부터 직접, 베지어 팬과 연관된 적어도 4 개의 제어점들 및 팬 원점을 입력으로서 수신한다. 도메인 쉐이더(318)는 예를 들어, 번스타인 다항식(Bernstein polynomial)을 사용해 이 값들을 처리하여, 베지어 팬의 곡선 세그먼트를 따라 삼각형들 각각에 대한 정점 위치를 출력한다. 이와 같이, 상위 레벨에서, 헐 쉐이더(314)는 2D 곡선을 가지는 기하 형태의 전체적인 형상을 기술하는 데 사용되는 파라미터들을 명시하고, 도메인 쉐이더(318)는 기하 형태를 위치시킨다.
이제부터 도 4를 참조하면, 베지어 팬의 예시가 도시되어 있고, 전체로서 참조번호(400)로 참조된다. 베지어 팬(400)은 팬 원점 O라고 하는 단일의 정점(410), 및 팬 윤곽(fan contour)(411)이라고 하는 3차 베지어(cubic Bezier)에 의해 규정된다. 도 4에 도시된 바와 같이, 팬 윤곽(411)은 점들 (t, v) = B(i) * v + O * (1 - v); 0 ≤≤ t, v ≤≤ 1 모두를 포함하고, 여기서 B(t)는 [0, 1] 구간에 걸쳐[예컨대, 점(412)과 점(414) 사이에서] 베지어 팬의 파라미터화(parameterization)이고, O는 팬 원점(410)이다. 도 4에서 보는 바와 같이, 변수 t는 제1 점[점(416)]이 베지어 곡선을 따라 얼마나 멀리 위치되어 있는지를 기술하고, 변수 v는 제2 점[점(418)]이 팬 원점 O와 제1 점(416)을 연결시키는 선을 따라 있는 거리를 기술한다.
CPU가 객체를 받고 객체를 베지어 팬(400) 및 삼각형들과 같은 상위 레벨 프리미티브들을 가지는 중간 테셀레이션으로 테셀레이트한 후에 도 4에 도시된 베지어 팬(400)이 생성된다. 예를 들어, 도 5에 도시된 객체(510)와 같은 객체와 관련하여, CPU는 객체(510)의 경계 상자의 중심을 도형 원점(figure origin)(512)으로서 선택한다. 객체(510)의 각각의 세그먼트가 이어서 “이동(walk)”된다. 라인 세그먼트를 만날 때, 라인 끝점들 및 도형 원점(512)에 의해 규정되는 정점들을 갖는 삼각형이 출력된다. 이것은 도 5의 삼각형들(514, 516, 및 518)에 의해 도시되어 있다. 베지어 세그먼트를 만날 때, 베지어 곡선 자체를 팬 윤곽으로서 그리고 도형 원점(512)을 팬 원점으로서 사용하여 베지어 팬이 출력된다. 도 5는 2 개의 베지어 팬들(520 및 522)을 도시하고 있다. 이러한 방식으로 생성되는 베지어 팬들은 팬 원점과 4 개의 제어점들의 세트로서 규정되거나 인코딩될 수 있다. 예를 들어, 베지어 팬(520)은 팬 원점으로서의 도형 원점(512) 및 제어점들(524, 526, 528 및 530)을 사용하여 인코딩될 수 있다.
상기 프로세스로부터 얻어지는 베지어 팬들은 자체 교차(self-intersecting)하고 프리미티브들이 중복될 수 있다. 이것은, 팬들이 자체 교차하지 않고 프리미티브들이 중복되지 않도록 하기 위해, CPU가 베지어 팬들을 추가로 세분하는 것에 의해 처리될 수 있다. 대안적으로, 얻어진 커버리지 마스크의 임의의 부분이 중복되는 경우, 커버리지 마스크가 먼저 XOR 논리 블렌딩(XOR logical blend)에 의해 중간 비트맵으로 렌더링될 수 있다. 도 5에 도시된 중간 테셀레이션이 3차 베지어 팬을 포함하지만, 본 발명의 실시예들은 그래픽 파이프라인을 통한 부가의 패스들의 대가로 원호 및 2차 베지어(quadratic Bezier)와 같은 부가의 세그먼트 유형들을 지원하도록 확장될 수 있다. 대안의 실시예에서, N 개의 세그먼트 유형들을 가지는 객체들이 삼각형들에 대응하는 N 개의 프리미티브 세트 및 N-1 개의 팬 유형 세트로 세분될 수 있을 것이고, 팬 윤곽들은 대응하는 유형의 세그먼트에 의해 규정된다.
이제 도 6을 참조하면, 도 6은 도 3의 헐 쉐이더(314)와 같은 헐 쉐이더에 의해 처리된 후의 베지어 팬(600)을 도시한 것이다. 도 5와 관련하여 앞서 설명된 바와 같이, 헐 쉐이더는 베지어 팬(600)을 규정하는 하나의 팬 원점(610) 및 4 개의 제어점들(612, 614, 616, 및 618)을 입력으로서 수신한다. 헐 쉐이더는 베지어 팬(600)을 처리하기 위해 파라미터 세트를 이용한다. 파라미터 세트는
도메인(Domain): "tri"
분할(Partitioning): "integer"
출력 토폴로지(Output topology): "triangle_cw"
SV_TessFactor: {1, 1, contourTessellationFactor}
SV_InsideTessFactor: 1
tri 도메인 파라미터는 베지어 팬(600)이 변형된 삼각형으로서 취급될 것임을 명시한다. 대안의 실시예에서, 베지어 팬(600)이 변형된 직사각형으로서 취급될 수 있다. 정수(integer) 분할 파라미터는 변형된 삼각형의 내부가 정수 분할을 사용하여 분할될 것임을 나타낸다. 예를 들어, 내부 점(620)을 사용하여, 베지어 팬(600)이 곡선 세그먼트(626), 및 각각이 곡선 세그먼트(626)의 주변(perimeter)[예컨대, 선(628) 및 선(630)]과 에지(edge)를 공유하는 2 개의 삼각형들(622 및 624)로 분할되었다. 곡선 세그먼트(626)는 점(612)부터 점(618)까지 뻗어 있다. 대안의 실시예에서, 변형된 삼각형의 내부를 분할하기 위해 분수(fractional) 분할이 사용될 수 있다. 출력 토폴로지 파라미터는 곡선 세그먼트(626)가 삼각형 세트 - 삼각형들의 정점들 각각이 시계 방향 순서로 명시될 것임 - 을 사용하여 근사화될 것임을 명시한다.
내부 테셀레이션 인자(inside tessellation factor)는 테셀레이션에 의해 몇 개의 내부 삼각형들이 생성되는지에 영향을 미친다. 내부 삼각형은 베지어 팬(600)의 곡선 세그먼트의 주변[예컨대, 선(628) 및 선(630)]과 에지를 공유하지 않는 삼각형으로서 규정된다. 내부 테셀레이션 인자가 1로 설정되고, 이는 테셀레이션에 의해 내부 삼각형들이 생성되지 않는다는 것을 나타낸다. 윤곽 테셀레이션 인자(contour tessellation factor)는 오프라인으로 생성되는 탐색 테이블을 이용하여 런타임 시에 동적으로 선택되는 정수이다. 윤곽 테셀레이션 인자는 도 6에 도시된 바와 같이 내부 점(620)으로부터 방사하는 삼각형들을 사용하여 곡선 세그먼트(626)를 얼마나 미세하게(finely) 세분해야 하는지를 명시한다. 환언하면, 윤곽 테셀레이션 인자는 세분에서 사용될 삼각형들의 개수를 명시한다. 일반적으로, 곡선 세그먼트가 너무 거칠게(coarsely) 테셀레이트될 때, 렌더링된 영상이 눈에 보이는 패싯팅(faceting)을 가질 것이다. 다른 한편으로, 곡선 세그먼트가 너무 미세하게 테셀레이트될 때, GPU가 과도한 부담을 지게 되고, 처리 시간이 길어지게 된다. 본 발명은 너무 거칠게 테셀레이트하는 것과 너무 미세하게 테셀레이트하는 것 사이에서 균형을 유지하기 위해 윤곽 테셀레이션 인자를 이용한다.
언급된 바와 같이, 윤곽 테셀레이션 인자는 탐색 테이블을 이용하여 런타임 시에 동적으로 선택되는 정수이다. 탐색 테이블은 사전 규정된 윤곽 테셀레이션 인자들의 세트(예컨대, 2, 4, 8, 16, 32, 및 64)를 선택하고 윤곽 테셀레이션 인자들 각각에 대한 연관된 경계 상자 치수를 계산하는 것에 의해 오프라인으로(컴파일 이전에) 생성된다. 구체적으로는, 각각의 테셀레이션 인자 n에 대해, dist Chebychev (B(t), L n (t))의 최대값(이후부터 Dn이라고 지칭됨)이 계산되고, 여기서:
dist Chebychev (p,q) = max (|p x - q x |, |p y - q y |); 이고;
B(t)는 3차 베지어에 대한 번스타인 기저 함수(Bernstein basis function)(t가 0부터 1까지의 범위에 있음)들에 기초한 베지어의 정규 파라미터화(canonical parameterization)이며:
B(t) = t 3 * C 0 + 3(1 - t)t 2 * C 1 + 3(1 - t)2 t * C 2 + (1 - t)3 * C 3
여기서 C 0, . . ., C 3은 그의 x-좌표 및 y-좌표가 각각 구간 [0, 1]의 범위에 있을 수 있는 4 개의 베지어 제어점들이다. L n (t)는 점들
Figure pct00001
을 연결하는 폴리라인 세그먼트(polyline segment)의 정규화된 원호 길이 파라미터화(normalized arc-length parameterization)이고(t는 0부터 1까지의 범위에 있음), t는 구간 [0, 1]의 범위에 있다. 이것은 9 개의 미지수들(제어점들의 x-좌표들 및 y-좌표들과 t) 및 18 개의 제약조건들(제어점들에 대한 16 개의 제약조건들 및 t에 대한 2 개의 제약조건들)을 갖는 비선형 제약된 최적화 문제(non-linear constrained optimization problem)이고, 공지된 기법들을 사용하여 해석적으로 또는 수치적으로 해가 구해질 수 있다. 본 발명은 베지어 테셀레이션이 실제 베지어로부터 벗어날 수 있는 최대 거리에 대한 상한인 구현 조정 가능 상수(implementation-tunable constant) ε을 포함한다(본 발명은 1/4을 선택함). 마지막으로, 값들
Figure pct00002
이 헐 쉐이더에 의해 액세스 가능한 테이블에 저장된다.
예시적인 탐색 테이블이 이하에 제공된다.
Figure pct00003
런타임 시에, 베지어 팬의 4 개의 제어점들을 둘러싸는 최소 경계 상자가 계산된다. 예시적인 경계 상자(724)가 도 7에 도시되어 있고; 이 경계 상자는 점들 C0(710), C1(712), C2(714), 및 C3(716)에 도시된 바와 같이 베지어 팬의 4 개의 제어점들을 포함한다. 경계 상자(724)는 높이(720) 및 폭(722)을 가진다. 경계 상자(724)의 최대 치수가 결정된다[예컨대, 높이(720) 또는 폭(722)]. 최대 치수가 탐색 테이블에서의 적절한 범위와 매칭되고,
Figure pct00004
이도록 최소 윤곽 테셀레이션 인자 n이 선택된다. maxDimension이
Figure pct00005
를 초과하는 경우, CPU 상에서 베지어 팬이 삼각형들로 테셀레이트된다.
도메인 쉐이더는 베지어 팬 제어점들 C0, C1, C2, C3, 팬 원점 O, 및 SV_DomainLocation (t, u, v)를 헐 쉐이더로부터 입력으로서 수신한다. 도메인 위치(domain location)가 무게중심 좌표(Barycentric coordinate)로 명시되고, 이는 0 ≤≤ t, u, v ≤≤ 1이고 t + u + v 1이라는 것을 의미하고, 이는 u가 무시될 수 있게 한다. 도메인 쉐이더는 곡선 세그먼트[예컨대, 도 6의 곡선 세그먼트(626)]를 따라 삼각형들 각각에 대한 정점 위치 P를 출력으로서 방출한다. 각각의 정점 위치 P는 하기의 식을 사용하여 계산되고:
P(t, v) = B(t) * v + O * (1 - v)
여기서 B(t)는 번스타인 다항식이다:
B(t) = t 3 * C 0 + 3(1 - t)t 2 * C 1 + 3(1 - t)2 t * C 2 + (1 - t)3 * C 3
도메인 쉐이더의 출력이 도 8에 도시되어 있다. 도 8은 도 6에 도시된 것과 동일한 베지어 팬을 예시한 것이다[이제 베지어 팬(800)로서 라벨링되어 있음]. 삼각형들 각각은 정점 위치 P(예컨대, 정점 위치들 P 1, . . ., P 9)에서 곡선 세그먼트(626)와 만난다. 2 개의 예시적인 정점 위치들이 참조 번호들(810 및 812)에 도시되어 있다.
이제 도 9를 참조하면, 안티앨리어싱된 2D 곡선들을 렌더링하는 예시적인 방법의 흐름도가 도시되어 있고, 전체로서 참조 번호(900)에 의해 참조된다. 안티앨리어싱된 그래픽들은, 계단형(stair-stepped)이 아니라, 일직선이거나 매끄럽게 보이는 선들 및/또는 곡선들을 갖는 렌더링된 영상들이다. 안티앨리어싱된 렌더링된 영상들이 도 3의 그래픽 파이프라인(300)과 같은 그래픽 파이프라인의 구성요소들을 이용하는 안티앨리어싱 프로세스에 의해 생성된다. 렌더링은 장면 데이터의 래스터화된 비트맵 표현을 생성하는 프로세스이다. 렌더링 프로세스의 완료를 위해 렌더링된 영상이 실제로 디스플레이될 필요는 없다. 방법(900)이 영상 구성요소에 의해 수행될 수 있다. 영상 구성요소들의 예들은 워드 프로세싱 애플리케이션, 스프레드시트 애플리케이션, 프레젠테이션 애플리케이션, 개인 연락처 애플리케이션, 게임, 및 2 차원 영상들을 생성하는 다른 애플리케이션들을 포함한다.
단계(910)에서, 장면 데이터가 장면 데이터 내의 객체들로부터 테셀레이트된 기하 형상들의 세트를 생성하는 것에 의해 중간 테셀레이션으로 변환된다. 중간 테셀레이션은 하나의 팬 원점 및 4 개의 제어점들에 의해 규정되는 적어도 하나의 베지어 팬을 포함한다. 다른 예시적인 기하 형상들은 삼각형들 및 원호 세그먼트들을 포함할 수 있다. 하나의 실시예에서, 변환 단계는 CPU 상에서 실행 중인 소프트웨어에 의해 행해진다.
단계(912)에서, 그래픽 파이프라인 내의 헐 쉐이더를 구성하는 제1 명령어가 발생된다. 헐 쉐이더는, 베지어 팬을 규정하는 4 개의 제어점들을 포함하는 최소 경계 상자의 폭 또는 높이의 최대값에 기초하여 베지어 팬의 곡선 또는 곡선 세그먼트를 규정된 개수의 삼각형들로 세분하는 것에 의해, 곡선을 근사화하도록 구성되어 있다. 앞서 설명된 바와 같이, 곡선을 근사화하는 데 사용되는 삼각형들의 개수는 최대 높이 또는 폭 값들의 하나 이상의 범위들 및 대응하는 세분 인자들 또는 윤곽 테셀레이션 인자들을 포함하는 사전 계산된 탐색 테이블에 기초하여 결정된다. 제1 명령어가 API로 전달될 수 있고, API는 다시 GPU 상의 헐 쉐이더를 구성한다.
단계(914)에서, 그래픽 파이프라인 내의 도메인 쉐이더를 구성하는 제2 명령어가 발생된다. 도메인 쉐이더는, 예를 들어, 번스타인 다항식을 사용하여 베지어 팬에서의 곡선을 따라 규정된 개수의 삼각형들 각각에 대한 정점 위치를 결정하도록 구성되어 있다. 제2 명령어가 또한 API로 전달될 수 있고, API는 다시 GPU 상의 도메인 쉐이더를 구성한다. 단계(916)에서, 중간 테셀레이션이 CPU로부터 GPU 상에서 실행 중인 그래픽 파이프라인으로 전달된다.
방법(900)은 그래픽 파이프라인에서의 렌더링 대상 저장 값(render-target storage value)을 규정하는 제3 명령어를 발생시키는 것을 추가로 포함할 수 있다. 렌더링 대상 저장 값은 렌더링된 영상에 할당된 메모리의 양을 규정한다. 렌더링된 영상은 그래픽 파이프라인을 통해 중간 테셀레이션을 실행하는 것의 최종 결과일 수 있다. 제3 명령어가 API로 전달될 수 있고, API는 다시 GPU 상에서의 프로세스를 구성한다.
그래픽 파이프라인 내의 래스터라이저에 대한 샘플링 레이트를 규정하는 제4 명령어가 또한 발생될 수 있다. 샘플링 레이트는 렌더링 대상 저장과 무관하게 규정된다. 이 항목들이 개별적으로 규정되기 때문에, 그의 값들이 서로 연계될 필요는 없다. 하나의 실시예에서, 메모리 또는 렌더링 대상 저장 값이 1x 렌더링된 비트맵 표현으로 설정된다. 예를 들어, 렌더링된 영상이 480 픽셀 x 480 픽셀인 경우, 할당된 메모리는 230,400 개의 픽셀을 저장하기에 충분할 수 있을 것이다. 샘플링 레이트가 독립적으로 규정되기 때문에, 480 x 480 렌더링된 비트맵 표현 상의 230,400 개의 픽셀들에 대한 메모리 할당에 대해서도 샘플링 레이트가 픽셀당 4 개의 서브픽셀들일 수 있을 것이다. 제4 명령어가 API로 전달될 수 있고, API는 다시 GPU 상에서의 프로세스를 구성한다.
부가의 명령어들이 또한 발생될 수 있다. 예를 들어, 중간 테셀레이션을 처리하도록 그래픽 파이프라인 내의 픽셀 쉐이더를 구성하는 명령어들이 발생될 수 있다. 명령어는 중간 테셀레이션 내의 기하 형상들이 중복되는지 중복되지 않는지에 따라 변할 수 있다. 기하 형상들이 중복되지 않는 시나리오에서, 픽셀 쉐이더는 중간 테셀레이션에서 설정된 비트들의 수를 카운트하고, 결과들을 실수로 정규화하며, 실수를 렌더링 대상의 현재 콘텐츠에 추가하도록 구성되어 있다. 다른 한편으로, 기하 형상들 사이에 중복이 있을 때, 픽셀 쉐이더는 어느 색상이 렌더링 대상에 가산되거나 그로부터 차감되는지를 결정하기 위해 논리 프로세스를 사용하여 도메인 쉐이더에 의해 방출되는 삼각형 또는 삼각형들을 렌더링 대상의 현재 콘텐츠와 결합하도록 구성되어 있다. 하나의 실시예에서, 논리 프로세스는 비트맵 XOR(exclusive-or) 연산이다. 다른 실시예에서, 논리 프로세스는 비트맵 OR 연산이다.
이제 도 10을 참조하면, 객체의 중간 테셀레이션을 래스터화하라고 GPU에 지시하는 방법(1000)의 흐름도가 도시되어 있다. 중간 테셀레이션은 팬 원점 및 4 개의 제어점들을 가지는 적어도 하나의 베지어 팬을 포함한다. 방법(1000)이 API에 의해 수행될 수 있다.
단계(1010)에서, GPU는 컴퓨팅 디바이스의 CPU로부터 중간 테셀레이션을 수신한다. 중간 테셀레이션은 하나 이상의 라인 세그먼트들 그리고 하나의 팬 원점 및 4 개의 제어점들에 의해 규정되는 적어도 하나의 베지어 팬을 가지는 객체의 상위 레벨 표현을 포함한다. 단계(1012)에서, GPU는 GPU 상에서 실행 중인 그래픽 파이프라인 내의 헐 쉐이더를, 그 중에서도 특히, 베지어 팬의 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해, 그 곡선을 근사화하도록 구성하는 제1 명령어를 수신한다.
제1 명령어는 또한 베지어 팬을 2 개의 변 및 하나의 곡선 변을 가지는 변형된 삼각형으로서 취급하라고 헐 쉐이더에 명시하는 tri 도메인 명령어를 포함할 수 있다. 제1 명령어는 또한 베지어 팬의 내부를 분할하기 위한 분할 명령어, 및 베지어 팬의 곡선이 삼각형들의 세트 - 그의 정점들 각각이 시계 방향 순서로 명시될 것임 - 을 사용하여 세분될 것임을 명시하는 출력 토폴로지 명령어를 포함할 수 있다. 제1 명령어는, 그에 부가하여, 내부 삼각형들(예컨대, 베지어 팬의 곡선 세그먼트의 주변과 에지를 공유하지 않는 삼각형들)이 없도록 보장하는 1의 내부 테셀레이션 인자 명령어를 포함한다.
단계(1014)에서, 헐 쉐이더가 제1 명령어에 기초하여 컴퓨팅 디바이스에 의해 구성된다. 단계(1016)에서, GPU는 그래픽 파이프라인 내의 도메인 쉐이더를 베지어 팬의 곡선을 따라 규정된 개수의 삼각형들 각각에 대한 정점 위치를 결정하도록 구성하는 제2 명령어를 수신한다. 단계(1018)에서, 도메인 쉐이더는 제2 명령어에 기초하여 구성된다.
방법(1000)은 헐 쉐이더가 중간 테셀레이션의 베지어 팬에 대해 제1 명령어를 실행하는 것을 추가로 포함한다. 헐 쉐이더는 베지어 팬의 4 개의 제어점들을 포함하는 최소 경계 상자를 계산하고, 경계 상자의 폭 또는 높이의 최대값을 결정한다. 최대 높이 또는 폭 값들의 범위들 및 대응하는 윤곽 테셀레이션 인자들을 포함하는 탐색 테이블이 액세스되고, 경계 상자의 최대값이 탐색 테이블에서의 범위들 중 하나와 매칭된다. 매칭된 범위에 대응하는 세분 인자 또는 윤곽 테셀레이션 인자가 탐색 테이블로부터 결정되고, 이 인자가 베지어 팬 곡선을 윤곽 테셀레이션 인자와 같은 개수의 삼각형들로 세분하는 데 사용된다. 방법(1000)은, 그에 부가하여, 베지어 팬 곡선을 따라 규정된 개수의 삼각형들 각각에 대한 정점 위치를 결정하기 위해 베지어 팬에 대해 제2 명령어를 실행하는 도메인 쉐이더를 포함한다.
부가의 명령어들이 GPU에 의해 수신될 수 있다. 예를 들어, GPU 상에서 실행 중인 그래픽 파이프라인에서 렌더링 대상 저장 값을 규정하는 명령어가 수신된다. 명령어가 프로그램으로부터 수신될 수 있다. 렌더링 대상 저장 값에 대응하는 GPU에서의 메모리의 양이 할당된다. 메모리는 GPU에 대한 드라이버에 의해 할당될 수 있다. GPU 상의 그래픽 파이프라인 내의 래스터라이저에 대한 샘플링 레이트를 규정하는 명령어들이 또한 수신될 수 있다. 샘플링 레이트가 렌더링 대상 저장 값과 무관하게 규정된다. 래스터라이저는 장면 데이터를 샘플링 레이트로 샘플링하도록 구성되어 있다. 래스터라이저는 GPU에서의 드라이버들을 통해 구성될 수 있다. 샘플링 레이트 및 저장 값이 서로 무관할 수 있다. 하나의 양태에서, 샘플링 레이트가 렌더링 대상 저장 값보다 더 클 수 있으며, 여기서 렌더링 대상 저장 값은 렌더링된 영상에서의 픽셀당 하나의 픽셀과 동등하고, 샘플링 레이트는 픽셀당 4 개의 서브픽셀들로 설정된다.
본 발명의 실시예들이 제한이 아니라 예시로서 기술되어 있다. 어떤 특징들 및 서브컴비네이션들이 유용하고 다른 특징들 및 서브컴비네이션들을 참조함이 없이 이용될 수 있다는 것을 잘 알 것이다. 이것은 청구범위에 의해 생각되고 있으며 청구범위의 범주 내에 속한다.

Claims (15)

  1. 실행될 때, 안티앨리어싱(antialiasing)된 2 차원 곡선들을 렌더링하는 방법을 수행하는 컴퓨터 실행가능 명령어들을 가지는 하나 이상의 컴퓨터 저장 매체에 있어서,
    상기 안티앨리어싱(antialiasing)된 2 차원 곡선들을 렌더링하는 방법은,
    장면 데이터 내의 객체들로부터 테셀레이트(tessellate)된 기하 형상들의 세트 - 상기 기하 형상들의 세트는 팬 원점(fan origin) 및 4 개의 제어점(control point)을 가지는 적어도 하나의 베지어 팬(Bezier fan)을 포함함 - 를 생성함으로써 상기 장면 데이터를 중간 테셀레이션(intermediate tessellation)으로 변환하는 단계;
    다른 것들 중에서도, 상기 적어도 하나의 베지어 팬의 상기 4 개의 제어점들을 포함하는 최소 경계 상자(bounding box)의 폭 또는 높이의 최대값에 기초하여 상기 적어도 하나의 베지어 팬의 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해 상기 곡선을 근사화하도록, 그래픽 파이프라인 내의 헐 쉐이더(hull shader)를 구성하기 위한 제1 명령어를 발생시키는 단계;
    상기 적어도 하나의 베지어 팬의 상기 곡선을 따라 상기 규정된 개수의 삼각형들 각각에 대한 정점 위치(vertex position)를 결정하도록, 상기 그래픽 파이프라인 내의 도메인 쉐이더(domain shader)를 구성하기 위한 제2 명령어를 발생시키는 단계; 및
    상기 중간 테셀레이션을 상기 그래픽 파이프라인으로 전달하는 단계
    를 포함하는 것인, 하나 이상의 컴퓨터 저장 매체.
  2. 제1항에 있어서,
    상기 그래픽 파이프라인에서의 렌더링 대상 저장 값(render-target storage value)을 규정하기 위한 제3 명령어를 발생시키는 단계; 및
    상기 그래픽 파이프라인 내의 래스터라이저(rasterizer)에 대한 샘플링 레이트를 규정하기 위한 제4 명령어를 발생시키는 단계로서, 상기 샘플링 레이트는 상기 렌더링 대상 저장 값과 무관하게 규정되는 것인, 상기 제4 명령어를 발생시키는 단계
    를 더 포함하는 것인, 하나 이상의 컴퓨터 저장 매체.
  3. 제2항에 있어서,
    상기 제1 명령어, 상기 제2 명령어, 상기 제3 명령어, 및 상기 제4 명령어를 그래픽 처리 유닛에서 기능들을 구성하는 애플리케이션 프로그래밍 인터페이스로 전달하는 단계를 더 포함하는 것인, 하나 이상의 컴퓨터 저장 매체.
  4. 제2항에 있어서,
    상기 삼각형들의 규정된 개수는 최대 높이 또는 폭 값들의 하나 이상의 범위들 및 대응하는 세분 인자(ubdivision factor)들을 포함하는 탐색 테이블에 기초하여 결정되는 것인, 하나 이상의 컴퓨터 저장 매체.
  5. 제2항에 있어서,
    상기 규정된 개수의 삼각형들 각각에 대한 상기 정점 위치는, 부분적으로, 번스타인 다항식(Bernstein polynomial)을 사용하여 결정되는 것인, 하나 이상의 컴퓨터 저장 매체.
  6. 그래픽 처리 유닛(graphics processing unit; GPU) 상에서 실행 중인 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화(rasterize)하는 방법으로서, 상기 중간 테셀레이션은 팬 원점 및 4 개의 제어점들을 가지는 적어도 하나의 베지어 팬을 포함하고, 상기 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화 방법은,
    컴퓨팅 디바이스의 중앙 처리 유닛(central processing unit; CPU)로부터 상기 중간 테셀레이션을 수신하는 단계;
    다른 것들 중에서도, 상기 적어도 하나의 베지어 팬의 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해 상기 곡선을 근사화하도록 상기 그래픽 파이프라인 내의 헐 쉐이더를 구성하기 위한 제1 명령어를 수신하는 단계;
    상기 컴퓨팅 디바이스를 통해, 상기 제1 명령어에 기초하여 상기 헐 쉐이더를 구성하는 단계;
    상기 적어도 하나의 베지어 팬의 상기 곡선을 따라 상기 규정된 개수의 삼각형들 각각에 대한 정점 위치를 결정하도록 상기 그래픽 파이프라인 내의 도메인 쉐이더를 구성하기 위한 제2 명령어를 수신하는 단계; 및
    상기 컴퓨팅 디바이스를 통해, 상기 제2 명령어에 기초하여 상기 도메인 쉐이더를 구성하는 단계
    를 포함하는, 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화 방법.
  7. 제6항에 있어서,
    상기 헐 쉐이더가, 입력 커버리지 마스크(input coverage mask)의 상기 적어도 하나의 베지어 팬에 대해 상기 제1 명령어를 실행하는 단계; 및
    상기 도메인 쉐이더가, 상기 입력 커버리지 마스크의 상기 적어도 하나의 베지어 팬에 대해 상기 제2 명령어를 실행하는 단계
    를 더 포함하는, 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화 방법.
  8. 제7항에 있어서,
    상기 헐 쉐이더가, 상기 중간 테셀레이션의 상기 적어도 하나의 베지어 팬에 대해 상기 제1 명령어를 실행하는 단계는, 부분적으로,
    상기 적어도 하나의 베지어 팬의 상기 4 개의 제어점들을 포함하는 최소 경계 상자를 계산하는 단계;
    상기 최소 경계 상자의 높이 또는 폭 중 적어도 하나의 최대값을 결정하는 단계;
    최대 높이 또는 폭 값들의 하나 이상의 범위들 및 대응하는 세분 인자들을 포함하는 탐색 테이블에 액세스하는 단계;
    상기 최소 경계 상자의 상기 높이 또는 상기 폭 중 상기 적어도 하나의 상기 최대값을 상기 탐색 테이블에서의 상기 하나 이상의 범위들 중 적어도 하나와 매칭하는(matching) 단계;
    상기 매칭된 범위에 대응하는 세분 인자를 결정하는 단계; 및
    상기 적어도 하나의 베지어 팬 곡선을 상기 세분 인자와 동일한 개수의 삼각형들로 세분하는 단계를 포함하는 것인, 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화 방법.
  9. 제6항에 있어서,
    상기 그래픽 파이프라인에서의 렌더링 대상 저장 값을 규정하기 위한 제3 명령어를 수신하는 단계;
    상기 컴퓨팅 디바이스를 통해, 상기 렌더링 대상 저장 값에 대응하는 상기 GPU에서 메모리의 양을 할당하는(allocating) 단계;
    상기 그래픽 파이프라인 내의 래스터라이저에 대한 샘플링 레이트를 규정하기 위한 제4 명령어를 수신하는 단계로서, 상기 샘플링 레이트는 상기 렌더링 대상 저장 값과 무관하게 규정되는 것인, 상기 제4 명령어를 수신하는 단계; 및
    상기 컴퓨팅 디바이스를 통해, 상기 샘플링 레이트로 장면 데이터를 샘플링하도록 상기 래스터라이저를 구성하는 단계
    를 더 포함하는, 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화 방법.
  10. 제9항에 있어서,
    상기 샘플링 레이트는 상기 렌더링 대상 저장 값보다 더 큰 것인, 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화 방법.
  11. 제9항에 있어서,
    상기 렌더링 대상 저장 값은 렌더링된 영상에서의 픽셀당 하나의 픽셀(one pixel per pixel)과 동등하고, 상기 샘플링 레이트는 픽셀당 4 개의 서브픽셀들로 설정되는 것인, 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화 방법.
  12. 제6항에 있어서,
    상기 제1 명령어는,
    (A) 상기 적어도 하나의 베지어 팬을 2 개의 변 및 상기 곡선 변을 가지는 변형된 삼각형으로서 취급하도록 상기 헐 쉐이더에 명시하는 tri 도메인 명령어,
    (B) 상기 적어도 하나의 베지어 팬의 내부를 분할하기 위한 분할 명령어(partition instruction),
    (C) 상기 적어도 하나의 베지어 팬의 상기 곡선 변이 삼각형들의 세트로 세분될 것임을 명시하는 출력 토폴로지 명령어(output topology instruction), 및
    D) 상기 적어도 하나의 베지어 팬의 상기 분할이 어떤한 내부 삼각형들도 초래하지 않을 것임을 명시하는 내부 테셀레이션 인자 명령어(inside tessellation factor instruction)
    를 더 포함하고,
    내부 삼각형은 상기 적어도 하나의 베지어 팬의 상기 곡선의 주변(perimeter)과 에지를 공유하지 않는 삼각형을 포함하는 것인, 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화 방법.
  13. 제12항에 있어서,
    상기 분할 명령어는 정수(integer) 분할 명령어 또는 분수(fractional) 분할 명령어 중 적어도 하나를 포함하는 것인, 그래픽 파이프라인에서 객체의 중간 테셀레이션을 래스터화 방법.
  14. 그래픽 처리 유닛(graphics processing unit; GPU)을 제어하는 애플리케이션 프로그램 인터페이스(application program interface; API)를 저장하는 컴퓨터 저장 매체에 있어서,
    상기 API는,
    다른 것들 중에서도, 베지어 팬을 규정하는 4 개의 제어점들을 포함하는 최소 경계 상자의 폭 또는 높이의 최대값에 기초하여 적어도 하나의 베지어 팬의 곡선을 규정된 개수의 삼각형들로 세분하는 것에 의해 상기 곡선을 근사화하도록 헐 쉐이더 구성요소에 의해 사용되는 파라미터들을 규정하는 세분 인자 속성(subdivision-factor property); 및
    상기 적어도 하나의 베지어 팬의 상기 곡선을 따라 상기 규정된 개수의 삼각형들 각각에 대한 정점 위치를 결정하도록 도메인 쉐이더 구성요소에 의해 사용되는 파라미터들을 규정하는 위치 인자 속성(position-factor property)을 포함하는 것인, 컴퓨터 저장 매체.
  15. 제14항에 있어서,
    상기 API는,
    렌더링된 영상에 할당된 상기 GPU 상의 메모리의 양을 규정하는 렌더링 대상 저장 속성(render-target storage property); 및
    래스터라이저 구성요소에 의해 사용되는 샘플링 레이트를 규정하는 샘플링 레이트 속성을 더 포함하는 것인, 컴퓨터 저장 매체.
KR1020157034161A 2013-04-30 2013-09-21 그래픽 파이프라인을 사용한 2 차원 곡선의 테셀레이션 KR20160003223A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/873,403 US9401034B2 (en) 2013-04-30 2013-04-30 Tessellation of two-dimensional curves using a graphics pipeline
US13/873,403 2013-04-30
PCT/US2013/061069 WO2014178905A1 (en) 2013-04-30 2013-09-21 Tessellation of two-dimensional curves using a graphics pipeline

Publications (1)

Publication Number Publication Date
KR20160003223A true KR20160003223A (ko) 2016-01-08

Family

ID=49305181

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157034161A KR20160003223A (ko) 2013-04-30 2013-09-21 그래픽 파이프라인을 사용한 2 차원 곡선의 테셀레이션

Country Status (6)

Country Link
US (1) US9401034B2 (ko)
EP (1) EP2992510A1 (ko)
JP (1) JP6235123B2 (ko)
KR (1) KR20160003223A (ko)
CN (1) CN105493149B (ko)
WO (1) WO2014178905A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102329475B1 (ko) * 2014-08-27 2021-11-19 삼성전자주식회사 렌더링 퀄리티 제어 장치 및 방법
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
KR102657587B1 (ko) * 2016-11-21 2024-04-15 삼성전자주식회사 커브 렌더링을 수행하는 방법 및 장치.
CN106709863B (zh) * 2016-12-28 2020-04-28 杭州趣维科技有限公司 一种基于gpu的高效2d矢量图形渲染方法
US10043233B1 (en) * 2017-07-20 2018-08-07 Adobe Systems Incorporated Digital media environment for processing vector objects of vector artwork
JP7232829B2 (ja) * 2017-11-16 2023-03-03 シナプティクス インコーポレイテッド ディスプレイドライバ、方法、及び、システム
US10580209B2 (en) * 2018-03-06 2020-03-03 Qualcomm Incorporated Removal of degenerated sub-primitives in tessellation
SG11202010671PA (en) * 2019-12-20 2020-11-27 Alipay Hangzhou Inf Tech Co Ltd System and method for evaluating risk
CN111581464A (zh) * 2020-04-10 2020-08-25 北京明略软件系统有限公司 一种数据信息的展示方法和装置
CN114581596A (zh) * 2022-02-25 2022-06-03 北京构力科技有限公司 基于图形处理单元gpu驱动的几何形体快速渲染的方法

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4918626A (en) 1987-12-09 1990-04-17 Evans & Sutherland Computer Corp. Computer graphics priority system with antialiasing
EP0430501B1 (en) 1989-11-17 1999-02-03 Digital Equipment Corporation System and method for drawing antialiased polygons
JPH03209499A (ja) * 1990-01-12 1991-09-12 Nec Corp アウトライン・フォントの形成方法およびその描画装置
US6005582A (en) 1995-08-04 1999-12-21 Microsoft Corporation Method and system for texture mapping images with anisotropic filtering
US6317525B1 (en) 1998-02-20 2001-11-13 Ati Technologies, Inc. Method and apparatus for full scene anti-aliasing
US6501483B1 (en) 1998-05-29 2002-12-31 Ati Technologies, Inc. Method and apparatus for antialiasing using a non-uniform pixel sampling pattern
US7375727B1 (en) 1998-07-22 2008-05-20 Nvidia Corporation System, method and computer program product for geometrically transforming geometric objects
JP2000099732A (ja) * 1998-09-22 2000-04-07 Sony Corp 曲線編集装置及び方法
JP4332934B2 (ja) 1999-06-17 2009-09-16 株式会社セガ アンチエイリアシング方法及びこれを用いた画像処理装置
US6819332B2 (en) 2001-02-27 2004-11-16 3Dlabs Inc. Ltd. Antialias mask generation
US6940503B2 (en) * 2001-05-10 2005-09-06 Ati International Srl Method and apparatus for processing non-planar video graphics primitives
US7006101B1 (en) 2001-06-08 2006-02-28 Nvidia Corporation Graphics API with branching capabilities
US7027056B2 (en) 2002-05-10 2006-04-11 Nec Electronics (Europe) Gmbh Graphics engine, and display driver IC and display module incorporating the graphics engine
US20050212806A1 (en) 2002-05-10 2005-09-29 Metod Koselj Graphics engine converting individual commands to spatial image information, and electrical device and memory incorporating the graphics engine
US6943805B2 (en) 2002-06-28 2005-09-13 Microsoft Corporation Systems and methods for providing image rendering using variable rate source sampling
US6967663B1 (en) 2003-09-08 2005-11-22 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
EP1580694A1 (en) 2004-03-22 2005-09-28 STMicroelectronics S.r.l. Image rendering with adaptive filtering for anti-aliasing
GB0426170D0 (en) 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
US20060250407A1 (en) 2005-05-05 2006-11-09 Via Technologies, Inc. Texture filtering using a programmable table filter to improve computer graphics performmance
US20070018988A1 (en) 2005-07-20 2007-01-25 Michael Guthe Method and applications for rasterization of non-simple polygons and curved boundary representations
US7408553B1 (en) 2005-12-15 2008-08-05 Nvidia Corporation Inside testing for paths
US7924278B2 (en) 2006-07-28 2011-04-12 Microsoft Corporation Real-time GPU rendering of piecewise algebraic surfaces
US8269792B2 (en) 2006-11-21 2012-09-18 Qualcomm Incorporated Efficient scissoring for graphics application
US20080284780A1 (en) 2007-05-15 2008-11-20 R-Ming Hsu Method for enabling alpha-to-coverage transformation
JP2008299642A (ja) * 2007-05-31 2008-12-11 Mitsubishi Electric Corp 図形描画装置
US8115773B2 (en) 2007-06-07 2012-02-14 Apple Inc. Serializing command streams for graphics processors
US8044955B1 (en) 2007-08-31 2011-10-25 Adobe Systems Incorporated Dynamic tessellation spreading for resolution-independent GPU anti-aliasing and rendering
US20090141038A1 (en) * 2007-11-02 2009-06-04 Newaskar Saket Prashant Bezier Curves for Low Memory Embedded Graphics Systems
US8963930B2 (en) 2007-12-12 2015-02-24 Via Technologies, Inc. Triangle setup and attribute setup integration with programmable execution unit
US7928979B2 (en) 2008-02-01 2011-04-19 Microsoft Corporation Efficient geometric tessellation and displacement
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
EP2107528B1 (en) 2008-04-01 2012-12-26 Telefonaktiebolaget L M Ericsson (PUBL) Method of and arrangement for rendering a path
CN102016916B (zh) 2008-04-04 2014-08-13 先进微装置公司 用于抗混叠的过滤方法和装置
US8933943B2 (en) 2008-04-30 2015-01-13 Intel Corporation Technique for performing load balancing for parallel rendering
US8605087B2 (en) 2008-07-03 2013-12-10 Nvidia Corporation Hybrid multisample/supersample antialiasing
GB0819570D0 (en) 2008-10-24 2008-12-03 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
JP5294313B2 (ja) * 2008-11-07 2013-09-18 Necシステムテクノロジー株式会社 ベジェ曲線描画装置、ベジェ曲線描画方法およびプログラム
US8269775B2 (en) 2008-12-09 2012-09-18 Qualcomm Incorporated Discarding of vertex points during two-dimensional graphics rendering using three-dimensional graphics hardware
US8325177B2 (en) 2008-12-29 2012-12-04 Microsoft Corporation Leveraging graphics processors to optimize rendering 2-D objects
US8482560B2 (en) * 2008-12-31 2013-07-09 Intel Corporation Image forming techniques
US8274521B2 (en) 2009-05-08 2012-09-25 Oracle America, Inc. System available cache color map
US9324175B2 (en) 2009-09-11 2016-04-26 Nvidia Corporation Memory coherency in graphics command streams and shaders
US8144147B2 (en) * 2010-04-07 2012-03-27 Intel Corporation Hierarchical bounding of displaced parametric surfaces
US8773448B2 (en) 2010-04-09 2014-07-08 Intel Corporation List texture
US20110285718A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Point containment for quadratic bèzier strokes
US20110310102A1 (en) * 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
US9183651B2 (en) 2010-10-06 2015-11-10 Microsoft Technology Licensing, Llc Target independent rasterization
CN102663384B (zh) * 2012-03-31 2014-01-22 北京智安邦科技有限公司 基于贝塞尔控制点搜索的曲线识别方法及装置

Also Published As

Publication number Publication date
EP2992510A1 (en) 2016-03-09
CN105493149B (zh) 2018-11-16
JP6235123B2 (ja) 2017-11-22
WO2014178905A1 (en) 2014-11-06
JP2016520920A (ja) 2016-07-14
US9401034B2 (en) 2016-07-26
CN105493149A (zh) 2016-04-13
US20140320523A1 (en) 2014-10-30

Similar Documents

Publication Publication Date Title
JP6235123B2 (ja) グラフィックス・パイプラインを用いた2次元曲線のテッセレーション
US10867434B2 (en) Variable rate shading
JP5721358B2 (ja) グラフィックス処理システム
US20170243390A1 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
JP6863693B2 (ja) グラフィックス処理システムおよび方法
JP5006412B2 (ja) 効率的な2d及び3dグラフィックス処理
JP4157569B2 (ja) 描画装置、描画方法及び描画プログラム
US8044955B1 (en) Dynamic tessellation spreading for resolution-independent GPU anti-aliasing and rendering
EP3101628B1 (en) Tessellation method
US9183651B2 (en) Target independent rasterization
US20070018988A1 (en) Method and applications for rasterization of non-simple polygons and curved boundary representations
US20110310102A1 (en) Systems and methods for subdividing and storing vertex data
US8269770B1 (en) Tessellation of trimmed parametric surfaces by walking the surface
US20130120391A1 (en) Triangulation for Accelerated Multi-Resolution Rendering of Stroked Paths
US20110090228A1 (en) Method of and Arrangement for Rendering a Path
CN106408635B (zh) 图形处理系统及其操作方法、以及计算机可读存储介质
KR102278147B1 (ko) 그래픽 프리미티브의 클립핑
US10332290B2 (en) Fast, coverage-optimized, resolution-independent and anti-aliased graphics processing
US10134171B2 (en) Graphics processing systems
JP5512218B2 (ja) グラフィックス処理システム
KR20180060198A (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
JP2009301284A (ja) 描画装置および方法
KR20090059800A (ko) 폴리곤의 특징에 적응된 순서로 래스터화하는 래스터화엔진 및 3차원 그래픽스 시스템
US11217005B1 (en) Techniques for rendering 2D vector graphics on mobile devices
Hernández et al. Simple dynamic lod for geometry images

Legal Events

Date Code Title Description
WITB Written withdrawal of application