KR102426669B1 - 경로 렌더링을 수행하는 방법 및 장치. - Google Patents

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

Info

Publication number
KR102426669B1
KR102426669B1 KR1020150109570A KR20150109570A KR102426669B1 KR 102426669 B1 KR102426669 B1 KR 102426669B1 KR 1020150109570 A KR1020150109570 A KR 1020150109570A KR 20150109570 A KR20150109570 A KR 20150109570A KR 102426669 B1 KR102426669 B1 KR 102426669B1
Authority
KR
South Korea
Prior art keywords
tile
tiles
path
sub
winding number
Prior art date
Application number
KR1020150109570A
Other languages
English (en)
Other versions
KR20170016156A (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 KR1020150109570A priority Critical patent/KR102426669B1/ko
Priority to US15/093,491 priority patent/US9892534B2/en
Publication of KR20170016156A publication Critical patent/KR20170016156A/ko
Application granted granted Critical
Publication of KR102426669B1 publication Critical patent/KR102426669B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • 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

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

일 실시예에 따른 경로를 렌더링 하는 방법은 프레임에 포함된 타일들 중에서 경로를 포함하는 타일을 복수의 1차 서브 타일들로 분할하는 단계 및 분할된 1차 서브 타일들 중에서 경로를 포함하지 않는 1차 서브 타일의 초기 주회 횟수를 갱신하는 단계를 포함한다.

Description

경로 렌더링을 수행하는 방법 및 장치. {Method and apparatus for performing a path rendering}
경로 렌더링을 수행하는 방법 및 장치에 관한다.
경로 렌더링을 수행하는 방법 및 장치에 관한다.벡터 그래픽스(vector graphics) 또는 경로 렌더링(path rendering)을 수행하는 경우 그래픽 처리 장치(Graphics Processing Unit, 이하 GPU 라고 함)의 가속 성능을 향상시키기 위한 방법이 연구되고 있다. 경로 렌더링의 경우 입력 데이터가 삼각형들로 구성되지 않고 커맨드(command)와 정점(vertex) 들의 조합으로 구성되어 있다. 따라서, 경로 렌더링을 수행할 때에 GPU의 가속 성능을 향상시키기 어렵다.
경로 렌더링을 수행하는 방법 및 장치를 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른 경로 렌더링을 수행하는 방법은, 타일 빈(bin) 데이터를 이용하여 프레임에 포함된 타일들 중에서 경로를 포함하는 타일을 선택하는 단계; 상기 선택된 타일을 복수의 1차 서브 타일들로 분할하고, 상기 분할된 1차 서브 타일들 중에서 상기 경로를 포함하지 않는 1차 서브 타일을 선택하는 단계; 및 상기 선택된 1차 서브 타일의 초기 주회 횟수(initial winding number)를 갱신하는 단계;를 포함하고, 상기 타일 빈 데이터는 상기 프레임에 포함된 타일들 각각의 상기 초기 주회 횟수에 대한 정보를 포함한다.
다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
또 다른 측면에 따른 경로 렌더링을 수행하는 장치는 타일 빈(bin) 데이터를 이용하여 프레임에 포함된 타일들 중에서 경로를 포함하는 타일을 선택하고, 상기 선택된 타일을 복수의 1차 서브 타일들로 분할하고, 상기 분할된 1차 서브 타일들 중에서 상기 경로를 포함하지 않는 1차 서브 타일을 선택하는 선택부; 및 상기 선택된 1차 서브 타일의 초기 주회 횟수(initial winding number)를 갱신하는 갱신부;를 포함하고, 상기 타일 빈 데이터는 상기 프레임에 포함된 타일들 각각의 상기 초기 주회 횟수에 대한 정보를 포함한다.
도 1은 일 실시예에 따른 렌더링 장치의 일 예를 도시한 구성도이다.
도 2는 일 실시예에 따른 렌더링 장치가 동작하는 일 예를 도시한 흐름도이다.
도 3은 일 실시예에 따른 타일 빈 데이터의 일 예를 설명하기 위한 도면이다.
도 4a 내지 도 4b는 일 실시예에 따른 선택부가 타일을 서브 타일들로 분할하는 일 예를 도시한 도면들이다.
도 5a 내지 도 5c는 일 실시예에 따른 선택부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 6a 내지 도 6c는 일 실시예에 따른 갱신부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 7은 일 실시예에 따른 렌더링 장치가 동작하는 다른 예를 도시한 흐름도이다.
도 8은 일 실시예에 따른 선택부가 동작하는 다른 예를 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 Type_List가 비트 스트림으로 표현된 일 예를 도시한 도면이다.
도 10은 일 실시예에 따른 렌더링 장치의 다른 예를 도시한 구성도이다.
도 11은 일 실시예에 따른 렌더링 장치의 또 다른 예를 도시한 구성도이다.
도 12a 및 도 12b는 일 실시예에 따른 분할부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 13은 일 실시예에 따른 렌더링 장치의 또 다른 예를 도시한 구성도이다.
도 14는 일 실시예에 따른 비닝부가 동작하는 일 예를 도시한 흐름도이다.
도 15는 일 실시예에 따른 렌더링 장치가 렌더링을 수행하는 일 예를 도시한 흐름도이다.
도 16은 일 실시예에 따른 선택부 및 갱신부가 래스터화를 수행하는 일 예를 도시한 흐름도이다.
도 17은 일 실시예에 따른 연산부 및 결정부가 동작하는 일 예를 도시한 흐름도이다.
도 18은 연산부 또는 주회 횟수 연산 장치가 픽셀의 주회 횟수를 연산하는 일 예를 도시한 흐름도이다.
도 19 내지 도 22는 일 실시예에 따른 경로를 렌더링하는 방법이 GPU(Graphics Processing Unit) 에서 구현 또는 GPU 외부에서 구현하여 GPU와 연동되는 예들을 설명하기 위한 도면들이다.
실시 예들에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…부”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 일 실시예에 따른 렌더링 장치의 일 예를 도시한 구성도이다.
도 1을 참조하면, 렌더링 장치(100)는 선택부(110) 및 갱신부(120)를 포함한다.
선택부(110)는 타일 빈(bin) 데이터를 이용하여 프레임에 포함된 타일들 중에서 경로를 포함하는 타일을 선택한다. 여기에서, 타일 빈 데이터는 타일 비닝이 수행됨에 따라 생성되는 데이터로서, 프레임에 포함된 타일들 각각의 초기 주회 횟수 및 그 타일을 지나가는 경로에 대한 정보가 포함된다.
경로는 렌더링 장치(100)가 렌더링을 수행하는 대상(예를 들어, 객체)을 구성하는 요소일 수 있다. 예를 들어, 경로는 일 지점에서 다른 지점까지 이어진 직선 또는 곡선일 수 있으며, 객체는 적어도 하나 이상의 경로가 연결되어 형성된 폐다각형(closed polygon) 또는 폐경로(closed path)를 포함할 수 있다. 또한, 경로는 Line, Curve, Arc 등의 프리미티브(primitive)로 지칭될 수 있다. 따라서, 이하에서 경로와 프리미티브는 동일한 대상을 의미하는 용어로 가정한다. 프레임은 복수의 픽셀들을 포함하고, 예를 들어 프레임은 객체가 출력되는 화면일 수 있다.
선택부(110)는 선택된 타일을 복수의 1차 서브 타일들로 분할한다. 다시 말해, 선택부(110)는 경로를 포함하는 타일을 복수의 1차 서브 타일들로 분할한다. 그리고, 선택부(110)는 분할된 1차 서브 타일들 중에서 경로를 포함하지 않는 서브 타일을 선택한다.
예를 들어, 선택부(110)는 타일을 4개의 서브 타일들로 분할할 수 있다. 예를 들어, 타일이 32*32 픽셀들을 포함한다면, 서브 타일은 16*16 픽셀을 포함할 수 있다. 상술한 예에 한정되지 않고, 선택부(110)는 타일을 기 설정된 개수의 서브 타일들로 분할할 수 있다.
경로가 타일을 지나가더라도, 그 타일의 모든 영역에 경로가 그려지지 않을 수 있다. 다시 말해, 타일이 경로를 포함하더라도, 그 경로는 타일의 일부 영역 (즉, 일부 서브 타일)에만 그려질 수 있다. 선택부(110)는 타일을 복수의 서브 타일들로 분할하고, 분할된 서브 타일들 중에서 경로를 포함하지 않는 서브 타일을 선택할 수 있다. 바꾸어 말하면, 선택부(110)는 경로를 포함하는 서브 타일을 선택할 수 있다. 따라서, 렌더링 장치(100)는 프레임에서 경로가 지나가는 영역을 보다 정밀하게 선택하여 처리할 수 있는바, 렌더링 품질이 향상될 수 있다. 또한, 렌더링 장치(100)는 타일 보다 작은 서브 타일 단위로 렌더링을 수행하고 렌더링이 필요없는 서브 타일들을 미리 제거해 나가는바, 렌더링 시에 요구되는 연산량이 감소될 수 있다.
또한, 선택부(110)는 경로의 위치에 기초하여 타일을 계층적으로 분할 할 수 있다. 예를 들어, 선택부(110)는, 타일 → 1차 서브 타일 → 2차 서브 타일 → … 과 같이, 타일을 점차적으로 작은 단위의 서브 타일로 분할할 수 있다. 따라서, 렌더링 장치(100)는 적은 연산량으로도 정밀한 렌더링 결과를 출력할 수 있다.
갱신부(120)는 선택부(110)에 의하여 선택된 서브 타일의 초기 주회 횟수를 갱신한다. 여기에서, 선택부(110)에 의하여 선택된 서브 타일은 경로를 포함하지 않는 서브 타일을 의미한다. 예를 들어, 갱신부(120)는 타일 빈 데이터에 포함된 타일의 초기 주회 횟수를 참조하여, 그 타일이 분할된 서브 타일들 중에서 경로가 통과하지 않는 서브 타일의 초기 주회 횟수를 갱신할 수 있다. 여기에서, 서브 타일의 초기 주회 횟수가 갱신된다고 함은 타일의 초기 주회 횟수에 기초하여 서브 타일의 초기 주회 횟수를 연산하는 것을 의미한다.
이하, 도 2를 참조하여 렌더링 장치가 동작하는 일 예를 설명한다.
도 2는 일 실시예에 따른 렌더링 장치가 동작하는 일 예를 도시한 흐름도이다.
도 2를 참조하면, 경로 렌더링을 수행하는 방법은 도 1에 도시된 렌더링 장치(100)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1에 도시된 렌더링 장치(100)에 관하여 이상에서 기술된 내용은 도 2의 경로 렌더링을 수행하는 방법에도 적용됨을 알 수 있다.
210 단계에서, 선택부(110)는 타일 빈 데이터를 이용하여 프레임에 포함된 타일들 중에서 경로를 포함하는 타일을 선택한다. 타일 빈 데이터는 후술할 비닝부(160)에 의하여 생성될 수 있다. 타일 빈 데이터는 프레임에 포함된 각각의 타일에 대한 정보를 포함한다, 예를 들어, 타일 빈 데이터는 타일을 통과하는 경로에 대한 정보를 나타내는 ‘Edge_List’ 및 타일의 초기 주회 횟수를 포함할 수 있다. 이하, 도 3을 참조하여 타일 빈 데이터의 일 예를 설명한다.
도 3은 일 실시예에 따른 타일 빈 데이터의 일 예를 설명하기 위한 도면이다.
도 3에는 복수의 타일들을 포함하는 프레임(310) 및 객체(320)가 도시되어 있다. 여기에서, 객체(320)는 정점(P0)으로부터 정점(P1)까지 연결된 제 1 경로(e0), 정점(P1)으로부터 정점(P2)까지 연결된 제 2 경로(e1) 및 정점(P2)으로부터 정점(P0)까지 연결된 제 3 경로(e2)에 의하여 구성된다.
도 3의 타일들에 도시된 0 또는 1은 타일의 초기 주회 횟수를 의미한다. 한편, 숫자가 기재되지 않은 타일들의 초기 주회 횟수는 0인 것으로 가정한다. 또한, 도 3의 타일들에 도시된 e0, e1 또는 e2는 타일을 지나가는 경로를 나타내는 Edge_List를 의미한다. 예를 들어, 타일(330)에는 e0 및 1이 도시되어 있다. 이는, 타일(330)을 통과하는 경로는 제 1 경로(e0)이고, 타일(330)의 초기 주회 횟수는 1임을 의미한다.
타일의 초기 주회 횟수는 경로(e0, e1, e2)의 위치 및 진행 방향에 기초하여 연산될 수 있다. 일 예로서, 프레임(310)의 타일들 각각에는 디폴트 값(예를 들어, 0)이 설정되고, 경로(e0, e1, e2)의 위치 및 진행 방향에 따라 디폴트 값에 소정의 값(예를 들어, 1)이 증산 또는 감산됨으로써 타일의 초기 주회 횟수가 연산될 수 있다.
또한, Edge_List는 프레임(310)에 포함된 타일들 중에서 경로(e0, e1, e2)가 지나가는 타일들을 선택함으로써 생성될 수 있다. 렌더링 장치(100)에 입력되는 경로 데이터(path data)에는 경로에 포함된 복수의 정점들 각각의 좌표에 대한 정보 및 정점들을 조합하여 경로를 구성하기 위한 커맨드(command)들이 포함된다. 여기에서, 정점은 경로의 시작 위치에 대응하는 정점 또는 경로의 종료 위치에 대응하는 정점을 포함할 수 있다.
예를 들어, 프레임에 포함된 픽셀들 중 제 1 픽셀로부터 제 2 픽셀까지의 직선을 경로라고 가정하면, 정점들은 제 1 픽셀 및 제 2 픽셀 각각에 대응하는 지점을 의미한다. 따라서, 경로 데이터는 제 1 픽셀에 대응하는 제 1 정점의 좌표, 제 2 픽셀에 대응하는 제 2 픽셀의 좌표 및 제 1 정점에서 제 2 정점까지 직선을 구성하라는 커맨드를 포함한다.
따라서, 경로 데이터를 참조하면, 경로를 구성하는 정점들 각각의 좌표에 대한 정보뿐 만 아니라, 경로의 위치 및 진행 방향에 대한 정보도 파악될 수 있다. 또한, 경로 데이터에는 각각의 픽셀에 설정될 컬러 값에 대한 정보도 포함될 수 있다.
따라서, 후술할 비닝부(160)는 경로 데이터를 참조하여 프레임(310)에 포함된 타일들 중에서 경로(e0, e1, e2)가 지나가는 타일들을 선택하고, 선택된 타일들 및 그 타일들 각각을 통과하는 경로에 대한 정보를 이용하여 Edge_List를 생성할 수 있다. 예를 들어, Edge_List는 후술할 로컬 메모리(1923)에 각각의 타일 별로 비트 스트림(Bitstream)의 형태로 저장될 수 있다.
비닝부(160)가 타일 빈 데이터에 포함된 타일의 Edge_List 및 초기 주회 횟수를 생성하는 일 예는 도 14 내지 도 15를 참조하여 후술한다.
다시 도 2를 참조하면, 220 단계에서, 선택부(110)는 선택된 타일을 복수의 1차 서브 타일들로 분할하고, 분할된 1차 서브 타일들 중에서 경로를 포함하지 않는 서브 타일을 선택한다. 또한, 선택부(110)는 분할된 1차 서브 타일들 중에서 경로를 포함하는 1차 서브 타일을 복수의 2차 서브 타일들로 분할할 수도 있다. 그리고, 선택부(110)는 분할된 2차 서브 타일들 중에서 경로를 포함하지 않는 서브 타일을 선택할 수도 있다. 상술한 바와 같이, 선택부(110)는 타일을 점차 작은 단위의 서브 타일들로 분할함(즉, 타일을 계층적으로 분할함)으로써, 타일 내에서 실제로 경로가 지나가는 영역을 정밀하게 식별할 수 있다. 선택부(110)가 타일을 계층적으로 분할하는 일 예는 도 7 내지 도 9를 참조하여 후술한다.
이하, 도 4a 내지 도 5c를 참조하여, 선택부(110)가 동작하는 일 예를 설명한다.
도 4a 내지 도 4b는 일 실시예에 따른 선택부가 타일을 서브 타일들로 분할하는 일 예를 도시한 도면들이다.
도 4a에는 프레임(410)이 타일들로 분할된 일 예가 도시되어 있다. 선택부(110)에 입력되는 타일 빈 데이터에는 프레임(410)에 포함된 타일들 각각의 Edge_List와 초기 주회 횟수가 포함되어 있다. 따라서, 선택부(110)는, 타일 빈 데이터를 참조하여, 프레임(410)에 포함된 타일들 중에서 경로가 통과하는 타일들(420)을 식별할 수 있다. 도 4a에는 경로가 통과하는 타일들(420)과 경로가 통과하지 않는 타일들이 다른 색으로 표시되어 있다. 이하에서는, 경로가 통과하는 타일을 ‘회색 타일’이라고 하고, 경로가 통과하지 않는 타일을 ‘백색 타일’이라고 한다.
또한, 선택부(110)는 프레임(410)에 포함된 타일들 중에서 경로가 통과하는 타일들(420)에 대한 정보(‘회색 타일’ 또는 ‘백색 타일’ 여부)를 포함하는 ‘Type_List’를 생성할 수 있다. 예를 들어, 선택부(110)는 프레임(410)에 포함된 각각의 타일이 회색 타일인지 아니면 백색 타일인지에 대한 정보를 Type_List에 기록할 수 있다. 도 4a에는 프레임(410)의 최 상단 행의 타일들(430)에 대한 Type_List가 도시되어 있다. 도 4a를 참조하면, 타일들(430) 중에서 하나의 타일에만 경로가 통과한다. 다시 말해, 타일들(430) 중에서 하나의 타일만 회색 타일이며, 나머지 5개의 타일들은 모두 백색 타일이다. 따라서, 선택부(110)는 타일들(430)의 Type_List를 ‘WWWSWW’와 같이 생성할 수 있다. 즉, 선택부(110)는, 제일 좌측 타일에서부터, 백색 타일을 ‘W’로, 회색 타일을 ‘S’로 기록함으로써 Type_List를 생성할 수 있다. 그러나, Type_List에 타일의 타입이 기록되는 방향은 좌측 타일로부터 우측 방향으로 한정되지 않는다. 예를 들어, Type_List는 후술할 로컬 메모리(1923)에 비트 스트림(Bitstream)의 형태로 저장될 수 있다.
도 4b에는 프레임(410)에 포함된 타일들 중 일부가 서브 타일들로 분할된 일 예가 도시되어 있다. 구체적으로, 도 4a의 타일들(420)이 각각 4개의 서브 타일들로 분할되어 있다.
선택부(110)는 경로를 포함하는 타일들 각각을 복수의 서브 타일들로 분할한다. 그리고, 선택부(110)는 복수의 서브 타일들 중에서 경로를 포함하지 않는 서브 타일을 선택한다. 바꾸어 말하면, 선택부(110)는 복수의 서브 타일들 중에서 경로를 포함하는 서브 타일을 선택할 수 있다. 이하에서는, 경로가 통과하는 서브 타일을 ‘회색 서브 타일’이라고 하고, 경로가 통과하지 않는 서브 타일을 ‘백색 서브 타일’이라고 한다.
이하, 도 5a 내지 도 5c를 참조하여 선택부(110)가 타일을 서브 타일들로 분할하고, 백색 서브 타일을 선택하는 일 예를 설명한다.
도 5a 내지 도 5c는 일 실시예에 따른 선택부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 5a에는 경로(520)를 포함하는 타일(510)이 도시되어 있다. 도 4a를 참조하여 상술한 바와 같이, 타일(510)은 회색 타일이라고 지칭될 수 있다.
도 5b를 참조하면, 선택부(110)는 타일(510)을 복수의 서브 타일들(511, 512, 513, 514)로 분할한다. 도 5b에는 타일(510)이 4개의 서브 타일들(511, 512, 513, 514)로 분할되는 것으로 도시되어 있으나, 서브 타일의 수는 4개에 한정되지 않는다.
도 5c를 참조하면, 선택부(110)는 서브 타일들(511, 512, 513, 514) 중에서 경로(520)가 통과하는 서브 타일들(512, 513, 514)을 선택한다. 도 4b를 참조하여 상술한 바와 같이, 서브 타일들(512, 513, 514) 각각은 회색 서브 타일이라고 지칭될 수 있다. 예를 들어, 선택부(110)는 다음과 같이 회색 서브 타일들(512, 513, 514)을 선택할 수 있다.
먼저, 선택부(110)는 서브 타일들의 일 측 외곽선과 경로(520)가 만나는 지점을 결정한다. 타일들의 일 측 외곽선은 타일들의 좌측, 우측, 상측 및 하측 중 어느 하나의 외곽선일 수 있다. 예를 들어, 선택부(110)는 경로(520)가 서브 타일들의 우측 외곽선(530)과 만나는 지점(X0)을 결정한다.
그리고, 선택부(110)는 지점(X0)을 기준으로 경로(520)를 가상으로 분할한다. 여기에서, 선택부(110)가 경로를 가상으로 분할한다는 것은, 경로를 실제로 분할하는 것이 아니라, 경로의 중간 지점들을 계산하는 것을 의미한다. 예를 들어, 선택부(110)는 경로(520)를 제 1 서브 경로(521)와 제 2 서브 경로(522)로 가상 분할한다.
그리고, 선택부(110)는 분할된 경로를 대각선으로 하는 사각형을 구성한다. 그리고, 선택부(110)는 구성된 사각형을 포함하는 서브 타일들을 선택한다. 예를 들어, 선택부(110)는 제 1 서브 경로(521)를 대각선으로 하는 사각형을 구성하고, 그 사각형을 포함하는 서브 타일들(513)을 선택한다. 그리고, 선택부(110)는 제 2 서브 경로(522)를 대각선으로 하는 사각형을 구성하고, 그 사각형을 포함하는 서브 타일들(512, 514)을 선택한다. 만약, 서브 타일들의 일 측면과 경로가 복수의 지점들에서 만나는 경우, 선택부(110)는 상술한 과정을 반복한다.
최종적으로, 선택부(110)는 선택한 서브 타일들(512, 513, 514)을 조합함으로써, 타일(510)이 분할된 서브 타일들(511, 512, 513, 514) 중에서 회색 서브 타일들(512, 513, 514)을 결정할 수 있다.
다시 도 4를 참조하면, 선택부(110)는 서브 타일들 각각의 타입에 기초하여 기 생성된 Type_List를 갱신할 수 있다. 도 4a를 참조하여 상술한 바와 같이, 선택부(110)는 타일들(430)의 Type_List를 ‘WWWSWW’로 생성할 수 있다.
타일들(430)에는 하나의 회색 타일(440)이 포함되기에, 선택부(110)는 회색 타일(440)을 복수의 서브 타일들(441, 442, 443, 444)로 분할할 수 있다. 그리고, 선택부(110)는 서브 타일들(441, 442, 443, 444) 중에서 회색 서브 타일들(443, 444)을 선택할 수 있다.
선택부(110)는 서브 타일들(441, 442, 443, 444) 각각의 타입에 기초하여 Type_List를 갱신할 수 있다. 예를 들어, 선택부(110)는 기 생성된 Type_List에서 회색 타일을 의미하는 ‘S’의 하위 단에 서브 타일들(441, 442, 443, 444) 각각의 타입을 기록할 수 있다. 즉, 선택부(110)는, 좌측 상단의 서브 타일에서부터, 백색 서브 타일을 ‘W’로, 회색 서브 타일을 ‘S’로 기록할 수 있다. 최종적으로, 기 생성된 Type_List인 ‘WWWSWW’는 ‘WWWS(WWSS)WW’로 갱신될 수 있다. 갱신된 Type_List에서 괄호 안에 포함된 ‘WWSS’가 서브 타일들 441, 442, 443, 444 순서의 각각의 타입을 의미한다. 그리고, 선택부(110)는 갱신된 Type_List를 후술할 로컬 메모리(1923)에 비트 스트림의 형태로 저장할 수 있다.
다시 도 2를 참조하면, 갱신부(120)는 선택된 서브 타일의 초기 주회 횟수를 갱신한다. 다시 말해, 갱신부(120)는 경로를 포함하지 않는 서브 타일의 초기 주회 횟수를 갱신한다. 타일 빈 데이터에는 타일의 초기 주회 횟수가 포함되어 있다. 따라서, 갱신부(120)는 타일의 초기 주회 횟수에 소정의 값을 증산 또는 감산함으로써 서브 타일의 초기 주회 횟수를 연산할 수 있다.
이하, 도 6a 내지 도 6c를 참조하여, 갱신부(120)가 서브 타일의 초기 주회 횟수를 갱신하는 일 예를 설명한다.
도 6a 내지 도 6c는 일 실시예에 따른 갱신부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 6a에는 프레임(610)에 포함된 타일들 각각의 초기 주회 횟수 및 Edge_List가 도시되어 있다. 구체적으로, 도 6의 타일들에 도시된 0 또는 1은 타일의 초기 주회 횟수를 의미한다. 한편, 숫자가 기재되지 않은 타일들의 초기 주회 횟수는 0인 것으로 가정한다. 또한, 도 6의 타일들에 도시된 e0, e1 또는 e2는 타일을 지나가는 경로를 나타내는 Edge_List를 의미한다.
도 3을 참조하여 상술한 바와 같이, 타일들 각각의 초기 주회 횟수 및 Edge_List는 타일 빈 데이터에 포함될 수 있다. 따라서, 도 6a는 타일 빈 데이터에 포함된 정보를 그림으로 나타낸 것을 의미한다. 이하, 도 6b 및 도 6c를 참조하여, 프레임(610)에 포함된 타일들 중 제 1 회색 타일(620) 및 제 2 회색 타일(630)에 포함된 서브 타일들의 초기 주회 횟수가 연산되는 예를 설명한다.
도 6b에는 제 1 회색 타일(620)이 도시되어 있다. 제 1 회색 타일(620)에는 경로(e0)가 반시계 방향으로 통과하고, 제 1 회색 타일(620)의 초기 주회 횟수는 1 인 것으로 가정한다.
선택부(110)는 제 1 회색 타일(620)을 복수의 서브 타일들(621, 622, 623, 624)로 분할한다. 그리고, 선택부(110)는 서브 타일들(621, 622, 623, 624) 중에서 회색 서브 타일들(622, 623, 624)을 선택한다. 바꾸어 말하면, 선택부(110)는 서브 타일(621)을 백색 서브 타일로 결정할 수 있다.
갱신부(120)는 백색 서브 타일(621)의 초기 주회 횟수를 갱신한다. 구체적으로, 갱신부(120)는 타일(620)에 포함된 경로(e0)의 위치 및 진행 방향에 기초하여 백색 서브 타일(621)의 초기 주회 횟수를 갱신할 수 있다. 예를 들어, 갱신부(120)는 타일(620)의 초기 주회 횟수인 1에 소정의 값(예를 들어, 1)을 증산하거나 감산함으로써 백색 서브 타일(621)의 초기 주회 횟수를 연산할 수 있다. 예를 들어, 갱신부(120)는 아래의 수학식 1에 따라 백색 서브 타일(621)의 초기 주회 횟수를 연산할 수 있다.
Figure 112015075225001-pat00001
수학식 1에서, WN은 백색 서브 타일(621)의 초기 주회 횟수를 의미하며, WNinit은 타일(620)의 초기 주회 횟수를 의미한다. 그리고, NCW는 백색 서브 타일(621)에 포함된 픽셀(P0)의 일 측면에 위치하고, 시계 방향으로 진행하는(위에서 아래로 진행하는) 경로에 기초하여 결정된 값을 의미한다. 그리고, NCCW는 픽셀(P0)의 일 측면에 위치하고, 반시계 방향으로 진행하는(아래에서 위로 진행하는) 경로에 기초하여 결정된 값을 의미한다.
도 6b를 참조하면, 타일(620)의 초기 주회 횟수(WNinit)는 1이고, 픽셀(P0)의 우측 면에 위치한 경로(e0)가 반시계 방향으로 진행하므로 NCCW는 1이다. 따라서, 갱신부(120)는 수학식 1에 따라 백색 서브 타일(621)의 초기 주회 횟수(WN)를 0으로 연산할 수 있다.
도 6c에는 제 2 회색 타일(630)이 도시되어 있다. 제 2 회색 타일(630)에는 경로(e1) 및 경로(e2)가 각각 시계 방향으로 통과하고, 제 2 회색 타일(630)의 초기 주회 횟수는 0 인 것으로 가정한다.
선택부(110)는 제 2 회색 타일(630)을 복수의 서브 타일들(631, 632, 633, 634)로 분할하고, 서브 타일들(631, 633) 각각을 백색 서브 타일로 결정할 수 있다.
타일(630)의 초기 주회 횟수(WNinit)는 0이고, 백색 서브 타일(631)에 포함된 픽셀(P1)의 우측 면에 위치한 경로(e1)가 시계 방향으로 진행하므로 NCW는 1이다. 따라서, 갱신부(120)는 수학식 1에 따라 백색 서브 타일(631)의 초기 주회 횟수(WN)를 1로 연산할 수 있다. 이와 동일한 방법으로, 백색 서브 타일(633)에 포함된 픽셀(P2)의 우측 면에 위치한 경로(e2)가 시계 방향으로 진행하므로 NCW는 1이다. 따라서, 갱신부(120)는 수학식 1에 따라 백색 서브 타일(633)의 초기 주회 횟수(WN)를 1로 연산할 수 있다.
한편, 갱신부(120)는 서브 타일들 중에서 경로를 포함하는 서브 타일의 초기 주회 횟수는 그 서브 타일을 포함하는 타일의 초기 주회 횟수를 그대로 계승한다. 다시 말해, 도 6b의 회색 서브 타일들(622, 623, 624) 각각의 초기 주회 횟수는 타일(620)의 초기 주회 횟수인 1로 결정된다. 또한, 도 6c의 회색 서브 타일들(632, 634) 각각의 초기 주회 횟수는 타일(630)의 초기 주회 횟수인 0으로 결정된다.
도 6a 내지 도 6c를 참조하여 상술한 바에 따르면, 갱신부(120)는 경로를 포함하는 타일의 초기 주회 횟수에 기초하여 그 타일이 분할된 서브 타일들 각각의 초기 주회 횟수를 결정한다. 구체적으로, 백색 서브 타일의 경우에는 새로운 초기 주회 횟수가 연산되고, 회색 서브 타일의 경우에는 그 회색 서브 타일이 포함된 타일의 초기 주회 횟수가 그대로 계승된다. 회색 서브 타일의 Edge_List 역시 그 서브 타일을 포함하는 타일의 Edge_List를 그대로 계승한다. 마찬가지로 회색 N차 서브 타일의 Edge_List는, 그 서브 타일을 포함하는 회색 N-1차 서브 타일의 Edge_List를 그대로 계승한다.
갱신부(120)는 새롭게 연산된 서브 타일의 초기 주회 횟수 및/또는 타일의 초기 주회 횟수가 계승된 서브 타일의 초기 주회 횟수를 이용하여 타일 빈 데이터를 갱신한다. 다시 말해, 갱신부(120)는 기존의 타일 빈 데이터에 포함된 타일의 초기 주회 횟수를 그 타일이 분할된 서브 타일들 각각의 초기 주회 횟수로 대체함으로써, 타일 빈 데이터를 갱신할 수 있다. 그리고, 갱신부(120)는 갱신된 타일 빈 데이터를 후술할 로컬 메모리(1923)에 저장할 수 있다.
도 2 내지 도 6c를 참조하여 상술한 바에 따르면, 선택부(110)는 타일을 복수의 서브 타일들로 분할한다. 한편, 선택부(110)는 분할된 서브 타일을 다시 복수의 서브 타일들로 재분할 할 수 있다. 예를 들어, 타일이 32*32 픽셀들을 포함한다면, 선택부(110)는 타일을 16*16 픽셀들을 포함하는 1차 서브 타일들로 분할할 수 있다. 그리고, 선택부(110)는 1차 서브 타일을 8*8 픽셀들을 포함하는 2차 서브 타일들로 분할할 수 있다. 이러한 방식으로, 선택부(110)는 하나의 서브 타일이 2*2 픽셀들을 포함하는 경우까지 타일을 계속 분할할 수 있다.
이하, 도 7 내지 도 8을 참조하여, 선택부(110)가 타일을 계층적으로 분할하는 예를 설명한다.
도 7은 일 실시예에 따른 렌더링 장치가 동작하는 다른 예를 도시한 흐름도이다.
도 7을 참조하면, 경로 렌더링을 수행하는 방법은 도 1에 도시된 렌더링 장치(100)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1에 도시된 렌더링 장치(100)에 관하여 이상에서 기술된 내용은 도 7의 경로 렌더링을 수행하는 방법에도 적용됨을 알 수 있다.
도 7의 710 단계, 720 단계 및 740 단계는 도 2의 210 단계 내지 230 단계에 대응된다. 따라서, 이하에서는 710 단계, 720 단계 및 740 단계에 대한 구체적인 설명은 생략한다.
730 단계에서, 선택부(110)는 경로를 포함하는 1차 서브 타일을 복수의 2차 서브 타일들로 분할한다. 그리고, 선택부(110)는 분할된 2차 서브 타일들 중에서 경로를 포함하지 않는 2차 서브 타일을 선택한다.
다시 말해, 선택부(110)는 1차 서브 타일들 중에서 경로가 지나가는 서브 타일을 보다 작은 단위의 2차 서브 타일로 재분할 할 수 있다. 또한, 선택부(110)는 2차 서브 타일들 중에서 경로가 지나가는 서브 타일을 보다 작은 단위의 3차 서브 타일로 재분할 할 수도 있다. 이러한 방식으로, 선택부(110)는 경로가 지나가는 서브 타일에 대해서는 하나의 서브 타일이 2*2 픽셀들을 포함하는 경우까지 계속적으로 분할할 수 있다.
이하, 도 8을 참조하여, 상술한 선택부(110)의 동작을 구체적으로 설명한다.
도 8은 일 실시예에 따른 선택부가 동작하는 다른 예를 설명하기 위한 도면이다.
도 8에서, 레벨 0은 프레임(810)이 타일들로 분할된 상태를 의미한다. 또한, 레벨 1은 회색 타일들이 서브 타일들로 분할된 상태를 의미한다. 또한, 레벨 2는 회색 서브 타일들이 더 작은 서브 타일들로 분할된 상태를 의미한다. 도 8에는 레벨 2까지만 도시되어 있으나, 선택부(110)는 상술한 방식에 따라 레벨 N까지 서브 타일들을 분할할 수 있다. 이때, N은 분할된 서브 타일에 4개의 픽셀들(2*2 픽셀들)이 포함되는 경우에 대응하는 자연수를 의미한다.
또한, 도 8에는 각각의 레벨에서의 Type_List가 도시되어 있다. 레벨 0에서의 타일들(820)의 Type_List 및 레벨 1에서의 타일들(830)의 Type_List가 생성되는 과정은 도 4a 내지 도 4b를 참조하여 상술한 바와 같다. 따라서, 구체적인 설명은 생략한다.
레벨 2에서의 타일들(840)의 Type_List도 다른 레벨에서의 Type_List가 생성되는 과정과 동일하다. 타일들(840) 중에서 하나의 타일(841)만 회색 타일이며, 나머지 5개의 타일들은 모두 백색 타일이다. 또한, 타일(841)은 1차 서브 타일들로 분할되고(레벨 1), 1차 서브 타일들 중에서 회색 서브 타일(이하, ‘1차 회색 서브 타일’이라고 함)은 2차 서브 타일들로 분할된다(레벨 2).
선택부(110)는 2차 서브 타일들 각각의 타입에 기초하여 Type_List를 갱신할 수 있다. 예를 들어, 선택부(110)는 레벨 1에서의 Type_List에서 1차 회색 서브 타일을 의미하는 ‘S’의 하위 단에 2차 서브 타일들 각각의 타입을 기록할 수 있다. 즉, 선택부(110)는, 좌측 상단의 2차 서브 타일에서부터, 2차 백색 서브 타일을 ‘W’로, 2차 회색 서브 타일을 ‘G’로 기록할 수 있다. 최종적으로, 기 생성된 Type_List인 ‘WWWS(WWSS)WW’는 ‘WWWS(WWS(WGWG)S(GWGG))WW’로 갱신될 수 있다. 갱신된 Type_List에서 괄호 안에 포함된 ‘WGWG’ 또는 ‘GWGG’가 2차 서브 타일들 각각의 타입을 의미한다. 그리고, 선택부(110)는 갱신된 Type_List를 후술할 로컬 메모리(1923)에 비트 스트림의 형태로 저장할 수 있다.
도 9는 일 실시예에 따른 Type_List가 비트 스트림으로 표현된 일 예를 도시한 도면이다.
도 9에 도시된 ‘WWWS(WWS(WGWG)S(GWGG))WW’는 도 8의 타일들(840)의 Type_List를 의미한다. 도 8을 참조하여 상술한 바와 같이, 선택부(110)가 레벨 2까지 서브 타일들을 분할하고, 분할된 서브 타일들 중에서 경로가 통과하는 서브 타일을 선택함에 따라, Type_List는 ‘WWWS(WWS(WGWG)S(GWGG))WW’와 같은 연속된 비트로 생성될 수 있다. 여기에서, ‘S’ 및 ‘G’는 동일한 비트 값을 갖고, ‘W’는 ‘S’ 및 ‘G’와는 다른 비트 값을 갖는다. 따라서, 1비트만으로도 ‘S’, ‘G’, ‘W’를 구분할 수 있다. Type_List를 구성하는 비트 스트림은 후술할 연산부(130)에 전달되어, 연산부(130)가 프레임에 포함된 픽셀들 각각의 주회 횟수를 연산하는데 이용될 수 있다.
도 9에는 비트 스트림 ‘WWWS(WWS(WGWG)S(GWGG))WW’에 대응하는 자료 구조가 도시되어 있다. 구체적으로, 레벨 0는 최대 크기의 비트를 확보하고 있으며, 레벨 1 부터 레벨 N 까지는 각 단계별로 4-비트 스택(stack) 만이 필요하다.
먼저, 레벨 0에서는 ‘S’에 대응하는 비트 값이 식별될 때까지 비트 값이 입력된다. ‘S’에 대응하는 비트 값이 입력되면, 레벨이 한 단계 내려가고, ‘S’ 이후 들어오는 비트 값들이 입력된다. 그 이후에, ‘S’에 대응하는 비트 값이 또 입력되면 레벨이 다시 한 단계 내려간다. 각 레벨의 4-비트 스택이 모두 채워지면, 레벨이 한 단계 올라가고, 4-비트 스택은 저장된다. 가득 찬 4-비트 스택은, 그 스택에 대응하는 서브 타일들에 대한 처리가 모두 끝나고 난 이후에, POP 연산을 통해 그 스택에 포함된 모든 비트 값들이 제거된다. 예를 들어, 레벨 2에 입력된 WGWG 값은 Stack에 저장되어 처리된 이후 4-비트를 모두 채웠으므로, 스택을 비우고 레벨 1으로 한 단계 올라간다. 이후 들어오는 비트값은 S이므로 다시 레벨 2로 한 단계 내려가 GWGG 비트값을 차례대로 저장되어 처리된다. 이후 4-비트가 채워졌으므로, 레벨 1로 한단계 올라가 현 스택이 WWSS 값으로 4-비트 모두 채워짐을 확인하고 POP 연산을 통해 모두 비워버리고 레벨 0으로 올라간다. 이후 나머지 비트값을 상술한 바와 동일하게 처리한다.
상술한 바에 따라, 연산부(130)는 현재 들어오는 비트 값이 어느 레벨에서 해석되어야 하는지를 판단할 수 있기에, 서브 타일의 타입(즉, 백색 서브 타일 또는 회색 서브 타일)을 식별할 수 있다. 따라서, 연산부(130)는 서브 타일에 포함된 픽셀의 주회 횟수를 연산할 수 있다.
도 10은 일 실시예에 따른 렌더링 장치의 다른 예를 도시한 구성도이다.
도 10을 참조하면, 렌더링 장치(100)는 선택부(110) 및 갱신부(120) 뿐만 아니라, 연산부(130) 및 결정부(140)를 더 포함한다. 도 10의 선택부(110) 및 갱신부(120)의 동작은 도 1 내지 도 9를 참조하여 상술한 바와 같다. 따라서, 이하에서는 선택부(110) 및 갱신부(120)에 대한 구체적인 설명은 생략한다.
연산부(130)는 갱신된 초기 주회 횟수 및 타일 빈 데이터에 포함된 초기 주회 횟수를 이용하여 프레임에 포함된 픽셀들 각각의 주회 횟수를 연산한다. 구체적으로, 연산부(130)는 회색 타일이 분할된 서브 타일들의 초기 주회 횟수 및 백색 타일들의 초기 주회 횟수를 이용하여 프레임에 포함된 픽셀들 각각의 주회 횟수를 연산한다. 여기에서, 서브 타일들의 초기 주회 횟수 및 백색 타일들의 초기 주회 횟수는 갱신된 타일 빈 데이터에 포함되어 있다.
도 4a 내지 도 4b, 도 8 내지 도 9를 참조하여 상술한 바와 같이, Type_List에는 프레임에 포함된 타일들 및 타일이 분할된 서브 타일들의 타입에 대한 정보가 저장되어 있다. 다시 말해, Type_List에는 타일이 백색 타일인지 아니면 회색 타일인지, 서브 타일이 백색 서브 타일인지 아니면 회색 서브 타일인지에 대한 정보가 저장되어 있다. 따라서, 연산부(130)는 Type_List를 참조하여 타일 또는 서브 타일의 타입이 무엇인지 알 수 있다.
연산부(130)는 Type_List를 참조하여 타일 또는 서브 타일의 타입을 파악하고, 갱신된 타일 빈 데이터에서 해당 타일 또는 서브 타일의 초기 주회 횟수를 독출한다. 만약, 백색 타일 또는 백색 서브 타일의 경우, 연산부(130)는 그 백색 타일 또는 백색 서브 타일에 포함된 픽셀들의 주회 횟수를 초기 주회 횟수와 동일하게 결정한다. 한편, 회색 서브 타일의 경우, 연산부(130)는 초기 주회 횟수에 기초하여 그 회색 타일에 포함된 픽셀들 각각의 주회 횟수를 연산한다. 연산부(130)가 회색 서브 타일에 포함된 픽셀의 주회 횟수를 연산하는 일 예는 도 18을 참조하여 후술한다.
결정부(140)는 픽셀의 주회 횟수에 기초하여 쉐이딩의 수행 여부를 결정한다. 이때, 쉐이딩은 후술할 프래그먼트 쉐이더(fragment shader)(1931)에 의하여 수행될 수 있다. 따라서, 결정부(140)는 프래그먼트 쉐이더(1931)에게 픽셀의 쉐이딩을 수행하라는 지시를 내릴지 여부를 결정할 수 있다. 여기에서, 쉐이딩은 픽셀들 각각에 컬러를 설정하는 과정일 수 있으나, 이에 한정되지 않는다. 예를 들어, 쉐이딩은 픽셀들 각각에 명암을 설정하는 과정이 될 수도 있고, 픽셀들 각각에 질감을 나타내는 과정이 될 수도 있다. 또한, 프래그먼트 쉐이더(1931)는 텍스쳐(texture)에 기초하여 픽셀의 쉐이딩을 수행할 수 있다. 이때, 결정부(140)는 기 설정된 규칙에 기초하여 쉐이딩의 수행 여부를 결정할 수 있다. 결정부(140)가 쉐이딩의 수행 여부를 결정하는 일 예는 도 17을 참조하여 후술한다.
도 11은 일 실시예에 따른 렌더링 장치의 또 다른 예를 도시한 구성도이다.
도 11을 참조하면, 렌더링 장치(100)는 선택부(110) 및 갱신부(120) 뿐만 아니라, 분할부(150)를 더 포함한다. 도 11의 선택부(110) 및 갱신부(120)의 동작은 도 1 내지 도 9를 참조하여 상술한 바와 같다. 따라서, 이하에서는 선택부(110) 및 갱신부(120)에 대한 구체적인 설명은 생략한다.
분할부(150)는 경로가 비단조 곡선(non-monotonic curve)인 경우에 비단조 곡선을 복수의 단조 곡선들(monotonic curves)로 분할한다. 예를 들어, 분할부(150)는 드 카스텔죠(de casteljau) 알고리즘에 기초하여 비단조 곡선을 단조 곡선들로 분할할 수 있다. 경로 데이터에 비단조 곡선에 대한 정보가 포함되어 있는 경우, 분할부(150)는 비단조 곡선에 대한 정보를 복수의 단조 곡선들에 대한 정보로 변경한다. 그리고, 분할부(150)는 복수의 단조 곡선들에 대한 정보를 선택부(110)로 전송하고, 연산부(130)는 프레임에 포함된 타일들 중에서 단조 곡선들 중 적어도 하나가 통과하는 타일을 선택한다.
이하, 도 12a 및 도 12b를 참조하여, 분할부(150)가 비단조 곡선을 복수의 단조 곡선들로 분할하는 일 예를 설명한다.
도 12a 및 도 12b는 일 실시예에 따른 분할부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 12a에는 비단조 곡선(1210)이 도시되어 있다. 직선인 경로는 양의 기울기 값 또는 음의 기울기 값을 갖는다. 따라서, 직선인 경로가 2차원 좌표 평면 위에 존재한다고 가정하면, 경로의 x 좌표 성분이 증가할 때 경로의 y 좌표 성분이 항상 증가하거나 항상 감소한다. 그러나, 도 12a에 도시된 비단조 곡선(1210)은 비단조 곡선(1210)의 x 좌표 성분이 증가할 때 비단조 곡선(1210)의 y 좌표 성분이 항상 증가하거나 항상 감소하지 않을 수 있다.
도 12b에는 2개의 단조 곡선들(1211, 1212)이 도시되어 있다. 도 12b에 도시된 단조 곡선들(1211, 1212)은 도 12a에 도시된 비단조 곡선(1210)이 분할된 곡선들이다. 단조 곡선들(1211, 1212)이 2차원 좌표 평면 위에 존재한다고 가정하면, 단조 곡선(1211)의 x 좌표 성분이 증가할 때 단조 곡선(1211)의 y 좌표 성분이 항상 증가한다. 또한, 단조 곡선(1212)의 x 좌표 성분이 증가할 때 단조 곡선(1212)의 y 좌표 성분이 항상 감소한다. 다시 말해, 단조 곡선(1211, 1212)은 x 좌표 성분이 증가할 때 경로의 y 좌표 성분이 항상 증가하거나 항상 감소한다.
분할부(150)는 경로 데이터에 비단조 곡선(1210)에 대한 정보가 포함되어 있는 경우, 비단조 곡선(1210)을 두 개 이상의 단조 곡선들(1211, 1212)로 분할한다. 다시 말해, 분할부(150)는 경로 데이터에 포함된 비단조 곡선(1210)에 대한 정보를 두 개 이상의 단조 곡선들(1211, 1212)에 대한 정보로 변환한다. 예를 들어, 분할부(120)는 드 카스텔죠(de casteljau) 알고리즘에 기초하여 비단조 곡선(1210)을 단조 곡선들(1211, 1212)로 분할할 수 있다. 여기에서, 드 카스텔죠 알고리즘은 하나의 베지어 곡선(Bezier curve)을 두 개 이상의 베지어 곡선들로 분할하는데 이용되는 알고리즘을 의미한다. 드 카스텔죠 알고리즘은 당해 기술 분야에서의 일반적인 지식을 가진 자에게 자명하므로, 이에 대한 구체적인 설명은 생략한다.
도 13은 일 실시예에 따른 렌더링 장치의 또 다른 예를 도시한 구성도이다.
도 13을 참조하면, 렌더링 장치(100)는 선택부(110) 및 갱신부(120) 뿐만 아니라, 비닝부(160)를 더 포함한다. 도 13의 선택부(110) 및 갱신부(120)의 동작은 도 1 내지 도 9를 참조하여 상술한 바와 같다. 따라서, 이하에서는 선택부(110) 및 갱신부(120)에 대한 구체적인 설명은 생략한다.
비닝부(160)는 경로의 위치 및 진행 방향에 기초하여 프레임에 포함된 타일들 각각의 초기 주회 횟수를 결정함으로써 타일 빈 데이터를 생성한다. 구체적으로, 비닝부(160)는 경로 데이터에 포함된 경로를 구성하는 정점(vertex)들에 대한 정보 및 경로에 대응하는 커맨드를 이용하여 타일 빈 데이터를 생성할 수 있다. 여기에서, 타일 빈 데이터는 도 3 및 도 6a를 참조하여 상술한 바와 같다. 이하, 도 14를 참조하여, 비닝부(160)가 동작하는 일 예를 설명한다.
도 14는 일 실시예에 따른 비닝부가 동작하는 일 예를 도시한 흐름도이다.
비닝부(160)는 경로 데이터로부터 커맨드를 획득한다(1410). 그리고, 비닝부(160)는 프레임에 포함된 타일들 중에서 커맨드에 의하여 통과되는 타일들을 찾는다(1420). 다시 말해, 비닝부(160)는 프레임에 포함된 타일들 중에서 경로가 통과하는 타일들(회색 타일들(1460))을 선택한다. 비닝부(160)는 회색 타일들(1460) 각각의 Edge_list를 생성한다(1430). 이때, 회색 타일들(1460) 각각의 Edge_list는 후술할 로컬 메모리(1923)에 저장될 수 있다(1470).
비닝부(160)는 프레임에 포함된 타일들 중에서 회색 타일들(1460)의 일 측면에 위치한 타일들(백색 타일들) 각각에 초기 주회 횟수(WNinit)를 설정한다(1440).
그 후에, 비닝부(160)는 경로 데이터에 타일 비닝에 이용되지 않은 커맨드가 아직 존재하는지를 판단한다(1450). 타일 비닝에 이용되지 않은 커맨드가 존재하면 1410 단계로 진행하고, 그렇지 않다면 절차를 종료한다.
도 15는 일 실시예에 따른 렌더링 장치가 렌더링을 수행하는 일 예를 도시한 흐름도이다.
비닝부(160)는 경로 데이터(1510)를 이용하여 프레임에 포함된 타일들에 대하여 타일 비닝을 수행한다(1520). 비닝부(160)가 타일 비닝을 수행하는 일 예는 도 13 내지 도 14를 참조하여 상술한 바와 같다. 비닝부(160)는 타일 비닝을 수행함에 따라 타일 빈 데이터(1525)를 생성한다.
선택부(110)는 프레임에 포함된 타일들 중에서 어느 하나의 타일을 선택한다(1530). 그리고, 선택부(110)는 선택한 타일이 회색 타일인지 여부를 판단한다(1540). 구체적으로, 선택부(110)는 타일 빈 데이터(1525)에 포함된 정보에 기초하여 그 타일이 회색 타일인지 여부를 판단할 수 있다. 만약, 회색 타일인 경우 1550 단계로 진행하고, 그렇지 않은 경우 1570 단계로 진행한다.
선택부(110) 및 갱신부(120)는 타일의 래스터화(rasterization)를 수행한다. 선택부(110) 및 갱신부(120)가 래스터화를 수행함에 따라 타일 빈 데이터가 갱신되고(1553), Type_List가 생성된다(1555). 이하, 도 16을 참조하여, 선택부(110) 및 갱신부(120)가 래스터화를 수행하는 일 예를 설명한다.
도 16은 일 실시예에 따른 선택부 및 갱신부가 래스터화를 수행하는 일 예를 도시한 흐름도이다.
선택부(110)는 타일을 복수의 서브 타일들로 분할한다(1610). 다시 말해, 선택부(110)는 회색 타일을 복수의 서브 타일들로 분할한다.
그 후에, 선택부(110)는 분할된 서브 타일들 각각의 타입을 결정한다. 구체적으로, 선택부(110)는 서브 타일들 중에서, 경로가 통과하는 서브 타일은 회색 서브 타일로 결정하고, 경로가 통과하지 않는 서브 타일은 백색 서브 타일로 결정한다.
그 후에, 선택부(110)는 서브 타일이 회색 서브 타일인지를 판단한다(1630). 만약, 회색 서브 타일인 경우 1650 단계로 진행하고, 백색 서브 타일인 경우 1640 단계로 진행한다.
갱신부(120)는 백색 서브 타일의 초기 주회 횟수를 연산한다(1640). 구체적으로, 갱신부(120)는 백색 서브 타일이 포함된 타일의 초기 주회 횟수 및 그 타일을 통과하는 경로의 위치 및 진행 방향을 고려하여 백색 서브 타일의 초기 주회 횟수를 연산한다.
한편, 갱신부(120)는 회색 서브 타일의 초기 주회 횟수를 회색 서브 타일이 포함된 타일의 초기 주회 횟수로 결정한다(1650). 다시 말해, 회색 서브 타일은 타일의 초기 주회 횟수를 그대로 계승한다.
갱신부(120)는 1640 단계 및 1650 단계를 수행함에 따라 새롭게 연산되거나 그대로 계승된 초기 주회 횟수를 이용하여 타일 빈 데이터를 갱신한다(1655). 또한, 갱신부(120)는 갱신된 타일 빈 데이터 및 Type_List를 후술할 로컬 메모리(1923)에 저장할 수 있다.
선택부(110)는 서브 타일을 추가로 분할할 필요가 있는지를 판단한다(1660). 예를 들어, 회색 서브 타일이 2*2 픽셀들 보다 많은 픽셀들을 포함하는 경우, 선택부(110)는 그 회색 서브 타일을 더 작은 단위의 서브 타일로 분할할 수 있다. 만약, 서브 타일의 추가 분할이 필요하다고 판단된 경우 1610 단계로 진행하고, 그렇지 않은 경우 래스터화가 종료된다.
다시 도 15를 참조하면, 연산부(130)는 회색 서브 타일에 포함된 각각의 픽셀마다 주회 횟수를 연산한다(1560). 한편, 래스터화가 수행됨에 따라 갱신된 타일 빈 데이터(1553) 및 Type_List(1555)가 후술할 로컬 메모리(1923)에 저장될 수 있음은 도 16을 참조하여 상술한 바와 같다. 또한, 결정부(140)는 픽셀의 쉐이딩 여부를 결정한다(1570). 이하, 도 17을 참조하여, 연산부(130)가 픽셀의 주회 횟수를 연산하고, 결정부(140)가 픽셀의 쉐이딩 여부를 결정하는 일 예를 설명한다.
도 17은 일 실시예에 따른 연산부 및 결정부가 동작하는 일 예를 도시한 흐름도이다.
연산부(130)는 프레임에 포함된 타일들 중 어느 하나를 선택하고(1710), 선택된 타일이 백색 타일인지 여부를 판단한다(1720[0]). 만약, 선택된 타일이 백색 타일이면 1740 단계로 진행하고, 그렇지 않다면 1730 단계로 진행한다.
백색 타일의 경우, 연산부(130)는 백색 타일의 초기 주회 횟수(WNinit)를 백색 타일에 포함된 픽셀들 각각의 주회 횟수(WN)로 결정한다(1740).
회색 타일의 경우, 연산부(130)는 획득된 타일에 포함된 픽셀들 각각의 주회 횟수를 연산한다. 이때, 연산부(130)는 렌더링 장치(100)와 독립된 주회 횟수 생성 장치에게 픽셀의 주회 횟수를 연산할 것을 요청할 수 있다. 주회 횟수 생성 장치는 후술할 로컬 메모리(1923)에 저장된 Edge_List(1735)를 이용하여 타일에 포함된 픽셀들 각각의 주회 횟수를 연산할 수 있다. 연산부(130) 또는 주회 횟수 생성 장치가 픽셀의 주회 횟수를 연산하는 일 예는 도 18을 참조하여 후술한다.
결정부(140)는 제 1 규칙에 기초하여 픽셀들 각각에 대하여 쉐이딩을 수행할지 여부를 결정한다(1750). 여기에서, 제 1 규칙은 주회 횟수가 0이 아닌 값을 갖는 픽셀들에 컬러 값을 할당하는 규칙(non-zero 규칙)을 의미한다. 결정부(140)가 제 1 규칙에 기초하여 픽셀에 컬러를 설정할지 여부를 결정하는 경우에는 1760 단계로 진행하고, 그렇지 않은 경우에는 1770 단계로 진행한다.
결정부(140)는 픽셀들 각각의 주회 횟수가 0이 아닌지 판단한다(1760). 결정부(140)는 0이 아닌 주회 횟수를 갖는 픽셀에 대해서는 후술할 픽셀 쉐이더(1930)에게 픽셀의 쉐이딩을 수행할 것을 지시한다(1790).
결정부(140)는 제 2 규칙에 기초하여 픽셀들 각각에 대하여 컬러를 쉐이딩을 수행할지 여부를 결정한다(1770). 여기에서, 제 2 규칙은 주회 횟수가 홀수인 값을 갖는 픽셀들에 컬러 값을 할당하는 규칙(even-odd 규칙)을 의미한다. 결정부(140)가 제 2 규칙에 기초하여 픽셀에 컬러를 설정할지 여부를 결정하는 경우에는 1780 단계로 진행하고, 그렇지 않은 경우에는 작업을 종료한다.
1750 단계 및 1770 단계를 참조하여 상술한 바와 같이, 결정부(140)은 제 1 규칙 또는 제 2 규칙에 기초하여 픽셀의 쉐이딩 여부를 결정할 수 있으나, 이에 제한되지 않는다. 예를 들어, 결정부(140)는 제 1 규칙의 역 규칙(Inverse non-zero rule) 또는 제 2 규칙의 역 규칙(Inverse even-odd rule)에 기초하여 픽셀의 쉐이딩 여부를 결정할 수 있다.
결정부(140)는 픽셀들 각각의 주회 횟수가 홀수인지 판단한다(1780). 여기에서, 홀수는 픽셀의 주회 횟수의 절대값이 홀수인 경우를 의미한다. 예를 들어, 주회 횟수가 +3인 경우도 홀수로 판단되고, 주회 횟수가 -3인 경우도 홀수로 판단된다. 결정부(140)는 홀수인 주회 횟수를 갖는 픽셀에 대해서는 픽셀 쉐이더(1930)에게 픽셀의 쉐이딩을 수행할 것을 지시한다(1790).
다시 도 15를 참조하면, 렌더링 장치(100)는 프레임에 포함된 타일들 중에서 아직 처리되지 않은 타일이 존재하는지 여부를 판단한다. 1530 단계 내지 1570 단계는 하나의 타일을 처리하는 과정을 의미한다. 따라서, 렌더링 장치(100)는 프레임에 포함된 타일들 중 처리되지 않은 타일에 대해서 1530 단계 내지 1570 단계를 수행한다. 만약, 모든 타일들에 대한 처리가 완료된 경우, 렌더링 장치(100)는 처리 결과를 버퍼(1590)에 저장한다.
도 18은 연산부 또는 주회 횟수 연산 장치가 픽셀의 주회 횟수를 연산하는 일 예를 도시한 흐름도이다.
이하에서는 연산부(130)가 픽셀의 주회 횟수를 연산하는 것으로 설명한다. 주회 횟수 연산 장치도 도 18에 도시된 흐름도에 따라 픽셀의 주회 횟수를 연산할 수 있다.
1810 단계에서, 연산부(130)는 경로에 포함된 정점들의 좌표 및 픽셀(P)의 좌표에 대한 정보를 획득한다.
1820 단계에서, 연산부(130)는 픽셀(P)의 주회 횟수(N)의 디폴트 값을 0으로 설정한다.
1830 단계에서, 연산부(130)는 픽셀(P)의 일 측면에 경로가 위치하는지 여부를 판단한다. 도 18에서는 연산부(130)가 픽셀(P)의 우측에 경로가 존재하는지를 판단하는 것으로 설명하겠으나, 이에 한정되지 않는다. 만약, 픽셀(P)의 우측에 경로가 존재하는 경우에는 1840 단계로 진행하고, 그렇지 않은 경우에는 1880 단계로 진행한다.
1840 단계에서, 연산부(130)는 픽셀(P)의 우측에 존재하는 경로가 시계 방향으로 회전하는지를 판단한다. 만약, 경로가 시계 방향으로 회전하는 경우에는 1850 단계로 진행하고, 그렇지 않은 경우에는 1860 단계로 진행한다.
1850 단계에서, 연산부(130)는 픽셀(P)의 주회 횟수(N)에 1을 증산한다.
1860 단계에서, 연산부(130)는 픽셀(P)의 우측에 존재하는 경로가 반시계 방향으로 회전하는지를 판단한다. 만약, 경로가 반시계 방향으로 회전하는 경우에는 1870 단계로 진행하고, 그렇지 않은 경우에는 1880 단계로 진행한다.
1870 단계에서, 연산부(130)는 픽셀(P)의 주회 횟수(N)에 1을 감산한다.
1880 단계에서 연산부(130)는 픽셀(P)의 우측에 다른 경로가 존재하는지를 판단한다. 만약, 픽셀(P)의 우측에 다른 경로가 존재하는 경우에는 1830 단계로 진행하고, 그렇지 않은 경우에는 1890 단계로 진행한다.
1890 단계에서, 연산부(130)는 픽셀(P)의 주회 횟수를 결정부(140)에 반환한다.
도 19 내지 도 22는 일 실시예에 따른 경로를 렌더링하는 방법이 GPU(Graphics Processing Unit) 에서 구현 또는 GPU 외부에서 구현하여 GPU와 연동되는 예들을 설명하기 위한 도면들이다.
도 19를 참조하면, GPU(1900)에서 실행되는 경로를 렌더링하는 방법은 도 1, 도 10, 도 11 및 도 13에 도시된 렌더링 장치(100)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1, 도 10, 도 11 및 도 13에 도시된 렌더링 장치(100)에 관하여 이상에서 기술된 내용은 도 19를 참조하여 후술할 내용에도 적용됨을 알 수 있다.
도 19를 참조하면, GPU(1900)는 버텍스 쉐이더(1920), 픽셀 쉐이더(1930) 및 프레임 버퍼(1940)를 포함한다. GPU(1900)은 글로벌 메모리(1910)와 연결되고, 글로벌 메모리(1910)로부터 경로 데이터를 수신할 수 있다.
버텍스 쉐이더(1920)는 렌더링 장치(100)와 동일한 기능을 수행한다. 구체적으로, 래스터라이져(1921)는 비닝부(160), 선택부(110) 및 갱신부(120)의 동작을 수행한다. 버텍스 쉐이더(1920)가 수행하는 픽셀 오너쉽 테스트(1922)는 결정부(140)의 동작을 의미하고, 주회 횟수 생성 장치(1924)는 연산부(130)의 동작을 수행한다. 한편, 주회 횟수 생성 장치(1924)는 GPU(1900)의 내부에 포함될 수도 있고, GPU(1900)의 외부에 독립적으로 위치할 수도 있다. 또한, 버텍스 쉐이더(1920)가 동작함에 따라 생성되는 Edge-List, 타일 빈 데이터, Type_List는 로컬 메모리(1923)에 저장될 수 있다.
픽셀 쉐이더(1930)는 프레임에 포함된 픽셀들 각각에 대하여 쉐이딩을 수행한다. 먼저, 픽셀 쉐이더(1930)(또는, 픽셀 쉐이더(1930)에 포함된 프래그먼트 쉐이더(1931))는 픽셀들 각각에 컬러 값을 설정한다. 이때, 프래그먼트 쉐이더(1931)는 기 저장된 텍스쳐(1932)를 이용하여 픽셀들 각각에 컬러 값을 설정할 수 있다. 그 후에, 픽셀 쉐이더(1930)는 픽셀들 각각에 후처리 작업을 수행한다. 여기에서, 후처리 작업은 블렌딩(blending) 작업 또는 안티에일리어싱 (antialiasing) 작업을 포함한다. 그 후에, 픽셀 쉐이더(1930)는 픽셀 처리가 수행된 결과를 프레임 버퍼(1940)에 전송하고, 프레임 버퍼(1940)는 픽셀 쉐이더(1930)로부터 전송된 정보를 저장한다.
도 20에 도시된 GPU(2000)와 도 19에 도시된 GPU(1900)을 비교하면, GPU(2000)의 버텍스 쉐이더(2010)는 타일 비닝을 수행하는 모듈(2011)과 래스터화를 수행하는 모듈(2012)가 분리되어 있다. 다시 말해, GPU(1900)는 래스터라이져(1921)가 비닝부(160), 선택부(110) 및 갱신부(120)의 동작을 수행하나, GPU(2000)는 타일 비닝을 수행하는 모듈(2011)이 비닝부(160)의 동작을 수행하고, 래스터화를 수행하는 모듈(2012)이 선택부(110) 및 갱신부(120)의 동작을 수행한다.
상술한 차이점을 제외한 다른 동작은 도 20에 도시된 GPU(2000)와 도 19에 도시된 GPU(1900)가 동일하게 수행한다.
도 21을 참조하면, GPU(2120)는 도 19의 픽셀 쉐이더(1930)의 동작만을 수행하고, 도 19의 버텍스 쉐이더(1920)의 동작은 별도의 하드웨어 가속기 또는 소프트웨어(2110)에 의하여 수행될 수 있다. 다시 말해, 도 19의 버텍스 쉐이더(1920)는 GPU(2120) 내에서 구현될 수도 있으나, 별도의 하드웨어 또는 소프트웨어로도 구현될 수 있다.
도 22에는 별도의 하드웨어 가속기 또는 소프트웨어(2110)로 구현된 도 20의 버텍스 쉐이더(2010)의 일 예가 도시되어 있다. 다시 말해, GPU(2220)는 도 20의 픽셀 쉐이더(2020)의 동작만을 수행하고, 도 20의 버텍스 쉐이더(2010)의 동작은 별도의 하드웨어 가속기 또는 소프트웨어(2210)에 의하여 수행될 수 있다.
상술한 바에 따르면, 렌더링 장치(100)는 타일을 점차 작은 단위의 서브 타일들로 분할함(즉, 타일을 계층적으로 분할함)으로써, 타일 내에서 실제로 경로가 지나가는 영역을 정밀하게 식별할 수 있다. 또한, 렌더링 장치(100)는 프레임에서 경로가 지나가는 영역을 보다 정밀하게 선택하여 처리할 수 있는바, 렌더링 품질이 향상될 수 있다. 또한, 렌더링 장치(100)는 타일 보다 작은 서브 타일 단위로 렌더링을 수행하는바, 렌더링 시에 요구되는 연산량이 감소될 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100: 렌더링 장치
110: 선택부
120: 갱신부

Claims (19)

  1. 렌더링 장치를 이용하여 이미지의 경로 렌더링을 수행하는 방법에 있어서,
    타일 빈(bin) 데이터에 기초하여 상기 이미지의 프레임에 포함된 타일들 중에서 렌더링될 경로를 포함하는 타일을 선택하는 단계;
    상기 선택된 타일을 복수의 1차 서브 타일들로 분할하는 단계;
    상기 경로가 상기 복수의 1차 서브 타일들 각각에 포함되어 있는지 여부를 판단하는 단계;
    상기 판단 결과에 기초하여 상기 복수의 1차 서브 타일들의 초기 주회 횟수(initial winding number)를 갱신하는 단계; 및
    상기 복수의 1차 서브 타일들의 상기 갱신된 초기 주회 횟수에 기초하여 상기 프레임의 적어도 하나의 픽셀을 렌더링하는 단계;를 포함하고,
    상기 타일 빈 데이터는 상기 프레임에 포함된 상기 타일들 각각의 초기 주회 횟수를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 경로를 포함하는 1차 서브 타일을 복수의 2차 서브 타일들로 분할하는 단계; 및
    상기 경로가 상기 복수의 2차 서브 타일들 각각에 포함되어 있는지 여부를 판단하는 단계;를 더 포함하고,
    상기 갱신하는 단계는 상기 복수의 2차 서브 타일들 각각의 초기 주회 횟수를 갱신하는, 방법.
  3. 제 1 항에 있어서,
    상기 복수의 1차 서브 타일들 중에서 상기 경로를 포함하는 1차 서브 타일의 초기 주회 횟수를 상기 1차 서브 타일을 포함하는 타일의 초기 주회 횟수로 결정하는 단계;를 더 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 갱신하는 단계는 상기 1차 서브 타일들을 포함하는 타일에 포함된 경로의 위치 및 진행 방향에 기초하여 상기 1차 서브 타일들 각각의 초기 주회 횟수를 갱신하는, 방법.
  5. 제 1 항에 있어서,
    상기 경로가 비단조 곡선(non-monotonic curve)이면 상기 경로를 복수의 단조 곡선들(monotonic curves)로 분할하는 단계;를 더 포함하고,
    상기 타일을 선택하는 단계는 상기 프레임에 포함된 타일들 중에서 상기 단조 곡선들 중 적어도 하나를 포함하는 타일을 선택하는, 방법.
  6. 제 1 항에 있어서,
    상기 갱신된 초기 주회 횟수 및 상기 타일 빈 데이터에 포함된 초기 주회 횟수에 기초하여 상기 프레임에 포함된 픽셀들 각각의 주회 횟수를 연산하는 단계;를 더 포함하는, 방법.
  7. 제 6 항에 있어서,
    상기 렌더링하는 단계는, 상기 프레임의 적어도 하나의 픽셀에 대해 상기 연산된 주회 횟수에 기초하여, 상기 프레임의 적어도 하나의 픽셀에 대한 쉐이딩의 수행 여부를 결정하는 단계를 포함하는, 방법.
  8. 제 1 항에 있어서,
    상기 경로의 위치 및 진행 방향에 기초하여 상기 프레임에 포함된 타일들 각각의 초기 주회 횟수를 결정함으로써 상기 타일 빈 데이터를 생성하는 단계;를 더 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 경로를 포함하는 N차 서브 타일을 복수의 N+1차 서브 타일들로 분할하는 단계;
    상기 복수의 N+1차 서브 타일들 중에서 상기 경로를 포함하지 않는 N+1차 서브 타일을 선택하는 단계; 및
    상기 선택된 N+1차 서브 타일의 초기 주회 횟수를 갱신하는 단계;를 더 포함하고,
    상기 N은 2 이상이고, 상기 N+1차 서브 타일에 4개의 픽셀들이 포함되는 경우에 대응하는 자연수 이하인, 방법.
  10. 제 1 항 내지 제 9 항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  11. 이미지의 경로 렌더링을 수행하는 렌더링 장치에 있어서,
    타일 빈(bin) 데이터에 기초하여 상기 이미지의 프레임에 포함된 타일들 중에서 렌더링될 경로를 포함하는 타일을 선택하고, 상기 선택된 타일을 복수의 1차 서브 타일들로 분할하고, 상기 경로가 상기 복수의 1차 서브 타일들 각각에 포함되어 있는지 여부를 판단하는, 선택부; 및
    상기 판단 결과에 기초하여 상기 복수의 1차 서브 타일들의 초기 주회 횟수(initial winding number)를 갱신하는 갱신부;를 포함하고,
    상기 프레임 내 적어도 하나의 픽셀은 상기 복수의 1차 서브 타일들의 상기 갱신된 초기 주회 횟수에 기초하여 렌더링되고,
    상기 타일 빈 데이터는 상기 프레임에 포함된 상기 타일들 각각의 초기 주회 횟수를 포함하는, 렌더링 장치.
  12. 제 11 항에 있어서,
    상기 선택부는 상기 경로를 포함하는 1차 서브 타일을 복수의 2차 서브 타일들로 분할하고, 상기 경로가 상기 복수의 2차 서브 타일들 각각에 포함되어 있는지 여부를 판단하고,
    상기 갱신부는 상기 복수의 2차 서브 타일들 각각의 초기 주회 횟수를 갱신하는, 렌더링 장치.
  13. 제 11 항에 있어서,
    상기 갱신부는 상기 복수의 1차 서브 타일들 중에서 상기 경로를 포함하는 1차 서브 타일의 초기 주회 횟수를 상기 1차 서브 타일을 포함하는 타일의 초기 주회 횟수로 결정하는, 렌더링 장치.
  14. 제 11 항에 있어서,
    상기 갱신부는 상기 1차 서브 타일들을 포함하는 타일에 포함된 경로의 위치 및 진행 방향에 기초하여 상기 1차 서브 타일들 각각의 초기 주회 횟수를 갱신하는, 렌더링 장치.
  15. 제 11 항에 있어서,
    상기 경로가 비단조 곡선(non-monotonic curve)이면 상기 경로를 복수의 단조 곡선들(monotonic curves)로 분할하는 분할부;를 더 포함하고,
    상기 선택부는 상기 프레임에 포함된 타일들 중에서 상기 단조 곡선들 중 적어도 하나를 포함하는 타일을 선택하는, 렌더링 장치.
  16. 제 11 항에 있어서,
    상기 갱신된 초기 주회 횟수 및 상기 타일 빈 데이터에 포함된 초기 주회 횟수에 기초하여 상기 프레임에 포함된 픽셀들 각각의 주회 횟수를 연산하는 연산부;를 더 포함하는, 렌더링 장치.
  17. 제 16 항에 있어서,
    상기 프레임의 적어도 하나의 픽셀에 대해 상기 연산된 주회 횟수에 기초하여, 상기 프레임의 적어도 하나의 픽셀에 대한 쉐이딩의 수행 여부를 결정하는 결정부;를 더 포함하는, 렌더링 장치.
  18. 제 11 항에 있어서,
    상기 경로의 위치 및 진행 방향에 기초하여 상기 프레임에 포함된 타일들 각각의 초기 주회 횟수를 결정함으로써 상기 타일 빈 데이터를 생성하는 비닝부;를 더 포함하는, 렌더링 장치.
  19. 제 11 항에 있어서,
    상기 선택부는 상기 경로를 포함하는 N차 서브 타일을 복수의 N+1차 서브 타일들로 분할하고, 상기 복수의 N+1차 서브 타일들 중에서 상기 경로를 포함하지 않는 N+1차 서브 타일을 선택하고,
    상기 갱신부는 상기 선택된 N+1차 서브 타일의 초기 주회 횟수를 갱신하고,
    상기 N은 2 이상이고, 상기 N+1차 서브 타일에 4개의 픽셀들이 포함되는 경우에 대응하는 자연수 이하인, 렌더링 장치.
KR1020150109570A 2015-08-03 2015-08-03 경로 렌더링을 수행하는 방법 및 장치. KR102426669B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150109570A KR102426669B1 (ko) 2015-08-03 2015-08-03 경로 렌더링을 수행하는 방법 및 장치.
US15/093,491 US9892534B2 (en) 2015-08-03 2016-04-07 Method and apparatus for performing path rendering

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150109570A KR102426669B1 (ko) 2015-08-03 2015-08-03 경로 렌더링을 수행하는 방법 및 장치.

Publications (2)

Publication Number Publication Date
KR20170016156A KR20170016156A (ko) 2017-02-13
KR102426669B1 true KR102426669B1 (ko) 2022-07-28

Family

ID=58052594

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150109570A KR102426669B1 (ko) 2015-08-03 2015-08-03 경로 렌더링을 수행하는 방법 및 장치.

Country Status (2)

Country Link
US (1) US9892534B2 (ko)
KR (1) KR102426669B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102354989B1 (ko) * 2015-04-14 2022-01-24 삼성전자주식회사 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.
KR102446865B1 (ko) * 2017-09-12 2022-09-23 삼성전자주식회사 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법
KR20200073697A (ko) 2018-12-14 2020-06-24 삼성전자주식회사 경로를 포함하는 객체를 렌더링하는 장치, 이를 포함하는 컴퓨팅 장치 및 이의 렌더링 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7408553B1 (en) 2005-12-15 2008-08-05 Nvidia Corporation Inside testing for paths
US20110298813A1 (en) * 2010-06-08 2011-12-08 Rasmus Barringer Tile Rendering for Image Processing
US20130141445A1 (en) 2011-12-05 2013-06-06 Arm Limited Methods of and apparatus for processing computer graphics
US20140043342A1 (en) 2012-08-09 2014-02-13 Qualcomm Incorporated Extending dx11 gpu for programmable vector graphics

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5438656A (en) 1993-06-01 1995-08-01 Ductus, Inc. Raster shape synthesis by direct multi-level filling
JP4365950B2 (ja) 1998-09-11 2009-11-18 キヤノン株式会社 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置
US7804499B1 (en) 2006-08-28 2010-09-28 Nvidia Corporation Variable performance rasterization with constant effort
US8139058B2 (en) 2006-11-03 2012-03-20 Vivante Corporation Hierarchical tile-based rasterization algorithm
US8031937B2 (en) * 2007-04-04 2011-10-04 Telefonaktiebolaget Lm Ericsson (Publ) Frame buffer compression and decompression method for graphics rendering
US8638337B2 (en) * 2009-03-16 2014-01-28 Microsoft Corporation Image frame buffer management
US8368959B2 (en) * 2009-05-18 2013-02-05 Xerox Corporation Method and system for selective smoothing of halftoned objects using bitmap encoding
GB2494903B (en) * 2011-09-22 2017-12-27 Advanced Risc Mach Ltd Graphics processing systems
EP2820562B1 (en) * 2012-02-27 2017-08-09 Intel Corporation Using cost estimation to improve performance of tile rendering for image processing
US20140184633A1 (en) 2012-12-31 2014-07-03 Nvidia Corporation Conservative bounding region rasterization
US9070200B2 (en) * 2013-05-02 2015-06-30 Arm Limited Graphics processing systems
US9501859B2 (en) * 2013-07-19 2016-11-22 Adobe Systems Incorporated Triangle rasterization
US9779534B2 (en) * 2013-08-28 2017-10-03 Qualcomm Incorporated Prefixed summed length in graphics processing
EP2985735B1 (en) 2014-08-11 2019-12-04 Samsung Electronics Co., Ltd Method and apparatus for performing tile-based path rendering

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7408553B1 (en) 2005-12-15 2008-08-05 Nvidia Corporation Inside testing for paths
US20110298813A1 (en) * 2010-06-08 2011-12-08 Rasmus Barringer Tile Rendering for Image Processing
US20130141445A1 (en) 2011-12-05 2013-06-06 Arm Limited Methods of and apparatus for processing computer graphics
US20140043342A1 (en) 2012-08-09 2014-02-13 Qualcomm Incorporated Extending dx11 gpu for programmable vector graphics

Also Published As

Publication number Publication date
KR20170016156A (ko) 2017-02-13
US9892534B2 (en) 2018-02-13
US20170039743A1 (en) 2017-02-09

Similar Documents

Publication Publication Date Title
US11074744B2 (en) Method and apparatus for performing tile-based path rendering
CN105006010B (zh) 执行路径渲染的方法和设备
KR102101626B1 (ko) 스크린 위치에 따라 달라지는 분해능을 가진 다수의 렌더 타겟을 위한 텍스처 매핑을 위한 그라디언트 조정
KR102122454B1 (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US9530241B2 (en) Clipping of graphics primitives
TWI475513B (zh) 用於即時光度相依細分的方法和裝置
CN106251384A (zh) 使用三角形的递归再分的细分方法
US20140292757A1 (en) Prediction method, generation method and storage medium
KR102101834B1 (ko) 영상 처리 장치 및 방법
KR102443697B1 (ko) 경로 스트로크를 수행하는 방법 및 장치
KR102426669B1 (ko) 경로 렌더링을 수행하는 방법 및 장치.
KR20150093689A (ko) 쉘 메쉬에 기초한 최적화된 다각형을 형성하기 위한 방법
TW201447812A (zh) 有共用邊緣的先印後蓋路徑描繪
US20160239996A1 (en) 3d map display system
KR102354989B1 (ko) 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.
KR102423767B1 (ko) 타일 기반 경로 렌더링을 수행하는 방법 및 장치.
KR102618560B1 (ko) 경로 렌더링을 수행하는 방법 및 장치
KR102426667B1 (ko) 경로 렌더링에서 에일리어싱을 방지하는 방법 및 장치.
KR20150042095A (ko) 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법
JP5777736B2 (ja) 地図データ作成装置、地図データ作成方法および記憶媒体
JP5120174B2 (ja) 描画装置
JP2004086479A (ja) 図形を表示させるための情報処理装置、情報処理方法、その情報処理方法を実現するためのプログラム、およびそのプログラムを記録した記録媒体

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant