KR101980200B1 - 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법 - Google Patents

베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법 Download PDF

Info

Publication number
KR101980200B1
KR101980200B1 KR1020120075877A KR20120075877A KR101980200B1 KR 101980200 B1 KR101980200 B1 KR 101980200B1 KR 1020120075877 A KR1020120075877 A KR 1020120075877A KR 20120075877 A KR20120075877 A KR 20120075877A KR 101980200 B1 KR101980200 B1 KR 101980200B1
Authority
KR
South Korea
Prior art keywords
bounding box
control point
curve
bezier curve
tile
Prior art date
Application number
KR1020120075877A
Other languages
English (en)
Other versions
KR20140009634A (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 삼성전자주식회사
Priority to KR1020120075877A priority Critical patent/KR101980200B1/ko
Priority to US13/940,780 priority patent/US9672642B2/en
Publication of KR20140009634A publication Critical patent/KR20140009634A/ko
Application granted granted Critical
Publication of KR101980200B1 publication Critical patent/KR101980200B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)

Abstract

베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법에 관한 것으로서, 입력 데이터에 포함되는 베이지어 커브(bezier curve)를 식별하는 커브 식별부, 상기 식별된 베이지어 커브에 대응되는 복수의 바운딩 박스(bounding box)를 생성하는 바운딩 박스 생성부, 및 상기 생성된 복수의 바운딩 박스에 기초하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리하는 타일 비닝 처리부를 포함할 수 있다.

Description

