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

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

Info

Publication number
KR102238651B1
KR102238651B1 KR1020140048879A KR20140048879A KR102238651B1 KR 102238651 B1 KR102238651 B1 KR 102238651B1 KR 1020140048879 A KR1020140048879 A KR 1020140048879A KR 20140048879 A KR20140048879 A KR 20140048879A KR 102238651 B1 KR102238651 B1 KR 102238651B1
Authority
KR
South Korea
Prior art keywords
path
pixels
pixel
turns
value
Prior art date
Application number
KR1020140048879A
Other languages
English (en)
Other versions
KR20150122519A (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 KR1020140048879A priority Critical patent/KR102238651B1/ko
Priority to US14/518,473 priority patent/US10186053B2/en
Priority to CN201410784743.2A priority patent/CN105006010B/zh
Priority to JP2015063672A priority patent/JP2015210816A/ja
Priority to EP15163022.5A priority patent/EP2937834B1/en
Publication of KR20150122519A publication Critical patent/KR20150122519A/ko
Application granted granted Critical
Publication of KR102238651B1 publication Critical patent/KR102238651B1/ko

Links

Images

Classifications

    • 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
    • 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/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
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • G06T5/92
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/02Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image

Abstract

경로 렌더링을 수행하는 방법은 렌더링이 수행될 객체에 포함된 정점(vertex)들에 대한 정보를 포함하는 데이터를 획득하는 단계; 프레임에 포함된 픽셀들 각각의 위치와 상기 정점들이 연결된 적어도 하나 이상의 경로의 진행 방향 사이의 관계에 기초하여 상기 픽셀들 각각에 대응하는 주회 횟수(winding number)를 연산하는 단계; 및 상기 주회 횟수를 이용하여 상기 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 단계;를 포함한다.

Description

경로 렌더링을 수행하는 방법 및 장치. {Method and apparatus for performing path rendering}
경로 렌더링을 수행하는 방법 및 장치에 관한다.
근래에 벡터 그래픽스(vector graphics) 또는 경로 렌더링(path rendering)을 수행하는 경우 그래픽 처리 장치(Graphics Processing Unit, 이하 GPU 라고 함)의 가속 성능을 향상시키기 위한 방법이 연구되고 있다. 다만, 3차원 그래픽을 가속시키기 위해 모든 입력 데이터가 삼각형(triangle)으로 구성된다는 가정 하에 GPU의 하드웨어 구조가 설계되나, 경로 렌더링의 경우 입력 데이터가 삼각형들로 구성되지 않고 커맨드(command)와 정점(vertex) 들의 조합으로 구성되어 있다. 따라서, 경로 렌더링을 수행할 때에 GPU의 가속 성능을 향상시키기 어렵다.
예를 들어, GPU를 이용하여 하나의 곡선(curve)을 그리기 위해서는, 먼저 CPU가 곡선의 시작점을 중심으로 하여 곡선을 다수의 삼각형들로 분할하고, OpenGL API를 이용하여 GPU에게 분할된 삼각형들을 곡선으로 재구성하도록 지시한다. 따라서, CPU가 곡선을 다수의 삼각형들로 분할하는데에 많은 시간이 소요되며, 많은 수의 OpenGL API를 호출할 때마다 GPU와의 통신이 필요하며, GPU 상에서 많은 상태 변화가 발생된다.
따라서, GPU 내에 존재하는 스텐실 버퍼(Stencil Buffer)를 이용하는 스텐실 기반 경로 렌더링(Stencil-based Path Rendering) 방법이 제안되었다. 그러나, 스텐실 기반 경로 렌더링 방법은 렌더링 수행 중에 메모리 입출력(Memory I/O)이 과도하게 발생되고, 스텐실 버퍼는 병렬 처리가 불가능한바, GPU의 가속 성능을 향상시키는 데에 한계가 존재한다.
경로 렌더링을 수행하는 방법 및 장치를 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른 경로 렌더링을 수행하는 방법은 렌더링이 수행될 객체에 포함된 정점(vertex)들에 대한 정보를 포함하는 데이터를 획득하는 단계; 프레임에 포함된 픽셀들 각각의 위치와 상기 정점들이 연결된 적어도 하나 이상의 경로의 진행 방향 사이의 관계에 기초하여 상기 픽셀들 각각에 대응하는 주회 횟수(winding number)를 연산하는 단계; 및 상기 주회 횟수를 이용하여 상기 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 단계;를 포함한다.
다른 측면에 따른 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
또 다른 측면에 따른 경로 렌더링을 수행하는 장치는 렌더링이 수행될 객체에 포함된 정점(vertex)들에 대한 정보를 포함하는 데이터를 획득하는 획득부; 프레임에 포함된 픽셀들 각각의 위치와 상기 정점들이 연결된 적어도 하나 이상의 경로의 진행 방향 사이의 관계에 기초하여 상기 픽셀들 각각에 대응하는 주회 횟수(winding number)를 연산하는 연산부; 및 상기 주회 횟수를 이용하여 상기 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 결정부;를 포함한다.
또 다른 측면에 따른 경로 렌더링을 수행하는 그래픽 처리 장치(Graphics Processing Unit)에 연결되고, 프레임에 포함된 픽셀들 각각의 주회 횟수를 생성하는 장치는 상기 그래픽 처리 장치로부터 적어도 하나 이상의 경로에 대응하는 정점들 각각의 좌표에 대한 정보 및 상기 프레임에 포함된 픽셀의 좌표에 대한 정보를 수신하고, 상기 수신된 정보를 이용하여 상기 픽셀에 대응하는 주회 횟수를 연산하고, 상기 연산된 주회 횟수를 상기 그래픽 처리 장치로 전달한다.
스텐실 버퍼의 사용 없이 경로 렌더링이 수행될 수 있는바, 스텐실 버퍼를 사용함으로써 메모리 입출력이 과도하게 발생되는 문제와 중복된 메모리 입출력이 발생되는 문제가 해소된다.
프레임에 포함된 픽셀들 각각에 대하여 병렬적으로 주회 횟수(winding number)를 생성함으로써, 고속으로 경로 렌더링이 수행될 수 있으며, 빠른 시간 내에 고해상도의 렌더링이 수행될 수 있다.
도 1은 일 실시예에 따른 경로 렌더링을 수행하는 장치의 일 예를 도시한 구성도이다.
도 2는 일 실시예에 따른 주회 횟수를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 연산부가 주회 횟수를 연산하는 일 예를 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 연산부가 서로 다른 측면을 선택하여 픽셀의 주회 횟수를 연산하는 일 예를 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 연산부가 픽셀의 주회 횟수를 연산하는 알고리즘의 일 예를 기재한 도면이다.
도 6은 일 실시예에 따른 결정부가 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 일 예를 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 경로 렌더링을 수행하는 장치의 다른 예를 도시한 구성도이다.
도 8은 일 실시예에 따른 설정부가 경계 박스를 설정하는 일 예를 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 주회 횟수 생성 장치의 일 예를 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 연산부 및 주회 횟수 생성 장치가 동작하는 일 예를 설명하기 위한 도면이다.
도 11은 일 실시예에 따른 픽셀의 주회 횟수를 연산하는 방법이 GPU에서 구현되는 일 예를 설명하기 위한 도면이다.
도 12는 일 실시예에 따른 버텍스 쉐이더가 픽셀 오너쉽 테스트를 수행하는 일 예를 설명하기 위한 흐름도이다.
도 13은 일 실시예에 따른 주회 횟수 생성 장치가 동작하는 일 예를 설명하기 위한 흐름도이다.
도 14는 일 실시예에 따른 주회 횟수 생성 장치가 픽셀의 일 측면에 경로가 위치하는지 여부를 판단하는 일 예를 설명하기 위한 흐름도이다.
도 15는 일 실시예에 따른 경로 렌더링을 수행하는 방법의 일 예를 설명하기 위한 흐름도이다.
이하에서는 도면을 참조하여 본 발명의 실시예들을 상세히 설명한다. 본 발명의 하기 실시예는 본 발명을 구체화하기 위한 것일 뿐 본 발명의 권리 범위를 제한하거나 한정하지 않는다. 또한, 본 발명의 상세한 설명 및 실시예로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 유추할 수 있는 것은 본 발명의 권리범위에 속하는 것으로 해석된다.
도 1은 일 실시예에 따른 경로 렌더링을 수행하는 장치(100)의 일 예를 도시한 구성도이다.
도 1을 참조하면, 경로 렌더링을 수행하는 장치(100)는 획득부(110), 연산부(120) 및 결정부(130)를 포함한다. 도 1에 도시된 경로 렌더링을 수행하는 장치(100)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있다.
또한, 도 1에 도시된 경로 렌더링을 수행하는 장치(100)의 획득부(110), 연산부(120) 및 결정부(130)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
획득부(110)는 렌더링이 수행될 객체에 포함된 정점(vertex)들에 대한 정보를 포함하는 데이터를 획득한다. 객체는 렌더링이 수행될 적어도 하나 이상의 경로를 포함한다. 또한, 객체는 적어도 하나 이상의 경로가 연결되어 형성된 폐다각형(closed polygon) 또는 폐경로(closed path)을 포함할 수 있다. 여기에서, 경로는 일 지점에서 다른 지점까지 이어진 직선 또는 곡선을 의미한다.
획득부(110)가 획득하는 데이터에는 정점들 각각의 좌표에 대한 정보 및 정점들을 조합하여 경로를 구성하기 위한 커맨드(command)들이 포함된다. 여기에서, 정점은 경로의 시작 위치에 대응하는 정점 또는 경로의 종료 위치에 대응하는 정점을 포함한다.
예를 들어, 프레임에 포함된 픽셀들 중 제 1 픽셀로부터 제 2 픽셀까지의 직선을 경로라고 가정하면, 정점들은 프레임에서 제 1 픽셀 및 제 2 픽셀 각각에 대응하는 지점을 의미한다. 따라서, 획득부(110)가 획득하는 데이터는 제 1 픽셀에 대응하는 제 1 정점의 좌표, 제 2 픽셀에 대응하는 제 2 픽셀의 좌표 및 제 1 정점에서 제 2 정점까지 직선을 구성하라는 커맨드를 포함한다. 따라서, 데이터를 참조하면, 경로를 구성하는 정점들 각각의 좌표에 대한 정보 뿐만 아니라, 경로의 방향에 대한 정보도 파악될 수 있다. 또한, 데이터에는 각각의 픽셀에 설정될 컬러 값에 대한 정보도 포함될 수 있다.
연산부(120)는 프레임에 포함된 픽셀들 각각의 위치와 정점들을 연결하는 적어도 하나 이상의 경로의 진행 방향의 관계에 기초하여 픽셀들 각각에 대응하는 주회 횟수(winding number)를 연산한다.
여기에서, 주회 횟수는, 특정 픽셀의 위치에서 일 측면을 바라볼 때, 경로가 그려지는 동안 몇 바퀴가 회전되는가를 나타내는 미리 결정된 값(N)을 의미한다.
주회 횟수는 경로가 시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 증산하고, 경로가 반시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 감산함으로써 연산될 수 있으나, 이에 한정되지 않는다. 다시 말해, 주회 횟수는 경로가 시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 감산하고, 경로가 반시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 증산함으로써 연산될 수도 있다.
일 예로, 경로가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 +1이 될 수 있다. 이때, 경로가 반시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 -1이 될 수 있다.
다른 예로, 경로가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 -1이 될 수 있다. 이때, 경로가 반시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 +1이 될 수 있다.
또한, 미리 결정된 값(N)은 정수가 될 수 있으나, 이에 한정되지 않는다. 다시 말해, 주회 횟수는 특정 픽셀의 위치에서 일 측면을 바라볼 때, 경로가 그려지는 동안의 회전 수에 매핑된 수라면 제한 없이 해당될 수 있다.
일 예로, 경로가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 +0.1이 될 수 있다. 이때, 경로가 반시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 -0.1이 될 수 있다.
다른 예로, 경로가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 -0.5가 될 수 있다. 이때, 경로가 반 시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 +0.5가 될 수 있다.
이하에서는 설명의 편의를 위하여, 경로가 시계 방향으로 한 바퀴 회전하는 경우의 주회 횟수가 +1, 경로가 반시계 방향으로 한 바퀴 회전하는 경우의 주회 횟수가 -1이 되는 것으로 가정하여 설명한다. 여기에서, 경로는 폐다각형 또는 폐경로가 될 수도 있음은 전술한 바와 같다. 이하, 도 2를 참조하여 주회 횟수에 대하여 상세하게 설명한다.
도 2는 일 실시예에 따른 주회 횟수를 설명하기 위한 도면이다.
도 2에는 프레임에 포함된 픽셀들 중 어느 하나의 픽셀(210)에 대응하는 주회 횟수를 설명하기 위한 일 예가 도시되어 있다. 도 2를 참조하면, 픽셀(210)의 주변을 따라 경로(230)가 도시되어 있고, 경로(230)는 폐경로인 것으로 도시되어 있다. 도 2에는 픽셀(210)의 주회 횟수가 픽셀(210)의 우측에 위치된 경로(230)를 이용하여 연산되는 것으로 도시되어 있으나, 반드시 우측으로 한정되지 않는다. 또한, 이하에서, 픽셀(210)의 우측 위치는 픽셀(210)에서 우측 수평 방향으로 그어진 가상의 반직선(220)에 포함된 지점들의 위치를 의미한다.
픽셀(210)에서 우측 수평 방향으로 가상의 선(220)을 도시하면, 가상의 반직선(220)과 경로(230)는 총 4개의 정점들(231, 232, 233, 234)에서 교차된다. 다시 말해, 경로(230)는 4개의 정점들(231, 232, 233, 234)를 포함하도록 그려진다. 따라서, 픽셀(210)의 주회 횟수는 4개의 정점들(231, 232, 233, 234) 각각에서의 경로가 그려지는 방향에 기초하여 결정될 수 있다.
구체적으로, 제 1 정점(231)에서 경로(230)가 그려지는 방향은 반시계 방향에 해당된다. 따라서, 1차적으로 픽셀(210)의 주회 횟수는 -1이 된다. 그리고, 제 2 정점(232)에서 경로(230)가 그려지는 방향은 시계 방향에 해당된다. 따라서, 2차적으로 픽셀(210)의 주회 횟수는 -1 + 1 = 0으로 연산된다. 그리고, 제 3 정점(233)에서 경로(230)가 그려지는 방향은 반시계 방향에 해당된다. 따라서, 3차적으로 픽셀(210)의 주회 횟수는 -1 + 1 - 1 = -1로 연산된다. 그리고, 제 4 정점(234)에서 경로(230)가 그려지는 방향은 반시계 방향에 해당된다. 따라서, 최종적으로 픽셀(210)의 주회 횟수는 -1 + 1 - 1 - 1 = -2로 연산된다.
다시 도 1을 참조하면, 연산부(120)는 프레임에 포함된 픽셀의 일 측면에 위치한 경로에 대하여 주회 횟수를 연산한다. 여기에서, 일 측면은 픽셀의 위치를 중심으로 좌측, 우측, 상측 및 하측 중 어느 하나에 해당된다. 또한, 연산부(120)는 경로의 위치 뿐만 아니라 경로의 진행 방향을 고려하여 주회 횟수를 연산한다. 이때, 연산부(120)는 스텐실 버퍼를 이용하지 않고 주회 횟수를 연산할 수 있다.
일반적으로, 렌더링 장치(예를 들어, GPU)는 스텐실 버퍼(stencil buffer)를 이용하여 렌더링을 수행한다. 구체적으로, 렌더링 장치는 객체를 구성하는 경로에 포함된 정점들을 분석하여 삼각형들을 구성(triangulation)한다. 다시 말해, 렌더링 장치는 연속된 3개의 정점들을 연결함으로써 경로에 포함된 삼각형들을 생성한다. 그 후에, 렌더링 장치는 생성된 삼각형들을 스텐실 버퍼에 순차적으로 기록한다. 이때, 렌더링 장치는 삼각형 내부에 포함된 픽셀들 각각의 주회 횟수를 결정하고, 주회 횟수가 결정되는 과정 및 최종 주회 횟수는 스텐실 버퍼에 기록된다. 그리고, 렌더링 장치는 스텐실 버퍼에 기록된 주회 횟수를 이용하여 픽셀 처리를 수행한다.
따라서, 렌더링 장치가 스텐실 버퍼를 이용하여 객체의 렌더링을 수행하는 경우, 스텐실 버퍼의 데이터 입출력이 많이 발생한다. 구체적으로, 렌더링 장치가 객체를 포함하는 삼각형을 그릴 때마다 스텐실 버퍼의 데이터 입출력이 발생되므로, 복잡한 모양으로 형성된 경로일수록 렌더링 장치가 렌더링을 수행할 때의 스텐실 버퍼의 데이터 입출력은 현저하게 증가한다. 또한, 스텐실 버퍼에는 동시에 복수의 삼각형들을 그리는 병렬 처리가 불가능하다. 따라서, 스텐실 버퍼에는 복수의 삼각형들이 순차적으로 그려져야 되므로, 삼각형들의 수가 많아질수록 렌더링 장치가 렌더링을 수행하는데 소요되는 시간이 현저하게 증가한다.
본 발명의 일 실시예에 따른 연산부(120)는 스텐실 버퍼를 이용하지 않고, 프레임에 포함된 픽셀들 각각의 주회 횟수를 연산한다. 다시 말해, 연산부(120)는 객체를 포함하는 삼각형들을 스텐실 버퍼에 그리지 않고, 프레임에 포함된 픽셀들 각각의 주회 횟수를 연산한다. 따라서, 스텐실 버퍼에 기반한 렌더링에서 나타나는 데이터 입출력의 증가되는 문제 및 렌더링에 소요되는 시간이 증가되는 문제를 해소할 수 있다.
또한, 본 발명의 일 실시예에 따른 연산부(120)는 복수의 스레드(thread)들을 이용하여 주회 횟수를 연산한다. 다시 말해, 연산부(120)는 단일 스레드를 이용하여 단일 픽셀의 주회 횟수를 연산할 수 있다. 이때, 복수의 스레드들은 병렬적으로 일 처리가 가능하므로, 연산부(120)는 복수의 스레드들을 이용하여 복수의 픽셀들 각각에 대한 주회 횟수를 동시에 연산할 수 있다. 따라서, 경로 렌더링을 수행하는 장치(100)는 고속으로 경로 렌더링을 수행할 수 있다.
이하에서는, 설명의 편의를 위하여, 연산부(120)가 하나의 스레드를 이용하여 프레임에 포함된 픽셀들 중 어느 하나의 주회 횟수를 연산하는 방법을 설명한다. 따라서, 이하에 언급되지 않더라도, 연산부(120)가 복수의 스레드들을 이용하여 복수의 픽셀들 각각의 주회 횟수를 동시에 연산할 수 있음은 당해 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
이하, 도 3을 참조하여 연산부(120)가 주회 횟수를 연산하는 일 예를 상세하게 설명한다.
도 3은 일 실시예에 따른 연산부(120)가 주회 횟수를 연산하는 일 예를 설명하기 위한 도면이다.
도 3의 (a)에는 정점 1, 정점 2 및 정점 3이 포함된 객체(310)가 도시되어 있다. 구체적으로, 도 3의 (a)에 도시된 객체(310)는 정점 1로부터 정점 2까지의 제 1 경로, 정점 2로부터 정점 3까지의 제 2 경로 및 정점 3으로부터 정점 1까지의 제 3 경로로 구성된다.
획득부(110)가 획득한 데이터에는 객체(310)에 포함된 정점 1, 정점 2 및 정점 3에 대한 정보가 포함되어 있다. 구체적으로, 데이터에는 정점 1의 좌표, 정점 2의 좌표 및 정점 3의 좌표가 포함된다. 또한, 데이터에는 객체를 구성하는 경로의 시작점을 나타내는 정점과 종료점을 나타내는 정점이 무엇인지에 대한 정보도 포함된다. 다시 말해, 객체(310)에 포함된 제 1 경로의 시작점은 정점 1이고 종료점은 정점 2라는 정보, 제 2 경로의 시작점은 정점 2이고 종료점은 정점 3이라는 정보, 제 3 경로의 시작점은 정점 3이고 종료점은 정점 1이라는 정보가 포함된다. 따라서, 데이터에 포함된 정점들에 대한 정보에 기초하여 경로의 진행 방향이 파악될 수 있다.
연산부(120)는 프레임에 포함된 픽셀들 각각의 위치를 중심으로 일 측면에 경로가 위치하는지 여부를 확인한다. 여기에서, 일 측면은 픽셀의 위치를 중심으로 좌측, 우측, 상측 및 하측 중 어느 하나를 의미한다. 이하에서는, 설명의 편의를 위하여 연산부(120)가 픽셀(P1)의 위치를 중심으로 우측에 경로가 위치하는지 여부를 확인하는 것을 가정하여 설명한다.
연산부(120)는 확인 결과에 기초하여 경로의 진행 방향이 시계 방향인지 또는 반시계 방향인지 결정한다. 예를 들어, 연산부(120)가 픽셀(P1)의 우측에 경로가 위치한다고 판단한 경우에는, 연산부(120)는 경로의 진행 방향이 시계 방향인지 또는 반시계 방향인지 결정한다. 한편, 연산부(120)가 픽셀(P1)의 우측에 경로가 위치하지 않는다고 판단한 경우에는, 연산부(120)는 픽셀(P1)의 주회 횟수를 0으로 결정한다.
구체적으로, 연산부(120)는 객체(310)를 구성하는 3개의 경로들 중 픽셀(P1)의 우측에 위치하는 제 2 경로의 진행 방향이 시계 방향인지 또는 반시계 방향인지 결정한다. 다시 말해, 제 1 경로와 제 3 경로는 픽셀(P1)의 우측에 위치하지 않으므로, 연산부(120)는 제 1 경로와 제 3 경로의 진행 방향을 결정하지 않고, 제 2 경로의 진행 방향만을 결정한다. 여기에서, 제 2 경로는 정점 2로부터 정점 3까지 진행하므로, 연산부(120)는 제 2 경로의 진행 방향이 시계 방향인 것으로 결정한다.
그 후에, 연산부(120)는 진행 방향이 시계 방향인 경우 주회 횟수에 미리 결정된 값(N)을 증산하고, 진행 방향이 반시계 방향인 경우 주회 횟수에 미리 결정된 값(N)을 감산함으로써 픽셀(P1)의 주회 횟수를 결정한다. 여기에서, 미리 결정된 값(N)은 1이 될 수도 있으나, 이에 한정되지 않음은 도 1을 참조하여 상술한 바와 같다.
만약, 미리 결정된 값(N)이 1이라고 가정하면, 연산부(120)는 제 2 경로의 진행 방향이 시계 방향인 것으로 결정했으므로, 연산부(120)는 픽셀(P1)의 주회 횟수를 +1로 결정한다.
상술한 방법과 같이 연산부(120)가 프레임에 포함된 픽셀들 각각에 대하여 주회 횟수를 연산하는 경우, 도 3의 (a)에 도시된 객체(310)의 내부에 존재하는 픽셀들의 주회 횟수는 모두 +1로 결정되며, 객체(310)의 외부에 존재하는 픽셀들의 주회 횟수는 모두 0으로 결정된다.
또한, 연산부(120)는 진행 방향이 시계 방향인 경우 주회 횟수에 미리 결정된 값(N)을 감산하고, 진행 방향이 반시계 방향인 경우 주회 횟수에 미리 결정된 값(N)을 증산함으로써 픽셀(P1)의 주회 횟수를 결정할 수도 있다. 여기에서, 미리 결정된 값(N)은 1이 될 수도 있으나, 이에 한정되지 않음은 도 1을 참조하여 상술한 바와 같다.
만약, 미리 결정된 값(N)이 0.1이라고 가정하면, 연산부(120)는 제 2 경로의 진행 방향이 시계 방향인 것으로 결정했으므로, 연산부(120)는 픽셀(P1)의 주회 횟수를 -0.1로 결정한다.
상술한 방법과 같이 연산부(120)가 프레임에 포함된 픽셀들 각각에 대하여 주회 횟수를 연산하는 경우, 도 3의 (a)에 도시된 객체(310)의 내부에 존재하는 픽셀들의 주회 횟수는 모두 -0.1로 결정되며, 객체(310)의 외부에 존재하는 픽셀들의 주회 횟수는 모두 0으로 결정된다.
이하에서는 설명의 편의를 위하여, 연산부(120)가 픽셀의 주회 횟수를 결정할 때, 경로의 진행 방향이 시계 방향인 경우 주회 횟수에 1을 증산하고, 진행 방향이 반시계 방향인 경우 주회 횟수에 1을 감산하는 것으로 가정하여 설명한다.
도 3의 (b)에는 정점 1, 정점 2, 정점 3 및 정점 4로 구성된 제 1 객체(320) 및 정점 5, 정점 6, 정점 7 및 정점 8로 구성된 제 2 객체(330)가 도시되어 있다. 구체적으로, 제 1 객체(320)는 정점 1로부터 정점 2까지의 제 1 경로, 정점 2로부터 정점 3까지의 제 2 경로, 정점 3으로부터 정점 4까지의 제 3 경로 및 정점 4로부터 정점 1까지의 제 4 경로로 구성된다. 또한, 제 2 객체(330)는 정점 5로부터 정점 6까지의 제 5 경로, 정점 6으로부터 정점 7까지의 제 6 경로, 정점 7로부터 정점 8까지의 제 7 경로 및 정점 8로부터 정점 5까지의 제 8 경로로 구성된다.
획득부(110)가 획득한 데이터에는 제 1 객체(320) 및 제 2 객체(330)를 구성하는 경로들 각각의 시작점을 나타내는 정점과 종료점을 나타내는 정점에 대한 정보가 포함되어 있음은 전술한 바와 같다.
이하에서는, 설명의 편의를 위하여 연산부(120)가 픽셀(P2 또는 P3)의 위치를 중심으로 우측에 경로가 위치하는지 여부를 확인하는 것을 가정하여 설명한다.
일 예로, 연산부(120)가 픽셀(P2)의 주회 횟수를 연산하는 방법을 설명한다.
연산부(120)는 픽셀(P2)의 위치를 중심으로 우측에 경로가 존재하는지 여부를 확인한다. 구체적으로, 연산부(120)는 픽셀(P2)의 우측에는 제 1 객체(350)에 포함된 제 3 경로가 존재함을 확인한다.
연산부(120)는 확인 결과에 기초하여 경로의 진행 방향이 시계 방향인지 또는 반시계 방향인지 결정한다. 구체적으로, 연산부(120)는 제 3 경로의 진행 방향이 시계 방향인 것으로 결정한다.
연산부(120)는 제 3 경로의 진행 방향이 시계 방향인 것으로 결정했으므로, 연산부(120)는 픽셀(P2)의 주회 횟수를 +1로 결정한다.
다른 예로, 연산부(120)가 픽셀(P3)의 주회 횟수를 연산하는 방법을 설명한다.
연산부(120)는 픽셀(P3)의 우측에는 제 2 객체(330)에 포함된 제 6 경로와 제 1 객체(320)에 포함된 제 3 경로 존재함을 확인한다. 그 후에, 연산부(120)는 제 6 경로의 진행 방향이 반시계 방향이고, 제 3 경로의 진행 방향이 시계 방향인 것으로 결정한다. 연산부(120)는 제 6 경로의 진행 방향이 반시계 방향인 것으로 결정했으므로, 연산부(120)는 1차적으로 픽셀(P3)의 주회 횟수를 -1로 결정한다. 그리고, 연산부(120)는 제 3 경로의 진행 방향이 시계 방향인 것으로 결정했으므로, 연산부(120)는 최종적으로 픽셀(P3)의 주회 횟수를 -1 + 1 = 0으로 연산한다.
상술한 방법과 같이 연산부(120)가 프레임에 포함된 픽셀들 각각에 대하여 주회 횟수를 연산하는 경우, 도 3의 (b)에 도시된 제 1 객체(320)의 내부이며 제 2 객체(330)의 외부에 존재하는 픽셀들의 주회 횟수는 모두 +1로 결정되며, 제 2 객체(330)의 내부에 존재하는 픽셀들의 주회 횟수는 모두 0으로 결정된다.
한편, 연산부(120)가 픽셀의 위치를 중심으로 좌측, 우측, 상측 및 하측 중 어느 측면을 선택하여 주회 횟수를 연산하더라도, 그 결과는 모두 동일하다. 이하, 도 4를 참조하여 연산부(120)가 서로 다른 측면을 선택하여 픽셀의 주회 횟수를 연산하는 일 예를 설명한다.
도 4는 일 실시예에 따른 연산부(120)가 서로 다른 측면을 선택하여 픽셀의 주회 횟수를 연산하는 일 예를 설명하기 위한 도면이다.
도 4의 (a) 내지 (d)에는 정점 1 내지 정점 5로 구성된 객체가 도시되어 있다. 도 4의 (a) 내지 (d)에 도시된 객체는 별 형상을 한 폐다각형(closed polygon)으로서 모두 동일하다.
도 4의 (a)를 참조하면, 연산부(120)는 픽셀 P의 위치를 중심으로 우측에 경로가 위치하는지 여부를 확인한다. 구체적으로, 연산부(120)는 픽셀 P의 우측(예를 들어, 픽셀 P의 우측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 2로부터 정점 3까지의 경로와 정점 5으로부터 정점 1까지의 경로가 존재함을 확인한다. 정점 2로부터 정점 3까지의 경로의 진행 방향과 정점 5으로부터 정점 1까지의 경로의 진행 방향은 모두 시계 방향이므로, 연산부(120)는 픽셀 P의 주회 횟수를 +2로 연산한다.
도 4의 (b)를 참조하면, 연산부(120)는 픽셀 P의 위치를 중심으로 좌측에 경로가 위치하는지 여부를 확인한다. 구체적으로, 연산부(120)는 픽셀 P의 좌측(예를 들어, 픽셀 P의 좌측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 1로부터 정점 2까지의 경로와 정점 3으로부터 정점 4까지의 경로가 존재함을 확인한다. 정점 1로부터 정점 2까지의 경로의 진행 방향과 정점 3으로부터 정점 4까지의 경로의 진행 방향은 모두 시계 방향이므로, 연산부(120)는 픽셀 P의 주회 횟수를 +2로 연산한다.
도 4의 (c)를 참조하면, 연산부(120)는 픽셀 P의 위치를 중심으로 상측에 경로가 위치하는지 여부를 확인한다. 구체적으로, 연산부(120)는 픽셀 P의 상측(예를 들어, 픽셀 P의 상측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 2로부터 정점 3까지의 경로와 정점 4로부터 정점 5까지의 경로가 존재함을 확인한다. 정점 2로부터 정점 3까지의 경로의 진행 방향과 정점 4로부터 정점 5까지의 경로의 진행 방향은 모두 시계 방향이므로, 연산부(120)는 픽셀 P의 주회 횟수를 +2로 연산한다.
도 4의 (d)를 참조하면, 연산부(120)는 픽셀 P의 위치를 중심으로 하측에 경로가 위치하는지 여부를 확인한다. 구체적으로, 연산부(120)는 픽셀 P의 하측(예를 들어, 픽셀 P의 하측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 5로부터 정점 1까지의 경로와 정점 3으로부터 정점 4까지의 경로가 존재함을 확인한다. 정점 5로부터 정점 1까지의 경로의 진행 방향과 정점 3으로부터 정점 4까지의 경로의 진행 방향은 모두 시계 방향이므로, 연산부(120)는 픽셀 P의 주회 횟수를 +2로 연산한다.
상술한 바와 같이, 연산부(120)가 픽셀 P의 위치를 중심으로 어느 측면을 선택하여 주회 횟수를 연산하더라도, 그 결과는 모두 동일하다. 또한, 도 4의 (a) 내지 (d)에 도시된 바와 같이, 경로에 의하여 구분된 영역들 중에서 동일한 영역 내에 존재하는 픽셀들의 주회 횟수는 모두 동일하다.
연산부(120)는 픽셀의 위치 및 경로의 위치를 고려하여 프레임에 포함된 픽셀들 각각마다 주회 횟수를 연산하는 일 측면을 결정할 수 있다. 다시 말해, 연산부(120)는 픽셀 P의 위치를 중심으로 어느 측면을 선택하여 주회 횟수를 연산할지 픽셀 P의 위치에 따라 서로 다르게 결정할 수도 있다. 즉, 픽셀 P의 위치를 기준으로 가장 적은 수의 경로가 존재할 것으로 예상되는 방향으로 주회 횟수를 연산할 일 측면을 결정할 수 있다.
예를 들어, 픽셀 P가 프레임의 중심선을 기준으로 왼쪽에 존재한다고 가정하면, 연산부(120)가 주회 횟수를 연산할 일 측면을 픽셀 P의 우측면보다는 좌측면을 선택하여야 연산부(120)가 더 적은 수의 경로를 이용하여 픽셀 P의 주회 횟수를 연산할 수 있다. 또한, 픽셀 P가 프레임의 중심선을 기준으로 오른쪽에 존재한다고 가정하면, 연산부(120)가 주회 횟수를 연산할 일 측면을 픽셀 P의 좌측면보다는 우측면을 선택하여야 연산부(120)가 더 적은 수의 경로를 이용하여 픽셀 P의 주회 횟수를 연산할 수 있다.
따라서, 연산부(120)는 프레임에 포함된 픽셀들 각각마다 서로 다른 측면을 결정하여 주회 횟수를 연산할 수 있다. 이때, 연산부(120)는 프레임 내에서 객체를 구성하는 경로들이 어느 위치에 분포하는지를 판단하고, 연산부(120)는 주회 횟수가 연산될 픽셀의 위치를 중심으로 가장 적은 경로가 존재하는 방향으로 주회 횟수의 연산에 이용되는 일 측면을 선택한다.
도 5는 일 실시예에 따른 픽셀의 주회 횟수를 연산하는 알고리즘의 일 예를 기재한 도면이다.
도 5에 도시된 알고리즘은 픽셀의 우측에 경로가 위치하는지에 기초하여 주회 횟수를 연산하는 방법에 관한다. 다만, 픽셀의 우측이 아닌 다른 측면에 기초하여 주회 횟수가 연산될 수도 있음은 전술한 바와 같다. 또한, 도 5에 기재된 알고리즘과 동일한 결과가 출력될 수 있는 알고리즘이라면 제한 없이 적용될 수 있다.
다시 도 1을 참조하면, 결정부(130)는 연산부(120)에 의하여 연산된 주회 횟수를 이용하여 픽셀들 각각에 컬러를 설정할지 여부를 결정한다. 다시 말해, 결정부(130)는 연산부(120)에 의하여 연산된 픽셀들 각각의 주회 횟수를 이용하여 픽셀들 각각에 컬러를 설정할지 여부를 결정한다. 예를 들어, 결정부(130)는 기 설정된 규칙에 기초하여 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 여기에서, 기 설정된 규칙은 주회 횟수가 0이 아닌 값을 갖는 픽셀들에 컬러 값을 할당하는 제 1 규칙 또는 주회 횟수가 홀수인 값을 갖는 픽셀들에 컬러 값을 할당하는 제 2 규칙 중 어느 하나를 의미할 수 있다. 이하, 도 6을 참조하여, 결정부(130)가 동작하는 일 예를 설명한다.
도 6은 일 실시예에 따른 결정부(130)가 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 일 예를 설명하기 위한 도면이다.
도 6의 (a)는 연산부(120)가 프레임(610)에 포함된 픽셀들 각각에 대하여 주회 횟수를 연산한 결과를 도시한 도면이고, 도 6의 (b)는 제 1 규칙에 따라 픽셀들 각각에 컬러 값이 할당된 결과를 도시한 도면이다. 또한, 도 6의 (c)는 제 2 규칙에 따라 픽셀들 각각에 컬러 값이 할당된 결과를 도시한 도면이다.
도 6의 (a)를 참조하면, 프레임(610)에 포함된 픽셀들 각각에 대해서 주회 횟수가 연산되어 있다. 구체적으로, 영역(611)에 포함된 픽셀들은 각각 주회 횟수가 0으로 연산되어 있으며, 영역(612)에 포함된 픽셀들은 각각 주회 횟수가 +1로 연산되어 있으며, 영역(613)에 포함된 픽셀들은 각각 주회 횟수가 +2로 연산되어 있다.
일 예로서, 결정부(130)는 제 1 규칙에 기초하여 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 여기에서, 제 1 규칙은 주회 횟수가 0이 아닌 값을 갖는 픽셀들에 컬러 값을 할당하는 것을 의미한다. 도 6의 (b)를 참조하면, 제 1 규칙에 따를 경우, 결정부(130)는 도 6의 (a)에 도시된 영역(612) 및 영역(613)에 포함된 픽셀들에는 컬러를 설정하고, 영역(611)에 포함된 픽셀들에는 컬러를 설정하지 않는 것으로 결정한다.
다른 예로서, 결정부(130)는 제 2 규칙에 기초하여 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 여기에서, 제 2 규칙은 주회 횟수가 홀수인 값을 갖는 픽셀들에 컬러 값을 할당하는 것을 의미한다. 여기에서, 홀수는 픽셀의 주회 횟수의 절대값이 홀수인 경우를 의미한다. 예를 들어, 주회 횟수가 +3인 경우도 홀수로 판단되고, 주회 횟수가 -3인 경우도 홀수로 판단된다. 도 6의 (c)를 참조하면, 제 2 규칙에 따를 경우, 결정부(130)는 도 6의 (a)에 도시된 영역(612)에 포함된 픽셀들에는 컬러를 설정하고, 영역(611) 및 영역(613)에 포함된 픽셀들에는 컬러를 설정하지 않는 것으로 결정한다.
결정부(130)는 컬러를 설정하기로 결정한 픽셀들에 대한 정보를 픽셀 쉐이더로 전송하고, 픽셀 쉐이더는 결정부(130)가 컬러를 설정하기로 결정한 픽셀들에 컬러 값을 할당한다.
상술한 바에 따르면, 경로 렌더링을 수행하는 장치(100)는 스텐실 버퍼의 사용 없이 픽셀들 각각의 주회 횟수를 연산할 수 있는바, 스텐실 버퍼를 사용함으로써 메모리 입출력이 과도하게 발생되는 문제와 중복된 메모리 입출력이 발생되는 문제가 해소된다.
또한, 경로 렌더링을 수행하는 장치(100)는 프레임에 포함된 픽셀들 각각에 대하여 병렬적으로 주회 횟수를 생성함으로써, 고속으로 경로 렌더링을 수행할 수 있으며, 빠른 시간 내에 고해상도의 렌더링을 수행할 수 있다.
도 7은 일 실시예에 따른 경로 렌더링을 수행하는 장치(101)의 다른 예를 도시한 구성도이다.
도 7을 참조하면, 경로 렌더링을 수행하는 장치(101)는 획득부(110), 설정부(140), 연산부(120) 및 결정부(130)를 포함한다. 도 7에 도시된 경로 렌더링을 수행하는 장치(100)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 7에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있다.
또한, 도 7에 도시된 경로 렌더링을 수행하는 장치(101)의 획득부(110), 설정부(140), 연산부(120) 및 결정부(130)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
또한, 도 7에 도시된 경로 렌더링을 수행하는 장치(101)의 획득부(110), 연산부(120) 및 결정부(130)의 동작은 도 1 내지 도 6을 참조하여 전술한 바와 같다. 따라서, 이하에서는 획득부(110), 연산부(120) 및 결정부(130)의 구체적인 동작에 대한 설명은 생략한다.
설정부(140)는 정점들 각각의 좌표 성분을 이용하여 프레임에 경계 박스(bounding box)를 설정한다. 예를 들어, 설정부(140)는 정점들의 좌표 성분들 중 수평 방향 좌표 성분의 최대값 및 최소값, 좌표 성분들 중 수직 방향 좌표 성분의 최대값 및 최소값을 이용하여 프레임에 경계 박스를 설정할 수 있다. 그리고, 연산부(120)는 설정부(140)에 의하여 설정된 경계 박스에 포함된 픽셀들 각각에 대하여 주회 횟수를 연산한다.
이하, 도 8을 참조하여 설정부(140)가 동작하는 일 예를 상세하게 설명한다.
도 8은 일 실시예에 따른 설정부(140)가 경계 박스를 설정하는 일 예를 설명하기 위한 도면이다.
도 8의 (a)에는 프레임(810) 내에 포함된 삼각형 형상의 객체(840)가 도시되어 있다. 연산부(120)는 프레임(810)에 포함된 픽셀들 각각에 대하여 주회 횟수를 연산한다. 따라서, 프레임(810) 전체 영역 중에서 객체(840)가 차지하는 영역이 작은 경우, 연산부(120)가 프레임(810)에 포함된 모든 픽셀들에 대하여 주회 횟수를 연산하지 않더라도 경로 렌더링을 수행할 수 있다. 다시 말해, 연산부(120)는 객체(840)로부터 멀리 떨어진 위치의 픽셀들(811)에 대해서는 주회 횟수를 연산하지 않고, 객체(840)와 인접한 위치의 픽셀들(812)에 대해서만 주회 횟수를 연산하더라도 동일한 결과를 산출할 수 있다, 따라서, 빠른 속도로 경로 렌더링이 수행될 수 있다.
도 8의 (b)를 참조하면, 설정부(140)는 프레임(810)에 경계 박스(830)를 설정한다. 그리고, 연산부(120)는 경계 박스(830) 내에 위치하는 픽셀들(831)에 대해서만 주회 횟수를 연산한다. 이때, 설정부(140)는 객체(850)에 포함된 정점 1의 좌표 (x1, y1), 정점 2의 좌표 (x2, y2) 및 정점 3의 좌표 (x3, y3)를 이용하여 경계 박스(830)를 설정한다.
예를 들어, 설정부(140)는 정점 1의 좌표 (x1, y1), 정점 2의 좌표 (x2, y2) 및 정점 3의 좌표 (x3, y3) 중 수평 방향 좌표 성분의 최대값 및 최소값, 수직 방향 좌표 성분의 최대값 및 최소값을 이용하여 프레임에 경계 박스를 설정할 수 있다. 먼저, 설정부(140)는 정점들의 x 좌표 성분들(x1, x2, x3) 중에서 최대값(x3)과 최소값(x1)을 선택한다. 그 후에, 설정부(140)는 정점들의 y 좌표 성분들(y1, y2, y3) 중에서 최대값(y2)과 최소값(y1 또는 y3)을 선택한다. 그 후에, 설정부(140)는 x 좌표 성분의 최대값과 y 좌표 성분의 최대값으로 제 1 좌표(x3, y3)를 형성한다. 또한, 설정부(140)는 x 좌표 성분의 최소값과 y 좌표 성분의 최소값으로 제 2 좌표(x1, y1)를 설정한다. 그 후에, 설정부(140)는 제 1 좌표(x3, y3)와 제 2 좌표(x1, y1)를 잇는 선을 대각선으로 하는 사각형을 경계 박스(830)로 설정한다.
상술한 바에 따르면, 설정부(140)가 경로 렌더링이 수행되기 위한 최소의 픽셀들을 포함하는 경계 박스를 설정함으로써, 연산부(120)는 최소 개수의 픽셀들에 대해서만 주회 횟수를 연산할 수 있다. 따라서, 경로 렌더링을 수행하는 장치(100)는 경로 렌더링을 보다 빠르게 수행할 수 있다.
도 9는 일 실시예에 따른 주회 횟수 생성 장치(150)의 일 예를 설명하기 위한 도면이다.
도 9에 도시된 경로 렌더링을 수행하는 장치(102)의 획득부(110), 설정부(140) 및 결정부(130)의 동작은 도 1 내지 도 8을 참조하여 전술한 바와 같다. 따라서, 이하에서는 획득부(110), 설정부(140) 및 결정부(130)의 구체적인 동작에 대한 설명은 생략한다.
또한, 도 9에는 경로 렌더링을 수행하는 장치(102)가 경계 박스를 설정하는 설정부(140)를 포함하는 것으로 도시되었으나, 이에 한정되지 않는다. 다시 말해, 경로 렌더링을 수행하는 장치(102)가 설정부(140)를 포함하지 않더라도 동작할 수 있음은 도 1을 참조하여 전술한 바와 같다.
또한, 도 9에 도시된 주회 횟수 생성 장치(150)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 9에 도시된 주회 횟수 생성 장치(150)는 경로 렌더링을 수행하는 장치(102)와 연결된다. 그리고, 주회 횟수 생성 장치(150)는 프레임에 포함된 픽셀들 각각의 주회 횟수를 생성한다. 도 9에는 경로 렌더링을 수행하는 장치(102)의 외부에 주회 횟수 생성 장치(150)가 위치하는 것으로 도시되었으나, 이에 한정되지 않는다. 다시 말해, 주회 횟수 생성 장치(150)는 경로 렌더링을 수행하는 장치(102)의 내부에 위치할 수도 있다.
도 1 내지 도 8을 참조하여 전술한 바에 의하면, 픽셀의 주회 횟수는 경로 렌더링을 수행하는 장치(100 또는 101)에 포함된 연산부(120)에 의하여 연산된다. 그러나, 도 9 및 도 10을 참조하여 설명할 일 예에 따르면, 픽셀의 주회 횟수는 경로 렌더링을 수행하는 장치(102)와 독립된 주회 횟수 생성 장치(150)에 의하여 연산되고, 경로 렌더링을 수행하는 장치(102)로 전송된다. 따라서, 연산부(120)는 경로 데이터에 포함된 정점들 각각의 좌표에 대한 정보 및 프레임에 포함된 픽셀의 좌표를 주회 횟수 생성 장치(150)에 전송하고, 주회 횟수 생성 장치(150)로부터 주회 횟수를 수신한다.
구체적으로, 주회 횟수 생성 장치(150)는 경로 렌더링을 수행하는 장치(102)로부터 적어도 하나 이상의 경로에 대응하는 정점들 각각의 좌표에 대한 정보 및 프레임에 포함된 픽셀의 좌표에 대한 정보를 수신한다. 그리고, 주회 횟수 생성 장치(150)는 수신된 정보를 이용하여 픽셀에 대응하는 주회 횟수를 연산한다. 그리고, 주회 횟수 생성 장치(150)는 연산된 주회 횟수를 경로 렌더링을 수행하는 장치(102)로 반환한다.
이하, 도 10을 참조하여, 연산부(120) 및 주회 횟수 생성 장치(150)가 동작하는 일 예를 상세하게 설명한다.
도 10은 일 실시예에 따른 연산부(120) 및 주회 횟수 생성 장치(150)가 동작하는 일 예를 설명하기 위한 도면이다.
도 10을 참조하면, 연산부(120)는 경로 데이터에 포함된 정점들 각각의 좌표와 주회 횟수가 연산될 픽셀의 좌표를 주회 횟수 생성 장치(150)로 전송한다. 이때, 연산부(120)는 주회 횟수가 연산될 복수의 픽셀들 각각의 좌표(또는 각 좌표에 대한 인덱스)를 주회 횟수 생성 장치(150)로 전송할 수 있다.
주회 횟수 생성 장치(150)는 연산부(120)로부터 전송된 좌표들에 대한 정보를 이용하여, 프레임에 포함된 픽셀들 각각의 주회 횟수를 연산한다. 이때, 주회 횟수 생성 장치(150)가 주회 횟수를 연산하는 방법은 도 2 내지 도 4를 참조하여 연산부(120)가 주회 횟수를 연산하는 방법과 동일하다. 다시 말해, 연산부(120)는 경로 렌더링을 수행하는 장치(102)와 독립적으로 존재하는 주회 횟수 생성 장치(150)에 주회 횟수를 연산하는데 필요한 정보를 전송하고, 주회 횟수를 연산하는 동작을 일임할 수 있다.
주회 횟수 생성 장치(150)는 연산된 주회 횟수를 연산부(120)로 전송한다. 이때, 연산부(120)가 주회 횟수가 연산될 복수의 픽셀들 각각의 좌표를 주회 횟수 생성 장치(150)로 전송한 경우에는, 주회 횟수 생성 장치(150)는 복수의 픽셀들 각각에 대응하는 주회 횟수를 연산부(120)로 전송한다.
도 11은 일 실시예에 따른 픽셀의 주회 횟수를 연산하는 방법이 GPU(1100)에서 구현되는 일 예를 설명하기 위한 도면이다.
도 11을 참조하면, GPU(1100)에서 실행되는 픽셀의 주회 횟수를 연산하는 방법은 도 1, 도 7 및 도 9에 도시된 경로 렌더링을 수행하는 장치(100, 101 또는 102)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1, 도 7 및 도 9에 도시된 경로 렌더링을 수행하는 장치(100, 101 또는 102)에 관하여 이상에서 기술된 내용은 도 11을 참조하여 후술할 내용에도 적용됨을 알 수 있다.
도 11을 참조하면, GPU(1100)는 버텍스 쉐이더(1120), 픽셀 쉐이더(1140) 및 프레임 버퍼(1150)를 포함할 수 있다. 여기에서, 버텍스 쉐이더(1120)는 주회 횟수 생성이 가능한 지오메트리 쉐이더 (Geometry Shader) 또는 컴퓨트 쉐이더 (Compute Shader) 등의 쉐이더 프로그램 또는 장치로도 대체 가능하다. 이하에서는 설명의 편의를 위하여 버텍스 쉐이더(1120)로 기재하였으나, 이에 한정하지 않는다. 또한, GPU(1100)와는 별도로 주회 횟수 생성 장치(1130)가 구비될 수도 있다. 이때, 주회 횟수 생성 장치(1130)는 GPU(1100)의 내부에 포함될 수도 있고, GPU(1100)의 외부에 독립적으로 위치할 수도 있다.
버텍스 쉐이더(1120)에는 렌더링이 수행될 객체에 포함된 정점들에 대한 정보를 포함하는 데이터(1100)가 입력된다. 여기에서, 데이터(1100)에는 정점들 각각의 위치를 나타내는 좌표에 대한 정보 및 객체를 구성하는 경로들 각각의 시작점에 대응하는 정점과 경로의 종료점에 대응하는 정점이 무엇인지에 대한 정보가 포함된다.
버텍스 쉐이더(1120)는, 필요에 따라, 경계 박스를 설정(1121)한다. 여기에서 경계 박스는 프레임에 포함된 픽셀들 중에서 주회 횟수가 연산되어야 하는 픽셀들을 포함하는 가상의 박스를 의미한다.
버텍스 쉐이더(1120)는 프레임에 포함된 픽셀들에 대한 픽셀 오너쉽 테스트(pixel ownership test)를 수행(1122)한다. 여기에서, 픽셀 오너쉽 테스트는 프레임에 포함된 픽셀들 각각의 주회 횟수를 연산하고, 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 절차를 의미한다. 만약, 버텍스 쉐이더(1120)가 경계 박스를 설정(1121)한 경우에는 경계 박스에 포함된 픽셀들에 대해서만 픽셀 오너쉽 테스트를 수행(1122)하며, 버텍스 쉐이더(1120)가 경계 박스를 설정(1121)하지 않은 경우에는 프레임에 포함된 픽셀들 전체에 대해서 픽셀 오너쉽 테스트를 수행(1122)한다.
버텍스 쉐이더(1120)가 픽셀 오너쉽 테스트를 수행(1122)하는 중에 픽셀들 각각의 주회 횟수가 연산된다. 이때, 버텍스 쉐이더(1120)는 픽셀의 주회 횟수를 자체적으로 연산할 수도 있고, 주회 횟수 생성 장치(1130)에 픽셀의 주회 횟수를 문의할 수도 있다. 도 12를 참조하여, 버텍스 쉐이더(1120)가 픽셀 오너쉽 테스트를 수행(1122)하는 일 예를 상세하게 설명한다.
도 12는 일 실시예에 따른 버텍스 쉐이더(1120)가 픽셀 오너쉽 테스트를 수행(1122)하는 일 예를 설명하기 위한 흐름도이다.
도 12를 참조하면, 버텍스 쉐이더(1120)가 픽셀 오너쉽 테스트를 수행(1122)하는 일 예는 도 1, 도 7 및 도 9에 도시된 연산부(120) 및 결정부(130)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1, 도 7 및 도 9에 도시된 연산부(120) 및 결정부(130)에 관하여 이상에서 기술된 내용은 도 12를 참조하여 후술할 내용에도 적용됨을 알 수 있다.
1210 단계에서, 버텍스 쉐이더(1120)는 픽셀 오너쉽 테스트가 수행될 픽셀이 경계 박스 내에 위치한 픽셀인지 확인한다. 만약, 버텍스 쉐이더(1120)가 경계 박스를 설정하지 않은 경우에는 1210 단계는 생략된다.
1220 단계에서, 버텍스 쉐이더(1120)는 픽셀의 주회 횟수를 연산한다. 만약, 주회 횟수 생성 장치(1130)에서 픽셀의 주회 횟수를 연산하면, 버텍스 쉐이더(1120)는 주회 횟수 생성 장치(1130)에 픽셀의 주회 횟수를 문의하고, 주회 횟수 생성 장치(1130)로부터 주회 횟수를 수신한다. 이때, 버텍스 쉐이더(1120)는 주회 횟수 생성 장치(1130)에 정점들 각각의 좌표에 대한 정보 및 주회 횟수가 연산되어야 할 픽셀의 좌표에 대한 정보를 전송하고, 주회 횟수 생성 장치(1130)로부터 주회 횟수를 수신한다. 주회 횟수 생성 장치(1130)가 동작하는 일 예는 도 13 내지 도 14를 참조하여 후술한다.
1230 단계에서, 버텍스 쉐이더(1120)는 제 1 규칙에 기초하여 프레임에 포함된 픽셀들 각각에 대하여 컬러를 설정할지 여부를 결정한다. 여기에서, 제 1 규칙은 주회 횟수가 0이 아닌 값을 갖는 픽셀들에 컬러 값을 할당하는 규칙(non-zero rule)을 의미한다. 버텍스 쉐이더(1120)가 제 1 규칙에 기초하여 픽셀에 컬러를 설정할지 여부를 결정하는 경우에는 1240 단계로 진행하고, 그렇지 않은 경우에는 1235 단계로 진행한다.
1235 단계에서, 버텍스 쉐이더(1120)는 제 2 규칙에 기초하여 프레임에 포함된 픽셀들 각각에 대하여 컬러를 설정할지 여부를 결정한다. 여기에서, 제 2 규칙은 주회 횟수가 홀수인 값을 갖는 픽셀들에 컬러 값을 할당하는 규칙(even-odd rule)을 의미한다. 버텍스 쉐이더(1120)가 제 2 규칙에 기초하여 픽셀에 컬러를 설정할지 여부를 결정하는 경우에는 1237 단계로 진행하고, 그렇지 않은 경우에는 1260 단계로 진행한다.
1237 단계에서, 버텍스 쉐이더(1120)는 프레임에 포함된 픽셀들 각각의 주회 횟수가 홀수인지 판단한다. 여기에서, 홀수는 픽셀의 주회 횟수의 절대값이 홀수인 경우를 의미한다. 예를 들어, 주회 횟수가 +3인 경우도 홀수로 판단되고, 주회 횟수가 -3인 경우도 홀수로 판단된다. 버텍스 쉐이더(1120)는 주회 횟수가 홀수인 픽셀에 대해서는 1250 단계를 진행하고, 주회 횟수가 짝수(0 포함)인 픽셀에 대해서는 1260 단계를 진행한다.
1240 단계에서, 버텍스 쉐이더(1120)는 프레임에 포함된 픽셀들 각각의 주회 횟수가 0이 아닌지 판단한다. 버텍스 쉐이더(1120)는 주회 횟수가 0인 픽셀에 대해서는 1260 단계를 진행하고, 주회 횟수가 0이 아닌 픽셀에 대해서는 1250 단계를 진행한다.
1250 단계에서, 버텍스 쉐이더(1120)는 컬러를 설정하기로 결정한 픽셀들에 대한 정보를 픽셀 쉐이더(1140)로 전송한다. 예를 들어, 버텍스 쉐이더(1120)는 컬러를 설정하기로 결정한 픽셀들에 대한 좌표 정보를 픽셀 쉐이더(1140)에 포함된 프레그먼트 쉐이더로 전송할 수 있다.
1260 단계에서, 버텍스 쉐이더(1120)는 1210 단계 내지 1250 단계에 기초하여 픽셀 오너쉽 테스트가 수행된 픽셀이 프레임에 포함된 마지막 픽셀인지 여부를 판단한다. 만약, 마지막 픽셀에 대한 픽셀 오너쉽 테스트가 수행된 경우라면 버텍스 쉐이더(1120)는 픽셀 오너쉽 테스트를 종료하고, 그렇지 않은 경우에는 다른 픽셀에 대하여 1210 단계 내지 1250 단계에 기초한 픽셀 오너쉽 테스트를 진행한다.
다시 도 11을 참조하면, 픽셀 쉐이더(1140)는 버텍스 쉐이더(1120)로부터 전송된 픽셀들 각각에 대하여 픽셀 처리를 수행한다. 다시 말해, 픽셀 쉐이더(1140)는 버텍스 쉐이더(1120)로부터 전송된 픽셀들 각각에 컬러 값을 설정한다.
먼저, 픽셀 쉐이더(1140)(또는, 픽셀 쉐이더(1140)에 포함된 프레그먼트 쉐이더)는 픽셀들 각각에 컬러 값을 설정(1141)한다. 이때, 프레그먼트 쉐이더는 기 저장된 텍스쳐(1142)를 이용하여 픽셀들 각각에 컬러 값을 설정할 수 있다.
그 후에, 픽셀 쉐이더(1140)는 픽셀들 각각에 후처리 작업을 수행한다. 여기에서, 후처리 작업은 블렌딩(blending) 작업 또는 안티에일리어싱 (antialiasing) 작업을 포함한다.
픽셀 쉐이더(1140)는 픽셀 처리가 수행된 결과를 프레임 버퍼(1150)에 전송하고, 프레임 버퍼(1150)는 픽셀 쉐이더(1140)로부터 전송된 정보를 저장한다.
도 13은 일 실시예에 따른 주회 횟수 생성 장치(1130)가 동작하는 일 예를 설명하기 위한 흐름도이다.
도 13을 참조하면, 주회 횟수 생성 장치(1130)가 동작하는 일 예는 도 1 및 도 7에 도시된 연산부(120) 또는 도 9 에 도시된 주회 횟수 연산 장치(150)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1, 도 7 및 도 9에 도시된 연산부(120) 또는 주회 횟수 연산 장치(150)에 관하여 이상에서 기술된 내용은 도 13을 참조하여 후술할 내용에도 적용됨을 알 수 있다.
1310 단계에서, 주회 횟수 생성 장치(1130)는 버텍스 쉐이더(1120)로부터 정점들의 좌표 및 픽셀(P)의 좌표를 수신한다.
1320 단계에서, 주회 횟수 생성 장치(1130)는 픽셀(P)의 주회 횟수(N)를 0으로 설정한다.
1330 단계에서, 주회 횟수 생성 장치(1130)는 픽셀(P)의 일 측면에 경로가 위치하는지 여부를 판단한다. 도 13에서는 주회 횟수 생성 장치(1130)가 픽셀(P)의 우측에 경로가 존재하는지를 판단하는 것으로 설명하겠으나, 이에 한정되지 않는다. 만약, 픽셀(P)의 우측에 경로가 존재하는 경우에는 1340 단계로 진행하고, 그렇지 않은 경우에는 1370 단계로 진행한다. 이하, 도 14를 참조하여 주회 횟수 생성 장치(1130)가 픽셀(P)의 일 측면에 경로가 위치하는지 여부를 판단하는 일 예를 설명한다.
도 14는 일 실시예에 따른 주회 횟수 생성 장치(1130)가 픽셀(P)의 일 측면에 경로가 위치하는지 여부를 판단하는 일 예를 설명하기 위한 흐름도이다.
이하에서, x 좌표는 프레임의 수평 방향에 대응하는 좌표를 의미하고, y 좌표는 프레임의 수직 방향에 대응하는 좌표를 의미한다. 또한, 이하에서는 픽셀(P)의 우측에 경로가 위치하고, 경로의 종료점(V2)의 x 좌표 성분(V2.x)가 시작점(V1)의 x 좌표 성분(V1.x)보다 크고, 경로의 종료점(V2)의 y 좌표 성분(V2.y)가 시작점(V1)의 y 좌표 성분(V1.y)보다 큰 것을 가정하여 설명한다. 다만, 상술된 가정들은 설명의 편의를 위하여 가정한 것일 뿐, 주회 횟수 생성 장치(1130)가 픽셀(P)의 일 측면에 경로가 위치하는지 여부를 판단하는 방법은 상술된 가정들에 제한되지 않는다.
1410 단계에서, 주회 횟수 생성 장치(1130)는 주회 횟수가 연산될 픽셀(P)의 좌표(P.x, P.y)와 프레임에 포함된 일 경로의 시작점(V1)의 좌표(V1.x, V1.y) 및 종료점(V2)의 좌표(V2.x, V2.y)를 획득한다.
1420 단계 및 1430 단계에서, 주회 횟수 생성 장치(1130)는 픽셀(P)의 우측에 경로가 위치하는지 여부를 판단한다. 예를 들어, 주회 횟수 생성 장치(1130)는 픽셀(P)에서 우측 수평 방향으로 연장한 가상의 반직선이 경로와 만나는지 여부를 확인한다. 만약, 가상의 반직선과 경로가 만나면, 주회 횟수 생성 장치(1130)는 픽셀(P)의 우측에 경로가 존재한다고 판단한다. 이하에서, 주회 횟수 생성 장치(1130)가 픽셀(P)에서 우측 수평 방향으로 연장한 가상의 선이 경로와 만나는지 여부를 확인하는 방법을 설명한다.
1420 단계에서, 주회 횟수 생성 장치(1130)는 픽셀(P)의 y 좌표 성분(P.y)이 시작점(V1)의 y 좌표 성분(V1.y)보다 크고 종료점(V2)의 y 좌표 성분(V2.y)보다 작은지 여부를 판단한다. 만약, 픽셀(P)의 y 좌표 성분(P.y)이 시작점(V1)의 y 좌표 성분(V1.y)보다 크고 종료점(V2)의 y 좌표 성분(V2.y)보다 작은 경우에는 1430 단계로 진행하고, 그렇지 않은 경우에는 도 13의 1370 단계로 진행한다.
1430 단계에서, 주회 횟수 생성 장치(1130)는 시작점의 종료점(V2)의 x 좌표 성분(V2.x)과 시작점(V1)의 x 좌표 성분(V1.x)의 차이(V2.x-V1.x)와 픽셀(P)의 y 좌표 성분(P.y)과 시작점(V1)의 y 좌표 성분(V1.y)의 차이(P.y-V1.y)인 제 1 값을 연산한다. 그리고, 주회 횟수 생성 장치(1130)는 픽셀(P)의 x 좌표 성분(P.x)과 시작점(V1)의 x 좌표 성분(V1.x)의 차이(P.x-V1.x)와 종료점(V2)의 y 좌표 성분(V2.y)과 시작점(V1)의 y 좌표 성분(V1.y)의 차이(V2.y-V1.y)인 제 2 값을 연산한다. 그리고, 주회 횟수 생성 장치(1130)는 제 1 값이 제 2 값보다 큰지 여부를 판단한다.
만약, 제 1 값이 제 2 값보다 큰 경우에는, 주회 횟수 생성 장치(1130)는 픽셀(P)에서 우측 수평 방향으로 연장한 가상의 선이 경로와 만난다고 판단하고 도 13의 1340 단계로 진행한다. 만약, 제 1 값이 제 2 값보다 작거나 같은 경우에는, 주회 횟수 생성 장치(1130)는 픽셀(P)에서 우측 수평 방향으로 연장한 가상의 선이 경로와 만나지 않는다고 판단하고 도 13의 1380 단계로 진행한다.
다시 도 13을 참조하면, 1340 단계에서, 주회 횟수 생성 장치(1130)는 픽셀(P)의 우측에 존재하는 경로가 시계 방향으로 회전하는지를 판단한다. 만약, 경로가 시계 방향으로 회전하는 경우에는 1350 단계로 진행하고, 그렇지 않은 경우에는 1360 단계로 진행한다.
1350 단계에서, 주회 횟수 생성 장치(1130)는 픽셀(P)의 주회 횟수(N)에 1을 증산한다.
1360 단계에서, 주회 횟수 생성 장치(1130)는 픽셀(P)의 우측에 존재하는 경로가 반시계 방향으로 회전하는지를 판단한다. 만약, 경로가 반시계 방향으로 회전하는 경우에는 1370 단계로 진행하고, 그렇지 않은 경우에는 1380 단계로 진행한다.
1370 단계에서, 주회 횟수 생성 장치(1130)는 픽셀(P)의 주회 횟수(N)에 1을 감산한다.
1380 단계에서, 주회 횟수 생성 장치(1130)는 픽셀(P)의 우측에 다른 경로가 존재하는지를 판단한다. 만약, 픽셀(P)의 우측에 다른 경로가 존재하는 경우에는 에는 1330 단계로 진행하고, 그렇지 않은 경우에는 1390 단계로 진행한다.
1390 단계에서, 주회 횟수 생성 장치(1330)는 픽셀(P)의 주회 횟수를 반환한다.
도 15는 일 실시예에 따른 경로 렌더링을 수행하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 15를 참조하면, 경로 렌더링을 수행하는 방법은 도 1, 도 7, 도 9 및 도 11에 도시된 경로 렌더링을 수행하는 장치(100, 101 또는 102) 또는 GPU(1100)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1, 도 7, 도 9 및 도 11에 도시된 경로 렌더링을 수행하는 장치(100, 101 또는 102) 또는 GPU(1100)에 관하여 이상에서 기술된 내용은 도 15의 경로 렌더링을 수행하는 방법에도 적용됨을 알 수 있다.
1510 단계에서, 획득부(110)는 적어도 하나 이상의 경로에 대응하는 정점들에 대한 정보를 포함하는 경로 데이터를 획득한다.
1520 단계에서, 연산부(120)는 프레임에 포함된 픽셀들 각각의 위치를 중심으로 한 적어도 하나 이상의 경로의 위치 및 진행 방향을 이용하여 픽셀들 각각에 대응하는 주회 횟수를 연산한다.
1530 단계에서, 결정부(130)는 주회 횟수를 이용하여 픽셀들 각각에 컬러를 설정할지 여부를 결정한다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100: 경로 렌더링을 수행하는 장치
110: 획득부
120: 연산부
130: 결정부

Claims (32)

  1. 렌더링이 수행될 객체에 포함된 정점(vertex)들에 대한 정보를 포함하는 데이터를 획득하는 단계;
    스텐실 버퍼를 이용하여 삼각형들을 렌더링하지 않고, 프레임에 포함된 픽셀들 각각의 위치와 상기 정점들이 연결된 적어도 하나 이상의 경로의 진행 방향 사이의 관계에 기초하여 상기 픽셀들 각각에 대응하는 주회 횟수(winding number)를 연산하는 단계; 및
    상기 주회 횟수를 이용하여 상기 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 단계;를 포함하는 경로 렌더링을 수행하는 방법.
  2. 제 1 항에 있어서,
    상기 연산하는 단계는 상기 픽셀들 각각의 일 측면에 위치하는 상기 경로의 진행 방향을 이용하여 상기 주회 횟수를 연산하는 방법.
  3. 제 2 항에 있어서,
    상기 일 측면은 상기 픽셀들 각각의 위치와 상기 적어도 하나 이상의 경로의 위치를 고려하여 결정되는 방법.
  4. 제 2 항에 있어서,
    상기 연산하는 단계는
    상기 픽셀들 각각의 일 측면에 상기 경로가 위치하는지 여부를 확인하는 단계;
    상기 확인 결과에 기초하여 상기 경로의 진행 방향이 시계 방향인지 또는 반시계 방향인지 결정하는 단계; 및
    상기 결정된 진행 방향이 시계 방향인 경우에 미리 결정된 값을 증산 또는 감산하고 상기 결정된 진행 방향이 반시계 방향인 경우에 상기 미리 결정된 값을 감산 또는 증산함으로써, 상기 주회 횟수를 연산하는 단계;를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 데이터에 포함된 상기 정점(vertex)들 각각의 좌표 성분을 이용하여 상기 프레임에 경계 박스(bounding box)를 설정하는 단계;를 더 포함하고,
    상기 연산하는 단계는 상기 경계 박스에 포함된 상기 픽셀들 각각에 대응하는 주회 횟수를 연산하는 방법.
  6. 제 5 항에 있어서,
    상기 설정하는 단계는
    상기 좌표 성분들 중 수평 방향 좌표 성분의 최대값 및 최소값, 상기 좌표들 중 수직 방향 좌표 성분의 최대값 및 최소값을 이용하여 상기 프레임에 상기 경계 박스를 설정하는 방법.
  7. 제 6 항에 있어서,
    상기 경계 박스는 상기 수평 방향 좌표 성분의 최대값 및 상기 수직 방향 좌표 성분의 최대값으로 형성된 제 1 좌표와 상기 수평 방향 좌표 성분의 최소값 및 상기 수직 방향 좌표 성분의 최소값으로 형성된 제 2 좌표를 잇는 선을 대각선으로 포함하는 사각형인 방법.
  8. 제 1 항에 있어서,
    상기 정점들은 상기 적어도 하나 이상의 경로 각각의 시작 위치에 대응하는 정점 및 종료 위치에 대응하는 정점을 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 결정하는 단계는
    기 설정된 규칙에 기초하여 상기 컬러를 설정할지 여부를 결정하고,
    상기 기 설정된 규칙은 상기 주회 횟수가 0이 아닌 값을 갖는 픽셀들에 컬러 값을 할당하는 제 1 규칙 또는 상기 주회 횟수가 홀수인 값을 갖는 픽셀들에 컬러 값을 할당하는 제 2 규칙을 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 결정 결과에 기초하여 상기 픽셀들 각각에 컬러 값을 설정하는 단계; 및
    상기 픽셀들 각각의 컬러 값을 저장하는 단계;를 더 포함하는 방법.
  11. 제 1 항 내지 제 10 항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  12. 렌더링이 수행될 객체에 포함된 정점(vertex)들에 대한 정보를 포함하는 데이터를 획득하는 획득부;
    스텐실 버퍼를 이용하여 삼각형들을 렌더링하지 않고, 프레임에 포함된 픽셀들 각각의 위치와 상기 정점들이 연결된 적어도 하나 이상의 경로의 진행 방향 사이의 관계에 기초하여 상기 픽셀들 각각에 대응하는 주회 횟수(winding number)를 연산하는 연산부; 및
    상기 주회 횟수를 이용하여 상기 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 결정부;를 포함하는 경로 렌더링을 수행하는 장치.
  13. 제 12 항에 있어서,
    상기 연산부는 상기 픽셀들 각각의 일 측면에 위치하는 상기 경로의 진행 방향을 이용하여 상기 주회 횟수를 연산하는 장치.
  14. 제 13 항에 있어서,
    상기 연산부는 상기 픽셀들 각각의 위치와 상기 적어도 하나 이상의 경로의 위치를 고려하여 상기 일 측면을 결정하는 장치.
  15. 제 13 항에 있어서,
    상기 연산부는
    상기 픽셀들 각각의 일 측면에 상기 경로가 위치하는지 여부를 확인하고,
    상기 확인 결과에 기초하여 상기 경로의 진행 방향이 시계 방향인지 또는 반시계 방향인지 결정하고,
    상기 결정된 진행 방향이 시계 방향인 경우에 미리 결정된 값을 증산 또는 감산하고 상기 결정된 진행 방향이 반시계 방향인 경우에 상기 미리 결정된 값을 감산 또는 증산함으로써, 상기 주회 횟수를 연산하는 장치.
  16. 제 12 항에 있어서,
    상기 데이터에 포함된 상기 정점(vertex)들 각각의 좌표 성분을 이용하여 상기 프레임에 경계 박스(bounding box)를 설정하는 설정부;를 더 포함하고,
    상기 연산부는 상기 경계 박스에 포함된 상기 픽셀들 각각에 대응하는 주회 횟수를 연산하는 장치.
  17. 제 16 항에 있어서,
    상기 설정부는
    상기 좌표 성분들 중 수평 방향 좌표 성분의 최대값 및 최소값, 상기 좌표들 중 수직 방향 좌표 성분의 최대값 및 최소값을 이용하여 상기 프레임에 상기 경계 박스를 설정하는 장치.
  18. 제 17 항에 있어서,
    상기 경계 박스는 상기 수평 방향 좌표 성분의 최대값 및 상기 수직 방향 좌표 성분의 최대값으로 형성된 제 1 좌표와 상기 수평 방향 좌표 성분의 최소값 및 상기 수직 방향 좌표 성분의 최소값으로 형성된 제 2 좌표를 잇는 선을 대각선으로 포함하는 사각형인 장치.
  19. 제 12 항에 있어서,
    상기 결정부는
    기 설정된 규칙에 기초하여 상기 컬러를 설정할지 여부를 결정하고,
    상기 기 설정된 규칙은 상기 주회 횟수가 0이 아닌 값을 갖는 픽셀들에 상기 컬러 값을 할당하는 제 1 규칙 또는 상기 주회 횟수가 홀수인 값을 갖는 픽셀들에 상기 컬러 값을 할당하는 제 2 규칙을 포함하는 장치.
  20. 제 12 항에 있어서,
    상기 결정 결과에 기초하여 상기 픽셀들 각각에 컬러 값을 설정하는 픽셀 쉐이더; 및
    상기 픽셀들 각각의 컬러 값을 저장하는 프레임 버퍼;를 더 포함하는 장치.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
KR1020140048879A 2014-04-23 2014-04-23 경로 렌더링을 수행하는 방법 및 장치. KR102238651B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020140048879A KR102238651B1 (ko) 2014-04-23 2014-04-23 경로 렌더링을 수행하는 방법 및 장치.
US14/518,473 US10186053B2 (en) 2014-04-23 2014-10-20 Method and apparatus for performing path rendering
CN201410784743.2A CN105006010B (zh) 2014-04-23 2014-12-16 执行路径渲染的方法和设备
JP2015063672A JP2015210816A (ja) 2014-04-23 2015-03-26 経路レンダリングを行う方法及びその装置
EP15163022.5A EP2937834B1 (en) 2014-04-23 2015-04-09 Method and apparatus for performing path rendering

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140048879A KR102238651B1 (ko) 2014-04-23 2014-04-23 경로 렌더링을 수행하는 방법 및 장치.

Publications (2)

Publication Number Publication Date
KR20150122519A KR20150122519A (ko) 2015-11-02
KR102238651B1 true KR102238651B1 (ko) 2021-04-09

Family

ID=52946343

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140048879A KR102238651B1 (ko) 2014-04-23 2014-04-23 경로 렌더링을 수행하는 방법 및 장치.

Country Status (5)

Country Link
US (1) US10186053B2 (ko)
EP (1) EP2937834B1 (ko)
JP (1) JP2015210816A (ko)
KR (1) KR102238651B1 (ko)
CN (1) CN105006010B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10026204B2 (en) 2015-01-27 2018-07-17 Splunk Inc. Efficient point-in-polygon indexing technique for processing queries over geographic data sets
US9916326B2 (en) 2015-01-27 2018-03-13 Splunk, Inc. Efficient point-in-polygon indexing technique for facilitating geofencing operations
US9836874B2 (en) 2015-01-27 2017-12-05 Splunk Inc. Efficient polygon-clipping technique to reduce data transfer requirements for a viewport
US9607414B2 (en) * 2015-01-27 2017-03-28 Splunk Inc. Three-dimensional point-in-polygon operation to facilitate displaying three-dimensional structures
US9767122B2 (en) 2015-01-27 2017-09-19 Splunk Inc. Efficient point-in-polygon indexing technique to facilitate displaying geographic data
KR102426667B1 (ko) * 2015-06-23 2022-07-28 삼성전자주식회사 경로 렌더링에서 에일리어싱을 방지하는 방법 및 장치.
KR102443697B1 (ko) 2015-09-11 2022-09-15 삼성전자주식회사 경로 스트로크를 수행하는 방법 및 장치
US10354365B2 (en) * 2016-01-18 2019-07-16 Adavanced Micro Devices, Inc. Hybrid anti-aliasing
KR102651125B1 (ko) 2016-04-06 2024-03-26 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치
KR102657587B1 (ko) 2016-11-21 2024-04-15 삼성전자주식회사 커브 렌더링을 수행하는 방법 및 장치.
CN106981087A (zh) * 2017-04-05 2017-07-25 杭州乐见科技有限公司 光照效果渲染方法及装置
CN109308734B (zh) * 2017-07-27 2023-01-06 腾讯科技(深圳)有限公司 3d文字的生成方法及其装置、设备、存储介质
KR102446865B1 (ko) 2017-09-12 2022-09-23 삼성전자주식회사 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법
JP6996200B2 (ja) * 2017-09-29 2022-01-17 富士通株式会社 画像処理方法、画像処理装置、および画像処理プログラム
KR20200073697A (ko) * 2018-12-14 2020-06-24 삼성전자주식회사 경로를 포함하는 객체를 렌더링하는 장치, 이를 포함하는 컴퓨팅 장치 및 이의 렌더링 방법
CN111881152B (zh) * 2020-07-17 2024-04-02 珠海格力电器股份有限公司 组态软件的模块的连接方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6084596A (en) 1994-09-12 2000-07-04 Canon Information Systems Research Australia Pty Ltd. Rendering self-overlapping objects using a scanline process
US7408553B1 (en) 2005-12-15 2008-08-05 Nvidia Corporation Inside testing for paths
US20100265254A1 (en) 2009-04-17 2010-10-21 Arm Limited Graphics filled shape drawing
WO2010133833A2 (en) 2009-05-18 2010-11-25 Imagination Technologies Limited A method and apparatus for rendering a computer generated image
US20140043342A1 (en) * 2012-08-09 2014-02-13 Qualcomm Incorporated Extending dx11 gpu for programmable vector graphics

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4365950B2 (ja) 1998-09-11 2009-11-18 キヤノン株式会社 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置
US7110003B2 (en) 2000-12-22 2006-09-19 Canon Kabushiki Kaisha Rendering objects
AUPR963101A0 (en) 2001-12-19 2002-01-24 Canon Kabushiki Kaisha Overlapping triangle meshes
JP4693660B2 (ja) 2006-03-10 2011-06-01 株式会社東芝 描画装置、描画方法及び描画プログラム
JP4157569B2 (ja) 2006-05-11 2008-10-01 株式会社東芝 描画装置、描画方法及び描画プログラム
CN101465973B (zh) 2008-11-04 2010-12-01 新奥特(北京)视频技术有限公司 基于曲线轮廓封闭环域和像素掩码矩阵的字幕渲染方法
CN101996414B (zh) 2009-08-18 2013-03-20 富士通株式会社 用于渲染凹多边形的方法和装置
US20110285718A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Point containment for quadratic bèzier strokes
JP5653277B2 (ja) 2011-03-31 2015-01-14 株式会社東芝 描画装置、描画方法、及び描画プログラム
CN102737401A (zh) 2011-05-06 2012-10-17 新奥特(北京)视频技术有限公司 一种图形渲染中光栅化阶段的三角片填充方法
US20150023595A1 (en) * 2013-07-16 2015-01-22 Mitsubishi Electric Research Laboratories, Inc. Method for Rendering Paths without Outlining Artifacts

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6084596A (en) 1994-09-12 2000-07-04 Canon Information Systems Research Australia Pty Ltd. Rendering self-overlapping objects using a scanline process
US7408553B1 (en) 2005-12-15 2008-08-05 Nvidia Corporation Inside testing for paths
US20100265254A1 (en) 2009-04-17 2010-10-21 Arm Limited Graphics filled shape drawing
WO2010133833A2 (en) 2009-05-18 2010-11-25 Imagination Technologies Limited A method and apparatus for rendering a computer generated image
US20140043342A1 (en) * 2012-08-09 2014-02-13 Qualcomm Incorporated Extending dx11 gpu for programmable vector graphics

Also Published As

Publication number Publication date
CN105006010A (zh) 2015-10-28
JP2015210816A (ja) 2015-11-24
US20150310636A1 (en) 2015-10-29
CN105006010B (zh) 2020-01-07
EP2937834B1 (en) 2018-11-28
US10186053B2 (en) 2019-01-22
KR20150122519A (ko) 2015-11-02
EP2937834A1 (en) 2015-10-28

Similar Documents

Publication Publication Date Title
KR102238651B1 (ko) 경로 렌더링을 수행하는 방법 및 장치.
US11694393B2 (en) Method and apparatus for performing tile-based path rendering
KR102276909B1 (ko) 렌더링 방법 및 장치
KR102122454B1 (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
KR102258100B1 (ko) 텍스쳐 처리 방법 및 장치
US20120229460A1 (en) Method and System for Optimizing Resource Usage in a Graphics Pipeline
KR20110093404A (ko) 3차원 그래픽스 랜더링 장치 및 그 방법
US10169839B2 (en) Method and apparatus for executing graphics pipeline
KR102101834B1 (ko) 영상 처리 장치 및 방법
CN106530379B (zh) 用于执行路径描边的方法和设备
US20150145858A1 (en) Method and apparatus to process current command using previous command information
KR102399686B1 (ko) 3d 렌더링 방법 및 장치
KR102354989B1 (ko) 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.
KR102512521B1 (ko) 텍스쳐 처리 방법 및 장치
KR102423767B1 (ko) 타일 기반 경로 렌더링을 수행하는 방법 및 장치.
KR20170016156A (ko) 경로 렌더링을 수행하는 방법 및 장치.
KR102618560B1 (ko) 경로 렌더링을 수행하는 방법 및 장치
US10297067B2 (en) Apparatus and method of rendering frame by adjusting processing sequence of draw commands
US20200193657A1 (en) Apparatus configured to render object including path, computing device including the apparatus, and rendering method of the apparatus
KR20160131457A (ko) 커브 렌더링을 수행하는 방법 및 장치.

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