KR20160131457A - 커브 렌더링을 수행하는 방법 및 장치. - Google Patents

커브 렌더링을 수행하는 방법 및 장치. Download PDF

Info

Publication number
KR20160131457A
KR20160131457A KR1020150063881A KR20150063881A KR20160131457A KR 20160131457 A KR20160131457 A KR 20160131457A KR 1020150063881 A KR1020150063881 A KR 1020150063881A KR 20150063881 A KR20150063881 A KR 20150063881A KR 20160131457 A KR20160131457 A KR 20160131457A
Authority
KR
South Korea
Prior art keywords
curve
points
triangle
point
unit
Prior art date
Application number
KR1020150063881A
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 삼성전자주식회사
Priority to KR1020150063881A priority Critical patent/KR20160131457A/ko
Priority to US14/959,238 priority patent/US20160328867A1/en
Publication of KR20160131457A publication Critical patent/KR20160131457A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves

Landscapes

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

Abstract

커브(curve) 렌더링을 수행하는 방법은, 커브의 형상에 기초하여 적어도 하나의 삼각형을 형성하고, 적어도 하나의 삼각형을 이용하여 커브에 대응하는 픽셀들을 쉐이딩하는 과정을 포함한다.

Description

커브 렌더링을 수행하는 방법 및 장치.{Method and apparatus for performing curve rendering}
커브 렌더링을 수행하는 방법 및 장치에 관한다.
근래에 벡터 그래픽스(vector graphics) 또는 경로 렌더링(path rendering)을 수행하는 경우 그래픽 처리 장치(Graphics Processing Unit, 이하 GPU 라고 함)의 가속 성능을 향상시키기 위한 방법이 연구되고 있다. 다만, 3차원 그래픽을 가속시키기 위해 모든 입력 데이터가 삼각형(triangle)으로 구성된다는 가정 하에 GPU의 하드웨어 구조가 설계되나, 경로 렌더링의 경우 입력 데이터가 삼각형들로 구성되지 않고 커맨드(command)와 정점(vertex) 들의 조합으로 구성되어 있다. 따라서, 경로 렌더링을 수행할 때에 GPU의 가속 성능을 향상시키기 어렵다.
예를 들어, GPU를 이용하여 하나의 곡선(curve)을 그리기 위해서는, 먼저 CPU가 곡선의 시작점을 중심으로 하여 곡선을 다수의 삼각형들로 분할하고, OpenGL API를 이용하여 GPU에게 분할된 삼각형들을 곡선으로 재구성하도록 지시한다. 따라서, CPU가 곡선을 다수의 삼각형들로 분할하는 데에 많은 시간이 소요되며, 많은 수의 OpenGL API를 호출할 때마다 GPU와의 통신이 필요하며, GPU 상에서 많은 상태 변화가 발생된다.
커브 렌더링을 수행하는 방법 및 장치를 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른 커브(curve) 렌더링을 수행하는 방법은, 상기 커브의 형상에 기초하여 복수의 포인트(point)들을 결정하는 단계; 상기 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형을 형성하는 단계; 및 상기 적어도 하나의 삼각형을 이용하여 상기 커브에 대응하는 픽셀들을 쉐이딩하는 단계;를 포함하고, 상기 삼각형은 상기 포인트들을 꼭지점으로 하는 삼각형을 포함한다.
다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
또 다른 측면에 따른 커브(curve) 렌더링을 수행하는 장치는, 상기 커브의 형상에 기초하여 복수의 포인트(point)들을 결정하는 결정부; 상기 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형을 형성하는 형성부; 및 상기 적어도 하나의 삼각형을 이용하여 상기 커브에 대응하는 픽셀들을 쉐이딩하는 쉐이딩부;를 포함하고, 상기 삼각형은 상기 포인트들을 꼭지점으로 하는 삼각형을 포함한다.
또 다른 측면에 따른 커브(curve) 렌더링을 수행하는 시스템은, 상기 커브의 형상에 기초하여 복수의 포인트(point)들을 결정하고, 상기 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형을 형성하는 중앙 처리 장치(CPU); 및 상기 적어도 하나의 삼각형을 이용하여 상기 커브에 대응하는 픽셀들을 쉐이딩하는 그래픽 처리 장치(GPU);를 포함하고, 상기 삼각형은 상기 포인트들을 꼭지점으로 하는 삼각형을 포함한다.
또 다른 측면에 따른 커브(curve) 렌더링을 수행하는 시스템은, 상기 커브의 형상에 기초하여 복수의 포인트(point)들을 결정하고, 상기 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형에 대응하는 데이터를 생성하는 중앙 처리 장치(CPU); 및 상기 생성된 데이터를 이용하여 상기 적어도 하나의 삼각형을 형성하고, 상기 적어도 하나의 삼각형을 이용하여 상기 커브에 대응하는 픽셀들을 쉐이딩하는 그래픽 처리 장치(GPU);를 포함하고, 상기 삼각형은 상기 포인트들을 꼭지점으로 하는 삼각형을 포함한다.
도 1은 일 실시예에 따른 렌더링 장치의 일 예를 도시한 구성도이다.
도 2a 내지 도 2d는 일 실시예에 따른 큐빅 베지어 커브의 예들을 설명하기 위한 도면들이다.
도 3은 일 실시예에 따른 렌더링 장치가 동작하는 일 예를 나타낸 흐름도이다.
도 4 내지 도 5b는 일 실시예에 따른 결정부 및 형성부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 6 내지 도 7b는 일 실시예에 따른 결정부 및 형성부가 동작하는 다른 예를 설명하기 위한 도면들이다.
도 8 내지 도 9는 일 실시예에 따른 결정부 및 형성부가 동작하는 또 다른 예를 설명하기 위한 도면들이다.
도 10 내지 도 11은 일 실시예에 따른 결정부 및 형성부가 동작하는 또 다른 예를 설명하기 위한 도면들이다.
도 12는 일 실시예에 따른 결정부 및 형성부가 동작하는 또 다른 예를 설명하기 위한 흐름도이다.
도 13은 일 실시예에 따른 렌더링 시스템의 일 예를 도시한 구성도이다.
도 14는 일 실시예에 따른 렌더링 시스템의 다른 예를 도시한 구성도이다.
실시 예들에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…부”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 일 실시예에 따른 렌더링 장치의 일 예를 도시한 구성도이다.
도 1을 참조하면, 렌더링 장치(100)는 결정부(110), 형성부(120) 및 쉐이딩부(130)를 포함한다.
일 실시예에 따른 렌더링 장치(100)는 커브(curve)의 렌더링을 수행한다. 여기에서, 커브는 렌더링이 수행되는 대상으로서, 화면에 출력될 객체의 전부 또는 일부에 해당될 수 있다. 다시 말해, 객체는 적어도 하나의 에지(edge) 또는 커브로 구성되며, 에지 또는 커브가 렌더링됨에 따라 화면에는 객체가 출력될 수 있다.
서로 다른 두 정점(vertex)들을 연결하는 에지는 길이의 차이만 있을 뿐, 형상이 동일하다. 그러나, 2 이상의 컨트롤 포인트(control point)들에 기초하여 형성되는 커브는 컨트롤 포인트의 위치 또는 컨트롤 포인트의 수에 따라 다양한 형상으로 표현될 수 있다.
예를 들어, 서로 다른 4개의 컨트롤 포인트들에 기초하여 형성되는 큐빅 베지어 커브의 경우, 컨트롤 포인트들의 위치에 따라 첨점(cusp) 또는 루프(loop)를 포함할 수 있다. 이하, 도 2를 참조하여 큐빅 베지어 커브의 예들을 설명한다.
도 2a 내지 도 2d는 일 실시예에 따른 큐빅 베지어 커브의 예들을 설명하기 위한 도면들이다.
큐빅 베지어 커브(210, 220, 230, 240)는 서로 다른 4개의 컨트롤 포인트들에 의하여 결정된다. 다시 말해, 컨트롤 포인트들의 위치(예를 들어, 좌표)를 알고 있다면, 큐빅 베지어 커브(210, 220, 230, 240)의 형상을 알 수 있다. 예를 들어, 큐빅 베지어 커브(210, 220, 230, 240)는 아래의 수학식 1에 의하여 결정될 수 있다.
Figure pat00001
상술한 수학식 1에서, B(t)는 큐빅 베지어 커브(210, 220, 230, 240)를 의미하고, P0, P1, P2 및 P3는 컨트롤 포인트들을 의미한다. 또한, t는 0부터 1사이의 수를 의미한다.
도 2a 내지 도 2d에는 컨트롤 포인트들(P0, P1, P2, P3)의 위치에 따른 큐빅 베지어 커브(210, 220, 230, 240)의 형태의 예들이 도시되어 있다. 구체적으로, 커브(210, 220, 230, 240)의 시작 정점에 대응하는 컨트롤 포인트(P0) 및 종료 정점에 대응하는 컨트롤 포인트(P3)를 제외한 컨트롤 포인트들(P1, P2)의 위치에 따라 커브(210, 220, 230, 240)의 형태가 결정될 수 있다.
도 2a를 참조하면, 컨트롤 포인트들(P1, P2)은 커브(210)의 외부 영역에 위치한다. 다시 말해, 컨트롤 포인트들(P0, P1, P2, P3)은 모두 커브(210)에 접해있거나 커브(210)의 외부 영역에 위치한다. 따라서, 커브(210)는 완만하게 볼록한 형태로 결정될 수 있다.
도 2b를 참조하면, 컨트롤 포인트(P1)는 커브(220)의 내부 영역에 위치하고, 컨트롤 포인트(P2)는 커브(220)의 외부 영역에 위치한다. 따라서, 커브(220)는 일 측면이 안쪽으로 찌그러진 형태로 결정될 수 있다.
도 2c를 참조하면, 컨트롤 포인트(P1)가 컨트롤 포인트(P2)의 우측에 위치한다. 도 2a에 도시된 커브(210)와 비교하면, 컨트롤 포인트들(P1, P2)이 모두 커브(230)의 외부 영역에 위치한 것은 동일하나, 컨트롤 포인트들(P1, P2)의 위치가 서로 뒤바뀌어 있다. 따라서, 커브(230)는 루프를 갖는 형태로 결정될 수 있다.
도 2d를 참조하면, 컨트롤 포인트(P1)가 컨트롤 포인트(P2)의 우측에 위치한다. 도 2c에 도시된 커브(230)와 비교하면, 커브들(230, 240)의 컨트롤 포인트들(P1, P2)의 위치가 동일하다. 다만, 상술한 수학식 1의 t 값에 따라, 컨트롤 포인트들(P1, P2)의 위치가 동일하더라도, 루프를 포함하는 커브(230) 또는 첨점을 포함하는 커브(240)로 나뉘어 질 수 있다.
일반적으로, 커브(210, 220, 230, 240)의 렌더링은, 컨트롤 포인트들(P0, P1, P2, P3)을 이용하여 삼각형을 형성한 후, 삼각형에 기초하여 커브(210, 220, 230, 240)에 대응하는 픽셀들을 쉐이딩하는 단계로 진행된다. 이때, 도 2a에 도시된 커브(210)의 경우, 컨트롤 포인트들(P0, P1, P2, P3)을 이용하여 2개의 삼각형들을 형성하면, 형성된 삼각형들에 커브(210)가 완전히 포함될 수 있다. 그러나, 도 2b 내지 도 2d에 도시된 커브들(220, 230, 240)의 경우, 컨트롤 포인트들(P0, P1, P2, P3)을 이용하여 형성된 삼각형들에 커브들(220, 230, 240)이 완전히 포함되지 않을 수도 있다. 따라서, 커브들(220, 230, 240)을 복수의 서브 커브들로 분할하고, 서브 커브들 각각에 대하여 다시 삼각형들을 형성하는 과정을 거치게 된다. 따라서, 렌더링 장치의 작업량이 증가하고 성능 저하가 발생될 수도 있다.
일 실시예에 따른 렌더링 장치(100)는 커브를 복수의 서브 커브들로 분할함이 없이 커브의 렌더링을 수행한다. 따라서, 일반적인 렌더링 과정과 비교하여, 렌더링이 수행되는데 필요한 작업량이 감소될 뿐만 아니라, 고품질의 렌더링 결과가 출력될 수 있다.
다시 도 1을 참조하면, 결정부(110)는 커브의 형상에 기초하여 복수의 포인트들을 결정한다. 여기에서, 포인트들은 도 2를 참조하여 상술한 컨트롤 포인트들 및 커브의 형상에 따라 결정되는 포인트를 포함하는 개념이다. 일 예로서, 커브가 루프를 포함한다고 가정하면, 결정부(110)는 커브에 대응하는 4개의 컨트롤 포인트들뿐 만 아니라 커브가 교차되는 지점도 포인트로 결정할 수 있다. 다른 예로서, 커브가 첨점을 포함한다고 가정하면, 결정부(110)는 커브에 대응하는 4개의 컨트롤 포인트들뿐 만 아니라 첨점에 대응하는 지점도 포인트로 결정할 수 있다.
형성부(120)는 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형을 형성한다. 다시 말해, 형성부(120)는 결정부(110)가 결정한 포인트들 사이의 위치를 고려하여 하나 이상의 삼각형을 형성할 수 있다. 이때, 형성된 삼각형은 포인트들을 꼭지점으로 한다.
쉐이딩부(130)는 삼각형을 이용하여 커브에 대응하는 픽셀들을 쉐이딩한다. 구체적으로, 쉐이딩부(130)는 삼각형에 포함된 픽셀들 중에서 커브의 내부에 대응하는 픽셀들에 컬러를 설정한다.
이하, 도 3 내지 도 14를 참조하여 렌더링 장치(100)가 동작하는 예들을 구체적으로 설명한다.
도 3은 일 실시예에 따른 렌더링 장치가 동작하는 일 예를 나타낸 흐름도이다.
310 단계에서, 결정부(110)는 커브의 형상에 기초하여 복수의 포인트들을 결정한다. 구체적으로, 결정부(110)는 커브 데이터에 기초하여 커브의 형상을 식별하고, 식별된 커브의 형상에 따라 복수의 포인트들을 결정할 수 있다. 여기에서, 커브 데이터는 커브에 대응되는 컨트롤 포인트들의 위치 및 커브의 길이 등을 나타내는 정보를 포함한다. 커브 데이터는 결정부(110)가 생성할 수도 있고, 외부 장치로부터 수신할 수도 있다.
또한, 결정부(110)가 결정하는 포인트들에는 컨트롤 포인트들 이외에 커브의 형상에 따라 결정되는 포인트가 더 포함될 수 있다. 다시 말해, 결정부(110)는 커브에 대응하는 컨트롤 포인트들을 획득하고, 컨트롤 포인트들 각각의 좌표를 이용하여 다른 포인트를 연산할 수 있다.
320 단계에서, 형성부(120)는 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형들을 형성한다. 구체적으로, 형성부(120)는 포인트들 사이의 순서 및 프레임 내에서의 포인트들의 위치에 따라 렌더링에 이용되는 삼각형을 생성할 수 있다. 여기에서, 삼각형의 꼭지점들은 결정부(110)에 의하여 결정된 포인트들로 구성된다.
330 단계에서, 쉐이딩부(130)는 형성부(120)가 형성한 삼각형을 이용하여 커브에 대응하는 픽셀들을 쉐이딩한다. 예를 들어, 쉐이딩부(130)는 삼각형에 기초하여 픽셀들 각각의 주회 횟수를 연산하고, 연산된 주회 횟수에 기초하여 픽셀에 컬러를 설정할 수 있다. 쉐이딩부(130)가 동작하는 구체적인 예들은 도 13 내지 도 14를 참조하여 후술한다.
한편, 커브의 형상에 따라 결정부(110)는 적응적으로 포인트들을 결정할 수 있고, 형성부(120)는 포인트들 사이의 순서 및 포인트들의 위치에 기초하여 삼각형을 생성할 수 있음은 상술한 바와 같다. 이하, 도 4 내지 도 12를 참조하여 커브의 다양한 형상에 따라 결정부(110)와 형성부(120)가 동작하는 예들을 설명한다.
도 4 내지 도 5b는 일 실시예에 따른 결정부 및 형성부가 동작하는 일 예를 설명하기 위한 도면들이다.
커브의 형상에 따라, 4개의 컨트롤 포인트들 중 어느 하나가 다른 3개의 컨트롤 포인트들이 형성하는 삼각형의 내부에 위치하게 될 수도 있다. 예를 들어, 도 5a에 도시된 커브(510)의 컨트롤 포인트(P1)는 다른 컨트롤 포인트들(P0, P2, P3)을 꼭지점으로 하는 삼각형(511)의 내부에 위치한다. 또한, 도 5b에 도시된 커브(520)의 컨트롤 포인트(P2)는 다른 컨트롤 포인트들(P0, P1, P3)을 꼭지점으로 하는 삼각형(521)의 내부에 위치한다.
도 4를 참조하면, 커브 데이터(410)에 포함된 커브의 형상이 도 5a 또는 도 5b에 도시된 커브(510, 520)와 같은 경우에 결정부(110) 및 형성부(120)가 동작하는 예를 나타내는 흐름도가 도시되어 있다.
211 단계에서, 결정부(110)는 커브에 대응하는 4개의 제 1 포인트들을 결정한다. 여기에서, 제 1 포인트들은 커브의 컨트롤 포인트들을 의미한다. 예를 들어, 결정부(110)는 커브 데이터(410)에 포함된 정보를 이용하여 커브의 컨트롤 포인트들 각각의 위치를 나타내는 좌표 값을 획득할 수 있다.
221 단계에서, 형성부(120)는 제 1 포인트들 중 3개의 포인트들을 꼭지점으로 하는 삼각형의 내부에 3개의 포인트들이 제외된 나머지 포인트가 포함되도록 삼각형을 형성한다. 그리고, 삼각형에 대한 정보를 포함하는 삼각형 데이터(420)는 버퍼(미도시)에 저장된다. 구체적으로, 결정부(110)가 컨트롤 포인트들 각각의 좌표 값을 획득할 수 있으므로, 형성부(120)는 컨트롤 포인트들의 좌표 값들을 비교하여 컨트롤 포인트들 중 어느 하나가 내부에 포함된 삼각형을 형성할 수 있다.
이하, 도 5a 내지 도 5b를 참조하여 결정부(110) 및 형성부(120)가 동작하는 예를 설명한다.
도 5a를 참조하면, 결정부(110)는 커브 데이터(410)를 참조하여 커브(510)의 컨트롤 포인트들(P0, P1, P2, P3)을 결정한다. 예를 들어, 결정부(110)는 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 획득할 수 있다. 이때, 컨트롤 포인트들(P0, P1, P2, P3) 간에는 순서가 정해져 있다. 다시 말해, 컨트롤 포인트들(P0, P1, P2, P3)이 P0 → P1 → P2 → P3의 순서로 해석되어야 커브(510)가 형성될 수 있다.
형성부(120)는 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 비교하여 삼각형(511)을 형성한다. 구체적으로, 형성부(120)는 컨트롤 포인트(P1)가 내부에 포함된 삼각형(511)을 형성할 수 있다. 여기에서, 삼각형(511)의 꼭지점들은 나머지 컨트롤 포인트들(P0, P2, P3)로 구성된다.
도 5b를 참조하면, 결정부(110)는 커브 데이터(410)를 참조하여 커브(520)의 컨트롤 포인트들(P0, P1, P2, P3)을 결정한다. 이때, 결정부(110)가 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 획득하고, 컨트롤 포인트들(P0, P1, P2, P3) 간에는 순서가 정해져 있음은 도 5a를 참조하여 상술한 바와 같다.
형성부(120)는 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 비교하여 삼각형(521)을 형성한다. 구체적으로, 형성부(120)는 컨트롤 포인트(P2)가 내부에 포함된 삼각형(521)을 형성할 수 있다. 여기에서, 삼각형(511)의 꼭지점들은 나머지 컨트롤 포인트들(P0, P1, P3)로 구성된다.
도 5a 내지 도 5b를 참조하여 상술한 바에 따르면, 삼각형(511, 521)의 내부에는 커브(510, 520)가 완전히 포함된다. 따라서, 렌더링 장치(100)는 커브(510, 520)를 서브 커브들로 분할하지 않고서도 커브(510, 520)의 렌더링을 수행할 수 있다.
도 6 내지 도 7b는 일 실시예에 따른 결정부 및 형성부가 동작하는 다른 예를 설명하기 위한 도면들이다.
커브의 형상에 따라, 4개의 컨트롤 포인트들을 꼭지점으로 하는 사각형의 내부에 커브가 완전히 포함될 수도 있다. 예를 들어, 도 7a에 도시된 커브(710)는 컨트롤 포인트들(P0, P1, P2, P3)을 꼭지점으로 하는 사각형(711)의 내부에 위치한다. 또한, 도 5b에 도시된 커브(720)는 컨트롤 포인트들(P0, P1, P2, P3)을 꼭지점으로 하는 사각형(721)의 내부에 위치한다.
도 6을 참조하면, 커브 데이터(610)에 포함된 커브의 형상이 도 7a 또는 도 7b에 도시된 커브(710, 720)와 같은 경우에 결정부(110) 및 형성부(120)가 동작하는 예를 나타내는 흐름도가 도시되어 있다.
212 단계에서, 결정부(110)는 커브에 대응하는 4개의 제 1 포인트들을 결정한다. 여기에서, 제 1 포인트들은 커브의 컨트롤 포인트들을 의미한다. 예를 들어, 결정부(110)는 커브 데이터(610)에 포함된 정보를 이용하여 커브의 컨트롤 포인트들 각각의 위치를 나타내는 좌표 값을 획득할 수 있다.
222 단계에서, 형성부(120)는 제 1 포인트들 중 2 개의 포인트들을 연결한 선분의 위치 및 나머지 2개의 포인트들 각각의 위치에 기초하여 삼각형을 형성한다. 그리고, 삼각형에 대한 정보를 포함하는 삼각형 데이터(620)는 버퍼(미도시)에 저장된다. 구체적으로, 형성부(120)는 컨트롤 포인트들의 좌표 값들을 비교하여 상술한 선분의 위치 및 나머지 컨트롤 포인트들의 위치를 비교할 수 있고, 비교 결과를 참조하여 삼각형을 형성할 수 있다.
이하, 도 7a 내지 도 7b를 참조하여 결정부(110) 및 형성부(120)가 동작하는 예를 설명한다.
도 7a를 참조하면, 결정부(110)는 커브 데이터(610)를 참조하여 커브(710)의 컨트롤 포인트들(P0, P1, P2, P3)을 결정한다. 예를 들어, 결정부(110)는 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 획득할 수 있다. 이때, 결정부(110)가 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 획득하고, 컨트롤 포인트들(P0, P1, P2, P3) 간에는 순서가 정해져 있음은 도 5a를 참조하여 상술한 바와 같다.
형성부(120)는 2 개의 컨트롤 포인트들(P0, P3)을 잇는 선분을 형성한다. 예를 들어, 포인트들(P0, P3)은 커브(710)의 시작 정점과 종료 정점이 될 수 있다.
그리고, 형성부(120)는 나머지 컨트롤 포인트들(P1, P2)의 위치와 선분(P0P3)의 위치를 비교한다. 선분(P0P3)의 위치를 기준으로 컨트롤 포인트들(P1, P2)은 모두 위쪽에 존재하는바, 형성부(120)는 컨트롤 포인트들(P1, P2)이 동일한 방향에 위치하고 있다고 판단한다.
그리고, 형성부(120)는 판단 결과에 기초하여 두 개의 삼각형들(P0P3P1, P1P3P2)을 형성한다. 예를 들어, 컨트롤 포인트들(P1, P2)이 동일한 방향에 위치하고 있으므로, 형성부(120)는 삼각형들(P0P3P1, P1P3P2) 중 어느 하나(P0P3P1)는 선분(P0P3)을 모서리로 하는 것으로 형성하고, 나머지 하나(P1P3P2)는 선분(P0P3)을 모서리로 하지 않는 것으로 형성할 수 있다.
도 7b를 참조하면, 결정부(110)는 커브 데이터(610)를 참조하여 커브(720)의 컨트롤 포인트들(P0, P1, P2, P3)을 결정한다. 이때, 결정부(110)가 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 획득하고, 컨트롤 포인트들(P0, P1, P2, P3) 간에는 순서가 정해져 있음은 도 5a를 참조하여 상술한 바와 같다.
형성부(120)는 2 개의 컨트롤 포인트들(P0, P3)을 잇는 선분을 형성한다. 예를 들어, 포인트들(P0, P3)은 커브(720)의 시작 정점과 종료 정점이 될 수 있다.
그리고, 형성부(120)는 나머지 컨트롤 포인트들(P1, P2)의 위치와 선분(P0P3)의 위치를 비교한다. 선분(P0P3)의 위치를 기준으로 컨트롤 포인트(P1)는 선분(P0P3)의 위쪽에 존재하고, 컨트롤 포인트(P2)는 선분(P0P3)의 아래쪽에 존재한다. 따라서, 형성부(120)는 컨트롤 포인트들(P1, P2)이 서로 다른 방향에 위치하고 있다고 판단한다.
그리고, 형성부(120)는 판단 결과에 기초하여 두 개의 삼각형들(P0P3P1, P0P3P2)을 형성한다. 예를 들어, 컨트롤 포인트들(P1, P2)이 서로 다른 방향에 위치하고 있으므로, 형성부(120)는 삼각형들(P0P3P1, P1P3P2)들을 선분(P0P3)을 모서리로 하는 것으로 형성할 수 있다.
도 7a에서 삼각형들(P0P3P1, P1P3P2)이 결합된 사각형(711)의 내부에는 커브(710)가 완전히 포함된다. 또한, 도 7b에서 삼각형들(P0P3P1, P0P3P2)이 결합된 사각형(721)의 내부에도 커브(720)가 완전히 포함된다. 따라서, 렌더링 장치(100)는 커브(710, 720)를 서브 커브들로 분할하지 않고서도 커브(710, 720)의 렌더링을 수행할 수 있다.
도 8 내지 도 9는 일 실시예에 따른 결정부 및 형성부가 동작하는 또 다른 예를 설명하기 위한 도면들이다.
커브의 형상에 따라, 커브는 첨점을 포함할 수 있다. 예를 들어, 도 9에 도시된 커브(910)는 첨점(C)를 포함한다. 다시 말해, 커브(910)의 컨트롤 포인트들(P0, P1, P2, P3)의 위치에 따라서 커브(910)에 첨점(C)가 포함될 수 있다.
도 8을 참조하면, 커브 데이터(810)에 포함된 커브의 형상이 도 9에 도시된 커브(910)와 같은 경우에 결정부(110) 및 형성부(120)가 동작하는 예를 나타내는 흐름도가 도시되어 있다.
213 단계에서, 결정부(110)는 커브에 대응하는 4개의 제 1 포인트들 및 첨점에 대응하는 제 2 포인트를 결정한다. 여기에서, 제 1 포인트들은 커브의 컨트롤 포인트들을 의미한다. 예를 들어, 결정부(110)는 커브 데이터(610)에 포함된 정보를 이용하여 커브의 컨트롤 포인트들 각각의 위치를 나타내는 좌표 값을 획득할 수 있다.
그리고, 결정부(110)는 컨트롤 포인트들의 좌표 값을 이용하여 첨점의 좌표를 연산한다. 예를 들어, 결정부(110)는 아래의 수학식 2 내지 수학식 4에 따라 첨점의 좌표를 연산할 수 있다.
Figure pat00002
상술한 수학식 2에서, d0, d1, d2 및 d3는 제 2 포인트의 좌표를 결정하기 위하여 필요한 벡터(D)의 요소들을 의미한다. 또한, 컨트롤 포인트(P0)의 좌표는 (x0, y0, w0), 컨트롤 포인트(P1)의 좌표는 (x1, y1, w1), 컨트롤 포인트(P2)의 좌표는 (x2, y2, w2), 컨트롤 포인트(P3)의 좌표는 (x3, y3, w3)로 가정한다.
상술한 수학식 2에 따라 d0, d1, d2 및 d3가 연산된 이후에, 결정부(110)는 아래의 수학식 3의 조건이 만족되는지 여부를 판단한다.
Figure pat00003
상술한 수학식 3의 조건이 만족되는 경우, 결정부(110)는 아래의 수학식 4에 기초하여 첨점(C)의 좌표를 연산한다.
Figure pat00004
상술한 수학식 4에서, (td, sd)는 첨점(C)의 좌표를 의미하고, t는 수학식 1에 기재된 변수를 의미한다.
223 단계에서, 형성부(120)는 제 1 포인트들 중 2개의 포인트들 및 제 2 포인트를 꼭지점으로 하는 삼각형의 내부에 커브가 포함되도록 삼각형을 형성한다. 예를 들어, 형성부(120)는 커브의 시작 정점에 대응하는 컨트롤 포인트, 커브의 종료 정점에 대응하는 컨트롤 포인트 및 첨점을 꼭지점으로 하는 삼각형을 형성할 수 있다.
이하, 도 9를 참조하여 결정부(110) 및 형성부(120)가 동작하는 예를 설명한다.
도 9를 참조하면, 결정부(110)는 커브 데이터(810)를 참조하여 커브(910)의 컨트롤 포인트들(P0, P1, P2, P3)을 결정한다. 예를 들어, 결정부(110)는 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 획득할 수 있다. 이때, 결정부(110)가 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 획득하고, 컨트롤 포인트들(P0, P1, P2, P3) 간에는 순서가 정해져 있음은 도 5a를 참조하여 상술한 바와 같다. 그리고, 결정부(110)는 상술한 수학식 2 내지 수학식 4에 기초하여 첨점(C)의 좌표를 연산한다.
형성부(120)는 2 개의 컨트롤 포인트들(P0, P3) 및 첨점(C)을 꼭지점으로 하는 삼각형(911)을 형성한다. 예를 들어, 포인트들(P0, P3)은 커브(910)의 시작 정점과 종료 정점이 될 수 있다.
도 9를 참조하여 상술한 바에 따르면, 삼각형(911)의 내부에는 커브(910)가 완전히 포함된다. 따라서, 렌더링 장치(100)는 커브(910)를 서브 커브들로 분할하지 않고서도 커브(910)의 렌더링을 수행할 수 있다.
도 10 내지 도 11은 일 실시예에 따른 결정부 및 형성부가 동작하는 또 다른 예를 설명하기 위한 도면들이다.
커브의 형상에 따라, 커브는 루프를 포함할 수 있다. 예를 들어, 도 11에 도시된 커브(1110)는 교차점(D)를 포함하는 루프를 포함한다. 다시 말해, 커브(1110)의 컨트롤 포인트들(P0, P1, P2, P3)의 위치에 따라서 커브(1110)에 루프가 포함될 수 있다.
도 10을 참조하면, 커브 데이터(1010)에 포함된 커브의 형상이 도 11에 도시된 커브(1110)와 같은 경우에 결정부(110) 및 형성부(120)가 동작하는 예를 나타내는 흐름도가 도시되어 있다.
214 단계에서, 결정부(110)는 커브에 대응하는 4개의 제 1 포인트들 및 커브가 교차되는 지점에 대응하는 제 2 포인트를 결정한다. 여기에서, 제 1 포인트들은 커브의 컨트롤 포인트들을 의미한다. 예를 들어, 결정부(110)는 커브 데이터(1010)에 포함된 정보를 이용하여 커브의 컨트롤 포인트들 각각의 위치를 나타내는 좌표 값을 획득할 수 있다.
그리고, 결정부(110)는 컨트롤 포인트들의 좌표 값을 이용하여 교차점의 좌표를 연산한다. 예를 들어, 결정부(110)는 상술한 수학식 2 및 아래의 수학식 5 내지 수학식 6에 따라 교차점의 좌표를 연산할 수 있다.
구체적으로, 상술한 수학식 2에 따라 d0, d1, d2 및 d3가 연산된 이후에, 결정부(110)는 아래의 수학식 5의 조건이 만족되는지 여부를 판단한다.
Figure pat00005
상술한 수학식 5의 조건이 만족되는 경우, 결정부(110)는 아래의 수학식 6에 기초하여 교차점(D)의 좌표를 연산한다.
Figure pat00006
상술한 수학식 6에서, (td, sd)는 교차점(D)의 좌표를 의미하고, t는 수학식 1에 기재된 변수를 의미한다.
223 단계에서, 형성부(120)는 제 1 포인트들 중 2개의 포인트들 및 제 2 포인트를 꼭지점으로 하는 2개의 삼각형의 내부에 커브가 포함되도록 삼각형들을 형성한다. 예를 들어, 형성부(120)는 커브의 시작 정점에 대응하는 컨트롤 포인트, 커브의 종료 정점에 대응하는 컨트롤 포인트 및 교차점을 꼭지점으로 하는 제 1 삼각형 및 나머지 컨트롤 포인트들 및 교차점을 꼭지점으로 하는 제 2 삼각형을 형성할 수 있다.
이하, 도 11을 참조하여 결정부(110) 및 형성부(120)가 동작하는 예를 설명한다.
도 11을 참조하면, 결정부(110)는 커브 데이터(1010)를 참조하여 커브(1110)의 컨트롤 포인트들(P0, P1, P2, P3)을 결정한다. 예를 들어, 결정부(110)는 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 획득할 수 있다. 이때, 결정부(110)가 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 획득하고, 컨트롤 포인트들(P0, P1, P2, P3) 간에는 순서가 정해져 있음은 도 5a를 참조하여 상술한 바와 같다. 그리고, 결정부(110)는 상술한 수학식 2 및 수학식 5내지 수학식 6에 기초하여 교차점(D)의 좌표를 연산한다.
형성부(120)는 2 개의 컨트롤 포인트들(P0, P3) 및 교차점(D)을 꼭지점으로 하는 제 1 삼각형(1111)을 형성한다. 여기에서, 포인트들(P0, P3)은 커브(910)의 시작 정점과 종료 정점이 될 수 있다. 또한, 형성부(120)는 나머지 2 개의 컨트롤 포인트들(P1, P2) 및 교차점(D)을 꼭지점으로 하는 제 2 삼각형(1112)을 형성한다.
도 11을 참조하여 상술한 바에 따르면, 제 1 삼각형(1111)의 내부 및 제 2 삼각형(1112)의 내부에는 커브(1110)가 완전히 포함된다. 따라서, 렌더링 장치(100)는 커브(1110)를 서브 커브들로 분할하지 않고서도 커브(910)의 렌더링을 수행할 수 있다.
도 4 내지 도 11을 참조하여 상술한 바에 따르면, 렌더링 장치(100)는 커브의 다양한 형상들에 기초하여 적응적으로 삼각형을 형성할 수 있다. 이하, 도 12를 참조하여, 도 4 내지 도 11을 참조하여 상술한 예들이 하나의 과정으로 처리되는 일 예를 설명한다.
도 12는 일 실시예에 따른 렌더링 장치가 동작하는 또 다른 예를 설명하기 위한 흐름도이다.
도 12에 도시된 흐름도에는 도 4 내지 도 11을 참조하여 상술한 결정부(110) 및 형성부(120)의 동작 예들이 포함된다. 따라서, 이하에서 생략된 내용이라고 하더라도, 도 4 내지 도 11을 참조하여 상술된 내용은 도 12의 흐름도에도 적용될 수 있다.
1210 단계에서, 렌더링 장치(100)는 커브의 컨트롤 포인트들(P0, P1, P2, P3)을 결정한다. 구체적으로, 렌더링 장치(100)는 커브 데이터에 기초하여 컨트롤 포인트들(P0, P1, P2, P3)의 좌표 값을 획득할 수 있다. 여기에서, 컨트롤 포인트(P0)는 커브의 시작 정점에 대응하고, 컨트롤 포인트(P3)는 커브의 종료 정점에 대응하는 것으로 가정한다.
1220 단계에서, 렌더링 장치(100)는 컨트롤 포인트(P2)가 삼각형(P0P3P1)에 포함되는지 여부를 판단한다. 구체적으로, 렌더링 장치(100)는 3개의 컨트롤 포인트들(P0, P1, P3)을 꼭지점으로 하는 삼각형(P0P3P1)을 형성하고, 삼각형(P0P3P1)의 내부에 컨트롤 포인트(P2)가 포함되는지 여부를 판단한다.
만약, 삼각형(P0P3P1)의 내부에 컨트롤 포인트(P2)가 포함된다면 1225 단계로 진행하고, 그렇지 않다면 1230 단계로 진행한다.
1225 단계에서, 렌더링 장치(100)는 삼각형(P0P3P1)을 버텍스 버퍼(미도시)에 저장한다. 예를 들어, 렌더링 장치(100)는 삼각형(P0P3P1)에 대한 정보가 포함된 삼각형 데이터를 버텍스 버퍼(미도시)에 저장할 수 있다.
1230 단계에서, 렌더링 장치(100)는 컨트롤 포인트(P1)가 삼각형(P0P3P2)에 포함되는지 여부를 판단한다. 구체적으로, 렌더링 장치(100)는 3개의 컨트롤 포인트들(P0, P2, P3)을 꼭지점으로 하는 삼각형(P0P3P2)을 형성하고, 삼각형(P0P3P2)의 내부에 컨트롤 포인트(P1)가 포함되는지 여부를 판단한다.
만약, 삼각형(P0P3P2)의 내부에 컨트롤 포인트(P1)가 포함된다면 1235 단계로 진행하고, 그렇지 않다면 1240 단계로 진행한다.
1235 단계에서, 렌더링 장치(100)는 삼각형(P0P3P2)을 버텍스 버퍼(미도시)에 저장한다. 예를 들어, 렌더링 장치(100)는 삼각형(P0P3P2)에 대한 정보가 포함된 삼각형 데이터를 버텍스 버퍼(미도시)에 저장할 수 있다.
1240 단계에서, 렌더링 장치(100)는 커브가 첨점을 포함하는지 여부를 판단한다. 예를 들어, 렌더링 장치(100)는 상술한 수학식 2 내지 수학식 3에 기초하여 커브가 첨점을 포함하는지 여부를 판단할 수 있다.
만약, 커브가 첨점을 포함하는 경우라면 1243 단계로 진행하고, 그렇지 않은 경우라면 1250 단계로 진행한다.
1243 단계에서, 렌더링 장치(100)는 첨점(C)의 좌표를 연산한다. 예를 들어, 렌더링 장치(100)는 상술한 수학식 4에 기초하여 첨점(C)의 좌표를 연산할 수 있다.
1245 단계에서, 렌더링 장치(100)는 삼각형(P0P3C)를 버텍스 버퍼(미도시)에 저장한다. 구체적으로, 렌더링 장치(100)는 3개의 포인트들(P0, P3, C)을 꼭지점으로 하는 삼각형(P0P3C)을 형성하고, 삼각형(P0P3C)에 대한 정보가 포함된 삼각형 데이터를 버텍스 버퍼(미도시)에 저장할 수 있다.
1250 단계에서, 렌더링 장치(100)는 커브가 루프를 포함하는지 여부를 판단한다. 예를 들어, 렌더링 장치(100)는 상술한 수학식 2 및 수학식 5에 기초하여 커브가 루프를 포함하는지 여부를 판단할 수 있다.
만약, 커브가 루프를 포함하는 경우라면 1253 단계로 진행하고, 그렇지 않은 경우라면 1260 단계로 진행한다.
1253 단계에서, 렌더링 장치(100)는 교차점(D)의 좌표를 연산한다. 예를 들어, 렌더링 장치(100)는 상술한 수학식 6에 기초하여 교차점(D)의 좌표를 연산할 수 있다.
1255 단계 및 1257 단계에서, 렌더링 장치(100)는 제 1 삼각형(P0P3D) 및 제 2 삼각형(DP1P2)을 버텍스 버퍼(미도시)에 저장한다. 구체적으로, 렌더링 장치(100)는 제 1 삼각형(P0P3D) 및 제 2 삼각형(DP1P2)을 형성하고, 삼각형들(P0P3D, DP1P2)에 대한 정보가 포함된 삼각형 데이터를 버텍스 버퍼(미도시)에 저장할 수 있다.
1260 단계에서, 렌더링 장치(100)는 선분(P0P3)을 기준으로 컨트롤 포인트들(P1, P2)가 동일한 측면에 위치하는지 여부를 판단한다. 구체적으로, 렌더링 장치(100)는 커브의 시작 정점에 대응하는 컨트롤 포인트(P0)와 종료 정점에 대응하는 컨트롤 포인트(P3)를 연결하는 선분(P0P3)을 형성한다. 그리고, 렌더링 장치(100)는 나머지 컨트롤 포인트들(P1, P2)가 선분(P0P3)을 기준으로 동일한 측면에 위치하는지 여부를 판단한다.
만약, 동일한 측면에 위치한다고 판단된 경우 1263 단계로 진행하고, 그렇지 않다고 판단된 경우 1267 단계로 진행한다.
1263 단계 및 1265 단계에서, 렌더링 장치(100)는 제 1 삼각형(P0P3P1) 및 제 2 삼각형(P1P3P2)을 버텍스 버퍼(미도시)에 저장한다. 구체적으로, 렌더링 장치(100)는 제 1 삼각형(P0P3P1) 및 제 2 삼각형(P1P3P2)을 형성하고, 삼각형들(P0P3P1, P1P3P2)에 대한 정보가 포함된 삼각형 데이터를 버텍스 버퍼(미도시)에 저장할 수 있다.
1267 단계 및 1269 단계에서, 렌더링 장치(100)는 제 3 삼각형(P0P3P1) 및 제 4 삼각형(P0P3P2)을 버텍스 버퍼(미도시)에 저장한다. 구체적으로, 렌더링 장치(100)는 제 3 삼각형(P0P3P1) 및 제 4 삼각형(P0P3P2)을 형성하고, 삼각형들(P0P3P1, P0P3P2)에 대한 정보가 포함된 삼각형 데이터를 버텍스 버퍼(미도시)에 저장할 수 있다.
도 13은 일 실시예에 따른 렌더링 시스템의 일 예를 도시한 구성도이다.
도 13을 참조하면, 렌더링 시스템(1300)은 중앙 처리 장치(1310) 및 그래픽 처리 장치(1320)를 포함한다. 또한, 중앙 처리 장치(1310)는 디바이스 드라이버(1311)를 포함할 수 있고, 그래픽 처리 장치(1320)는 커브의 렌더링을 수행하는데 필요한 모듈들(1321, 1322, 1323, 1324, 1325, 1326, 1327)을 포함할 수 있다.
도 1 내지 도 12를 참조하여 상술한 결정부(110) 및 형성부(120)의 동작은 도 13의 중앙 처리 장치(1310)가 수행할 수 있다. 다시 말해, 디바이스 드라이버(1311)는 커브의 형상에 기초하여 복수의 포인트들을 결정한다. 그리고, 디바이스 드라이버(1311)는 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형을 형성한다. 그리고, 디바이스 드라이버(1311)는 삼각형에 대한 정보를 포함하는 삼각형 데이터를 버텍스 버퍼(미도시)에 저장한다.
예를 들어, 중앙 처리 장치(1310)는 커브 데이터를 응용 프로그램을 통하여 생성할 수 있고, 디바이스 드라이버(1311)는 그래픽 처리 장치(1320)가 커브의 렌더링을 수행할 수 있도록 커맨드를 생성할 수 있다.
한편, 도 1 내지 도 12를 참조하여 상술한 쉐이딩부(130)의 동작은 도 13의 그래픽 처리 장치(1320)가 수행할 수 있다. 다시 말해, 그래픽 처리 장치(1320)는 버텍스 버퍼(미도시)에 저장된 삼각형 데이터를 이용하여 커브에 대응하는 픽셀들을 쉐이딩한다.
예를 들어, 그래픽 처리 장치(1320)는 커브에 대응하는 픽셀들 각각의 주회 횟수를 연산하고, 연산된 주회 횟수에 기초하여 픽셀에 컬러를 설정할 수 있다. 또한, 그래픽 처리 장치(1320)는 프레임을 복수의 타일들로 분할하고, 각각의 타일에 대한 타일 비닝을 수행할 수 있다.
먼저, 그래픽 처리 장치(1320)는 프레임에 포함된 타일들 중에서 삼각형을 포함하는 타일들을 선택할 수 있다. 여기에서, 삼각형은 중앙 처리 장치(1310)에 의하여 형성된 삼각형을 의미한다. 삼각형은 3 개의 에지들로 분할될 수 있다. 다시 말해, 삼각형은 꼭지점에 대응하는 정점들을 기준으로 3 개의 에지들로 분할 될 수 있다. 따라서, 그래픽 처리 장치(1320)는 프레임에 포함된 타일들 중에서 3 개의 에지들 각각을 포함하는 타일을 선택할 수 있다.
그 후에, 그래픽 처리 장치(1320)는 선택된 타일들 각각에 커브의 식별 값을 할당한다. 또한, 그래픽 처리 장치(1320)는 선택된 타일들 각각의 일 측 방향에 나열된 타일에 커브의 식별 값을 할당(Curve_List를 생성)한다. 여기에서, 일 측 방향은 우측 방향을 의미할 수 있으나, 이에 한정되지 않는다.
이하, 그래픽 처리 장치(1320)에 포함된 모듈들(1321, 1322, 1323, 1324, 1325, 1326, 1327)이 동작하는 일 예를 설명한다.
입력 어셈블러(1321)는 경로를 구성하는 적어도 하나의 정점에 대한 데이터를 메모리에서 독출하고, 독출된 데이터를 버텍스 쉐이더(1322)에게 전송한다. 버텍스 쉐이더(1322)는 정점에 대하여 사용자가 작성한 버텍스 쉐이딩 코드(vertex shading code)를 수행한다. 다시 말해, 버텍스 쉐이더(1322)는 커브를 나타내는 커맨드를 해석한다. 예를 들어, GPU의 쉐이딩 코어가 버텍스 쉐이더(1322)의 기능을 수행할 수 있다.
프리미티브 어셈블러(1323)는 버텍스 쉐이더(1322)를 통과한 정점들을 모아서 프리미티브를 구성한다. 여기에서, 프리미티브는 정점들로 구성되는 경로로서, 객체를 구성하는 요소를 의미한다. 일 실시예에 따른 프리미티브는 커브를 포함한다.
타일 비너(1324)는 타일 비닝을 수행한다. 예를 들어, 타일 비너(1324)는 프레임에 포함된 타일들에 커브의 식별 값을 할당할 수 있다. 예를 들어, 타일 비너(1324)는 타일의 렌더링 시에 처리해야 하는 프리미티브(커브)의 명칭을 포함한 리스트를 각각의 타일마다 생성할 수 있다. 이하에서, 커브의 명칭을 포함한 리스트를 ‘Curve_List’라고 한다.
타일은 프레임에 포함된 픽셀들의 그룹을 의미한다. 예를 들어, 프레임에 1024*768 개의 픽셀들이 포함되어 있고, 프레임이 4개의 타일들로 분할될 수 있다고 가정하면, 하나의 타일에는 512*384 개의 픽셀들이 포함된다.
커브의 식별 값은 커브를 지칭하는 것으로 미리 정해진 명칭이 해당될 수 있다. 그러나, 특정 커브를 의미하는 것으로서 미리 약속된 정보라면 제한 없이 식별 값에 해당될 수 있다.
또한, 타일 비너(1324)는 커브의 위치 및 진행 방향에 기초하여 타일들 각각의 초기 주회 횟수를 연산할 수 있다. 다만, 타일 비너(1324)가 초기 주회 횟수를 연산하지 않는다면, 주회 횟수 생성기(1325)가 초기 주회 횟수를 연산할 수도 있다.
주회 횟수 생성기(1325)는 커브의 위치 및 진행 방향에 기초하여 타일들 각각에 포함된 픽셀들의 주회 횟수를 연산할 수 있다. 예를 들어, 주회 횟수 생성기(1325)는 하드웨어 또는 쉐이딩 코어에서 동작하는 소프트웨어로 구현될 수 있다.
한편, 도 13에는 주회 횟수 생성기(1325)가 그래픽 처리 장치(1320)에 포함된 것으로 도시하였으나, 이에 한정되지 않는다. 다시 말해, 주회 횟수 생성기(1325)는 그래픽 처리 장치(1320)와 독립된 단일 장치가 될 수도 있다. 예를 들어, 독립된 주회 횟수 생성기(미도시)는 그래픽 처리 장치(1320)로부터 커브에 포함된 정점들 각각의 좌표에 대한 정보 및 프레임에 포함된 픽셀의 좌표에 대한 정보를 수신한다. 그리고, 독립된 주회 횟수 생성기(미도시)는 수신된 정보를 이용하여 픽셀의 주회 횟수를 연산하고, 연산된 주회 횟수를 그래픽 처리 장치(1320)로 반환한다.
다시 말해, 픽셀의 주회 횟수가 그래픽 처리 장치(1320)에 포함된 쉐이딩 코어에서 연산되는 것으로 구현될 수도 있고, 그래픽 처리 장치(1320)와 독립된 하드웨어에서 연산되는 것으로 구현될 수도 있다.
렌더 출력부(1326)는 픽셀 쉐이더가 동작함에 따라 생성된 데이터(예를 들어, 픽셀의 컬러에 대한 정보)를 컬러 버퍼(1327)에 기록한다. 다시 말해, 픽셀 쉐이더는 프레임에 포함된 픽셀들 각각의 컬러를 결정하고, 렌더 출력부(1326)는 픽셀의 컬러에 대한 정보를 합(merge)하여 컬러 버퍼(1327)에 기록한다.
예를 들어, 픽셀 쉐이더는 프레임에 포함된 픽셀들에 대한 정보를 수신하고, 픽셀들 각각의 컬러를 결정할 수 있다. 다시 말해, 픽셀 쉐이더는 픽셀들 각각의 주회 횟수에 기초하여 픽셀의 쉐이딩을 수행한다. 여기에서, 쉐이딩은 픽셀들 각각에 컬러를 설정하는 과정을 의미할 수 있으나, 이에 한정되지 않는다. 예를 들어, 쉐이딩은 픽셀들 각각에 명암을 설정하는 과정이 될 수도 있고, 픽셀들 각각에 질감을 나타내는 과정이 될 수도 있다. 또한, 픽셀 쉐이더는 텍스쳐(texture)에 기초하여 픽셀의 쉐이딩을 수행할 수 있다. 예를 들어, 픽셀 쉐이더는 기 설정된 규칙에 기초하여 픽셀의 컬러를 결정할 수 있다.
렌더 출력부(1326)는 픽셀의 컬러에 대한 정보를 버퍼(1327)에 기록한다.
도 14는 일 실시예에 따른 렌더링 시스템의 다른 예를 도시한 구성도이다.
도 14에 도시된 렌더링 시스템(1400)을 도 13에 도시된 렌더링 시스템(1300)과 비교하면, 그래픽 처리 장치(1420)에 삼각형 생성기(1421)가 더 포함되어 있다. 다시 말해, 도 14의 디바이스 드라이버(1411)는 도 13의 디바이스 드라이버(1311)가 수행하였던 삼각형의 형성 작업을 그래픽 처리 장치(1420)의 삼각형 생성기(1421)에게 위임할 수 있다.
한편, 상술한 삼각형의 형성 과정을 수행하지 않는 것을 제외하고는, 도 14의 디바이스 드라이버(1411)가 동작하는 예는 도 13의 디바이스 드라이버(1311)가 동작하는 예와 동일하다. 따라서, 이하에서는 중앙 처리 장치(1410) 및 디바이스 드라이버(1411)에 대한 구체적인 설명은 생략한다.
또한, 도 14의 그래픽 처리 장치(1420)에 포함된 모듈들(1422, 1423, 1424, 1425, 1426, 1427, 1428)이 동작하는 예는 도 13의 그래픽 처리 장치(1320)에 포함된 모듈들(1321, 1322, 1323, 1324, 1325, 1326, 1327)이 동작하는 예와 동일하다. 따라서, 이하에서는 그래픽 처리 장치(1420)에 대한 구체적인 설명은 생략한다.
상술한 바에 따르면, 렌더링 장치(100)는 커브의 다양한 형상들에 기초하여 적응적으로 삼각형을 형성할 수 있다. 따라서, 렌더링 장치(100)는 커브를 서브 커브들로 분할하지 않고서도 커브의 렌더링을 수행할 수 있는바, 렌더링이 수행되는데 필요한 작업량이 감소될 뿐만 아니라, 고품질의 렌더링 결과가 출력될 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100: 렌더링 장치
110: 결정부
120: 형성부
130: 쉐이딩부