베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법{APPARATUS AND METHOD OF PERFORMING TILE BINNING OF BEZIER CURVE}
아래의 실시예들은 그래픽 처리를 위해 베이지어 커브에 대해 타이트한 적어도 하나 이상의 바운딩 박스를 생성하고, 상기 생성된 바운딩 박스를 이용하여 효율적으로 타일 비닝을 수행하는 기술적 사상을 개시한다.
3차원 그래픽 데이터는 크기가 크기 때문에 메모리 대역폭을 최소화 할 수 있는 방법이 요구된다.
모바일향 제품과 같이 임베디드 시스템 내에서는 이러한 메모리 대역폭을 줄이기 위한 방안이 필요하다. Imagination 사에서는 모바일향 제품에서 3차원 그래픽을 처리하기 위한 방법으로 타일(Tile) 기반의 렌더링(Tile Based Rendering; TBR)을 사용하고 있다.
타일(Tile) 기반의 렌더링이란, 화면을 여러 개의 타일로 나누고, 타일 단위로 화면에 표시하는 방법이다. 이러한 방식의 렌더링은 타일 내에 속하는 3 차원 그래픽 데이터들만을 성능이 빠른 온-칩(On-chip) 메모리로 로드하여 처리하기 때문에 외부 메모리로의 접근이 줄어 필요로 하는 외부 메모리 대역폭을 줄일 수 있다.
일반적으로 외부 메모리에 접근하는 대신 내부 메모리에 접근하는 경우, 전력소모 면에서 10배 가량 전력 소모를 줄일 수 있어 긴 배터리 수명을 제공할 수 있다.
타일 내에 속한 커브(Curves)를 그리기 위해서는 어떤 도형들이 현재 타일에 속하는지 미리 조사하는 과정이 필요하다.
이를 타일 비닝(Tile Binning)이라 하며, 각 도형을 둘러싸는 외곽의 바운딩 박스를 생성하고 바운딩 박스와 겹치는 타일들의 정보를 조사하여 타일 빈(Tile Bin) 또는 타일 비너(Tile Binner)라 불리는 자료구조에 저장할 수 있다.
일실시예에 따른 그래픽 처리 장치는, 입력 데이터에 포함되는 베이지어 커브(bezier curve)를 식별하는 커브 식별부, 상기 식별된 베이지어 커브에 대응되는 복수의 바운딩 박스(bounding box)를 생성하는 바운딩 박스 생성부, 및 상기 생성된 복수의 바운딩 박스에 기초하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리하는 타일 비닝 처리부를 포함할 수 있다.
일실시예에 따른 바운딩 박스 생성부는, 상기 식별된 베이지어 커브 상에서 복수의 컨트롤 포인트(control point)를 결정하고, 상기 결정된 복수의 컨트롤 포인트를 이용하여 상기 복수의 바운딩 박스를 생성할 수 있다.
일실시예에 따른 바운딩 박스 생성부는, 상기 식별된 베이지어 커브 상에서 제1 컨트롤 포인트, 제2 컨트롤 포인트, 및 제3 컨트롤 포인트를 결정할 수 있다.
일실시예에 따른 상기 바운딩 박스 생성부는, 상기 결정된 제1 컨트롤 포인트, 제2 컨트롤 포인트, 및 제3 컨트롤 포인트 중에서 적어도 하나를 꼭지점으로 하여 상기 복수의 바운딩 박스를 생성할 수 있다.
일실시예에 따른 상기 바운딩 박스 생성부는, 상기 식별된 베이지어 커브의 극대값(local maximum)을 갖는 상기 제2 컨트롤 포인트를 결정하고, 최소값(global minimum)을 갖는 상기 제1 컨트롤 포인트 또는 제3 컨트롤 포인트를 결정할 수 있다.
일실시예에 따른 상기 바운딩 박스 생성부는, 상기 식별된 베이지어 커브의 극소값(local minimum)을 갖는 상기 제2 컨트롤 포인트를 결정하고, 최대값(global maximum)을 갖는 상기 제1 컨트롤 포인트 또는 제3 컨트롤 포인트를 결정할 수 있다.
일실시예에 따른 상기 바운딩 박스 생성부는, 상기 제1 컨트롤 포인트 및 상기 제2 컨트롤 포인트를 꼭지점으로 이용하여 제1 바운딩 박스를 생성하고, 상기 제2 컨트롤 포인트 및 제3 컨트롤 포인트를 꼭지점으로 이용하여 제2 바운딩 박스를 생성할 수 있다.
일실시예에 따른 상기 타일 비닝 처리부는, 상기 생성된 복수의 바운딩 박스로 구분되는 면적의 적어도 일부분이 타일 내부에 존재하는지 여부를 판단하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리할 수 있다.
일실시예에 따른 그래픽 처리 장치는 입력 데이터에 포함되는 베이지어 커브(bezier curve)를 식별하는 커브 식별부, 상기 식별된 베이지어 커브의 종류를 확인하고, 상기 확인된 베이지어 커브의 종류가 반영된 바운딩 박스(bounding box)를 생성하는 바운딩 박스 생성부, 및 상기 생성된 바운딩 박스에 기초하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리하는 타일 비닝 처리부를 포함할 수 있다.
일실시예에 따른 상기 바운딩 박스 생성부는, 상기 식별된 베이지어 커브가 스트로크드 커브(stroked curve)의 형태인지 또는 필드 커브(filled curve)의 형태인지를 판단하고, 상기 식별된 베이지어 커브가 스트로크드 커브의 형태인 경우에 상기 식별된 베이지어 커브에 대응되는 복수의 바운딩 박스(bounding box)를 생성할 수 있다.
일실시예에 따른 상기 타일 비닝 처리부는, 상기 생성된 복수의 바운딩 박스로 구분되는 면적의 적어도 일부분이 타일 내부에 존재하는지 여부를 판단하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리할 수 있다.
일실시예에 따른 그래픽 처리 방법에 있어서, 입력 데이터에 포함되는 베이지어 커브(bezier curve)를 식별하는 단계, 상기 식별된 베이지어 커브 상에서 복수의 컨트롤 포인트(control point)를 결정하는 단계, 상기 결정된 복수의 컨트롤 포인트를 이용하여 상기 복수의 바운딩 박스(bounding box)를 생성하는 단계, 및 상기 생성된 복수의 바운딩 박스에 기초하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리하는 단계를 포함할 수 있다.
일실시예에 따른 상기 복수의 바운딩 박스(bounding box)를 생성하는 단계는, 상기 식별된 베이지어 커브 상에서 제1 컨트롤 포인트, 제2 컨트롤 포인트, 및 제3 컨트롤 포인트를 결정하는 단계, 상기 제1 컨트롤 포인트 및 상기 제2 컨트롤 포인트를 꼭지점으로 이용하여 제1 바운딩 박스를 생성하는 단계, 및 상기 제2 컨트롤 포인트 및 제3 컨트롤 포인트를 이용하여 제2 바운딩 박스를 생성하는 단계를 포함할 수 있다.
일실시예에 따른 상기 타일 비닝을 처리하는 단계는, 상기 생성된 제1 바운딩 박스 및 제2 바운딩 박스로 구분되는 면적의 적어도 일부분이 타일 내부에 존재하는지 여부를 판단하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리하는 단계를 포함할 수 있다.
도 1은 일실시예에 따른 타일 기반의 렌더링 파이프 라인(Tile-based Rendering (TBR) Pipeline)을 설명하는 도면이다.
도 2는 일실시예에 따른 그래픽 처리 장치를 설명하는 블록도이다.
도 3 및 4는 스트로크드 커브(stroked curve) 형태의 베이지어 커브에 대해 생성되는 복수의 바운딩 박스를 설명하는 도면이다.
도 5는 베이지어 커브의 특성을 이용한 선분길이의 비례분석을 설명하는 도면이다.
도 6 및 7은 필드 커브(filled curve) 형태의 베이지어 커브에 대해 생성되는 바운딩 박스를 설명하는 도면이다.
도 8은 필드 커브 형태의 베이지어 커브에 대해 타일 비닝을 처리하는 실시예를 설명하는 도면이다.
도 9는 스트로크드 커브 형태의 베이지어 커브를 포함하는 경우에 대해 타일 비닝을 처리하는 실시예를 설명하는 도면이다.
도 10 및 11은 다양한 형태의 베이지어 커브를 설명하는 도면이다.
도 12는 베이지에 커브에 대한 컨트롤 포인트들을 입력 받아 바운딩 박스를 생성하는 일실시예에 따른 그래픽 처리 장치를 설명하는 도면이다.
도 13은 도 12에서 X, Y를 결정하는 장치를 구체적으로 설명하는 도면이다.
도 14는 일실시예에 따른 그래픽 처리 방법을 설명하는 블록도이다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
실시예들을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 실시예들의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고, 본 명세서에서 사용되는 용어(terminology)들은 실시예들을 적절히 표현하기 위해 사용된 용어들로서, 이는 사용자, 운용자의 의도 또는 해당 기술이 속하는 분야의 관례 등에 따라 달라질 수 있다. 따라서, 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일실시예에 따른 타일 기반의 렌더링 파이프 라인(100, Tile-based Rendering (TBR) Pipeline)을 설명하는 도면이다.
일실시예에 따른 배치 관리 유닛(110, BMU, Batch Management Unit)은 3차원 그래픽 데이터(Vtx array)를 입력받아 배치(Batch) 단위로 그룹핑할 수 있다.
일실시예에 따른 버텍스 쉐이더(120, VS, Vertex Shader)는 하나의 배치를 로딩하여 하나의 버텍스 데이터(Vertex data)에 대해 스크린 상의 좌표로 변환할 수 있다.
일실시예에 따른 프리머티브 어셈블러(130, PA, Primitive Assembler)는 각 점들을 조합하여 삼각형을 만든다.
일실시예에 따른 타일 비너(140, TB, Tile Binner)는 각 삼각형들에 대해 타일 비닝을 수행할 수 있다.
뿐만 아니라, 일실시예에 따른 타일 비너(140, TB, Tile Binner)는 베이지어 커브에 대해서도 타일 비닝을 수행할 수 있다.
이를 위해서, 일실시예에 따른 타일 비너(140)는 입력 데이터로부터 베이지어 커브를 식별하고, 상기 식별된 베이지어 커브가 스트로크드 커브(stroked curve)인지 필드 커브(filled curve)인지에 따라서 다르게 타일 비닝을 수행할 수 있다.
만약, 상기 식별된 베이지어 커브가 스트로크드 커브라면, 일실시예에 따른 타일 비너(140)는 상기 스트로크드 커브에 대응되는 복수의 바운딩 박스를 생성할 수 있다.
또한, 일실시예에 따른 타일 비너(140)는 상기 생성된 복수의 바운딩 박스를 이용하여 상기 식별된 베이지어 커브에 대한 타일 비닝을 수행할 수 있다.
만약, 상기 식별된 베이지어 커브가 필드 커브라면, 일실시예에 따른 타일 비너(140)는 상기 필드 커브를 위한 타이트 바운딩 박스(Tight Bounding Box)를 생성할 수 있다.
다음으로, 일실시예에 따른 타일 비너(140)는 상기 생성된 복수의 바운딩 박스 또는 타이트 바운딩 박스를 이용해서 타일 비닝을 수행할 수 있다.
타일이란 단말기의 화면을 작은 조각으로 자른 화면 단위를 말하며, 타일 비닝이란 삼각형 및 베이지어 커브 등이 화면상의 어떤 타일 내에 걸쳐 있는지를 조사하여 그 정보를 자료구조화 시킨 것을 의미한다.
일실시예에 따른 타일 디스패칭 유닛(150, TDU, Tile Dispatching Unit)은 그래픽 처리 유닛이 복수개 존재할 경우 타일 단위로 화면을 나누어 처리할 수 있도록 분배하는 역할을 수행한다.
일실시예에 따른 프래그먼트 제너레이터(160, FG, Fragment Generator)는 각 타일 별로 존재하는 삼각형 및 베이지어 커브 등에 대해 타일 비닝의 자료구조를 참조하여 렌더링을 수행할 수 있다.
즉, 일실시예에 따른 프래그먼트 제너레이터(160, FG, Fragment Generator)는 픽셀의 색, 깊이 등을 결정할 수 있다.
일실시예에 따른 픽셀 쉐이더(170, PS, Pixel Shader)는 텍스츄어(Texture)로부터 받아온 색, 투명도를 나타내는 알파(Alpha) 값을 참고하여 현재 픽셀의 색과 결합된 최종 색을 결정할 수 있다.
일실시예에 따른 래스터 오퍼레이션(180, ROP, Raster Operation)은 깊이 테스트, 알파 테스트 등을 수행함으로써 최종 화면에 보여질지 여부를 결정할 수 있다. 이러한 과정을 거쳐 3차원 그래픽 데이터는 화면에 렌더링된다.
도 2는 일실시예에 따른 그래픽 처리 장치(200)를 설명하는 블록도이다.
일실시예에 따른 그래픽 처리 장치(200)는 도 1의 타일 비너의 기능 중에서 베이지어 커브에 대해 타일 비닝을 수행하는 장치로 해석될 수 있다.
즉, 일실시예에 따른 그래픽 처리 장치(200)는 입력 데이터로부터 베이지어 커브를 식별하고, 상기 식별되는 베이지어 커브가 표시되어야 하는 타일을 보다 정확하게 결정할 수 있다. 또한, 상기 결정된 타일들을 이용하여 타일 비닝을 수행할 수 있다.
구체적으로, 일실시예에 따른 그래픽 처리 장치(200)는 커브 식별부(210), 바운딩 박스 생성부(220), 및 타일 비닝 처리부(230)를 포함할 수 있다.
일실시예에 따른 커브 식별부(210)는 입력 데이터에 포함되는 베이지어 커브(bezier curve)를 식별할 수 있다.
베이지어 커브의 정의에 의하면, 이차원(Quadratic)의 베이지어 커브는 3개의 컨트롤 포인트를 갖고, 입방체(Cubic)의 베이지어 커브는 4개의 컨트롤 포인트를 갖는다.
본 명세서에서는 설명의 편의를 위해 3개의 컨트롤 포인트를 갖는 이차원(Quadratic)의 베이지어 커브와, 상기 이차원의 베이지어 커브를 통해 생성되는 바운딩 박스를 설명한다. 하지만, 이차원의 베이지어 커브에 국한되지 않고 입방체 베이지어 커브에게도 하나 이상의 바운딩 박스를 적용할 수 있다.
일실시예에 따른 바운딩 박스 생성부(220)는 상기 식별된 베이지어 커브에 대응되는 복수의 바운딩 박스(bounding box)를 생성할 수 있다.
일실시예에 따른 바운딩 박스 생성부(220)는 상기 식별된 베이지어 커브 상에서 복수의 컨트롤 포인트(control point)를 결정하고, 상기 결정된 복수의 컨트롤 포인트를 이용하여 상기 복수의 바운딩 박스를 생성할 수 있다.
일례로, 바운딩 박스 생성부(220)는 상기 식별된 베이지어 커브 상에서 제1 컨트롤 포인트, 제2 컨트롤 포인트, 및 제3 컨트롤 포인트를 결정할 수 있다.
2차원 형태의 베이지어 커브는 정의에 따라서 컨트롤 포인트를 포함하는 사각형, 즉 바운딩 박스 내에서 렌더링될 수 있다.
일실시예에 따른 타일 비닝 처리부(230)는 상기 생성된 복수의 바운딩 박스에 기초하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리할 수 있다.
일실시예에 따른 타일 비닝 처리부(230)는 상기 생성된 복수의 바운딩 박스로 구분되는 면적의 적어도 일부분이 타일 내부에 존재하는지 여부를 판단하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리할 수 있다.
베이지어 커브 및 상기 베이지어 커브에 의해서 생성되는 복수의 바운딩 박스들은 도 3 및 4를 통해서 상세히 설명한다.
도 3 및 4는 스트로크드 커브(stroked curve) 형태의 베이지어 커브에 대해 생성되는 복수의 바운딩 박스를 설명하는 도면이다.
스트로크드 커브(stroked curve) 형태의 베이지어 커브는, 베이지어 커브로 인해서 형성되는 면적과는 상관없이 베이지어 커브 자체에 대해서만 렌더링되는 커브로 해석될 수 있다.
이와 달리, 필드 커브(filled curve) 형태의 베이지어 커브는, 베이지어 커브 자체뿐만 아니라 베이지어 커브로 인해서 형성되는 면적을 렌더링시 고려하는 커브로 해석될 수 있다.
도 3을 참고하면, 하나의 화면은 타일 1(301), 타일 2(302), 타일 3(303), 및 타일 4(304)로 분할될 수 있다.
도 3에서 보는 바와 같이, 일실시예에 따른 베이지어 커브(305)는 타일 1(301), 타일 2(302), 및 타일 3(303)에만 표시된다. 또한, 일실시예에 따른 베이지어 커브(305)는 제1 컨트롤 포인트(306), 제2 컨트롤 포인트(307), 및 제3 컨트롤 포인트(308)를 포함할 수 있다.
도 3에서 보는 바와 같이, 제1 컨트롤 포인트(306)는 일실시예에 따른 베이지어 커브(305)의 최소값으로 해석될 수 있고, 제2 컨트롤 포인트(307)는 일실시예에 따른 베이지어 커브(305)의 극대값으로 해석될 수 있다.
이에, 일실시예에 따른 바운딩 박스 생성부(220)는 복수의 바운딩 박스로서 타이트한 바운딩 박스 두 개를 생성할 수 있다.
일실시예에 따른 바운딩 박스 생성부(220)는 제1 컨트롤 포인트(306)와 제2 컨트롤 포인트(307)를 지나는 제1 바운딩 박스(309)를 생성하고, 제2 컨트롤 포인트(307)와 제3 컨트롤 포인트(308)을 지나는 제2 바운딩 박스(310)를 생성할 수 있다.
즉, 일실시예에 따른 바운딩 박스 생성부(220)는 제1 컨트롤 포인트(306), 제2 컨트롤 포인트(307), 및 제3 컨트롤 포인트(308)를 이용해서 복수의 바운딩 박스를 생성할 수 있다.
일반적으로 스트로크드 커브는 삼각형과는 달리 한쪽이 오픈(Open)된 형태의 도형이다.
도 4를 살펴보면, 스트로크드 커브(405)는 타일 1(401), 타일 2(402), 및 타일 3(403)에 표시될 수 있다.
복수의 바운딩 박스는 도 4에서 보는 바와 같이, 두 개의 바운딩 박스가 스트로크드 커브(405)의 극대값 C(T)을 서로 마주보는 형태로 생성될 수 있다.
이렇게 생성된 두 개의 바운딩 박스를 이용하여 타일 비닝을 수행하는 경우에 기존 방법에 비해 바운딩 박스로 인해서 생성되는 면적이 타일 4(404)와 중첩되지 않는다.
따라서, 바운딩 박스로 인해서 생성되는 면적이 타일 4(404)와 겹치지 않으므로, 타일 4(404)의 타일 빈(Tile Bin) 구성에 필요한 메모리가 절약될 수 있다. 또한, 타일 4(404)에서 스트로크드 커브(405)를 렌더링하지 않기 때문에 렌더링에 따른 컴퓨팅 비용이 절약될 수 있다.
베이지어 커브가 스트로크드 커브의 형태인지 또는 필드 커브의 형태인지에 따라서 바운딩 박스를 생성하는 방법이 달라질 수 있다.
먼저, 베이지어 커브가 스트로크드 커브의 형태인 경우를 설명하고, 다음으로 베이지어 커브가 필드 커브의 형태인 경우에 바운딩 박스를 계산하는 방법을 설명한다.
일실시예에 따른 바운딩 박스 생성부는, 제1 컨트롤 포인트(406)와 극대값(407, C(T))을 지나가는 제1 바운딩 박스와, 극대값(407, C(T)) 및 제2 컨트롤 포인트(408)를 지나가는 제2 바운딩 박스를 생성할 수 있다.
상기 제1 바운딩 박스와 상기 제2 바운딩 박스는 시작 컨트롤 포인트인 제1 컨트롤 포인트(406)와 극대값(407, C(T))을 마주보는 두 점으로 하는 박스와, 종료 컨트롤 포인트인 제2 컨트롤 포인트(408)와 극대값(407, C(T))을 마주보는 두 점으로 하는 또 다른 박스이다.
시작 컨트롤 포인트인 제1 컨트롤 포인트(406)와 종료 컨트롤 포인트인 제2 컨트롤 포인트(408)는 커브 생성을 위한 컨트롤 포인트로 주어지며, 극대값(407, C(T))은 도 5와 같이 계산될 수 있다.
베이지어 커브의 극대값(407, C(T))을 계산하기 위해 도 5에서 설명하는 베이지어 커브의 특성을 이용한다.
도 5는 베이지어 커브의 특성을 이용한 선분길이의 비례분석을 설명하는 도면이다.
도 5를 참고하면, 베이지어 커브의 특성 상 [수학식 1]의 관계식이 도출될 수 있다.
[수학식 1]
(1) α: 1-α= (Y0 - y0) : y1 - Y0
(2) α: 1-α= (y1 - Y1) : Y1 - y2
[수학식 1]에서, α는 P0(501) 지점에서 Y0 지점까지 이동하는데 필요한 시간 또는 P1 지점(502)에서 Y1 지점까지 이동하는데 필요한 시간이다. 또한, 1-α는 Y0 지점에서 P1 지점(502)까지 이동하는데 필요한 시간 또는 Y1 지점에서 P2 지점(503)까지 이동하는데 필요한 시간이다.
Y0 - y0는 극대값(504, C(T))의 Y좌표로 해석할 수 있고, y1 - Y0는 P1 지점의 Y좌표로 해석할 수 있다.
[수학식 1]의 관계식 (1)을 Y0 로 정리하면, [수학식 2]와 같이 정리될 수 있다.
[수학식 2]
(1-α)(Y0 - y0) =α(y1 - Y0)
(Y0 - y0)-α(Y0 - y0)=α(y1 - Y0)
Y0-αY0=α(y1 - Y0)+y0-αy0
Y0 = y0 -αy0 +αy1
[수학식 2]에서, α는 P0(501) 지점에서 Y0 지점까지 이동하는데 필요한 시간 또는 P1 지점(502)에서 Y1 지점까지 이동하는데 필요한 시간이다. 또한, 1-α는 Y0 지점에서 P1 지점(502)까지 이동하는데 필요한 시간 또는 Y1 지점에서 P2 지점(503)까지 이동하는데 필요한 시간이다. Y0 - y0는 극대값(504, C(T))의 Y좌표로 해석할 수 있고, y1 - Y0는 P1 지점의 Y좌표로 해석할 수 있다.
또한, [수학식 1]의 관계식 (2)를 Y1으로 정리하면, [수학식 3]과 같이 정리될 수 있다.
[수학식 3]
α: 1-α= (y1 - Y1) : Y1 - y2
α(Y1-y2) = (1-α)(y1 - Y1)
αY1-αy2 + (1-α)Y1 = (1-α)y1
Y1 = y1 - αy1 + αy2
[수학식 3]에서, α는 P0(501) 지점에서 Y0 지점까지 이동하는데 필요한 시간 또는 P1 지점(502)에서 Y1 지점까지 이동하는데 필요한 시간이다. 또한, 1-α는 Y0지점에서 P1 지점(502)까지 이동하는데 필요한 시간 또는 Y1 지점에서 P2 지점(503)까지 이동하는데 필요한 시간이다. Y0 - y0는 극대값(504, C(T))의 Y좌표로 해석할 수 있고, y1 - Y0는 P1 지점의 Y좌표로 해석할 수 있다.
베이지어 커브에서의 극대점에 대한 기울기는 0이므로 Y0와 Y1가 동일하다.
따라서, [수학식 2]에서 정리한 Y0과 [수학식 3]에서 정리한 Y1은 동일하며, [수학식 4]로 표현될 수 있다.
[수학식 4]
y0 - αy0 + αy1 = y1 - αy1 + αy2
[수학식 4]에서, α는 P0(501) 지점에서 Y0 지점까지 이동하는데 필요한 시간이다.
[수학식 4]를 α에 대해서 정리하면, [수학식 5]로 정리될 수 있다.
[수학식 5]
α = (y0 - y1)/(y0 - 2y1 + y2)
[수학식 5]에서, α는 P0(501) 지점에서 Y0 지점까지 이동하는데 필요한 시간이다.
계산된 α값을 [수학식 2]의 Y0 또는 [수학식 3]의 Y1에 대입하면, 2차원의 베이지어 커브(Quadratic Bezier Curve)에 대한 방정식(C(t))을 [수학식 6]과 같이 정의할 수 있다.
[수학식 6]
C(t) = (1-t)2P0 + 2(1-t)tP1 + t2P2, t ∈ [0, 1]
X(t) = (1-t)2x0 + 2(1-t)tx1 + t2x2
Y(t) = (1-t)2y0 + 2(1-t)ty1 + t2y2
베이지어 커브의 극대값일 때 좌표는 (X, Y)이고, 이 때의 t 값은 [수학식 5]의 α값일 때이므로 [수학식 6]의 X(t)를 이용해서 극대값일 때의 X좌표가 산출될 수 있다.
결과적으로, 극대값에서의 베이지어 커브에 대한 방정식이 [수학식 7]과 같이 산출될 수 있다.
[수학식 7]
C(t) = (X, Y)에서,
t = (y0 - y1)/(y0 - 2y1 + y2)
Y = (y1-y0)(y0-y1)/(y0-2y1+y2) + y0
X = (1-t)2x0+2(1-t)tx1+t2x2
도 5의 C(t)=(X, Y)에 대한 좌표를 산출하는 [수학식 7]의 방법을 적용하여, (x0, y0), C(t)를 마주보는 좌표로 하는 바운딩 박스의 좌표와, (x2, y2), C(t)를 마주보는 좌표로 하는 또 다른 바운딩 박스의 좌표가 도출될 수 있다.
다음으로, 베이지어 커브가 필드 커브의 형태인 경우에 바운딩 박스를 계산하는 방법을 설명한다.
도 6 및 7은 필드 커브(filled curve) 형태의 베이지어 커브에 대해 생성되는 바운딩 박스를 설명하는 도면이다.
도 6에서 보는 바와 같이 필드 커브 형태의 베이지어 커브(605)는 면적까지 고려되어야만 한다. 즉, 베이지어 커브(605)는 타일 1(601), 타일 2(602), 타일 3(603)에서 표시될 뿐만 아니라, 베이지어 커브(605)로 형성되는 커브의 면적이 타일 4(604)에 표시된다.
따라서, 면적까지 고려되어야 하는 베이지어 커브(605)는 하나의 바운딩 박스(606)를 생성하여 타일 비닝을 수행해야 한다.
이때, 상기 바운딩 박스(606)는 상기 베이지어 커브(605)를 지나는 세 개의 컨트롤 포인트를 통해서 생성될 수 있다.
결과적으로, 일실시예에 따른 그래픽 처리 장치는 바운딩 박스 생성부를 이용하여, 복수의 바운딩 박스를 생성하여 타일 비닝을 처리하거나, 타이트한 하나의 바운딩 박스를 생성하여 타일 비닝을 처리할 수 있다.
이를 위해서, 일실시예에 따른 그래픽 처리 장치는 입력되는 데이터로부터 식별되는 베이지어 커브를 확인하여, 복수의 바운딩 박스를 생성할 것인지 또는 타이트한 하나의 바운딩 박스를 생성할 것인지를 결정할 수 있다.
구체적으로, 일실시예에 따른 그래픽 처리 장치는 입력 데이터에 포함되는 베이지어 커브(bezier curve)를 식별하는 커브 식별부, 상기 식별된 베이지어 커브의 종류를 확인하고, 상기 확인된 베이지어 커브의 종류가 반영된 바운딩 박스(bounding box)를 생성하는 바운딩 박스 생성부, 및 상기 생성된 바운딩 박스에 기초하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리하는 타일 비닝 처리부를 포함할 수 있다.
또한, 일실시예에 따른 바운딩 박스 생성부는 상기 식별된 베이지어 커브가 스트로크드 커브(stroked curve)의 형태인지 또는 필드 커브(filled curve)의 형태인지를 우선적으로 판단할 수 있다.
이에, 일실시예에 따른 바운딩 박스 생성부는 상기 식별된 베이지어 커브가 스트로크드 커브의 형태인 경우에 상기 식별된 베이지어 커브에 대응되는 복수의 바운딩 박스(bounding box)를 생성할 수 있다.
또한, 일실시예에 따른 타일 비닝 처리부는, 상기 생성된 복수의 바운딩 박스로 구분되는 면적의 적어도 일부분이 타일 내부에 존재하는지 여부를 판단하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리할 수 있다.
도 7의 베이지어 커브는 필드 커브의 형태로서, 일실시예에 따른 바운딩 박스 생성부는 [수학식 7]로 생성할 수 있는 극대값(705, C(T))의 좌표를 이용하여 베이지어 커브에 타이트한 바운딩 박스의 BO(701), B1(702), B2(703), B3(704)의 좌표를 생성할 수 있다.
BO(701), B1(702), B2(703), B3(704)의 좌표는 [수학식 8]과 같이 정의될 수 있다.
[수학식 8]
B0 = (min (x0, x2, X), min (y0, y2, Y));
B1 = (min (x0, x2, X), max (y0, y2, Y));
B2 = (max (x0, x2, X), max (y0, y2, Y));
B3 = (max (x0, x2, X), min (y0, y2, Y));
즉, 일실시예에 따른 바운딩 박스 생성부는 제1 컨트롤 포인트의 좌표(x0, y0), 극대(소)값의 좌표(X, Y), 및 제2 컨트롤 포인트의 좌표(x2, y2) 중에서 가장 작은 X 좌표와 가장 작은 Y 좌표를 이용하여 상기 BO(701)를 결정할 수 있다.
또한, 일실시예에 따른 바운딩 박스 생성부는 제1 컨트롤 포인트의 좌표(x0, y0), 극대(소)값의 좌표(X, Y), 및 제2 컨트롤 포인트의 좌표(x2, y2) 중에서 가장 작은 X 좌표와 가장 큰 Y 좌표를 이용하여 상기 B1(702)을 결정할 수 있다.
또한, 일실시예에 따른 바운딩 박스 생성부는 제1 컨트롤 포인트의 좌표(x0, y0), 극대(소)값의 좌표(X, Y), 및 제2 컨트롤 포인트의 좌표(x2, y2) 중에서 가장 큰 X 좌표와 가장 큰 Y 좌표를 이용하여 상기 B2(703)를 결정할 수 있다.
또한, 일실시예에 따른 바운딩 박스 생성부는 제1 컨트롤 포인트의 좌표(x0, y0), 극대(소)값의 좌표(X, Y), 및 제2 컨트롤 포인트의 좌표(x2, y2) 중에서 가장 큰 X 좌표와 가장 작은 Y 좌표를 이용하여 상기 B3(704)을 결정할 수 있다.
이렇게 결정된 BO(701), B1(702), B2(703), B3(704)는 타이트한 바운딩 박스의 네 꼭지점의 좌표로 해석될 수 있다.
일례로, 바운딩 박스의 영역을 구하기 위해 BO(701), B1(702), B2(703), B3(704)을 모두 계산할 필요 없이, 서로 마주보는 BO(701), B2(703)만을 계산하거나 또는 B1(702), B3(704)만을 계산하여 바운딩 박스를 생성할 수 있다.
도 8은 필드 커브 형태의 베이지어 커브에 대해 타일 비닝을 처리하는 실시예를 설명하는 도면이다.
도 8에서 보는 바와 같이, 화면은 타일 1 내지 4로 구분되고 타일 1에는 커브 1(801), 커브 2(802), 및 커브 5(803)가 표시된다.
또한, 타일 2에는 커브 5(803)만 표시되고, 타일 3에는 커브 2(802)와 커브 5(803)가 표시된다. 또한, 커브 5(803)는 필드 커브의 방식으로서, 타일 4가 커브 5(803)를 표시한다.
이에, 메모리(804, DRAM)에 기록되어 있는 각각의 커브들은 타일 빈을 위한 데이터 구조(805)에 의해서 표시가 제어될 수 있다.
타일 빈을 위한 데이터 구조(805)는 커브 1(801)에서부터 다음 커브, 즉 커브 2(802)까지를 타일 1에 표시하고, 커브 5(803)를 타일 1에 더 표시할 것을 제어할 수 있다.
타일 빈을 위한 데이터 구조(805)는 이와 같이 메모리(804, DRAM)에 기록되어 있는 각각의 커브들에 대해서 타일별 표시를 제어할 수 있다.
마지막으로, 타일 빈을 위한 데이터 구조(805)는 타일 4에서 커브 5(803)를 표시하도록 제어할 수 있다.
도 9는 스트로크드 커브 형태의 베이지어 커브에 대해 타일 비닝을 처리하는 실시예를 설명하는 도면이다.
도 9에서 보는 바와 같이, 화면은 타일 1 내지 4로 구분되고 타일 1에는 커브 1(901), 커브 2(902), 및 커브 5(903)가 표시된다.
또한, 타일 2에는 커브 5(903)만 표시되고, 타일 3에는 커브 2(902)와 커브 5(903)가 표시된다. 또한, 커브 5(903)는 스트로크드 방식의 커브로서, 커브 5(903)가 타일 4에 표시되지 않는다.
즉, 일실시예에 따른 그래픽 처리 장치는 커브 5(903)로부터 생성되는 제1 바운딩 박스(904)와 제2 바운딩 박스(905)에 의해서 형성되는 면적이 타일 4와 중첩되어있지 않다고 판단하여, 타일 4에 커브 5(903)를 표시하지 않는다.
이에, 메모리(906, DRAM)에 기록되어 있는 각각의 커브들은 타일 빈을 위한 데이터 구조(907)에 의해서 표시가 제어될 수 있다.
타일 빈을 위한 데이터 구조(907)는 커브 1(901)에서부터 다음 커브, 즉 커브 2(902)까지를 타일 1에 표시하고, 커브 5(903)를 타일 1에 더 표시할 것을 제어할 수 있다.
타일 빈을 위한 데이터 구조(907)는 이와 같이 메모리(906, DRAM)에 기록되어 있는 각각의 커브들에 대해서 타일별 표시를 제어할 수 있다.
마지막으로, 타일 빈을 위한 데이터 구조(907)는 타일 4에서 커브 5(903)를 표시하지 않는다.
도 10 및 11은 다양한 형태의 베이지어 커브를 설명하는 도면이다.
일실시예에 따른 베이지어 커브는 다양한 형태일 수 있다.
본 명세서에서는, 위 또는 아래로 볼록한, 즉 위 또는 아래에서 극대값 또는 극소값을 갖는 베이지어 커브를 설명하였으나, 왼쪽 또는 오른쪽으로 볼록한, 즉 왼쪽 또는 오른쪽에서 극대값 또는 극소값을 갖는 베이지어 커브에도 그대로 적용될 수 있다.
즉, 도 10에서 보는 바와 같이, 상기 바운딩 박스 생성부는 식별된 베이지어 커브(1001)의 극대값(local maximum)이 왼쪽에서 형성될 수 있도록, 상기 제2 컨트롤 포인트(1003)를 결정하고, 제1 컨트롤 포인트(1002)가 최소값(global minimum)으로 표현되는 것을 고려하여 바운딩 박스를 생성할 수 있다. 제3 컨트롤 포인트(1004)는 상기 바운딩 박스의 위쪽면에 대한 Y값을 산출하는데 이용될 수 있다.
마찬가지로, 상기 바운딩 박스 생성부는 식별된 베이지어 커브(1005)의 극대값(local maximum)이 오른쪽에서 형성될 수 있도록, 제2 컨트롤 포인트(1008)를 결정하고, 제1 컨트롤 포인트(1006)가 최소값(global minimum)으로 표현되는 것을 고려하여 바운딩 박스를 생성할 수 있다. 마찬가지로, 제3 컨트롤 포인트(1007)는 상기 바운딩 박스의 위쪽면에 대한 Y값을 산출하는데 이용될 수 있다.
도 11은 제2 컨트롤 포인트(1103) P1(1, 3)의 y 좌표값이 제1 컨트롤 포인트(1102) P0(0, 0)와 제3 컨트롤 포인트(1104) P2(4, 4)의 y 좌표 값의 사이에 존재하는 베이지어 커브(1101)를 도시한다.
이 경우에 베이지어 커브를 통해서 극대값 또는 극소값을 계산하기가 불가능하여 복수의 바운딩 박스를 생성하지 못하고, 하나의 타이트한 바운딩 박스를 생성하여 타일 비닝을 수행할 수 있다.
도 12는 베이지에 커브에 대한 컨트롤 포인트들을 입력 받아 바운딩 박스를 생성하는 일실시예에 따른 그래픽 처리 장치를 설명하는 도면이다.
일실시예에 따른 그래픽 처리 장치(1200)는 필드 타입과 함께 제1 컨트롤 포인트의 좌표(x0, y0), 제2 컨트롤 포인트의 좌표(x1, y1), 및 제3 컨트롤 포인트의 좌표(x2, y2)에 대한 정보(1210)를 입력 받는다.
이에, 일실시예에 따른 그래픽 처리 장치(1200)는 논리 구조(1220)를 이용하여 제1 컨트롤 포인트의 좌표(x0, y0), 제2 컨트롤 포인트의 좌표(x1, y1), 및 제3 컨트롤 포인트의 좌표(x2, y2) 중에서 가장 작은 x 좌표 값, 가장 큰 x 좌표값, 가장 작은 y 좌표 값, 가장 큰 y 좌표값 등을 출력한다.
일실시예에 따른 그래픽 처리 장치(1200)는 필드 타입에 따라서 동작하는 논리 구조(1230)를 이용해서 데이터의 출력을 선별할 수 있다.
다시 말해서, 필드 타입이 스트로크드 커브인 경우에 논리 구조(1230)는 T(True)를 입력 받아 B'0~B'3가 B0~B3으로 식별되는 바운딩 박스에 대한 정보를 출력할 수 있다. 또한, 일실시예에 따른 그래픽 처리 장치(1200)는 필드 타입에 관계없이 B4~B7으로 식별되는 또 다른 바운딩 박스에 대한 정보를 출력할 수 있다.
또한, 필드 타입이 필드 커브인 경우에 논리 구조(1230)는 F(False)를 입력 받아 B''0~B''3가 B0~B3으로 식별되는 바운딩 박스에 대한 정보만을 출력할 수 있다. 필드 타입인 경우 B4~B7은 무시된다.
도 13은 도 12에서 X와 Y를 결정하는 장치(1300)를 구체적으로 설명하는 도면이다.
일실시예에 따른 장치(1300)는 제1 컨트롤 포인트의 좌표(x0, y0), 제2 컨트롤 포인트의 좌표(x1, y1), 및 제3 컨트롤 포인트의 좌표(x2, y2)에 대한 정보(1310)를 입력 받아 X, Y(1320)를 출력할 수 있다.
도 13을 살펴보면, MinX02, MinY02는 제1 컨트롤 포인트의 좌표(x0, y0), 제2 컨트롤 포인트의 좌표(x1, y1), 및 제3 컨트롤 포인트의 좌표(x2, y2)에 대한 정보(1310)들 중에서 입력되는 값의 최소값을 출력하는 장치이다.
예를 들어, MinX02에 x0와 x2가 입력된다면, 상기 MinX02는 상기 입력되는 x0와 x2 중에서 최소 값을 출력할 수 있다.
또한, MinY02에 y0와 y2가 입력된다면, 상기 MinY02는 상기 입력되는 y0와 y2 중에서 최소 값을 출력할 수 있다.
마찬가지로, MaxX02, MaxY02는 제1 컨트롤 포인트의 좌표(x0, y0), 제2 컨트롤 포인트의 좌표(x1, y1), 및 제3 컨트롤 포인트의 좌표(x2, y2)에 대한 정보(1310)들 중에서 입력되는 값의 최소값을 출력하는 장치이다.
T/F 로직은 조건이 참인 경우에 T 단자의 입력을 출력하고, 조건이 거짓인 경우 F의 단자 입력을 출력하는 장치이다.
이차의 베이지어 커브(Quadratic Bezier Curve)에 대한 타이트 바운딩 박스(Tight Bounding Box)는 위와 같은 장치(1300)로만 제한되지 않으며 일부 요소 또는 전부를 소프트웨어로 구현할 수도 있다.
도 14는 일실시예에 따른 그래픽 처리 방법을 설명하는 블록도이다.
일실시예에 따른 그래픽 처리 방법은 입력 데이터에 포함되는 베이지어 커브(bezier curve)를 식별할 수 있다(단계 1301).
또한, 일실시예에 따른 그래픽 처리 방법은 상기 식별된 베이지어 커브 상에서 복수의 컨트롤 포인트(control point)를 결정할 수 있다(1302).
일실시예에 따른 그래픽 처리 방법은 상기 결정된 복수의 컨트롤 포인트를 이용하여 상기 복수의 바운딩 박스(bounding box)를 생성할 수 있다(1303).
일실시예에 따른 그래픽 처리 방법은 상기 복수의 바운딩 박스(bounding box)를 생성하기 위해서, 상기 식별된 베이지어 커브 상에서 제1 컨트롤 포인트, 제2 컨트롤 포인트, 및 제3 컨트롤 포인트를 결정할 수 있다.
또한, 일실시예에 따른 그래픽 처리 방법은 상기 제1 컨트롤 포인트 및 상기 제2 컨트롤 포인트를 꼭지점으로 이용하여 제1 바운딩 박스를 생성하고, 상기 제2 컨트롤 포인트 및 제3 컨트롤 포인트를 이용하여 제2 바운딩 박스를 생성할 수 있다.
일실시예에 따른 그래픽 처리 방법은 상기 생성된 복수의 바운딩 박스에 기초하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리할 수 있다(1304).
일실시예에 따른 그래픽 처리 방법은 상기 타일 비닝을 처리하기 위해서, 상기 생성된 제1 바운딩 박스 및 제2 바운딩 박스로 구분되는 면적의 적어도 일부분이 타일 내부에 존재하는지 여부를 판단하여 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리할 수 있다.
일실시예에 따른 그래픽 처리 장치 및 방법을 이용하면, 베이지어의 방정식을 계산하지 않고, 컨트롤 포인트들을 이용하여 바운딩 박스를 생성할 수 있다.
이로써, 타일 기반의 렌더링 파이프라인 상에서 타일 빈의 구성 단계를 효율적으로 처리함으로써 베이지어 커브에 대해서 적은 시스템 자원으로 표현할 수 있다.
따라서, 가속 렌더링이 어렵던 Bezier Curve를 포함한 2D Graphics 분야에서, 가속 렌더링을 이용할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
200: 그래픽 처리 장치
210: 커브 식별부
220: 바운딩 박스 생성부
230: 타일 비닝 처리부

