KR102354989B1 - 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치. - Google Patents

경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치. Download PDF

Info

Publication number
KR102354989B1
KR102354989B1 KR1020150052459A KR20150052459A KR102354989B1 KR 102354989 B1 KR102354989 B1 KR 102354989B1 KR 1020150052459 A KR1020150052459 A KR 1020150052459A KR 20150052459 A KR20150052459 A KR 20150052459A KR 102354989 B1 KR102354989 B1 KR 102354989B1
Authority
KR
South Korea
Prior art keywords
path
tiles
tile
identification value
winding number
Prior art date
Application number
KR1020150052459A
Other languages
English (en)
Other versions
KR20160122496A (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 KR1020150052459A priority Critical patent/KR102354989B1/ko
Priority to US14/943,679 priority patent/US10529098B2/en
Priority to JP2016074239A priority patent/JP6785570B2/ja
Priority to CN201610231505.8A priority patent/CN106056657B/zh
Priority to EP16165416.5A priority patent/EP3082108B1/en
Publication of KR20160122496A publication Critical patent/KR20160122496A/ko
Application granted granted Critical
Publication of KR102354989B1 publication Critical patent/KR102354989B1/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
    • 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
    • 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
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box

Landscapes

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

Abstract

타일 비닝을 수행하는 방법은, 렌더링의 대상인 객체를 구성하는 경로들 경로들을 복수의 그룹으로 분류하고, 상기 그룹들 각각에 포함된 경로를 구분하여 타일 비닝을 수행한다.

Description

경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치. {Method and apparatus for performing tile binning for path rendering}
경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치에 관한다.
벡터 그래픽스(vector graphics) 또는 경로 렌더링(path rendering)을 수행하는 경우 그래픽 처리 장치(Graphics Processing Unit, 이하 GPU 라고 함)의 가속 성능을 향상시키기 위한 방법이 연구되고 있다. 경로 렌더링의 경우 입력 데이터가 삼각형들로 구성되지 않고 커맨드(command)와 정점(vertex) 들의 조합으로 구성되어 있다. 따라서, 경로 렌더링을 수행할 때에 GPU의 가속 성능을 향상시키기 어렵다.
경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치를 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른 타일 기반 렌더링(tile-based rendering)을 위한 타일 비닝(tile binning)을 수행하는 방법은, 상기 렌더링의 대상인 객체를 구성하는 경로들에 대한 정보를 획득하는 단계; 상기 경로의 형상에 따라 상기 경로들 각각을 제 1 그룹 또는 제 2 그룹으로 분류하는 단계; 및 상기 제 1 그룹에 포함된 경로와 상기 제 2 그룹에 포함된 경로를 구분하여 상기 타일 비닝을 수행하는 단계;를 포함한다.
다른 측면에 따른 타일 기반 렌더링을 위한 타일 비닝을 수행하는 장치는, 상기 렌더링의 대상인 객체를 구성하는 경로들에 대한 정보를 획득하고, 상기 경로의 형상에 따라 상기 경로들 각각을 제 1 그룹 또는 제 2 그룹으로 분류하는 획득부; 및 상기 제 1 그룹에 포함된 경로와 상기 제 2 그룹에 포함된 경로를 구분하여 상기 타일 비닝을 수행하는 할당부;를 포함한다.
또 다른 측면에 따른 타일 기반 렌더링을 수행하는 방법은, 상기 렌더링의 대상인 객체를 구성하는 적어도 하나의 경로에 대한 정보를 획득하는 단계; 상기 경로의 형상에 따라 상기 경로들 각각을 제 1 그룹 또는 제 2 그룹으로 분류하는 단계; 상기 제 1 그룹에 포함된 경로와 상기 제 2 그룹에 포함된 경로를 구분하여 상기 타일 비닝을 수행하는 단계; 및 상기 경로들 각각의 위치 및 진행 방향에 기초하여 상기 프레임에 포함된 타일들 각각의 주회 횟수를 연산하고, 상기 연산된 주회 횟수에 기초하여 상기 프레임에 포함된 픽셀들을 쉐이딩하는 단계;를 포함한다.
또 다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
도 1은 일 실시예에 따른 경로 렌더링을 수행하는 장치의 일 예를 도시한 구성도이다.
도 2a는 일 실시예에 따른 비닝 수행부의 일 예를 도시한 구성도이다.
도 2b는 일 실시예에 따른 획득부가 경로를 분류하는 일 예를 나타내는 도면이다.
도 3은 일 실시예에 따른 비닝 수행부가 수행하는 동작의 일 예를 나타낸 흐름도이다.
도 4a 및 도 4b는 일 실시예에 따른 할당부가 프레임에 포함된 타일들 중 제 1 경로가 통과하는 타일을 선택하는 일 예를 설명하기 위한 도면들이다.
도 5a 내지 도 5e는 일 실시예에 따른 할당부가 프레임에 포함된 타일들 중 경로가 통과하는 타일들을 선택하는 일 예 도면들이다.
도 6은 일 실시예에 따른 할당부가 타일에 경로의 식별 값을 할당하는 일 규칙을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 할당부가 타일에 경로의 식별 값을 할당한 일 예를 나타내는 도면이다.
도 8은 일 실시예에 따른 할당부가 타일에 경로의 식별 값을 할당하는 다른 예를 나타낸 흐름도이다.
도 9는 일 실시예에 따른 할당부가 타일에 커브의 식별 값을 할당하는 일 예를 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 비닝 수행부의 다른 예를 도시한 구성도이다.
도 11은 일 실시예에 따른 비닝 수행부가 수행하는 동작의 다른 예를 나타낸 흐름도이다.
도 12a 내지 도 12b는 일 실시예에 따른 설정부가 경계 박스를 설정하는 일 예를 설명하기 위한 도면들이다.
도 13은 일 실시예에 따른 비닝 수행부의 또 다른 예를 도시한 구성도이다.
도 14는 일 실시예에 따른 비닝 수행부가 수행하는 동작의 또 다른 예를 나타낸 흐름도이다.
도 15는 일 실시예에 따른 프레임에 포함된 타일들에 경로의 식별 값이 할당된 일 예가 도시된 도면이다.
도 16은 일 실시예에 따른 제거부가 타일에 할당된 식별 값을 제거하는 일 예를 나타낸 흐름도이다.
도 17은 일 실시예에 따른 제거부가 최소 수평 방향 성분을 획득하는 일 예를 설명하기 위한 도면이다.
도 18a 내지 도 18b는 일 실시예에 따른 제거부가 타일에 할당된 식별 값을 제거하는 일 예를 설명하기 위한 도면들이다.
도 19는 일 실시예에 따른 제거부가 타일에 할당된 식별 값을 제거하는 다른 예를 나타낸 흐름도이다.
도 20은 일 실시예에 따른 제거부가 타일에 할당된 식별 값을 제거하는 다른 예를 설명하기 위한 도면들이다.
도 21a 내지 도 21b는 일 실시예에 따른 프레임에 경계 박스가 설정된 경우에 제거부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 22는 일 실시예에 따른 비닝 수행부의 또 다른 예를 도시한 구성도이다.
도 23은 일 실시예에 따른 비닝 수행부가 수행하는 동작의 또 다른 예를 나타낸 흐름도이다.
도 24a 및 도 24b는 일 실시예에 따른 주회 횟수를 설명하기 위한 도면들이다.
도 25는 일 실시예에 따른 연산부가 타일의 초기 주회 횟수를 연산하는 일 예를 나타낸 흐름도이다.
도 26은 할당부가 타일에 경로의 식별 값을 할당하고, 연산부가 타일의 초기 주회 횟수를 연산하는 일 예를 설명하기 위한 도면이다.
도 27a 내지 도 27c는 연산부가 초기 주회 횟수를 부여하는 규칙의 일 예를 나타내는 도면들이다.
도 28a 내지 도 28b는 일 실시예에 따른 연산부가 프레임에 포함된 타일들 중 제 2 경로가 통과하는 타일의 일 측 방향에 나열된 타일들의 제 2 초기 주회 횟수를 연산하는 일 예를 설명하기 위한 도면들이다.
도 29a 내지 도 29c는 일 실시예에 따른 연산부가 2개 이상의 경로의 진행 방향을 고려하여 초기 값을 부여하는 규칙의 일 예를 나타내는 도면들이다.
도 30a 내지 도 30b는 일 실시예에 따른 연산부가 프레임에 포함된 타일들 중 제 3 경로가 통과하는 타일의 일 측 방향에 나열된 타일들의 제 3 초기 횟수를 연산하는 일 예를 설명하기 위한 도면들이다.
도 31a 내지 도 31c는 일 실시예에 따른 주회 횟수 연산부가 픽셀의 주회 횟수를 연산하는 일 예를 설명하기 위한 도면이다.
도 32a 내지 도 32b는 일 실시예에 따른 주회 횟수 연산부가 픽셀의 주회 횟수를 연산하는 일 예를 설명하기 위한 도면들이다.
도 33a 내지 도 33d는 일 실시예에 따른 주회 횟수 연산부가 서로 다른 측면을 선택하여 픽셀의 주회 횟수를 연산하는 일 예를 설명하기 위한 도면들이다.
도 34a 및 도 34b는 일 실시예에 따른 주회 횟수 연산부가 경로가 통과하는 타일들에 포함된 픽셀들의 주회 횟수를 연산한 결과의 예들을 나타내는 도면들이다.
도 35는 일 실시예에 따른 주회 횟수 연산부가 타일의 초기 주회 횟수를 연산하는 일 예를 설명하기 위한 도면이다.
도 36a 내지 도 36c는 일 실시예에 따른 픽셀 쉐이더가 프레임에 포함된 픽셀들 각각에 대응하는 컬러를 결정하는 일 예를 설명하기 위한 도면들이다.
이하에서는 도면을 참조하여 본 발명의 실시예들을 상세히 설명한다. 본 발명의 하기 실시예는 본 발명을 구체화하기 위한 것일 뿐 본 발명의 권리 범위를 제한하거나 한정하지 않는다. 또한, 본 발명의 상세한 설명 및 실시예로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 유추할 수 있는 것은 본 발명의 권리범위에 속하는 것으로 해석된다.
도 1은 일 실시예에 따른 렌더링 장치의 일 예를 도시한 구성도이다.
도 1을 참조하면, 렌더링 장치(100)는 입력 어셈블러(110), 버텍스 쉐이더(120), 프리미티브 어셈블러(130), 비닝 수행부(140), 주회 횟수 연산부(150), 렌더 출력부(160) 및 버퍼(170)를 포함한다. 도 1에 도시된 렌더링 장치(100)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있다.
또한, 도 1에 도시된 렌더링 장치(100)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다. 예를 들어, 렌더링 장치(100)는 그래픽 처리 장치(GPU)를 의미할 수 있다.
렌더링 장치(100)는 경로 렌더링을 수행한다. 여기에서, 경로는 렌더링의 대상을 의미하는 객체를 구성하는 요소로서, 에지(edge) 또는 커브(curve)를 포함한다. 에지는 서로 다른 두 정점(vertex)들을 연결하는 선분을 의미하고, 커브는 복수의 정점들을 연결하는 곡선을 의미한다. 여기에서, 정점은 경로의 시작 위치에 대응하는 정점 또는 경로의 종료 위치에 대응하는 정점을 포함한다.
예를 들어, 객체는 적어도 하나 이상의 경로가 연결되어 형성된 폐다각형(closed polygon) 또는 폐경로(closed path)을 포함할 수 있다.
렌더링 장치(100)는 적어도 하나의 경로를 나타내는 커맨드를 수신하고, 커맨드를 해석함으로써 프레임에 포함된 픽셀들 각각의 컬러를 결정한다. 여기에서, 렌더링 장치(100)가 픽셀의 컬러를 결정한다고 함은, 픽셀에 컬러를 표시할 지 여부를 결정하는 것뿐만 아니라 물론 컬러가 표시될 픽셀에 어떤 컬러를 설정할지를 결정하는 것을 포함한다. 따라서, 렌더링 장치(100)가 동작함에 따라, 화면에는 객체가 출력될 수 있다.
예를 들어, 프레임에 포함된 픽셀들 중 제 1 픽셀로부터 제 2 픽셀까지의 에지를 경로라고 가정하면, 정점들은 프레임에서 제 1 픽셀 및 제 2 픽셀 각각에 대응하는 지점을 의미한다. 따라서, 커맨드는 제 1 픽셀에 대응하는 제 1 정점의 좌표, 제 2 픽셀에 대응하는 제 2 픽셀의 좌표 및 제 1 정점에서 제 2 정점까지 직선을 구성하라는 내용을 포함한다. 따라서, 커맨드를 참조하면, 경로를 구성하는 정점들 각각의 좌표에 대한 정보뿐만 아니라, 경로의 방향에 대한 정보도 파악될 수 있다. 또한, 커맨드에는 각각의 픽셀에 설정될 컬러 값에 대한 정보도 포함될 수 있다.
예를 들어, 렌더링 장치(100)는 타일 기반 경로 렌더링(tile-based path rendering)을 수행할 수 있다. 여기에서, 타일 기반 경로 렌더링은 프레임을 가상의 타일들로 분할하고, 타일들 각각에 대하여 경로 렌더링을 수행하는 것을 의미한다. 렌더링 장치(100)가 타일 기반 경로 렌더링을 수행함에 따라, 렌더링 시에 소요되는 시간 및 전력의 소모가 감소될 수 있다.
입력 어셈블러(110)는 경로를 구성하는 적어도 하나의 정점에 대한 데이터를 메모리에서 독출하고, 독출된 데이터를 버텍스 쉐이더(120)에게 전송한다. 버텍스 쉐이더(120)는 정점에 대하여 사용자가 작성한 버텍스 쉐이딩 코드(vertex shading code)를 수행한다. 여기에서, 버텍스 쉐이딩 코드는 상술된 커맨드를 의미한다. 다시 말해, 버텍스 쉐이더(120)는 경로를 나타내는 커맨드를 해석한다. 예를 들어, GPU의 쉐이딩 코어가 버텍스 쉐이더(120)의 기능을 수행할 수 있다.
프리미티브 어셈블러(130)는 버텍스 쉐이더(120)를 통과한 정점들을 모아서 프리미티브를 구성한다. 여기에서, 프리미티브는 정점들로 구성되는 경로로서, 객체를 구성하는 요소를 의미한다. 일 실시예에 따른 프리미티브는 에지 또는 커브를 포함한다.
비닝 수행부(140)는 타일 비닝을 수행한다. 구체적으로, 비닝 수행부(140)는 경로의 형상에 따라 경로를 제 1 그룹 또는 제 2 그룹으로 분류하고, 제 1 그룹에 포함된 경로와 제 2 그룹에 포함된 경로를 구분하여 타일 비닝을 수행한다. 다시 말해, 비닝 수행부(140)는 경로가 에지인지 또는 커브인지에 따라 구분하여 타일 비닝을 수행한다. 예를 들어, 비닝 수행부(140)는 프레임에 포함된 타일들에 경로의 식별 값을 할당할 수 있다. 예를 들어, 비닝 수행부(140)는 타일의 렌더링 시에 처리해야 하는 프리미티브(에지 또는 커브)의 명칭을 포함한 리스트를 각각의 타일마다 생성할 수 있다. 이하에서, 에지의 명칭을 포함한 리스트를 'Edge_List'라고 하고, 커브의 명칭을 포함한 리스트를 'Curve_List'라고 한다.
타일은 프레임에 포함된 픽셀들의 그룹을 의미한다. 예를 들어, 프레임에 1024*768 개의 픽셀들이 포함되어 있고, 프레임이 4개의 타일들로 분할될 수 있다고 가정하면, 하나의 타일에는 512*384 개의 픽셀들이 포함된다.
경로의 식별 값은 경로를 지칭하는 것으로 미리 정해진 명칭이 해당될 수 있다. 예를 들어, 도 4a에서 제 1 경로(e0)에 대응하는 경로의 식별 값은 'e0'일 수 있다. 그러나, 특정 경로를 의미하는 것으로서 미리 약속된 정보라면 제한 없이 식별 값에 해당될 수 있다. 도 2 내지 도 19 및 도 29 내지 도 30을 참조하여, 비닝 수행부(140)가 타일들에 경로의 식별 값을 할당하는 예들을 후술한다.
또한, 비닝 수행부(140)는 경로의 위치 및 진행 방향에 기초하여 타일들 각각의 초기 주회 횟수를 연산할 수 있다. 도 20 내지 도 28을 참조하여, 비닝 수행부(140)가 경로들 각각의 초기 주회 횟수를 연산하는 예들을 후술한다. 다만, 비닝 수행부(140)가 초기 주회 횟수를 연산하지 않는다면, 주회 횟수 연산부(150)가 초기 주회 횟수를 연산할 수도 있다.
주회 횟수 연산부(150)는 경로의 위치 및 진행 방향에 기초하여 타일들 각각에 포함된 픽셀들의 주회 횟수를 연산할 수 있다. 예를 들어, 주회 횟수 연산부(150)는 하드웨어 또는 쉐이딩 코어에서 동작하는 소프트웨어로 구현될 수 있다. 도 31 내지 도 35를 참조하여, 주회 횟수 연산부(150)가 픽셀의 주회 횟수를 연산하는 예들을 후술한다.
한편, 도 1에는 주회 횟수 연산부(150)가 렌더링 장치(100)에 포함된 것으로 도시하였으나, 이에 한정되지 않는다. 다시 말해, 주회 횟수 연산부(150)는 렌더링 장치(100)와 독립된 단일 장치가 될 수도 있다. 예를 들어, 독립된 주회 횟수 연산부(미도시)는 렌더링 장치(100)로부터 경로에 포함된 정점들 각각의 좌표에 대한 정보 및 프레임에 포함된 픽셀의 좌표에 대한 정보를 수신한다. 그리고, 독립된 주회 횟수 연산부(미도시)는 수신된 정보를 이용하여 픽셀의 주회 횟수를 연산하고, 연산된 주회 횟수를 렌더링 장치(100)로 반환한다.
다시 말해, 픽셀의 주회 횟수가 렌더링 장치(100)에 포함된 쉐이딩 코어에서 연산되는 것으로 구현될 수도 있고, 렌더링 장치(100)와 독립된 하드웨어에서 연산되는 것으로 구현될 수도 있다.
렌더 출력부(160)는 픽셀 쉐이더가 동작함에 따라 생성된 데이터(예를 들어, 픽셀의 컬러에 대한 정보)를 버퍼(170)에 기록한다. 다시 말해, 픽셀 쉐이더는 프레임에 포함된 픽셀들 각각의 컬러를 결정하고, 렌더 출력부(160)는 픽셀의 컬러에 대한 정보를 합(merge)하여 버퍼(170)에 기록한다.
예를 들어, 픽셀 쉐이더는 프레임에 포함된 픽셀들에 대한 정보를 수신하고, 픽셀들 각각의 컬러를 결정할 수 있다. 다시 말해, 픽셀 쉐이더는 픽셀들 각각의 주회 횟수에 기초하여 픽셀의 쉐이딩을 수행한다. 여기에서, 쉐이딩은 픽셀들 각각에 컬러를 설정하는 과정을 의미할 수 있으나, 이에 한정되지 않는다. 예를 들어, 쉐이딩은 픽셀들 각각에 명암을 설정하는 과정이 될 수도 있고, 픽셀들 각각에 질감을 나타내는 과정이 될 수도 있다. 또한, 픽셀 쉐이더는 텍스쳐(texture)에 기초하여 픽셀의 쉐이딩을 수행할 수 있다. 예를 들어, 픽셀 쉐이더는 기 설정된 규칙에 기초하여 픽셀의 컬러를 결정할 수 있다. 도 36을 참조하여, 픽셀 쉐이더가 픽셀의 컬러를 결정하는 예를 후술한다.
렌더 출력부(160)는 픽셀의 컬러에 대한 정보를 버퍼(170)에 기록한다.
도 2a는 일 실시예에 따른 비닝 수행부의 일 예를 도시한 구성도이다.
도 2a를 참조하면, 비닝 수행부(140)는 획득부(141) 및 할당부(142)를 포함한다. 획득부(141) 또는 할당부(142)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
획득부(141)는 객체를 구성하는 적어도 하나의 경로에 대한 정보를 획득한다. 여기에서, 객체는 렌더링이 수행되는 대상을 의미하며, 적어도 하나의 에지 또는 커브로 구성될 수 있다. 다시 말해, 획득부(141)는 프리미티브 어셈블러(130)로부터 경로(에지 또는 커브)에 대한 정보를 획득한다. 여기에서, 경로에 대한 정보는 경로의 시작 지점에 해당되는 정점의 좌표, 경로의 종료 지점에 해당되는 정점의 좌표 및 경로의 진행 방향(즉, 경로가 그려지는 방향)을 포함한다.
또한, 획득부(141)는 경로의 형상에 따라 경로를 제 1 그룹 또는 제 2 그룹으로 분류한다. 여기에서, 제 1 그룹은 에지가 포함된 그룹을 의미하고, 제 2 그룹은 커브가 포함된 그룹을 의미한다. 예를 들어, 획득부(141)는 경로에 대한 정보를 이용하여, 경로들 각각이 제 1 그룹에 포함되는지 또는 제 2 그룹에 포함되는지를 결정할 수 있다. 경로에 대한 정보에는 경로에 포함된 정점들의 좌표 및 경로의 진행 방향에 대한 정보가 포함되어 있다. 따라서, 획득부(141)는 경로를 제 1 그룹 또는 제 2 그룹으로 분류할 수 있다. 이하, 도 2b를 참조하여 획득부(141)가 경로를 분류하는 일 예를 설명한다.
도 2b는 일 실시예에 따른 획득부가 경로를 분류하는 일 예를 나타내는 도면이다.
비닝 수행부(140)는 프리미티브 어셈블러(130)로부터 경로에 대한 정보를 획득한다. 객체가 복수의 경로들로 구성되어 있다고 가정하면, 비닝 수행부(140)는 복수의 경로들에 대한 정보를 획득할 수 있다. 도 2b를 참조하면, 비닝 수행부(140)가 7개의 경로들(e0, e1, e2, e3, c0, c1, c2)에 대한 정보를 획득한 일 예가 도시되어 있다.
획득부(141)는 각각의 경로들(e0, e1, e2, e3, c0, c1, c2)을 제 1 그룹(리스트 A) 또는 제 2 그룹(리스트 B)로 분류한다. 예를 들어, 획득부(141)는 에지들(e0, e1, e2, e3)에 대한 정보를 조합하여 제 1 그룹(리스트 A)을 구성하고, 커브들(c0, c1, c2)에 대한 정보를 조합하여 제 2 그룹(리스트 B)을 구성할 수 있다.
획득부(141)가 경로들을 분류함에 따라, 비닝 수행부(140)은 경로의 형태에 따라 타일 비닝을 병렬적으로 수행할 수 있다. 다시 말해, 비닝 수행부(140)는 에지들(e0, e1, e2, e3)에 대한 타일 비닝과 커브들(c0, c1, c2)에 대한 타일 비닝을 병렬적으로 수행할 수 있다.
도 2a 내지 도 2b를 참조하여 상술한 바에 따르면, 획득부(141)가 경로들을 에지 또는 커브로 분류하는 것으로 설명하였으나, 이에 한정되지 않는다. 즉, 프리미티브 어셈블러(130)가 비닝 수행부(140)에게 에지에 대한 정보와 커브에 대한 정보를 구분하여 전송할 수도 있다.
다시 도 2a를 참조하면, 할당부(142)는 제 1 그룹에 포함된 경로와 제 2 그룹에 포함된 경로를 구분하여 타일 비닝을 수행한다.
일 예로서, 경로가 제 1 그룹에 포함된 경로(에지)라고 가정하면, 할당부(142)는 프레임에 포함된 타일들 중에서 경로를 포함하는 타일을 선택한다. 그리고, 할당부(142)는 선택된 타일들 및 선택된 타일들 각각의 일 측 방향에 나열된 적어도 하나의 타일에 경로의 식별값을 할당한다. 도 3 내지 도 7을 참조하여, 경로가 에지인 경우에, 획득부(141) 및 할당부(142)가 동작하는 일 예를 후술한다.
다른 예로서, 경로가 제 2 그룹에 포함된 경로(커브)라고 가정하면, 할당부(142)는 프레임에 포함된 타일들 중에서 경로에 대응하는 외곽 삼각형을 포함하는 타일들을 선택한다. 그리고, 할당부(142)는 선택된 타일들 및 선택된 타일들 각각의 일 측 방향에 나열된 적어도 하나의 타일에 경로의 식별값을 할당한다. 도 8 내지 도 8를 참조하여, 경로가 커브인 경우에, 획득부(141) 및 할당부(142)가 동작하는 일 예를 후술한다.
도 3은 일 실시예에 따른 비닝 수행부가 수행하는 동작의 일 예를 나타낸 흐름도이다.
310 단계에서, 획득부(141)는 객체를 구성하는 경로에 대한 정보를 획득한다. 예를 들어, 획득부(141)는 프리미티브 어셈블러(130)로부터 에지에 대한 정보 또는 커브에 대한 정보를 획득할 수 있다. 또한, 도 3에는 도시되지 않았으나, 획득부(141)은 경로가 에지인지 또는 커브인지에 따라, 경로를 제 1 그룹 또는 제 2 그룹으로 분류할 수 있다.
320 단계에서, 할당부(142)는 프레임에 포함된 타일들 중에서 경로를 포함하는 타일들을 선택한다. 다시 말해, 할당부(142)는 프레임에 포함된 타일들 중에서 경로가 지나가는 타일들을 선택한다. 여기에서, 할당부(142)에 의하여 선택된 타일들에는 경로의 시작 지점을 포함하는 타일 및 경로의 종료 지점을 포함하는 타일이 포함된다. 이하, 도 4a 내지 도 5e를 참조하여, 할당부(142)가 프레임에 포함된 타일들 중에서 경로를 포함하는 타일을 선택하는 일 예를 설명한다.
도 4a 및 도 4b는 일 실시예에 따른 할당부가 프레임에 포함된 타일들 중 제 1 경로가 통과하는 타일을 선택하는 일 예를 설명하기 위한 도면들이다.
도 4a에는 제 1 경로(e0)가 도시되어 있다. 여기에서, 제 1 경로(e0)는 정점(P0)으로부터 정점(P1)까지 연결된 직선 경로이다. 제 1 경로(e0)의 좌측에서 제 1 경로(e0)를 본다고 가정하면, 제 1 경로(e0)는 반 시계 방향으로 회전하는 경로임을 알 수 있다.
도 4b에는 프레임(410)에 포함된 타일들 중 제 1 경로(e0)가 통과하는 타일들(420)이 도시되어 있다. 할당부(142)는 프레임(410)에 포함된 타일들 중 제 1 경로(e0)가 통과하는 타일들(420)을 선택한다. 할당부(142)가 프레임(410)에 포함된 타일들 중 제 1 경로(e0)가 통과하는 타일들(420)을 선택하는 일 예는 도 5a 내지 도 5e를 참조하여 설명한다.
도 5a 내지 도 5e는 일 실시예에 따른 할당부가 프레임에 포함된 타일들 중 경로가 통과하는 타일들을 선택하는 일 예 도면들이다.
할당부(142)는 프레임에 포함된 타일들의 일 측면과 만나는 경로상의 적어도 하나의 지점을 결정한다. 여기에서, 타일들의 일 측면은 타일들의 좌측, 우측, 상측 및 하측 중 어느 하나를 의미한다. 다시 말해, 할당부(142)는 프레임에 포함된 타일들의 일 측 외곽선과 경로가 만나는 지점을 결정한다.
도 5a를 참조하면, 정점(P0)으로부터 정점(P1)까지 연결된 제 1 경로(e0)가 도시되어 있다. 할당부(142)는 프레임에 포함된 타일들의 일 측면과 만나는 경로상의 지점을 결정한다. 예를 들어, 타일들의 일 측면을 우측 외곽선(510)이라고 가정하면, 할당부(142)는 제 1 경로(e0)가 우측 외곽선(510)과 만나는 지점(521)을 결정한다.
그리고, 할당부(142)는 결정된 지점(521)을 기준으로 경로를 가상으로 분할한다. 여기에서, 할당부(142)가 경로를 가상으로 분할한다는 것은, 경로를 실제로 분할하는 것이 아니라, 할당부(142)가 프레임에 포함된 타일들 중에서 경로가 통과하는 타일들을 정확하게 선택하기 위하여 경로의 중간 지점들을 계산하는 과정을 의미한다.
도 5b를 참조하면, 할당부(142)는 제 1 경로(e0)를 제 1 경로(e0)의 시작 정점(P0)으로부터 결정된 지점(521)까지의 제 1 서브 경로(e01)와 결정된 지점(521)으로부터 제 1 경로(e0)의 종료 정점(P1)까지의 제 2 서브 경로(e02)로 가상 분할한다.
그리고, 할당부(142)는 분할된 경로를 포함하는 타일들을 선택한다. 예를 들어, 할당부(142)는 분할된 경로를 대각선으로 하는 사각형을 구성하고, 구성된 사각형을 포함하는 타일들을 선택한다. 도 5b를 참조하면, 할당부(142)는 제 1 서브 경로(e01)를 대각선으로 하는 사각형을 구성한다. 그리고, 할당부(142)는 구성된 사각형을 포함하는 타일들(531)을 선택한다.
만약, 프레임에 포함된 타일들의 일 측면과 경로가 복수의 지점들에서 만나는 경우, 할당부(142)는 도 5a 내지 도 5b를 참조하여 상술한 과정을 반복한다.
도 5c를 참조하면, 할당부(142)는 제 1 경로(e0)가 우측 외곽선(510)과 만나는 지점(522)을 결정한다.
그리고, 할당부(142)는 결정된 지점(522)을 기준으로 경로를 가상 분할한다. 도 5d를 참조하면, 할당부(142)는 제 2 서브 경로(e02)를 제 2 서브 경로(e02)의 시작 정점(521)으로부터 결정된 지점(522)까지의 제 3 서브 경로(e03)와 결정된 지점(522)으로부터 제 2 서브 경로(e02)의 종료 정점(P1)까지의 제 4 서브 경로(e04)로 분할한다.
그리고, 할당부(142)는 분할된 경로를 대각선으로 하는 사각형을 구성한다. 그리고, 할당부(142)는 구성된 사각형을 포함하는 타일들을 선택한다. 도 5d를 참조하면, 할당부(142)는 제 3 서브 경로(e03)를 대각선으로 하는 사각형을 구성한다. 그리고, 할당부(142)는 구성된 사각형을 포함하는 타일들(532)을 선택한다.
프레임에 포함된 타일들의 일 측면과 경로가 만나는 지점이 더 이상 없는 경우, 할당부(142)는 제 1 경로(e0)가 분할된 나머지 서브 경로를 대각선으로 하는 사각형을 구성하고, 사각형에 포함된 타일들을 선택한다. 도 5e를 참조하면, 할당부(142)는 제 4 서브 경로(e04)를 대각선으로 하는 사각형을 구성한다. 그리고, 할당부(142)는 구성된 사각형을 포함하는 타일들(533)을 선택한다.
최종적으로, 할당부(142)는 선택한 타일들(531, 532, 533)을 조합함으로써, 프레임에 포함된 타일들 중에서 제 1 경로(e0)가 통과하는 타일들(531, 532, 533)을 결정할 수 있다.
도 5a 내지 도 5e를 참조하여 상술한 바와 같이, 할당부(142)는 경로를 적어도 하나의 서브 경로들로 분할하고, 서브 경로를 포함하는 타일들을 선택함으로써, 프레임에 포함된 타일들 중에서 제 1 경로(e0)가 통과하는 타일들(531, 532, 533)을 정확하게 선택할 수 있다.
다시 도 3을 참조하면, 330 단계에서, 할당부(142)는 선택된 타일들 및 선택된 타일들 각각의 일 측 방향에 나열된 적어도 하나의 타일에 경로의 식별 값을 할당한다. 다시 말해, 할당부(142)는 경로가 지나가는 타일들에 경로의 식별 값을 할당하고, 경로가 지나가는 타일들 각각의 일 측 방향에 나열된 타일에도 경로의 식별 값을 할당한다. 여기에서, 일 측 방향은 선택된 타일들(즉, 경로가 지나가는 타일들) 각각의 위치를 중심으로 좌측 방향, 우측 방향, 상측 방향, 하측 방향 중 어느 하나를 의미한다.
할당부(142)가 타일에 경로의 식별 값을 할당한다는 것은 타일의 Edge_List 또는 Curve_List를 생성하는 것을 의미한다. 예를 들어, 할당부(142)는, 도 4에 도시된 타일들(420) 별로, 타일에 제 1 경로(e0)가 통과한다는 정보를 Edge_List로 생성하고, 이를 비닝 수행부(140)에 포함된 메모리(미도시)에 저장한다. 예를 들어, Edge_List는 각각의 타일 별로 비트 스트림(Bitstream)의 형태로 저장될 수 있다. 또한, 할당부(142)는 도 4에 도시된 타일들(420)의 일 측 방향에 나열된 타일들에 제 1 경로(e0)에 대한 정보(예를 들어, 타일들(420)을 통과하는 제 1 경로(e0)의 명칭)를 포함하는 Edge_List를 생성하고, 이를 메모리(미도시)에 저장한다.
도 6은 일 실시예에 따른 할당부가 타일에 경로의 식별 값을 할당하는 일 규칙을 설명하기 위한 도면이다.
도 6을 참조하면, 타일 A는 경로(610)가 통과하는 타일을 의미하고, 타일 B는 경로(620)의 시작 정점을 포함하는 타일을 의미한다. 또한, 타일 C는 경로(630)의 종료 정점을 포함하는 타일을 의미한다.
할당부(142)는 프레임에 포함된 타일들 중에서 타일 A 내지 타일 C에 해당되는 타일들을 선택한다. 그리고, 할당부(142)는 타일 A 내지 타일 C에 경로(610, 620, 630)가 통과함을 의미하는 Edge_List를 생성한다. 또한, 할당부(142)는 타일 A 내지 타일 C의 일 측 방향에 나열된 타일들 각각에 대하여 Edge_List를 생성한다.
도 7은 일 실시예에 따른 할당부가 타일에 경로의 식별 값을 할당한 일 예를 나타내는 도면이다.
도 7에는 프레임(710)에 포함된 타일들 중에서 제 1 경로(e0)를 포함하는 타일들(720) 및 타일들(720) 각각의 일 측 방향에 나열된 타일들(730)에 제 1 경로(e0)의 식별 값이 할당된 일 예가 도시되어 있다. 다시 말해, 도 7에는 타일들(720, 730) 각각에 대하여 Edge_List가 생성된 일 예가 도시되어 있다. 타일들(720, 730) 각각의 Edge_List에는 제 1 경로의 명칭인 e0가 포함된다.
도 7에서 타일들(720) 각각의 일 측 방향은 타일들(720) 각각의 좌측 방향을 의미하는 것으로 도시되어 있다. 그러나, 일 측 방향은 상술한 좌측 방향뿐만 아니라, 우측 방향, 상측 방향 또는 하측 방향이 해당될 수 있음은 상술한 바와 같다.
일 실시예에 따른 비닝 수행부(140)는 타일(721)의 일 측 방향에 나열된 타일(731)의 및 타일(722)의 일 측 방향에 나열된 타일들(732)에 대해서 Edge_List를 생성한다. 따라서, 렌더링 장치(100)가 경로들 각각을 독립적으로 처리(즉, 경로들을 병렬적으로 처리)할 수 있는바, 렌더링 장치(100)가 동작하는데 소요되는 시간 및 비용(예를 들어, 전력)이 감소될 수 있다.
한편, 객체를 구성하는 경로는 에지 뿐만 아니라 커브도 해당된다. 다시 말해, 획득부(141)는 커브에 대한 정보를 획득하고, 할당부(142)는 프레임에 포함된 타일들 중에서 일부 타일들에 커브의 식별 값을 할당(즉, Curve_List를 생성)할 수 있다. 이하, 도 8 내지 도 9를 참조하여, 할당부(142)가 타일에 커브의 식별 값을 할당하는 일 예를 설명한다.
도 8은 일 실시예에 따른 할당부가 타일에 경로의 식별 값을 할당하는 다른 예를 나타낸 흐름도이다.
도 8의 2021 단계는 도 3의 310 단계가 수행된 이후에 수행되는 것을 전제한다.
2021 단계에서, 할당부(142)는 프레임에 포함된 타일들 중에서 경로에 대응하는 외곽 삼각형을 포함하는 타일들을 선택한다. 여기에서, 경로는 커브를 의미하고, 외곽 삼각형의 내부에 커브가 포함된다.
외곽 삼각형은 3 개의 에지들로 분할될 수 있다. 다시 말해, 외곽 삼각형은 꼭지점에 대응하는 정점들을 기준으로 3 개의 에지들로 분할 될 수 있다. 따라서, 할당부(142)는 프레임에 포함된 타일들 중에서 3 개의 에지들 각각을 포함하는 타일을 선택할 수 있다.
2033 단계에서, 할당부(142)는 선택된 타일들 각각에 경로의 식별 값을 할당한다. 또한, 2034 단계에서, 할당부(142)는 선택된 타일들 각각의 일 측 방향에 나열된 타일에 경로의 식별 값을 할당(Curve_List를 생성)한다. 여기에서, 일 측 방향은 우측 방향을 의미할 수 있으나, 이에 한정되지 않는다.
도 9는 일 실시예에 따른 할당부가 타일에 커브의 식별 값을 할당하는 일 예를 설명하기 위한 도면이다.
도 9를 참조하면, 프레임(3010)에는 경로(C0)가 도시되어 있다. 이때, 경로(C0)는 외곽 삼각형(3020) 내에 포함될 수 있다. 구체적으로, 경로(C0)의 시작 정점(P0)에서의 기울기에 대응하는 에지(e0)와 경로(C0)의 종료 정점(P2)에서의 기울기에 대응하는 에지(e1)이 교차하는 정점을 P1이라고 하면, 외곽 삼각형(3020)은 P0, P1 및 P2를 꼭지점으로 하는 삼각형이 될 수 있다. 또한, 외곽 삼각형(3020)은 에지 e0, 에지 e1 및 에지 e2로 구성된 삼각형이 될 수 있다.
할당부(142)는 프레임(3010)에 포함된 타일들 중에서 외곽 삼각형(3020)을 포함하는 타일들(3030)을 선택한다. 구체적으로, 할당부(142)는 프레임(3010)에 포함된 타일들 중에서 에지 e0를 포함하는 타일들, 에지 e1을 포함하는 타일들 및 에지 e2를 포함하는 타일들을 선택할 수 있다. 이때, 할당부(142)가 타일들(3030)를 선택하는 구체적인 방법은 도 4 내지 도 5를 참조하여 상술한 바와 같다.
할당부(142)는 선택된 타일들(3030) 각각에 경로의 식별 값을 할당한다. 예를 들어, 할당부(142)는 선택된 타일들(3030) 별로 Curve_List를 생성할 수 있다. 또한, 할당부(142)는 선택된 타일들(3030)의 일 측 방향(예를 들어, 우측 방향)에 나열된 타일들 각각에도 경로의 식별 값을 할당한다.
따라서, 경로가 커브(C0)인 경우, 비닝 수행부(140)는 커브(C0)를 둘러싸고 있는 외곽 삼각형(3020)을 이용하여 타일 비닝을 수행할 수 있다.
도 2 내지 도 9를 참조하여 상술한 바에 따르면, 비닝 수행부(140)는 객체를 구성하는 경로들의 종류에 따라 병렬적으로 타일 비닝을 수행할 수 있다. 다시 말해, 비닝 수행부(140)는 경로가 에지인지 또는 커브인지에 따라 Edge_List와 Curve_List를 각각 생성할 수 있다. 그리고, 후술될 바와 같이, 비닝 수행부(140)는 경로들의 종류(에지 또는 커브)에 따라 병렬적으로 타일의 초기 주회 횟수를 연산할 수 있다.
따라서, 렌더링 장치(100)가 렌더링을 수행하는 데 소요되는 시간이 감축될 뿐만 아니라 렌더링 장치(100)가 소비하는 전력의 양도 감소될 수 있다.
도 10은 일 실시예에 따른 비닝 수행부의 다른 예를 도시한 구성도이다.
도 10을 참조하면, 비닝 수행부(140)는 획득부(141), 할당부(142) 및 설정부(143)를 포함한다. 설정부(143)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
획득부(141) 및 할당부(142)가 동작하는 일 예는 도 2 내지 도 7을 참조하여 상술한 바와 같다. 따라서, 이하에서는 획득부(141) 및 할당부(142)에 대하여 구체적인 설명을 생략한다.
설정부(143)는 경로에 포함된 정점들 각각에 대응하는 좌표를 이용하여 프레임에 경계 박스(bounding box)를 설정한다. 여기에서, 경계 박스는 객체의 최 외곽 정점들을 이용하여 설정된 박스를 의미한다. 다시 말해, 설정부(143)는 객체가 완전히 포함될 수 있도록 경계 박스를 설정한다.
할당부(142)는 경계 박스 내에 포함된 타일에 경로의 식별 값을 할당한다. 다시 말해, 할당부(142)는 프레임에 포함된 타일들 중에서 경계 박스 내에 포함된 타일들에 대해서만 경로의 식별 값을 할당한다.
이하, 도 11 내지 도 12b를 참조하여, 설정부(143)가 경계 박스를 설정하는 일 예를 구체적으로 설명한다.
도 11은 일 실시예에 따른 비닝 수행부가 수행하는 동작의 다른 예를 나타낸 흐름도이다.
도 11의 910 단계 내지 920 단계는 도 3의 310 단계 내지 320 단계와 동일하다. 따라서, 이하에서는 910 단계 내지 920 단계에 대한 구체적인 설명은 생략한다.
930 단계에서, 설정부(143)는 경로에 포함된 정점들 각각에 대응하는 좌표를 이용하여 프레임에 경계 박스를 설정한다. 예를 들어, 경계 박스는 정점들의 좌표들 중 수평 방향 성분의 최대값 및 수직 방향 성분의 최대값으로 형성된 제 1 좌표와 수평 방향 성분의 최소값 및 수직 방향 성분의 최소값으로 형성된 제 2 좌표를 잇는 선을 대각선으로 하는 사각형이 될 수 있다.
940 단계에서, 할당부(142)는 경계 박스 내에 포함된 타일에 경로의 식별 값을 할당한다. 여기에서, 타일에 경로의 식별 값이 할당된다고 함은, 타일에 대하여 Edge_List 또는 Curve_List가 생성되는 것을 의미한다. 다시 말해, 할당부(142)는 도 7에 도시된 타일들(720, 730) 중에서 경계 박스 내에 포함된 타일들에 대해서만 Edge_List 또는 Curve_List를 생성한다.
도 12a 내지 도 12b는 일 실시예에 따른 설정부가 경계 박스를 설정하고, 할당부가 경로의 식별 값을 할당하는 일 예를 설명하기 위한 도면들이다.
도 12a에는 프레임(1010) 내에 포함된 삼각형 형상의 객체(1020)가 도시되어 있다. 객체(1020)는 제 1 경로(e0), 제 2 경로(e1) 및 제 3 경로(e2)로 구성된다고 가정한다. 후술될 주회 횟수 연산부(150)는 프레임(1010)에 포함된 픽셀들 각각에 대하여 주회 횟수를 연산한다. 따라서, 프레임(1010) 전체 영역 중에서 객체(1020)가 차지하는 영역이 작은 경우, 주회 횟수 연산부(150)가 프레임(1010)에 포함된 모든 픽셀들에 대하여 주회 횟수를 연산하지 않더라도 경로 렌더링을 수행할 수 있다. 다시 말해, 주회 횟수 연산부(150)는 객체(1020)로부터 멀리 떨어진 위치의 픽셀들에 대해서는 주회 횟수를 연산하지 않고, 객체(1020)와 인접한 위치의 픽셀들에 대해서만 주회 횟수를 연산하더라도 동일한 결과를 산출할 수 있다. 따라서, 프레임(1010)에 포함된 모든 픽셀들에 대해서 주회 횟수를 연산하는 경우보다 빠른 속도로 경로 렌더링이 수행될 수 있다.
설정부(143)는 경로에 포함된 정점들 각각에 대응하는 좌표를 이용하여 프레임(1010)에 경계 박스(1030)를 설정한다. 예를 들어, 설정부(143)는 객체(1020)에 포함된 정점 P0의 좌표 (x1, y1), 정점 P1의 좌표 (x2, y2) 및 정점 P2의 좌표 (x3, y3)를 이용하여 경계 박스(1030)를 설정할 수 있다.
설정부(143)는 정점 P0의 좌표 (x1, y1), 정점 P1의 좌표 (x2, y2) 및 정점 P2의 좌표 (x3, y3) 중 수평 방향 좌표 성분의 최대값 및 최소값, 수직 방향 좌표 성분의 최대값 및 최소값을 이용하여 프레임에 경계 박스를 설정할 수 있다. 먼저, 설정부(143)는 정점들의 x 좌표 성분들(x1, x2, x3) 중에서 최대값(x3)과 최소값(x1)을 선택한다. 그 후에, 설정부(143)는 정점들의 y 좌표 성분들(y1, y2, y3) 중에서 최대값(y2)과 최소값(y1)을 선택한다. 그 후에, 설정부(143)는 x 좌표 성분의 최대값과 y 좌표 성분의 최대값으로 제 1 좌표(x3, y2)를 형성한다. 또한, 설정부(143)는 x 좌표 성분의 최소값과 y 좌표 성분의 최소값으로 제 2 좌표(x1, y1)를 설정한다. 그 후에, 설정부(143)는 제 1 좌표(x3, y2)와 제 2 좌표(x1, y1)를 잇는 선을 대각선으로 하는 사각형을 경계 박스(1030)로 설정한다.
도 12b에는 경계 박스(1030)에 포함된 타일들에 대해서만 제 1 경로(e0)의 식별 값이 할당 된 예가 도시되어 있다. 도 10b에는 도시되지 않았으나, 제 2 경로(e1) 및 제 3 경로(e2)의 식별 값도 경계 박스(1030)에 포함된 타일들에 대해서만 할당될 수 있다.
도 7과 비교하면, 도 10b에는 제 1 경로(e0)를 포함하는 타일들(1040)의 좌측 방향에 나열된 타일들 중에서 경계 박스(1030) 내에 포함되지 않는 타일들(1050)에는 Edge_List가 생성되지 않았다. 다시 말해, 할당부(142)는 경계 박스(1030)에 포함된 타일들에 대해서만 Edge_List를 생성한다.
상술한 바에 따르면, 설정부(143)가 경로의 식별 값이 할당되어야 하는 최소의 타일들을 포함하는 경계 박스를 설정함으로써, 주회 횟수 연산부(150)는 최소 개수의 픽셀들에 대해서만 주회 횟수를 연산할 수 있다. 따라서, 렌더링 장치(100)는 경로 렌더링을 보다 빠르게 수행할 수 있다.
도 13은 일 실시예에 따른 비닝 수행부의 또 다른 예를 도시한 구성도이다.
도 13을 참조하면, 비닝 수행부(140)는 획득부(141), 할당부(142) 및 제거부(144)를 포함한다. 제거부(144)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
획득부(141) 및 할당부(142)가 동작하는 일 예는 도 2 내지 도 12를 참조하여 상술한 바와 같다. 따라서, 이하에서는 획득부(141) 및 할당부(142)에 대하여 구체적인 설명을 생략한다.
제거부(144)는 적어도 하나의 경로를 포함하는 타일들 사이의 위치 관계에 따라, 식별 값이 할당된 타일들 중 적어도 하나의 타일에 할당된 식별 값을 제거한다. 다시 말해, 제거부(144)는 할당부(142)에 의하여 이미 식별 값이 할당된 일부 타일의 식별 값을 제거한다.
이하, 도 14 내지 도 20을 참조하여, 제거부(144)가 타일에 할당된 식별 값을 제거하는 일 예를 설명한다.
도 14는 일 실시예에 따른 비닝 수행부가 수행하는 동작의 또 다른 예를 나타낸 흐름도이다.
도 14의 1210 단계 내지 1230 단계는 도 3의 310 단계 내지 330 단계와 동일하다. 따라서, 이하에서는 1210 단계 내지 1230 단계에 대한 구체적인 설명은 생략한다.
1240 단계에서, 제거부(144)는 적어도 하나의 경로를 포함하는 타일들 사이의 위치 관계에 따라 식별 값이 할당된 타일들 중 적어도 하나의 타일에 할당된 식별 값을 제거한다. 예를 들어, 제거부(144)는 경로가 지나가는 타일의 좌표를 이용하여, 식별 값이 제거될 타일을 결정할 수 있다.
도 15는 일 실시예에 따른 프레임에 포함된 타일들에 경로의 식별 값이 할당된 일 예가 도시된 도면이다.
도 15를 참조하면, 프레임(1310)에는 삼각형 형상의 객체(1320)가 도시되어 있다. 여기에서, 객체(1320)는 정점 P0에서 정점 P1까지의 에지인 제 1 경로(e0), 정점 P1에서 정점 P2까지의 에지인 제 2 경로(e1) 및 정점 P2에서 정점 P0까지의 에지인 제 3 경로(e2)로 구성된다고 가정한다.
할당부(142)는 제 1 경로(e0), 제 2 경로(e1) 및 제 3 경로(e2)를 포함하는 타일들(1330) 및 타일들(1330)의 좌측에 나열된 타일들(1340, 1350)에 경로의 식별 값을 할당한다. 다시 말해, 할당부(142)는 타일들(1340, 1350) 각각에 대하여 Edge_List를 생성한다. 따라서, 프레임(1310)에 포함된 일부 타일들에는 하나의 경로에 대한 정보가 포함된 Edge_List가 생성될 수 있고, 다른 일부 타일들에는 복수의 경로들에 대한 정보가 포함된 Edge_List가 생성될 수 있다.
한편, Edge_List가 생성된 타일들(1330, 1340, 1350) 중에서 일부 타일들(1350)은 불필요하게 Edge_List가 생성된 타일들 일 수 있다. 렌더링 장치(100)에 의하여 경로 렌더링이 수행되면, 객체(1320) 내의 픽셀들에 대해서만 컬러가 설정된다. 다시 말해, 타일들(1350)에 포함된 픽셀들에 대해서는 컬러가 설정되지 않는다. 따라서, 할당부(142)가 타일들(1350)에 대해서 Edge_List를 생성하거나, 주회 횟수 연산부(150)가 타일들(1350)에 대해서 주회 횟수를 연산하는 것은 불필요한 작업에 해당된다. 따라서, 제거부(144)가 타일들(1350)에 대하여 생성된 Edge_List를 제거하면, 렌더링 장치(100)의 효율이 더 높아질 수 있다.
제거부(144)는 경로(e0, e1, e2)를 포함하는 타일들(1330)의 좌표를 이용하여 타일들(1350)에 할당된 식별 값을 제거할 수 있다. 이하, 도 16 내지 도 20을 참조하여, 제거부(144)가 타일들(1350)에 할당된 식별 값을 제거하는 예들을 설명한다.
도 16은 일 실시예에 따른 제거부가 타일에 할당된 식별 값을 제거하는 일 예를 나타낸 흐름도이다.
도 16에 도시된 1241 단계 내지 1243 단계는 도 12의 1240 단계를 구체적으로 설명하기 위한 단계들이다. 따라서, 도 16의 1241 단계는 도 12의 1230 단계가 수행된 이후에 수행되는 것을 전제한다.
1241 단계에서, 제거부(144)는 프레임에 포함된 타일들 중에서 타일들 각각에 대응하는 좌표의 수직 방향 성분(vertical direction component)이 동일한 타일들을 선택한다. 즉, 제거부(144)에 의하여 선택된 타일들은 수직 방향 성분이 동일하고, 수평 방향 성분만 다른 타일들에 해당된다. 예를 들어, 제거부(144)는 프레임에 포함된 타일들 중에서 동일한 행에 포함된 타일들을 선택할 수 있다. 다만, 좌표 축이 설정되는 방향에 따라서 동일한 열에 포함된 타일들이 선택될 수도 있다.
한편, 타일의 좌표는 비닝 수행부(140)에 의하여 미리 설정될 수도 있다. 다시 말해, 프레임이 36개의 타일들로 분할된다고 가정하면, 비닝 수행부(140)는 소정의 타일을 기준으로 36개의 타일들 각각에 좌표를 설정할 수 있다.
1242 단계에서, 제거부(144)는 선택된 타일들에 포함된 적어도 하나의 경로를 포함하는 타일들의 수평 방향 성분(horizontal direction component)을 비교함으로써 최소 수평 방향 성분을 획득한다. 1241 단계에서 제거부(144)가 동일한 행에 포함된 타일들을 선택하였다고 가정하면, 제거부(144)는 동일한 행에 포함된 타일들 중에서 경로가 포함된 타일들의 수평 방향 성분을 검출할 수 있다. 그리고, 제거부(144)는 검출된 수평 방향 성분들을 비교함으로써 최소 수평 방향 성분을 획득할 수 있다.
이하, 도 17을 참조하여, 제거부(144)가 최소 수평 방향 성분을 획득하는 예를 구체적으로 설명한다.
도 17은 일 실시예에 따른 제거부가 최소 수평 방향 성분을 획득하는 일 예를 설명하기 위한 도면이다.
도 17에는 프레임(1510)에 포함된 객체(1520)의 일 예가 도시되어 있다. 여기에서, 객체(1520)는 정점 P0에서 정점 P1까지의 에지인 제 1 경로(e0), 정점 P1에서 정점 P2까지의 에지인 제 2 경로(e1), 정점 P2에서 정점 P3까지의 에지인 제 3 경로(e2) 및 정점 P3에서 정점 P0까지의 에지인 제 4 경로(e3)로 구성된다고 가정한다.
또한, 프레임(1510)에 포함된 타일들 각각에는 수평 방향 좌표 성분 및 수직 방향 좌표 성분이 미리 설정되어 있다고 가정한다. 도 17에 도시된 바와 같이, 프레임(1510)이 6*6 개의 타일들로 구성되어 있고, 비닝 수행부(140)가 수평 방향으로 0부터 5까지, 수직 방향으로 0부터 5까지 값들을 미리 설정하였다고 가정한다. 따라서, 프레임(1510)에 포함된 타일들에는 (0, 0) 내지 (5, 5)의 좌표가 설정될 수 있다.
또한, 도 17에 도시된 수평 방향과 수직 방향은 서로 반대로 설정될 수 있다. 다시 말해, 도 17의 수평 방향이 수직 방향으로, 도 17의 수직 방향이 수평 방향으로 설정될 수도 있다. 따라서, 일 실시예에 따른 수평 방향 및 수직 방향은 어느 방향을 기준으로 하는지에 따라 달라질 수 있다.
제거부(144)는 프레임(1510)에 포함된 타일들 중에서 좌표의 수직 방향 성분이 동일한 타일들을 선택한다. 먼저, 제거부(144)는 수직 방향 성분이 0인 타일들(1530)을 선택할 수 있다. 다시 말해, 제거부(144)는 타일 (0, 0), 타일 (1, 0), 타일 (2, 0), 타일 (3, 0) 및 타일 (4, 0)을 선택할 수 있다.
그리고, 제거부(144)는 선택된 타일들(1530) 중에서 경로(e0, e1, e2, e3)를 포함하는 타일들의 수평 방향 성분을 비교한다. 그리고, 제거부(144)는 최소 수평 방향 성분을 획득한다. 최초로, 제거부(144)는 타일들(1530) 중에서 제 1 경로(e0)를 포함하는 타일(4, 0)을 선택하고, 최소 수평 방향 성분(tile_min_x)을 4로 결정한다. 그 이후에, 제거부(144)는 타일들(1530) 중에서 제 2 경로(e1)를 포함하는 타일 (1, 0), 타일 (2, 0), 타일 (3, 0) 및 타일 (4, 0)을 이용하여 최소 수평 방향 성분(x0)을 갱신한다. 예를 들어, 제 2 경로(e1)를 포함하는 타일들의 수평 방향 성분 중 최소 값이 1 이므로, 제거부(144)는 최소 수평 방향 성분(x0)을 4에서 1로 갱신한다. 그 이후에, 제거부(144)는 타일들(1530) 중에서 제 3 경로(e2)를 포함하는 타일 (1, 0) 및 타일 (2, 0)를 이용하여 최소 수평 방향 성분(x0)을 갱신한다. 예를 들어, 제 3 경로(e2)를 포함하는 타일들의 수평 방향 성분 중 최소 값이 1 이므로, 제거부(144)는 최소 수평 방향 성분(x0)을 1로 유지한다. 최종적으로, 제거부(144)는 타일들(1530)의 최소 수평 방향 성분(x0)을 1로 결정한다.
상술한 바와 동일한 방식으로, 제거부(144)는 좌표의 수직 방향 성분이 동일한 타일들 각각에 대하여 최소 수평 방향 성분(x1, x2, x3, x4, x5)을 획득한다. 도 15에 도시된 바에 따르면, 최소 수평 방향 성분(x1)은 2로 결정되고, 최소 수평 방향 성분(x2)은 3으로 결정되고, 최소 수평 방향 성분(x3)은 2로 결정되고, 최소 수평 방향 성분(x4)은 1로 결정되고, 최소 수평 방향 성분(x5)은 1로 결정된다.
다시 도 16을 참조하면, 1243 단계에서, 제거부(144)는 선택된 타일들 중에서 최소 수평 방향 성분보다 작은 수평 방향 성분을 갖는 그 타일에 할당된 식별 값을 제거한다. 여기에서, 타일에 할당된 식별 값이 제거된다는 것은 타일에 대하여 생성된 Edge_List 또는 Curve_List가 삭제됨을 의미한다.
이하, 도 18a 내지 도 18b를 참조하여, 제거부(144)가 타일에 할당된 식별 값을 제거하는 예를 구체적으로 설명한다.
도 18a 내지 도 18b는 일 실시예에 따른 제거부가 타일에 할당된 식별 값을 제거하는 일 예를 설명하기 위한 도면들이다.
도 18a에는 프레임(1610)에 포함된 객체(1620)의 일 예가 도시되어 있다. 여기에서, 객체(1620)는 정점 P0에서 정점 P1까지의 에지인 제 1 경로(e0), 정점 P1에서 정점 P2까지의 에지인 제 2 경로(e1) 및 정점 P2에서 정점 P3까지의 에지인 제 3 경로(e2)로 구성된다고 가정한다. 또한, 도 18a에는 경로들(e0, e1, e2)을 포함하는 타일들(1630) 및 타일들(1630)의 좌측 방향에 나열된 타일들(1640, 1650)에 대하여 Edge_List가 생성된 예가 도시되어 있다.
제거부(144)는 좌표의 수직 방향 성분이 동일한 타일들에서 최소 수평 방향 성분보다 작은 수평 방향 성분을 갖는 타일에 할당된 식별 값을 제거(즉, Edge_List를 제거)한다.
다시 도 17을 참조하면, 타일들(1530)의 최소 수평 방향 성분(x0)은 1이므로, 제거부(144)는 1보다 작은 수평 방향 성분을 갖는 타일 (0, 0)에 할당된 식별 값을 제거한다. 또한, 수직 방향 성분이 1인 타일들의 최소 수평 방향 성분(x1)이 2이므로, 제거부(144)는 2보다 작은 수평 방향 성분을 갖는 타일 (0, 1), 타일 (1, 1)에 할당된 식별 값을 제거한다. 이와 동일한 방식으로, 제거부(144)는 타일 (0, 2), 타일 (1, 2), 타일 (2, 2), 타일 (0, 3), 타일 (1, 3), 타일 (0, 4) 및 타일 (0, 5)에 할당된 식별 값을 제거한다.
다시 도 18a를 참조하면, 제거부(144)는 도 15를 참조하여 상술한 바와 동일한 방식으로 타일들(1650)에 대하여 생성된 Edge_List를 제거한다. 구체적으로, 프레임(1610)의 첫 번째 행에 포함된 타일들의 최소 수평 방향 성분(x0)이 3 이므로, 제거부(144)는 타일 (0, 0), 타일 (0, 1), 타일 (0, 2)에 생성된 Edge_List를 제거한다. 또한, 프레임(1610)의 두 번째 행에 포함된 타일들의 최소 수평 방향 성분(x1)이 2 이므로, 제거부(144)는 타일 (1, 0), 타일 (1, 1)에 생성된 Edge_List를 제거한다. 이와 동일한 방식으로, 제거부(144)는 타일 (2, 0), 타일 (2, 1), 타일 (3, 0), 타일 (3, 1), 타일 (4, 0) 및 타일 (5, 0)에 생성된 Edge_List를 제거한다.
도 18b에는 제거부(144)가 타일에 할당된 경로의 식별 값을 제거한 결과가 도시되어 있다. 제거부(144)가 객체(1620)의 렌더링에 필요하지 않은 타일들에 할당된 식별 값을 제거함으로써, 객체(1620)의 렌더링에 요구되는 시간 및 전력의 소모가 감소될 수 있다.
한편, 제거부(144)가 타일에 할당된 식별 값을 제거하는 방법은 도 16 내지 도 18b를 참조하여 상술한 방법에 한정되지 않는다. 객체(1620)의 형상에 따라, 제거부(144)가 식별 값을 제거할 타일이 달라질 수 있다. 따라서, 제거부(144)는 좌표의 수평 방향 성분이 동일한 타일들의 최소 수직 방향 성분을 결정하고, 최소 수직 방향 성분에 기초하여 식별 값을 제거할 타일을 결정할 수 있다.
이하, 도 19 내지 도 20을 참조하여, 제거부(144)가 타일에 할당된 식별 값을 제거하는 다른 예를 설명한다.
도 19은 일 실시예에 따른 제거부가 타일에 할당된 식별 값을 제거하는 다른 예를 나타낸 흐름도이다.
도 19에 도시된 1244 단계 내지 1246 단계는 도 14의 1240 단계를 구체적으로 설명하기 위한 단계들이다. 따라서, 도 14의 1230 단계가 수행된 이후에 도 19의 1244 단계가 수행되는 것을 전제한다.
또한, 도 19에서는 도 16의 1243 단계가 수행된 이후에 1244 단계가 수행되는 것으로 도시되어 있으나, 이에 한정되지 않는다. 다시 말해, 도 16에 도시된 단계들이 수행됨이 없이, 도 14의 1230 단계가 수행된 이후에 바로 도 19에 도시된 1244 단계 내지 1246 단계가 수행될 수도 있다.
1244 단계에서, 제거부(144)는 프레임에 포함된 타일들 중에서 타일들 각각에 대응하는 좌표의 수평 방향 성분이 동일한 타일들을 선택한다. 즉, 제거부(144)에 의하여 선택된 타일들은 수평 방향 성분이 동일하고, 수직 방향 성분만 다른 타일들에 해당된다. 예를 들어, 제거부(144)는 프레임에 포함된 타일들 중에서 동일한 열에 포함된 타일들을 선택할 수 있다. 다만, 좌표 축이 설정되는 방향에 따라서 동일한 행에 포함된 타일들이 선택될 수도 있다.
한편, 타일의 좌표는 비닝 수행부(140)에 의하여 미리 설정될 수도 있다. 다시 말해, 프레임이 36개의 타일들로 분할된다고 가정하면, 비닝 수행부(140)는 소정의 타일을 기준으로 36개의 타일들 각각에 좌표를 설정할 수 있다.
1245 단계에서, 제거부(144)는 선택된 타일들에 포함된 적어도 하나의 경로를 포함하는 타일들의 수직 방향 성분을 비교함으로써 최소 수직 방향 성분 및 최대 수직 방향 성분을 획득한다. 1244 단계에서 제거부(144)가 동일한 열에 포함된 타일들을 선택하였다고 가정하면, 제거부(144)는 동일한 열에 포함된 타일들 중에서 경로가 포함된 타일들의 수직 방향 성분을 검출할 수 있다. 그리고, 제거부(144)는 검출된 수직 방향 성분들을 비교함으로써 최소 수직 방향 성분 및 최대 수직 방향 성분을 획득할 수 있다.
1246 단계에서, 제거부(144)는 선택된 타일들 중에서 최소 수직 방향 성분보다 작은 수직 방향 성분을 갖는 타일에 할당된 식별 값을 제거한다. 또한, 제거부(144)는 선택된 타일들 중에서 최대 수직 방향 성분보다 큰 수직 방향 성분을 갖는 타일에 할당된 식별 값을 제거한다. 여기에서, 타일에 할당된 식별 값이 제거된다는 것은 타일에 대하여 생성된 Edge_List 또는 Curve_List가 삭제됨을 의미한다.
이하, 도 20을 참조하여, 제거부(144)가 타일에 할당된 식별 값을 제거하는 구체적으로 설명한다.
도 20은 일 실시예에 따른 제거부가 타일에 할당된 식별 값을 제거하는 다른 예를 설명하기 위한 도면들이다.
도 20에는 프레임(1810)에 포함된 객체(1820)의 일 예가 도시되어 있다. 여기에서, 객체(1820)는 정점 P0, P1, P2, P3, P4, P5를 순서대로 잇는 에지들로 구성된다고 가정한다. 또한, 도 20에는 도시되지 않았으나, 프레임(1810)에 포함된 타일들 각각에 대하여 경로의 식별 값이 할당(즉, Edge_List가 생성)되었음을 가정한다.
또한, 프레임(1810)에 포함된 타일들 각각에는 수평 방향 좌표 성분 및 수직 방향 좌표 성분이 미리 설정되어 있다고 가정한다. 도 20에 도시된 바와 같이, 프레임(1810)이 6*6 개의 타일들로 구성되어 있고, 비닝 수행부(140)가 수평 방향으로 0부터 5까지, 수직 방향으로 0부터 5까지 값들을 미리 설정하였다고 가정한다. 따라서, 프레임(1810)에 포함된 타일들에는 (0, 0) 내지 (5, 5)의 좌표가 설정될 수 있다.
또한, 도 20에 도시된 수평 방향과 수직 방향은 서로 반대로 설정될 수 있다. 다시 말해, 도 20의 수평 방향이 수직 방향으로, 도 20의 수직 방향이 수평 방향으로 설정될 수도 있다. 따라서, 일 실시예에 따른 수평 방향 및 수직 방향은 어느 방향을 기준으로 하는지에 따라 달라질 수 있다.
도 16 내지 도 18b를 참조하여 상술한 바에 따르면, 제거부(144)는 프레임(1810)에 포함된 타일들 중에서 일부 타일들(1830)에 할당된 식별 값을 제거할 수 있다. 다시 말해, 제거부(144)는 타일들의 좌표 성분을 이용하여 최소 수평 방향 성분들(tile_min_x list)을 획득하고, 최소 수평 방향 성분을 이용하여 타일들(1830)에 할당된 식별 값을 제거할 수 있다.
제거부(144)는 프레임(1810)에 포함된 타일들 중에서 좌표의 수평 방향 성분이 동일한 타일들을 선택한다. 제거부(144)는 수평 방향 성분이 1인 타일들(1840)을 선택할 수 있다. 다시 말해, 제거부(144)는 타일 (0, 1), 타일 (1, 1), 타일 (2, 1), 타일 (3, 1) 및 타일 (4, 1)을 선택할 수 있다.
그리고, 제거부(144)는 선택된 타일들(1840) 중에서 경로(e0, e1, e2, e3)를 포함하는 타일들의 수직 방향 성분을 비교한다. 그리고, 제거부(144)는 최소 수직 방향 성분 및 최대 수직 방향 성분을 획득한다. 예를 들어, 제거부(144)는 타일들(1840)의 최소 수직 방향 성분을 0, 최대 수직 방향 성분을 5로 결정할 수 있다. 여기에서, 제거부(144)가 최소 수직 방향 성분 및 최대 수직 방향 성분을 획득하는 방법은 도 17을 참조하여 상술한 방법이 채용될 수 있다.
상술한 바와 동일한 방식으로, 제거부(144)는 좌표의 수직 방향 성분이 동일한 타일들 각각에 대하여 최소 수직 방향 성분 및 최대 수직 방향 성분을 획득한다. 도 20에 도시된 바에 따르면, 세 번째 열에 대한 최소 수직 방향 성분은 0, 최대 수직 방향 성분은 4로 결정될 수 있다. 또한, 네 번째 열에 대한 최소 수직 방향 성분은 1, 최대 수직 방향 성분은 4로 결정되고, 다섯 번째 열에 대한 최소 수직 방향 성분은 0, 최대 수직 방향 성분은 5로 결정되고, 여섯 번재 열에 대한 최소 수직 방향 성분은 4, 최대 수직 방향 성분은 5로 결정될 수 있다.
제거부(144)는 좌표의 수평 방향 성분이 동일한 타일들에서 최소 수직 방향 성분보다 작은 수직 방향 성분을 갖는 타일에 할당된 식별 값을 제거(즉, Edge_List를 제거)한다. 또한, 제거부(144)는 좌표의 수평 방향 성분이 동일한 타일들에서 최대 수직 방향 성분보다 큰 수직 방향 성분을 갖는 타일에 할당된 식별 값을 제거(즉, Edge_List를 제거)한다. 예를 들어, 타일들(1850)의 최소 수직 방향 성분은 1이므로, 제거부(144)는 1보다 작은 수직 방향 성분을 갖는 타일 (0, 3)에 할당된 식별 값을 제거한다. 또한, 타일들(1850)의 최대 수직 방향 성분은 4이므로, 제거부(144)는 4보다 큰 수직 방향 성분을 갖는 타일 (5, 3)에 할당된 식별 값을 제거한다.
상술된 방식에 따르면, 제거부(144)는 타일 (5, 2), 타일 (0, 3) 및 타일 (5, 3)에 할당된 식별 값을 제거할 수 있다. 따라서, 렌더링 장치(100)는 객체(1820)의 렌더링을 보다 효율적으로 수행할 수 있다.
한편, 설정부(143)가 프레임에 경계 박스를 설정할 수 있음은 도 10 내지 도 12를 참조하여 상술한 바와 같다. 만약 프레임에 경계 박스가 설정되어 있는 경우, 제거부(144)는 경계 박스 내에 포함된 타일들에 대해서만 식별 값을 제거할 수도 있다.
도 21a 내지 도 21b는 일 실시예에 따른 프레임에 경계 박스가 설정된 경우에 제거부가 동작하는 일 예를 설명하기 위한 도면들이다.
도 21a를 참조하면, 프레임(1910)에 객체(1920)가 도시되어 있고, 객체(1920)의 외곽에는 경계 박스(1930)가 설정되어 있다. 설정부(143)는 객체(1920)에 포함된 정점들(P0, P1, P2) 에 대응하는 좌표를 이용하여 프레임(1910)에 경계 박스(1930)를 설정할 수 있다. 또한, 할당부(142)는 프레임(1910)에 포함된 타일들 중에서 경계 박스(1930) 내에 포함된 타일들에 대해서만 경로의 식별 값을 할당 할 수 있다. 도 21a에는 경계 박스(1930) 내에 포함된 타일들에 대해서 Edge_List가 생성된 예가 도시되어 있다.
제거부(144)는 식별 값이 할당된 타일들 중 일부 타일에 할당된 식별 값을 제거할 수 있다. 예를 들어, 제거부(144)는 도 13 내지 도 20을 참조하여 상술한 방법에 따라 최소 수평 방향 성분들(tile_min_x list)를 획득하고, 최소 수평 방향 성분을 이용하여 불필요하게 할당된 식별 값을 제거한다.
도 21b를 참조하면, 제거부(144)가 일부 타일에 할당된 식별 값을 제거한 결과가 도시되어 있다. 도 21a와 도 21b를 비교하면, 제거부(144)는 타일들(1940)에 할당된 식별 값을 제거할 수 있다. 이때, 제거부(144)가 타일들(1940)에 할당된 식별 값을 제거하는 구체적인 방법은 도 13 내지 도 20을 참조하여 상술한 바와 같다. 따라서, 이하에서는 구체적인 설명을 생략한다.
도 22는 일 실시예에 따른 비닝 수행부의 또 다른 예를 도시한 구성도이다.
도 22를 참조하면, 비닝 수행부(140)는 획득부(141), 할당부(142) 및 연산부(145)를 포함한다. 연산부(145)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
획득부(141) 및 할당부(142)가 동작하는 일 예는 도 2 내지 도 21을 참조하여 상술한 바와 같다. 따라서, 이하에서는 획득부(141) 및 할당부(142)에 대하여 구체적인 설명을 생략한다.
연산부(145)는 경로를 포함하는 타일들 중에서 선택된 제 3 타일의 일 측 방향에 나열된 적어도 하나의 타일의 초기 주회 횟수(initial winding number)를 연산한다. 여기에서, 제 3 타일은 경로를 포함하는 타일들 중에서 경로의 시작 정점을 포함하는 제 1 타일 및 경로의 종료 정점을 포함하는 제 2 타일이 제외된 타일을 의미한다.
타일에 대한 초기 주회 횟수는 그 타일에 경로의 식별 값이 할당(타일의 Edge_List 또는 Curve_List가 생성)되어야 연산될 수 있다. 그러나, 일반적으로는 경로의 시작 정점이 포함된 타일(도 7의 721)의 일 측 방향에 나열된 타일(도 7의 731)의 및 경로의 종료 정점이 포함된 타일(도 7의 722)의 일 측 방향에 나열된 타일들(도 7의 732)에 대해서는 식별 값이 할당되지 않는다.
객체가 복수의 경로들이 조합된 폐 다각형이고 제 1 경로와 제 2 경로가 연결된 경우, 제 1 경로의 종료 정점은 제 2 경로의 시작 정점이 된다. 즉, 제 1 경로의 종료 정점을 포함하는 타일과 제 2 경로의 시작 정점을 포함하는 타일은 동일하다. 따라서, 일반적으로는, 타일들(도 7의 732)의 초기 주회 횟수는 제 1 경로뿐만 아니라 제 2 경로에 대한 처리가 종료된 이후에야 연산이 가능하다. 따라서, 경로들 각각이 독립적으로 처리되지 못하고, 경로의 처리에 있어서 종속성(dependency)이 발생되는 문제가 발생될 수 있다.
일 실시예에 따른 할당부(142)는 타일(도 7의 721)의 일 측 방향에 나열된 타일(도 7의 731)의 및 타일(도 7의 722)의 일 측 방향에 나열된 타일들(도 7의 732)에 대해서도 경로의 식별 값을 할당한다. 따라서, 연산부(145)는 경로들 각각에 대하여 독립적으로 타일에 대한 초기 주회 횟수를 연산할 수 있다. 즉, 렌더링 장치(100)가 경로들 각각을 독립적으로 처리(즉, 경로들을 병렬적으로 처리)할 수 있는바, 렌더링 장치(100)가 동작하는데 소요되는 시간 및 비용(예를 들어, 전력)이 감소될 수 있다.
이하, 도 23 내지 도 30b를 참조하여, 연산부(145)가 타일의 초기 주회 횟수를 연산하는 일 예를 설명한다.
도 23은 일 실시예에 따른 비닝 수행부가 수행하는 동작의 또 다른 예를 나타낸 흐름도이다.
도 23의 2010 단계 내지 2030 단계는 도 3의 310 단계 내지 330 단계와 동일하다. 따라서, 이하에서는 2010 단계 내지 2030 단계에 대한 구체적인 설명은 생략한다.
2040 단계에서, 연산부(145)는 적어도 하나의 경로를 포함하는 타일들 중에서 선택된 제 3 타일의 일 측 방향에 나열된 타일의 초기 주회 횟수를 연산한다. 예를 들어, 연산부(145)는 경로가 제 3 타일을 통과하는 형태에 기초하여 제 3 타일의 일 측 방향에 나열된 타일의 초기 주회 횟수를 연산할 수 있다. 구체적으로, 연산부(145)는 경로가 제 3 타일을 통과하는 방향에 기초하여 초기 주회 횟수를 연산할 수 있다.
여기에서, 초기 주회 횟수는 주회 횟수 연산부(150)가 타일의 주회 횟수를 연산하는데 이용되는 초기 값을 의미한다. 이하, 도 24a 내지 도 24b를 참조하여, 주회 횟수에 대하여 상세하게 설명한다.
도 24a 및 도 24b는 일 실시예에 따른 주회 횟수를 설명하기 위한 도면들이다.
도 24a 및 도 24b에는 프레임(2210)에 포함된 픽셀들 중 어느 하나의 픽셀(P)에 대응하는 주회 횟수를 설명하기 위한 일 예가 도시되어 있다. 도 24a에서는 설명의 편의를 위하여, 픽셀(P)을 일 측 방향(예를 들어, 우측 방향)을 주시하고 있는 사람의 형상으로 도시하였다.
도 24a를 참조하면, 픽셀(P)의 주변을 따라 경로(2230)가 도시되어 있고, 경로(2230)는 폐경로인 것으로 도시되어 있다. 도 24a에는 픽셀(P)의 주회 횟수가 픽셀(P)의 우측에 존재하는 경로(2230)상의 정점들(2231, 2232, 2233, 2234) 기초하여 연산되는 것으로 도시되어 있으나, 반드시 우측으로 한정되지 않는다. 또한, 이하에서, 픽셀(P)의 우측은 픽셀(P)에서 우측 수평 방향으로 그어진 가상의 반직선(2220) 상의 정점들을 의미한다.
픽셀(P)에서 우측 수평 방향으로 가상의 선(2220)을 도시하면, 가상의 반직선(2220)과 경로(2230)는 총 4개의 정점들(2231, 2232, 2233, 2234)에서 교차된다. 다시 말해, 경로(2230)는 4개의 정점들(231, 232, 233, 234)를 포함하도록 그려진다. 따라서, 픽셀(P)의 주회 횟수는 4개의 정점들(2231, 2232, 2233, 2234) 각각에서의 경로가 그려지는 방향에 기초하여 결정될 수 있다.
구체적으로, 제 1 정점(2231)에서 경로(2230)가 그려지는 방향은 반시계 방향(즉, 경로(2230)가 아래에서 위로 그려짐)에 해당된다. 따라서, 1차적으로 픽셀(P)의 주회 횟수는 -1이 된다. 그리고, 제 2 정점(2232)에서 경로(2230)가 그려지는 방향은 시계 방향(즉, 경로(2230)가 위에서 아래로 그려짐)에 해당된다. 따라서, 2차적으로 픽셀(P)의 주회 횟수는 -1 + 1 = 0으로 연산된다. 그리고, 제 3 정점(2233)에서 경로(2230)가 그려지는 방향은 반시계 방향에 해당된다. 따라서, 3차적으로 픽셀(P)의 주회 횟수는 -1 + 1 - 1 = -1로 연산된다. 그리고, 제 4 정점(2234)에서 경로(2230)가 그려지는 방향은 반시계 방향에 해당된다. 따라서, 최종적으로 픽셀(P)의 주회 횟수는 -1 + 1 - 1 - 1 = -2로 연산된다.
도 24b를 참조하면, 픽셀(P)의 주변을 따라 5개의 경로들이 위치하고, 경로들은 별 모양의 객체(2240)를 구성한다. 구체적으로, 정점 1로부터 정점 2까지의 에지(e0), 정점 2로부터 정점 3까지의 에지(e1), 정점 3으로부터 정점 4까지의 에지(e2), 정점 4부터 정점 5까지의 에지(e3) 및 정점 5로부터 정점 1까지의 에지(e4)가 조합되어 별 모양의 객체(2240)가 구성되어 있다.
도 24a를 참조하여 상술한 바와 같이, 도 24b에 도시된 픽셀(P)의 주회 횟수는 픽셀(P)의 우측 수평 방향으로 그은 가상의 선(2250)과 경로들이 교차하는 정점들(2261, 2262) 각각에서의 경로가 그려지는 방향에 기초하여 연산될 수 있다.
따라서, 경로들에 의하여 구분된 영역들(2271, 2272, 2273, 2274, 2275) 내의 픽셀들의 주회 횟수는 +1, 영역(2276) 내의 픽셀들의 주회 횟수는 +2로 연산된다. 또한, 프레임(2210)에 포함된 픽셀들 중 상술된 영역들(2271 내지 2276)에 포함되지 않은 픽셀들(즉, 객체(240)의 내부에 포함되지 않는 픽셀들)의 주회 횟수는 0으로 연산된다.
도 24a 및 도 24b를 참조하여 상술한 바에 따르면, 픽셀(P)의 주회 횟수는 픽셀(P)의 우측에 위치한 경로를 고려하여 연산되는 것으로 기재하였으나, 이에 한정되지 않는다. 다시 말해, 주회 횟수 연산부(150)는 픽셀(P)의 위치를 중심으로 좌측, 우측, 상측 및 하측 중 어느 하나에 위치한 경로를 고려하여 픽셀(P)의 주회 횟수를 연산할 수 있다. 이때, 주회 횟수 연산부(150)는 스텐실 버퍼를 이용하지 않고 픽셀(P)의 주회 횟수를 연산할 수 있다.
또한, 일 실시예에 따른 주회 횟수 연산부(150)는 복수의 스레드(thread)들을 이용하여 주회 횟수를 연산한다. 단일 스레드는 단일 픽셀의 주회 횟수가 연산되는데 이용될 수 있다. 이때, 복수의 스레드들은 병렬적으로 일 처리가 가능하므로, 주회 횟수 연산부(150)는 복수의 스레드들을 이용하여 복수의 픽셀들 각각에 대한 주회 횟수를 동시에 연산할 수 있다. 따라서, 렌더링 장치(100)는 고속으로 경로 렌더링을 수행할 수 있다.
도 25는 일 실시예에 따른 할당부가 타일에 경로의 식별 값을 할당하고, 연산부가 타일의 초기 주회 횟수를 연산하는 일 예를 나타낸 흐름도이다.
도 25에 도시된 2031 단계 내지 2042 단계는 도 23의 2030 단계 및 2040 단계를 구체적으로 설명하기 위한 단계들이다. 따라서, 도 25의 2031 단계는 도 23의 2020 단계가 수행된 이후에 수행되는 것을 전제한다.
2031 단계에서, 할당부(142)는 선택된 타일들 각각에 경로의 식별 값을 할당한다. 다시 말해, 할당부(142)는 경로가 지나가는 타일들 각각에 경로의 식별 값을 할당(즉, Edge_List 또는 Curve_List를 생성)한다.
2032 단계에서, 할당부(142)는 선택된 타일들 각각의 좌측 방향에 나열된 타일에 경로의 식별 값을 할당한다. 다시 말해, 할당부(142)는 경로가 지나가는 타일들 각각의 좌측 방향에 나열된 타일에 경로의 식별 값을 할당한다.
2041 단계에서, 연산부(145)는 선택된 타일들 중에서 경로의 시작 정점이 포함된 타일 및 경로의 종료 정점이 포함된 타일을 제외함으로써 제 3 타일을 선택한다. 예를 들어, 경로가 타일 X, 타일 Y, 타일 Z 및 타일 W에 걸쳐서 존재하고, 상기 경로가 타일 X에 포함된 정점 P0로부터 타일 W에 포함된 정점 P1까지의 에지라고 가정하면, 연산부(145)는 타일 Y 및 타일 Z를 제 3 타일로 결정한다.
2042 단계에서, 연산부(145)는 제 3 타일의 좌측 방향에 나열된 타일의 초기 주회 횟수를 연산한다. 앞의 예에서, 연산부(145)는 타일 Y의 좌측 방향에 나열된 타일 및 타일 Z의 좌측 방향에 나열된 타일의 주회 횟수를 연산한다. 한편, 연산부(145)가 제 3 타일의 좌측 방향에 나열된 타일의 초기 주회 횟수를 연산하는 것으로 설명하였으나, 이에 한정되지 않는다. 다시 말해, 연산부(145)가 프레임에 포함된 모든 타일들에 대하여 동일한 방향으로 주회 횟수를 연산한다면, 그 방향이 어느 방향이든 무방하다.
연산부(145)는 경로가 제 3 타일을 통과하는 방향에 따라 소정의 값을 증산 또는 감산함으로써, 제 3 타일의 좌측 방향에 나열된 타일의 초기 횟수를 연산할 수 있다. 또한, 제 3 타일에는 경로의 시작 정점이 포함된 타일 및 경로의 종료 정점이 포함된 타일이 제외된다. 따라서, 경로가 통과하는 타일(앞의 예에서, 타일 Y 및 타일 Z)의 좌측 방향에 나열된 타일에는 Edge_List가 생성될 뿐만 아니라 초기 주회 횟수도 연산된다. 한편, 경로의 시작 정점이 포함된 타일(앞의 예에서, 타일 X)의 좌측 방향에 나열된 타일에는 Edge_List 만 생성된다. 또한, 경로의 종료 정점이 포함된 타일(앞의 예에서, 타일 W)의 좌측 방향에 나열된 타일에도 Edge_List 만 생성된다. 이하, 도 26를 참조하여 상술한 내용을 구체적으로 설명한다.
도 26은 할당부가 타일에 경로의 식별 값을 할당하고, 연산부가 타일의 초기 주회 횟수를 연산하는 일 예를 설명하기 위한 도면이다.
연산부(145)는 경로의 진행 방향에 대응하는 소정의 규칙에 따라 타일의 초기 주회 횟수를 연산할 수 있다.
일 예로서, 연산부(145)는 경로가 타일의 마주보는 두 경계선을 시계 방향으로 통과하는 경우에 소정의 값을 증산함으로써 초기 주회 횟수를 연산하고, 경로가 타일의 마주보는 두 경계선을 반시계 방향으로 통과하는 경우에 소정의 값을 감산함으로써 초기 주회 횟수를 연산할 수 있다.
다른 예로서, 연산부(145)는 경로가 타일의 마주보는 두 경계선을 시계 방향으로 통과하는 경우에 소정의 값을 감산함으로써 초기 주회 횟수를 연산하고, 경로가 타일의 마주보는 두 경계선을 반시계 방향으로 통과하는 경우에 소정의 값을 증산함으로써 초기 주회 횟수를 연산할 수 있다. 여기에서, 소정의 값은 1이 될 수 있으나, 이에 제한되지 않는다. 다시 말해, 소정의 값은, 경로의 진행 방향에 따라 미리 정해진 수라면, 제한 없이 해당될 수 있다.
도 26을 참조하면, 경로(2410)는 타일 A를 위에서 아래로 통과한다. 다시 말해, 경로(2410)는 타일 A를 시계 방향으로 통과한다. 연산부(145)는 경로(2410)가 타일 A를 시계 방향으로 통과함을 인식하고, 타일 A의 좌측에 나열된 타일들의 초기 주회 횟수를 +1로 결정한다. 또한, 할당부(142)는 타일 A 및 타일 A의 좌측에 나열된 타일들에 경로(2410)의 식별 값을 할당(Edge_List를 생성)한다.
한편, 경로(2420)는 타일 B를 아래에서 위로 통과한다. 다시 말해, 경로(2420)는 타일 B를 반시계 방향으로 통과한다. 연산부(145)는 경로(2420)가 타일 B를 반시계 방향으로 통과함을 인식하고, 타일 B의 좌측에 나열된 타일들의 초기 주회 횟수를 -1로 결정한다. 또한, 할당부(142)는 타일 B 및 타일 B의 좌측에 나열된 타일들에 경로(2420)의 식별 값을 할당한다.
한편, 경로(2430, 2440)는 타일 C를 통과하지 않는다. 구체적으로, 경로(2430)는 타일 C에 포함된 정점에서 시작되는 경로이고, 경로(2440)는 타일 C에 포함된 정점에서 종료되는 경로이다. 따라서, 연산부(145)는 타일 C의 좌측에 나열된 타일들에 대한 초기 주회 횟수를 연산하지 않는다. 다만, 할당부(142)는 타일 C 및 타일 C의 좌측에 나열된 타일들에 경로(2430, 2440)의 식별 값을 할당한다.
도 26에는 타일 A, 타일 B 및 타일 C에 하나의 경로만 포함된 것을 가정하여 설명하였다. 만약, 타일 A, 타일 B 및 타일 C에 복수의 경로들이 포함된 경우, 연산부(145) 및 할당부(142)는 각각의 경로에 대하여 개별적으로 상술한 방법을 수행한다. 예를 들어, 타일 A를 시계 방향으로 통과하는 2개의 경로들이 존재한다면, 연산부(145)는 타일 A의 좌측에 나열된 타일들의 초기 주회 횟수를 +2로 결정한다. 또한, 할당부(142)도 타일 A 및 타일 A의 좌측에 나열된 타일들에 2개의 경로들 모두의 식별 값을 할당한다.
이하, 도 27a 내지 도 27c를 참조하여 연산부(145)가 타일의 초기 주회 횟수를 연산하는 예를 구체적으로 설명한다.
도 27a 내지 도 27c는 연산부가 초기 주회 횟수를 부여하는 규칙의 일 예를 나타내는 도면들이다.
도 27a는 경로(2511)가 타일(2521)의 마주보는 두 경계선을 시계 방향으로(즉, 위에서 아래로) 통과하는 경우를 나타내고, 도 27b는 경로(2512)가 타일(2522)의 마주보는 두 경계선을 반시계 방향으로(즉, 아래에서 위로) 통과하는 경우를 나타낸다. 도 27c는 경로(2513)가 타일(2523)의 일 경계선으로 입장하였다가 퇴장하는 경우를 나타낸다.
도 27a 내지 도 27c에 도시된 타일(2521, 2522, 2523)은 2 이상의 타일들이 결합된 타일이 될 수도 있다. 예를 들어, 경로가 통과하는 타일들이 수평 방향으로 2 이상 연속되는 경우, 도 27a 내지 도 27c에 도시된 하나의 타일(2521, 2522, 2523)로 간주될 수 있다.
도 27a를 참조하면, 경로(2511)가 타일(2521)의 마주보는 두 경계선을 시계 방향으로(즉, 위에서 아래로) 통과하는 경우, 연산부(145)는 타일(2521)의 좌측에 위치하는 적어도 하나의 타일(2531)에 +1을 초기 주회 횟수로 부여한다. 즉, 연산부(145)는 타일(2521)의 좌측에 위치하는 적어도 하나의 타일(2531)의 초기 주회 횟수(WNinit)에서 1을 증가시킨다.
도 27b를 참조하면, 경로(2512)가 타일(2522)의 마주보는 두 경계선을 반시계 방향으로(즉, 아래에서 위로) 통과하는 경우, 연산부(145)는 타일(2522)의 좌측에 위치하는 적어도 하나의 타일(2532)에 -1을 초기 주회 횟수로 부여한다. 즉, 연산부(145)는 타일(2522)의 좌측에 위치하는 적어도 하나의 타일(2532)의 초기 주회 횟수(WNinit)에서 1을 감소시킨다.
도 27c를 참조하면, 경로(2513)가 타일(2523)의 일 경계선으로 입장하였다가 퇴장하는 경우, 연산부(145)는 타일(2523)의 좌측에 위치하는 적어도 하나의 타일(2533)에 0을 초기 주회 횟수로 부여한다. 즉, 연산부(145)는 타일(2523)의 좌측에 위치하는 적어도 하나의 타일(2533)의 초기 주회 횟수(WNinit)에 아무런 연산도 수행하지 않는다.
도 27a 내지 도 27c는 경로가 타일을 시계 방향으로 통과하는 경우에 연산부(145)가 +1을 초기 주회 횟수로 부여(초기 주회 횟수에 1을 증가)하고, 반시계 방향으로 통과하는 경우에 연산부(145)가 -1을 초기 주회 횟수로 부여(초기 주회 횟수에 1을 감소)하는 것으로 설명하였으나, 이에 한정되지 않는다. 일 예로서, 경로가 타일을 시계 방향으로 통과하는 경우에 연산부(145)가 -1을 초기 주회 횟수로 부여하고, 반시계 방향으로 통과하는 경우에 연산부(145)가 +1을 초기 주회 횟수로 부여할 수도 있다. 다른 예로서, 경로가 타일을 시계 방향으로 통과하는 경우에 연산부(145)가 +0.5를 초기 주회 횟수로 부여(초기 주회 횟수에 0.5를 증가)하고, 반시계 방향으로 통과하는 경우에 연산부(145)가 -0.5를 초기 주회 횟수로 부여(초기 주회 횟수에 0.5를 감소)할 수도 있다.
한편, 객체가 복수의 경로들을 포함하는 경우, 연산부(145)는 각각의 경로에 기초하여 타일의 초기 주회 횟수를 연산할 수 있다. 다시 말해, 연산부(145)는 복수의 경로들을 순차적으로 고려하여 타일의 초기 주회 횟수를 연산할 수 있다. 예를 들어, 연산부(145)가 제 1 경로(e0)의 위치 및 진행 방향에 기초하여 제 1 초기 주회 횟수(WNinit_1)을 설정하고, 이후에 연산부(145)는 제 2 경로(e1)의 위치 및 진행 방향에 기초하여 제 2 초기 값(WNinit _2)을 설정할 수 있다.
이하, 도 28a 내지 도 29c를 참조하여, 복수의 경로들 각각에 대하여 연산부(145)가 타일의 초기 주회 횟수를 연산하는 일 예를 설명한다.
도 28a 내지 도 28b는 일 실시예에 따른 연산부가 프레임에 포함된 타일들 중 제 2 경로가 통과하는 타일의 일 측 방향에 나열된 타일들의 제 2 초기 주회 횟수를 연산하는 일 예를 설명하기 위한 도면들이다.
도 28a에는 제 2 경로(e1)가 도시되어 있다. 제 2 경로(e1)는 프레임(2610)에 제 1 경로(e0)가 그려진 이후에 그려지는 경로라고 가정한다. 이때, 제 1 경로(e0)는 정점(P0)에서 정점(P1)까지 연결된 에지라고 가정한다. 또한, 제 2 경로(e1)는 정점(P1)에서 정점(P2)까지 연결된 에지이다. 따라서, 제 2 경로(e1)는 시계 방향으로 진행하는 경로임을 알 수 있다.
할당부(142)는 프레임(2610)에 포함된 타일들 중에서 제 2 경로(e1)가 통과하는 타일들(2620)을 선택한다. 그리고, 할당부(142)는, 선택된 타일들(2620) 별로, 타일에 제 2 경로(e1)가 통과한다는 정보를 Edge_List로 생성하고, 이를 메모리(미도시)에 저장한다. 만약, Edge_List가 이미 생성된 타일의 경우에는, 할당부(142)는 기 생성된 Edge_List에 제 2 경로(e1)가 통과한다는 정보를 추가하여 저장한다. 도 28b에 도시된 타일들(2620)에 표시된 'e0, e1' 또는 'e1'은 타일들(2620) 각각의 Edge_List에 포함된 정보를 의미한다. 즉,'e0, e1'이 표시된 타일은 제 1 경로(e0)가 지나가는 타일이면서, 제 2 경로(e1)가 지나가는 타일을 의미한다. 또한, 'e1'이 표시된 타일은 제 2 경로(e1)가 지나가는 타일을 의미한다.
그리고, 연산부(145)는 선택된 타일들(2620)의 일 측면에 위치하는 타일들(2631) 각각에 제 2 초기 주회 횟수(WNinit _2)를 부여한다. 예를 들어, 연산부(145)는 선택된 타일들(2620)의 좌측 방향의 타일들(2631) 각각에 제 2 초기 주회 횟수(WNinit _2)를 부여할 수 있다. 즉, 제 2 경로(e1)가 시계 방향으로 타일들(2620)을 통과하므로, 연산부(145)는 타일들(2631) 각각에 +1을 제 2 초기 주화 횟수(WNinit _2)로 부여한다. 그리고, 연산부(145)는 제 2 초기 주회 횟수(WNinit _2)를 각각의 타일 별로 메모리(미도시)에 저장할 수 있다.
연산부(145)는 제 2 경로(e1)의 종료 정점(P2)을 포함하는 타일의 좌측 방향에 위치한 타일들(2632)에 대해서는 제 2 초기 주회 횟수(WNinit _2)를 부여하지 않는다. 연산부(145)는 제 2 경로(e1) 및 제 3 경로(e2)가 타일을 통과하는 형태를 고려하여, 제 2 초기 주회 횟수(WNinit _2)가 부여되지 않은 타일들(2632)에 대하여 제 3 초기 주회 횟수(WNinit _3)를 부여한다.
한편, 제 2 경로(e1)의 시작 정점(P1)을 포함하는 타일의 좌측 방향에 위치한 타일들(2633)의 경우, 연산부(145)는 제 1 경로(e0) 및 제 2 경로(e1)가 타일을 통과하는 형태를 고려하여, 제 2 초기 주회 횟수(WNinit _2)를 부여한다. 이하, 도 29a 내지 도 29c를 참조하여, 연산부(145)가 타일들(2633) 각각에 제 2 초기 주회 횟수(WNinit _2)를 부여하는 일 예를 설명한다.
도 29a 내지 도 29c는 일 실시예에 따른 연산부가 2개 이상의 경로의 진행 방향을 고려하여 초기 값을 부여하는 규칙의 일 예를 나타내는 도면들이다.
도 29a는 경로(2711)가 타일(2721)의 일 경계선으로 입장하였다가 퇴장하는 경우를 나타내고, 도 29b는 경로(2712)가 타일(2722)의 마주보는 두 경계선을 반시계 방향으로(즉, 아래에서 위로) 통과하는 경우를 나타낸다. 도 29c는 경로(2713)가 타일(2723)의 마주보는 두 경계선을 시계 방향으로(즉, 위에서 아래로) 통과하는 경우를 나타낸다.
도 29a 내지 도 29c에 도시된 경로(2711, 2712, 2713)는 2 이상의 경로들이 결합된 경로가 될 수도 있다. 예를 들어, 제 1 경로의 종료 정점과 제 2 경로의 시작 정점이 동일한 정점인 경우, 도 27a 내지 도 27c에 도시된 경로(2711, 2712, 2713)는 제 1 경로와 제 2 경로가 이어진 하나의 경로를 의미할 수 있다.
또한, 도 29a 내지 도 29c에 도시된 타일(2721, 2722, 2723)은 2 이상의 타일들이 결합된 타일이 될 수도 있다. 예를 들어, 경로가 통과하는 타일들이 수평 방향으로 2 이상 연속되는 경우, 도 29a 내지 도 29c에 도시된 하나의 타일(2721, 2722, 2723)로 간주될 수 있다.
도 29a를 참조하면, 경로(2711)가 타일(2721)의 일 경계선으로 입장하였다가 같은 방향으로 퇴장하는 경우, 연산부(145)는 타일(2721)의 좌측에 위치하는 적어도 하나의 타일(2731)에 0을 초기 주회 횟수로 부여한다.
도 29b를 참조하면, 경로(2712)가 타일(2722)의 마주보는 두 경계선을 반시계 방향으로(즉, 아래에서 위로) 통과하는 경우, 연산부(145)는 타일(2722)의 좌측에 위치하는 적어도 하나의 타일(2732)에 -1을 초기 주회 횟수로 부여한다.
도 29c를 참조하면, 경로(2713)가 타일(2723)의 마주보는 두 경계선을 시계 방향으로(즉, 위에서 아래로) 통과하는 경우, 연산부(145)는 타일(2723)의 좌측에 위치하는 적어도 하나의 타일(2733)에 +1을 초기 주회 횟수로 부여한다.
도 29a 내지 도 29c는 경로가 타일을 시계 방향으로 통과하는 경우에 연산부(145)가 +1을 초기 주회 횟수로 부여하고, 반시계 방향으로 통과하는 경우에 연산부(145)가 -1을 초기 주회 횟수로 부여하는 것으로 설명하였으나, 이에 한정되지 않는다.
일 예로서, 경로가 타일을 시계 방향으로 통과하는 경우에 연산부(145)가 -1을 초기 주회 횟수로 부여하고, 반시계 방향으로 통과하는 경우에 연산부(145)가 +1을 초기 주회 횟수로 부여할 수도 있다. 다른 예로서, 경로가 타일을 시계 방향으로 통과하는 경우에 연산부(145)가 +0.5를 초기 주회 횟수로 부여하고, 반시계 방향으로 통과하는 경우에 연산부(145)가 -0.5를 초기 주회 횟수로 부여할 수도 있다.
다시 도 28a를 참조하면, 제 1 경로(e0)와 제 2 경로(e1)가 연결된 경로는 정점(P1)을 포함하는 타일의 하측 면에서 입장하였다가, 하측 면으로 퇴장한다. 따라서, 연산부(145)는 타일들(2633) 각각의 제 2 초기 주회 횟수(WNinit_2)으로 0을 부여한다.
도 28b에는 제 1 초기 주회 횟수(WNinit _1) 및 제 2 초기 주회 횟수(WNinit _2)가 합산된 결과가 도시되어 있다. 예를 들어, 제 1 초기 주회 횟수(WNinit _1) 또는 제 2 초기 주회 횟수(WNinit _2)는 메모리(미도시)에 각각의 타일 별로 비트 스트림의 형태로 저장될 수 있다. 따라서, 제 1 초기 주회 횟수(WNinit _1) 및 제 2 초기 주회 횟수(WNinit _2)가 모두 부여된 타일에 대해서, 연산부(145)는 제 1 초기 주회 횟수(WNinit _1)와 제 2 초기 주회 횟수(WNinit _2)를 합산할 수 있다.
도 28a를 참조하여 상술한 바에 따르면, 도 28b에 도시된 일부 타일들(2641)은 제 1 초기 주회 횟수(WNinit _1)(예를 들어, -1)만을 갖는다. 또한, 도 28b에 도시된 일부 타일들(2642)은 제 2 초기 주회 횟수(WNinit _2)(예를 들어, 0 또는 +1)만을 갖는다. 또한, 도 28b에 도시된 일부 타일들(2643)은 제 1 초기 주회 횟수(WNinit_1)(예를 들어, -1) 및 제 2 초기 주회 횟수(WNinit _2)(예를 들어, +1)를 모두 갖는다. 따라서, 연산부(145)는 도 26b에 도시된 일부 타일들(2643) 각각에 대하여 제 1 초기 주회 횟수(WNinit _1)와 제 2 초기 주회 횟수(WNinit _2)를 합산(예를 들어, -1 + 1 = 0)할 수 있다.
도 28b에 도시된 타일들(2641, 2642, 2643)마다 표시된 '0', '-1' 또는 '1'은 타일들(2641, 2642, 2643) 각각의 제 1 초기 주회 횟수(WNinit _1), 제 2 초기 주회 횟수(WNinit _2) 또는 제 1 초기 주회 횟수(WNinit _1)와 제 2 초기 주회 횟수(WNinit _2)가 합산된 결과를 의미한다.
도 28a 내지 도 29c를 참조하여 상술한 바와 같이, 연산부(145)가 제 2 경로(e1)의 위치 및 진행 방향에 기초하여 제 2 초기 주회 횟수(WNinit _2)를 연산하였으므로, 이후에 연산부(145)는 제 3 경로(e2)의 위치 및 진행 방향에 기초하여 제 3 초기 주회 횟수(WNinit _3)를 연산할 수 있다.
도 30a 내지 도 30b는 일 실시예에 따른 연산부가 프레임에 포함된 타일들 중 제 3 경로가 통과하는 타일의 일 측 방향에 나열된 타일들의 제 3 초기 횟수를 연산하는 일 예를 설명하기 위한 도면들이다.
도 30a에는 제 3 경로(e2)가 도시되어 있다. 여기에서, 제 3 경로(e2)는 정점(P2)으로부터 정점(P0)까지 연결된 에지이다. 따라서, 제 3 경로(e2)는 시계 방향으로 회전하는 경로임을 알 수 있다.
할당부(142)는 프레임(2810)에 포함된 타일들 중에서 제 2 경로(e1)가 통과하는 타일들(2820)을 선택한다. 그리고, 할당부(142)는, 선택된 타일들(2820) 별로, 타일에 제 3 경로(e2)가 통과한다는 정보를 Edge_List로 생성하고, 이를 메모리(미도시)에 저장한다. 만약, Edge_List가 이미 생성된 타일의 경우에는, 할당부(142)는 기 생성된 Edge_List에 제 3 경로(e2)가 통과한다는 정보를 추가하여 저장한다. 도 30b에 도시된 타일들(2820)에 표시된 'e0, e2', 'e1, e2' 또는 'e2'는 타일들(2820) 각각의 Edge_List에 포함된 정보를 의미한다. 즉,'e0, e2'가 표시된 타일은 제 1 경로(e0)가 지나가는 타일이면서, 제 3 경로(e2)가 지나가는 타일을 의미한다. 또한, 'e1, e2'가 표시된 타일은 제 2 경로(e1)가 지나가는 타일이면서, 제 3 경로(e2)가 지나가는 타일을 의미한다. 또한, 'e2'가 표시된 타일은 제 3 경로(e2)가 지나가는 타일을 의미한다.
그리고, 연산부(145)는 선택된 타일들(2820)의 일 측면에 위치하는 타일들(2831) 각각의 제 3 초기 주회 횟수(WNinit _3)를 연산한다. 예를 들어, 연산부(145)는 선택된 타일들(2820)의 좌측 방향의 타일들(2831) 각각의 제 3 초기 주회 횟수(WNinit _3)를 연산할 수 있다. 즉, 제 3 경로(e2)가 시계 방향으로 타일들(2820)을 통과하므로, 연산부(145)는 타일들(2831) 각각에 +1을 제 3 초기 주회 횟수(WNinit _3) 로 부여한다. 그리고, 연산부(145)는 제 3 초기 주회 횟수(WNinit _3)를 각각의 타일 별로 메모리(미도시)에 저장할 수 있다.
한편, 제 3 경로(e2)의 시작 정점(P2)을 포함하는 타일의 좌측 방향에 위치한 타일들(2832)의 경우, 연산부(145)는 제 2 경로(e1) 및 제 3 경로(e2)가 타일을 통과하는 형태를 고려하여, 제 3 초기 주회 횟수(WNinit _3)를 부여한다. 이때, 연산부(145)가 타일들(2832) 각각에 제 3 초기 주회 횟수(WNinit _3)를 부여하는 방법은 도 29a 내지 도 29c를 참조하여 상술한 바와 같다. 즉, 제 2 경로(e1)와 제 3 경로(e2)가 결합된 단일 경로가 타일(2821)의 마주보는 두 경계선을 시계 방향으로(즉, 위에서 아래로) 통과하므로, 연산부(145)는 타일들(2832) 각각에 +1을 제 3 초기 주회 횟수(WNinit _3) 로 부여한다. 그리고, 연산부(145)는 제 3 초기 주회 횟수(WNinit _3)를 각각의 타일 별로 메모리(미도시)에 저장할 수 있다.
또한, 제 3 경로(e2)의 종료 정점(P0)을 포함하는 타일의 좌측 방향에 위치한 타일(2833)의 경우, 연산부(145)는 제 3 경로(e2) 및 제 1 경로(e0)가 타일을 통과하는 형태를 고려하여, 제 3 초기 주회 횟수(WNinit _3)를 부여한다. 이때, 연산부(145)가 타일(2833)에 제 3 초기 주회 횟수(WNinit _3)를 부여하는 방법은 도 29a 내지 도 29c를 참조하여 상술한 바와 같다. 즉, 제 3 경로(e2)와 제 1 경로(e0)가 결합된 단일 경로가 타일(2822)의 단일 면(즉, 상측 면)으로 입장하였다가 같은 방향으로 퇴장하므로, 연산부(145)는 타일(2833)에 0을 제 3 초기 주회 횟수(WNinit _3) 로 부여한다. 그리고, 연산부(145)는 타일(2833)의 제 3 초기 주회 횟수(WNinit _3)를 메모리(미도시)에 저장할 수 있다.
도 30b에는 제 1 초기 주회 횟수(WNinit _1), 제 2 초기 주회 횟수(WNinit _2) 및 제 3 초기 주회 횟수(WNinit _3)가 합산된 결과가 도시되어 있다. 연산부(145)는 타일의 제 1 초기 주회 횟수(WNinit _1), 제 2 초기 주회 횟수(WNinit _2) 또는 제 3 초기 주회 횟수(WNinit _3)를 메모리(미도시)에 저장할 수 있다. 예를 들어, 제 1 초기 주회 횟수(WNinit _1), 제 2 초기 주회 횟수(WNinit _2) 또는 제 3 초기 주회 횟수(WNinit _3)는 메모리(미도시)에 각각의 타일 별로 비트 스트림의 형태로 저장될 수 있다. 따라서, 제 1 초기 주회 횟수(WNinit _1), 제 2 초기 주회 횟수(WNinit _2) 또는 제 3 초기 주회 횟수(WNinit _3) 중 2 이상이 모두 부여된 타일에 대해서, 연산부(145)는 부여된 초기 주회 횟수들을 합산할 수 있다.
도 30b에 도시된 일부 타일들(2841)은 제 3 초기 주회 횟수(WNinit _3)(예를 들어, 0 또는 +1)만을 갖는다. 또한, 도 30b에 도시된 일부 타일들(2842)은 제 2 초기 주회 횟수(WNinit _2)(예를 들어, 0 또는 +1)만을 갖는다. 또한, 도 30b에 도시된 일부 타일들(2843)은 제 1 초기 주회 횟수(WNinit _1)(예를 들어, -1) 및 제 3 초기 주회 횟수(WNinit _3)(예를 들어, +1)를 모두 갖는다. 또한, 도 30b에 도시된 일부 타일들(2844)은 제 1 초기 주회 횟수(WNinit _1)(예를 들어, -1) 및 제 2 초기 주회 횟수(WNinit _2)(예를 들어, +1)를 모두 갖는다.
따라서, 연산부(145)는 도 30b에 도시된 일부 타일들(1143, 1144) 각각에 대하여 초기 주회 횟수들을 합산(예를 들어, -1 + 1 = 0)할 수 있다.
도 30b에 도시된 타일들(2841, 2842, 2843, 2844)마다 표시된 '0', '1'은 타일들(2841, 2842, 2843, 2844) 각각의 제 1 초기 주회 횟수(WNinit _1), 제 2 초기 주회 횟수(WNinit _2), 제 3 초기 주회 횟수(WNinit _3) 또는 제 1 초기 주회 횟수(WNinit _1) 내지 제 3 초기 주회 횟수(WNinit _3)가 합산된 값을 의미한다.
연산부(145)는 제 1 초기 주회 횟수(WNinit _1) 내지 제 3 초기 주회 횟수(WNinit _3)에 기초하여, 프레임(2810)에 포함된 타일들 각각에 최종 초기 주회 횟수(WNinit)를 설정한다. 예를 들어, 제 1 초기 주회 횟수(WNinit _1) 내지 제 3 초기 주회 횟수(WNinit _3) 중 하나가 부여된 타일의 경우, 연산부(145)는 부여된 초기 주회 횟수를 최종적인 초기 주회 횟수(WNinit)로 설정한다. 또한, 제 1 초기 주회 횟수(WNinit _1) 내지 제 3 초기 주회 횟수(WNinit _3) 중 2 이상이 부여된 타일의 경우, 연산부(145)는 부여된 초기 주회 횟수들을 합산함으로써 최종적인 초기 주회 횟수(WNinit)를 설정한다. 또한, 제 1 초기 주회 횟수(WNinit _1) 내지 제 3 초기 주회 횟수(WNinit _3) 중 어느 것도 부여되지 않은 타일의 경우, 연산부(145)는 최종적인 초기 주회 횟수(WNinit)를 '0'으로 설정한다.
다시 도 1을 참조하면, 주회 횟수 연산부(150)는 타일 비닝의 결과를 이용하여 프레임에 포함된 픽셀들 각각의 주회 횟수를 연산한다. 예를 들어, 주회 횟수 연산부(150)는 각각의 타일마다 할당된 경로의 식별 값(예를 들어, Edge_List 또는 Curve_List) 및 초기 주회 횟수를 이용하여 픽셀의 주회 횟수를 연산할 수 있다.
구체적으로, 주회 횟수 연산부(150)는 타일에 대하여 생성된 Edge_List 또는 Curve_List를 참조함으로써 주회 횟수를 연산하는데 필요한 경로가 무엇인지를 확인할 수 있다. 그리고, 주회 횟수 연산부(150)는 확인된 경로의 위치 및 진행 방향에 기초하여 픽셀의 주회 횟수를 연산할 수 있다.
일 예로서, 비닝 수행부(140)가 타일의 초기 주회 횟수를 연산한 경우라면, 주회 횟수 연산부(150)는 초기 주회 횟수에 기초하여 픽셀의 주회 횟수를 연산할 수 있다. 다른 예로서, 비닝 수행부(140)가 타일의 초기 주회 횟수를 연산하지 않은 경우라면, 주회 횟수 연산부(150)는 타일의 초기 주회 횟수를 먼저 연산하고, 그 이후에 픽셀의 주회 횟수를 연산할 수 있다.
이하, 도 31a 내지 도 35를 참조하여, 주회 횟수 연산부(150)가 픽셀의 주회 횟수를 연산하는 예들을 설명한다.
도 31a 내지 도 31c는 일 실시예에 따른 주회 횟수 연산부가 픽셀의 주회 횟수를 연산하는 일 예를 설명하기 위한 도면이다.
도 31a에는 6*6 개의 타일들로 구성된 프레임(3110) 및 삼각형 형상의 객체(3120)가 도시되어 있다. 도 31a 내지 도 31c에서는, 할당부(142)가 경로들(e0, e1, e2)이 통과하는 타일들(3130)에 대하여 Edge_List를 생성하고, 연산부(145)가 프레임(3110)에 포함된 타일들 각각의 초기 주회 횟수(WNinit)를 연산하였음을 가정하여 설명한다.
하나의 타일에는 복수 개의 픽셀들이 포함되어 있다. 따라서, 픽셀의 주회 횟수는 하나의 타일에 포함된 픽셀들 간에도 서로 다를 수 있다. 이하, 도 31b 내지 도 31c를 참조하여 구체적으로 설명한다.
도 31b에는 도 31a에 도시된 경로들(e0, e1, e2)이 통과하는 타일들(3130) 중 어느 하나의 타일(3131)이 도시되어 있다. 타일(3131)의 내부 영역은 제 1 경로(e0) 및 제 2 경로(e1)에 의하여 2 개의 영역들로 구분될 수 있다. 이하에서는, 제 1 경로(e0) 및 제 2 경로(e1)에 의하여 둘러 쌓인 영역을 제 1 영역(3141)이라고 하고, 제 1 영역(3141)을 제외한 영역을 제 2 영역(3142)이라고 한다.
주회 횟수 연산부(150)는 아래의 수학식 1에 따라 픽셀의 주회 횟수(WN)를 연산할 수 있다.
Figure 112015036293193-pat00001
수학식 1에서, WN은 픽셀의 주회 횟수를 의미하며, WNinit은 픽셀을 포함하는 타일의 초기 주회 횟수를 의미한다. 그리고, NCW는 픽셀의 일 측면에 위치하고, 시계 방향으로 진행하는(즉, 위에서 아래로 진행하는) 경로에 기초하여 결정된 값을 의미한다. 그리고, NCCW는 픽셀의 일 측면에 위치하고, 반시계 방향으로 진행하는(즉, 아래에서 위로 진행하는) 경로에 기초하여 결정된 값을 의미한다. 여기에서, 픽셀의 일 측면은 픽셀의 위치를 중심으로 좌측, 우측, 상측 및 하측 중 어느 하나를 의미한다.
즉, 주회 횟수 연산부(150)는 픽셀이 포함된 타일의 초기 주회 횟수(WNinit)와 픽셀의 일 측면에 위치하는 경로의 진행 방향을 이용하여 픽셀의 주회 횟수를 연산할 수 있다. 이하, 도 32a 내지 도 33d를 참조하여, 주회 횟수 연산부(150)가 상기 수학식 1의 NCW 및 NCCW를 결정하는 일 예를 설명한다.
도 32a 내지 도 32b는 일 실시예에 따른 주회 횟수 연산부가 픽셀의 주회 횟수를 연산하는 일 예를 설명하기 위한 도면들이다.
도 32a에는 정점 1, 정점 2 및 정점 3이 포함된 객체(3240)가 도시되어 있다. 구체적으로, 객체(3240)는 정점 1로부터 정점 2까지의 제 1 경로, 정점 2로부터 정점 3까지의 제 2 경로 및 정점 3으로부터 정점 1까지의 제 3 경로로 구성된다.
주회 횟수 연산부(150)는 프레임에 포함된 픽셀들 각각의 위치를 중심으로 일 측면에 경로가 위치하는지 여부를 확인한다. 여기에서, 일 측면은 픽셀의 위치를 중심으로 좌측, 우측, 상측 및 하측 중 어느 하나를 의미한다. 이하에서는, 설명의 편의를 위하여 주회 횟수 연산부(150)가 픽셀(3210)의 위치를 중심으로 우측에 경로가 위치하는지 여부를 확인하는 것을 가정하여 설명한다.
주회 횟수 연산부(150)는 픽셀(3210)의 우측에 위치하는 경로의 진행 방향이 시계 방향인지 또는 반시계 방향인지 결정한다. 예를 들어, 주회 횟수 연산부(150)가 픽셀(3210)의 우측에 경로가 위치한다고 판단한 경우에는, 주회 횟수 연산부(150)는 경로의 진행 방향이 시계 방향인지 또는 반시계 방향인지 결정한다. 한편, 주회 횟수 연산부(150)가 픽셀(3210)의 우측에 경로가 위치하지 않는다고 판단한 경우에는, 주회 횟수 연산부(150)는 수학식 1의 NCW 및 NCCW를 0으로 결정한다.
도 32a를 참조하면, 주회 횟수 연산부(150)는 객체(3240)를 구성하는 3개의 경로들 중 픽셀(3210)의 우측에 위치하는 제 2 경로의 진행 방향이 시계 방향인지 또는 반시계 방향인지 결정한다. 다시 말해, 제 1 경로와 제 3 경로는 픽셀(3210)의 우측에 위치하지 않으므로, 주회 횟수 연산부(150)는 제 1 경로와 제 3 경로의 진행 방향을 결정하지 않고, 제 2 경로의 진행 방향만을 결정한다. 여기에서, 제 2 경로는 정점 2로부터 정점 3까지 진행하므로, 주회 횟수 연산부(150)는 제 2 경로의 진행 방향이 시계 방향인 것으로 결정한다.
그 후에, 주회 횟수 연산부(150)는 시계 방향으로 진행하는 경로의 개수에 따라 주회 횟수 연산부(150)의 NCW에 미리 결정된 값을 증산하고, 반시계 방향으로 진행하는 경로의 개수에 따라 NCCW에 미리 결정된 값을 증산한다. 여기에서, 미리 결정된 값은 1이 될 수도 있으나, 이에 한정되지 않는다.
만약, 미리 결정된 값이 1이라고 가정하면, 주회 횟수 연산부(150)는 제 2 경로의 진행 방향이 시계 방향인 것으로 결정했으므로, 주회 횟수 연산부(150)는 픽셀(3210)의 NCW를 +1로 결정한다.
상술한 방법과 같이 주회 횟수 연산부(150)가 프레임에 포함된 픽셀들 각각에 대하여 NCW를 연산하는 경우, 도 32a에 도시된 객체(3240)의 내부에 존재하는 픽셀들의 NCW는 모두 +1로 결정되며, 객체(3240)의 외부에 존재하는 픽셀들의 NCW는 모두 0으로 결정된다.
이하에서는 설명의 편의를 위하여, 주회 횟수 연산부(150)가 픽셀의 NCW 및 NCCW를 결정할 때, 경로의 진행 방향이 시계 방향인 경우 NCW를 +1로 결정하고, 경로의 진행 방향이 반시계 방향인 경우 NCCW를 +1로 결정하는 것으로 가정하여 설명한다.
도 32b에는 정점 1, 정점 2, 정점 3 및 정점 4로 구성된 제 1 객체(3250) 및 정점 5, 정점 6, 정점 7 및 정점 8로 구성된 제 2 객체(3260)가 도시되어 있다. 구체적으로, 제 1 객체(3250)는 정점 1로부터 정점 2까지의 제 1 경로, 정점 2로부터 정점 3까지의 제 2 경로, 정점 3으로부터 정점 4까지의 제 3 경로 및 정점 4로부터 정점 1까지의 제 4 경로로 구성된다. 또한, 제 2 객체(3260)는 정점 5로부터 정점 6까지의 제 5 경로, 정점 6으로부터 정점 7까지의 제 6 경로, 정점 7로부터 정점 8까지의 제 7 경로 및 정점 8로부터 정점 5까지의 제 8 경로로 구성된다.
이하에서는, 주회 횟수 연산부(150)가 픽셀(3220 또는 3230)의 위치를 중심으로 우측에 경로가 위치하는지 여부를 확인하는 것을 가정하여 설명한다.
일 예로서, 주회 횟수 연산부(150)가 픽셀(3220)의 NCW 및 NCCW를 결정하는 방법을 설명한다.
주회 횟수 연산부(150)는 픽셀(3220)의 위치를 중심으로 우측에 경로가 존재하는지 여부를 확인한다. 구체적으로, 주회 횟수 연산부(150)는 픽셀(3220)의 우측에는 제 1 객체(3250)에 포함된 제 3 경로가 존재함을 확인한다.
주회 횟수 연산부(150)는 확인 결과에 기초하여 제 3 경로의 진행 방향이 시계 방향인지 또는 반시계 방향인지 결정한다. 주회 횟수 연산부(150)는 제 3 경로의 진행 방향이 시계 방향인 것으로 결정한다. 따라서, 주회 횟수 연산부(150)는 픽셀(3220)의 NCW 를 +1로 결정한다.
다른 예로, 주회 횟수 연산부(150)가 픽셀(3230)의 NCW 및 NCCW를 결정하는 방법을 설명한다.
주회 횟수 연산부(150)는 픽셀(3230)의 우측에는 제 2 객체(3260)에 포함된 제 6 경로와 제 1 객체(3250)에 포함된 제 3 경로가 존재함을 확인한다. 그 후에, 주회 횟수 연산부(150)는 제 6 경로의 진행 방향이 반시계 방향이고, 제 3 경로의 진행 방향이 시계 방향인 것으로 결정한다. 주회 횟수 연산부(150)는 제 6 경로의 진행 방향이 반시계 방향인 것으로 결정했으므로, 주회 횟수 연산부(150)는 픽셀(3230)의 NCCW를 +1로 결정한다. 그리고, 주회 횟수 연산부(150)는 제 3 경로의 진행 방향이 시계 방향인 것으로 결정했으므로, 주회 횟수 연산부(150)는 픽셀(3230)의 NCW 를 +1로 결정한다.
상술한 방법과 같이 주회 횟수 연산부(150)가 프레임에 포함된 픽셀들 각각에 대하여 NCW 및 NCCW를 결정하는 경우, 도 32b에 도시된 제 1 객체(3250)의 내부이며 제 2 객체(3260)의 외부에 존재하는 픽셀들의 NCW는 모두 +1로 결정되며, 제 2 객체(3260)의 내부에 존재하는 픽셀들의 NCW 및 NCCW는 모두 +1로 결정된다.
한편, 주회 횟수 연산부(150)가 픽셀의 위치를 중심으로 좌측, 우측, 상측 및 하측 중 어느 측면을 선택하여 주회 횟수를 연산하더라도, 그 결과는 모두 동일하다. 이하, 도 33a 내지 도 33d를 참조하여 주회 횟수 연산부(150)가 서로 다른 측면을 선택하여 픽셀의 NCW 및 NCCW를 결정하는 일 예를 설명한다.
도 33a 내지 도 33d는 일 실시예에 따른 주회 횟수 연산부가 서로 다른 측면을 선택하여 픽셀의 주회 횟수를 연산하는 일 예를 설명하기 위한 도면들이다.
도 33a 내지 도 33d에는 정점 1 내지 정점 5로 구성된 객체가 도시되어 있다. 도 33a 내지 도 33d에 도시된 객체는 별 형상을 한 폐다각형(closed polygon)으로서 모두 동일하다.
도 33a를 참조하면, 주회 횟수 연산부(150)는 픽셀 P의 위치를 중심으로 우측에 경로가 위치하는지 여부를 확인한다. 구체적으로, 주회 횟수 연산부(150)는 픽셀 P의 우측(예를 들어, 픽셀 P의 우측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 2로부터 정점 3까지의 경로와 정점 5으로부터 정점 1까지의 경로가 존재함을 확인한다. 정점 2로부터 정점 3까지의 경로의 진행 방향과 정점 5으로부터 정점 1까지의 경로의 진행 방향은 모두 시계 방향이므로, 주회 횟수 연산부(150)는 픽셀 P의 NCW를 +2로 결정한다.
도 33b를 참조하면, 주회 횟수 연산부(150)는 픽셀 P의 위치를 중심으로 좌측에 경로가 위치하는지 여부를 확인한다. 구체적으로, 주회 횟수 연산부(150)는 픽셀 P의 좌측(예를 들어, 픽셀 P의 좌측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 1로부터 정점 2까지의 경로와 정점 3으로부터 정점 4까지의 경로가 존재함을 확인한다. 정점 1로부터 정점 2까지의 경로의 진행 방향과 정점 3으로부터 정점 4까지의 경로의 진행 방향은 모두 시계 방향이므로, 주회 횟수 연산부(150)는 픽셀 P의 NCW를 +2로 결정한다.
도 33c를 참조하면, 주회 횟수 연산부(150)는 픽셀 P의 위치를 중심으로 상측에 경로가 위치하는지 여부를 확인한다. 구체적으로, 주회 횟수 연산부(150)는 픽셀 P의 상측(예를 들어, 픽셀 P의 상측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 2로부터 정점 3까지의 경로와 정점 4로부터 정점 5까지의 경로가 존재함을 확인한다. 정점 2로부터 정점 3까지의 경로의 진행 방향과 정점 4로부터 정점 5까지의 경로의 진행 방향은 모두 시계 방향이므로, 주회 횟수 연산부(150)는 픽셀 P의 NCW를 +2로 결정한다.
도 33d를 참조하면, 주회 횟수 연산부(150)는 픽셀 P의 위치를 중심으로 하측에 경로가 위치하는지 여부를 확인한다. 구체적으로, 주회 횟수 연산부(150)는 픽셀 P의 하측(예를 들어, 픽셀 P의 하측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 5로부터 정점 1까지의 경로와 정점 3으로부터 정점 4까지의 경로가 존재함을 확인한다. 정점 5로부터 정점 1까지의 경로의 진행 방향과 정점 3으로부터 정점 4까지의 경로의 진행 방향은 모두 시계 방향이므로, 주회 횟수 연산부(150)는 픽셀 P의 NCW를 +2로 결정한다.
상술한 바와 같이, 주회 횟수 연산부(150)가 픽셀 P의 위치를 중심으로 어느 측면을 선택하여 NCW 및 NCCW를 결정하더라도, 그 결과는 모두 동일하다. 또한, 도 33a 내지 도 33d에 도시된 바와 같이, 경로에 의하여 구분된 영역들 중에서 동일한 영역 내에 존재하는 픽셀들의 NCW 및 NCCW는 모두 동일하다.
주회 횟수 연산부(150)는 픽셀의 위치 및 경로의 위치를 고려하여 프레임에 포함된 픽셀들 각각마다 NCW 및 NCCW를 결정하는 일 측면을 선택할 수 있다. 다시 말해, 주회 횟수 연산부(150)는 픽셀 P의 위치를 중심으로 어느 측면을 선택하여 NCW 및 NCCW를 결정할지 픽셀 P의 위치에 따라 서로 다르게 선택할 수도 있다. 즉, 주회 횟수 연산부(150)는 픽셀 P의 위치를 기준으로 가장 적은 수의 경로가 존재할 것으로 예상되는 방향으로 NCW 및 NCCW를 결정할 일 측면을 선택할 수 있다.
예를 들어, 픽셀 P가 프레임의 중심선을 기준으로 왼쪽에 존재한다고 가정하면, 주회 횟수 연산부(150)가 NCW 및 NCCW를 결정할 일 측면을 픽셀 P의 우측 면보다는 좌측 면을 선택하여야 주회 횟수 연산부(150)가 더 적은 수의 경로를 이용하여 픽셀 P의 NCW 및 NCCW를 결정할 수 있다. 또한, 픽셀 P가 프레임의 중심선을 기준으로 오른쪽에 존재한다고 가정하면, 주회 횟수 연산부(150)가 NCW 및 NCCW를 연산할 일 측면을 픽셀 P의 좌측 면보다는 우측 면을 선택하여야 주회 횟수 연산부(150)가 더 적은 수의 경로를 이용하여 픽셀 P의 NCW 및 NCCW를 결정할 수 있다.
따라서, 주회 횟수 연산부(150)는 프레임에 포함된 픽셀들 각각마다 서로 다른 측면을 선택하여 NCW 및 NCCW를 결정할 수 있다. 이때, 주회 횟수 연산부(150)는 프레임 내에서 객체를 구성하는 경로들이 어느 위치에 분포하는지를 판단하고, 주회 횟수 연산부(150)는 NCW 및 NCCW가 결정될 픽셀의 위치를 중심으로 가장 적은 경로가 존재하는 방향으로 NCW 및 NCCW의 결정에 이용되는 일 측면을 선택한다.
다시 도 31b를 참조하면, 주회 횟수 연산부(150)는 제 1 영역(3141)에 포함된 픽셀(3151)의 주회 횟수(WN)를 +1로 연산할 수 있다. 구체적으로, 타일(3131)의 초기 주회 횟수(WNinit)는 0이고, 픽셀(3151)의 우측 면에 위치한 제 2 경로(e1)가 시계 방향으로 진행하므로 NCW는 1이다. 또한, 픽셀(3151)의 우측 면에 반시계 방향으로 진행하는 경로가 없으므로 NCCW는 0이다. 따라서, 주회 횟수 연산부(150)는 수학식 1에 따라 픽셀(3151)의 주회 횟수(WN)를 +1로 연산할 수 있다.
또한, 주회 횟수 연산부(150)는 제 2 영역(3142)에 포함된 픽셀(3152)의 주회 횟수(WN)를 0으로 연산할 수 있다. 구체적으로, 타일(3131)의 초기 주회 횟수(WNinit)는 0이고, 픽셀(3152)의 우측 면에 위치한 제 1 경로(e0)가 반시계 방향으로 진행하므로 NCCW는 1이다. 또한, 픽셀(3152)의 우측 면에 위치한 제 2 경로(e1)가 시계 방향으로 진행하므로 NCW는 1이다. 따라서, 주회 횟수 연산부(150)는 수학식 1에 따라 픽셀(3152)의 주회 횟수(WN)를 0으로 연산할 수 있다.
또한, 주회 횟수 연산부(150)는 제 2 영역(3142)에 포함된 픽셀(3153)의 주회 횟수(WN)를 0으로 연산할 수 있다. 구체적으로, 타일(3131)의 초기 주회 횟수(WNinit)는 0이고, 픽셀(3153)의 우측 면에 위치한 경로가 없으므로 NCW 및 NCCW는 0이다. 따라서, 주회 횟수 연산부(150)는 수학식 1에 따라 픽셀(3153)의 주회 횟수(WN)를 0으로 연산할 수 있다.
종합하면, 도 31b에 도시된 제 1 영역(3141)에 포함된 픽셀들 각각의 주회 횟수(WN)는 모두 1로 연산될 수 있고, 제 2 영역(3142)에 포함된 픽셀들 각각의 주회 횟수(WN)는 모두 0으로 연산될 수 있다. 즉, 동일한 타일에 포함된 픽셀들이라도, 경로에 의하여 구분된 영역에 따라 픽셀들의 주회 횟수(WN)가 서로 다를 수 있다.
도 31c에는 도 31a에 도시된 경로들(e0, e1, e2)이 통과하는 타일들(3130) 중 어느 하나의 타일(3132)이 도시되어 있다. 타일(3132)의 내부 영역은 제 1 경로(e0) 에 의하여 2 개의 영역들로 구분될 수 있다. 이하에서는, 제 1 경로(e0) 및 타일(3132)의 경계선들에 의하여 둘러 쌓인 영역을 제 3 영역(3143)이라고 하고, 제 3 영역(3143)을 제외한 영역을 제 4 영역(3144)이라고 한다.
주회 횟수 연산부(150)는 제 3 영역(3143)에 포함된 픽셀(3154)의 주회 횟수(WN)를 +1로 연산할 수 있다. 구체적으로, 타일(3132)의 초기 주회 횟수(WNinit)는 1이고, 픽셀(3154)의 우측 면에 위치한 경로가 없으므로 NCW 및 NCCW는 0이다. 따라서, 주회 횟수 연산부(150)는 수학식 1에 따라 픽셀(3154)의 주회 횟수(WN)를 0으로 연산할 수 있다.
또한, 주회 횟수 연산부(150)는 제 4 영역(3144)에 포함된 픽셀(3155)의 주회 횟수(WN)를 0으로 연산할 수 있다. 구체적으로, 타일(3132)의 초기 주회 횟수(WNinit)는 1이고, 픽셀(3155)의 우측 면에 위치한 제 1 경로(e0)가 반시계 방향으로 진행하므로 NCCW는 1이다. 또한, 픽셀(3151)의 우측 면에 시계 방향으로 진행하는 경로가 없으므로 NCW는 0이다. 따라서, 주회 횟수 연산부(150)는 수학식 1에 따라 픽셀(3155)의 주회 횟수(WN)를 0으로 연산할 수 있다.
종합하면, 도 31c에 도시된 제 3 영역(3143)에 포함된 픽셀들 각각의 주회 횟수(WN)는 모두 1로 연산될 수 있고, 제 4 영역(3144)에 포함된 픽셀들 각각의 주회 횟수(WN)는 모두 0으로 연산될 수 있다.
도 34a 및 도 34b는 일 실시예에 따른 주회 횟수 연산부가 경로가 통과하는 타일들에 포함된 픽셀들의 주회 횟수를 연산한 결과의 예들을 나타내는 도면들이다.
도 34a에는 삼각형 형상의 객체(3420)가 도시되어 있고, 도 34b에는 별 형상의 객체(3430)가 도시되어 있다.
도 34a 및 도 34b를 참조하면, 객체(3420)를 구성하는 경로들이 통과하는 타일들(3411)에 포함된 픽셀들의 주회 횟수(WN)가 표시되어 있다. 주회 횟수 연산부(150)가 프레임(3410)에 포함된 모든 픽셀들의 주회 횟수(WN)를 연산하는 경우, 경로들이 통과하지 않는 타일들(3412)에 포함된 픽셀들의 주회 횟수(WN)는 타일들(3412) 각각의 초기 주회 횟수(WNinit)와 동일하게 된다. 따라서, 주회 횟수 연산부(150)는 타일들(3411)에 포함된 픽셀들의 주회 횟수(WN)만을 연산하고, 타일들(3412)에 포함된 픽셀들의 주회 횟수(WN)는 타일들(3412) 각각의 초기 주회 횟수(WNinit)로 결정할 수 있다.
상술한 바에 따르면, 주회 횟수 연산부(150)는 프레임(3410)에 포함된 모든 픽셀들에 대하여 주회 횟수(WN)를 연산하지 않아도 된다. 따라서, 렌더링 장치(0)는 빠른 속도로 프레임(3410)에 포함된 모든 픽셀들의 주회 횟수(WN)를 연산할 수 있다.
한편, 주회 횟수 연산부(150)가 타일의 초기 주회 횟수(WNinit)를 연산할 수도 있다. 구체적으로, 비닝 수행부(140)의 연산부(145)가 타일의 초기 주회 횟수(WNinit)를 연산하지 않는 경우, 주회 횟수 연산부(150)가 타일의 초기 주회 횟수(WNinit)를 연산할 수도 있다.
도 35는 일 실시예에 따른 주회 횟수 연산부가 타일의 초기 주회 횟수를 연산하는 일 예를 설명하기 위한 도면이다.
도 35를 참조하면, 타일(3510)의 우측에 경로(3520)가 존재한다. 타일(3510)이 사각형 형상이라고 가정하면, 주회 횟수 연산부(150)는 타일(3510)의 4 측면들 중에서 경로(3520)와 가장 가까운 측면(3511)을 선택한다. 그리고, 주회 횟수 연산부(3510)는 측면(3511)에 포함된 두 정점들(T1, T2)의 위치와 경로(3520)의 위치를 비교한다. 예를 들어, 두 정점들(T1, T2)이 경로(3520)보다 왼쪽에 존재하고, 경로(3520)의 진행 방향이 시계 방향이라고 가정하면, 주회 횟수 연산부(150)는 타일(3510)의 초기 주회 횟수(WNinit)를 1로 결정한다. 한편, 두 정점들(T1, T2)이 경로(3520)보다 왼쪽에 존재하고, 경로(3520)의 진행 방향이 반시계 방향이라고 가정하면, 주회 횟수 연산부(150)는 타일(3510)의 초기 주회 횟수(WNinit)를 -1로 결정한다. 만약, 두 정점들(T1, T2) 중 어느 하나라도 경로(3520)보다 오른쪽에 존재하면, 주회 횟수 연산부(150)는 타일(3510)의 초기 주회 횟수(WNinit)를 0으로 결정한다.
도 35를 참조하여 상술한 바와 같이, 주회 횟수 연산부(150)가 타일의 초기 주회 횟수(WNinit)를 연산하는 경우, 비닝 수행부(140)에서 타일의 초기 주회 횟수(WNinit)를 연산하고 이를 저장하는데 소요되는 비용이 감소될 수 있다. 다시 말해, 타일의 초기 주회 횟수(WNinit)가 저장 또는 갱신되는 과정에서, 비닝 수행부(140)는 적어도 1회 이상 메모리(미도시)에 데이터를 저장하거나 메모리(미도시)로부터 데이터를 독출한다. 따라서, 주회 횟수 연산부(150)가 타일의 초기 주회 횟수(WNinit)를 연산하는 경우, 하드웨어가 동작하는데 소요되는 시간 또는 비용이 감소될 수 있다.
또한, 주회 횟수 연산부(150)가 타일의 초기 주회 횟수(WNinit)를 연산하는 경우, 비닝 수행부(140)에서 주회 횟수 연산부(150)로 타일의 초기 주회 횟수(WNinit)를 전달하는데 소요되는 비용이 감소될 수 있다.
다시 도 1을 참조하면, 픽셀 쉐이더는, 픽셀의 주회 횟수(WN)에 기초하여 픽셀에 대응하는 컬러를 결정할 수 있다.
예를 들어, 픽셀 쉐이더는 기 설정된 규칙에 기초하여 픽셀들 각각에 대응하는 컬러를 결정할 수 있다. 여기에서, 기 설정된 규칙은 주회 횟수가 0이 아닌 값을 갖는 픽셀들에 컬러 값을 할당하는 제 1 규칙 또는 주회 횟수가 홀수인 값을 갖는 픽셀들에 컬러 값을 할당하는 제 2 규칙 중 어느 하나를 의미할 수 있다. 이하, 도 36a 내지 도 36c를 참조하여, 픽셀 쉐이더가 픽셀에 대응하는 컬러를 결정하는 일 예를 설명한다.
도 36a 내지 도 36c는 일 실시예에 따른 픽셀 쉐이더가 프레임에 포함된 픽셀들 각각에 대응하는 컬러를 결정하는 일 예를 설명하기 위한 도면들이다.
도 36a는 프레임(3610)에 포함된 픽셀들 각각의 주회 횟수를 도시한 도면이고, 도 36b는 제 1 규칙에 따라 픽셀들 각각에 컬러 값이 할당된 결과를 도시한 도면이다. 또한, 도 36c는 제 2 규칙에 따라 픽셀들 각각에 컬러 값이 할당된 결과를 도시한 도면이다.
도 36a를 참조하면, 영역(3611)에 포함된 픽셀들은 각각 주회 횟수가 0으로 연산되어 있으며, 영역(3612)에 포함된 픽셀들은 각각 주회 횟수가 +1로 연산되어 있으며, 영역(3613)에 포함된 픽셀들은 각각 주회 횟수가 +2로 연산되어 있다.
일 예로서, 픽셀 쉐이더는 제 1 규칙에 기초하여 픽셀들 각각에 대응하는 컬러를 결정할 수 있다. 여기에서, 제 1 규칙은 주회 횟수가 0이 아닌 값을 갖는 픽셀들에 컬러 값을 할당하는 것을 의미한다. 도 36b를 참조하면, 픽셀 쉐이더는, 제 1 규칙에 따라, 도 36a에 도시된 영역(3612) 및 영역(3613)에 포함된 픽셀들에는 컬러를 설정하고, 영역(3611)에 포함된 픽셀들에는 컬러를 설정하지 않는 것으로 결정한다.
다른 예로서, 픽셀 쉐이더는 제 2 규칙에 기초하여 픽셀들 각각에 대응하는 컬러를 결정할 수 있다. 여기에서, 제 2 규칙은 주회 횟수가 홀수인 값을 갖는 픽셀들에 컬러 값을 할당하는 것을 의미한다. 여기에서, 홀수는 픽셀의 주회 횟수의 절대값이 홀수인 경우를 의미한다. 예를 들어, 주회 횟수가 +3인 경우도 홀수로 판단되고, 주회 횟수가 -3인 경우도 홀수로 판단된다. 또한, 주회 횟수가 0인 경우는 짝수로 판단된다. 도 36c를 참조하면, 픽셀 쉐이더는, 제 2 규칙에 따라, 도 36a에 도시된 영역(3612)에 포함된 픽셀들에는 컬러를 설정하고, 영역(3611) 및 영역(3613)에 포함된 픽셀들에는 컬러를 설정하지 않는 것으로 결정한다.
그리고, 픽셀 쉐이더는 컬러가 설정되는 것으로 결정된 픽셀들에 컬러 값을 할당한다.
상술한 바에 따르면, 렌더링 장치(100)가 경로들 각각에 대하여 독립적으로 타일 비닝을 수행할 수 있는바, 렌더링 장치(100)가 동작하는데 소요되는 시간 및 비용(예를 들어, 전력)이 감소될 수 있다. 또한, 렌더링 장치(100)는 프레임에 포함된 타일들에 대하여 불필요하게 할당된 경로의 식별 값을 제거함으로써, 렌더링 장치(100)의 효율이 더 높아질 수 있다.
또한, 렌더링 장치(100)는 프레임에 포함된 픽셀들 중에서 경로가 통과하는 타일들에 포함된 픽셀들에 대해서만 주회 횟수를 연산함으로써, 렌더링 장치(100)의 연산 속도가 향상될 수 있다. 또한, 렌더링 장치(100)는 스텐실 버퍼의 사용 없이 픽셀들 각각의 주회 횟수를 연산할 수 있는바, 스텐실 버퍼를 사용함으로써 메모리 입출력이 과도하게 발생되는 문제와 중복된 메모리 입출력이 발생되는 문제가 해소된다.
또한, 렌더링 장치(100)는 프레임에 포함된 픽셀들 각각에 대하여 병렬적으로 주회 횟수를 생성함으로써, 고속으로 경로 렌더링을 수행할 수 있으며, 빠른 시간 내에 고해상도의 렌더링을 수행할 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100: 렌더링 장치
110: 입력 어셈블러
120: 버텍스 쉐이더
130: 프리미티브 어셈블러
140: 비닝 수행부
150: 주회 횟수 연산부
160: 렌더 출력부
170: 버퍼

Claims (32)

  1. 타일 비닝(tile binning)을 수행하는 방법에 있어서,
    렌더링의 대상인 객체를 구성하는 경로들 - 상기 경로들은 적어도 하나의 제 1 경로 및 적어도 하나의 제 2 경로를 포함함 - 에 대한 정보를 획득하는 단계;
    상기 경로들의 형상에 따라, 상기 적어도 하나의 제 1 경로를 제 1 그룹으로 분류하고, 상기 적어도 하나의 제 2 경로를 제 2 그룹으로 분류하는 단계; 및
    상기 분류 결과에 기초하여 상기 타일 비닝을 수행하는 단계;를 포함하고,
    상기 제 1 그룹은 적어도 하나의 에지(edge)를 포함하고, 상기 제 2 그룹은 적어도 하나의 커브(curve)를 포함하고,
    상기 적어도 하나의 에지는 서로 다른 두 정점(vertex)들을 연결하는 선분을 의미하고, 상기 적어도 하나의 커브는 서로 다른 두 정점들을 연결하는 곡선을 의미하고,
    상기 타일 비닝을 수행하는 단계는,
    하나의 영상 프레임에 포함되는 복수의 타일들 중, 상기 제 1 경로와 제 1 위치 관계(spatial relationship)를 갖는 타일들 각각의 에지 리스트에 상기 제 1 경로의 식별 값을 할당하고,
    상기 제 2 경로와 제 2 위치 관계를 갖는 타일들 각각의 커브 리스트에 상기 제 2 경로의 식별 값을 할당하고,
    상기 제 1 경로의 식별 값이 할당된 타일들 중 적어도 하나의 타일의 위치에 기초하여, 상기 제 1 경로의 식별 값이 할당된 타일들 중에서 적어도 하나에 할당된 제 1 경로의 식별 값을 제거하는 방법.
  2. 제 1 항에 있어서,
    상기 타일 비닝을 수행하는 단계는
    상기 영상 프레임에 포함된 상기 복수의 타일들 중에서 상기 제 1 경로가 통과하는 타일들을 선택하는 단계; 및
    상기 선택된 타일들 및 상기 선택된 타일들 각각의 일 측 방향에 나열된 적어도 하나의 타일에 상기 제 1 경로의 식별 값을 할당하는 단계;를 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 선택된 타일들은 상기 제 1 경로의 시작 지점을 포함하는 제 1 타일 및 상기 제 1 경로의 종료 지점을 포함하는 제 2 타일을 포함하는 방법.
  4. 제 2 항에 있어서,
    상기 제 1 경로를 구성하는 정점(vertex)들 각각에 대응하는 좌표를 이용하여 상기 프레임에 경계 박스(bounding box)를 설정하는 단계;를 더 포함하고,
    상기 식별 값을 할당하는 단계는 상기 경계 박스 내에 포함된 타일에 상기 식별 값을 할당하는 방법.
  5. 제 1 항에 있어서,
    상기 타일 비닝을 수행하는 단계는
    상기 영상 프레임에 포함된 상기 복수의 타일들 중에서 상기 복수의 타일들 각각에 대응하는 좌표의 수직 방향 성분(vertical direction component)이 동일한 타일들을 선택하고,
    상기 선택된 타일들 중에서, 상기 제 1 경로를 포함하는 타일들의 수평 방향 성분(horizontal direction component)을 비교함으로써 최소 수평 방향 성분을 획득하고,
    상기 선택된 타일들 중에서, 상기 최소 수평 방향 성분보다 작은 수평 방향 성분을 갖는 타일에 할당된 상기 식별 값을 제거하는 방법.
  6. 제 1 항에 있어서,
    상기 타일 비닝을 수행하는 단계는
    상기 영상 프레임에 포함된 상기 복수의 타일들 중에서 상기 복수의 타일들 각각에 대응하는 좌표의 수평 방향 성분이 동일한 타일들을 선택하고,
    상기 선택된 타일들 중에서, 상기 제 1 경로를 포함하는 타일들의 수직 방향 성분을 비교함으로써 최소 수직 방향 성분 및 최대 수직 방향 성분을 획득하고,
    상기 선택된 타일들 중에서, 상기 최소 수직 방향 성분보다 작은 수직 방향 성분을 갖는 타일에 할당된 식별 값 및 상기 최대 수직 방향 성분보다 큰 수직 방향 성분을 갖는 타일에 할당된 상기 식별 값을 제거하는 방법.
  7. 제 1 항에 있어서,
    상기 제 1 경로를 포함하는 타일들 중에서 선택된 제 3 타일의 일 측 방향에 나열된 적어도 하나의 타일의 초기 주회 횟수(initial winding number)를 연산하는 단계;를 더 포함하고,
    상기 제 3 타일은 상기 제 1 경로를 포함하는 타일들 중에서 상기 제 1 경로의 시작 지점을 포함하는 제 1 타일 및 상기 제 1 경로의 종료 지점을 포함하는 제 2 타일이 제외된 타일을 나타내는 방법.
  8. 제 7 항에 있어서,
    상기 초기 주회 횟수를 연산하는 단계는 상기 제 1 경로가 상기 제 3 타일을 통과하는 형태에 기초하여 상기 초기 주회 횟수를 연산하는 방법.
  9. 제 1 항에 있어서,
    상기 타일 비닝을 수행하는 단계는
    상기 영상 프레임에 포함된 상기 복수의 타일들 중에서 상기 제 2 경로에 대응하는 외곽 삼각형을 포함하는 타일들을 선택하는 단계; 및
    상기 선택된 타일들 및 상기 선택된 타일들 각각의 일 측 방향에 나열된 적어도 하나의 타일에 상기 제 2 경로의 식별 값을 할당하는 단계;를 포함하는 방법.
  10. 제 1 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  11. 타일 비닝(tile binning)을 수행하는 장치에 있어서,
    렌더링의 대상인 객체를 구성하는 경로들 - 상기 경로들은 적어도 하나의 제 1 경로 및 적어도 하나의 제 2 경로를 포함함 - 에 대한 정보를 획득하고, 상기 경로의 형상에 따라, 상기 적어도 하나의 제 1 경로를 제 1 그룹으로 분류하고, 상기 적어도 하나의 제 2 경로를 제 2 그룹으로 분류하는 획득부;
    하나의 영상 프레임에 포함되는 복수의 타일들 중, 상기 제 1 경로와 제 1 위치 관계(spatial relationship)를 갖는 타일들 각각의 에지 리스트에 상기 제 1 경로의 식별 값을 할당하고, 상기 제 2 경로와 제 2 위치 관계를 갖는 타일들 각각의 커브 리스트에 상기 제 2 경로의 식별 값을 할당하는 할당부; 및
    상기 제 1 경로의 식별 값이 할당된 타일들 중 적어도 하나의 타일의 위치에 기초하여, 상기 제 1 경로의 식별 값이 할당된 타일들 중에서 적어도 하나에 할당된 제 1 경로의 식별 값을 제거하는 제거부;를 포함하고,
    상기 제 1 그룹은 적어도 하나의 에지(edge)를 포함하고, 상기 제 2 그룹은 적어도 하나의 커브(curve)를 포함하고,
    상기 적어도 하나의 에지는 서로 다른 두 정점(vertex)들을 연결하는 선분을 의미하고, 상기 적어도 하나의 커브는 서로 다른 두 정점들을 연결하는 곡선을 의미하는 장치.
  12. 제 11 항에 있어서,
    상기 할당부는
    상기 영상 프레임에 포함된 상기 복수의 타일들 중에서 상기 제 1 경로가 통과하는 타일들을 선택하고,
    상기 선택된 타일들 및 상기 선택된 타일들 각각의 일 측 방향에 나열된 적어도 하나의 타일에 상기 제 1 경로의 식별 값을 할당하는 장치.
  13. 제 12 항에 있어서,
    상기 선택된 타일들은 상기 제 1 경로의 시작 지점을 포함하는 제 1 타일 및 상기 제 1 경로의 종료 지점을 포함하는 제 2 타일을 포함하는 장치.
  14. 제 12 항에 있어서,
    상기 제 1 경로를 구성하는 정점(vertex)들 각각에 대응하는 좌표를 이용하여 상기 프레임에 경계 박스(bounding box)를 설정하는 설정부;를 더 포함하고,
    상기 할당부는 상기 경계 박스 내에 포함된 타일에 상기 식별 값을 할당하는 장치.
  15. 제 11 항에 있어서,
    상기 제거부는
    상기 영상 프레임에 포함된 상기 복수의 타일들 중에서 상기 복수의 타일들 각각에 대응하는 좌표의 수직 방향 성분(vertical direction component)이 동일한 타일들을 선택하고,
    상기 선택된 타일들 중에서, 상기 제 1 경로를 포함하는 타일들의 수평 방향 성분(horizontal direction component)을 비교함으로써 최소 수평 방향 성분을 획득하고,
    상기 선택된 타일들 중에서, 상기 최소 수평 방향 성분보다 작은 수평 방향 성분을 갖는 타일에 할당된 상기 식별 값을 제거하는 장치.
  16. 제 11 항에 있어서,
    상기 제거부는
    상기 영상 프레임에 포함된 상기 복수의 타일들 중에서 상기 복수의 타일들 각각에 대응하는 좌표의 수평 방향 성분이 동일한 타일들을 선택하고,
    상기 선택된 타일들 중에서, 상기 제 1 경로를 포함하는 타일들의 수직 방향 성분을 비교함으로써 최소 수직 방향 성분 및 최대 수직 방향 성분을 획득하고,
    상기 선택된 타일들 중에서, 상기 최소 수직 방향 성분보다 작은 수직 방향 성분을 갖는 타일에 할당된 식별 값 및 상기 최대 수직 방향 성분보다 큰 수직 방향 성분을 갖는 타일에 할당된 상기 식별 값을 제거하는 장치.
  17. 제 11 항에 있어서,
    상기 제 1 경로를 포함하는 타일들 중에서 선택된 제 3 타일의 일 측 방향에 나열된 적어도 하나의 타일의 초기 주회 횟수(initial winding number)를 연산하는 연산부;를 더 포함하고,
    상기 제 3 타일은 상기 제 1 경로를 포함하는 타일들 중에서 상기 제 1 경로의 시작 지점을 포함하는 제 1 타일 및 상기 제 1 경로의 종료 지점을 포함하는 제 2 타일이 제외된 타일을 포함하는 장치.
  18. 제 17 항에 있어서,
    상기 연산부는 상기 제 1 경로가 상기 제 3 타일을 통과하는 형태에 기초하여 상기 초기 주회 횟수를 연산하는 장치.
  19. 타일 기반 렌더링(tile-based rendering)을 수행하는 방법에 있어서,
    상기 렌더링의 대상인 객체를 구성하는 경로들 - 상기 경로들은 적어도 하나의 제 1 경로 및 적어도 하나의 제 2 경로를 포함함 - 에 대한 정보를 획득하는 단계;
    상기 경로들의 형상에 따라, 상기 적어도 하나의 제 1 경로를 제 1 그룹으로 분류하고, 상기 적어도 하나의 제 2 경로를 제 2 그룹으로 분류하는 단계;
    상기 제 1 그룹에 포함된 경로와 상기 제 2 그룹에 포함된 경로를 구분하여 타일 비닝을 수행하는 단계; 및
    상기 제 1 경로 및 상기 제 2 경로 각각의 위치 및 진행 방향에 기초하여 하나의 영상 프레임에 포함된 복수의 타일들 각각의 주회 횟수를 연산하고, 상기 연산된 주회 횟수에 기초하여 상기 영상 프레임에 포함된 픽셀들을 쉐이딩하는 단계;를 포함하고,
    상기 제 1 그룹은 적어도 하나의 에지(edge)를 포함하고, 상기 제 2 그룹은 적어도 하나의 커브(curve)를 포함하고,
    상기 적어도 하나의 에지는 서로 다른 두 정점(vertex)들을 연결하는 선분을 의미하고, 상기 적어도 하나의 커브는 서로 다른 두 정점들을 연결하는 곡선을 의미하고,
    상기 타일 비닝을 수행하는 단계는,
    상기 영상 프레임에 포함되는 상기 복수의 타일들 중, 상기 제 1 경로와 제 1 위치 관계(spatial relationship)를 갖는 타일들 각각의 에지 리스트에 상기 제 1 경로의 식별 값을 할당하고,
    상기 제 2 경로와 제 2 위치 관계를 갖는 타일들 각각의 커브 리스트에 상기 제 2 경로의 식별 값을 할당하고,
    상기 제 1 경로의 식별 값이 할당된 타일들 중 적어도 하나의 타일의 위치에 기초하여, 상기 제 1 경로의 식별 값이 할당된 타일들 중에서 적어도 하나에 할당된 제 1 경로의 식별 값을 제거하는 방법.
  20. 제 19 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
KR1020150052459A 2015-04-14 2015-04-14 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치. KR102354989B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020150052459A KR102354989B1 (ko) 2015-04-14 2015-04-14 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.
US14/943,679 US10529098B2 (en) 2015-04-14 2015-11-17 Method and apparatus for performing tile binning for path rendering
JP2016074239A JP6785570B2 (ja) 2015-04-14 2016-04-01 経路レンダリングのためのタイルビニングを行う方法及びその装置
CN201610231505.8A CN106056657B (zh) 2015-04-14 2016-04-14 执行针对路径渲染的图块合并的方法和设备
EP16165416.5A EP3082108B1 (en) 2015-04-14 2016-04-14 Method and apparatus for performing tile binning for path rendering

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150052459A KR102354989B1 (ko) 2015-04-14 2015-04-14 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.

Publications (2)

Publication Number Publication Date
KR20160122496A KR20160122496A (ko) 2016-10-24
KR102354989B1 true KR102354989B1 (ko) 2022-01-24

Family

ID=55860684

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150052459A KR102354989B1 (ko) 2015-04-14 2015-04-14 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.

Country Status (5)

Country Link
US (1) US10529098B2 (ko)
EP (1) EP3082108B1 (ko)
JP (1) JP6785570B2 (ko)
KR (1) KR102354989B1 (ko)
CN (1) CN106056657B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2526598B (en) * 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
US10591915B2 (en) * 2017-08-03 2020-03-17 Mitsubishi Electric Research Laboratories, Inc. Motion controller for real-time continuous curvature path planning
KR20200073697A (ko) 2018-12-14 2020-06-24 삼성전자주식회사 경로를 포함하는 객체를 렌더링하는 장치, 이를 포함하는 컴퓨팅 장치 및 이의 렌더링 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100265254A1 (en) * 2009-04-17 2010-10-21 Arm Limited Graphics filled shape drawing
US20110261059A1 (en) 2010-04-27 2011-10-27 Gary Keall Method And System For Decomposing Complex Shapes Into Curvy RHTS For Rasterization
US20110285724A1 (en) * 2010-05-21 2011-11-24 Kilgard Mark J Conversion of dashed strokes into quadratic bèzier segment sequences
US20130113799A1 (en) * 2011-11-09 2013-05-09 Samsung Electronics Co., Ltd. Apparatus and method for tile binning
US20140160125A1 (en) 2012-12-07 2014-06-12 Samsung Electronics Co., Ltd. Apparatus and method for rendering bezier curve

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL113616C (ko) * 1954-06-18
JP4365950B2 (ja) * 1998-09-11 2009-11-18 キヤノン株式会社 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置
US6784884B1 (en) * 2000-09-29 2004-08-31 Intel Corporation Efficient parametric surface binning based on control points
US7110003B2 (en) * 2000-12-22 2006-09-19 Canon Kabushiki Kaisha Rendering objects
JP3507057B2 (ja) * 2002-06-03 2004-03-15 三菱電機株式会社 三角形ポリゴン描画装置および三角形ポリゴン描画方法
US7301537B2 (en) 2002-12-20 2007-11-27 Telefonaktiebolaget Lm Ericsson (Publ) Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal
AU2003903448A0 (en) * 2003-06-26 2003-07-17 Canon Kabushiki Kaisha A method for tracking depths in a scanline based raster image processor
US7764287B2 (en) * 2003-07-07 2010-07-27 Arcsoft, Inc. Graphic engine for approximating a quadratic bezier curve in a resource-constrained device
US7167171B2 (en) * 2004-06-29 2007-01-23 Intel Corporation Methods and apparatuses for a polygon binning process for rendering
CN1259541C (zh) * 2005-01-21 2006-06-14 清华大学 基于双频激光器的自混合干涉位移传感器
GB0524804D0 (en) * 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
US7408553B1 (en) * 2005-12-15 2008-08-05 Nvidia Corporation Inside testing for paths
KR100762811B1 (ko) 2006-07-20 2007-10-02 삼성전자주식회사 하프 플레인 에지 함수를 이용한 타일 비닝 방법 및 시스템
US8139058B2 (en) 2006-11-03 2012-03-20 Vivante Corporation Hierarchical tile-based rasterization algorithm
US8228561B2 (en) * 2007-03-30 2012-07-24 Xerox Corporation Method and system for selective bitmap edge smoothing
US20090046098A1 (en) * 2007-08-14 2009-02-19 Stmicroelectronics S.R.L. Primitive binning method for tile-based rendering
US8059119B2 (en) 2007-12-05 2011-11-15 Stmicroelectronics S.R.L. Method for detecting border tiles or border pixels of a primitive for tile-based rendering
US8072452B1 (en) * 2008-04-18 2011-12-06 Adobe Systems Incorporated Efficient multi-resolution curve rendering
CN101685544B (zh) * 2008-09-28 2011-11-23 北大方正集团有限公司 一种简化复杂路径的方法及装置
JP5172640B2 (ja) * 2008-12-18 2013-03-27 三菱電機株式会社 ベクトル図形描画装置
KR101609266B1 (ko) * 2009-10-20 2016-04-21 삼성전자주식회사 타일 기반의 랜더링 장치 및 방법
KR101683556B1 (ko) * 2010-01-06 2016-12-08 삼성전자주식회사 타일 기반의 렌더링 장치 및 렌더링 방법
US8593466B2 (en) * 2010-06-08 2013-11-26 Intel Corporation Tile rendering for image processing
US8339409B2 (en) * 2011-02-16 2012-12-25 Arm Limited Tile-based graphics system and method of operation of such a system
KR20120135819A (ko) 2011-06-07 2012-12-17 주식회사 에이디칩스 그래픽 가속기의 스캔라인 기반 렌더링 방법
KR101799978B1 (ko) * 2011-06-17 2017-11-22 삼성전자주식회사 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치
KR20130105088A (ko) * 2012-03-16 2013-09-25 삼성전자주식회사 복수의 픽셀 코어를 제어하는 타일 기반 렌더링 장치 및 방법
CN103390288B (zh) * 2012-05-09 2016-04-27 上海幻维数码创意科技有限公司 三维渲染文件批量拆分渲染层处理系统
KR101980200B1 (ko) 2012-07-12 2019-05-20 삼성전자주식회사 베이지어 커브에 대한 타일 비닝을 수행하는 그래픽 처리 장치 및 방법
US9330495B2 (en) * 2012-08-09 2016-05-03 Qualcomm Incorporated Extending DX11 GPU for programmable vector graphics
US9619853B2 (en) * 2012-08-09 2017-04-11 Qualcomm Incorporated GPU-accelerated path rendering
KR102089471B1 (ko) * 2012-11-30 2020-03-17 삼성전자주식회사 타일 기반 렌더링 방법 및 장치
JP6214236B2 (ja) * 2013-03-05 2017-10-18 キヤノン株式会社 画像処理装置、撮像装置、画像処理方法、及びプログラム
US9483861B2 (en) 2013-03-15 2016-11-01 Qualcomm Incorporated Tile-based rendering
KR102048885B1 (ko) * 2013-05-09 2019-11-26 삼성전자 주식회사 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 렌더링 방법
KR102116708B1 (ko) * 2013-05-24 2020-05-29 삼성전자 주식회사 그래픽스 프로세싱 유닛
US9384570B2 (en) * 2013-09-16 2016-07-05 Nvidia Corporation Efficient setup and evaluation of filled cubic bezier paths
KR102122454B1 (ko) * 2013-10-02 2020-06-12 삼성전자주식회사 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US20150178961A1 (en) * 2013-12-20 2015-06-25 Nvidia Corporation System, method, and computer program product for angular subdivision of quadratic bezier curves
EP2985735B1 (en) 2014-08-11 2019-12-04 Samsung Electronics Co., Ltd Method and apparatus for performing tile-based path rendering
KR102426669B1 (ko) * 2015-08-03 2022-07-28 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치.

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100265254A1 (en) * 2009-04-17 2010-10-21 Arm Limited Graphics filled shape drawing
US20110261059A1 (en) 2010-04-27 2011-10-27 Gary Keall Method And System For Decomposing Complex Shapes Into Curvy RHTS For Rasterization
US20110285724A1 (en) * 2010-05-21 2011-11-24 Kilgard Mark J Conversion of dashed strokes into quadratic bèzier segment sequences
US20130113799A1 (en) * 2011-11-09 2013-05-09 Samsung Electronics Co., Ltd. Apparatus and method for tile binning
US20140160125A1 (en) 2012-12-07 2014-06-12 Samsung Electronics Co., Ltd. Apparatus and method for rendering bezier curve

Also Published As

Publication number Publication date
EP3082108A3 (en) 2016-11-02
JP2016201107A (ja) 2016-12-01
US20160307342A1 (en) 2016-10-20
US10529098B2 (en) 2020-01-07
KR20160122496A (ko) 2016-10-24
EP3082108A2 (en) 2016-10-19
CN106056657B (zh) 2021-08-17
EP3082108B1 (en) 2021-06-09
JP6785570B2 (ja) 2020-11-18
CN106056657A (zh) 2016-10-26

Similar Documents

Publication Publication Date Title
KR102238651B1 (ko) 경로 렌더링을 수행하는 방법 및 장치.
US11694393B2 (en) Method and apparatus for performing tile-based path rendering
KR102116708B1 (ko) 그래픽스 프로세싱 유닛
KR102354989B1 (ko) 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.
CN105701852B (zh) 用于渲染的设备和方法
EP2927877B1 (en) Method and apparatus for rendering same regions of multi frames
US20160117855A1 (en) Rendering apparatus and method
KR102399686B1 (ko) 3d 렌더링 방법 및 장치
KR20130092055A (ko) 영상 처리 장치 및 방법
KR102423767B1 (ko) 타일 기반 경로 렌더링을 수행하는 방법 및 장치.
KR102426669B1 (ko) 경로 렌더링을 수행하는 방법 및 장치.
KR102618560B1 (ko) 경로 렌더링을 수행하는 방법 및 장치
KR102426667B1 (ko) 경로 렌더링에서 에일리어싱을 방지하는 방법 및 장치.
US20160267701A1 (en) Apparatus and method of rendering frame by adjusting processing sequence of draw commands
KR20160131457A (ko) 커브 렌더링을 수행하는 방법 및 장치.
KR20140070316A (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
GRNT Written decision to grant