Claims (17)

  1. 커브(curve) 렌더링을 수행하는 방법에 있어서,
    상기 커브의 형상에 기초하여 복수의 포인트(point)들을 결정하는 단계;
    상기 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형을 형성하는 단계; 및
    상기 적어도 하나의 삼각형을 이용하여 상기 커브에 대응하는 픽셀들을 쉐이딩하는 단계;를 포함하고,
    상기 삼각형은 상기 포인트들을 꼭지점으로 하는 삼각형을 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 포인트들은 상기 커브에 대응하는 제 1 포인트들 또는 상기 제 1 포인트들에 기초하여 연산된 제 2 포인트를 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 커브는 큐빅 베지어 커브(cubic Bezier curve)를 포함하고,
    상기 결정하는 단계는 상기 큐빅 베지어 커브에 대응하는 4개의 제 1 포인트들을 결정하고,
    상기 형성하는 단계는 상기 제 1 포인트들 중 3개의 포인트들을 꼭지점으로 하는 삼각형의 내부에 상기 3개의 포인트들이 제외된 나머지 포인트가 포함되도록 상기 삼각형을 형성하는 방법.
  4. 제 1 항에 있어서,
    상기 커브는 큐빅 베지어 커브(cubic Bezier curve)를 포함하고,
    상기 결정하는 단계는 상기 큐빅 베지어 커브에 대응하는 4개의 제 1 포인트들을 결정하고,
    상기 형성하는 단계는 상기 제 1 포인트들 중 2개의 포인트들을 연결한 선분의 위치 및 상기 2개의 포인트들이 제외된 나머지 2개의 포인트들 각각의 위치에 기초하여 상기 삼각형을 형성하는 방법.
  5. 제 1 항에 있어서,
    상기 커브는 첨점(cusp)을 포함하는 커브를 포함하고,
    상기 결정하는 단계는 상기 첨점을 포함하는 커브에 대응하는 4개의 제 1 포인트들 및 상기 첨점에 대응하는 제 2 포인트를 결정하고,
    상기 형성하는 단계는 상기 제 1 포인트들 중 2개의 포인트들 및 상기 제 2 포인트를 꼭지점으로 하는 삼각형의 내부에 상기 첨점을 포함하는 커브가 포함되도록 상기 삼각형을 형성하는 방법.
  6. 제 1 항에 있어서,
    상기 커브는 루프(loop)를 포함하는 커브를 포함하고,
    상기 결정하는 단계는 상기 루프를 포함하는 커브에 대응하는 4개의 제 1 포인트들 및 상기 루프를 포함하는 커브가 교차되는 지점에 대응하는 제 2 포인트를 결정하고,
    상기 형성하는 단계는 상기 제 1 포인트들 중 2개의 포인트들 및 상기 제 2 포인트를 꼭지점으로 하는 2개의 삼각형들의 내부에 상기 루프를 포함하는 커브가 포함되도록 상기 삼각형을 형성하는 방법.
  7. 제 1 항에 있어서,
    상기 쉐이딩하는 단계는 상기 삼각형에 포함된 픽셀들 중에서 상기 커브의 내부에 대응하는 픽셀들에 컬러를 설정하는 방법.
  8. 제 1 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  9. 커브(curve) 렌더링을 수행하는 장치에 있어서,
    상기 커브의 형상에 기초하여 복수의 포인트(point)들을 결정하는 결정부;
    상기 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형을 형성하는 형성부; 및
    상기 적어도 하나의 삼각형을 이용하여 상기 커브에 대응하는 픽셀들을 쉐이딩하는 쉐이딩부;를 포함하고,
    상기 삼각형은 상기 포인트들을 꼭지점으로 하는 삼각형을 포함하는 장치.
  10. 제 9 항에 있어서,
    상기 포인트들은 상기 커브에 대응하는 제 1 포인트들 또는 상기 제 1 포인트들에 기초하여 연산된 제 2 포인트를 포함하는 장치.
  11. 제 9 항에 있어서,
    상기 커브는 큐빅 베지어 커브(cubic Bezier curve)를 포함하고,
    상기 결정부는 상기 큐빅 베지어 커브에 대응하는 4개의 제 1 포인트들을 결정하고,
    상기 형성부는 상기 제 1 포인트들 중 3개의 포인트들을 꼭지점으로 하는 삼각형의 내부에 상기 3개의 포인트들이 제외된 나머지 포인트가 포함되도록 상기 삼각형을 형성하는 장치.
  12. 제 9 항에 있어서,
    상기 커브는 큐빅 베지어 커브(cubic Bezier curve)를 포함하고,
    상기 결정부는 상기 큐빅 베지어 커브에 대응하는 4개의 제 1 포인트들을 결정하고,
    상기 형성부는 상기 제 1 포인트들 중 2개의 포인트들을 연결한 선분의 위치 및 상기 2개의 포인트들이 제외된 나머지 2개의 포인트들 각각의 위치에 기초하여 상기 삼각형을 형성하는 장치.
  13. 제 9 항에 있어서,
    상기 커브는 첨점(cusp)을 포함하는 커브를 포함하고,
    상기 결정부는 상기 첨점을 포함하는 커브에 대응하는 4개의 제 1 포인트들 및 상기 첨점에 대응하는 제 2 포인트를 결정하고,
    상기 형성부는 상기 제 1 포인트들 중 2개의 포인트들 및 상기 제 2 포인트를 꼭지점으로 하는 삼각형의 내부에 상기 첨점을 포함하는 커브가 포함되도록 상기 삼각형을 형성하는 장치.
  14. 제 9 항에 있어서,
    상기 커브는 루프(loop)를 포함하는 커브를 포함하고,
    상기 결정부는 상기 루프를 포함하는 커브에 대응하는 4개의 제 1 포인트들 및 상기 루프를 포함하는 커브가 교차되는 지점에 대응하는 제 2 포인트를 결정하고,
    상기 형성부는 상기 제 1 포인트들 중 2개의 포인트들 및 상기 제 2 포인트를 꼭지점으로 하는 2개의 삼각형들의 내부에 상기 루프를 포함하는 커브가 포함되도록 상기 삼각형을 형성하는 장치.
  15. 제 9 항에 있어서,
    상기 삼각형에 포함된 픽셀들 중에서 상기 커브의 내부에 대응하는 픽셀들에 컬러를 설정하는 쉐이딩부;를 더 포함하는 장치.
  16. 커브(curve) 렌더링을 수행하는 시스템에 있어서,
    상기 커브의 형상에 기초하여 복수의 포인트(point)들을 결정하고, 상기 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형을 형성하는 중앙 처리 장치(CPU); 및
    상기 적어도 하나의 삼각형을 이용하여 상기 커브에 대응하는 픽셀들을 쉐이딩하는 그래픽 처리 장치(GPU);를 포함하고,
    상기 삼각형은 상기 포인트들을 꼭지점으로 하는 삼각형을 포함하는 시스템.
  17. 커브(curve) 렌더링을 수행하는 시스템에 있어서,
    상기 커브의 형상에 기초하여 복수의 포인트(point)들을 결정하고, 상기 포인트들 간의 위치 관계에 기초하여 적어도 하나의 삼각형에 대응하는 데이터를 생성하는 중앙 처리 장치(CPU); 및
    상기 생성된 데이터를 이용하여 상기 적어도 하나의 삼각형을 형성하고, 상기 적어도 하나의 삼각형을 이용하여 상기 커브에 대응하는 픽셀들을 쉐이딩하는 그래픽 처리 장치(GPU);를 포함하고,
    상기 삼각형은 상기 포인트들을 꼭지점으로 하는 삼각형을 포함하는 시스템.