Claims (17)

  1. 입력 데이터에 포함되는 베이지어 커브(bezier curve)를 식별하는 커브 식별부;
    상기 식별된 베이지어 커브에 대응하는 복수의 바운딩 박스(bounding box)를 생성하는 바운딩 박스 생성부; 및
    상기 생성된 복수의 바운딩 박스에 기초하여, 상기 식별된 베이지어 커브에 대한 타일 비닝(tile binning)을 처리하는 타일 비닝 처리부를 포함하되,
    상기 바운딩 박스 생성부는:
    상기 식별된 베이지어 커브 상에서 제 1 컨트롤 포인트(control point) 및 제 2 컨트롤 포인트를 결정하고;
    상기 제 1 컨트롤 포인트 및 상기 제 2 컨트롤 포인트에 기초하여, 상기 식별된 베이지어 커브의 극대값(local maximum) 또는 극소값(local minimum)을 제 3 컨트롤 포인트로 결정하고;
    상기 제 1 컨트롤 포인트 및 상기 제 3 컨트롤 포인트를 각각 상기 복수의 바운딩 박스 중 제 1 바운딩 박스의 제 1 꼭지점 및 제 2 꼭지점으로 설정하여 상기 제 1 바운딩 박스를 생성하는 그래픽 처리 장치.
  2. 제 1 항에 있어서,
    상기 바운딩 박스 생성부는:
    상기 식별된 베이지어 커브의 종류를 판단하고;
    상기 식별된 베이지어 커브의 상기 종류에 따라 상기 복수의 바운딩 박스를 생성하거나 하나의 바운딩 박스를 생성하도록 더 구성되는 그래픽 처리 장치.
  3. 제 1 항에 있어서,
    상기 바운딩 박스 생성부는 상기 제 1 컨트롤 포인트, 상기 제 2 컨트롤 포인트 및 상기 제 3 컨트롤 포인트 사이의 비례 관계를 이용하여 상기 제 3 컨트롤 포인트를 결정하고,
    상기 비례 관계는 상기 베이지어 커브의 특성에 기초하는 그래픽 처리 장치.
  4. 제 1 항에 있어서,
    상기 바운딩 박스 생성부는 상기 제 2 컨트롤 포인트 및 상기 제 3 컨트롤 포인트를 각각 상기 복수의 바운딩 박스 중 제 2 바운딩 박스의 제 3 꼭지점 및 제 4 꼭지점으로 설정하여 상기 제 2 바운딩 박스를 생성하고,
    상기 제 2 바운딩 박스는 상기 제 1 바운딩 박스에 인접하여 위치하는 그래픽 처리 장치.
  5. 제 1 항에 있어서,
    상기 바운딩 박스 생성부는:
    상기 극대값(local maximum)을 상기 제 3 컨트롤 포인트로 결정하고;
    상기 식별된 베이지어 커브의 최소값(global minimum)을 상기 제 1 컨트롤 포인트 또는 상기 제 2 컨트롤 포인트로 결정하는 그래픽 처리 장치.
  6. 제 1 항에 있어서,
    상기 바운딩 박스 생성부는:
    상기 극소값(local minimum)을 상기 제 3 컨트롤 포인트로 결정하고;
    상기 식별된 베이지어 커브의 최대값(global maximum)을 상기 제 1 컨트롤 포인트 또는 상기 제 2 컨트롤 포인트로 결정하는 그래픽 처리 장치.
  7. 제 4 항에 있어서,
    상기 바운딩 박스 생성부는:
    상기 제 1 꼭지점이 상기 제 2 꼭지점을 마주보도록 상기 제 1 바운딩 박스를 생성하고;
    상기 제 3 꼭지점이 상기 제 4 꼭지점을 마주보도록 상기 제 2 바운딩 박스를 생성하는 그래픽 처리 장치.
  8. 제 1 항에 있어서,
    상기 타일 비닝 처리부는:
    상기 생성된 복수의 바운딩 박스로 구분되는 면적의 적어도 일부분이 타일 내부에 존재하는지 여부를 판단하여, 상기 식별된 베이지어 커브에 대한 타일 비닝을 처리하는 그래픽 처리 장치.
  9. 입력 데이터에 포함되는 베이지어 커브(bezier curve)를 식별하는 커브 식별부;
    상기 식별된 베이지어 커브의 종류를 판단하고, 상기 식별된 베이지어 커브의 상기 종류에 대응하는 적어도 하나의 바운딩 박스(bounding box)를 생성하는 바운딩 박스 생성부; 및
    상기 생성된 적어도 하나의 바운딩 박스에 기초하여, 상기 식별된 베이지어 커브에 대한 타일 비닝(tile binning)을 처리하는 타일 비닝 처리부를 포함하되,
    상기 바운딩 박스 생성부는:
    상기 식별된 베이지어 커브 상에서 복수의 컨트롤 포인트(control point)를 결정하고;
    상기 식별된 베이지어 커브의 상기 종류가 상기 베이지어 커브로 인해 면적이 형성되지 않는 스트로크드(stroked) 커브인 경우 상기 복수의 컨트롤 포인트를 이용하여 복수의 바운딩 박스를 생성하고, 상기 식별된 베이지어 커브의 상기 종류가 상기 베이지어 커브로 인해 상기 면적이 형성되는 필드(filled) 커브인 경우 상기 복수의 컨트롤 포인트를 이용하여 하나의 바운딩 박스를 생성하는 그래픽 처리 장치.
  10. 제 9 항에 있어서,
    상기 복수의 컨트롤 포인트는 제 1 컨트롤 포인트, 제 2 컨트롤 포인트 및 제 3 컨트롤 포인트를 포함하고,
    상기 바운딩 박스 생성부는:
    상기 제 1 컨트롤 포인트 및 상기 제 2 컨트롤 포인트를 결정하고;
    상기 제 1 컨트롤 포인트, 상기 제 2 컨트롤 포인트 및 상기 제 3 컨트롤 포인트 사이의 비례 관계를 이용하여 상기 제 3 컨트롤 포인트를 결정하고,
    상기 비례 관계는 상기 베이지어 커브의 특성에 기초하는 그래픽 처리 장치.
  11. 제 9 항에 있어서,
    상기 타일 비닝 처리부는:
    상기 생성된 적어도 하나의 바운딩 박스로 구분되는 면적의 적어도 일부분이 타일 내부에 존재하는지 여부를 판단하여, 상기 식별된 베이지어 커브에 대한 타일 비닝을 처리하는 그래픽 처리 장치.
  12. 입력 데이터에 포함되는 베이지어 커브 상의 제 1 컨트롤 포인트(control point) 및 제 2 컨트롤 포인트에 기초하여, 상기 베이지어 커브의 종류에 따라 상이한 방식으로 적어도 하나의 바운딩 박스(bounding box)를 생성하는 바운딩 박스 생성부; 및
    상기 적어도 하나의 바운딩 박스에 기초하여, 상기 베이지어 커브에 대한 타일 비닝(tile binning)을 처리하는 타일 비닝 처리부를 포함하되,
    상기 바운딩 박스 생성부는
    상기 베이지어 커브의 상기 종류가 상기 베이지어 커브로 인해 면적이 형성되지 않는 스트로크드(stroked) 커브인 경우 상기 제 1 컨트롤 포인트 및 상기 제 2 컨트롤 포인트를 각각 상기 적어도 하나의 바운딩 박스 중 제 1 바운딩 박스의 제 1 꼭지점 및 제 2 꼭지점으로 설정하여 상기 제 1 바운딩 박스를 생성하고,
    상기 제 2 컨트롤 포인트는 상기 베이지어 커브의 극대값(local maximum) 또는 극소값(local minimum)인 그래픽 처리 장치.
  13. 제 12 항에 있어서,
    상기 바운딩 박스 생성부는 상기 베이지어 커브의 상기 종류가 상기 스트로크드(stroked) 커브인 경우 복수의 바운딩 박스를 생성하고, 상기 베이지어 커브의 상기 종류가 상기 베이지어 커브로 인해 상기 면적이 형성되는 필드(filled) 커브인 경우 하나의 바운딩 박스를 생성하는 그래픽 처리 장치.
  14. 제 13 항에 있어서,
    상기 스트로크드 커브를 정의하기 위한 복수의 컨트롤 포인트의 좌표들이 상기 필드 커브를 정의하기 위한 복수의 컨트롤 포인트의 좌표들과 동일한 경우, 상기 복수의 바운딩 박스에 의해 형성되는 면적은 상기 하나의 바운딩 박스에 의해 형성되는 면적보다 작은 그래픽 처리 장치.
  15. 제 12 항에 있어서,
    상기 바운딩 박스 생성부는 상기 베이지어 커브의 상기 종류가 상기 스트로크드(stroked) 커브인 경우 상기 제 2 컨트롤 포인트 및 제 3 컨트롤 포인트를 각각 상기 적어도 하나의 바운딩 박스 중 제 2 바운딩 박스의 제 3 꼭지점 및 제 4 꼭지점으로 설정하여 상기 제 2 바운딩 박스를 생성하고,
    상기 제 2 바운딩 박스는 상기 제 1 바운딩 박스에 인접하여 위치하는 그래픽 처리 장치.
  16. 제 13 항에 있어서,
    상기 바운딩 박스 생성부는 상기 베이지어 커브의 상기 종류가 상기 필드(filled) 커브인 경우 상기 제 1 컨트롤 포인트 및 제 3 컨트롤 포인트를 각각 상기 하나의 바운딩 박스의 제 5 꼭지점 및 제 6 꼭지점으로 설정하고 상기 제 2 컨트롤 포인트를 상기 하나의 바운딩 박스의 경계선 상에 위치하도록 설정하여 상기 하나의 바운딩 박스를 생성하는 그래픽 처리 장치.
  17. 제 13 항에 있어서,
    상기 극대값 및 상기 극소값이 계산되지 않는 경우, 상기 바운딩 박스 생성부는 상기 하나의 바운딩 박스를 생성하는 그래픽 처리 장치.
