KR20140073951A - 베이지어 커브를 렌더링하는 장치 및 방법 - Google Patents
베이지어 커브를 렌더링하는 장치 및 방법 Download PDFInfo
- Publication number
- KR20140073951A KR20140073951A KR1020120142007A KR20120142007A KR20140073951A KR 20140073951 A KR20140073951 A KR 20140073951A KR 1020120142007 A KR1020120142007 A KR 1020120142007A KR 20120142007 A KR20120142007 A KR 20120142007A KR 20140073951 A KR20140073951 A KR 20140073951A
- Authority
- KR
- South Korea
- Prior art keywords
- rendering
- tile
- point
- bezier curve
- curve
- Prior art date
- Legal status (The legal status 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 status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Geometry (AREA)
Abstract
타일 비닝된 베이지어 커브를 렌더링하는 장치 및 방법에 관한 것으로서, 타일 비닝된 베이지어 커브에 대해서 적어도 하나 이상의 타일 별로 렌더링 방법을 결정하는 렌더링 계산부, 및 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행하는 렌더링 처리부를 포함하고, 렌더링 계산부는, 렌더링의 수행 중, 인접한 타일과의 경계점에서 베이지어 커브의 렌더링을 중지하고, 경계점의 위치가 반영된 경계값을 인접한 타일의 렌더링시 이용하도록 렌더링 방법을 결정할 수 있다.
Description
아래의 실시예들은 타일 기반의 렌더링 시 각 타일 별로 발생하는 중복 연산을 제거하여 베이지어 커브를 렌더링하는 기술적 사상을 개시한다.
3차원 그래픽 데이터는 크기가 크기 때문에 메모리 대역폭을 최소화 할 수 있는 방법이 요구된다.
모바일향 제품과 같이 임베디드 시스템 내에서는 이러한 메모리 대역폭을 줄이기 위한 방안이 필요하다. Imagination 사에서는 모바일향 제품에서 3차원 그래픽을 처리하기 위한 방법으로 타일(Tile) 기반의 렌더링(Tile Based Rendering; TBR)을 사용하고 있다.
타일(Tile) 기반의 렌더링이란, 화면을 여러 개의 타일로 나누고, 타일 단위로 화면에 표시하는 방법이다. 이러한 방식의 렌더링은 타일 내에 속하는 3 차원 그래픽 데이터들만을 성능이 빠른 온-칩(On-chip) 메모리로 로드하여 처리하기 때문에 외부 메모리로의 접근이 줄어 필요로 하는 메모리 대역폭을 줄일 수 있다.
일반적으로 외부 메모리에 접근하는 대신 내부 메모리에 접근하는 경우, 전력소모 면에서 10배 가량 전력 소모를 줄일 수 있어 긴 배터리 수명을 제공할 수 있다.
타일 내에 속한 커브(Curves)를 그리기 위해서는 어떤 도형들이 현재 타일에 속하는지 미리 조사하는 과정이 필요하다.
이를 타일 비닝(Tile Binning)이라 하며, 각 도형을 둘러싸는 외곽의 바운딩 박스를 생성하여 바운딩 박스와 겹치는 타일들의 정보를 생성하고, 생성된 바운딩 박스와 겹치는 타일들의 정보를 타일 빈(Tile Bin) 또는 타일 비너(Tile Binner)라 불리는 자료구조에 저장할 수 있다.
타일 비닝된 베이지어 커브는 각각의 타일의 렌더링 시에 그려질 수 있다.
일실시예에 따른 타일 기반의 커브 렌더링 장치는 타일 비닝된 베이지어 커브를 렌더링하는 장치에 있어서, 상기 타일 비닝된 베이지어 커브에 대해서 적어도 하나 이상의 타일 별로 렌더링 방법을 결정하는 렌더링 계산부, 및 상기 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행하는 렌더링 처리부를 포함하고, 상기 렌더링 계산부는, 상기 렌더링의 수행 중, 인접한 타일과의 경계점에서 상기 베이지어 커브의 렌더링을 중지하고, 상기 경계점의 위치가 반영된 경계값을 상기 인접한 타일의 렌더링시 이용하도록 상기 렌더링 방법을 결정할 수 있다.
일실시예에 따른 렌더링 계산부는, 렌더링하려는 타일 내에 베이지어 커브의 시작 컨트롤 포인트(Start Control Point), 극점(Extremal Value Point), 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나가 존재하는지를 확인할 수 있다.
일실시예에 따른 렌더링 계산부는, 상기 렌더링하려는 타일 내에 베이지어 커브의 시작 컨트롤 포인트(Start Control Point) 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나가 존재하는 경우, 상기 시작 컨트롤 포인트(Start Control Point) 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나에서 상기 베이지어 커브의 렌더링을 종료하도록 상기 렌더링 방법을 결정할 수 있다.
일실시예에 따른 렌더링 계산부는, 상기 렌더링하려는 타일 내에 베이지어 커브의 극점(Extremal Value Point)이 존재하는 경우, 상기 극점(Extremal Value Point)에서 시작해서, 상기 인접한 타일과의 경계점, 상기 시작 컨트롤 포인트(Start Control Point), 및 상기 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나의 지점까지 상기 베이지어 커브를 렌더링 하도록 상기 렌더링 방법을 결정할 수 있다.
일실시예에 따른 렌더링 계산부는, 상기 베이지어 커브를 생성하는 세 점 및 상기 극점(Extremal Value Point) 간의 비율을 이용하여 상기 극점(Extremal Value Point)의 좌표가 상기 렌더링하려는 타일 내에 존재하는지를 확인할 수 있다.
일실시예에 따른 렌더링 계산부는, 상기 인접한 타일에서 상기 베이지어 커브의 렌더링 시, 상기 경계값에서부터 상기 베이지어 커브를 렌더링 하도록 상기 렌더링 방법을 결정할 수 있다.
일실시예에 따른 타일 기반의 커브 렌더링 방법은 타일 비닝된 베이지어 커브를 렌더링하는 장치의 동작 방법에 있어서, 렌더링 계산부에서, 상기 타일 비닝된 베이지어 커브에 대해서 적어도 하나 이상의 타일 별로 렌더링 방법을 결정하는 단계, 및 렌더링 처리부에서, 상기 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행하는 단계를 포함하고, 상기 렌더링 방법을 결정하는 단계는, 상기 렌더링의 수행 중, 인접한 타일과의 경계점에서 상기 베이지어 커브의 렌더링을 중지하고, 상기 경계점의 위치가 반영된 경계값을 상기 인접한 타일의 렌더링시 이용하도록 상기 경계값을 결정하는 단계를 포함할 수 있다.
일실시예에 따른 렌더링 방법을 결정하는 단계는, 렌더링하려는 타일 내에 베이지어 커브의 시작 컨트롤 포인트(Start Control Point), 극점(Extremal Value Point), 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나가 존재하는지를 확인하는 단계를 포함할 수 있다.
일실시예에 따른 렌더링 방법을 결정하는 단계는, 상기 렌더링하려는 타일 내에 베이지어 커브의 시작 컨트롤 포인트(Start Control Point) 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나가 존재하는 경우, 상기 시작 컨트롤 포인트(Start Control Point) 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나에서 상기 베이지어 커브의 렌더링을 종료하도록 상기 렌더링 방법을 결정하는 단계를 포함할 수 있다.
일실시예에 따른 렌더링 방법을 결정하는 단계는, 상기 렌더링하려는 타일 내에 베이지어 커브의 극점(Extremal Value Point)이 존재하는 경우, 상기 극점(Extremal Value Point)에서 시작해서, 상기 인접한 타일과의 경계점, 상기 시작 컨트롤 포인트(Start Control Point), 및 상기 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나의 지점까지 상기 베이지어 커브를 렌더링 하도록 상기 렌더링 방법을 결정하는 단계를 포함할 수 있다.
일실시예에 따른 렌더링 방법을 결정하는 단계는, 상기 베이지어 커브를 생성하는 세 점 및 상기 극점(Extremal Value Point) 간의 비율을 이용하여 상기 극점(Extremal Value Point)의 좌표가 상기 렌더링하려는 타일 내에 존재하는지를 확인하는 단계를 포함할 수 있다.
일실시예에 따른 렌더링 방법을 결정하는 단계는, 상기 인접한 타일에서 상기 베이지어 커브의 렌더링 시, 상기 경계값에서부터 상기 베이지어 커브를 렌더링 하도록 상기 렌더링 방법을 결정하는 단계를 포함할 수 있다.
도 1은 일실시예에 따른 타일 기반의 렌더링 파이프 라인(100, Tile-based Rendering (TBR) Pipeline)을 설명하는 도면이다.
도 2는 일실시예에 따른 타일 기반의 커브 렌더링 장치를 설명하는 블록도이다.
도 3은 시작 컨트롤 포인트 및 종료 컨트롤 포인트가 타일 1에 존재하는 경우에서 타일 1을 렌더링하는 실시예를 설명하는 도면이다.
도 4는 시작 컨트롤 포인트 및 종료 컨트롤 포인트가 타일 1에 존재하는 경우에서 타일 3을 렌더링하는 실시예를 설명하는 도면이다.
도 5는 시작 컨트롤 포인트만이 타일 1에 존재하는 경우에서 타일 1을 렌더링하는 실시예를 설명하는 도면이다.
도 6은 시작 컨트롤 포인트만이 타일 1에 존재하는 경우에서 타일 3을 렌더링하는 실시예를 설명하는 도면이다.
도 7은 극점(Extremal Value Point)만이 타일 1에 존재하는 경우에서 타일 1을 렌더링하는 실시예를 설명하는 도면이다.
도 8은 극점(Extremal Value Point)만이 타일 1에 존재하는 경우에서 타일 3을 렌더링하는 실시예를 설명하는 도면이다.
도 9는 베이지어 커브의 극점(Extremal Value Point)을 렌더링하는 순간에서의 t값(t=α)을 도출하는 실시예를 설명하는 도면이다.
도 10은 일실시예에 따른 타일 기반의 커브 렌더링 장치를 보다 구체적으로 설명하는 블록도이다.
도 11은 일실시예에 따른 타일 기반의 커브 렌더링 방법을 설명하는 흐름도이다.
도 12는 도 11에서 컨트롤 포인트의 끝인지 여부를 판단하는 구체적인 방법을 설명하는 흐름도이다.
도 13은 도 10에서의 T 생성부의 동작 방법을 설명하는 흐름도이다.
도 14는 도 10에서의 베이지어 연산 로직(Bezier Computation Logic )을 설명하는 흐름도이다.
도 2는 일실시예에 따른 타일 기반의 커브 렌더링 장치를 설명하는 블록도이다.
도 3은 시작 컨트롤 포인트 및 종료 컨트롤 포인트가 타일 1에 존재하는 경우에서 타일 1을 렌더링하는 실시예를 설명하는 도면이다.
도 4는 시작 컨트롤 포인트 및 종료 컨트롤 포인트가 타일 1에 존재하는 경우에서 타일 3을 렌더링하는 실시예를 설명하는 도면이다.
도 5는 시작 컨트롤 포인트만이 타일 1에 존재하는 경우에서 타일 1을 렌더링하는 실시예를 설명하는 도면이다.
도 6은 시작 컨트롤 포인트만이 타일 1에 존재하는 경우에서 타일 3을 렌더링하는 실시예를 설명하는 도면이다.
도 7은 극점(Extremal Value Point)만이 타일 1에 존재하는 경우에서 타일 1을 렌더링하는 실시예를 설명하는 도면이다.
도 8은 극점(Extremal Value Point)만이 타일 1에 존재하는 경우에서 타일 3을 렌더링하는 실시예를 설명하는 도면이다.
도 9는 베이지어 커브의 극점(Extremal Value Point)을 렌더링하는 순간에서의 t값(t=α)을 도출하는 실시예를 설명하는 도면이다.
도 10은 일실시예에 따른 타일 기반의 커브 렌더링 장치를 보다 구체적으로 설명하는 블록도이다.
도 11은 일실시예에 따른 타일 기반의 커브 렌더링 방법을 설명하는 흐름도이다.
도 12는 도 11에서 컨트롤 포인트의 끝인지 여부를 판단하는 구체적인 방법을 설명하는 흐름도이다.
도 13은 도 10에서의 T 생성부의 동작 방법을 설명하는 흐름도이다.
도 14는 도 10에서의 베이지어 연산 로직(Bezier Computation Logic )을 설명하는 흐름도이다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
실시예들을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 실시예들의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고, 본 명세서에서 사용되는 용어(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 생성부)는 각 타일 별로 존재하는 삼각형 및 베이지어 커브 등에 대해 타일 비닝의 자료구조를 참조하여 렌더링을 수행할 수 있다.
즉, 일실시예에 따른 프래그먼트 제너레이터(160, FG, FragmenT 생성부)는 픽셀의 색, 깊이 등을 결정할 수 있다.
일실시예에 따른 픽셀 쉐이더(170, PS, Pixel Shader)는 텍스츄어(Texture)로부터 받아온 색, 투명도를 나타내는 알파(Alpha) 값을 참고하여 현재 픽셀의 색과 결합된 최종 색을 결정할 수 있다.
일실시예에 따른 래스터 오퍼레이션(180, ROP, Raster Operation)은 깊이 테스트, 알파 테스트 등을 수행함으로써 최종 화면에 보여질지 여부를 결정할 수 있다. 이러한 과정을 거쳐 3차원 그래픽 데이터는 화면에 렌더링된다.
도 2는 일실시예에 따른 타일 기반의 커브 렌더링 장치(200)를 설명하는 블록도이다.
일실시예에 따른 타일 기반의 커브 렌더링 장치(200)는 화면을 구성하는 타일 단위로 베이지어 커브를 렌더링할 수 있다.
또한, 일실시예에 따른 타일 기반의 커브 렌더링 장치(200)는 여러 컨트롤 포인트들의 값을 이용하여 베이지어 커브의 모양을 판별하고, 베이지어 커브의 시작 컨트롤 포인트, 종료 컨트롤 포인트에서 시작하여 베이지어 커브를 렌더링할 수 있다.
뿐만 아니라, 일실시예에 따른 타일 기반의 커브 렌더링 장치(200)는 시작 컨트롤 포인트, 종료 컨트롤 포인트 이외에도 극점(Extremal Value Point)에서 렌더링을 시작할 수 있다.
이를 위해, 일실시예에 따른 타일 기반의 커브 렌더링 장치(200)는 렌더링 계산부(210) 및 렌더링 처리부(220)를 포함할 수 있다.
일실시예에 따른 렌더링 계산부(210)는 타일 비닝된 베이지어 커브에 대해서 적어도 하나 이상의 타일 별로 렌더링 방법을 결정할 수 있다.
일실시예에 따른 렌더링 처리부(220)는 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행할 수 있다.
일실시예에 따른 렌더링 계산부(210)는 중복되는 베이지어 커브의 연산을 제거하도록 렌더링 방법을 결정할 수 있다.
이를 위해서, 일실시예에 따른 렌더링 계산부(210)는 렌더링의 수행 중, 인접한 타일과의 경계점에서 베이지어 커브의 렌더링을 중지하고, 경계점의 위치가 반영된 경계값을 인접한 타일의 렌더링시 이용하도록 렌더링 방법을 결정할 수 있다.
일실시예에 따른 렌더링 계산부(210)는 렌더링하려는 타일 내에 베이지어 커브의 시작 컨트롤 포인트(Start Control Point), 극점(Extremal Value Point), 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나가 존재하는지를 확인할 수 있다.
시작 컨트롤 포인트 및 종료 컨트롤 포인트 중에서 적어도 하나가 타일 1에 존재하는 경우에 일실시예에 따른 렌더링 계산부(210)는 도 3 내지 6에서와 같이 중복되는 베이지어 커브의 연산을 제거하도록 렌더링 방법을 결정할 수 있다.
또한, 극점(Extremal Value Point)이 타일 1에 존재하는 경우에 일실시예에 따른 렌더링 계산부(210)는 도 7 및 8에서와 같이 중복되는 베이지어 커브의 연산을 제거하도록 렌더링 방법을 결정할 수 있다.
구체적으로 살펴보면, 도 3은 시작 컨트롤 포인트(310) 및 종료 컨트롤 포인트(340)가 타일 1에 존재하는 경우에서 타일 1을 렌더링하는 실시예(300)를 설명하는 도면이다.
일실시예에 따른 렌더링 계산부(210)는 베이지어 커브의 형태를 확인한 후에 타일 1에 시작 컨트롤 포인트(310)와 종료 컨트롤 포인트(340)가 모두 존재하고, 극점(Extremal Value Point)이 타일 1에 포함되지 않음을 확인할 수 있다.
시작 컨트롤 포인트(310)는 t=0인 지점을 의미하고, 종료 컨트롤 포인트(340)는 t=1인 지점을 의미한다.
극점(Extremal Value Point)은 베이지어 커브에 접하는 접선의 기울기가 양에서 음으로 또는 음에서 양으로 변경되는 순간의 지점, 다시 말해 극값(extremal value)을 나타내는 지점을 의미한다.
이에, 일실시예에 따른 렌더링 계산부(210)는 베이지어 커브를 렌더링하는 도중에 타일 1과 타일 3의 경계점(320) 도달하는 경우, 렌더링을 중지하고 경계점에서의 t값(t=α)을 타일 비너에 저장하도록 렌더링 방법을 결정할 수 있다.
일실시예에 따른 렌더링 계산부(210)는 타일 비너에 저장된 경계점에서의 t값(t=α)은 타일 3의 렌더링에 이용되도록 렌더링 방법을 결정할 수 있다.
다음으로 일실시예에 따른 렌더링 계산부(210)는 베이지어 커브를 종료 컨트롤 포인트로부터 역으로 렌더링하는 도중에 타일 1과 타일 3의 경계점(330) 도달하는 경우, 렌더링을 중지하고 경계점에서의 t값(t=β)을 타일 비너에 저장하도록 렌더링 방법을 결정할 수 있다.
일실시예에 따른 렌더링 계산부(210)는 렌더링하려는 타일 내에 베이지어 커브의 시작 컨트롤 포인트(Start Control Point) 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나가 존재하는 경우, 시작 컨트롤 포인트(Start Control Point) 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나에서 베이지어 커브의 렌더링을 종료하도록 렌더링 방법을 결정할 수도 있다.
도 4는 시작 컨트롤 포인트 및 종료 컨트롤 포인트가 타일 1에 존재하는 경우에서 타일 3을 렌더링하는 실시예(400)를 설명하는 도면이다.
도 3에서 타일 1의 렌더링이 종료되면, 타일 2의 렌더링을 거쳐 타일 3의 렌더링이 진행될 수 있다.
도 3 및 4에서 보는 바와 같이, 타일 2에는 베이지어 커브가 존재하지 않아 타일 1의 렌더링 이후에 타일 3의 렌더링이 진행되어야 한다.
도 3에서 타일 1의 렌더링 중에, 타일 1과 타일 3과의 경계점들에서 베이지어 커브의 렌더링을 종료하고 경계점들(320, 330) 두 곳에서의 t 값을 타일 비너에 저장되었다.
일실시예에 따른 렌더링 계산부(210)는 t= α에서부터 t=β까지 타일 3에서 베이지어 커브의 렌더링을 진행하도록 렌더링 방법을 결정할 수 있다.
타일 3에서는 베이지어 커브의 극점(Extremal Value Point)(410)이 존재한다.
극점(Extremal Value Point)의 극값(C(T))은 "(y0 - y1)/(y0 - 2y1 + y2)"으로 표현될 수 있고, 도 9를 통해서 구체적으로 설명한다.
렌더링 방법이 결정되면, 렌더링 처리부(220)는 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행할 수 있다.
결국, 일실시예에 따른 타일 기반의 커브 렌더링 장치(200)를 이용하면, 베이지어 커브를 분할(Partition)하지 않고, 베이지어 연산(Bezier Computation)을 타일마다 중복해서 수행하지 않기 때문에, 효과적인 성능을 제공할 수 있다.
도 5는 시작 컨트롤 포인트(510)만이 타일 1에 존재하는 경우에서 타일 1을 렌더링하는 실시예(500)를 설명하는 도면이다.
일실시예에 따른 렌더링 계산부(210)는 여러 컨트롤 포인트들의 값을 이용하여 베이지어 커브의 모양을 판별하고, 베이지어 커브의 시작 컨트롤 포인트, 종료 컨트롤 포인트에서 시작하여 베이지어 커브를 렌더링할 수 있다.
도 5의 베이지어 커브와 같이 일실시예에 따른 렌더링 계산부(210)는 시작 컨트롤 포인트(510)만이 타일 1에 포함되어 있고, 타일 3에 종료 컨트롤 포인트(520)가 포함되었다고 판별할 수 있다.
일실시예에 따른 렌더링 계산부(210)는 타일 1의 렌더링 중에 시작 컨트롤 포인트(510)로부터 타일 3과의 경계점(530)에서 렌더링을 중지하도록 렌더링 방법을 결정할 수 있다.
또한, 일실시예에 따른 렌더링 계산부(210)는 경계점(530)에서의 t값을 타일 비너에 저장하여 타일 3의 렌더링에 이용되도록 렌더링 방법을 결정할 수 있다.
렌더링 방법이 결정되면, 렌더링 처리부(220)는 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행할 수 있다.
도 6은 시작 컨트롤 포인트만이 타일 1에 존재하는 경우에서 타일 3을 렌더링하는 실시예(600)를 설명하는 도면이다.
일실시예에 따른 렌더링 계산부(210)는 타일 3의 렌더링 중에 타일 비너로부터 경계점(530)을 확인하고, 경계점(530)에서부터 베이지어 커브의 렌더링을 수행하도록 렌더링 방법을 결정할 수 있다.
일실시예에 따른 렌더링 계산부(210)는 베이지어 커브의 렌더링 중에 극점(Extremal Value Point)(610)을 지나 종료 컨트롤 포인트(520)에서 렌더링을 중지하도록 렌더링 방법을 결정할 수 있다.
렌더링 방법이 결정되면, 렌더링 처리부(220)는 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행할 수 있다.
도 7은 극점(Extremal Value Point)만이 타일 1에 존재하는 경우에서 타일 1을 렌더링하는 실시예(700)를 설명하는 도면이다.
일실시예에 따른 렌더링 계산부(210)는 렌더링하려는 타일 내에 베이지어 커브의 극점(Extremal Value Point)이 존재하는 경우, 극점(Extremal Value Point)에서 시작해서, 인접한 타일과의 경계점, 시작 컨트롤 포인트(Start Control Point), 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나의 지점까지 베이지어 커브를 렌더링 하도록 상기 렌더링 방법을 결정할 수 있다.
즉, 일실시예에 따른 렌더링 계산부(210)는 극점(Extremal Value Point)에서의 t=T를 계산하고, 베이지어 커브가 타일 3과 만나는 경계값들(720, 730)에서의 t값들(t=α, t=β)을 결정할 수 있다.
또한, 일실시예에 따른 렌더링 계산부(210)는 극점(Extremal Value Point)에서 시작하여 제1 경계값(720)까지 베이지어 커브를 렌더링하고, 극점(Extremal Value Point)에서 시작하여 제2 경계값(730)까지 베이지어 커브를 렌더링하도록 렌더링 방법을 결정할 수 있다.
또한, 일실시예에 따른 렌더링 계산부(210)는 제1 경계값(720)에서의 t값(t=α)과 제2 경계값(730)에서의 t값(t=β)을 타일 비너에 저장하여 타일 3의 렌더링에 이용되도록 할 수 있다.
렌더링 방법이 결정되면, 렌더링 처리부(220)는 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행할 수 있다.
도 8은 극점(Extremal Value Point)만이 타일 1에 존재하는 경우에서 타일 3을 렌더링하는 실시예(800)를 설명하는 도면이다.
또한, 일실시예에 따른 렌더링 계산부(210)는 타일 3의 렌더링에 이용되도록 제1 경계값(720)에서의 t값(t=α)과 제2 경계값(730)에서의 t값(t=β)을 타일 1의 렌더링시 타일 비너에 저장할 수 있다.
이에, 일실시예에 따른 렌더링 계산부(210)는 타일 3의 렌더링시 시작 컨트롤 포인트(810)에서 t=α인 제1 경계값까지 렌더링을 수행하고, 제2 경계값에서부터 t=β인 제2 경계값까지 렌더링을 수행하도록 렌더링 방법을 결정할 수 있다.
렌더링 방법이 결정되면, 렌더링 처리부(220)는 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행할 수 있다.
도 9는 베이지어 커브의 극점(Extremal Value Point)을 산출하는 실시예를 설명하는 도면이다.
일실시예에 따른 렌더링 계산부는, 베이지어 커브를 생성하는 세 점과 극점(Extremal Value Point) 간의 비율을 이용하여 극점(Extremal Value Point)의 좌표가 렌더링하려는 타일 내에 존재하는지를 확인할 수 있다.
일실시예에 따른 타일 기반의 커브 렌더링 장치는 시작 컨트롤 포인트, 종료 컨트롤 포인트 이외에도 극점(Extremal Value Point)에서 렌더링을 시작할 수 있다.
이를 위해, 일실시예에 따른 타일 기반의 커브 렌더링 장치는 베이지어 커브에서 극점(Extremal Value Point)에서의 시간 t를 계산해야만 한다.
도 9에서 베이지어 커브의 극점(Extremal Value Point)을 산출하면, 극점(Extremal Value Point)을 렌더링하는 순간에서의 t(t=α)를 결정할 수 있다.
시작 컨트롤 포인트인 제1 컨트롤 포인트와 종료 컨트롤 포인트인 제2 컨트롤 포인트는 커브 생성을 위한 컨트롤 포인트로 주어지며, 극값(C(T))은 도 9와 같이 계산될 수 있다.
베이지어 커브의 극값(C(T))을 계산하기 위해 도 9에서 설명하는 베이지어 커브의 특성을 이용한다.
도 9는 베이지어 커브의 특성을 이용한 선분길이의 비례분석을 설명하는 도면이다.
도 9를 참고하면, 베이지어 커브의 특성 상 [수학식 1]의 관계식이 도출될 수 있다.
[수학식 1]
(1) α: 1-α= (Y0 - y0) : y1 - Y0
(2) α: 1-α= (y1 - Y1) : Y1 - y2
[수학식 1]에서, α는 B0(901) 지점에서 Y0 지점까지 이동하는데 필요한 시간 또는 P1 지점(902)에서 Y1 지점까지 이동하는데 필요한 시간이다. 또한, 1-α는 Y0지점에서 P1 지점(902)까지 이동하는데 필요한 시간 또는 Y1 지점에서 P2 지점(903)까지 이동하는데 필요한 시간이다.
Y0 - y0는 극값(904, C(T))에서 V까지의 Y좌표 길이로 해석할 수 있고, y1 - Y0는 P1 지점에서 극값(904, C(T))까지의 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]에서, α는 B0 (901) 지점에서 Y0 지점까지 이동하는데 필요한 시간 또는 P1 지점(902)에서 Y1 지점까지 이동하는데 필요한 시간이다. 또한, 1-α는 Y0지점에서 P1 지점(902)까지 이동하는데 필요한 시간 또는 Y1 지점에서 P2 지점(903)까지 이동하는데 필요한 시간이다. Y0 - y0는 극값(904, C(T))에서 V까지의 Y좌표 길이로 해석할 수 있고, y1 - Y0는 P1 지점에서 극값(904, C(T))까지의 Y좌표로 해석할 수 있다.
또한, [수학식 1]의 관계식들을 Y1으로 정리하면, [수학식 3]과 같이 정리될 수 있다.
[수학식 3]
α: 1-α= (y1 - Y1) : Y1 - y2
α(Y1-y2) = (1-α)(y1 - Y1)
αY1-αy2 + (1-α)Y1 = (1-α)y1
Y1 = y1 -αy1 + αy2
[수학식 3]에서, α는 B0(901) 지점에서 Y0 지점까지 이동하는데 필요한 시간 또는 P1 지점(902)에서 Y1 지점까지 이동하는데 필요한 시간이다. 또한, 1-α는 Y0지점에서 P1 지점(902)까지 이동하는데 필요한 시간 또는 Y1 지점에서 P2 지점(903)까지 이동하는데 필요한 시간이다. Y0 - y0는 극값(904, C(T))에서 V까지의 Y좌표 길이로 해석할 수 있고, y1 - Y0는 P1 지점에서 극값(904, C(T))까지의 Y좌표로 해석할 수 있다.
베이지어 커브에서의 극대점에 대한 기울기는 0이므로 Y0와 Y1가 동일하다.
따라서, [수학식 2]에서 정리한 Y0과 [수학식 3]에서 정리한 Y1은 동일하며, [수학식 4]로 표현될 수 있다.
[수학식 4]
y0 -αy0 +αy1 = y1 -αy1 +αy2
[수학식 4]에서, α는 B0(901) 지점에서 Y0 지점까지 이동하는데 필요한 시간이다.
[수학식 4]를 α에 대해서 정리하면, [수학식 5]로 정리될 수 있다.
[수학식 5]
α = (y0 - y1)/(y0 - 2y1 + y2)
[수학식 5]에서, α는 B0(901) 지점에서 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
도 9의 C(t)=(X, Y)에 대한 좌표를 산출하는 [수학식 7]의 방법을 적용하여, (x0, y0), C(t)를 마주보는 좌표로 하는 바운딩 박스의 좌표와, (x2, y2), C(t)를 마주보는 좌표로 하는 또 다른 바운딩 박스의 좌표가 도출될 수 있다.
도 10은 일실시예에 따른 타일 기반의 커브 렌더링 장치(1000)를 보다 구체적으로 설명하는 블록도이다.
일실시예에 따른 타일 기반의 커브 렌더링 장치(1000)는 타일 빈 입출력부(1010), 픽셀 렌더(1020), T 생성부(1030), 베이지어 연산 로직부(1040), 및 임시 t 생성부(1050)를 포함할 수 있다.
타일 빈 입출력부(1010), 픽셀 렌더(1020), T 생성부(1030), 베이지어 연산 로직부(1040), 및 임시 t 생성부(1050)를 포함할 수 있다.
일실시예에 따른 픽셀 렌더(1020)는 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행할 수 있다.
T 생성부(1030), 베이지어 연산 로직부(1040), 및 임시 t 생성부(1050)는 타일 비닝된 베이지어 커브에 대해서 적어도 하나 이상의 타일 별로 렌더링 방법을 결정할 수 있다.
이를 위해, T 생성부(1030)는 베이지어 커브에서 극점 C(T)를 생성하고, 베이지어 연산 로직부(1040)는 시작 컨트롤 포인트, 종료 컨트롤 포인트, 및 극점의 위치를 확인하여 각 타일 내에서의 베이지어 커브에 대한 연산을 수행하도록 렌더링 방법을 결정할 수 있다.
임시 t 생성부는 베이지어 커브와 타일의 경계값이 만나는 지점에 대한 t값을 픽셀 렌더러(1020)와 타일 빈 입출력부(1010)를 통해서 타일 비너에 저장되도록 할 수 있다(1050).
즉, TBR (Tile-based Rendering) pipeline 구조 상에서 베이지어 커브 렌더링 도중에 타일의 경계점에서 생성되는 임시 t의 값을 경계점을 공유하는 상대 타일의 타일 빈(Tile Bin) 내에 임시 t 값을 저장하는 경로가 추가될 수 있다.
타일 빈 입출력부(1010)는 타일 비너로부터 베이지어 커브에 대한 정보는 물론 임시 t값을 전달받고, 베이지어 커브를 렌더링하는 과정 중에 타일의 경계점에서 생성된 새로운 임시 t값을 다시 타일 빈 내에 저장한다.
타일 내에서 베이지어 커브를 렌더링하다 인접한 타일의 경계점을 만나면 더 이상 베이지어 커브를 렌더링할 필요없이 그 순간의 시간 t 값 (임시 t)을 경계점을 공유하는 또 다른 타일 (이웃 타일)의 해당 타일 빈에 저장해 놓고, 이웃 타일에서 해당 시간 값을 재활용 할 수 있다.
도 11은 일실시예에 따른 타일 기반의 커브 렌더링 방법을 설명하는 흐름도이다.
일실시예에 따른 타일 기반의 커브 렌더링 방법은 분할된 각 타일 내에서의 커브 렌더링을 실행한다(단계 1101).
일실시예에 따른 타일 기반의 커브 렌더링 방법은 t를 증가 또는 감소하여 분할된 각 타일 내에서의 커브 렌더링을 실행할 수 있다(단계 1102).
예를 들어, 커브 렌더링을 실행하는 최초의 위치가 시작 컨트롤 포인트인 경우, t를 증가시켜 커브 렌더링을 수행할 수 있고, 최초의 위치가 종료 컨트롤 포인트인 경우, t를 감소시켜 커브 렌더링을 수행할 수 있다.
또한, 커브 렌더링을 실행하는 최초의 위치가 극점인 경우에 일실시예에 따른 타일 기반의 커브 렌더링 방법은 t를 증가하여 커브 렌더링을 실행하고, 또한 t를 감소시켜 커브 렌더링을 실행할 수 있다.
일실시예에 따른 타일 기반의 커브 렌더링 방법은 커브의 렌더링을 중지하기 위해서 t를 증가 또는 감소시키며 커브를 렌더링하기 전에, 렌더링 하려는 포인트가 시작 또는 종료 컨트롤 포인트인지 여부를 판단할 수 있다(단계 1103).
만약, 단계 1103의 판단 결과, 시작 또는 종료 컨트롤 포인트에 다다른 경우, 커브 렌더링을 수행 후(단계 1104) 종료한다.
만약, 단계 1103의 판단 결과, 렌더링 하려는 베이지어 커브 상의 포인트가 경계 포인트인 경우에 임시 t값을 타일 비너에 저장하고(단계 1106) 렌더링을 종료한다.
만약, 단계 1103의 판단 결과, 렌더링 하려는 베이지어 커브 상의 포인트가 경계 포인트가 아닌 경우에 단계 1101로 분기하여 커브 렌더링을 수행할 수 있다.
도 12는 도 11에서 컨트롤 포인트의 끝인지 여부를 판단하는 구체적인 방법을 설명하는 흐름도이다.
도 12는 현재 출력되는 베이지어 커브 상의 점의 좌표가 종료 컨트롤 포인트의 좌표와 같은지를 체크하는 과정을 나타낸다.
이를 위해, 일실시예에 따른 타일 기반의 커브 렌더링 방법은 t를 증가(또는 감소) 시키다가 현재 출력되는 베이지어 커브 상의 점의 좌표가 t=0 또는 t=1에 해당하는지를 판단할 수 있다(단계 1210).
만약, 일실시예에 따른 타일 기반의 커브 렌더링 방법은 베이지어 커브 상의 점의 좌표가 t=0 또는 t=1에 해당하는 경우, 단계 1104로 분기할 수 있다.
일실시예에 따른 타일 기반의 커브 렌더링 방법은 베이지어 커브 상의 점의 좌표가 t=0 또는 t=1에 해당하지 않는 경우, t가 t=α 또는 t=β인지 여부를 더 판단할 수 있다(단계 1220).
일실시예에 따른 타일 기반의 커브 렌더링 방법은 t가 t=α 또는 t=β인지 여부를 판단 함으로써, t가 경계값에 해당하는지를 판단할 수 있다.
일실시예에 따른 타일 기반의 커브 렌더링 방법은 t가 t=α 또는 t=β라고 판단되면, 단계 1104로 분기하고, t가 t=α 또는 t=β가 아니라고 판단되면, 단계 1105로 분기할 수 있다.
도 13은 도 10에서의 T 생성부의 동작 방법을 설명하는 흐름도이다.
T 생성부는 베이지어 커브의 극점에서의 시간 값 t를 계산하는 역할을 담당한다.
이를 위해, T 생성부의 동작 방법은 세 점 P0, P1, P2를 입력받고(단계 1310), y1이 y0 및 y2 이하인지 또는 y1이 y0 및 y2 이상인지를 판단할 수 있다(단계 1320).
만약, y1이 y0 및 y2 이하라면, T 생성부는 아래로 볼록한 베이지어 커브를 통해서 T를 생성할 수 있다(단계 1330).
만약, y1이 y0 및 y2 이하라면, T 생성부는 위로 볼록한 베이지어 커브를 통해서 T를 생성할 수 있다(단계 1330).
도 14는 도 10에서의 베이지어 연산 로직(Bezier Computation Logic )을 설명하는 흐름도이다.
베이지어 연산 로직부(1040)의 동작 방법은 베이지어 커브의 정의에 의해 도출된 보간 다항식(interpolated polynomial)을 계산할 수 있다.
즉, 베이지어 연산 로직부(1040)의 동작 방법은 시간값 t를 입력으로 받아 베이지어 커브의 좌표를 반환한다.
구체적으로, 베이지어 연산 로직부(1040)의 동작 방법은 타일 비너로부터 t를 입력받고(단계 1410), 세 점 P0, P1, P2를 입력받을 수 있다(단계 1420).
다음으로, 베이지어 연산 로직부(1040)의 동작 방법은 세 점 P0, P1, P2을 이용하여 베이지어 커브 curve(t)를 생성할 수 있다(단계 1430).
다음으로, 베이지어 연산 로직부(1040)의 동작 방법은 최초의 t에서부터 t를 △t 만큼 증가시키고(단계 1440), t가 1 이상인지 여부를 판단할 수 있다(단계 1450).
만약, t가 1 이상이라고 판단되는 경우에 종료 컨트롤 포인트라고 판단하여 베이지어 커브의 연산을 종료할 수 있다(단계 1460). 만약, t가 1 미만인 경우 베이지어 연산 로직부(1040)의 동작 방법은 단계 1420으로 분기할 수 있다.
결국, 베이지어 커브를 렌더링하는 장치 및 방법을 이용하면,
타일 기반 렌더링 GPU 구조하에서 여러 타일에 걸쳐 그려지는 커브에 대해, 시간이 소요되는 커브 분할 과정이 필요없고, 타일 마다 베이지어 연산의 중복 오버헤드 없이 효과적으로 커브 렌더링 이 가능하다.
실시예에 따른 방법은 3차원 (Quadratic) 베이지어 커브에 대해 설명하였으나, 3차원 베이지어 커브는 4차원 (Cubic) 및 그 이상 차원의 베이지어 커브로의 상호 변환이 가능한 점을 이용하여, 3차원 베이지어 커브에 국한되지 않고 4차원 및 그 이상 차원의 베이지어 커브에서도 적용될 수 있다.
베이지어 커브로 구성되는 TrueType Font, HTML5의 이미지 표준인 SVG (Scalable Vector Graphics), 문서 표준의 하나인 PostScript, PDF, 효과적인 에니메이션인 Adobe Flash, Microsoft SilverLight 들의 데이터 파일은 커브 드로잉 명령으로 구성이 되며, 이러한 커브 드로잉을 효과적으로 GPU 가속함으로써, 효과적인 성능 개선이 기대된다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
200: 타일 기반의 커브 렌더링 장치
210: 렌더링 계산부
220: 렌더링 처리부
210: 렌더링 계산부
220: 렌더링 처리부
Claims (12)
- 타일 비닝된 베이지어 커브를 렌더링하는 장치에 있어서,
상기 타일 비닝된 베이지어 커브에 대해서 적어도 하나 이상의 타일 별로 렌더링 방법을 결정하는 렌더링 계산부; 및
상기 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행하는 렌더링 처리부
를 포함하고,
상기 렌더링 계산부는,
상기 렌더링의 수행 중, 인접한 타일과의 경계점에서 상기 베이지어 커브의 렌더링을 중지하고, 상기 경계점의 위치가 반영된 경계값을 상기 인접한 타일의 렌더링시 이용하도록 상기 렌더링 방법을 결정하는 타일 기반의 커브 렌더링 장치. - 제1항에 있어서,
상기 렌더링 계산부는,
렌더링하려는 타일 내에 베이지어 커브의 시작 컨트롤 포인트(Start Control Point), 극점(Extremal Value Point), 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나가 존재하는지를 확인하는 타일 기반의 커브 렌더링 장치. - 제1항에 있어서,
상기 렌더링 계산부는,
상기 렌더링하려는 타일 내에 베이지어 커브의 시작 컨트롤 포인트(Start Control Point) 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나가 존재하는 경우, 상기 시작 컨트롤 포인트(Start Control Point) 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나에서 상기 베이지어 커브의 렌더링을 종료하도록 상기 렌더링 방법을 결정하는 타일 기반의 커브 렌더링 장치. - 제1항에 있어서,
상기 렌더링 계산부는,
상기 렌더링하려는 타일 내에 베이지어 커브의 극점(Extremal Value Point)이 존재하는 경우, 상기 극점(Extremal Value Point)에서 시작해서, 상기 인접한 타일과의 경계점, 상기 시작 컨트롤 포인트(Start Control Point), 및 상기 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나의 지점까지 상기 베이지어 커브의 렌더링 하도록 상기 렌더링 방법을 결정하는 타일 기반의 커브 렌더링 장치. - 제2항에 있어서,
상기 렌더링 계산부는,
상기 베이지어 커브를 생성하는 세 점 및 상기 극점(Extremal Value Point) 간의 비율을 이용하여 상기 극점(Extremal Value Point)의 좌표가 상기 렌더링하려는 타일 내에 존재하는지를 확인하는 타일 기반의 커브 렌더링 장치. - 제1항에 있어서,
상기 렌더링 계산부는,
상기 인접한 타일에서 상기 베이지어 커브의 렌더링 시, 상기 경계값에서부터 상기 베이지어 커브를 렌더링 하도록 상기 렌더링 방법을 결정하는 타일 기반의 커브 렌더링 장치. - 타일 비닝된 베이지어 커브를 렌더링하는 장치의 동작 방법에 있어서,
렌더링 계산부에서, 상기 타일 비닝된 베이지어 커브에 대해서 적어도 하나 이상의 타일 별로 렌더링 방법을 결정하는 단계; 및
렌더링 처리부에서, 상기 결정된 렌더링 방법에 기초하여, 적어도 하나 이상의 타일별로 베이지어 커브에 대한 렌더링을 수행하는 단계
를 포함하고,
상기 렌더링 방법을 결정하는 단계는,
상기 렌더링의 수행 중, 인접한 타일과의 경계점에서 상기 베이지어 커브의 렌더링을 중지하고, 상기 경계점의 위치가 반영된 경계값을 상기 인접한 타일의 렌더링시 이용하도록 상기 렌더링 방법을 결정하는 단계
를 포함하는 타일 기반의 커브 렌더링 방법. - 제7항에 있어서,
상기 렌더링 방법을 결정하는 단계는,
렌더링하려는 타일 내에 베이지어 커브의 시작 컨트롤 포인트(Start Control Point), 극점(Extremal Value Point), 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나가 존재하는지를 확인하는 단계
를 포함하는 타일 기반의 커브 렌더링 방법. - 제7항에 있어서,
상기 렌더링 방법을 결정하는 단계는,
상기 렌더링하려는 타일 내에 베이지어 커브의 시작 컨트롤 포인트(Start Control Point) 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나가 존재하는 경우, 상기 시작 컨트롤 포인트(Start Control Point) 및 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나에서 상기 베이지어 커브의 렌더링을 종료하도록 상기 렌더링 방법을 결정하는 단계
를 포함하는 타일 기반의 커브 렌더링 방법. - 제7항에 있어서,
상기 렌더링 방법을 결정하는 단계는,
상기 렌더링하려는 타일 내에 베이지어 커브의 극점(Extremal Value Point)이 존재하는 경우, 상기 극점(Extremal Value Point)에서 시작해서, 상기 인접한 타일과의 경계점, 상기 시작 컨트롤 포인트(Start Control Point), 및 상기 종료 컨트롤 포인트(End Control Point) 중에서 적어도 하나의 지점까지 상기 베이지어 커브의 렌더링 하도록 상기 렌더링 방법을 결정하는 단계
를 포함하는 타일 기반의 커브 렌더링 방법. - 제8항에 있어서,
상기 렌더링 방법을 결정하는 단계는,
상기 베이지어 커브를 생성하는 세 점 및 상기 극점(Extremal Value Point) 간의 비율을 이용하여 상기 극점(Extremal Value Point)의 좌표가 상기 렌더링하려는 타일 내에 존재하는지를 확인하는 단계
를 포함하는 타일 기반의 커브 렌더링 방법. - 제7항에 있어서,
상기 렌더링 방법을 결정하는 단계는,
상기 인접한 타일에서 상기 베이지어 커브의 렌더링 시, 상기 경계값에서부터 상기 베이지어 커브를 렌더링 하도록 상기 렌더링 방법을 결정하는 단계
를 포함하는 타일 기반의 커브 렌더링 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120142007A KR20140073951A (ko) | 2012-12-07 | 2012-12-07 | 베이지어 커브를 렌더링하는 장치 및 방법 |
US13/890,720 US20140160125A1 (en) | 2012-12-07 | 2013-05-09 | Apparatus and method for rendering bezier curve |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120142007A KR20140073951A (ko) | 2012-12-07 | 2012-12-07 | 베이지어 커브를 렌더링하는 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140073951A true KR20140073951A (ko) | 2014-06-17 |
Family
ID=50880474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120142007A Withdrawn KR20140073951A (ko) | 2012-12-07 | 2012-12-07 | 베이지어 커브를 렌더링하는 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20140160125A1 (ko) |
KR (1) | KR20140073951A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101580605B1 (ko) * | 2014-06-27 | 2015-12-28 | 주식회사 디지털프로그 | HTML5 WebGL기반의 모바일 어플리케이션의 빠른 출력을 위한 그래픽 모델 구조와 출력 방법 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10725650B2 (en) * | 2014-03-17 | 2020-07-28 | Kabushiki Kaisha Kawai Gakki Seisakusho | Handwritten music sign recognition device and program |
KR102354989B1 (ko) * | 2015-04-14 | 2022-01-24 | 삼성전자주식회사 | 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치. |
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 |
US11093264B1 (en) * | 2019-06-14 | 2021-08-17 | Parallels International Gmbh | System and method for drawing optimization with pointer input in a remote session |
CN110599568B (zh) * | 2019-09-12 | 2023-06-06 | 广州视源电子科技股份有限公司 | 一种线条的生成方法、装置、设备和存储介质 |
KR102149105B1 (ko) * | 2019-09-18 | 2020-08-27 | 세종대학교산학협력단 | 혼합현실 기반 3차원 스케치 장치 및 방법 |
KR20230059333A (ko) * | 2021-10-26 | 2023-05-03 | 주식회사 엘엑스세미콘 | 터치 센싱 장치, 터치 센싱 장치를 포함하는 터치 센싱 디스플레이 시스템 및 터치 센싱 방법 |
CN117495989B (zh) * | 2023-12-29 | 2024-04-19 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及可读存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000251086A (ja) * | 1999-02-26 | 2000-09-14 | Sony Corp | 曲線生成装置及び方法、並びにプログラム提供媒体 |
US6563501B2 (en) * | 2000-07-28 | 2003-05-13 | Adrian Sfarti | Bicubic surface rendering |
US6784884B1 (en) * | 2000-09-29 | 2004-08-31 | Intel Corporation | Efficient parametric surface binning based on control points |
US7142211B2 (en) * | 2003-07-07 | 2006-11-28 | Arcsoft, Inc. | Graphic engine for fill style transferring in a resource-constrained device |
JP4255449B2 (ja) * | 2005-03-01 | 2009-04-15 | 株式会社ソニー・コンピュータエンタテインメント | 描画処理装置、テクスチャ処理装置、およびテセレーション方法 |
US7868887B1 (en) * | 2007-10-18 | 2011-01-11 | Adobe Systems Incorporated | Rendering rational quadratic Bézier curves on a GPU |
US20090141038A1 (en) * | 2007-11-02 | 2009-06-04 | Newaskar Saket Prashant | Bezier Curves for Low Memory Embedded Graphics Systems |
GB0810205D0 (en) * | 2008-06-04 | 2008-07-09 | Advanced Risc Mach Ltd | Graphics processing systems |
US8762046B2 (en) * | 2008-10-01 | 2014-06-24 | Navteq B.V. | Creating geometry for advanced driver assistance systems |
GB0818277D0 (en) * | 2008-10-06 | 2008-11-12 | Advanced Risc Mach Ltd | Graphics processing system |
US20100253683A1 (en) * | 2009-04-01 | 2010-10-07 | Munkberg Carl J | Non-uniform tessellation technique |
KR101683556B1 (ko) * | 2010-01-06 | 2016-12-08 | 삼성전자주식회사 | 타일 기반의 렌더링 장치 및 렌더링 방법 |
US8854365B2 (en) * | 2010-01-15 | 2014-10-07 | Microsoft Corporation | Rendering parametric surface patches |
US20110285718A1 (en) * | 2010-05-21 | 2011-11-24 | Kilgard Mark J | Point containment for quadratic bèzier strokes |
-
2012
- 2012-12-07 KR KR1020120142007A patent/KR20140073951A/ko not_active Withdrawn
-
2013
- 2013-05-09 US US13/890,720 patent/US20140160125A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101580605B1 (ko) * | 2014-06-27 | 2015-12-28 | 주식회사 디지털프로그 | HTML5 WebGL기반의 모바일 어플리케이션의 빠른 출력을 위한 그래픽 모델 구조와 출력 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20140160125A1 (en) | 2014-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20140073951A (ko) | 베이지어 커브를 렌더링하는 장치 및 방법 | |
US10733691B2 (en) | Fragment shaders perform vertex shader computations | |
US8217962B2 (en) | Single-pass bounding box calculation | |
KR102101626B1 (ko) | 스크린 위치에 따라 달라지는 분해능을 가진 다수의 렌더 타겟을 위한 텍스처 매핑을 위한 그라디언트 조정 | |
KR102122454B1 (ko) | 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치 | |
KR101980200B1 (ko) | 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법 | |
US8773432B2 (en) | Triangulation for accelerated multi-resolution rendering of stroked paths | |
KR101609266B1 (ko) | 타일 기반의 랜더링 장치 및 방법 | |
US10032308B2 (en) | Culling objects from a 3-D graphics pipeline using hierarchical Z buffers | |
CN103946895A (zh) | 基于平铺块的呈现中的镶嵌 | |
CN105654553A (zh) | 图形处理器和执行基于图块的图形管线的方法 | |
KR102499397B1 (ko) | 그래픽스 파이프라인을 수행하는 방법 및 장치 | |
KR102381945B1 (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법 | |
KR20160069801A (ko) | 렌더링 방법 및 장치 | |
EP2860700B1 (en) | Image processing apparatus and method | |
KR20150122519A (ko) | 경로 렌더링을 수행하는 방법 및 장치. | |
JP2015515059A (ja) | シーンにおける不透明度レベルを推定する方法とそれに対応する装置 | |
US10262391B2 (en) | Graphics processing devices and graphics processing methods | |
US20150145858A1 (en) | Method and apparatus to process current command using previous command information | |
US20160071315A1 (en) | Convex Polygon Clipping During Rendering | |
US11763514B1 (en) | Hard ware-assisted emulation of graphics pipeline | |
US10192348B2 (en) | Method and apparatus for processing texture | |
JP5864474B2 (ja) | 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法 | |
US11217005B1 (en) | Techniques for rendering 2D vector graphics on mobile devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20121207 |
|
PG1501 | Laying open of application | ||
PC1203 | Withdrawal of no request for examination | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |