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

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

Info

Publication number
KR102618560B1
KR102618560B1 KR1020160074724A KR20160074724A KR102618560B1 KR 102618560 B1 KR102618560 B1 KR 102618560B1 KR 1020160074724 A KR1020160074724 A KR 1020160074724A KR 20160074724 A KR20160074724 A KR 20160074724A KR 102618560 B1 KR102618560 B1 KR 102618560B1
Authority
KR
South Korea
Prior art keywords
tiles
path
tile
primitive
frame
Prior art date
Application number
KR1020160074724A
Other languages
English (en)
Other versions
KR20170141535A (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 KR1020160074724A priority Critical patent/KR102618560B1/ko
Priority to US15/392,005 priority patent/US10134184B2/en
Publication of KR20170141535A publication Critical patent/KR20170141535A/ko
Application granted granted Critical
Publication of KR102618560B1 publication Critical patent/KR102618560B1/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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • 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

Landscapes

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

Abstract

경로(path)를 포함하는 객체를 렌더링하는 방법에 있어서, 프레임을 분할하는 기준선(split line)을 결정하는 단계; 프레임에 포함된 타일들 중 경로가 통과하는 제1 타일 및 제1 타일과 기준선 사이에 위치하는 적어도 하나의 타일에 대하여 경로에 대한 정보를 할당하는 단계; 및 할당된 경로에 대한 정보에 기초하여, 경로에 대한 정보가 할당된 타일들 각각의 주회 횟수(winding number)를 결정하는 단계를 포함하는 방법이 개시된다.

Description

경로 렌더링을 수행하는 방법 및 장치 {METHOD AND APPARATUS FOR PERFORMING PATH RENDERING}
경로 렌더링을 수행하는 방법 및 장치에 관한다.
근래에 벡터 그래픽스(vector graphics) 또는 경로 렌더링(path rendering)을 수행하는 경우 그래픽 처리 장치(Graphics Processing Unit, 이하 GPU 라고 함)의 가속 성능을 향상시키기 위한 방법이 연구되고 있다. 다만, 3차원 그래픽을 가속시키기 위해 모든 입력 데이터가 삼각형(triangle)으로 구성된다는 가정 하에 GPU의 하드웨어 구조가 설계되나, 경로 렌더링의 경우 입력 데이터가 삼각형들로 구성되지 않고 커맨드(command)와 정점(vertex) 들의 조합으로 구성되어 있다. 따라서, 경로 렌더링을 수행할 때에 GPU의 가속 성능을 향상시키기 어렵다.
경로 렌더링을 수행하는 방법 및 장치를 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른 경로를 포함하는 객체를 렌더링하는 방법은, 프레임을 분할하는 기준선(split line)을 결정하는 단계; 프레임에 포함된 타일들 중 경로가 통과하는 제1 타일 및 제1 타일과 기준선 사이에 위치하는 적어도 하나의 타일에 대하여 경로에 대한 정보를 할당하는 단계; 및 경로에 기초하여, 경로에 대한 정보가 할당된 타일들 각각의 주회 횟수(winding number)를 결정하는 단계를 포함한다.
또한, 기준선은 프레임을 좌우로 분할하는 수직선 또는 프레임을 상하로 분할하는 수평선인 것을 특징으로 할 수 있다.
또한, 기준선을 결정하는 단계는, 프레임을 복수의 부분 프레임들로 분할하는 복수의 기준선들을 결정하는 단계를 포함하고, 경로에 대한 정보를 할당하는 단계는, 제1 타일과 제1 타일이 포함된 부분 프레임에 할당된 기준선 사이에 위치하는 적어도 하나의 타일에 대하여 경로에 대한 정보를 할당할 수 있다.
또한, 경로에 대한 정보를 할당하는 단계는, 제1 타일로부터 기준선까지의 수선(perpendicular)상에 위치하는 적어도 하나의 타일에 대하여 경로에 대한 정보를 할당할 수 있다.
또한, 경로는 복수의 프리미티브들(primitives)을 포함하고, 경로에 대한 정보를 할당하는 단계는, 제1 타일을 통과하는 제1 프리미티브에 대한 정보를 제1 타일 및 제1 타일과 기준선 사이에 위치하는 적어도 하나의 타일에 대하여 할당할 수 있다.
또한, 경로에 대한 정보를 할당하는 단계는, 제1 타일과 기준선 사이에 제2 프리미티브가 통과하는 제2 타일이 존재하는 경우, 제2 타일 및 제2 타일과 기준선 사이에 위치하는 적어도 하나의 타일에 대하여 제2 프리미티브에 대한 정보를 추가적으로 할당할 수 있다.
또한, 주회 횟수를 결정하는 단계는, 프레임에 포함된 타일들 각각의 초기 주회 횟수를 결정하는 단계; 및 할당된 경로에 대한 정보에 기초하여, 경로에 대한 정보가 할당된 타일들 각각의 주회 횟수를 업데이트하는 단계를 포함할 수 있다.
또한, 주회 횟수를 업데이트하는 단계는, 경로가 제1 타일을 통과하는 방향에 기초하여 주회 횟수를 업데이트할 수 있다.
다른 측면에 따른 경로를 포함하는 객체를 렌더링하는 장치는, 프레임을 분할하는 기준선을 결정하고, 프레임에 포함된 타일들 중 경로가 통과하는 제1 타일 및 제1 타일과 기준선 사이에 위치하는 적어도 하나의 타일에 대하여 경로에 대한 정보를 할당하는 경로정보 할당부; 및 경로에 기초하여, 경로에 대한 정보가 할당된 타일들 각각의 주회 횟수를 결정하는 주회 횟수 연산부; 를 포함한다.
또 다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
도 1은 렌더링 장치의 일 예를 도시한 구성도이다.
도 2는 경로 렌더링을 수행하는 방법의 일 예를 나타내는 흐름도이다.
도 3은 화면을 반으로 분할하여 기준선을 설정하는 방법의 예시를 도시한 도면이다.
도 4a 내지 도 4c는 각 프리미티브의 위치에 기초하여 기준선을 설정하는 방법의 예시를 도시한 도면이다.
도 5는 경로를 포함하는 바운딩 박스에 기초하여 기준선을 설정하는 방법의 예시를 도시한 도면이다.
도 6은 프레임을 좌우로 분할하는 수직선 또는 프레임을 상하로 분할하는 수평선을 기준선으로 설정하는 방법의 예시를 도시한 도면이다.
도 7은 프레임을 상하로 분할하는 수평선을 기준선으로 설정하는 방법의 예시를 도시한 도면이다.
도 8은 복수의 기준선들을 사용하는 방법의 예시를 도시한 도면이다.
도 9는 복수의 기준선들을 사용하여 프레임을 분할하는 일 예를 도시한 도면이다.
도 10은 경로 렌더링을 수행하는 방법의 예시를 도시한 흐름도이다.
도 11은 경로 렌더링을 수행하는 장치의 예시를 도시한 블록도이다.
실시 예들에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…부”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 실시예들을 상세히 설명한다.
도 1은 렌더링 장치의 일 예를 도시한 구성도이다.
도 1을 참조하면, 렌더링 장치(100)는 경로정보 할당부(110) 및 주회 횟수 연산부(120)를 포함한다. 도 1에 도시된 렌더링 장치(100)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있다.
또한, 도 1에 도시된 렌더링 장치(100)의 경로정보 할당부(110)및 주회 횟수 연산부(120)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
예를 들어, 경로정보 할당부(110) 및 주회 횟수 연산부(120)는 중앙 처리 장치(Central Processing Unit)에 포함된 하나 또는 복수 개의 프로세서에 해당할 수 있다. 또한, 경로정보 할당부(110) 및 주회 횟수 연산부(120)는 그래픽 처리 장치(Graphics Processing Unit)에 포함된 하나 또는 복수 개의 프로세서에 해당할 수 있다.
경로(path)는 렌더링 장치(100)가 렌더링을 수행하는 대상(예를 들어, 객체)을 구성하는 요소일 수 있다. 또한, 프리미티브(primitive)는 경로를 구성하는 요소일 수 있다. 예를 들어, 프리미티브는 일 지점에서 다른 지점까지 이어진 직선 또는 곡선일 수 있으며, 경로는 하나 이상의 프리미티브가 연결되어 형성된 폐다각형(closed polygon) 또는 폐경로(closed path)를 포함할 수 있다. 이 경우, 프리미티브는 경로를 구성하는 모서리(edge) 또는 곡선(curve)을 의미할 수 있다. 객체는 하나 이상의 경로를 포함하는 문자 또는 그림일 수 있다.
경로를 포함하는 객체를 렌더링하는 렌더링 장치(100)에 있어서, 경로정보 할당부(110)는 객체를 포함하는 프레임을 분할하는 기준선(split line)을 결정한다. 프레임을 분할하는 방법은 제한되지 않는다. 기준선은 프레임을 좌우로 분할하는 수직선 또는 프레임을 상하로 분할하는 수평선일 수 있다.
기준선이 프레임을 좌우로 분할하는 수직선일 경우, 경로정보 할당부(110)는 기준선의 x좌표를 결정함으로써 기준선을 결정할 수 있다. 또한, 기준선이 프레임을 상하로 분할하는 수평선일 경우, 경로정보 할당부(110)는 기준선의 y좌표를 결정함으로써 기준선을 결정할 수 있다.
렌더링 장치(100)는 영상 또는 영상의 일부분을 연속된 작은 크기의 타일들로 나누어 렌더링을 수행할 수 있다. 예를 들어, 렌더링 장치(100)는 동영상 또는 정지 영상을 나타내는 프레임(300), 화면 전체 혹은 일부분을 연속된 작은 크기의 타일들로 나누어 렌더링을 수행할 수 있다. 예를 들어, 하나의 타일에는 32*32 개의 픽셀들이 포함될 수 있으나, 상술한 개수에 한정되지 않는다.
이 경우, 경로정보 할당부(110)는 기준선이 타일을 통과하지 않도록 기준선을 설정할 수 있다. 예를 들어, 경로정보 할당부(110)는 기준선이 타일의 경계선에 위치하도록 기준선을 결정할 수 있다.
기준선이 결정되면, 경로정보 할당부(110)는 타일 비닝(tile binning)을 수행할 수 있다. 타일 비닝은 각 타일의 주회 횟수를 계산하기 위해 고려해야 하는 경로에 대한 정보를 각 타일에 할당하는 작업을 의미할 수 있다. 타일 비닝을 수행함으로써, 렌더링 장치(100)는 주회 횟수를 계산하여야 하는 타일과 주회 횟수를 계산하지 않아도 되는 타일을 구분할 수 있다.
경로정보 할당부(110)는 프레임에 포함된 타일들 중 경로가 통과하는 타일에 경로에 대한 정보를 할당한다. 경로에 대한 정보를 할당한다는 것은, 경로가 통과하는 타일 각각에 대하여, 각 타일을 통과하는 프리미티브에 대한 정보를 할당하는 것을 의미할 수 있다. 타일에 정보를 할당한다는 것은, 타일에 대한 정보가 저장된 저장공간에 정보를 저장하는 것을 의미할 수 있다.
또한, 경로정보 할당부(110)는 경로가 통과하는 타일과 기준선 사이에 위치하는 적어도 하나의 타일에 대하여 경로에 대한 정보를 할당한다. 예를 들어, 경로정보 할당부(110)는 경로가 통과하는 타일로부터 기준선까지의 수선(perpendicular)상에 위치하는 적어도 하나의 타일에 대하여 경로에 대한 정보를 할당할 수 있다. 경로가 통과하는 타일로부터 기준선까지의 수선을 따라가면서 타일에 대하여 경로에 대한 정보를 할당하는 동작을 이하 스프레딩(spreading)이라고 표현한다.
경로정보 할당부(110)는 프레임을 복수의 부분 프레임들로 분할하는 복수의 기준선들을 결정할 수 있다. 복수의 기준선들과 복수의 부분 프레임들이 존재하는 경우, 경로정보 할당부(110)는 각 부분 프레임에 대하여 타일 비닝에 사용할 기준선을 할당할 수 있다. 각 부분 프레임에 대하여 기준선이 할당되면, 각 부분 프레임은 할당된 기준선을 향하여 스프레딩을 수행할 수 있다.
예를 들어, 경로정보 할당부(110)는 부분 프레임의 일측 모서리와 겹쳐지는 기준선을 부분 프레임에 할당할 수 있다. 부분 프레임의 복수의 모서리들이 복수의 기준선들과 겹쳐지는 경우, 경로정보 할당부(110)는 부분 프레임의 모서리와 일치하는 기준선을 부분 프레임에 할당할 수 있다.
주회 횟수 연산부(120)는 할당된 경로에 대한 정보에 기초하여, 경로에 대한 정보가 할당된 타일들 각각의 주회 횟수를 결정한다. 주회 횟수 연산부(120)는 프레임에 포함된 각 타일에 대하여 초기 주회 횟수를 할당할 수 있다. 주회 횟수 연산부(120)는 할당된 경로에 대한 정보에 기초하여, 경로에 대한 정보가 할당된 타일들 각각의 주회 횟수를 업데이트할 수 있다. 예를 들어, 주회 횟수 연산부(120)는 타일로부터 기준선까지의 가상의 반직선을 도시할 수 있다. 주회 횟수 연산부(120)는 가상의 반직선과 타일에 할당된 경로가 만나는 지점에서 경로의 진행방향에 따라 주회 횟수를 더하거나 뺄 수 있다.
주회 횟수 연산부(120)는 경로에 대한 정보가 할당되지 않은 타일들의 주회 횟수는 초기 주회 횟수로 결정할 수 있다. 예를 들어, 초기 주회 횟수는 0일 수 있으나, 이에 제한되지 않는다.
이하, 도 2를 참조하여 렌더링 장치(100)가 동작하는 일 예를 구체적으로 설명한다.
도 2는 경로 렌더링을 수행하는 방법의 일 예를 나타내는 흐름도이다.
도 2를 참조하면, 경로를 포함하는 객체를 렌더링하는, 경로 렌더링을 수행하는 방법은 도 1에 도시된 렌더링 장치(100)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 도 2의 렌더링 방법에 대하여 생략된 내용이라 하더라도 도 1의 렌더링 장치(100)에 대하여 설명된 내용은 도 2의 렌더링 방법에도 적용될 수 있다.
단계 210에서, 렌더링 장치(100)는 프레임을 분할하는 기준선을 결정한다. 기준선은 프레임을 좌우로 분할하는 수직선 또는 프레임을 상하로 분할하는 수평선일 수 있으나, 이에 제한되지 않는다. 렌더링 장치(100)는 프레임을 복수의 부분 프레임들로 분할하는 복수의 기준선들을 결정할 수 있다. 이 경우, 렌더링 장치(100)는 부분 프레임들 각각에 대하여 기준선을 하나씩 할당할 수 있다. 하나의 기준선이 복수의 부분 프레임들에 대하여 할당될 수도 있다. 부분 프레임들 각각은 할당된 기준선에 기초하여 타일 비닝을 수행할 수 있다.
단계 220에서, 렌더링 장치(100)는 프레임에 포함된 타일들 중 경로가 통과하는 타일에 대하여 경로에 대한 정보를 할당한다. 또한, 렌더링 장치(100)는 경로가 통과하는 타일과 기준선 사이에 위치하는 적어도 하나의 타일에 대하여 경로에 대한 정보를 할당한다. 예를 들어, 렌더링 장치(100)는 경로가 통과하는 타일로부터 기준선까지의 수선 상에 위치하는 적어도 하나의 타일에 대하여 경로에 대한 정보를 할당할 수 있다.
프레임을 복수의 부분 프레임들로 분할하는 복수의 기준선들이 존재하는 경우, 렌더링 장치(100)는 경로가 통과하는 타일과, 경로가 통과하는 타일이 포함된 부분 프레임에 할당된 기준선 사이에 위치하는 적어도 하나의 타일에 대하여 경로에 대한 정보를 할당할 수 있다.
단계 230에서, 렌더링 장치(100)는 할당된 경로에 대한 정보에 기초하여, 경로에 대한 정보가 할당된 타일들 각각의 주회 횟수를 결정한다. 렌더링 장치(100)는 프레임에 포함된 타일들 각각의 초기 주회 횟수를 결정할 수 있다. 렌더링 장치(100)는 할당된 경로에 대한 정보에 기초하여, 경로에 대한 정보가 할당된 타일들 각각의 주회 횟수를 업데이트할 수 있다. 예를 들어, 렌더링 장치(100)는 경로가 타일을 통과하는 방향에 기초하여 주회 횟수를 업데이트할 수 있다.
여기에서, 주회 횟수는, 특정 픽셀의 일 측면에 대하여, 경로가 그려지는 동안 경로가 몇 바퀴 회전되는가를 나타내는 미리 결정된 값일 수 있다. 주회 횟수는 경로가 시계 방향으로 회전하는 경우에는 미리 결정된 값을 증산하고, 경로가 반시계 방향으로 회전하는 경우에는 미리 결정된 값을 감산함으로써 연산될 수 있으나, 반대의 방식으로 연산될 수도 있다. 다시 말해, 주회 횟수는 경로가 시계 방향으로 회전하는 경우에는 미리 결정된 값을 감산하고, 경로가 반시계 방향으로 회전하는 경우에는 미리 결정된 값을 증산함으로써 연산될 수도 있다. 미리 결정된 값은 정수(예를 들어, 1)가 될 수 있으나, 이에 한정되지 않는다.
주회 횟수를 계산하기 위하여, 렌더링 장치(100)는 특정 픽셀의 위치에서 일 측면으로 가상의 반직선을 도시할 수 있다. 렌더링 장치(100)는 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 그려지는 방향을 관찰하여, 주회 횟수를 계산할 수 있다.
일 예로, 경로가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 +1이 될 수 있고, 경로가 반시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 -1이 될 수 있다. 이 경우, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 아래 방향으로 그려진다면, 픽셀의 주회 횟수는 +1이 될 수 있다. 또한, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 위쪽 방향으로 그려진다면, 픽셀의 주회 횟수는 -1이 될 수 있다.
다른 예로, 경로가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 -1이 될 수 있고, 경로가 반시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 +1이 될 수 있다. 이 경우, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 아래 방향으로 그려진다면, 픽셀의 주회 횟수는 -1이 될 수 있다. 또한, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 위쪽 방향으로 그려진다면, 픽셀의 주회 횟수는 +1이 될 수 있다.
이하에서는 설명의 편의를 위하여, 경로가 시계 방향으로 한 바퀴 회전하는 경우의 주회 횟수가 +1, 경로가 반시계 방향으로 한 바퀴 회전하는 경우의 주회 횟수가 -1이 되는 것으로 가정하여 설명한다.
도 3은 화면을 반으로 분할하여 기준선을 설정하는 방법의 예시를 도시한 도면이다.
도 3에는 프리미티브 e0(310), e1(320) 및 e2(330) 로 구성된 경로를 포함하는 프레임(300)이 도시되어 있다. 프리미티브는 렌더링 장치(100)가 렌더링을 수행하는 대상(예를 들어, 경로)을 구성하는 요소일 수 있다. 예를 들어, 프리미티브는 일 지점에서 다른 지점까지 이어진 직선 또는 곡선일 수 있으며, 경로는 하나 이상의 프리미티브가 연결되어 형성된 폐다각형(closed polygon) 또는 폐경로(closed path)를 포함할 수 있다. 경로가 폐다각형일 경우, 폐다각형의 각 모서리(edge)가 하나의 프리미티브가 될 수 있다.
도 3에 도시된 바와 같이, 렌더링 장치(100)는 영상 또는 영상의 일부분을 연속된 작은 크기의 타일들로 나누어 렌더링을 수행할 수 있다. 예를 들어, 렌더링 장치(100)는 동영상 또는 정지 영상을 나타내는 프레임(300), 화면 전체 혹은 일부분을 연속된 작은 크기의 타일들로 나누어 렌더링을 수행할 수 있다.
렌더링 장치(100)는 각 타일의 주회 횟수를 계산할 수 있다. 타일의 주회 횟수는 그 타일에 포함된 픽셀들 각각의 주회 횟수를 의미하며, 경로의 통과 여부에 따라 타일의 모든 픽셀들은 동일한 주회 횟수를 가질 수도 있고 각각 다른 주회 횟수를 가질 수도 있다.
각 타일의 주회 횟수를 계산하기 위하여, 렌더링 장치(100)는 타일 비닝(tile binning)을 수행할 수 있다. 타일 비닝은 각 타일의 주회 횟수를 계산하기 위해 고려해야 하는 프리미티브를 각 타일에 할당하는 작업을 의미할 수 있다. 타일 비닝을 수행함으로써, 렌더링 장치(100)는 주회 횟수를 계산하여야 하는 타일과 주회 횟수를 계산하지 않아도 되는 타일을 구분할 수 있다. 렌더링 장치(100)는 프레임(300)에 포함된 각 타일에 대하여 초기 주회 횟수를 할당할 수 있다. 이 경우, 주회 횟수를 계산하지 않아도 되는 타일의 주회 횟수는 초기 주회 횟수가 될 수 있다. 예를 들어, 초기 주회 횟수는 0일 수 있으나, 이에 제한되지 않는다.
렌더링 장치(100)는 프레임(300)의 기준선(350)을 설정하고, 설정된 기준선(350)에 기초하여 타일 비닝을 수행할 수 있다. 예를 들어, 렌더링 장치(100)는 프레임(300)을 반으로 분할하도록 프레임(300)의 중앙에 기준선(350)을 설정할 수 있다.
렌더링 장치(100)는 경로가 통과하는 타일 및 경로가 통과하는 타일과 기준선 사이에 위치하는 타일들 각각에 대하여 경로에 대한 정보를 할당할 수 있다. 예를 들어, 렌더링 장치(100)는 프리미티브 e0(310)가 통과하는 타일 D1, D2, E2, E3, E4, E5, F5 및 F6 에 대하여 프리미티브 e0(310)를 할당할 수 있다. 렌더링 장치(100)는 프리미티브 e1(320)이 통과하는 타일 F6, F5, F4, G4, G3, G2 및 G1에 대하여 프리미티브 e1(320)을 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e2(330)가 통과하는 타일 D1, E1, F1 및 G1에 대하여 프리미티브 e2(330)를 할당할 수 있다.
렌더링 장치(100)는 각 프리미티브가 통과하는 타일으로부터 기준선(350)까지의 스프레딩을 수행할 수 있다. 프리미티브가 통과하는 타일으로부터 기준선(350)까지의 스프레딩을 수행하는 것은 프리미티브가 통과하는 타일과 기준선(350)사이에 위치하는 타일들 각각에 대하여 프리미티브를 할당하는 것을 의미할 수 있다. 이하에서, 프리미티브를 할당한다는 것은 프리미티브에 대한 정보를 할당하는 것을 의미할 수 있다. 타일에 정보를 할당한다는 것은, 타일에 대한 정보가 저장된 저장공간에 정보를 저장하는 것을 의미할 수 있다.
예를 들어, 렌더링 장치(100)는 프리미티브 e0(310) 및 프리미티브 e1(320)이 통과하는 타일 F6로부터 기준선(350)까지의 스프레딩을 수행할 수 있다. 따라서, 렌더링 장치(100)는 타일 E6에 프리미티브 e0(310) 및 프리미티브 e1(320)을 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e1(320)이 통과하는 각 타일들로부터 기준선(350)까지의 스프레딩을 수행할 수 있다. 따라서, 렌더링 장치(100)는 타일 E1, E2, E3, E4, E5, F1, F2 및 F3에 프리미티브 e1(320)을 할당할 수 있다.
타일 비닝이 종료되면, 렌더링 장치(100)는 프리미티브가 할당된 타일에 대해서만 주회 횟수를 계산함으로써 주회 횟수 계산 속도를 높일 수 있다. 렌더링 장치(100)는 프리미티브가 할당된 타일들 각각에 포함된 픽셀에 대하여, 기준선(350)과 반대 방향으로 가상의 반직선을 도시할 수 있다. 렌더링 장치(100)는 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 그려지는 방향을 관찰하여, 주회 횟수를 계산할 수 있다.
일 예로, 렌더링 장치(100)는 기준선(350) 오른쪽에 위치한 타일들에 대하여 오른쪽 방향으로 가상의 반직선(360)을 도시할 수 있다. 이 경우, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 아래 방향으로 그려진다면, 타일에 포함된 픽셀의 주회 횟수는 +1이 될 수 있다. 또한, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 위쪽 방향으로 그려진다면, 타일에 포함된 픽셀의 주회 횟수는 -1이 될 수 있다.
또한, 렌더링 장치(100)는 기준선(350) 왼쪽에 위치한 타일들에 대하여 왼쪽 방향으로 가상의 반직선(370)을 도시할 수 있다. 이 경우, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 아래 방향으로 그려진다면, 타일에 포함된 픽셀의 주회 횟수는 기준선(350) 오른쪽에 위치한 타일들과는 반대로 -1이 될 수 있다. 또한, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 위쪽 방향으로 그려진다면, 타일에 포함된 픽셀의 주회 횟수는 +1이 될 수 있다.
따라서, 렌더링 장치(100)는 각 타일에 프리미티브를 할당하는 경우, 각 타일 별로 방향에 대한 정보를 추가적으로 저장하여야 한다. 예를 들어, 왼쪽, 오른쪽, 위 및 아래를 구분할 수 있는 2비트를 추가로 사용하여야 한다. 렌더링 장치(100)는 크지 않은 오버헤드를 추가함으로써, 계산 효율을 높일 수 있다.
도 4a 내지 도 4c는 각 프리미티브의 위치에 기초하여 기준선을 설정하는 방법의 예시를 도시한 도면이다.
렌더링 장치(100)는 경로를 구성하는 프리미티브의 x좌표를 이용하여 기준선을 설정할 수 있다. 예를 들어, 렌더링 장치(100)는 각 프리미티브의 시작 정점에 대응하는 x좌표를 이용하여 기준선을 설정할 수 있다. 도 4a 내지 도 4c에 있어서, 경로는 시계 방향으로 그려진다고 가정한다.
도 4a를 참조하면, 렌더링 장치(100)는 프리미티브 e0(410)의 시작 정점(412)의 x좌표를 이용하여 기준선을 설정할 수 있다. 정점(412)이 타일 B1에 위치하므로, 렌더링 장치(100)는 타일 B1 내지 B6 좌측에 수직의 기준선(450)을 설정할 수 있다.
도 3에서 설명한 바와 같이, 렌더링 장치(100)는 프리미티브 e0(410)가 통과하는 타일 B1, B2, C2, C3, C4, C5, D5 및 D6에 프리미티브 e0(410)를 할당할 수 있다. 렌더링 장치(100)는 프리미티브 e1(420)이 통과하는 타일 D6, D5, D4, E4, E3, E2 및 E1에 프리미티브 e1(420)을 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e2(430)가 통과하는 타일 B1, C1, D1 및 E1에 프리미티브 e2(430)를 할당할 수 있다.
렌더링 장치(100)는 스프레딩을 통하여, 프리미티브 e0(410)과 기준선(450) 사이에 위치하는 타일 B2, B3, B4, B5, B6 및 C6에 프리미티브 e0(410)를 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e1(420)와 기준선(450) 사이에 위치하는 타일 B1, B2, B3, B4, B5, B6, C1, C2, C3, C4, C5, C6, D1, D2 및 D3에 프리미티브 e1(420)을 할당할 수 있다.
프리미티브 e0(410)의 시작 정점(412)의 x좌표를 이용하여 기준선(450)을 설정한 결과, 경로가 통과하는 타일들 각각에 총 19개의 프리미티브가 할당되었고, 스프레딩을 통하여 총 20개의 프리미티브가 할당되었다. 경로가 통과하는 타일들 각각에 할당되는 프리미티브의 수는 기준선의 위치와 무관하다. 따라서, 스프레딩을 통하여 할당된 프리미티브의 수가 적을수록 더 효율적인 타일 비닝을 수행한 것으로 판단할 수 있다.
도 4b를 참조하면, 렌더링 장치(100)는 프리미티브 e1(420)의 시작 정점(422)의 x좌표를 이용하여 기준선을 설정할 수 있다. 정점(422)이 타일 D6에 위치하므로, 렌더링 장치(100)는 타일 D1 내지 D6 좌측에 수직의 기준선(460)을 설정할 수 있다.
도 3에서 설명한 바와 같이, 렌더링 장치(100)는 프리미티브 e0(410)가 통과하는 타일 B1, B2, C2, C3, C4, C5, D5 및 D6에 프리미티브 e0(410)를 할당할 수 있다. 렌더링 장치(100)는 프리미티브 e1(420)이 통과하는 타일 D6, D5, D4, E4, E3, E2 및 E1에 프리미티브 e1(420)를 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e2(430)가 통과하는 타일 B1, C1, D1 및 E1에 프리미티브 e2(430)를 할당할 수 있다.
렌더링 장치(100)는 스프레딩을 통하여, 프리미티브 e0(410)와 기준선(460) 사이에 위치하는 타일 C1에 프리미티브 e0(410)를 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e1(420)과 기준선(460) 사이에 위치하는 타일 D1, D2 및 D3에 프리미티브 e1(420)을 할당할 수 있다.
프리미티브 e1(420)의 시작 정점(422)의 x좌표를 이용하여 기준선(460)을 설정한 결과, 경로가 통과하는 타일들 각각에 총 19개의 프리미티브가 할당되었고, 스프레딩을 통하여 총 4개의 프리미티브가 할당되었다. 따라서, 도 4b에 도시된 프레임에서 도 4a에 도시된 프레임보다 더 효율적인 타일 비닝이 수행된 것으로 판단할 수 있다.
도 4c를 참조하면, 렌더링 장치(100)는 프리미티브 e2(430)의 시작 정점(432)의 x좌표를 이용하여 기준선을 설정할 수 있다. 정점(432)이 타일 E1에 위치하므로, 렌더링 장치(100)는 타일 E1 내지 E6 좌측에 수직의 기준선(470)을 설정할 수 있다.
도 3에서 설명한 바와 같이, 렌더링 장치(100)는 프리미티브 e0(410)가 통과하는 타일 B1, B2, C2, C3, C4, C5, D5 및 D6에 프리미티브 e0(410)를 할당할 수 있다. 렌더링 장치(100)는 프리미티브 e1(420)이 통과하는 타일 D6, D5, D4, E4, E3, E2 및 E1에 프리미티브 e1(420)를 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e2(430)가 통과하는 타일 B1, C1, D1 및 E1에 프리미티브 e2(430)를 할당할 수 있다.
렌더링 장치(100)는 스프레딩을 통하여, 프리미티브 e2(430)와 기준선(470) 사이에 위치하는 타일 C1, D1, D2, D3 및 D4에 프리미티브 e2(430)를 할당할 수 있다.
프리미티브 e2(430)의 시작 정점(432)의 x좌표를 이용하여 기준선(470)을 설정한 결과, 경로가 통과하는 타일들 각각에 총 19개의 프리미티브가 할당되었고, 스프레딩을 통하여 총 5개의 프리미티브가 할당되었다. 따라서, 도 4c에 도시된 프레임은 도 4a에 도시된 프레임보다는 더 효율적이지만, 도 4b에 도시된 프레임에 비해서는 조금 덜 효율적인 타일 비닝이 수행된 것으로 판단할 수 있다.
도 5는 경로를 포함하는 바운딩 박스에 기초하여 기준선을 설정하는 방법의 예시를 도시한 도면이다.
도 5를 참조하면, 프리미티브 e0(510), e1(520) 및 e2(530)로 구성된 경로를 포함하는 프레임(500)이 도시되어 있다. 렌더링 장치(100)는 경로를 포함하는 바운딩 박스(540)를 설정할 수 있다. 렌더링 장치(100)는 경로를 포함하는 바운딩 박스(540)에 기초하여 기준선을 설정할 수 있다. 예를 들어, 렌더링 장치(100)는 바운딩 박스(540)의 중앙으로 기준선(550)을 설정할 수 있다.
렌더링 장치(100)는 프리미티브 e0(510)가 통과하는 타일 D1, D2, E2, E3, E4, E5, F5 및 F6에 프리미티브 e0(510)를 할당할 수 있다. 렌더링 장치(100)는 프리미티브 e1(520)이 통과하는 타일 F6, F5, F4, G4, G3, G2 및 G1에 프리미티브 e1(520)를 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e2(530)가 통과하는 타일 D1, E1, F1 및 G1에 프리미티브 e2(530)를 할당할 수 있다.
렌더링 장치(100)는 스프레딩을 통하여, 프리미티브 e0(510)와 기준선(550) 사이에 위치하는 타일 E1에 프리미티브 e0(510)를 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e1(520)과 기준선(550) 사이에 위치하는 타일 F1, F2 및 F3에 프리미티브 e1(520)을 할당할 수 있다.
도 6은 프레임을 좌우로 분할하는 수직선 또는 프레임을 상하로 분할하는 수평선을 기준선으로 설정하는 방법의 예시를 도시한 도면이다.
도 6을 참조하면, 세로로 긴 형태의 바운딩 박스(600) 및 가로로 긴 형태의 바운딩 박스(610)가 도시되어 있다. 렌더링 장치(100)는 바운딩 박스의 형태에 따라, 기준선을 수직선으로 설정하거나 수평선으로 설정할 수 있다. 불필요한 타일 비닝을 줄이기 위해서는, 스프레딩 거리가 짧은 편이 더 좋을 수 있다. 따라서, 렌더링 장치(100)는 세로로 긴 형태의 바운딩 박스(가로보다 세로가 더 긴 형태의 바운딩 박스, 600)의 경우에는 수직선 형태의 기준선(602)을 설정할 수 있다. 또한. 렌더링 장치(100)는 가로로 긴 형태의 바운딩 박스(세로보다 가로가 더 긴 형태의 바운딩 박스, 610)의 경우에는 수평선 형태의 기준선(612)을 설정할 수 있다.
도 7은 프레임을 상하로 분할하는 수평선을 기준선으로 설정하는 방법의 예시를 도시한 도면이다.
도 7을 참조하면, 프레임(700)을 상하로 분할하는 기준선(750)이 도시되어 있다. 기준선(750)은 프레임(700)의 중앙에 위치한 수평선일 수 있다.
렌더링 장치(100)는 프리미티브 e0(710)가 통과하는 타일 B1, B2, C2, C3, C4, C5, D5 및 D6에 프리미티브 e0(710)를 할당할 수 있다. 렌더링 장치(100)는 프리미티브 e1(720)이 통과하는 타일 D6, D5, D4, E4, E3, E2 및 E1에 프리미티브 e1(720)을 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e2(730)가 통과하는 타일 B1, C1, D1 및 E1에 프리미티브 e2(730)를 할당할 수 있다.
렌더링 장치(100)는 스프레딩을 통하여, 프리미티브 e0(710)와 기준선(750) 사이에 위치하는 타일 D4 및 B3에 프리미티브 e0(710)를 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e2(730)와 기준선(750) 사이에 위치하는 타일 B3, B2, C3, C2, D3, D2, E3 및 E2에 프리미티브 e2(730)를 할당할 수 있다.
프레임(700)을 상하로 분할하는 기준선(750)을 이용하여 타일 비닝을 수행한 결과, 경로가 통과하는 타일들 각각에 총 19개의 프리미티브가 할당되었고, 스프레딩을 통하여 총 10개의 프리미티브가 할당되었다. 도 4b를 참조하면, 동일한 경로에 대하여 프레임을 좌우로 분할하는 기준선을 사용하였을 경우 스프레딩을 통하여 총 4개의 프리미티브가 할당되었다. 따라서, 도 4b 및 도 7에 도시된 경로의 경우 프레임을 좌우로 분할하는 기준선을 사용하는 것이 더 효율적일 수 있다.
타일 비닝이 종료되면, 렌더링 장치(100)는 프리미티브가 할당된 타일에 대해서만 주회 횟수를 계산함으로써 주회 횟수 계산 속도를 높일 수 있다. 렌더링 장치(100)는 프리미티브가 할당된 타일들 각각에 포함된 픽셀에 대하여, 기준선(750)과 반대 방향으로 가상의 반직선을 도시할 수 있다. 렌더링 장치(100)는 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 그려지는 방향을 관찰하여, 주회 횟수를 계산할 수 있다.
일 예로, 렌더링 장치(100)는 기준선(750) 위쪽에 위치한 타일들에 대하여 위쪽 방향으로 가상의 반직선(760)을 도시할 수 있다. 이 경우, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 왼쪽 방향으로 그려진다면, 타일에 포함된 픽셀의 주회 횟수는 +1이 될 수 있다. 또한, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 오른쪽 방향으로 그려진다면, 타일에 포함된 픽셀의 주회 횟수는 -1이 될 수 있다.
또한, 렌더링 장치(100)는 기준선(750) 아래쪽에 위치한 타일들에 대하여 아래쪽 방향으로 가상의 반직선(770)을 도시할 수 있다. 이 경우, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 왼쪽 방향으로 그려진다면, 타일에 포함된 픽셀의 주회 횟수는 기준선(750) 위쪽에 위치한 타일들과는 반대로 -1이 될 수 있다. 또한, 가상의 반직선과 경로가 교차하는 지점의 프리미티브가 오른쪽 방향으로 그려진다면, 타일에 포함된 픽셀의 주회 횟수는 +1이 될 수 있다.
도 8은 복수의 기준선들을 사용하는 방법의 예시를 도시한 도면이다.
도 8을 참조하면, 세로로 긴 형태의 바운딩 박스(800) 및 가로로 긴 형태의 바운딩 박스(810)가 도시되어 있다. 렌더링 장치(100)는 바운딩 박스의 형태에 따라, 기준선을 수직선으로 설정하거나 수평선으로 설정할 수 있다. 불필요한 타일 비닝을 줄이기 위해서는, 스프레딩 거리가 짧은 편이 더 좋을 수 있다.
따라서, 렌더링 장치(100)는 스프레딩 거리를 줄이기 위하여 복수의 기준선들을 이용하여 바운딩 박스(또는 프레임)를 분할할 수 있다. 예를 들어, 렌더링 장치(100)는 세로로 긴 형태의 바운딩 박스(800)를 두 개의 수평 기준선 및 한 개의 수직 기준선으로 분할할 수 있다. 도 8을 참조하면, 렌더링 장치(100)는 바운딩 박스(800)를 복수의 기준선들(802, 804 및 806)을 이용하여 분할할 수 있다.
또한, 렌더링 장치(100)는 가로로 긴 형태의 바운딩 박스(810)를 두 개의 수직 기준선 및 한 개의 수평 기준선으로 분할할 수 있다. 도 8을 참조하면, 렌더링 장치(100)는 바운딩 박스(810)를 복수의 기준선들(812, 814 및 816)을 이용하여 분할할 수 있다.
도 9는 복수의 기준선들을 사용하여 프레임을 분할하는 일 예를 도시한 도면이다.
렌더링 장치(100)는 프리미티브 e0(910)가 통과하는 타일 B1, B2, C2, C3, C4, C5, D5 및 D6에 프리미티브 e0(910)를 할당할 수 있다. 렌더링 장치(100)는 프리미티브 e1(920)이 통과하는 타일 D6, D5, D4, E4, E3, E2 및 E1에 프리미티브 e1(920)을 할당할 수 있다. 또한, 렌더링 장치(100)는 프리미티브 e2(930)가 통과하는 타일 B1, C1, D1 및 E1에 프리미티브 e2(930)를 할당할 수 있다.
렌더링 장치(100)는 기준선(950) 위에 위치한 타일들에 대하여 기준선(950) 방향으로 스프레딩을 수행할 수 있다. 렌더링 장치(100)는 기준선(960) 아래에 위치한 타일들에 대하여 기준선(960) 방향으로 스프레딩을 수행할 수 있다. 또한, 렌더링 장치(100)는 기준선(950) 아래 및 기준선(960) 위에 위치한 타일들에 대하여 기준선(970) 방향으로 스프레딩을 수행할 수 있다.
도 9를 참조하면, 렌더링 장치(100)는 프리미티브 e1(920)과 기준선(970) 사이에 위치하는 타일 D2 및 D3에 프리미티브 e1(920)을 할당할 수 있다. 프레임(900)을 분할하는 복수의 기준선들(950, 960 및 970)을 이용하여 타일 비닝을 수행한 결과, 경로가 통과하는 타일들 각각에 총 19개의 프리미티브가 할당되었고, 스프레딩을 통하여 총 2개의 프리미티브가 할당되었다.
도 10은 경로 렌더링을 수행하는 방법의 예시를 도시한 흐름도이다.
단계 1010에서, 렌더링 장치(100)는 경로 데이터를 획득할 수 있다. 렌더링 장치(100)가 수신하는 경로 데이터에는 경로에 포함된 복수의 정점들 각각의 좌표에 대한 정보 및 정점들을 조합하여 경로를 구성하기 위한 커맨드(command)들이 포함될 수 있다. 여기에서, 정점은 경로를 구성하는 각 프리미티브의 시작 위치에 대응하는 정점 또는 프리미티브의 종료 위치에 대응하는 정점을 포함할 수 있다.
예를 들어, 프레임에 포함된 픽셀들 중 제 1 픽셀로부터 제 2 픽셀까지의 직선을 하나의 프리미티브라고 가정하면, 정점들은 제 1 픽셀 및 제 2 픽셀 각각에 대응하는 지점을 의미한다. 따라서, 경로 데이터는 제 1 픽셀에 대응하는 제 1 정점의 좌표, 제 2 픽셀에 대응하는 제 2 픽셀의 좌표 및 제 1 정점에서 제 2 정점까지 직선을 구성하라는 커맨드를 포함한다. 따라서, 경로 데이터를 참조하면, 경로를 구성하는 정점들 각각의 좌표에 대한 정보뿐 만 아니라, 경로의 위치 및 진향 방향에 대한 정보도 파악될 수 있다. 또한, 경로 데이터에는 각각의 픽셀에 설정될 컬러 값에 대한 정보도 포함될 수 있다.
단계 1020에서, 렌더링 장치(100)는 타일 비닝을 위한 기준선을 설정할 수 있다. 기준선을 설정하는 구체적인 방법은 도 3 내지 도 9에서 전술하였다.
단계 1030에서, 렌더링 장치(100)는 경로를 통과하는 타일을 탐색할 수 있다. 렌더링 장치(100)는 경로를 통과하는 타일 각각에 경로에 대한 정보를 할당할 수 있다. 예를 들어, 렌더링 장치(100)는 타일을 통과하는 부분에 대응하는 프리미티브를 타일에 할당할 수 있다.
단계 1040에서, 렌더링 장치(100)는 스프레딩을 수행할 수 있다. 예를 들어, 렌더링 장치(100)는 경로를 구성하는 프리미티브와 기준선 사이에 위치하는 타일에 프리미티브를 할당할 수 있다. 렌더링 장치(100)는 프리미티브가 통과하는 타일로부터 기준선까지의 수선 상에 위치하는 타일들 각각에 프리미티브를 할당할 수 있다.
단계 1050에서, 렌더링 장치(100)는 주회 횟수를 계산할 수 있다. 렌더링 장치(100)는 단계 1020 내지 1040에서 수행한 타일 비닝에 기초하여 각 타일에 포함된 픽셀들의 주회 횟수를 계산할 수 있다. 렌더링 장치(100)는 프레임에 포함된 모든 타일들에 대하여 초기 주회 횟수를 할당할 수 있다. 렌더링 장치(100)는 프리미티브가 할당된 타일들에 한하여 주회 횟수를 계산함으로써 계산 속도를 높일 수 있다.
단계 1060에서, 렌더링 장치(100)는 쉐이딩을 수행할 수 있다. 쉐이딩은 픽셀들 각각에 컬러를 설정하는 과정을 의미할 수 있으나, 이에 한정되지 않는다. 예를 들어, 렌더링 장치(100)는 프레임에 포함된 픽셀들 각각의 주회 횟수를 이용하여 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 이때, 렌더링 장치(100)는 기 설정된 규칙에 기초하여 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 여기에서, 기 설정된 규칙은 주회 횟수가 0이 아닌 값을 갖는 픽셀들에 컬러 값을 할당하는 제 1 규칙 또는 주회 횟수가 홀수인 값을 갖는 픽셀들에 컬러 값을 할당하는 제 2 규칙 등을 의미할 수 있으나, 이에 제한되지 않는다.
도 11은 경로 렌더링을 수행하는 장치의 예시를 도시한 블록도이다.
도 11을 참조하면, 렌더링 장치(1100)는 경로 데이터 획득부(1110), 경로정보 할당부(1120), 주회 횟수 연산부(1130) 및 쉐이딩부(1140)를 포함할 수 있다. 각각의 부(모듈)는 각각의 하드웨어로 구현될 수도 있고, 일부 또는 전부가 GPU 또는 CPU에서 동작하는 소프트웨어로 구현될 수도 있다.
또한, 도 11에 도시된 렌더링 장치(1100)의 경로 데이터 획득부(1110), 경로정보 할당부(1120), 주회 횟수 연산부(1130) 및 쉐이딩부(1140)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
예를 들어, 경로 데이터 획득부(1110), 경로정보 할당부(1120), 주회 횟수 연산부(1130) 및 쉐이딩부(1140)는 중앙 처리 장치(Central Processing Unit)에 포함된 하나 또는 복수 개의 프로세서에 해당할 수 있다. 또한, 경로 데이터 획득부(1110), 경로정보 할당부(1120), 주회 횟수 연산부(1130) 및 쉐이딩부(1140)는 그래픽 처리 장치(Graphics Processing Unit)에 포함된 하나 또는 복수 개의 프로세서에 해당할 수 있다.
경로 데이터 획득부(1110)는 경로 데이터를 획득할 수 있다. 렌더링 장치(1100)가 수신하는 경로 데이터에는 경로에 포함된 복수의 정점들 각각의 좌표에 대한 정보 및 정점들을 조합하여 경로를 구성하기 위한 커맨드(command)들이 포함될 수 있다. 여기에서, 정점은 경로를 구성하는 각 프리미티브의 시작 위치에 대응하는 정점 또는 프리미티브의 종료 위치에 대응하는 정점을 포함할 수 있다.
경로정보 할당부(1120)는 획득된 경로 데이터에 기초하여, 경로에 대한 정보를 각 타일에 할당할 수 있다. 경로정보 할당부(1120)는 프레임을 분할하는 기준선을 결정할 수 있다. 프레임을 분할하는 방법은 제한되지 않는다. 기준선은 프레임을 좌우로 분할하는 수직선 또는 프레임을 상하로 분할하는 수평선일 수 있다.
경로정보 할당부(1120)는 경로를 통과하는 타일들을 탐색할 수 있다. 경로정보 할당부(1120)는 경로를 통과하는 타일들 각각에 대하여 경로에 대한 정보를 할당할 수 있다. 경로정보 할당부(1120)는 경로를 통과하는 타일들로부터 기준선까지의 스프레딩을 수행할 수 있다. 경로정보 할당부(1120)는 스프레딩을 수행함으로써 경로를 통과하는 타일들과 기준선 사이에 위치하는 타일에 대하여 경로에 대한 정보를 할당할 수 있다.
주회 횟수 연산부(1130)는 경로정보 할당부(1120)에 의하여 할당된 경로에 대한 정보에 기초하여 주회 횟수를 연산할 수 있다. 주회 횟수 연산부(1130)는 프레임에 포함된 각 타일에 대하여 초기 주회 횟수를 할당할 수 있다. 주회 횟수 연산부(1130)는 할당된 경로에 대한 정보에 기초하여, 경로에 대한 정보가 할당된 타일들 각각의 주회 횟수를 업데이트할 수 있다. 예를 들어, 주회 횟수 연산부(1130)는 타일로부터 기준선까지의 가상의 반직선을 도시할 수 있다. 주회 횟수 연산부(1130)는 가상의 반직선과 타일에 할당된 경로가 만나는 지점에서 경로의 진행방향에 따라 주회 횟수를 더하거나 뺄 수 있다.
쉐이딩부(1140)는 주회 횟수 연산부(1130)에서 연산한 주회 횟수에 기초하여, 각 픽셀의 쉐이딩 수행 여부를 결정할 수 있다. 쉐이딩은 픽셀들 각각에 컬러를 설정하는 과정을 의미할 수 있으나, 이에 한정되지 않는다. 이때, 렌더링 장치(1100)는 기 설정된 규칙에 기초하여 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 여기에서, 기 설정된 규칙은 주회 횟수가 0이 아닌 값을 갖는 픽셀들에 컬러 값을 할당하는 제 1 규칙 또는 주회 횟수가 홀수인 값을 갖는 픽셀들에 컬러 값을 할당하는 제 2 규칙 등을 의미할 수 있으나, 이에 제한되지 않는다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100: 렌더링 장치
110: 경로정보 할당부
120: 주회 횟수

Claims (17)

  1. 경로(path)를 포함하는 객체를 렌더링하는 방법에 있어서,
    프레임 내 상기 객체의 위치에 기초하여, 상기 프레임을 분할하는 기준선(split line)을 결정하는 단계;
    상기 프레임에 포함된 타일들 중 상기 경로가 통과하는 제1 타일들 및 상기 경로가 통과하는 상기 제1 타일들과 상기 기준선 사이에 위치하는 타일로 결정된 제2 타일들에 대하여 상기 경로에 대한 정보를 할당하는 단계; 및
    상기 제1 타일들 및 상기 제2 타일들에 대한 할당된 경로에 대한 정보에 기초하여, 상기 경로가 통과하는 상기 제1 타일들 및 상기 제1 타일들과 상기 기준선 사이에 위치하는 상기 제2 타일들에 대해서만 각각의 주회 횟수(winding number)를 결정하는 단계를 포함하는 방법.
  2. 제1 항에 있어서, 상기 기준선은 상기 프레임을 좌우로 분할하는 수직선 또는 상기 프레임을 상하로 분할하는 수평선인 것을 특징으로 하는 방법.
  3. 제1 항에 있어서,
    상기 기준선은 상기 프레임을 복수의 부분 프레임들로 분할하는 복수의 기준선들을 포함하고,
    상기 제2 타일들은 상기 제1 타일들과 상기 제1 타일들이 포함된 부분 프레임들에 할당된 기준선 사이에 위치하는 타일들을 포함하는 방법.
  4. 제1 항에 있어서,
    상기 제2 타일들은 상기 제1 타일들로부터 상기 기준선까지의 수선(perpendicular)상에 위치하는 타일을 포함하는, 방법.
  5. 제1 항에 있어서, 상기 경로는 복수의 프리미티브들(primitives)을 포함하고,
    상기 경로에 대한 정보는, 상기 복수의 프리미티브들 중에서, 상기 제1 타일들을 통과하는 제1 프리미티브에 대한 정보를 포함하는 방법.
  6. 제5 항에 있어서,
    상기 프레임에 포함된 타일들 중에서 제3 타일 및 제4 타일에, 상기 복수의 프리미티브들 중에서 제2 프리미티브에 대한 정보를 할당하는 단계;를 더 포함하고,
    상기 제2 프리미티브는 상기 제3 타일을 통과하고, 상기 제4 타일은 상기 제3 타일과 상기 기준선 사이에 위치하는 방법.
  7. 제1 항에 있어서, 상기 주회 횟수를 결정하는 단계는,
    상기 프레임에 포함된 타일들 각각의 초기 주회 횟수를 결정하는 단계; 및
    상기 할당된 경로에 대한 정보에 기초하여, 상기 제1 타일들 및 상기 제2 타일들 각각의 주회 횟수를 업데이트하는 단계를 포함하는, 방법.
  8. 제7 항에 있어서, 상기 주회 횟수를 업데이트하는 단계는,
    상기 경로가 상기 제1 타일들을 통과하는 방향에 기초하여 상기 제1 타일들 및 상기 제2 타일들 각각의 상기 주회 횟수를 업데이트하는 방법.
  9. 제1 항 내지 제8 항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  10. 경로를 포함하는 객체를 렌더링하는 장치에 있어서,
    프레임 내 상기 객체의 위치에 기초하여, 상기 프레임을 분할하는 기준선을 결정하고, 상기 프레임에 포함된 타일들 중 상기 경로가 통과하는 제1 타일들 및 상기 경로가 통과하는 상기 제1 타일들과 상기 기준선 사이에 위치하는 타일로 결정된 제2 타일들에 대한 정보를 할당하는 경로정보 할당부; 및
    상기 제1 타일들 및 상기 제2 타일들에 대한 할당된 경로에 대한 정보에 기초하여, 상기 경로가 통과하는 상기 제1 타일들 및 상기 제1 타일들과 상기 기준선 사이에 위치하는 상기 제2 타일들에 대해서만 각각의 주회 횟수를 결정하는 주회 횟수 연산부; 를 포함하는 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
KR1020160074724A 2016-06-15 2016-06-15 경로 렌더링을 수행하는 방법 및 장치 KR102618560B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160074724A KR102618560B1 (ko) 2016-06-15 2016-06-15 경로 렌더링을 수행하는 방법 및 장치
US15/392,005 US10134184B2 (en) 2016-06-15 2016-12-28 Method of rendering object including path and rendering apparatus for performing path rendering

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160074724A KR102618560B1 (ko) 2016-06-15 2016-06-15 경로 렌더링을 수행하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170141535A KR20170141535A (ko) 2017-12-26
KR102618560B1 true KR102618560B1 (ko) 2023-12-27

Family

ID=60659717

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160074724A KR102618560B1 (ko) 2016-06-15 2016-06-15 경로 렌더링을 수행하는 방법 및 장치

Country Status (2)

Country Link
US (1) US10134184B2 (ko)
KR (1) KR102618560B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102699047B1 (ko) * 2018-12-14 2024-08-27 삼성전자주식회사 경로를 포함하는 객체를 렌더링하는 장치, 이를 포함하는 컴퓨팅 장치 및 이의 렌더링 방법
US11538221B2 (en) * 2020-05-21 2022-12-27 Samsung Electronics Co., Ltd. Re-reference aware tile walk order for primitive binner

Citations (4)

* 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
US20120280992A1 (en) 2011-05-02 2012-11-08 Shebanow Michael C Grid walk sampling
US20140043342A1 (en) * 2012-08-09 2014-02-13 Qualcomm Incorporated Extending dx11 gpu for programmable vector graphics
US20160148337A1 (en) * 2014-11-21 2016-05-26 Arm Limited Graphics processing systems

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4365950B2 (ja) 1998-09-11 2009-11-18 キヤノン株式会社 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置
JP3507057B2 (ja) 2002-06-03 2004-03-15 三菱電機株式会社 三角形ポリゴン描画装置および三角形ポリゴン描画方法
JP2011165062A (ja) 2010-02-12 2011-08-25 Canon Inc 描画処理装置、描画処理方法、及びプログラム
US20110285736A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Decomposing cubic bèzier segments for tessellation-free stencil filling
US9558573B2 (en) 2012-12-17 2017-01-31 Nvidia Corporation Optimizing triangle topology for path rendering
KR101451001B1 (ko) 2013-02-19 2014-10-15 주식회사 엘지유플러스 무선 단말기에 통신 서비스를 제공하기 위한 통신 서비스 제공 시스템 및 그 제어방법과, 무선 랜 접속 장치 및 그 제어방법
EP2985735B1 (en) 2014-08-11 2019-12-04 Samsung Electronics Co., Ltd Method and apparatus for performing tile-based path rendering
KR102423767B1 (ko) * 2014-08-11 2022-07-22 삼성전자주식회사 타일 기반 경로 렌더링을 수행하는 방법 및 장치.
JP6642964B2 (ja) * 2015-01-05 2020-02-12 キヤノン株式会社 情報処理装置、情報処理方法、プログラム

Patent Citations (4)

* 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
US20120280992A1 (en) 2011-05-02 2012-11-08 Shebanow Michael C Grid walk sampling
US20140043342A1 (en) * 2012-08-09 2014-02-13 Qualcomm Incorporated Extending dx11 gpu for programmable vector graphics
US20160148337A1 (en) * 2014-11-21 2016-05-26 Arm Limited Graphics processing systems

Also Published As

Publication number Publication date
US20170365031A1 (en) 2017-12-21
KR20170141535A (ko) 2017-12-26
US10134184B2 (en) 2018-11-20

Similar Documents

Publication Publication Date Title
KR102238651B1 (ko) 경로 렌더링을 수행하는 방법 및 장치.
US11074744B2 (en) Method and apparatus for performing tile-based path rendering
KR20150039495A (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US9639971B2 (en) Image processing apparatus and method for processing transparency information of drawing commands
KR102545176B1 (ko) 레지스터 관리 방법 및 장치
KR20180056316A (ko) 타일-기반 렌더링을 수행하는 방법 및 장치
CN106530379B (zh) 用于执行路径描边的方法和设备
KR20150093689A (ko) 쉘 메쉬에 기초한 최적화된 다각형을 형성하기 위한 방법
JP6785570B2 (ja) 経路レンダリングのためのタイルビニングを行う方法及びその装置
KR102618560B1 (ko) 경로 렌더링을 수행하는 방법 및 장치
KR102399686B1 (ko) 3d 렌더링 방법 및 장치
US11100707B2 (en) Computer graphics method for terrain rendering
KR102651125B1 (ko) 경로 렌더링을 수행하는 방법 및 장치
KR102423767B1 (ko) 타일 기반 경로 렌더링을 수행하는 방법 및 장치.
US9773331B2 (en) Methods and systems for efficient graphics rendering
US9269174B2 (en) Methods and systems for generating a polygon mesh
Mileff et al. Accelerated half-space triangle rasterization
KR100624455B1 (ko) 3차원 그래픽스 환경에서의 라이트맵 처리 방법 및 장치
JP4920775B2 (ja) 画像生成装置及び画像生成プログラム
JP6801001B2 (ja) 画像処理装置、画像処理方法およびプログラム
US9633459B2 (en) Methods and systems for creating a hull that may have concavities

Legal Events

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