KR20170031479A - 경로 스트로크를 수행하는 방법 및 장치 - Google Patents

경로 스트로크를 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR20170031479A
KR20170031479A KR1020150129090A KR20150129090A KR20170031479A KR 20170031479 A KR20170031479 A KR 20170031479A KR 1020150129090 A KR1020150129090 A KR 1020150129090A KR 20150129090 A KR20150129090 A KR 20150129090A KR 20170031479 A KR20170031479 A KR 20170031479A
Authority
KR
South Korea
Prior art keywords
texture
primitive
stroke
slope
aliasing
Prior art date
Application number
KR1020150129090A
Other languages
English (en)
Other versions
KR102443697B1 (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 KR1020150129090A priority Critical patent/KR102443697B1/ko
Priority to JP2016169474A priority patent/JP6895232B2/ja
Priority to EP16187912.7A priority patent/EP3142074B1/en
Priority to CN201610816032.8A priority patent/CN106530379B/zh
Priority to US15/260,684 priority patent/US10885681B2/en
Publication of KR20170031479A publication Critical patent/KR20170031479A/ko
Application granted granted Critical
Publication of KR102443697B1 publication Critical patent/KR102443697B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

경로 렌더링을 수행하는 방법에 따르면, 에일리어싱(aliasing)이 발생될지 여부에 따라 텍스쳐(texture)를 생성하고, 프리미티브의 외곽을 따라 텍스쳐를 매핑한다.

Description

경로 스트로크를 수행하는 방법 및 장치 {Method and apparatus for performing a path stroke}
경로 스트로크를 수행하는 방법 및 장치에 관한다.
벡터 그래픽스(vector graphics) 또는 경로 렌더링(path rendering)을 수행하는 경우 그래픽 처리 장치(Graphics Processing Unit, 이하 GPU 라고 함)의 가속 성능을 향상시키기 위한 방법이 연구되고 있다. 경로 렌더링의 경우 입력 데이터가 삼각형들로 구성되지 않고 커맨드(command)와 정점(vertex) 들의 조합으로 구성되어 있다. 따라서, 경로 렌더링을 수행할 때에 GPU의 가속 성능을 향상시키기 어렵다.
경로 스트로크를 수행하는 방법 및 장치를 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른 경로 스트로크를 수행하는 방법은, 경로 데이터를 이용하여 상기 경로에 포함된 프리미티브(primitive)에 기반한 에일리어싱(aliasing)이 발생될지 여부를 판단하는 단계; 상기 판단 결과에 기초하여 상기 경로 스트로크의 수행에 이용될 텍스쳐(texture)를 생성하는 단계; 및 상기 프리미티브의 외곽을 따라 상기 텍스쳐를 매핑하는 단계;를 포함한다.
다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
또 다른 측면에 따른 경로 스트로크를 수행하는 장치는, 경로 데이터를 이용하여 상기 경로에 포함된 프리미티브(primitive)에 기반한 에일리어싱(aliasing)이 발생될지 여부를 판단하고, 상기 판단 결과에 기초하여 상기 경로 스트로크의 수행에 이용될 텍스쳐(texture)를 생성하는 생성부; 및 상기 프리미티브의 외곽을 따라상기 텍스쳐를 매핑하는 매핑부;를 포함한다.
또 다른 측면에 따른 그래픽 처리 장치(Graphics Processing Unit)와 연결된 중앙 처리 장치(Central Processing Unit)는, 경로 데이터를 이용하여 상기 경로에 포함된 프리미티브(primitive)에 기반한 에일리어싱(aliasing)이 발생될지 여부를 판단하고, 상기 그래픽 처리 장치로부터 텍스쳐(texture)를 수신하고, 상기 프리미티브의 외곽을 따라 상기 텍스쳐를 매핑하고, 상기 그래픽 처리 장치는, 상기 중앙 처리 장치의 요청에 따라, 상기 텍스쳐를 생성한다.
또 다른 측면에 따른 중앙 처리 장치와 연결된 그래픽 처리 장치는, 경로 데이터를 이용하여 상기 경로에 포함된 프리미티브(primitive)에 기반한 에일리어싱(aliasing)이 발생될지 여부를 판단하고, 상기 판단 결과에 기초하여 텍스쳐(texture)를 생성하고, 상기 프리미티브의 외곽을 따라 상기 텍스쳐를 매핑한다.
도 1은 일 실시예에 따른 스트로크 장치의 일 예를 나타내는 구성도이다.
도 2a 내지 도 2b는 일 실시예에 따른 스트로크 및 필(fill)의 일 예를 설명하기 위한 도면들이다.
도 3은 일 실시예에 따른 스트로크 장치가 동작하는 일 예를 나타낸 흐름도이다.
도 4는 일 실시예에 따른 생성부가 에일리어싱이 발생될지 여부를 판단하고, 텍스쳐를 생성하는 일 예를 설명하기 위한 흐름도이다.
도 5는 일 실시예에 따른 프리미티브의 기울기와 에일리어싱 발생 사이의 상관 관계를 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 제 1 텍스쳐의 일 예를 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 제 2 텍스쳐의 일 예를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 생성부가 에일리어싱이 발생될지 여부를 판단하고, 텍스쳐를 생성하는 다른 예를 설명하기 위한 흐름도이다.
도 9는 일 실시예에 따른 생성부가 제 2 텍스쳐를 생성하는 일 예를 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 생성부가 제 3 텍스쳐를 생성하는 일 예를 설명하기 위한 도면이다.
도 11은 일 실시예에 따른 생성부가 제 4 텍스쳐를 생성하는 일 예를 설명하기 위한 도면이다.
도 12는 일 실시예에 따른 매핑부가 동작하는 일 예를 설명하기 위한 도면이다.
도 13a 내지 도 13b는 일 실시예에 따른 매핑부가 동작하는 다른 예를 설명하기 위한 도면들이다.
도 14는 일 실시예에 따른 스트로크 장치의 다른 예를 도시한 구성도이다.
도 15a 내지 도 15d는 일 실시예에 따른 분할부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 16 내지 도 17은 일 실시예에 따른 경로 스트로크를 수행하는 방법을 나타내는 흐름도들이다.
도 18 내지 도 21은 일 실시예에 따른 경로 스트로크를 수행하는 방법이 중앙 처리 장치 또는 그래픽 처리 장치 에서 구현되는 예들을 설명하기 위한 도면들이다.
실시 예들에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…부”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 일 실시예에 따른 스트로크 장치의 일 예를 나타내는 구성도이다.
도 1을 참조하면, 스트로크 장치(100)는 생성부(110) 및 매핑부(120)를 포함한다. 도 1에 도시된 스트로크 장치(100)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 렌더링이 수행되는데 필요한 다른 범용적인 구성요소들이 더 포함될 수 있다. 또한, 스트로크 장치(100)는 중앙 처리 장치(Central Processing Unit), 그래픽 처리 장치(Graphics Processing Unit) 또는 하드웨어 가속기(Hardware Accelerator)로 구현될 수 있다.
생성부(110)는, 경로 데이터를 이용하여, 경로에 포함된 프리미티브(primitive)에 기반한 에일리어싱(aliasing)이 발생될지 여부를 판단한다. 예를 들어, 생성부(110)는 경로 데이터를 이용하여 프리미티브의 기울기를 연산하고, 연산된 기울기에 기초하여 에일리어싱이 발생될지 여부를 판단할 수 있다.
경로는 렌더링의 대상인 객체를 구성하는 요소(element)를 의미한다. 다시 말해, 객체는 적어도 하나 이상의 경로가 연결되어 형성된 폐다각형(closed polygon) 또는 폐경로(closed path)을 포함할 수 있다. 예를 들어, 경로는 라인(line) 또는 커브(curve)가 해당될 수 있다. 프리미티브는 렌더링에 이용되는 엘리먼트로서, 객체 또는 경로의 세부 단위를 의미한다. 어떤 경우에는, 경로와 프리미티브가 동일한 대상을 지칭할 수도 있다.
스트로크 장치(100)에 입력되는 경로 데이터(path data)에는 경로에 포함된 복수의 정점들 각각의 좌표에 대한 정보 및 정점들을 조합하여 경로를 구성하기 위한 커맨드(command)들이 포함된다. 여기에서, 정점은 경로의 시작 위치에 대응하는 정점 경로의 종료 위치에 대응하는 정점, 또는 커브의 경우 중간 위치를 제어하기 위한 제어점(control point)를 포함할 수 있다.
예를 들어, 프레임에 포함된 픽셀들 중 제 1 픽셀로부터 제 2 픽셀까지의 라인을 경로라고 가정하면, 정점들은 제 1 픽셀 및 제 2 픽셀 각각에 대응하는 지점을 의미한다. 따라서, 경로 데이터는 제 1 픽셀에 대응하는 제 1 정점의 좌표, 제 2 픽셀에 대응하는 제 2 픽셀의 좌표 및 제 1 정점에서 제 2 정점까지 라인을 구성하라는 커맨드를 포함할 수 있다.
따라서, 경로 데이터를 참조하면, 경로를 구성하는 정점들 각각의 좌표에 대한 정보뿐 만 아니라, 경로의 위치 및 진행 방향에 대한 정보도 파악될 수 있다. 만약, 경로가 라인이라고 가정하면, 경로 데이터에 기초하여 라인의 기울기에 대한 정보도 파악될 수 있다. 또한, 경로 데이터에는 각각의 픽셀에 설정될 컬러 값에 대한 정보도 포함될 수 있다.
또한, 스트로크 장치(100)에 입력되는 스트로크 데이터(stroke data)에는 스트로크 너비(width), 스트로크 컬러 및 배경(background) 컬러에 대한 정보 중 적어도 하나가 포함될 수 있다. 여기에서, 스트로크는 객체의 외곽선에 대응하는 픽셀들에 컬러를 표시하는 과정을 의미한다.
객체는 적어도 하나의 경로 또는 적어도 하나의 프리미티브로 구성되므로, 스트로크는 경로 또는 프리미티브에 대응하는 픽셀들에 컬러를 표시하는 과정을 의미한다. 따라서, 스트로크 장치(100)가 스트로크 데이터를 수신함에 따라, 스트로크 너비에 대응하는 픽셀들에 스트로크 컬러가 표시될 수 있다. 이하, 도 2a 내지 도 2b를 참조하여, 스트로크에 대하여 설명한다.
도 2a 내지 도 2b는 일 실시예에 따른 스트로크 및 필(fill)의 일 예를 설명하기 위한 도면들이다.
도 2a에는 스트로크 장치(100)가 객체(210)에 스트로크를 수행한 일 예가 도시되어 있고, 도 2b에는 스트로크 장치(100)가 객체(220)에 필을 수행한 일 예가 도시되어 있다.
도 2a를 참조하면, 객체(210)의 외곽선들은 단일 컬러로 표시되어 있다. 다시 말해, 객체(210)가 배경과 구별될 수 있도록, 객체(210)의 외곽선들에 소정의 컬러가 표시되어 있다. 스트로크 장치(100)는 객체(210)의 외곽선들에 대응하는 프리미티브들을 스트로크 컬러로 표시할 수 있다. 구체적으로, 스트로크 장치(100)는 프리미티브들에 대응하는 픽셀들에 스트로크 컬러를 입력함으로써, 스트로크를 수행할 수 있다.
한편, 도 2b를 참조하면, 객체(220)의 내부 영역들은 단일 컬러로 표시되어 있다. 이때, 객체(220)의 외곽선들은 배경 컬러와 동일하다. 다시 말해, 스트로크 장치(100)는 객체(220)의 내부 영역에 대응하는 픽셀들에 소정의 컬러를 입력함으로써, 필을 수행할 수 있다.
다시 도 1을 참조하면, 생성부(110)는 판단 결과에 기초하여 텍스쳐(texture)를 생성한다. 여기에서, 텍스쳐는 스트로크 장치(100)가 스트로크를 수행하는데 이용하는 이미지를 의미한다. 생성부(110)가 텍스쳐를 생성함에 따라, 매핑부(120)가 소정의 영역에 포함된 픽셀들에 텍스쳐를 매핑할 수 있다.
예를 들어, 에일리어싱이 발생되지 않을 것으로 판단된 경우, 생성부(110)는 스트로크 컬러를 이용하여 텍스쳐를 생성할 수 있다. 한편, 에일리어싱이 발생될 것으로 판단된 경우, 생성부(110)는 스트로크 컬러 및 스트로크 컬러에 그래디언트(gradient) 효과가 적용된 컬러(이하, ‘그래디언트 컬러’라고 함)를 이용하여 텍스쳐를 생성할 수 있다.
다시 말해, 생성부(110)는, 에일리어싱이 발생되지 않는 프리미티브에 대해서는 색 변화가 없는 텍스쳐를 생성하고, 에일리어싱이 발생되는 프리미티브에 대해서는 색 변화가 있는 텍스쳐를 생성한다.
매핑부(120)는 프리미티브의 외곽을 따라 텍스쳐를 매핑한다. 예를 들어, 매핑부(120)는 프리미티브에 포함된 픽셀들 각각을 기준으로 설정된 소정의 영역에 기 생성된 텍스쳐를 순차적으로 매핑한다. 여기에서, 소정의 영역은 프리미티브에 포함된 픽셀을 기준으로 하여 텍스쳐의 너비에 대응하는 너비를 갖는 영역을 의미한다.
상술한 바와 같이, 에일리어싱이 발생되는 프리미티브에 대해서는 색 변화가 있는 텍스쳐가 생성된다. 이때, 텍스쳐에서 색 변화가 있는 부분은 안티에일리어싱(anti-aliasing)의 효과를 얻기 위한 부분이다. 이에 따라, 매핑부(120)가 색 변화가 있는 텍스쳐를 매핑함으로써, 스트로크 뿐만 아니라 안티에일리어싱이 완료된 결과가 출력될 수 있다. 다시 말해, 스트로크 장치(100)는 스트로크 작업 및 안티에일리어싱 작업을 동시에 수행할 수 있는바, 스트로크 장치(100)의 동작에 요구되는 연산량이 감소될 뿐만 아니라 빠른 속도로 렌더링이 수행될 수 있다.
이하, 도 3을 참조하여, 스트로크 장치(100)가 동작하는 일 예를 구체적으로 설명한다.
도 3은 일 실시예에 따른 경로 렌더링을 수행하는 방법의 일 예를 나타낸 흐름도이다.
도 3을 참조하면, 경로 렌더링을 수행하는 방법은 도 1에 도시된 스트로크 장치(100)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1에 도시된 스트로크 장치(100)에 관하여 이상에서 기술된 내용은 도 3의 경로 렌더링을 수행하는 방법에도 적용됨을 알 수 있다.
310 단계에서, 생성부(110)는 경로 데이터를 이용하여 경로에 포함된 프리미티브에 기반한 에일리어싱이 발생될지 여부를 판단한다. 예를 들어, 생성부(110)는 프리미티브의 기울기에 기초하여 에일리어싱이 발생될지 여부를 판단할 수 있다.
320 단계에서, 생성부(110)는 판단 결과에 기초하여 경로 스트로크의 수행에 이용될 텍스쳐를 생성한다. 구체적으로, 생성부(110)는 에일리어싱이 발생될지 여부에 따라 스트로크 데이터에 포함된 정보를 이용하여 텍스쳐를 생성할 수 있다. 한편, 생성된 텍스쳐는 스트로크 장치(100)의 메모리(미도시)에 저장될 수 있다.
일 예로서, 에일리어싱이 발생되지 않을 것으로 판단된 경우, 생성부(110)는 스트로크 컬러를 이용하여 텍스쳐를 생성할 수 있다. 한편, 에일리어싱이 발생될 것으로 판단된 경우, 생성부(110)는 스트로크 컬러 및 그래디언트 컬러를 이용하여 텍스쳐를 생성할 수 있다.
다른 예로서, 에일리어싱이 발생되지 않을 것으로 판단된 경우, 생성부(110)는 스트로크 너비에 대응하는 텍스쳐를 생성할 수 있다. 한편, 에일리어싱이 발생될 것으로 판단된 경우, 생성부(110)는 스트로크 너비보다 긴 텍스쳐를 생성할 수 있다.
이하, 도 4 내지 도 6을 참조하여, 생성부(110)가 에일리어싱이 발생될지 여부를 판단하고, 텍스쳐를 생성하는 예들을 설명한다.
도 4는 일 실시예에 따른 생성부가 에일리어싱이 발생될지 여부를 판단하고, 텍스쳐를 생성하는 일 예를 설명하기 위한 흐름도이다.
410 단계에서, 생성부(110)는 프리미티브의 기울기가 0 또는 무한대 값을 갖는지 여부를 판단한다. 프리미티브의 기울기가 0 또는 무한대 값을 갖는다고 함은 그 프리미티브에 기반한 에일리어싱이 발생되지 않음을 의미한다. 예를 들어, 프리미티브가 라인이라고 가정하면, 라인의 기울기가 0 이라고 함은 라인이 수평 방향으로 그려진 것을 의미한다. 또한, 라인의 기울기가 무한대 값을 갖는다고 함은 라인이 수직 방향으로 그려진 것을 의미한다. 여기에서, 수평 방향 및 수직 방향은 프레임 내에서 라인이 그려진 방향을 의미한다.
이에 반해, 프리미티브의 기울기가 0 또는 무한대 값을 갖지 않는다고 함은 그 프리미티브에 기반한 에일리어싱이 발생됨을 의미한다. 예를 들어, 프리미티브가 라인이라고 가정하면, 프레임 상에서 라인이 사선으로 그려진 경우 그 라인의 기울기가 0 또는 무한대 값을 갖지 않는다고 한다.
예를 들어, 생성부(110)는 경로 데이터를 참조하여 프리미티브의 기울기를 연산할 수 있다. 경로 데이터에는 경로에 포함된 복수의 정점들 각각의 좌표에 대한 정보 및 정점들을 조합하여 경로를 구성하기 위한 커맨드(command)들이 포함된다. 따라서, 생성부(110)는 경로 데이터를 참조함에 따라 프리미티브의 시작 정점 및 종료 정점이 무엇인지를 알 수 있고, 그 프리미티브가 라인인지 커브인지를 확인할 수 있다. 또한, 프리미티브가 라인인 경우에는, 생성부(110)는 그 라인의 기울기를 연산할 수도 있다.정리하면, 생성부(110)는, 경로 데이터를 참조하여, 프리미티브의 기울기가 0 또는 무한대 값을 갖는지 여부를 판단할 수 있다. 만약, 프리미티브의 기울기가 0 또는 무한대 값을 갖는 경우에는 420 단계로 진행하고, 그렇지 않은 경우에는 430 단계로 진행한다.
이하, 도 5를 참조하여, 프리미티브의 기울기와 에일리어싱 발생 사이의 상관 관계에 대하여 설명한다.
도 5는 일 실시예에 따른 프리미티브의 기울기와 에일리어싱 발생 사이의 상관 관계를 설명하기 위한 도면이다.
도 5에는 프레임(510)에 그려진 객체(520)의 일 예가 도시되어 있다. 프레임(510)은 복수의 픽셀(511)들로 구성된다. 예를 들어, 1024*768 개의 픽셀들이 매트릭스 형태를 구성하여 프레임(510)이 구성될 수 있다. 그러나, 프레임(510)에 포함된 픽셀들의 수는 상술한 1024*768 개에 한정되지 않는다.
스트로크 장치(100)가 객체(520)의 렌더링을 수행함에 따라, 프리미티브들에 대응하는 픽셀들에 컬러가 설정된다. 이에 따라, 프레임(510)에는 렌더링이 수행된 객체(520)의 형상이 출력될 수 있다.
이하에서는, 프레임(510)의 가로 방향을 ‘수평 방향’으로 하고, 세로 방향을 ‘수직 방향’으로 하여 서술한다. 다만, 수평 방향과 수직 방향은 프레임(510)을 바라보는 방향에 따라서 서로 반대가 될 수도 있다.
객체(520)를 구성하는 프리미티브들 중 일부는, 도 5의 프리미티브(521)와 같이, 수평 방향 또는 수직 방향으로 그려질 수 있다. 따라서, 프레임(510)에 포함된 복수의 픽셀(511)들 중에서 프리미티브(521)에 대응하는 픽셀들에 컬러를 설정할 경우, 프리미티브(521)의 형상은 왜곡되지 않은 상태에서 프레임(510)에 출력될 수 있다.
프레임(510)의 수평 방향을 x 축 방향으로 하고, 수직 방향을 y 축 방향으로 하는 좌표를 설정하면, 프리미티브(521)의 기울기는 0이 된다. 반대로, 프레임(510)의 수직 방향을 x 축 방향으로 하고, 수평 방향을 y 축 방향으로 하는 좌표를 설정하면, 프리미티브(521)의 기울기는 무한대가 된다. 다시 말해, 프리미티브(521)는 픽셀(511)들이 나열된 방향을 따라서 형성될 수 있다. 따라서, 프리미티브(521)에 대응하는 픽셀들에 컬러를 설정할 경우, 프리미티브(521)의 형상은 왜곡되지 않고 표현될 수 있다.
정리하면, 프리미티브(521)의 기울기가 0 또는 무한대인 경우, 프리미티브(521)는 프레임(510) 상에 왜곡되지 않고 출력될 수 있다. 따라서, 프리미티브(521)에 기반한 에일리어싱은 발생되지 않는다.
한편, 객체(520)를 구성하는 프리미티브들 중 다른 일부는, 도 5의 프리미티브(522)와 같이, 사선으로 그려질 수 있다. 상술한 바와 같이, 프레임(510) 내의 픽셀(511)들은 매트릭스의 형태로 배열된다. 따라서, 프리미티브(522)에 대응하는 픽셀들에 컬러를 설정할 경우, 프리미티브(522)의 형상(프리미티브(522)의 외곽선)은 왜곡된 상태로 프레임(510)에 출력될 수 있다.
프레임(510)의 수평 방향 및 수직 방향을 양 축으로 하는 좌표를 설정하면, 프리미티브(522)의 기울기는 0 도 아니며, 무한대 값을 갖지도 않는다. 정리하면, 프리미티브(522)의 기울기가 0 또는 무한대 값이 아닌 경우, 프리미티브(522)는 프레임(510) 상에 왜곡되어 출력될 수 있다. 따라서, 프리미티브(522)에 기반한 에일리어싱이 발생될 수 있다.
생성부(110)는 에일리어싱이 발생될지 여부에 따라 서로 다른 텍스쳐를 생성한다. 특히, 생성부(110)는 프리미티브(522)와 같이 에일리어싱이 발생될 것으로 판단되는 경우, 스트로크 컬러 및 그래디언트 컬러를 이용하여 텍스쳐를 생성한다. 따라서, 매핑부(120)가 프리미티브(522)를 포함하는 영역에 텍스쳐를 매핑함에 따라, 스트로크 작업 및 안티에일리어싱 작업이 동시에 수행될 수 있다.
생성부(110)에서 생성된 프리미티브(522)에 대한 텍스쳐는, 프리미티브 상에 존재하는 모든 픽셀을 시작점으로 하고, 프리미티브의 직각인 방향으로 스트로크 너비의 1/2에 존재하는 지점을 끝점으로 하는 직선에 동일 텍스쳐가 매핑될 수 있다. 이는 사용자가 정의하는 스트로크 너비 (Stroke Width)와 경로 스트로크 컬러가 동일 프리미티브 상에서는 모두 동일하기 때문이다. 예를 들어, 사용자가 정의하는 스트로크 너비가 10인 경우, 스트로크 너비가 5인 텍스처를 생성하고, 프리미티브 상의 임의의 점을 시작점으로 하고 프리미티브의 직각인 양 방향으로 너비 5만큼 떨어진 지점을 종료점으로 하는 직선 위에 텍스쳐가 매핑된다.
사용자가 정의하는 ‘사용자 입력 스트로크 너비’가 2W이면, 프리미티브의 직각인 한쪽 방향으로의 너비 ‘스트로크 너비’는 W이며, 이하에서 언급되는 스트로크 너비(W)는 모두 프리미티브의 직각인 한쪽 방향으로의 너비를 의미한다.
다시 도 4를 참조하면, 420 단계에서, 생성부(110)는 스트로크 컬러를 이용하여 제 1 텍스쳐를 생성한다. 예를 들어, 생성부(110)는 전체 영역이 스트로크 컬러로 설정된 제 1 텍스쳐를 생성할 수 있다.
생성부(110)는 스트로크 데이터를 참조하여 스트로크 너비를 확인한다. 그리고, 생성부(110)는 스트로크 너비에 대응하는 픽셀들에 스트로크 컬러가 설정되도록 제 1 텍스쳐를 생성한다. 다시 말해, 제 1 텍스쳐는 제 1 텍스쳐에 포함된 픽셀들 모두에 동일한 컬러가 설정되도록 생성된다. 이하, 도 6을 참조하여 제 1 텍스쳐의 일 예를 설명한다.
도 6은 일 실시예에 따른 제 1 텍스쳐의 일 예를 설명하기 위한 도면이다.
도 6에는 제 1 텍스쳐(610)의 일 예가 도시되어 있다. 생성부(110)는 스트로크 데이터로부터 스트로크 컬러 및 스트로크 너비(W)에 대한 정보를 획득하고, 스트로크 너비(W)에 대응하는 픽셀들에 스트로크 컬러를 설정함으로써 제 1 텍스쳐(610)를 생성할 수 있다.
이때, 제 1 텍스쳐(610)의 높이는 단일 픽셀의 높이에 대응될 수 있다. 다시 말해, 제 1 텍스쳐(610)는 스트로크 너비(W)에 대응하는 길이만큼 한 줄로 픽셀들이 늘어선 형태가 된다. 예를 들어, 스트로크 너비(W)가 10이고, 스트로크 컬러가 검은색이라고 가정하면, 생성부(110)는 픽셀(P)로부터 픽셀(P1)까지 10개의 픽셀들 각각을 검은색으로 설정되고, 그 10개의 픽셀들이 한 줄로 나열된 형태로 제 1 텍스쳐(610)를 생성할 수 있다. 여기에서, 픽셀(P)은 프리미티브에 포함된 픽셀로서, 픽셀(P1)의 외부는 백 그라운드(BG)에 해당된다.
다시 도 4를 참조하면, 430 단계에서, 생성부(110)는 스트로크 컬러 및 그래디언트 컬러를 이용하여 제 2 텍스쳐를 생성한다. 예를 들어, 생성부(110)는 일부 영역이 스트로크 컬러로 설정되고, 나머지 영역이 그래디언트 컬러로 설정된 제 2 텍스쳐를 생성할 수 있다.
생성부(110)는 스트로크 데이터를 참조하여 스트로크 너비를 확인한다. 그리고, 생성부(110)는 스트로크 너비에 대응하는 픽셀들에 스트로크 컬러가 설정되도록 제 2 텍스쳐의 일부 영역을 생성한다. 또한, 생성부(110)는 소정의 너비에 대응하는 픽셀들에 그래디언트 컬러가 설정되도록 제 2 텍스쳐의 다른 영역을 생성한다. 다시 말해, 제 2 텍스쳐는 제 2 텍스쳐에 포함된 픽셀들에 2 이상의 컬러가 설정되도록 생성된다. 이하, 도 7을 참조하여 제 2 텍스쳐의 일 예를 설명한다.
도 7은 일 실시예에 따른 제 2 텍스쳐의 일 예를 설명하기 위한 도면이다.
도 7에는 제 2 텍스쳐(710)의 일 예가 도시되어 있다. 생성부(110)는 스트로크 데이터로부터 스트로크 컬러 및 스트로크 너비(W)에 대한 정보를 획득한다. 그리고, 생성부(110)는 스트로크 너비(W)에 대응하는 픽셀들에 스트로크 컬러를 설정하고, 안티에일리어싱 너비(W_AA)에 대응하는 픽셀들에 그래디언트 컬러를 설정함으로써 제 2 텍스쳐(710)를 생성할 수 있다.
이때, 제 2 텍스쳐(710)의 높이는 단일 픽셀의 높이에 대응된다. 다시 말해, 제 2 텍스쳐(710)는 스트로크 너비(W) 및 안티에일리어싱 너비(W_AA)에 대응하는 길이만큼 한 줄로 픽셀들이 늘어선 형태가 된다. 예를 들어, 스트로크 너비(W)가 10이고, 안티에일리어싱 너비(W_AA)가 1이고, 스트로크 컬러가 검은색이고, 백 그라운드 컬러가 흰색이라고 가정하면, 생성부(110)는 픽셀(P)로부터 픽셀(P1)까지 10개의 픽셀들 각각을 검은색으로 설정하고, 픽셀(P1')을 검은색에서 흰색으로 점차 변화하는 그래디언트 컬러로 설정한다. 그리고, 생성부(110)는 그 11개의 픽셀들이 한 줄로 나열된 형태로 제 2 텍스쳐(710)를 생성할 수 있다. 여기에서, 픽셀(P)는 프리미티브에 포함된 픽셀로서, 픽셀(P1')의 외부는 백 그라운드(BG)에 해당된다.
여기에서, 안티에일리어싱 너비(W_AA)는 도 8 내지 도 9를 참조하여 후술할 바와 같이 생성부(110)에 의하여 연산될 수 있다.
도 8은 일 실시예에 따른 생성부가 에일리어싱이 발생될지 여부를 판단하고, 텍스쳐를 생성하는 다른 예를 설명하기 위한 흐름도이다.
도 8의 810 단계 및 820 단계는 도 4의 410 단계 및 420 단계에 대응된다. 따라서, 이하에서는 810 단계에 대한 구체적인 설명은 생략한다.
830 단계에서, 생성부(110)는 스트로크 너비보다 긴 제 2 텍스쳐를 생성한다. 구체적으로, 생성부(110)는 프리미티브의 기울기에 대응하는 각도 및 스트로크 너비에 기초하여 제 2 텍스쳐를 생성할 수 있다. 다시 말해, 생성부(110)는 프리미티브의 기울기에 대응하는 각도 및 스트로크 너비에 따라 스트로크 컬러가 설정될 영역(도 7의 W에 대응하는 영역)의 너비 및 그래디언트 컬러가 설정될 영역(도 7의 W_AA 에 대응하는 영역)의 너비를 각각 연산할 수 있다. 이하, 도 9를 참조하여, 생성부(110)가 프리미티브의 기울기에 대응하는 각도 및 스트로크 너비에 기초하여 제 2 텍스쳐를 생성하는 예를 설명한다.
도 9는 일 실시예에 따른 생성부가 제 2 텍스쳐를 생성하는 일 예를 설명하기 위한 도면이다.
도 9에는 프리미티브(910)의 일 예 및 제 2 텍스쳐(920)의 일 예가 도시되어 있다. 생성부(110)는 프리미티브(910)의 기울기에 대응하는 각도(θ) 및 스트로크 너비(W)에 기초하여, 제 1 너비(L) 및 제 2 너비(L_AA)를 연산한다. 여기에서, 제 1 너비(L)는 스트로크 컬러가 설정될 영역의 너비를 의미하고, 제 2 너비(L_AA)는 그래디언트 컬러가 설정될 영역의 너비를 의미한다.
예를 들어, 생성부(110)는 아래의 수학식 1에 기초하여 제 1 너비(L)를 연산할 수 있다.
Figure pat00001
상술한 수학식 1에서, L은 제 1 너비를 의미하고, W는 스트로크 너비를 의미하며, θ는 프리미티브(910)의 기울기에 대응하는 각도를 의미한다. 또한, 수학식 1에 기재된 90은 Degree를 의미한다.
또한, 생성부(110)는 아래의 수학식 2에 기초하여 제 2 너지(L_AA)를 연산할 수 있다.
Figure pat00002
상술한 수학식 2에서, LAA는 제 2 너비를 의미하고, WAA는 안티에일리어싱 너비를 의미하며, L은 제 1 너비를 의미하고, W는 스트로크 너비를 의미를 의미한다.
일반적으로, 안티에일리어싱 너비(WAA)는 1로 설정될 수 있다. 안티에일리어싱 너비(WAA)가 1이라고 가정하고, 수학식 1을 수학식 2에 대입하면 아래의 수학식 3이 도출될 수 있다.
Figure pat00003
상술한 수학식 1 내지 수학식 3을 참조하면, 프리미티브(910)의 기울기가 작아질수록(θ가 작아질수록) 제 1 너비(L)는 길어지며, 그에 비례하여 제 2 너비(L_AA)도 길어진다. 또한, 수학식 1에 기재된 90은 Degree를 의미한다.
생성부(110)는 상술한 수학식 1 내지 수학식 3에 따라 제 1 너비(L) 및 제 2 너비(L_AA)를 연산할 수 있다. 그리고, 생성부(110)는 스트로크 데이터로부터 스트로크 컬러에 대한 정보를 획득할 수 있다. 따라서, 생성부(110)는 제 2 텍스쳐(920)를 생성할 수 있다.
한편, 객체는 서로 다른 경로들 또는 서로 다른 프리미티브들의 결합으로 구성될 수 있다. 따라서, 서로 다른 프리미티브들이 겹쳐지는 영역(이하, ‘중복 영역’이라고 함)이 발생될 수 있다. 생성부(110)는, 상술한 제 1 텍스쳐 또는 제 2 텍스쳐 이외에, 중복 영역에 매핑될 제 3 텍스쳐를 생성할 수 있다. 또한, 생성부(110)는 프리미티브의 말단에 매핑될 제 4 텍스쳐를 생성할 수도 있다. 이하, 도 10 내지 도 11을 참조하여, 생성부(110)가 제 3 텍스쳐 또는 제 4 텍스쳐를 생성하는 일 예를 설명한다.
도 10은 일 실시예에 따른 생성부가 제 3 텍스쳐를 생성하는 일 예를 설명하기 위한 도면이다.
도 10에는 서로 다른 4개의 프리미티브들(1011, 1012, 1013, 1014)에 의하여 형성된 객체(1020)의 일 예가 도시되어 있다. 구체적으로, 도 10의 객체(1020)는 서로 다른 4개의 프리미티브들(1011, 1012, 1013, 1014)이 결합되고, 프리미티브들(1011, 1012, 1013, 1014)에 스트로크 작업이 수행됨에 따라 생성된 사각형으로 도시되어 있다. 그러나, 객체의 형상은 사각형에 한정되지 않고, 복수의 프리미티브들이 조합됨에 따라 다양한 형상의 객체가 생성될 수 있다.
프리미티브들(1011, 1012, 1013, 1014)에 스트로크 작업이 수행됨에 따라, 서로 다른 4개의 중복 영역들(1021, 1022, 1023, 1024)이 발생될 수 있다. 생성부(110)는 상술한 제 1 텍스쳐 또는 제 2 텍스쳐 이외에, 중복 영역들(1021, 1022, 1023, 1024) 각각에 매핑될 제 3 텍스쳐(1030)를 생성할 수 있다.
예를 들어, 생성부(110)는 원 모양의 제 3 텍스쳐(1030)를 생성할 수 있다. 이때, 제 3 텍스쳐(1030)는 제 2 텍스쳐와 같이 스트로크 컬러 및 그래디언트 컬러의 조합으로 생성될 수도 있다. 제 3 텍스쳐(1030)가 원 모양인 경우, 제 3 텍스쳐(1030)의 외곽선은 프레임의 수평 방향에 배열된 픽셀들 또는 수직 방향으로 배열된 픽셀들 만으로 구현될 수 없다. 다시 말해, 제 3 텍스쳐(1030)가 원 모양인 경우, 제 3 텍스쳐(1030)에 대응하는 형상을 갖는 프리미티브는 그 프리미티브에 기반한 에일리어싱이 발생될 수 있다.
따라서, 생성부(110)는 제 3 텍스쳐(1030)를 스트로크 컬러 및 그래디언트 컬러에 기초하여 생성한다. 구체적으로, 생성부(110)는 중점(1031)을 기준으로 반지름(r) 내에 포함되는 영역에는 스트로크 컬러를 적용한다. 여기에서, 반지름(r)은 스트로크 너비(W)에 해당될 수 있다. 그리고, 생성부(110)는 스트로크 컬러가 적용된 영역과 인접한 소정의 영역에 그래디언트 컬러를 적용한다. 여기에서, 소정의 영역은 안티에일리어싱 너비(W_AA)에 기초하여 결정될 수 있다. 또한, 생성된 제 3 텍스쳐(1030)는 스트로크 장치(100)의 메모리(미도시)에 저장될 수 있다.
후술할 매핑부(120)는 제 3 텍스쳐(1030)를 중복 영역들(1021, 1022, 1023, 1024) 각각에 매핑한다. 예를 들어, 매핑부(120)는 제 3 텍스쳐(1030)의 중점(1031)의 좌표(x,y)를 프리미티브(1011)와 프리미티브(1014)가 만나는 지점(1051)으로 설정하여 제 3 텍스쳐(1030)의 일부분(예를 들어, 제 3 텍스쳐(1030)의 1/4 부분)을 중복 영역(1021)에 매핑할 수 있다. 제 3 텍스쳐 (1030)의 일부 (예를 들어 1041) 생성을 위한 선택각도는 두 프리미티브가 이루는 외각 (180도 내각)의 크기와 같다. 예를 들어, 두 프리미티브 (1011, 1014)의 외각은 90도 이므로, 제 3 텍스쳐(1030)의 일부(90도, 즉 1/4 영역)를 중복 영역(1021)에 매핑시킨다. 이에 따라, 중복 영역(1021)에 제 3 텍스쳐(1030)의 일부분이 매핑된 결과(1041)가 출력될 수 있다.
도 11은 일 실시예에 따른 생성부가 제 4 텍스쳐를 생성하는 일 예를 설명하기 위한 도면이다.
도 11에는 프리미티브(1110)에 의하여 형성된 객체(1120)의 일 예가 도시되어 있다. 구체적으로, 도 11의 객체(1120)는 프리미티브(1110)에 스트로크 작업이 수행됨에 따라 생성된 라인으로 도시되어 있다.
프리미티브(1110)에 스트로크 작업이 수행됨에 따라, 2 개의 말단 영역들(1121, 1122)이 발생될 수 있다. 생성부(110)는 상술한 제 1 텍스쳐 또는 제 2 텍스쳐 이외에, 말단 영역들(1121, 1122) 각각에 매핑될 제 4 텍스쳐(1130)를 생성할 수 있다.
예를 들어, 생성부(110)는 원 모양의 제 4 텍스쳐(1130)를 생성할 수 있다. 이때, 제 4 텍스쳐(1130)의 일 예는 도 10의 제 3 텍스쳐(1030)와 동일하다. 따라서, 생성부(110)가 제 4 텍스쳐(1130)를 생성하는 구체적인 과정에 대한 설명은 생략한다. 또한, 생성된 제 4 텍스쳐(1130)는 스트로크 장치(100)의 메모리(미도시)에 저장될 수 있다.
후술할 매핑부(120)는 제 4 텍스쳐(1130)를 말단 영역들(1121, 1122) 각각에 매핑한다. 예를 들어, 매핑부(120)는 제 4 텍스쳐(1130)의 중점(1131)의 좌표(x,y)를 프리미티브(1110)의 끝 지점으로 설정하여 제 4 텍스쳐(1130)의 일부분(예를 들어, 제 4 텍스쳐(1130)의 1/2 부분)을 말단 영역(1121, 1122)에 매핑할 수 있다. 이에 따라, 중복 영역(1121)에 제 4 텍스쳐(1130)의 일부분이 매핑된 결과(1141)가 출력될 수 있다.
다시 도 3을 참조하면, 330 단계에서, 매핑부(120)는 프리미티브의 외곽을 따라 텍스쳐를 매핑한다. 구체적으로, 매핑부(120)는 프리미티브에 포함된 픽셀들 각각을 기준으로 설정된 소정의 영역에 텍스쳐를 순차적으로 매핑한다.
특히, 매핑부(120)는 프리미티브의 기울기에 기초하여 방향을 결정하고, 결정된 방향에 따라 프리미티브의 외곽을 따라 텍스쳐를 매핑할 수 있다. 일 예로서, 프리미티브의 기울기가 0 또는 무한대 값을 갖는 경우, 매핑부(120)는 프리미티브에 수직인 방향을 따라 텍스쳐를 매핑할 수 있다. 다른 예로서, 프리미티브의 기울기의 절대 값이 0 보다 크고 1 보다 작은 경우, 매핑부(120)는 프레임의 수평 방향을 따라 텍스쳐를 매핑할 수 있다. 또 다른 예로서, 프리미티브의 기울기의 절대 값이 1 이상인 경우, 매핑부(120)는 프레임의 수직 방향을 따라 텍스쳐를 매핑할 수 있다.
이하, 도 12 내지 도 13b를 참조하여, 매핑부(120)가 프리미티브의 외곽을 따라 텍스쳐를 매핑하는 예들을 설명한다.
도 12는 일 실시예에 따른 매핑부가 동작하는 일 예를 설명하기 위한 도면이다.
도 12에는 프리미티브(1210)의 일 예가 도시되어 있다. 도 12에서 프리미티브(1210)는 라인이며, 프리미티브(1210)의 기울기는 무한대 값(즉, 프리미티브(1210)는 프레임의 수직 방향으로 그려짐)을 갖는 것으로 가정한다.
프리미티브(1210)의 기울기가 0 또는 무한대 값을 갖는 경우, 매핑부(120)는 프리미티브(1210)에 수직인 방향을 따라 텍스쳐(1220, 1230)를 매핑할 수 있다. 도 12에서 프리미티브(1210)의 기울기는 무한대 값을 갖으므로, 매핑부(120)는 프레임의 수평 방향을 따라 텍스쳐(1220, 1230)를 매핑할 수 있다.
매핑부(120)는 프리미티브(1210)에 포함된 픽셀들(1211, 1212, 1213, 1214, 1215) 각각을 기준으로 설정된 소정의 영역에 텍스쳐(1220, 1230)를 순차적으로 매핑한다. 또는, 매핑부(120)는 프리미티브(1210) 상의 픽셀들(1211, 1212, 1213, 1214, 1215) 각각의 위치를 중심으로 대칭되는 소정의 영역들에 동일 텍스쳐를 매핑한다. 여기에서, 소정의 영역은 텍스쳐(1220, 1230)의 전체 너비에 대응하는 영역을 의미한다. 구체적으로, 제 1 텍스쳐의 경우 소정의 영역은 스트로크 너비(W)에 대응하는 영역을 의미하고, 제 2 텍스쳐의 경우 소정의 영역은 제 1 너비(L) 및 제 2 너비(L_AA)의 합에 대응하는 영역을 의미한다. 하나의 프리미티브의 소정의 영역 내에는 스트로크 너비가 같으므로 동일 텍스쳐를 반복하여 매핑할 수 있다.
도 12를 참조하면, 매핑부(120)는 픽셀(1212)을 기준으로 프리미티브(1210)에 수직인 방향(즉, 프레임의 수평 방향)으로 텍스쳐(1220)를 매핑한다. 그 후에, 매핑부(120)는 픽셀(1213)을 기준으로 프리미티브(1210)에 수직인 방향으로 텍스쳐(1230)를 매핑한다. 이와 같은 방식으로, 매핑부(120)는 픽셀(1214)까지 순차적으로 텍스쳐를 매핑한다. 그리고, 매핑부(120)는, 도 11을 참조하여 상술한 방식을 따라, 프리미티브(1210)의 양 말단의 픽셀들(1211, 1215)에 텍스쳐를 매핑한다.
도 13a 내지 도 13b는 일 실시예에 따른 매핑부가 동작하는 다른 예를 설명하기 위한 도면들이다.
도 13a 내지 도 13b에는 프리미티브(1310, 1330)의 일 예가 도시되어 있다. 구체적으로, 도 13a에 도시된 프리미티브(1310)의 기울기는 그 절대 값이 0 보다 크고 1 보다 작고, 도 13b에는 프리미티브(1330)의 기울기는 그 절대 값이 1 이상이다.
도 13a를 참조하면, 프리미티브(1310)의 기울기의 절대 값이 0 보다 크고 1 보다 작은 경우, 매핑부(120)는 프레임의 수직 방향을 따라 텍스쳐를 매핑한다. 구체적으로, 매핑부(120)는 프리미티브(1310)에 포함된 양 말단의 픽셀들을 제외한 나머지 픽셀들 각각에 대하여 프레임의 수직 방향을 따라 텍스쳐를 매핑한다. 그리고, 매핑부(120)는 도 11을 참조하여 상술한 방식을 따라, 프리미티브(1310)의 양 말단의 픽셀들에 텍스쳐를 매핑한다.
도 13b를 참조하면, 프리미티브(1330)의 기울기의 절대 값이 1 이상인 경우, 매핑부(120)는 프레임의 수평 방향을 따라 텍스쳐를 매핑한다. 구체적으로, 매핑부(120)는 프리미티브(1330)에 포함된 양 말단의 픽셀들을 제외한 나머지 픽셀들 각각에 대하여 프레임의 수평 방향을 따라 텍스쳐를 매핑한다. 그리고, 매핑부(120)는 도 11을 참조하여 상술한 방식을 따라, 프리미티브(1330)의 양 말단의 픽셀들에 텍스쳐를 매핑한다.
상술한 바에 따르면, 스트로크 장치(100)는 프리미티브의 특성(예를 들어, 프리미티브의 기울기)에 따라 적응적으로 텍스쳐를 생성하여 저장한다. 그리고, 스트로크 장치(100)는 처리 속도가 빠른 로컬 메모리에 저장된 텍스쳐를 프리미티브 상에 매핑함으로써 빠른 시간 내에 스트로킹 작업을 수행할 수 있다. 또한, 스트로크 장치(100)는 생성된 텍스쳐를 프리미티브 상에 매핑함으로써, 스트로킹 작업뿐 만 아니라 안티에일리어싱 작업을 동시에 수행할 수 있다.
도 14는 일 실시예에 따른 스트로크 장치의 다른 예를 도시한 구성도이다.
도 14를 참조하면, 스트로크 장치(101)는 생성부(110), 매핑부(120) 뿐만 아니라 분할부(130)를 더 포함한다. 도 14에 도시된 스트로크 장치(101)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 14에 도시된 구성요소들 외에 렌더링이 수행되는데 필요한 다른 범용적인 구성요소들이 더 포함될 수 있다.
도 14에 도시된 스트로크 장치(101)의 생성부(110) 및 매핑부(120)의 동작은 도 1 내지 도 13b를 참조하여 상술한 바와 같다. 따라서, 이하에서는, 생성부(110) 및 매핑부(120)에 대한 구체적인 설명은 생략한다.
분할부(130)는 커브에 대응하는 경로를 복수의 프리미티브들로 분할한다. 예를 들어, 분할부(130)는 드 카스텔죠(De_Casteljau) 법칙에 기초하여 커브를 복수의 프리미티브들로 분할할 수 있다. 여기에서, 분할된 프리미티브들 각각은 라인을 의미한다.
경로에는 커브가 포함될 수 있음은 도 1을 참조하여 상술한 바와 같다. 경로가 커브인 경우, 분할부(130)는 커브를 복수의 프리미티브들로 분할하고, 생성부(110)는 각각의 프리미티브들에 대한 텍스쳐를 생성한다. 이때, 분할부(130)는 커브와 유사한 형상이 나타나도록 라인 프리미티브들을 생성할 수 있다. 다시 말해, 분할부(130)에 의하여 생성된 라인 프리미티브들의 집합은 커브와 유사한 형상을 나타낼 수 있다. 이하, 도 15a 내지 도 15d를 참조하여 분할부(130)가 동작하는 일 예를 설명한다.
도 15a 내지 도 15d는 일 실시예에 따른 분할부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 15a에는 커브인 경로(1510)의 일 예가 도시되어 있다. 경로(1510)가 커브인 경우, 경로 데이터에는 경로(1510)를 표현하는데 이용되는 3 개의 제어점들(V1, V2, V3)에 대한 정보가 포함된다. 다시 말해, 스트로크 장치(100)는 제어점들(V1, V2, V3)을 이용하여 경로(1510)를 구성할 수 있다.
한편, 제어점들(V1, V2, V3)을 조합하면 2개의 라인들이 생성될 수 있다. 다시 말해, 제어점(V1)와 제어점(V2)를 잇는 제 1 라인 및 제어점(V2)와 제어점(V3)를 잇는 제 2 라인이 생성될 수 있다. 도 15a에 도시된 바와 같이, 제 1 라인 및 제 2 라인이 연결된 형상은 경로(1510)의 모양과 다소 차이가 존재한다.
도 15b에는 경로(1510)가 2 개의 서브 경로들(1511, 1512)로 분할된 일 예가 도시되어 있다. 다시 말해, 도 15b에는 하나의 커브가 2개의 커브들로 분할된 일 예가 도시되어 있다. 예를 들어, 경로(1510)는 드 카스텔죠 알고리즘에 기초하여 분할될 수 있다.
도 15a를 참조하여 상술한 바와 같이, 제 1 서브 경로(1511)는 3 개의 제어점들(V1, V4, V5)에 의하여 구성될 수 있으며, 제 2 서브 경로(1512)는 3 개의 제어점들(V5, V6, V3)에 의하여 구성될 수 있다. 따라서, 서브 경로들(1511, 1512)의 제어점들(V1, V4, V5, V6, V3)을 조합하면 4개의 라인들이 생성될 수 있다.
도 15a 및 도 15b를 비교하면, 도 15a에 도시된 2 개의 라인들이 연결된 모양보다 도 15b에 도시된 4개의 라인들이 연결된 모양이 경로(1510)의 모양과 더 비슷하다. 도 15c에는 경로(1510)가 4 개의 서브 경로들로 분할된 일 예가 도시되어 있으며, 도 15d에는 경로(1510)가 8 개의 서브 경로들로 분할된 일 예가 도시되어 있다. 정리하면, 경로(1510)의 분할 횟수가 증가될수록, 제어점들을 이용하여 생성된 라인들이 연결된 모양이 경로(1510)의 모양과 점점 비슷해진다.
분할부(130)는 경로(1510)를 복수의 서브 경로들로 분할한다. 그리고, 서브 경로들 각각에 대응하는 제어점들을 조합하여 복수의 프리미티브들(즉, 라인들)을 구성한다. 결론적으로, 분할부(130)는 경로(1510)를 복수의 프리미티브들로 분할 할 수 있다. 이때, 분할부(130)가 경로(1510)를 분할하는 횟수는 스트로크 장치(101)의 계산에 의하여 결정될 수 있고, 사용자의 입력에 의하여 기 결정된 횟수가 변경될 수도 있다.
도 16 내지 도 17은 일 실시예에 따른 경로 스트로크를 수행하는 방법을 나타내는 흐름도들이다.
도 16 및 도 17을 참조하면, 경로 스트로크를 수행하는 방법은 도 1 및 도 14에 도시된 스트로크 장치(100, 101)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1 및 도 14에 도시된 스트로크 장치(100, 101)에 관하여 이상에서 기술된 내용은 도 16 및 도 17의 경로 스트로크를 수행하는 방법에도 적용됨을 알 수 있다.
도 18을 참조하면, 1810 단계에서, 생성부(110)는 외부 장치로부터 경로 데이터를 수신한다. 경로 데이터에는 경로에 포함된 복수의 정점들 각각의 좌표에 대한 정보 및 정점들을 조합하여 경로를 구성하기 위한 커맨드(command)들이 포함된다. 또한, 생성부(110)는 외부 장치로부터 스트로크 데이터를 수신할 수 있다. 스트로크 데이터에는 스트로크 너비, 스트로크 컬러 및 배경 컬러에 대한 정보 중 적어도 하나가 포함될 수 있다.
1820 단계에서, 생성부(110)는 기 생성된 텍스쳐가 존재하는지 여부를 판단한다. 예를 들어, 생성부(110)는 텍스쳐 유닛(Texture Unit)에 텍스쳐가 저장되어 있는지를 검색함으로써 기 생성된 텍스쳐가 존재하는지 여부를 판단할 수 있다. 만약, 기 생성된 텍스쳐가 존재하는 경우에는 1830 단계로 진행하고, 그렇지 않은 경우에는 1840 단계로 진행한다.
1830 단계에서, 생성부(110)는 텍스쳐 유닛에서 텍스쳐를 독출한다. 그리고, 생성부(110)는 독출한 텍스쳐를 매핑부(120)로 전송한다. 또는, 생성부(110)가 매핑부(120)에게 텍스쳐를 독출할 것을 요청할 수 있고, 그 요청에 따라 매핑부(120)가 텍스쳐 유닛에서 텍스쳐를 독출할 수도 있다.
1840 단계에서, 생성부(110)는 텍스쳐를 생성한다. 예를 들어, 생성부(110)는 프리미티브에 기반한 에일리어싱이 발생될지 여부를 판단하고, 판단 결과에 기초하여 경로 스트로크의 수행에 이용될 텍스쳐를 생성할 수 있다. 이때, 생성부(110)는 경로 데이터를 이용하여 프리미티브의 기울기를 연산하고, 연산된 기울기에 기초하여 에일리어싱이 발생될지 여부를 판단할 수 있다. 그리고, 생성부(110)는 에일리어싱이 발생되는지 여부에 따라 적응적으로 텍스쳐를 생성할 수 있다. 생성부(110)가 텍스쳐를 생성하는 예들은 도 6 내지 도 11을 참조하여 상술한 바와 같다.
1850 단계에서, 생성부(110)는 생성한 텍스쳐를 텍스쳐 유닛에 저장한다.
1860 단계 내지 1885 단계는 프리미티브에 포함된 픽셀들 각각에 대하여 수행된다. 다시 말해, 매핑부(120)는 프리미티브에 포함된 픽셀들 각각에 대하여 1860 단계 내지 1885 단계를 수행할 수 있다.
1860 단계에서, 매핑부(120)는 프리미티브의 기울기가 0 또는 무한대 값인지 여부를 판단한다. 예를 들어, 매핑부(120)는 생성부(110)가 연산한 프리미티브의 기울기 값을 이용하여 1860 단계를 수행할 수 있다. 만약, 프리미티브의 기울기가 0 또는 무한대 값인 경우에는 1881 단계로 진행하고, 그렇지 않은 경우에는 1870 단계로 진행한다.
1870 단계에서, 매핑부(120)는 프리미티브의 기울기의 절대 값이 0 보다 크고 1 보다 작은지 여부를 판단한다. 만약, 프리미티브의 기울기의 절대 값이 0 보다 크고 1 보다 작은 경우에는 1883 단계로 진행하고, 그렇지 않은 경우에는 1885 단계로 진행한다.
1881 단계에서, 매핑부(120)는 프리미티브에 수직인 방향을 따라 텍스쳐를 매핑한다. 매핑부(120)가 프리미티브에 수직인 방향을 따라 텍스쳐를 매핑하는 일 예는 도 12를 참조하여 상술한 바와 같다.
1883 단계에서, 매핑부(120)는 수평 방향을 따라 텍스쳐를 매핑한다. 여기에서, 수평 방향은 프레임의 수평 방향을 의미한다. 매핑부(120)가 수평 방향을 따라 텍스쳐를 매핑하는 일 예는 도 13b를 참조하여 상술한 바와 같다.
1885 단계에서, 매핑부(120)는 수직 방향을 따라 텍스쳐를 매핑한다. 여기에서, 수직 방향은 프레임의 수직 방향을 의미한다. 매핑부(120)가 수직 방향을 따라 텍스쳐를 매핑하는 일 예는 도 13a를 참조하여 상술한 바와 같다.
도 18에 도시된 흐름도와 도 19에 도시된 흐름도를 비교하면, 도 18에서는 1850 단계에서, 생성된 텍스쳐가 텍스쳐 유닛(Texture Unit)에 저장되나, 도 19에서는 1950 단계에서 생성된 텍스쳐가 중앙 처리 장치 내의 캐시(Cache)에 저장(1950)된다는 점에서 구별된다. 도 19에 도시된 1910 단계 내지 1985 단계 중에서 1950 단계를 제외한 나머지 단계들은 도 18에 도시된 1810 단계 내지 1885 단계와 동일하다.
도 20 내지 도 23은 일 실시예에 따른 경로 스트로크를 수행하는 방법이 중앙 처리 장치 또는 그래픽 처리 장치에서 구현되는 예들을 설명하기 위한 도면들이다.
도 20 내지 도 23에는 중앙 처리 장치(2000) 및 그래픽 처리 장치(2100, 2101)가 도시되어 있다. 예를 들어, 중앙 처리 장치(2000)와 그래픽 처리 장치(2100, 2101)는 GL API를 통하여 통신할 수 있다. 특히, 도 23에 도시된 그래픽 처리 장치(2101)는 스트로크 유닛(2310)을 더 포함하고 있는 점에서 도 20 내지 도 22에 도시된 그래픽 처리 장치(2100)와 구별된다. 한편, 도 20 내지 도 23에 도시된 중앙 처리 장치(2000)는 하드웨어 가속기로 구현될 수도 있다.
일반적으로 그래픽 처리 장치(2100)에 포함된 세부 모듈들이 동작하는 예는 아래와 같다.
입력 어셈블러(2110)는 경로를 구성하는 적어도 하나의 정점에 대한 데이터를 메모리에서 독출하고, 독출된 데이터를 버텍스 쉐이더(2120)에게 전송한다. 버텍스 쉐이더(2120)는 정점에 대하여 사용자가 작성한 버텍스 쉐이더 프로그램을 수행한다. 여기에서, 버텍스 쉐이더 프로그램은 1차원 텍스쳐 상의 모든 픽셀들의 좌표를 생성하는 프로그램을 의미한다. 좌표가 생성된 픽셀들은 프레그먼트 쉐이더로 전달되어 사용자가 정의한 프레그먼트 쉐이더 프로그램의 입력으로 사용된다.
프래그먼트 쉐이더(2160)는 텍스쳐를 생성하고, 생성된 텍스쳐를 텍스쳐 유닛(2170)에 저장한다. 또한, 프래그먼트 쉐이더(2160)는 프레임에 포함된 픽셀들 각각에 컬러 값을 설정한다. 이때, 프래그먼트 쉐이더(2160)는 텍스쳐 유닛(2170)에 저장된 텍스쳐를 이용하여 픽셀들 각각에 컬러 값을 설정할 수 있다.
렌더 출력부(2180)는 프래그먼트 쉐이더(2160)가 동작함에 따라 생성된 데이터(예를 들어, 픽셀의 컬러에 대한 정보)를 버퍼(미도시)에 기록한다. 다시 말해, 프래그먼트 쉐이더(2160)는 프레임에 포함된 픽셀들 각각의 컬러를 결정하고, 렌더 출력부(2180)는 픽셀의 컬러에 대한 정보를 합(merge)하여 버퍼(미도시)에 기록한다.
프리미티브 어셈블러(2130), 테셀레이터(2140) 및 래스터라이져 (2150)가 수행하는 기능은 기존의 그래픽 처리 장치가 수행하는 기능과 동일하므로, 자세한 설명은 생략한다.
도 20을 참조하면, 중앙 처리 장치 또는 하드웨어 가속기(2000)는 그래픽 처리 장치(2100)에게 쉐이더 프로그램을 이용하여 텍스쳐를 생성할 것을 요청하고, 그래픽 처리 장치(2100)는 텍스쳐를 생성한다. 다시 말해, 스트로크 장치(100, 101)가 수행하는 작업들 중 텍스쳐의 생성 작업은 그래픽 처리 장치(2100)가 수행하고, 나머지 작업들은 중앙 처리 장치 또는 하드웨어 가속기(2000)가 수행할 수 있다.
구체적으로, 중앙 처리 장치 또는 하드웨어 가속기(2000)는 로컬 메모리(2010)에 저장된 경로 데이터를 이용하여 프리미티브에 기반한 에일리어싱이 발생될지 여부를 판단한다. 만약, 경로가 커브인 경우, 중앙 처리 장치 또는 하드웨어 가속기(2000)는 커브를 분할함으로써 프리미티브를 생성하고(3010), 에일리어싱이 발생될지 여부를 판단할 수 있다. 그리고, 중앙 처리 장치 또는 하드웨어 가속기(2000)는 그래픽 처리 장치(2100)에게 텍스쳐를 생성할 것을 요청하고, 그래픽 처리 장치(2100)로부터 텍스쳐를 수신하여 로컬 메모리(2010)에 저장한다(3020). 이때, 그래픽 처리 장치(2100)의 프레그먼트 쉐이더(2160)가 텍스쳐를 생성할 수 있다.
그리고, 중앙 처리 장치 또는 하드웨어 가속기(2000)는 프리미티브의 시작 정점 및 종료 정점을 생성하고, 시작 정점 및 종료 정점에 대한 정보를 로컬 메모리(2010)에 저장한다(3030). 그리고, 중앙 처리 장치 또는 하드웨어 가속기(2000)는 로컬 메모리(2010)에 저장된 텍스쳐와 시작 정점 및 종료 정점에 대한 정보를 이용하여 텍스쳐를 매핑함으로써 스트로크 작업을 수행한다(3040).
도 20과 도 21을 비교하면, 도 21에 도시된 중앙 처리 장치 또는 하드웨어 가속기(2000)는 텍스쳐를 직접 생성하고, 생성된 텍스쳐를 그래픽 처리 장치(2100)에게 전송한다(3050)는 점에서 도 20에 도시된 중앙 처리 장치 또는 하드웨어 가속기(2000)와 구별된다. 이때, 그래픽 처리 장치(2100)는 수신한 텍스쳐를 텍스쳐 유닛(2170)에 저장할 수 있다.
일반적으로, 텍스쳐 유닛(2170)은 캐시 메모리를 포함하므로, 스트로크 작업이 수행됨에 따라 텍스쳐가 반복적으로 사용되는 경우 빠른 속도로 텍스쳐가 독출될 수 있다.
도 20과 도 22를 비교하면, 도 22에 도시된 중앙 처리 장치 또는 하드웨어 가속기(2000)는 텍스쳐의 생성을 그래픽 처리 장치(2100)에게 요청하고, 생성된 텍스쳐를 수신하지 않는다(3060)는 점에서 도 20에 도시된 중앙 처리 장치 또는 하드웨어 가속기(2000)와 구별된다. 이때, 그래픽 처리 장치(2100)의 프레그먼트 쉐이더(2160)가 텍스쳐를 생성하고, 생성된 텍스쳐를 텍스쳐 유닛(2170)에 저장한다.
도 20과 도 23을 비교하면, 도 23에 도시된 중앙 처리 장치 또는 하드웨어 가속기(2000)는 그래픽 처리 장치(2300)에게 스트로크 장치(100, 101)가 수행하는 모든 작업들의 수행을 요청한다는 점에서 도 20에 도시된 중앙 처리 장치 또는 하드웨어 가속기(2000)와 구별된다.
구체적으로, 그래픽 처리 장치(2300)는 경로 데이터를 이용하여 프리미티브에 기반한 에일리어싱이 발생될지 여부를 판단한다. 만약, 경로가 커브인 경우, 그래픽 처리 장치(2300)는 커브를 분할함으로써 프리미티브를 생성하고, 에일리어싱이 발생될지 여부를 판단할 수 있다. 그리고, 그래픽 처리 장치(2300)는 경로 스트로크의 수행에 이용될 텍스쳐를 생성하고, 프리미티브의 외곽을 따라 텍스쳐를 매핑한다. 이때, 그래픽 처리 장치(2300)에 포함된 스트로크 유닛(2310)이 프리미티브의 외곽을 따라 텍스쳐를 매핑할 수 있다.
상술한 바에 따르면, 스트로크 장치(100, 101)는 기 생성된 텍스쳐를 이용하여 스트로크 작업을 수행함으로써, 스트로크 작업에 요구되는 연산량이 감소될 뿐만 아니라 빠른 시간 내에 스트로크 작업이 수행될 수 있다.
또한, 스트로크 장치(100, 101)는 에일리어싱이 발생될지 여부에 기초하여 적응적으로 텍스쳐를 생성함으로써, 스트로크 작업과 안티에일리어싱 작업이 동시에 수행될 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
또한, 상술한 방법은 컴퓨터로 읽을 수 있는 기록매체에 유지되는 프로그램들 중 적어도 하나의 프로그램에 포함된 명령어(instructions)의 실행을 통하여 수행될 수 있다. 상기 명령어가 컴퓨터에 의해 실행될 경우, 상기 적어도 하나의 컴퓨터는 상기 명령어에 해당하는 기능을 수행할 수 있다. 여기서, 명령어는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 본 개시에서, 컴퓨터의 일 예는, 프로세서가 될 수 있으며, 기록매체의 일 예는 메모리가 될 수 있다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100: 스트로크 장치
110: 제 1 생성부
120: 제 2 생성부
130: 매핑부

Claims (27)

  1. 경로 스트로크(path stroke)를 수행하는 방법에 있어서,
    경로 데이터를 이용하여 상기 경로에 포함된 프리미티브(primitive)에 기반한 에일리어싱(aliasing)이 발생될지 여부를 판단하는 단계;
    상기 판단 결과에 기초하여 상기 경로 스트로크의 수행에 이용될 텍스쳐(texture) 를 생성하는 단계; 및
    상기 프리미티브의 외곽을 따라 상기 텍스쳐를 매핑하는 단계;를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 판단하는 단계는
    상기 경로 데이터를 이용하여 연산된 상기 프리미티브의 기울기에 기초하여 상기 에일리어싱이 발생될지 여부를 판단하는 방법.
  3. 제 2 항에 있어서,
    상기 판단하는 단계는
    상기 프리미티브의 기울기가 0 또는 무한대 값을 갖는 경우에는 상기 에일리어싱이 발생되지 않는다고 판단하고, 상기 프리미티브의 기울기가 0 또는 무한대 값을 갖지 않는 경우에는 상기 에일리어싱이 발생된다고 판단하는 방법.
  4. 제 1 항에 있어서,
    상기 생성하는 단계는
    상기 에일리어싱이 발생되지 않을 경우에는 스트로크 컬러(stroke color)를 이용하여 제 1 텍스쳐를 생성하고, 상기 에일리어싱이 발생될 경우에는 상기 스트로크 컬러 및 상기 스트로크 컬러에 그래디언트(gradient) 효과가 적용된 컬러를 이용하여 제 2 텍스쳐를 생성하는 방법.
  5. 제 1 항에 있어서,
    상기 생성하는 단계는
    상기 에일리어싱이 발생되지 않을 경우에는 스트로크 너비(stroke width)에 대응하는 제 1 텍스쳐를 생성하고, 상기 에일리어싱이 발생되는 경우에는 상기 스트로크 너비보다 긴 제 2 텍스쳐를 생성하는 방법.
  6. 제 5 항에 있어서,
    상기 제 2 텍스쳐는
    상기 프리미티브의 기울기에 대응하는 각도 및 상기 스트로크 너비에 기초하여 생성되는 방법.
  7. 제 5 항에 있어서,
    상기 생성하는 단계는
    상기 스트로크 너비에 대응하는 부분에는 스트로크 컬러를 표시하고, 상기 제 2 텍스쳐의 너비에서 상기 스트로크 너비가 제외된 부분에는 상기 스트로크 컬러에 그래디언트 효과가 적용된 컬러를 표시함으로써 상기 제 2 텍스쳐를 생성하는 방법.
  8. 제 1 항에 있어서,
    상기 매핑하는 단계는
    상기 프리미티브에 포함된 픽셀들 각각을 기준으로 설정된 소정의 영역에 상기 텍스쳐를 순차적으로 매핑하는 방법.
  9. 제 8 항에 있어서,
    상기 소정의 영역은
    상기 프리미티브에 포함된 픽셀을 기준으로 하고, 상기 텍스쳐의 너비에 대응하는 너비를 갖는 영역을 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 매핑하는 단계는
    상기 프리미티브의 기울기에 기초하여 결정된 방향에 따라 상기 텍스쳐를 매핑하는 방법.
  11. 제 10 항에 있어서,
    상기 매핑하는 단계는
    상기 프리미티브의 기울기가 0 또는 무한대 값을 갖는 경우에는 상기 프리미티브에 수직인 방향을 따라 상기 텍스쳐를 매핑하고, 상기 프리미티브의 기울기의 절대 값이 0 보다 크고 1 보다 작은 경우에는 수평(horizontal) 방향을 따라 상기 텍스쳐를 매핑하고, 상기 프리미티브의 기울기가 0 또는 무한대 값을 갖지 않고 상기 프리미티브의 기울기의 절대 값이 1 이상인 경우에는 수직(vertical) 방향을 따라 상기 텍스쳐를 매핑하는 방법.
  12. 제 1 항에 있어서,
    커브에 대응하는 상기 경로를 복수의 프리미티브들로 분할하는 단계;를 더 포함하고,
    상기 판단하는 단계는 상기 복수의 프리미티브들 각각에 기반한 에일리어싱이 발생될지 여부를 판단하는 방법.
  13. 제 12 항에 있어서,
    상기 분할하는 단계는
    드 카스텔죠(De_Casteljau) 법칙에 기초하여 상기 커브에 대응하는 경로를 상기 복수의 프리미티브들로 분할하는 방법.
  14. 제 1 항 내지 제 13 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  15. 경로 스트로크를 수행하는 장치에 있어서,
    경로 데이터를 이용하여 상기 경로에 포함된 프리미티브(primitive)에 기반한 에일리어싱(aliasing)이 발생될지 여부를 판단하고, 상기 판단 결과에 기초하여 상기 경로 스트로크의 수행에 이용될 텍스쳐(texture)를 생성하는 생성부; 및
    상기 프리미티브의 외곽을 따라 상기 텍스쳐를 매핑하는 매핑부;를 포함하는 장치.
  16. 제 15 항에 있어서,
    상기 생성부는
    상기 경로 데이터를 이용하여 연산된 상기 프리미티브의 기울기에 기초하여 상기 에일리어싱이 발생될지 여부를 판단하는 장치.
  17. 제 16 항에 있어서,
    상기 생성부는
    상기 프리미티브의 기울기가 0 또는 무한대 값을 갖는 경우에는 상기 에일리어싱이 발생되지 않는다고 판단하고, 상기 프리미티브의 기울기가 0 또는 무한대 값을 갖지 않는 경우에는 상기 에일리어싱이 발생된다고 판단하는 장치.
  18. 제 15 항에 있어서,
    상기 생성부는
    상기 에일리어싱이 발생되지 않을 경우에는 스트로크 컬러(stroke color)를 이용하여 제 1 텍스쳐를 생성하고, 상기 에일리어싱이 발생될 경우에는 상기 스트로크 컬러 및 상기 스트로크 컬러에 그래디언트(gradient) 효과가 적용된 컬러를 이용하여 제 2 텍스쳐를 생성하는 장치.
  19. 제 15 항에 있어서,
    상기 생성부는
    상기 에일리어싱이 발생되지 않을 경우에는 스트로크 너비(stroke width)에 대응하는 제 1 텍스쳐를 생성하고, 상기 에일리어싱이 발생되는 경우에는 상기 스트로크 너비보다 긴 제 2 텍스쳐를 생성하는 장치.
  20. 제 19 항에 있어서,
    상기 제 2 텍스쳐는
    상기 프리미티브의 기울기에 대응하는 각도 및 상기 스트로크 너비에 기초하여 생성되는 장치.
  21. 제 19 항에 있어서,
    상기 생성부는
    상기 스트로크 너비에 대응하는 부분에는 스트로크 컬러를 표시하고, 상기 제 2 텍스쳐의 너비에서 상기 스트로크 너비가 제외된 부분에는 상기 스트로크 컬러에 그래디언트 효과가 적용된 컬러를 표시함으로써 상기 제 2 텍스쳐를 생성하는 장치.
  22. 제 15 항에 있어서,
    상기 매핑부는
    상기 프리미티브에 포함된 픽셀들 각각을 기준으로 설정된 소정의 영역에 상기 텍스쳐를 순차적으로 매핑하는 장치.
  23. 제 22 항에 있어서,
    상기 소정의 영역은
    상기 프리미티브에 포함된 픽셀을 기준으로 하고, 상기 텍스쳐의 너비에 대응하는 너비를 갖는 영역을 포함하는 장치.
  24. 제 15 항에 있어서,
    상기 매핑부는
    상기 프리미티브의 기울기에 기초하여 결정된 방향에 따라 상기 텍스쳐를 매핑하는 장치.
  25. 제 24 항에 있어서,
    상기 매핑부는
    상기 프리미티브의 기울기가 0 또는 무한대 값을 갖는 경우에는 상기 프리미티브에 수직인 방향을 따라 상기 텍스쳐를 매핑하고, 상기 프리미티브의 기울기의 절대 값이 0 보다 크고 1 보다 작은 경우에는 수평(horizontal) 방향을 따라 상기 텍스쳐를 매핑하고, 상기 프리미티브의 기울기가 0 또는 무한대 값을 갖지 않고 상기 프리미티브의 기울기의 절대 값이 1 이상인 경우에는 수직(vertical) 방향을 따라 상기 텍스쳐를 매핑하는 장치.
  26. 제 15 항에 있어서,
    커브에 대응하는 상기 경로를 복수의 프리미티브들로 분할하는 분할부;를 더 포함하고,
    상기 텍스쳐 생성부는 상기 복수의 프리미티브들 각각에 기반한 에일리어싱이 발생될지 여부를 판단하는 장치.
  27. 제 26 항에 있어서,
    상기 분할부는
    드 카스텔죠(De_Casteljau) 법칙에 기초하여 상기 커브에 대응하는 경로를 상기 복수의 프리미티브들로 분할하는 장치.
KR1020150129090A 2015-09-11 2015-09-11 경로 스트로크를 수행하는 방법 및 장치 KR102443697B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020150129090A KR102443697B1 (ko) 2015-09-11 2015-09-11 경로 스트로크를 수행하는 방법 및 장치
JP2016169474A JP6895232B2 (ja) 2015-09-11 2016-08-31 経路ストロークを遂行する方法及びその装置
EP16187912.7A EP3142074B1 (en) 2015-09-11 2016-09-08 Method and apparatus for performing path stroking
CN201610816032.8A CN106530379B (zh) 2015-09-11 2016-09-09 用于执行路径描边的方法和设备
US15/260,684 US10885681B2 (en) 2015-09-11 2016-09-09 Method and apparatus for performing path stroking

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150129090A KR102443697B1 (ko) 2015-09-11 2015-09-11 경로 스트로크를 수행하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170031479A true KR20170031479A (ko) 2017-03-21
KR102443697B1 KR102443697B1 (ko) 2022-09-15

Family

ID=56943331

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150129090A KR102443697B1 (ko) 2015-09-11 2015-09-11 경로 스트로크를 수행하는 방법 및 장치

Country Status (5)

Country Link
US (1) US10885681B2 (ko)
EP (1) EP3142074B1 (ko)
JP (1) JP6895232B2 (ko)
KR (1) KR102443697B1 (ko)
CN (1) CN106530379B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10347016B2 (en) * 2016-01-12 2019-07-09 Monotype Imaging Inc. Converting font contour curves
US10482577B2 (en) * 2016-07-27 2019-11-19 Adobe Inc. Dynamic spread anti-aliasing
US10936792B2 (en) 2017-12-21 2021-03-02 Monotype Imaging Inc. Harmonizing font contours
JP6847885B2 (ja) * 2018-03-20 2021-03-24 株式会社東芝 情報処理装置、情報処理方法及びプログラム
CN110766771B (zh) * 2019-10-18 2023-07-28 天津津航计算技术研究所 一种基于fpga的字符描边方法
CN113052939B (zh) * 2019-12-10 2024-03-08 辉达公司 对路径描边的补丁区段、顶端和连接统一编码

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003141100A (ja) * 2001-06-28 2003-05-16 Microsoft Corp デジタルインクを表現し、表示するためのコンピュータ読取可能媒体およびコンピュータシステム
JP2005250662A (ja) * 2004-03-02 2005-09-15 Seiko Epson Corp 直線描画装置、直線描画方法および直線描画プログラム
US20070279429A1 (en) * 2006-06-02 2007-12-06 Leonhard Ganzer System and method for rendering graphics
US20110285711A1 (en) * 2010-05-21 2011-11-24 Kilgard Mark J Path rendering by covering the path based on a generated stencil buffer
US20130093784A1 (en) * 2009-07-10 2013-04-18 Rajesh Budhiraja Pixel-Aligned Drawing to Avoid Anti-Aliasing
US20130120423A1 (en) * 2011-11-10 2013-05-16 The Directv Group, Inc. System and method for drawing anti-aliased lines in any direction
US20150062142A1 (en) * 2013-08-28 2015-03-05 Qualcomm Incorporated Prefixed summed length in graphics processing
US20150178961A1 (en) * 2013-12-20 2015-06-25 Nvidia Corporation System, method, and computer program product for angular subdivision of quadratic bezier curves

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408598A (en) 1991-05-23 1995-04-18 International Business Machines Corporation Method for fast generation of parametric curves employing a pre-calculated number of line segments in accordance with a determined error threshold
EP0840915A4 (en) * 1995-07-26 1998-11-04 Raycer Inc METHOD AND APPARATUS FOR A VISIBLE SYSTEM BY SORTING SEGMENTS
JP2002073001A (ja) 2000-09-05 2002-03-12 Matsushita Electric Ind Co Ltd 四角形描画方法および装置
US6784884B1 (en) 2000-09-29 2004-08-31 Intel Corporation Efficient parametric surface binning based on control points
US20060082593A1 (en) * 2004-10-19 2006-04-20 Microsoft Corporation Method for hardware accelerated anti-aliasing in 3D
US7564459B2 (en) 2005-10-31 2009-07-21 Microsoft Corporation Resolution-independent curve rendering using programmable graphics hardware
JP4693660B2 (ja) 2006-03-10 2011-06-01 株式会社東芝 描画装置、描画方法及び描画プログラム
US20070268304A1 (en) 2006-05-22 2007-11-22 Microsoft Corporation Gradient Brush and Stroke
US8203564B2 (en) 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US8159499B2 (en) 2007-08-02 2012-04-17 Disney Enterprises, Inc. Rendering of shadows with hand-painted appearance
CN101911123B (zh) 2008-01-15 2012-09-26 三菱电机株式会社 图形描绘装置以及图形描绘方法
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
US8306328B2 (en) 2009-01-26 2012-11-06 Mitsubishi Electric Research Laboratories Method for converting outline characters to stylized stroke characters
KR101028699B1 (ko) 2009-05-12 2011-04-14 중앙대학교 산학협력단 회화적 렌더링 장치 및 방법
JP4941568B2 (ja) * 2010-02-22 2012-05-30 カシオ計算機株式会社 画像処理装置及びプログラム
US8982143B2 (en) * 2010-06-14 2015-03-17 Nintendo Co., Ltd. Method and apparatus for constructing virtual sloped landscapes in computer graphics and animation
US9508185B2 (en) * 2011-05-02 2016-11-29 Sony Interactive Entertainment Inc. Texturing in graphics hardware
KR101980200B1 (ko) 2012-07-12 2019-05-20 삼성전자주식회사 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법
US9619853B2 (en) 2012-08-09 2017-04-11 Qualcomm Incorporated GPU-accelerated path rendering
US20140184633A1 (en) 2012-12-31 2014-07-03 Nvidia Corporation Conservative bounding region rasterization
KR101451001B1 (ko) 2013-02-19 2014-10-15 주식회사 엘지유플러스 무선 단말기에 통신 서비스를 제공하기 위한 통신 서비스 제공 시스템 및 그 제어방법과, 무선 랜 접속 장치 및 그 제어방법
CN103400404A (zh) * 2013-07-31 2013-11-20 北京华易互动科技有限公司 一种高效渲染位图运动轨迹的方法
KR102219294B1 (ko) 2014-02-13 2021-02-23 삼성전자 주식회사 커브 렌더링 방법 및 장치
KR102238651B1 (ko) 2014-04-23 2021-04-09 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치.
EP2985735B1 (en) 2014-08-11 2019-12-04 Samsung Electronics Co., Ltd Method and apparatus for performing tile-based path rendering

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003141100A (ja) * 2001-06-28 2003-05-16 Microsoft Corp デジタルインクを表現し、表示するためのコンピュータ読取可能媒体およびコンピュータシステム
JP2005250662A (ja) * 2004-03-02 2005-09-15 Seiko Epson Corp 直線描画装置、直線描画方法および直線描画プログラム
US20070279429A1 (en) * 2006-06-02 2007-12-06 Leonhard Ganzer System and method for rendering graphics
US20130093784A1 (en) * 2009-07-10 2013-04-18 Rajesh Budhiraja Pixel-Aligned Drawing to Avoid Anti-Aliasing
US20110285711A1 (en) * 2010-05-21 2011-11-24 Kilgard Mark J Path rendering by covering the path based on a generated stencil buffer
US20130120423A1 (en) * 2011-11-10 2013-05-16 The Directv Group, Inc. System and method for drawing anti-aliased lines in any direction
US20150062142A1 (en) * 2013-08-28 2015-03-05 Qualcomm Incorporated Prefixed summed length in graphics processing
US20150178961A1 (en) * 2013-12-20 2015-06-25 Nvidia Corporation System, method, and computer program product for angular subdivision of quadratic bezier curves

Also Published As

Publication number Publication date
EP3142074B1 (en) 2021-12-22
US20170076470A1 (en) 2017-03-16
EP3142074A1 (en) 2017-03-15
KR102443697B1 (ko) 2022-09-15
JP6895232B2 (ja) 2021-06-30
US10885681B2 (en) 2021-01-05
CN106530379B (zh) 2022-08-09
JP2017054504A (ja) 2017-03-16
CN106530379A (zh) 2017-03-22

Similar Documents

Publication Publication Date Title
KR101923562B1 (ko) 가변 렌더링 및 래스터화 파라미터 하에서 가변 뷰포트에 대하여 오브젝트를 효율적으로 리렌더링하는 방법
KR102101626B1 (ko) 스크린 위치에 따라 달라지는 분해능을 가진 다수의 렌더 타겟을 위한 텍스처 매핑을 위한 그라디언트 조정
KR102443697B1 (ko) 경로 스트로크를 수행하는 방법 및 장치
JP5232358B2 (ja) アウトラインフォントのレンダリング
US7884825B2 (en) Drawing method, image generating device, and electronic information apparatus
US8059119B2 (en) Method for detecting border tiles or border pixels of a primitive for tile-based rendering
KR102278147B1 (ko) 그래픽 프리미티브의 클립핑
US10593096B2 (en) Graphics processing employing cube map texturing
JP5959637B2 (ja) ラインに従うテキストイメージのレンダリング
JP6863693B2 (ja) グラフィックス処理システムおよび方法
EP3070677B1 (en) Method and apparatus for tile-based rendering
EP2985735B1 (en) Method and apparatus for performing tile-based path rendering
CN102096907A (zh) 图像处理技术
US9858708B2 (en) Convex polygon clipping during rendering
KR102477265B1 (ko) 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법
KR20180037838A (ko) 텍스쳐를 처리하는 방법 및 장치
CN109427084B (zh) 一种地图显示方法、装置、终端及存储介质
US11989807B2 (en) Rendering scalable raster content
KR101227155B1 (ko) 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법
Scheibel et al. Attributed vertex clouds
US11776179B2 (en) Rendering scalable multicolored vector content
JP3872056B2 (ja) 描画方法
Lehn et al. Basic Geometric Objects
Yoo et al. Path rendering for high resolution mobile device
KR0153664B1 (ko) 3차원 도형 생성기

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