KR1020120075877A 2012-07-12 2012-07-12 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법 KR101980200B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120075877A KR101980200B1 (ko) 2012-07-12 2012-07-12 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법
US13/940,780 US9672642B2 (en) 2012-07-12 2013-07-12 Apparatus and method of performing tile binning of bezier curve

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120075877A KR101980200B1 (ko) 2012-07-12 2012-07-12 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140009634A KR20140009634A (ko) 2014-01-23
KR101980200B1 true KR101980200B1 (ko) 2019-05-20

Family

ID=49913610

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120075877A KR101980200B1 (ko) 2012-07-12 2012-07-12 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US9672642B2 (ko)
KR (1) KR101980200B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3872767A1 (en) 2014-04-05 2021-09-01 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
KR102585220B1 (ko) * 2015-03-20 2023-10-05 삼성전자주식회사 타일 기반 렌더링을 수행하는 방법 및 장치
EP3070677B1 (en) * 2015-03-20 2021-07-28 Samsung Electronics Co., Ltd. Method and apparatus for tile-based rendering
KR102354989B1 (ko) * 2015-04-14 2022-01-24 삼성전자주식회사 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.
KR102443697B1 (ko) 2015-09-11 2022-09-15 삼성전자주식회사 경로 스트로크를 수행하는 방법 및 장치
US10347016B2 (en) * 2016-01-12 2019-07-09 Monotype Imaging Inc. Converting font contour curves
US10936792B2 (en) 2017-12-21 2021-03-02 Monotype Imaging Inc. Harmonizing font contours
JP2023025503A (ja) * 2021-08-10 2023-02-22 株式会社ニューフレアテクノロジー データ生成方法、荷電粒子ビーム照射装置及びプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011238213A (ja) * 2010-04-07 2011-11-24 Intel Corp 配置されたパラメトリック曲線の階層的バウンディング

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100219072B1 (ko) 1996-04-02 1999-09-01 김영환 중심축 변환을 이용한 폰트 및 그 폰트 서체의 변형 및 라스터라이징 방식
JPH11345344A (ja) 1998-06-01 1999-12-14 Matsushita Electric Ind Co Ltd 3次曲線を与える方法及び装置
US6784884B1 (en) * 2000-09-29 2004-08-31 Intel Corporation Efficient parametric surface binning based on control points
EP1562138B1 (en) 2004-02-06 2009-08-19 Dassault Systèmes A process for drafting a curve in a computer-aided design system
KR20040027852A (ko) 2004-03-15 2004-04-01 이건용 벡터 이미지를 표현하는 폴리곤 편집에 관한 방법
US7564459B2 (en) 2005-10-31 2009-07-21 Microsoft Corporation Resolution-independent curve rendering using programmable graphics hardware
JP2009086842A (ja) 2007-09-28 2009-04-23 Fujitsu Ltd ハーネス設計支援装置及び方法及びプログラム
US20090141038A1 (en) 2007-11-02 2009-06-04 Newaskar Saket Prashant Bezier Curves for Low Memory Embedded Graphics Systems
US8373702B2 (en) 2009-05-15 2013-02-12 Stmicroelectronics S.R.L. System and method for adaptive tessellation of a curve
GB0913170D0 (en) 2009-07-28 2009-09-02 Advanced Risc Mach Ltd Graphics processing systems
EP2383669B1 (en) 2010-04-02 2018-07-11 Dassault Systèmes Design of a part modeled by parallel geodesic curves
US8797325B2 (en) * 2010-04-27 2014-08-05 Broadcom Corporation Method and system for decomposing complex shapes into curvy RHTs for rasterization
GB201104066D0 (en) * 2011-03-09 2011-04-20 Imagination Tech Ltd Compression of a tessellated primitive index list in a tile rendering system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011238213A (ja) * 2010-04-07 2011-11-24 Intel Corp 配置されたパラメトリック曲線の階層的バウンディング