KR1020150063881A 2015-05-07 2015-05-07 커브 렌더링을 수행하는 방법 및 장치. KR20160131457A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150063881A KR20160131457A (ko) 2015-05-07 2015-05-07 커브 렌더링을 수행하는 방법 및 장치.
US14/959,238 US20160328867A1 (en) 2015-05-07 2015-12-04 Method and apparatus for performing curve rendering

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150063881A KR20160131457A (ko) 2015-05-07 2015-05-07 커브 렌더링을 수행하는 방법 및 장치.

Publications (1)

Publication Number Publication Date
KR20160131457A true KR20160131457A (ko) 2016-11-16

Family

ID=57222738

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150063881A KR20160131457A (ko) 2015-05-07 2015-05-07 커브 렌더링을 수행하는 방법 및 장치.

Country Status (2)

Country Link
US (1) US20160328867A1 (ko)
KR (1) KR20160131457A (ko)

Also Published As

Publication number Publication date
US20160328867A1 (en) 2016-11-10

Similar Documents

Publication Publication Date Title
EP3129975B1 (en) Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
KR102276909B1 (ko) 렌더링 방법 및 장치
US8269770B1 (en) Tessellation of trimmed parametric surfaces by walking the surface
CN105006010B (zh) 执行路径渲染的方法和设备
US11074744B2 (en) Method and apparatus for performing tile-based path rendering
KR102101834B1 (ko) 영상 처리 장치 및 방법
US10169839B2 (en) Method and apparatus for executing graphics pipeline
KR20150039495A (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US10134171B2 (en) Graphics processing systems
EP3142074B1 (en) Method and apparatus for performing path stroking
US20150145858A1 (en) Method and apparatus to process current command using previous command information
WO2016040538A1 (en) Convex polygon clipping during rendering
JP5798357B2 (ja) 画像処理装置、画像処理方法
KR102316438B1 (ko) 3차원 데이터 처리 방법
US10297067B2 (en) Apparatus and method of rendering frame by adjusting processing sequence of draw commands
KR102423767B1 (ko) 타일 기반 경로 렌더링을 수행하는 방법 및 장치.
KR20160131457A (ko) 커브 렌더링을 수행하는 방법 및 장치.
KR102426667B1 (ko) 경로 렌더링에서 에일리어싱을 방지하는 방법 및 장치.
KR101654865B1 (ko) 스트로크 기반의 이미지 렌더링 장치, 방법 및 컴퓨터 프로그램
KR102304932B1 (ko) 그래픽스 데이터를 처리하는 방법, 장치 및 기록매체
JP2014048847A (ja) 画像処理装置、画像処理方法
JP2019121193A (ja) プログラム、記録媒体、及び影描画方法