Also Published As

Publication number Publication date
US20140015838A1 (en) 2014-01-16
US9672642B2 (en) 2017-06-06
KR20140009634A (ko) 2014-01-23

Similar Documents

Publication Publication Date Title
KR101980200B1 (ko) 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법
KR102276909B1 (ko) 렌더링 방법 및 장치
US8325177B2 (en) Leveraging graphics processors to optimize rendering 2-D objects
KR101609266B1 (ko) 타일 기반의 랜더링 장치 및 방법
KR20140073951A (ko) 베이지어 커브를 렌더링하는 장치 및 방법
KR20110093404A (ko) 3차원 그래픽스 랜더링 장치 및 그 방법
US7948487B2 (en) Occlusion culling method and rendering processing apparatus
US7812837B2 (en) Reduced Z-buffer generating method, hidden surface removal method and occlusion culling method
EP2860700B1 (en) Image processing apparatus and method
KR20150039495A (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
CN103946895A (zh) 基于平铺块的呈现中的镶嵌
JP2017188095A (ja) 光線バンドルの光線に対する差分データを決定する方法及びグラフィックス処理ユニット
JP2008165760A (ja) グラフィックスを処理する方法および装置
KR20150122519A (ko) 경로 렌더링을 수행하는 방법 및 장치.
US9324127B2 (en) Techniques for conservative rasterization
WO2016040538A1 (en) Convex polygon clipping during rendering
KR20120065589A (ko) 저전력을 위한 타일 비닝 장치 및 방법
US10262391B2 (en) Graphics processing devices and graphics processing methods
KR20150060026A (ko) 이전 커맨드 정보를 이용하여 현재 커맨드를 처리하는 방법 및 장치.
JP3086426B2 (ja) オブジェクトのラスタ化方法及び装置
US9858709B2 (en) Apparatus and method for processing primitive in three-dimensional (3D) graphics rendering system
JP5864474B2 (ja) 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法
US10062140B2 (en) Graphics processing systems
KR20150042095A (ko) 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법
JP6205200B2 (ja) ソート機能を持つ画像処理装置及び画像処理方法

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