KR102446865B1 - 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법 - Google Patents

경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법 Download PDF

Info

Publication number
KR102446865B1
KR102446865B1 KR1020170116658A KR20170116658A KR102446865B1 KR 102446865 B1 KR102446865 B1 KR 102446865B1 KR 1020170116658 A KR1020170116658 A KR 1020170116658A KR 20170116658 A KR20170116658 A KR 20170116658A KR 102446865 B1 KR102446865 B1 KR 102446865B1
Authority
KR
South Korea
Prior art keywords
winding number
primitive
memory
information
rendering
Prior art date
Application number
KR1020170116658A
Other languages
English (en)
Other versions
KR20190029279A (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 KR1020170116658A priority Critical patent/KR102446865B1/ko
Priority to CN201810520788.7A priority patent/CN109509244B/zh
Priority to DE102018113275.1A priority patent/DE102018113275A1/de
Priority to US16/007,628 priority patent/US10776896B2/en
Priority to GB2007726.9A priority patent/GB2586696B/en
Priority to GB1810476.0A priority patent/GB2566349B/en
Publication of KR20190029279A publication Critical patent/KR20190029279A/ko
Application granted granted Critical
Publication of KR102446865B1 publication Critical patent/KR102446865B1/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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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
    • 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
    • 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)

Abstract

경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법이 개시된다. 본 개시의 일 실시예에 따른 객체에 대한 렌더링을 수행하는 그래픽 처리 방법은 상기 객체에 대한 프리미티브 정보를 포함하는 객체 정보를 수신하는 단계, 상기 프리미티브 정보를 이용하여 복수의 비트로 구성되는 프리미티브 마스크를 생성하는 단계, 상기 프리미티브 마스크에 기초하여 픽셀들 각각에 대한 와인딩 넘버(Winding Number)를 생성하는 단계 및 상기 생성하는 단계에서 생성된 상기 와인딩 넘버에 기초하여 상기 픽셀들에 대한 렌더링을 수행하는 단계를 포함할 수 있다.

Description

경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법{GRAPHIC PROCESSING UNIT AND GRAPHIC PROCESSING METHOD PERFORMING PATH RENDERING}
본 개시의 기술적 사상은 그래픽 처리 장치(Graphics Processing Unit)에 관한 것으로, 더욱 상세하게는 경로 렌더링을 수행하는 그래픽 처리 장치 및 이의 동작 방법에 관한 것이다.
최근 벡터 그래픽스(vector graphics) 또는 경로 렌더링(path rendering)을 수행하는 경우 그래픽 처리 장치의 가속 성능을 향상시키기 위한 방법이 연구되고 있다. 경로 렌더링에 있어서 픽셀 별로 와인딩 넘버(Winding Number)를 계산하고, 와인딩 넘버에 기초하여 렌더링을 수행하는 방법이 제안되었다. 다만, 픽셀 별로 각각 와인딩 넘버를 계산해야 하기 때문에 전체 픽셀에 대한 렌더링 소요 시간이 늘어나는 문제점이 존재하였다.
본 개시의 기술적 사상이 해결하고자 하는 과제는 와인딩 넘버의 계산 시간을 감소시킴으로서 효율적인 렌더링을 수행하는 그래픽 처리 장치를 제공하는 데 있다.
본 개시의 기술적 사상이 해결하고자 하는 또 다른 과제는 와인딩 넘버의 계산 시간을 감소시킴으로서 효율적인 렌더링을 수행하는 그래픽 처리 장치의 동작 방법을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 객체에 대한 렌더링을 수행하는 그래픽 처리 방법은 상기 객체에 대한 프리미티브 정보를 포함하는 객체 정보를 수신하는 단계, 상기 프리미티브 정보를 이용하여 복수의 비트로 구성되는 프리미티브 마스크를 생성하는 단계, 상기 프리미티브 마스크에 기초하여 픽셀들 각각에 대한 와인딩 넘버(Winding Number)를 생성하는 단계 및 상기 생성하는 단계에서 생성된 상기 와인딩 넘버에 기초하여 상기 픽셀들에 대한 렌더링을 수행하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 그래픽 처리 장치는 프리미티브 정보를 포함하는 객체 정보를 수신하고, 상기 프리미티브 정보에 기초하여 와인딩 넘버를 계산할지 여부를 결정하고, 상기 계산할지 여부에 따라서 서로 다른 방법으로 복수의 픽셀들 각각에 대한 상기 와인딩 넘버를 생성하는 와인딩 넘버 생성기 및 상기 와인딩 넘버에 기초하여 렌더링을 수행하는 렌더링 결정기를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 그래픽 처리 장치는 프리미티브 정보를 기초로 복수의 비트로 구성되는 프리미티브 마스크를 생성하는 와인딩 넘버 매니저 및 상기 프리미티브 마스크 및 이에 대응하는 와인딩 넘버를 저장하는 제1 메모리를 포함하고, 상기 와인딩 넘버 매니저는 상기 프리미티브 정보의 수신에 대응하여 상기 제1 메모리에 상기 프리미티브 정보에 대응하는 와인딩 넘버를 기입하거나 독출하는 것을 특징으로 할 수 있다.
본 개시의 기술적 사상에 따른 그래픽 처리 장치는 프리미티브 정보에 기초한 프리미티브 마스크 및 이에 대응하는 와인딩 넘버를 저장할 수 있다. 이에 따라서, 렌더링을 위한 와인딩 넘버를 계산하는 경우 동일한 프리미티브 마스크를 갖는 픽셀에 대한 와인딩 넘버의 계산이 생략될 수 있고, 렌더링 수행 시간이 감소할 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 그래픽 처리 장치를 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 순서도이다.
도 3은 본 개시의 예시적 실시예에 따른 도 2의 와인딩 넘버를 생성하는 단계에 대한 순서도를 나타낸다.
도 4a는 본 개시의 예시적 실시예에 따른 와인딩 넘버 생성기를 나타내는 블록도이다
도 4b는 본 개시의 예시적 실시예에 따른 와인딩 넘버 생성기를 나타내는 블록도이다.
도 5는 본 개시의 예시적 실시예에 따른 와인딩 넘버를 설명하기 위한 도면이다.
도 6은 본 개시의 예시적 실시예에 따른 와인딩 넘버 생성기의 동작을 설명하기 위한 표이다.
도 7은 본 개시의 예시적 실시예에 따른 와인딩 넘버 생성기의 동작을 설명하기 위한 표이다.
도 8은 본 개시의 예시적 실시예에 따른 와인딩 넘버 생성기가 서로 다른 측면을 선택하여 픽셀의 와인딩 넘버를 계산하는 예를 설명하기 위한 도면이다.
도 9는 본 개시의 예시적 실시예에 따른 도 2의 렌더링 수행 단계를 나타내는 순서도이다.
도 10은 본 개시의 예시적 실시예에 따른 렌더링 결정기가 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 일 예시를 설명하기 위한 도면이다.
도 11은 본 개시의 예시적 실시예에 따른 그래픽 처리 장치를 나타내는 블록도이다.
도 12는 본 개시의 예시적 실시예에 따른 바운딩 박스 매니저의 동작의 일 예시를 나타내는 도면이다.
도 13는 본 개시의 예시적 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 순서도이다.
도 14는 본 개시의 예시적 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 도면이다.
도 15은 본 개시의 예시적 실시예에 따른 그래픽 처리 장치의 동작 방법을나타내는 순서도이다..
도 16은 본 개시의 예시적 실시예에 따른 그래픽 처리 시스템을 나타내는 도면이다.
도 1은 본 개시의 예시적 실시예에 따른 그래픽 처리 장치를 나타내는 블록도이다.
도 1을 참조하면, 그래픽 처리 장치(100)는 와인딩 넘버 생성기(110) 및 렌더링 결정기(120)를 포함할 수 있다.
와인딩 넘버 생성기(110)는 프리미티브 정보(PI)를 수신할수 있다. 일 실시예에서, 프리미티브 정보(PI)는 CPU로부터 수신할 수 있고, CPU는 렌더링이 수행될 객체에 포함된 정점(vertex)들에 대한 정보를 포함하는 객체 정보를 이용하여 프리미티브 정보(PI)를 생성할 수 있다. 객체는 렌더링이 수행될 적어도 하나 이상의 프리미티브를 포함할 수 있고, 적어도 하나 이상의 프리미티브가 연결되어 형성된 폐다각형(closed polygon) 또는 폐경로(closed path)을 포함할 수 있다. 여기에서, 프리미티브는 일 지점에서 다른 지점까지 이어진 직선 또는 곡선을 의미할 수 있다. 상기 객체 정보에는 정점들 각각의 좌표에 대한 정보 및 정점들을 조합하여 프리미티브를 구성하기 위한 커맨드(command)들이 포함될 수 있다. 여기에서, 정점은 프리미티브의 시작 위치에 대응하는 정점 또는 프리미티브의 종료 위치에 대응하는 정점을 포함할 수 있다.
예를 들어, 프레임에 포함된 픽셀들 중 제1 픽셀로부터 제2 픽셀까지의 직선을 프리미티브라고 가정하면, 정점들은 프레임에서 제1 픽셀 및 제2 픽셀 각각에 대응하는 지점을 의미할 수 있다. 따라서, 객체 정보는 제1 픽셀에 대응하는 제1 정점의 좌표, 제2 픽셀에 대응하는 제2 픽셀의 좌표 및 제1 정점에서 제2 정점까지 직선을 구성하라는 커맨드를 포함할 수 있다. 따라서, 객체 정보를 참조함으로서, 프리미티브를 구성하는 정점들 각각의 좌표에 대한 정보 뿐만 아니라, 프리미티브의 방향에 대한 정보도 파악될 수 있다. 또한, 객체 정보에는 각각의 픽셀에 설정될 컬러 값에 대한 정보도 포함될 수 있다.
일 실시예에서 와인딩 넘버 생성기(110)는 CPU로부터 추가적으로 컬러 할당 규칙 정보, 샘플 위치 정보 및 컬러 정보를 더 수신할 수 있고, 컬러 할당 규칙 정보, 프리미티브 정보(PI), 샘플 위치 정보 및 컬러 정보는 픽셀에 대한 기하 정보(Geometry Data)를 구성할 수 있다. 샘플 위치 정보는 객체 정보에 대응하는 픽셀의 위치 정보를 나타낼 수 있고, 컬러 정보는 상기 픽셀에 할당될 컬러에 대한 정보를 나타낼 수 있다. 컬러 할당 규칙 정보는 와인딩 넘버에 따라서 상기 픽셀에 상기 컬러를 할당할지 여부에 대한 규칙을 나타낼 수 있고, 프리미티브 정보(PI)는 해당 픽셀의 위치에서 일 방향에 위치하는 프리미티브(Primitive)에 관한 정보를 나타낼 수 있다.
와인딩 넘버 생성기(110)는 수신한 프리미티브 정보(PI)를 기초로 와인딩 넘버(WN)를 생성하여 렌더링 결정기(120)에 출력할 수 있다. 본 개시의 기술적 사상에 따르면, 와인딩 넘버 생성기(110)는 와인딩 넘버 메모리(111)를 포함할 수 있고, 와인딩 넘버 메모리(111)를 활용함으로서 와인딩 넘버(WN)의 계산량을 줄일 수 있다.
와인딩 넘버 메모리(111)는 프리미티브 정보(PI)에 대응하는 와인딩 넘버(WN)를 저장하는 메모리로서, 예컨대 정적 랜덤 억세스 메모리(Static Random Access Memory;SRAM), 동적 랜덤 억세스 메모리(Dynamic Random Access Memory;DRAM), 래치(Latch), 플립플롭(Flip-Flop), 레지스터(Register) 등과 같은 휘발성 메모리를 포함할 수도 있고, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory; RRAM), 상변화 메모리(Phase-Change Memory; PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory; MRAM), 강유전체 메모리(Ferroelectric Random Access Memory; FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory; STT-RAM) 등과 같은 비휘발성 메모리를 포함할 수도 있다. 이하에서는 와인딩 넘버 메모리(111)가 캐시 메모리(Cache Memory)인 것으로 설명되나, 본 개시의 기술적 사상이 이에 제한되지 않음은 이해되어야 할 것이다.
와인딩 넘버 생성기(110)는 수신한 프리미티브 정보(PI)를 기초로 상기 프리미티브 정보(PI)에 대응하는 와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있는지 확인할 수 있다. 와인딩 넘버 생성기(110)는 와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있는 경우 와인딩 넘버(WN)를 계산하지 않고 와인딩 넘버 메모리(111)로부터 상기 프리미티브 정보(PI)에 대응하는 와인딩 넘버(WN)를 독출할 수 있고, 이에 따라 와인딩 넘버(WN)의 계산량이 감소할 수 있다.
와인딩 넘버 생성기(110)는 와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있지 않는 경우, 프레임에 포함된 픽셀들 각각의 위치와 정점들을 연결하는 적어도 하나 이상의 프리미티브의 진행 방향의 관계에 기초하여 픽셀들 각각에 대응하는 와인딩 넘버(WN)를 계산할 수 있다.
여기에서, 와인딩 넘버(WN)는, 특정 픽셀의 위치에서 일 측면을 바라볼 때, 프리미티브가 그려지는 동안 몇 바퀴가 회전되는가를 나타내는 미리 결정된 값(N)을 의미할 수 있다. 와인딩 넘버(WN)는 프리미티브가 시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 증산하고, 프리미티브가 반시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 감산함으로써 계산될 수 있으나, 이에 한정되지 않는다. 다시 말해, 와인딩 넘버(WN)는 프리미티브가 시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 감산하고, 프리미티브가 반시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 증산함으로써 계산될 수 있다. 일 예시로서, 프리미티브가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 와인딩 넘버(WN)는 +1이 될 수 있다. 이때, 프리미티브가 반시계 방향으로 한 바퀴 회전한다면, 픽셀의 와인딩 넘버(WN)는 -1이 될 수 있다. 다른 예시로서, 프리미티브가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 와인딩 넘버(WN)는 -1이 될 수 있다. 이때, 프리미티브가 반시계 방향으로 한 바퀴 회전한다면, 픽셀의 와인딩 넘버(WN)는 +1이 될 수 있다.
또한, 미리 결정된 값(N)은 정수가 될 수 있으나, 이에 한정되지 않는다. 다시 말해, 와인딩 넘버(WN)는 특정 픽셀의 위치에서 일 측면을 바라볼 때, 프리미티브가 그려지는 동안의 회전 수에 매핑된 수라면 제한 없이 해당될 수 있다. 일 예시로서, 프리미티브가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 와인딩 넘버(WN)는 +0.1이 될 수 있다. 이때, 프리미티브가 반시계 방향으로 한 바퀴 회전한다면, 픽셀의 와인딩 넘버(WN)는 -0.1이 될 수 있다. 다른 예시로서, 프리미티브가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 와인딩 넘버(WN)는 -0.5가 될 수 있다. 이때, 프리미티브가 반 시계 방향으로 한 바퀴 회전한다면, 픽셀의 와인딩 넘버(WN)는 +0.5가 될 수 있다.
와인딩 넘버 생성기(110)는 상술한 방식으로 생성한 와인딩 넘버(WN)를 렌더링 결정기(120)에 출력할 수 있다. 렌더링 결정기(120)는 와인딩 넘버(WN)에 기초하여 픽셀에 컬러를 할당할지 여부를 결정할 수 있다. 일 실시예에서, 렌더링 결정기(120)는 컬러 할당 규칙에 대한 정보를 더 수신할 수 있고, 상기 컬러 할당 규칙 및 와인딩 넘버(WN)에 기초하여 픽셀에 컬러를 할당할지 여부를 결정할 수 있다. 일 실시예에서 렌더링 결정기(120)는 와인딩 넘버 생성기(110)로부터 컬러 정보를 더 수신할 수 있고 상기 픽셀에 대해 수신한 컬러 정보에 대응되는 컬러로 렌더링을 수행할 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 순서도이다.
도 1 및 도 2를 참조하면, 그래픽 처리 장치(100)는 프리미티브 정보(PI)를 수신할 수 있다(S100). 그래픽 처리 장치(100)는 프리미티브 정보(PI)를 이용하여 프리미티브 마스크를 생성할 수 있다(S200). 프리미티브 마스크는 복수의 비트로 구성되는 데이터로서, 프리미티브 정보(PI)에 대응될 수 있다. 그래픽 처리 장치(100)는 프리미티브 마스크에 기초하여 와인딩 넘버(WN)를 생성할 수 있다(S300). 그래픽 처리 장치(100)의 와인딩 넘버(WN) 생성 방법은 와인딩 넘버 메모리(111)에 프리미티브 마스크에 대응되는 와인딩 넘버(WN)가 저장되어 있는지 여부에 따라서 달라질 수 있다. 이에 관해서는 도 3a 및 도 3b에서 후술한다. 그래픽 처리 장치(100)는 생성한 와인딩 넘버(WN)에 기초하여 픽셀들에 대한 렌더링을 수행할 수 있다(S400).
도 3은 본 개시의 예시적 실시예에 따른 도 2의 와인딩 넘버를 생성하는 단계(S300)에 대한 순서도를 나타낸다.
도 1 및 도 3을 참조하면, 그래픽 처리 장치(100)는 와인딩 넘버 메모리(111)에 프리미티브 마스크에 대응하는 와인딩 넘버(WN)가 저장되어 있는지 확인할 수 있다(S310). 일 예시로서, 그래픽 처리 장치(100)는 와인딩 넘버(WN)를 독출하기 위해 프리미티브 마스크에 대응하는 어드레스를 와인딩 넘버 메모리(111)에 출력할 수 있고, 와인딩 넘버 메모리(111)가 이에 대응하여 와인딩 넘버(WN)를 출력하는 경우 그래픽 처리 장치(100)는 와인딩 넘버(WN)가 저장되어 있는 것으로 판단할 수 있다. 반면에 와인딩 넘버 메모리(111)가 와인딩 넘버(WN)를 출력하지 않거나 저장된 데이터 없음을 출력(예를 들면, ‘NULL’을 출력)하는 경우 그래픽 처리 장치(100)는 와인딩 넘버(WN)가 저장되어 있지 않은 것으로 판단할 수 있다.
와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있는 경우(S320), 그래픽 처리 장치(100)는 와인딩 넘버 메모리(111)로부터 독출함으로서 와인딩 넘버(WN)를 생성할 수 있다(S330).
와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있지 않는 경우(S320), 그래픽 처리 장치(100)는 프리미티브 정보(PI)에 기초하여 계산함으로서 와인딩 넘버(WN)를 생성할 수 있다(S340). 그래픽 처리 장치(100)는 프리미티브 마스크 및 계산된 와인딩 넘버(WN)를 서로 대응되도록 와인딩 넘버 메모리(111)에 저장할 수 있다.
도 4a는 본 개시의 예시적 실시예에 따른 와인딩 넘버 생성기를 나타내는 블록도이다. 자세하게는, 도 4a는 와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있는 경우 와인딩 넘버 생성기(110)의 동작을 나타내는 블록도이다.
도 1 및 도 4a를 참조하면, 와인딩 넘버 생성기(110)는 와인딩 넘버 메모리(111), 프리미티브 정보 메모리(112), 와인딩 넘버 매니저(113) 및 와인딩 넘버 계산기(114)를 포함할 수 있다. 와인딩 넘버 메모리(111)는 도 1에서 상술한 바 그 설명은 생략한다.
프리미티브 정보 메모리(112)는 입력부(110)로부터 수신한 프리미티브 정보(PI)를 저장하는 메모리로서, 예컨대 정적 랜덤 억세스 메모리(SRAM), 동적 랜덤 억세스 메모리(DRAM), 래치(Latch), 플립플롭(Flip-Flop), 레지스터(Register) 등과 같은 휘발성 메모리를 포함할 수도 있고, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램RRAM), 상변화 메모리(PRAM), 자기저항 메모리(MRAM), 강유전체 메모리(FRAM), 스핀주입 자화반전 메모리(STT-RAM) 등과 같은 비휘발성 메모리를 포함할 수도 있다. 이하에서는 프리미티브 정보 메모리(112)가 휘발성의 캐시 메모리(Cache Memory)인 것으로 설명되나, 본 개시의 기술적 사상이 이에 제한되지 않음은 이해되어야 할 것이다.
와인딩 넘버 매니저(113)는 저장된 프리미티브 정보(PI)를 독출하여 이를 기초로 프리미티브 마스크(PM)를 생성할 수 있다. 일 실시예에서 와인딩 넘버 매니저(113)는 프리미티브 정보(PI)를 참조하여, 특정 픽셀의 위치에서 일 방향을 바라볼 때 위치하는 프리미티브에 대응하는 비트를 ‘1’로 설정하고, 위치하지 않는 프리미티브에 대응하는 비트를 ‘0’으로 설정함으로서 프리미티브 마스크(PM)를 생성할 수 있다. 또 다른 실시예에서, 와인딩 넘버 매니저(113)는 프리미티브 정보(PI)를 참조하여, 특정 픽셀의 위치에서 일 방향을 바라볼 때 위치하는 프리미티브에 대응하는 비트를 ‘0’로 설정하고, 위치하지 않는 프리미티브에 대응하는 비트를 ‘1’으로 설정함으로서 프리미티브 마스크(PM)를 생성할 수 있다. 이에 관해서는 도 6에서 후술한다.
와인딩 넘버 매니저(113)는 상술한 방법으로 생성한 프리미티브 마스크(PM)에 대응하는 와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있는지 확인할 수 있다. 일 예시로서, 와인딩 넘버 매니저(113)는 프리미티브 마스크(PM)에 대응하는 어드레스를 와인딩 넘버 메모리(111)에 출력할 수 있고, 와인딩 넘버 메모리(111)는 이에 대응하여 와인딩 넘버(WN)를 와인딩 넘버 매니저(113)에 출력할 수 있다. 와인딩 넘버 매니저(113)는 상술한 방법으로 생성한 와인딩 넘버(WN)를 렌더링 결정기(120)에 출력할 수 있다.
도 4b는 본 개시의 예시적 실시예에 따른 와인딩 넘버 생성기를 나타내는 블록도이다. 자세하게는, 도 4b는 와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있지 않는 경우 와인딩 넘버 생성기(110)의 동작을 나타내는 블록도이다.
도 1 및 도 4b를 참조하면, 와인딩 넘버 생성기(110)는 와인딩 넘버 메모리(111), 프리미티브 정보 메모리(112), 와인딩 넘버 매니저(113) 및 와인딩 넘버 계산기(114)를 포함할 수 있다. 와인딩 넘버 메모리(111), 프리미티브 정보 메모리(112) 및 와인딩 넘버 매니저(113)는 도 4a에서 상술한 바 그 설명은 생략한다.
와인딩 넘버 매니저(113)는 프리미티브 정보(PI)를 기초로 프리미티브 마스크(PM)를 생성할 수 있고, 생성한 프리미티브 마스크(PM)에 대응하는 와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있는지 확인할 수 있다. 와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있지 않는 경우, 와인딩 넘버 매니저(113)는 와인딩 넘버 계산기(114)에 프리미티브 정보(PI)를 출력할 수 있다. 와인딩 넘버 계산기(114)는 상술했던 방법으로 와인딩 넘버(WN)를 계산하고, 이를 와인딩 넘버 매니저(113) 및 렌더링 결정기(120)에 출력할 수 있다. 와인딩 넘버 매니저(113)는 생성한 와인딩 넘버(WN) 및 프리미티브 마스크(PM)를 서로 대응되도록 와인딩 넘버 메모리(111)에 저장할 수 있다.
도 5는 본 개시의 예시적 실시예에 따른 와인딩 넘버를 설명하기 위한 도면이다.
도 5를 참조하면, 프레임에 포함된 제1 내지 제6 픽셀(P1~P6)에 대응하는 와인딩 넘버를 설명하기 위한 일 예시가 도시되어 있다. 제1 내지 제6 픽셀(P1~P6)의 주변을 따라서 제1 내지 제5 프리미티브(V1~V5)가 도시되어 있고, 제1 내지 제5 프리미티브(V1~V5)는 하나의 폐경로를 이룰 수 있다. 도 5에서는 제1 내지 제6 픽셀(P1~P6)의 와인딩 넘버가 제1 내지 제6 픽셀(P1~P6)의 우측에 위치한 프리미티브를 이용하여 계산되는 것으로 도시되어 있으나, 이는 일 실시예일 뿐이고 본 개시의 기술적 사상은 이에 제한되지 않는다. 또한, 이하에서 제1 내지 제6 픽셀(P1~P6)의 우측 프리미티브는 제1 내지 제6 픽셀(P1~P6)에서 우측 수평 방향으로 그어진 가상의 반직선과 만나는 프리미티브를 의미할 수 있다.
제1 픽셀(P1)에서 우측 수평 방향으로 가상의 반직선을 도시하면, 가상의 반직선은 제2 프리미티브(V2)와 만날 수 있다. 상기 가상의 반직선이 제2 프리미티브(V2)와 만나는 교차점에 제2 프리미티브(V2)의 방향은 제1 픽셀(P1)을 기준으로 시계 방향일 수 있다. 따라서 제1 픽셀(P1)에 대응하는 와인딩 넘버는 ‘+1’로 계산될 수 있다. 제2 픽셀(P2)의 경우도 마찬가지로, 제2 픽셀(P2)에서 그려진 가상의 반직선이 제2 프리미티브(V2)와 만나는 교차점에서 제2 프리미티브(V2)의 방향은 제2 픽셀(P2)을 기준으로 시계 방향일 수 있고, 제2 픽셀(P2)에 대응하는 와인딩 넘버 역시 ‘+1’로 계산될 수 있다.
제3 픽셀(P3)에서 우측 수평 방향으로 가상의 선을 도시하면, 가상의 반직선은 제2 프리미티브(V2) 및 제5 프리미티브(V5)와 만날 수 있다. 상기 가상의 반직선이 제2 프리미티브(V2)와 만나는 교차점에 제2 프리미티브(V2)의 방향은 제3 픽셀(P3)을 기준으로 시계 방향이고, 제5 프리미티브(V5)와 만나는 교차점에서 제5 프리미티브(V5)의 방향은 제3 픽셀(P3)을 기준으로 시계 방향일 수 있다. 따라서 제3 픽셀(P3)에 대응하는 와인딩 넘버는 ‘1+1=+2’로 계산될 수 있다. 제4 픽셀(P4)의 경우도 우측 수평 방향으로 진행하는 가상의 반직선이 만나는 프리미티브들과 그 프리미티브들이 교차점에서 진행하는 방향이 제3 픽셀(P3)과 동일하기 때문에, 제4 픽셀(P4)에 대응하는 와인딩 넘버 역시 ‘1+1=+2’로 계산될 수 있다.
제5 픽셀(P5)에서 우측 수평 방향으로 가상의 선을 도시하면, 가상의 반직선은 제2 프리미티브(V2), 제3 프리미티브(V3) 및 제5 프리미티브(V5)와 만날 수 있다. 상기 가상의 반직선이 제2 프리미티브(V2)와 만나는 교차점에 제2 프리미티브(V2)의 방향은 제5 픽셀(P5)을 기준으로 시계 방향이고, 제3 프리미티브(V3)와 만나는 교차점에 제3 프리미티브(V3)의 방향은 제5 픽셀(P5)을 기준으로 반시계 방향이고, 제5 프리미티브(V5)와 만나는 교차점에서 제5 프리미티브(V5)의 방향은 제5 픽셀(P5)을 기준으로 시계 방향일 수 있다. 따라서 제5 픽셀(P5)에 대응하는 와인딩 넘버는 ‘1-1+1=+1’로 계산될 수 있다. 제6 픽셀(P6)의 경우도 우측 수평 방향으로 진행하는 가상의 반직선이 만나는 프리미티브들과 그 프리미티브들이 교차점에서 진행하는 방향이 제5 픽셀(P5)과 동일하기 때문에, 제6 픽셀(P6)에 대응하는 와인딩 넘버 역시 ‘1-1+1=+1’로 계산될 수 있다.
제1 영역(a)에 포함되는 모든 픽셀들은, 상기 픽셀들을 기준으로 우측 수평 방향으로 진행하는 가상의 반직선이 만나는 프리미티브들과 그 프리미티브들이 교차점에서 진행하는 방향이 모두 동일하기 때문에 와인딩 넘버 역시 ‘+1’로 동일할 수 있다. 또한, 제2 영역(b)에 포함되는 모든 픽셀들 역시, 상기 픽셀들을 기준으로 우측 수평 방향으로 진행하는 가상의 반직선이 만나는 프리미티브들과 그 프리미티브들이 교차점에서 진행하는 방향이 모두 동일하기 때문에 와인딩 넘버 역시 ‘+2’로 동일할 수 있고, 제3 영역(c)에 포함되는 모든 픽셀들 역시 마찬가지 이유로 이에 대응하는 와인딩 넘버는 ‘+1’로 동일할 수 있다.
동일한 우측 프리미티브를 갖는 경우 와인딩 넘버는 모두 동일할 수 있다. 이에 따라서, 본 개시의 기술적 사상에 따르면 어느 하나의 픽셀에 대한 와인딩 넘버의 계산 결과가 상기 픽셀과 같은 우측 프리미티브를 갖는 픽셀들에 대해서도 활용될 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 와인딩 넘버 생성기의 동작을 설명하기 위한 표이다.
도 1, 도 5 및 도 6을 참조하면, 제1 픽셀(P1) 및 제2 픽셀(P2)은 우측 프리미티브로서 모두 제2 프리미티브(V2)를 가질 수 있다. 와인딩 넘버 생성기(110)는 제1 픽셀(P1) 및 제2 픽셀(P2)에 대해서 프리미티브 정보(PI)로서 제2 프리미티브(V2)를 각각 수신할 수 있고, 이에 대응하여 프리미티브 마스크(PM)를 생성할 수 있다. 일 예로서, 프리미티브 마스크(PM)의 각 자리는 각 프리미티브에 대응될 수 있고, 제2 프리미티브(V2) 만을 우측 프리미티브로 갖는 제1 픽셀(P1) 및 제2 픽셀(P2)에 대해서 와인딩 넘버 생성기(110)는 오른쪽에서 두번째 자리만을 ‘1’로 설정하고 나머지를 ‘0’으로 설정함으로서 프리미티브 마스크(PM)를 ‘00010’으로 설정할 수 있다.
일 예시에서, 와인딩 넘버 생성기(110)는 제1 픽셀(P1)에 대한 프리미티브 정보(PI)를 수신할 수 있고, 와인딩 넘버 생성기(110)는 제1 픽셀(P1)의 프리미티브 마스크(PM)인 ‘00010’에 대응되는 와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있지 않는 것을 확인할 수 있다. 따라서, 와인딩 넘버 생성기(110)는 제1 픽셀(P1)에 대한 와인딩 넘버(WN)를 ‘+1’로 계산하고, 계산된 와인딩 넘버(WN)와 프리미티브 마스크(PM)가 대응되도록 와인딩 넘버 메모리(111)에 저장(Save)할 수 있다.
그 후, 와인딩 넘버 생성기(110)는 제1 픽셀(P1)과 동일한 우측 프리미티브를 갖는 제2 픽셀(P2)에 대한 프리미티브 정보(PI)를 수신할 수 있다. 제2 픽셀(P2)의 프리미티브 마스크(PM)인 ‘00010’에 대응되는 와인딩 넘버(WN)가 와인딩 넘버 메모리(111)에 저장되어 있으므로, 와인딩 넘버 생성기(110)는 제2 픽셀(P2)에 대해서 와인딩 넘버(WN)를 계산하지 않고 와인딩 넘버 메모리(111)로부터 독출(Read)함으로서 와인딩 넘버(WN)를 생성할 수 있다.
제3 픽셀(P3) 및 제4 픽셀(P4)의 경우에도 마찬가지로, 와인딩 넘버 생성기(110)는 제3 픽셀(P3)에 대한 와인딩 넘버(WN)는 계산을 통해서 생성할 수 있고, 계산한 와인딩 넘버(WN) 및 프리미티브 마스크(PM)를 서로 대응되도록 와인딩 넘버 메모리(111)에 저장할 수 있다. 와인딩 넘버 생성기(110)는 그 후 수신하는 제4 픽셀(P4)에 대해서 와인딩 넘버(WN)를 계산하지 않고 와인딩 넘버 메모리(111)로부터 독출함으로서 와인딩 넘버(WN)를 생성할 수 있다.
제5 픽셀(P5) 및 제6 픽셀(P6)의 경우에도 마찬가지로, 와인딩 넘버 생성기(110)는 제5 픽셀(P5)에 대한 와인딩 넘버(WN)는 계산을 통해서 생성할 수 있고, 계산한 와인딩 넘버(WN) 및 프리미티브 마스크(PM)를 서로 대응되도록 와인딩 넘버 메모리(111)에 저장할 수 있다. 와인딩 넘버 생성기(110)는 그 후 수신하는 제6 픽셀(P6)에 대해서 와인딩 넘버(WN)를 계산하지 않고 와인딩 넘버 메모리(111)로부터 독출함으로서 와인딩 넘버(WN)를 생성할 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 와인딩 넘버 생성기의 동작을 설명하기 위한 표이다.
도 1 및 도 7을 참조하면, 제1 예시(a)에서 와인딩 넘버 생성기(110)는 제1 프리미티브 마스크(PM1)로서 ‘00010’을 생성할 수 있다. 와인딩 넘버 생성기(110)는 와인딩 넘버 메모리(111)에 ‘00010’에 대응되는 와인딩 넘버(WN)가 저장되어 있는지 확인할 수 있다. 와인딩 넘버 메모리(111)에 ‘00010’에 대응되는 제1 와인딩 넘버(WN1)가 ‘+1’로 저장되어 있으므로, 와인딩 넘버 생성기(110)는 별도의 계산없이 와인딩 넘버 메모리(111)로부터 독출함으로서 제1 와인딩 넘버(WN1)를 생성할 수 있다.
제2 예시(b)에서 와인딩 넘버 생성기(110)는 제2 프리미티브 마스크(PM2)로서 ‘10000’을 생성할 수 있다. 와인딩 넘버 생성기(110)는 와인딩 넘버 메모리(111)에 ‘10000’에 대응되는 와인딩 넘버(WN)가 저장되어 있는지 확인할 수 있다. 와인딩 넘버 메모리(111)에 ‘10000’에 대응되는 와인딩 넘버(WN)가 저장되어 있지 않으므로, 와인딩 넘버 생성기(110)는 프리미티브 정보(PI)를 이용하여 제2 와인딩 넘버(WN2)를 ‘+1’로 계산할 수 있다. 또한, 와인딩 넘버 생성기(110)는 계산된 제2 와인딩 넘버(WN2)를 대응되는 제2 프리미티브 마스크(PM2)인 ‘10000’에 대응되도록 와인딩 넘버 메모리(111)에 저장할 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 와인딩 넘버 생성기가 서로 다른 측면을 선택하여 픽셀의 와인딩 넘버를 계산하는 예를 설명하기 위한 도면이다.
도 1 및 도 8을 참조하면, 도 8의 (a) 내지 (d)에는 정점 1 내지 정점 5로 구성된 객체가 도시되어 있다. 도 8의 (a) 내지 (d)에 도시된 객체는 별 형상을 한 폐다각형(closed polygon)으로서 모두 동일하다. 도 8의 (a)를 참조하면, 와인딩 넘버 생성기(110)는 픽셀 P의 위치를 중심으로 우측에 경로가 위치하는지 여부를 확인할 수 있다. 구체적으로, 와인딩 넘버 생성기(110)는 픽셀 P의 우측(예를 들어, 픽셀 P의 우측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 2로부터 정점 3까지의 경로와 정점 5으로부터 정점 1까지의 경로가 존재함을 확인할 수 있다. 정점 2로부터 정점 3까지의 경로의 진행 방향과 정점 5으로부터 정점 1까지의 경로의 진행 방향은 모두 시계 방향이므로, 와인딩 넘버 생성기(110)는 픽셀 P의 와인딩 넘버를 +2로 계산할 수 있다.
도 8의 (b)를 참조하면, 와인딩 넘버 생성기(110)는 픽셀 P의 위치를 중심으로 좌측에 경로가 위치하는지 여부를 확인할 수 있다. 구체적으로, 와인딩 넘버 생성기(110)는 픽셀 P의 좌측(예를 들어, 픽셀 P의 좌측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 1로부터 정점 2까지의 경로와 정점 3으로부터 정점 4까지의 경로가 존재함을 확인할 수 있다. 정점 1로부터 정점 2까지의 경로의 진행 방향과 정점 3으로부터 정점 4까지의 경로의 진행 방향은 모두 시계 방향이므로, 와인딩 넘버 생성기(110)는 픽셀 P의 와인딩 넘버를 +2로 계산할 수 있다.
도 8의 (c)를 참조하면, 와인딩 넘버 생성기(110)는 픽셀 P의 위치를 중심으로 상측에 경로가 위치하는지 여부를 확인할 수 있다. 구체적으로, 와인딩 넘버 생성기(110)는 픽셀 P의 상측(예를 들어, 픽셀 P의 상측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 2로부터 정점 3까지의 경로와 정점 4로부터 정점 5까지의 경로가 존재함을 확인할 수 있다. 정점 2로부터 정점 3까지의 경로의 진행 방향과 정점 4로부터 정점 5까지의 경로의 진행 방향은 모두 시계 방향이므로, 와인딩 넘버 생성기(110)는 픽셀 P의 와인딩 넘버를 +2로 계산할 수 있다.
도 8의 (d)를 참조하면, 와인딩 넘버 생성기(110)는 픽셀 P의 위치를 중심으로 하측에 경로가 위치하는지 여부를 확인할 수 있다. 구체적으로, 와인딩 넘버 생성기(110)는 픽셀 P의 하측(예를 들어, 픽셀 P의 하측 수평 방향으로 그은 가상의 반직선상의 위치)에는 정점 5로부터 정점 1까지의 경로와 정점 3으로부터 정점 4까지의 경로가 존재함을 확인할 수 있다. 정점 5로부터 정점 1까지의 경로의 진행 방향과 정점 3으로부터 정점 4까지의 경로의 진행 방향은 모두 시계 방향이므로, 와인딩 넘버 생성기(110)는 픽셀 P의 와인딩 넘버를 +2로 계산할 수 있다.
상술한 바와 같이, 와인딩 넘버 생성기(110)가 픽셀 P의 위치를 중심으로 어느 측면을 선택하여 와인딩 넘버를 계산하더라도, 그 결과는 모두 동일할 수 있다. 또한, 도 8의 (a) 내지 (d)에 도시된 바와 같이, 경로에 의하여 구분된 영역들 중에서 동일한 영역 내에 존재하는 픽셀들의 와인딩 넘버는 모두 동일할 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 도 2의 렌더링 수행 단계(S400)를 나타내는 순서도이다. 자세하게는 도 9는 렌더링 결정기의 동작 방법을 나타내는 순서도이다.
도 1 및 도 9를 참조하면, 렌더링 결정기(120)는 픽셀에 대한 와인딩 넘버(WN) 및 컬러 할당 규칙(FR)을 수신할 수 있다(S410). 렌더링 결정기(120)는 컬러 할당 규칙(FR)이 논-제로 규칙(Non-Zero)인지 확인할 수 있다(S420). 컬러 할당 규칙(FR)이 논-제로 규칙인 경우, 상기 픽셀의 와인딩 넘버(WN)가 ‘0’이 아닌지 확인할 수 있다(S430). 상기 픽셀의 와인딩 넘버(WN)가 ‘0’이 아닌 경우, 렌더링 결정기(120)는 상기 픽셀에 대해서 결정된 컬러로 렌더링을 수행할 수 있다(S460). 일 예시에서, 렌더링 결정기(120)는 외부(예를 들면, CPU)로부터 결정된 컬러에 대한 정보를 더 수신할 수 있고, 렌더링 결정기(120)는 상기 결정된 컬러로 렌더링을 수행할 수 있다. 상기 픽셀의 와인딩 넘버(WN)가 ‘0’인 경우, 렌더링 결정기(120)는 상기 픽셀에 대해서 렌더링을 수행하지 않을 수 있다.
컬러 할당 규칙(FR)이 논-제로 규칙이 아닌 경우, 렌더링 결정기(120)는 컬러 할당 규칙(FR)이 이븐-오드 규칙(Even-Odd)인지 확인할 수 있다(S440). 컬러 할당 규칙(FR)이 이븐-오드 규칙인 경우, 상기 픽셀의 와인딩 넘버(WN)가 홀수인지 여부를 확인할 수 있다(S450). 일 예시에서, 렌더링 결정기(120)는 와인딩 넘버(WN)를 2로 나눈 나머지가 1인지 확인함으로서 홀수인지 여부를 확인할 수 있다. 상기 픽셀의 와인딩 넘버(WN)가 홀수인 경우, 렌더링 결정기(120)는 상기 픽셀에 대해서 결정된 컬러로 렌더링을 수행할 수 있다(S460). 일 예시에서, 렌더링 결정기(120)는 외부(예를 들면, CPU)로부터 결정된 컬러에 대한 정보를 더 수신할 수 있고, 렌더링 결정기(120)는 상기 결정된 컬러로 렌더링을 수행할 수 있다. 상기 픽셀의 와인딩 넘버(WN)가 홀수가 아닌 경우, 즉, 상기 픽셀의 와인딩 넘버(WN)가 짝수인 경우, 렌더링 결정기(120)는 상기 픽셀에 대해서 렌더링을 수행하지 않을 수 있다.
컬러 할당 규칙(FR)이 이븐-오드 규칙이 아니거나(S440), 컬러 할당 규칙(FR)이 논-제로 규칙이고 와인딩 넘버(WN)가 ‘0’이거나(S430), 컬러 할당 규칙(FR)이 이븐-제로 규칙이고 와인딩 넘버(WN)가 홀수가 아닌 경우(S450), 렌더링 결정기(120)는 와인딩 넘버 생성기(110)로부터 수신한 픽셀에 대해서 모두 렌더링을 수행했는지 여부를 확인할 수 있다(S470). 수신한 픽셀에 대해서 모두 렌더링을 수행하지 않은 경우, 렌더링 결정기(120)는 S410~S460 단계를 반복함으로서 렌더링을 수행할 수 있다. 수신한 픽셀에 대해서 모두 렌더링을 수행한 경우, 렌더링 결정기(120)는 렌더링을 종료할 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 렌더링 결정기가 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 일 예시를 설명하기 위한 도면이다.
도 1 및 도 10을 참조하면, 도 10의 (a)는 와인딩 넘버 생성기(110)가 프레임(610)에 포함된 픽셀들 각각에 대하여 와인딩 넘버(WN)를 계산한 결과를 도시한 도면이고, 도 10의 (b)는 논-제로 규칙에 따라 픽셀들 각각에 컬러 값이 할당된 결과를 도시한 도면일 수 있다. 또한, 도 10의 (c)는 이븐-오드 규칙에 따라 픽셀들 각각에 컬러 값이 할당된 결과를 도시한 도면일 수 있다.
도 10의 (a)를 참조하면, 프레임(610)에 포함된 픽셀들 각각에 대해서 와인딩 넘버(WN)가 도시된 바와 같이 계산될 수 있다. 구체적으로, 제1 영역(611)에 포함된 픽셀들은 각각 와인딩 넘버(WN)가 0으로 계산될 수 있고, 제2 영역(612)에 포함된 픽셀들은 각각 와인딩 넘버(WN)가 +1로 계산될 수 있고, 제3 영역(613)에 포함된 픽셀들은 각각 와인딩 넘버(WN)가 +2로 계산될 수 있다.
일 예로서, 렌더링 결정기(120)는 논-제로 규칙에 기초하여 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 여기에서, 논-제로 규칙은 와인딩 넘버(WN)가 0이 아닌 값을 갖는 픽셀들에 컬러 값을 할당하는 것을 의미할 수 있다. 도 10의 (b)를 참조하면, 논-제로 규칙에 따를 경우, 렌더링 결정기(120)는 도 10의 (a)에 도시된 제2 영역(612) 및 제3 영역(613)에 포함된 픽셀들에는 컬러를 설정하고, 제1 영역(611)에 포함된 픽셀들에는 컬러를 설정하지 않는 것으로 결정할 수 있다.
다른 예로서, 렌더링 결정기(120)는 이븐-오드 규칙에 기초하여 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 여기에서, 이븐-오드 규칙은 와인딩 넘버(WN)가 홀수인 값을 갖는 픽셀들에 컬러 값을 할당하는 것을 의미할 수 있다. 여기에서, 홀수는 픽셀의 와인딩 넘버(WN)의 절대값이 홀수인 경우를 의미할 수 있다. 예를 들어, 와인딩 넘버(WN)가 +3인 경우도 홀수로 판단되고, 와인딩 넘버(WN)가 -3인 경우도 홀수로 판단될 수 있다. 도 10의 (c)를 참조하면, 이븐-오드 규칙에 따를 경우, 렌더링 결정기(120)는 도 10의 (a)에 도시된 제2 영역(612)에 포함된 픽셀들에는 컬러를 설정하고, 제1 영역(611) 및 제3 영역(613)에 포함된 픽셀들에는 컬러를 설정하지 않는 것으로 결정할 수 있다.
일 실시예에서, 렌더링 결정기(120)는 외부(예를 들면, CPU)로부터 결정된 컬러에 대한 정보를 더 수신할 수 있고, 렌더링 결정기(120)는 상기 결정된 컬러 값을 할당할 수 있다. 또 다른 실시예에서, 렌더링 결정기(120)는 컬러를 설정하기로 결정한 픽셀들에 대한 정보를 픽셀 쉐이더로 전송하고, 픽셀 쉐이더는 렌더링 결정기(120)가 컬러를 설정하기로 결정한 픽셀들에 미리 결정된 컬러 값을 할당할 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 그래픽 처리 장치를 나타내는 블록도이다. 도 1과 중복되는 내용에 대한 설명은 생략한다.
도 11을 참조하면, 그래픽 처리 장치(100a)는 와인딩 넘버 생성기(110a) 및 렌더링 결정기(120a)를 포함할 수 있고, 와인딩 넘버 생성기(110a)는 와인딩 넘버 메모리(111a) 및 바운딩 박스 매니저(112a)를 포함할 수 있다. 와인딩 넘버 메모리(111a) 및 렌더링 결정기(120a)는 도 1의 와인딩 넘버 메모리(111) 및 렌더링 결정기(120)와 서로 동일하거나 유사할 수 있는바 그 설명은 생략한다.
바운딩 박스 매니저(112a)는 정점들 각각의 좌표 성분을 이용하여 프레임에 바운딩 박스(bounding box)를 설정할 수 있다. 예를 들어, 바운딩 박스 매니저(112a)는 정점들의 좌표 성분들 중 수평 방향 좌표 성분의 최대값 및 최소값, 좌표 성분들 중 수직 방향 좌표 성분의 최대값 및 최소값을 이용하여 프레임에 바운딩 박스를 설정할 수 있다. 그리고, 와인딩 넘버 생성기(110a)는 바운딩 박스 매니저(112a)에 의하여 설정된 바운딩 박스에 포함된 픽셀들 각각에 대하여 와인딩 넘버(WN)를 계산할 수 있다.
도 11에서는 바운딩 박스 매니저(112a)가 그래픽 처리 장치(100a)의 일 구성으로 도시되어 있으나, 또 다른 실시예에서 바운딩 박스 매니저(112a)는 그래픽 처리 장치(100a)의 외부(예를 들면, CPU)에 위치할 수 있다. 이 실시예에서 그래픽 처리 장치(100a)는 바운딩 박스 내에 위치하는 픽셀에 관한 정보 만을 수신하고, 이를 기초로 렌더링을 수행할 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 바운딩 박스 매니저의 동작의 일 예시를 나타내는 도면이다. 자세하게는 바운딩 박스 매니저(112a)가 바운딩 박스를 설정하는 일 예시를 나타내는 도면이다.
도 11 및 도 12를 참조하면, 도 12의 (a)에는 프레임(810) 내에 포함된 별 형상의 객체(840)가 도시되어 있다. 와인딩 넘버 생성기(110a)는 프레임(810)에 포함된 픽셀들 각각에 대하여 와인딩 넘버(WN)를 연산할 수 있다. 따라서, 프레임(810) 전체 영역 중에서 객체(840)가 차지하는 영역이 작은 경우, 와인딩 넘버 생성기(110a)가 프레임(810)에 포함된 모든 픽셀들에 대하여 와인딩 넘버(WN)를 연산하지 않더라도 경로 렌더링을 수행할 수 있다. 다시 말해, 와인딩 넘버 생성기(110a)는 객체(840)로부터 멀리 떨어진 위치의 픽셀들(811)에 대해서는 와인딩 넘버(WN)를 연산하지 않고, 객체(840)와 인접한 위치의 픽셀들(812)에 대해서만 와인딩 넘버(WN)를 연산하더라도 동일한 결과가 산출될 수 있다.
도 12의 (b)를 참조하면, 바운딩 박스 매니저(112a)는 프레임(810)에 바운딩 박스(830)를 설정할 수 있다. 그리고, 와인딩 넘버 생성기(110a)는 바운딩 박스(830) 내에 위치하는 픽셀들(831)에 대해서만 와인딩 넘버를 연산할 수 있다. 이때, 바운딩 박스 매니저(112a)는 객체(850)에 포함된 정점 1의 좌표 (x1, y1), 정점 2의 좌표 (x2, y2), 정점 3의 좌표 (x3, y3), 정점 4의 좌표 (x4, y4), 정점 5의 좌표 (x5, y5)를 이용하여 바운딩 박스(830)를 설정할 수 있다.
예를 들어, 바운딩 박스 매니저(112a)는 정점 1의 좌표 (x1, y1), 정점 2의 좌표 (x2, y2), 정점 3의 좌표 (x3, y3), 정점 4의 좌표 (x4, y4), 정점 5의 좌표 (x5, y5) 중 수평 방향 좌표 성분의 최대값 및 최소값, 수직 방향 좌표 성분의 최대값 및 최소값을 이용하여 프레임에 바운딩 박스를 설정할 수 있다. 먼저, 바운딩 박스 매니저(112a)는 정점들의 x 좌표 성분들(x1, x2, x3, x4, x5) 중에서 최대값(x5)과 최소값(x4)을 선택할 수 있다. 또한, 바운딩 박스 매니저(112a)는 정점들의 y 좌표 성분들(y1, y2, y3, y4, y5) 중에서 최대값(y2)과 최소값(y1 또는 y3)을 선택할 수 있다. 바운딩 박스 매니저(112a)는 x 좌표 성분의 최대값과 y 좌표 성분의 최대값으로 제1 좌표(x5, y2)를 설정할 수 있다. 또한, 바운딩 박스 매니저(112a)는 x 좌표 성분의 최소값과 y 좌표 성분의 최소값으로 제2 좌표(x4, y1)를 설정할 수 있다. 바운딩 박스 매니저(112a)는 제1 좌표(x5, y2)와 제2 좌표(x4, y1)를 잇는 선을 대각선으로 하는 사각형을 바운딩 박스(830)로 설정할 수 있다.
상술한 바에 따르면, 바운딩 박스 매니저(112a)가 경로 렌더링이 수행되기 위한 최소의 픽셀들을 포함하는 바운딩 박스를 설정함으로써, 와인딩 넘버 생성기(110a)는 최소 개수의 픽셀들에 대해서만 와인딩 넘버를 연산할 수 있다. 따라서, 그래픽 처리 장치(100a)는 경로 렌더링을 보다 빠르게 수행할 수 있다.
도 13는 본 개시의 예시적 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 순서도이다.
도 1 및 도 13를 참조하면, 그래픽 처리 장치(100)는 객체에 존재하는 모든 프리미티브에 관한 정보인 프리미티브 세트 정보를 수신할 수 있다(S510). 그래픽 처리 장치(100)는 프리미티브 세트를 기초로 생성할 수 있는 모든 프리미티브 마스크의 집합인 프리미티브 마스크 세트를 생성할 수 있다(S520). 그래픽 처리 장치(100)는 프리미티브 마스크 세트에 포함되는 모든 프리미티브 마스크(PM)에 대한 와인딩 넘버(WN)를 계산할 수 있다(S530). 그래픽 처리 장치(100)는 프리미티브 마스크 세트 및 이에 대응하는 와인딩 넘버(WN)를 와인딩 넘버 메모리(111)에 저장할 수 있다(S540).
도 1의 실시예와 상이하게 본 실시예에서는 개별적인 픽셀이 아니라 모든 가능한 프리미티브 마스크(PM)에 대응하는 와인딩 넘버(WN)를 계산하고 이를 와인딩 넘버 메모리(111)에 저장하여 활용함으로서, 그래픽 처리 장치(100)는 후에 수신한 픽셀에 대응하는 프리미티브 마스크(PM)가 와인딩 넘버 메모리(111)에 저장되어 있는지 확인할 필요없이 바로 독출할 수 있다.
도 14는 본 개시의 예시적 실시예에 따른 그래픽 처리 장치의 동작 방법을 나타내는 도면이다. 자세하게는 도 14는 도 13의 실시예에 따른 그래픽 처리 장치의 동작 방법의 일 예시를 나타낸다.
도 1 및 도 14를 참조하면, 그래픽 처리 장치(100)는 도 14의 (a)와 같은 프리미티브에 대한 렌더링을 수행하기 위해 프리미티브 세트 정보(PSI)로서 {V1, V2, V3}를 수신할 수 있다. 이에 대응하여 그래픽 처리 장치(100)는 가능한 프리미티브 마스크(PM)를 모두 생성함으로서 프리미티브 마스크 세트를 생성할 수 있다. 도 14의 예시에서 프리미티브의 개수는 3개이므로 프리미티브 마스크(PM)의 개수는 2*2*2=8개가 될 수 있다. 이에 따라서, 도 14의 (b)와 같이 ‘001’부터 ‘111’까지 8개의 프리미티브 마스크(PM)가 생성될 수 있다.
그래픽 처리 장치(100)는 프리미티브 마스크 세트에 포함되는 모든 프리미티브 마스크(PM)에 대해 와인딩 넘버(WN)를 계산할 수 있다. ①의 예시에서, 프리미티브 마스크(PM)가 ‘010’인 경우는 우측 프리미티브로서 제2 프리미티브(V2) 만이 존재하는 경우를 의미할 수 있다. 가상의 반직선과 제2 프리미티브(V2)만이 만나는 경우는 ①의 예시와 같이 가상의 반직선과 제2 프리미티브(V2)의 교차점에서 제2 프리미티브(V2)가 원점을 기준으로 시계방향으로 진행하므로, 와인딩 넘버(WN)로서 ‘+1’이 계산될 수 있다.
②의 예시에서, 프리미티브 마스크(PM)가 ‘110’인 경우는 우측 프리미티브로서 제2 프리미티브(V2) 및 제3 프리미티브(V3)가 동시에 존재하는 경우를 의미할 수 있다. 다만, 오른쪽으로 향하는 가상의 반직선과 제2 프리미티브(V2) 및 제3 프리미티브(V3)가 동시에 만나는 경우는 없으므로, 와인딩 넘버(WN)는 저장되지 않거나 ‘NULL’이 저장될 수 있다.
상술한 방식으로 모든 프리미티브 마스크(PM)에 대응한 와인딩 넘버(WN)가 생성될 수 있고, 모든 프리미티브 마스크(PM)를 포함하는 프리미티브 마스크 세트 및 이에 대응하는 와인딩 넘버(WN)가 서로 대응되도록 와인딩 넘버 메모리(111)에 저장될 수 있다. 일 실시예에서, 도 14의 (b)에서 ‘X’로 저장되는 부분과 같이 계산될 수 없는 와인딩 넘버(WN)는 와인딩 넘버 메모리(111)에 저장되지 않을 수 있다.
도 15은 본 개시의 예시적 실시예에 따른 그래픽 처리 장치의 동작 방법을나타내는 순서도이다. 자세하게는 도 15은 도 13의 실시예에 따라 프리미티브 마스크 세트 및 이에 대응하는 와인딩 넘버가 저장된 후에 픽셀에 대한 프리미티브 정보를 수신하는 경우 그래픽 처리 장치의 동작 방법을 나타내는 순서도이다.
도 1 및 도 15을 참조하면, 그래픽 처리 장치(100)는 픽셀에 대한 프리미티브 정보(PI)를 수신할 수 있다(S610). 그래픽 처리 장치(100)는 프리미티브 정보(PI)를 기초로 프리미티브 마스크를 생성할 수 있다(S620). 그래픽 처리 장치(100)는 와인딩 넘버 메모리(111)로부터 생성한 프리미티브 마스크에 대응하는 와인딩 넘버(WN)를 독출할 수 있다(S630). 그래픽 처리 장치(100)는 독출한 와인딩 넘버(WN)를 기초로 렌더링을 수행할 수 있다(S640).
도 13에서 상술한 바와 같이 도 1의 실시예와 상이하게, 모든 프리미티브 마스크 및 이에 대응한 와인딩 넘버(WN)가 모두 와인딩 넘버 메모리(111)에 저장되어 있을 수 있다. 이에 따라서, 그래픽 처리 장치(100)는 와인딩 넘버 메모리(111)에 수신한 프리미티브 정보(PI)에 대응하는 프리미티브 마스크가 저장되어 있는지 확인할 필요 없이 바로 상기 프리미티브 마스크에 대응하는 와인딩 넘버(WN)를 독출할 수 있다.
도 16은 본 개시의 예시적 실시예에 따른 그래픽 처리 시스템을 나타내는 도면이다.
도 16을 참조하면, 그래픽 처리 시스템(10b)은 중앙 처리 장치(200b) 및 그래픽 처리 장치(100b)를 포함하고, 중앙 처리 장치(200b)는 와인딩 넘버 생성기(210b)를 포함하고, 그래픽 처리 장치(100b)는 렌더링 결정기(120b)를 포함할 수 있다. 또한 와인딩 넘버 생성기(210b)는 와인딩 넘버 메모리(211b), 프리미티브 정보 메모리(212b), 와인딩 넘버 매니저(213b) 및 와인딩 넘버 계산기(214b)를 포함할 수 있다.
도 16의 실시예에서는 도 1과 상이하게 와인딩 넘버 생성기(210b)가 그래픽 처리 장치(100b)가 아닌 중앙 처리 장치(200b)에 포함되는 실시예를 나타낸다. 따라서, 각 기능 블록이 수행하는 동작은 도 1의 실시예와 동일하거나 유사할 수 있다.
와인딩 넘버 생성기(210b)는 중앙 처리 장치(200b)에 포함되어 객체 정보를 기초로 와인딩 넘버(WN) 및 컬러 할당 규칙(FR)을 생성하고, 렌더링 결정기(120b)에 출력할 수 있다. 즉, 상술한 바와 같이 와인딩 넘버 매니저(213b)는 프리미티브 정보 메모리(212b)로부터 프리미티브 정보를 수신하고, 이를 기초로 프리미티브 마스크를 생성할 수 있다. 와인딩 넘버 매니저(213b)는 중앙 처리 장치(200b)에 포함되는 와인딩 넘버 메모리(211b)에 프리미티브 마스크에 대응하는 와인딩 넘버(WN)가 저장되어 있는지 확인할 수 있다. 또한, 와인딩 넘버 매니저(213b)는 확인 결과에 기초하여 서로 다른 방법으로 와인딩 넘버(WN)를 생성하여 렌더링 결정기(120b)에 출력할 수 있다. 렌더링 결정기(120b)는 수신한 와인딩 넘버(WN)를 기초로 렌더링을 수행할 수 있다.
도 16의 실시예와 상이하게, 본 개시의 기술적 사상은 와인딩 넘버 생성기(210b)에 포함되는 와인딩 넘버 메모리(211b), 프리미티브 정보 메모리(212b), 와인딩 넘버 매니저(213b) 및 와인딩 넘버 계산기(214b) 중 적어도 하나가 그래픽 처리 장치(100b)에 위치하는 실시예에도 적용될 수 있다.
일 실시예로서, 프리미티브 정보 메모리(212b)는 중앙 처리 장치(200b)에 위치하고, 와인딩 넘버 메모리(211b), 와인딩 넘버 매니저(213b) 및 와인딩 넘버 계산기(214b)는 그래픽 처리 장치(100b)에 위치할 수 있다. 본 실시예에서, 와인딩 넘버 매니저(213b)는 중앙 처리 장치(200b)로부터 프리미티브 정보를 수신하고 이를 기초로 렌더링을 수행할 수 있다.
일 실시예로서, 와인딩 넘버 매니저(213b)는 중앙 처리 장치(200b)에 위치하고, 와인딩 넘버 메모리(211b), 프리미티브 정보 메모리(212b) 및 와인딩 넘버 계산기(214b)는 그래픽 처리 장치(100b)에 위치할 수 있다. 또 다른 실시예에서, 프리미티브 정보 메모리(212b) 및 와인딩 매니저(213b)는 중앙 처리 장치(200b)에 위치하고, 와인딩 넘버 메모리(211b) 및 와인딩 넘버 계산기(214b)는 그래픽 처리 장치(100b)에 위치할 수 있다. 본 실시예에서, 중앙 처리 장치(200b)는 프리미티브 마스크를 직접 생성하고, 그래픽 처리 장치(100b)에 포함된 와인딩 넘버 메모리(211b)에 상기 생성한 프리미티브 마스크에 대응하는 와인딩 넘버(WN)가 저장되어 있는지 확인할 수 있다. 저장되어 있는지 여부에 따라서, 중앙 처리 장치(200b)는 와인딩 넘버 메모리(211b)에 독출 명령을 출력하거나 와인딩 넘버 계산기(214b)에 계산 명령을 출력함으로서 렌더링을 수행할 수 있다.
일 실시예로서, 프리미티브 정보 메모리(212b), 와인딩 넘버 매니저(213b) 및 와인딩 넘버 계산기(214b)는 중앙 처리 장치(200b)에 위치하고, 와인딩 넘버 메모리(211b)는 그래픽 처리 장치(100b)에 위치할 수 있다. 본 실시예에서, 중앙 처리 장치(200b)는 프리미티브 정보를 기초로 프리미티브 마스크를 생성하고, 그래픽 처리 장치(100b)에 포함된 와인딩 넘버 메모리(211b)에 상기 프리미티브 마스크에 대응하는 와인딩 넘버(WN)가 저장되어 있는지 확인할 수 있다. 저장되어 있는 경우 중앙 처리 장치(200b)는 와인딩 넘버 메모리(211b)에 독출 명령을 출력함으로서 렌더링을 수행할 수 있고, 저장되어 있지 않은 경우 중앙 처리 장치(200b)는 직접 와인딩 넘버(WN)를 계산하고 렌더링 결정기(120b)에 출력함으로서 렌더링을 수행할 수 있다.
일 실시예로서, 프리미티브 정보 메모리(212b) 및 와인딩 넘버 메모리(211b)중 적어도 하나는 중앙 처리 장치(200b) 및 그래픽 처리 장치(100b)의 외부에 위치하는 외부 메모리로 존재할 수 있다. 본 실시예에서, 그래픽 처리 장치(100b)는 프리미티브 정보를 기초로 생성한 프리미티브 마스크가 외부에 존재하는 와인딩 넘버 메모리(211b)에 저장되어 있는지 확인할 수 있다. 저장되어 있는 경우 그래픽 처리 장치(100b)는 와인딩 넘버 메모리(211b)에 독출 명령을 출력함으로서 렌더링을 수행할 수 있고, 저장되어 있지 않은 경우 그래픽 처리 장치(100b)는 직접 와인딩 넘버(WN)를 계산하고 렌더링 결정기(120b)에 출력함으로서 렌더링을 수행할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 객체에 대한 렌더링을 수행하는 그래픽 처리 방법에 있어서,
    상기 객체에 대한 프리미티브 정보를 포함하는 객체 정보를 수신하는 단계;
    픽셀들 각각에 대한 상기 프리미티브 정보에 대응하고 복수의 비트로 구성되는 프리미티브 마스크를 생성하는 단계;
    상기 프리미티브 마스크에 기초하여 픽셀들 각각에 대한 와인딩 넘버(Winding Number)를 생성하는 단계; 및
    생성된 상기 와인딩 넘버에 기초하여 상기 픽셀들에 대한 렌더링을 수행하는 단계;를 포함하되,
    상기 생성하는 단계는,
    제1 메모리에 상기 프리미티브 마스크에 대응하는 와인딩 넘버가 저장되어 있는지 확인하고, 상기 제1 메모리에 상기 와인딩 넘버가 저장되어 있는지 여부에 따라서 서로 다른 방법으로 상기 와인딩 넘버를 생성하는 단계를 포함하는 그래픽 처리 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 생성하는 단계는,
    상기 제1 메모리에 상기 프리미티브 마스크에 대응하는 와인딩 넘버가 저장되어 있는 경우, 저장된 와인딩 넘버를 독출하는 단계;를 더 포함하는 그래픽 처리 방법.
  4. 제1항에 있어서,
    상기 생성하는 단계는,
    상기 제1 메모리에 상기 프리미티브 마스크에 대응하는 와인딩 넘버가 저장되어 있지 않은 경우, 상기 프리미티브 정보에 기초하여 상기 프리미티브 마스크에 대응하는 와인딩 넘버를 계산하는 단계;를 더 포함하는 그래픽 처리 방법.
  5. 제4항에 있어서,
    상기 계산하는 단계에서 계산된 와인딩 넘버를 상기 프리미티브 마스크에 대응되도록 상기 제1 메모리에 저장하는 단계;를 더 포함하는 그래픽 처리 방법.
  6. 제4항에 있어서,
    상기 계산하는 단계는 상기 픽셀들 각각의 일 측면에 위치하는 적어도 하나 이상의 진행 방향을 이용하여 상기 와인딩 넘버를 계산하는 것을 특징으로 하는 그래픽 처리 방법.
  7. 제1항에 있어서,
    상기 프리미티브 마스크를 생성하는 단계는,
    상기 픽셀들 각각의 일 측면에 위치하는 적어도 하나의 진행 방향에 존재하는 프리미티브의 정보를 이용하여 존재하는 프리미티브에 대응되는 비트를 ‘1’로 설정하고, 존재하지 않는 프리미티브에 대응되는 비트를 ‘0’으로 설정함으로서, 상기 프리미티브 마스크를 생성하는 것을 특징으로 하는 그래픽 처리 방법.
  8. 제1항에 있어서,
    상기 수신하는 단계는 상기 객체에 존재하는 모든 프리미티브에 관한 정보인 프리미티브 세트 정보를 수신하는 단계;를 포함하고,
    상기 프리미티브 세트 정보를 기초로 생성할 수 있는 모든 프리미티브 마스크의 집합인 프리미티브 마스크 세트를 생성하는 단계;
    상기 프리미티브 마스크 세트에 포함되는 모든 프리미티브 마스크에 대한 와인딩 넘버를 계산하는 단계; 및
    계산한 상기 와인딩 넘버를 상기 프리미티브 마스크 세트에 대응되도록 캐쉬 메모리에 저장하는 단계;를 더 포함하는 그래픽 처리 방법.
  9. 제1항에 있어서,
    상기 객체 정보는 상기 와인딩 넘버에 따라서 컬러를 할당하는 규칙에 대한정보를 포함하는 컬러 할당 규칙을 더 포함하고,
    상기 렌더링을 수행하는 단계는,
    생성하는 단계에서 생성된 상기 와인딩 넘버 및 상기 컬러 할당 규칙에 기초하여 렌더링을 수행하는 것을 특징으로 하는 그래픽 처리 방법.
  10. 제9항에 있어서,
    상기 컬러 할당 규칙은 이븐-오드 룰을 포함하고,
    상기 렌더링을 수행하는 단계는 상기 픽셀들 각각에 대해서 상기 컬러 할당 규칙이 이븐-오드 룰인 경우, 상기 와인딩 넘버가 홀수인 경우 컬러를 설정하고, 짝수인 경우 컬러를 설정하지 않는 것을 특징으로 하는 그래픽 처리 방법.
  11. 제9항에 있어서,
    상기 컬러 할당 규칙은 논-제로 룰을 포함하고,
    상기 렌더링을 수행하는 단계는 상기 픽셀들 각각에 대해서 상기 컬러 할당 규칙이 논-제로 룰인 경우, 상기 와인딩 넘버가 0이 아닌 경우 컬러를 설정하고, 0인 경우 컬러를 설정하지 않는 것을 특징으로 하는 그래픽 처리 방법.
  12. 제1항에 있어서,
    제2 메모리에 상기 프리미티브 정보를 저장하는 단계; 및
    상기 제2 메모리로부터 상기 프리미티브 정보를 독출하는 단계;를 더 포함하는 그래픽 처리 방법.
  13. 프리미티브 정보를 포함하는 객체 정보를 수신하고, 상기 프리미티브 정보에 대응하는 와인딩 넘버를 저장하는 제1 메모리를 포함하는 와인딩 넘버 생성기; 및
    상기 와인딩 넘버에 기초하여 렌더링을 수행하는 렌더링 결정기;를 포함하고,
    상기 와인딩 넘버 생성기는,
    상기 제1 메모리에 상기 프리미티브 마스크와 대응하는 상기 와인딩 넘버가 저장되어 있는지 확인하는 와인딩 넘버 매니저;
    상기 프리미티브 정보를 기초로 상기 와인딩 넘버를 계산하는 와인딩 넘버 계산기;를 포함하고,
    상기 제1 메모리에 상기 와인딩 넘버가 저장되어 있는지 여부에 기초하여 서로 다른 방법으로 복수의 픽셀들 각각에 대한 상기 와인딩 넘버를 생성하는 것을 특징으로 하는 그래픽 처리 장치.
  14. 제13항에 있어서,
    상기 제1 메모리는 상기 프리미티브 정보에 대응하고 복수의 비트로 구성되는 프리미티브 마스크 및 상기 프리미티브 마스크와 대응하는 와인딩 넘버를 저장하는, 그래픽 처리 장치.
  15. 제13항에 있어서,
    상기 와인딩 넘버 매니저는,
    상기 프리미티브 정보를 기초로 복수의 비트로 구성되는 프리미티브 마스크를 생성하는 것을 특징으로 하는 그래픽 처리 장치.
  16. 제13항에 있어서,
    상기 와인딩 넘버 매니저는,
    상기 제1 메모리에 상기 프리미티브 마스크에 대응하는 와인딩 넘버가 저장되어 있는 경우, 상기 제1 메모리에 상기 와인딩 넘버를 독출하기 위한 신호를 출력하는 것을 특징으로 하는 그래픽 처리 장치.
  17. 제13항에 있어서,
    상기 와인딩 넘버 매니저는,
    상기 제1 메모리에 상기 프리미티브 마스크에 대응하는 와인딩 넘버가 저장되어 있지 않는 경우, 상기 와인딩 넘버 계산기에 상기 프리미티브 정보를 출력하는 것을 특징으로 하는 그래픽 처리 장치.
  18. 제13항에 있어서,
    상기 객체 정보는 상기 와인딩 넘버에 따라서 컬러를 할당하는 규칙에 대한 정보를 포함하는 컬러 할당 규칙을 더 포함하고,
    상기 렌더링 결정기는 상기 와인딩 넘버 및 상기 컬러 할당 규칙에 기초하여 렌더링을 수행하는 그래픽 처리 장치.
  19. 제13항에 있어서,
    상기 와인딩 넘버 생성기는 상기 프리미티브 정보를 저장하는 제2 메모리를 더 포함하고,
    상기 와인딩 넘버 생성기는 상기 제2 메모리로부터 상기 프리미티브 정보를 독출하는 것을 특징으로 하는 그래픽 처리 장치.
  20. 프리미티브 정보를 기초로 복수의 비트로 구성되는 프리미티브 마스크를 생성하는 와인딩 넘버 매니저; 및
    상기 프리미티브 마스크 및 이에 대응하는 와인딩 넘버를 저장하는 제1 메모리;를 포함하고,
    상기 와인딩 넘버 매니저는,
    상기 제1 메모리에 상기 프리미티브 마스크에 대응하는 와인딩 넘버가 저장되어 있는지 확인하고, 상기 제1 메모리에 상기 와인딩 넘버가 저장되어 있는지 여부에 따라서, 상기 제1 메모리에 상기 프리미티브 정보에 대응하는 와인딩 넘버를 기입하거나 독출하는 것을 특징으로 하는 그래픽 처리 장치.
KR1020170116658A 2017-09-12 2017-09-12 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법 KR102446865B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020170116658A KR102446865B1 (ko) 2017-09-12 2017-09-12 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법
CN201810520788.7A CN109509244B (zh) 2017-09-12 2018-05-28 一种执行路径渲染的图形处理器及其操作方法
DE102018113275.1A DE102018113275A1 (de) 2017-09-12 2018-06-05 Grafikverarbeitungseinheit, welche ein Pfad-Rendering durchführt und ein Verfahren zum Betreiben derselben
US16/007,628 US10776896B2 (en) 2017-09-12 2018-06-13 Graphics processing unit that performs path rendering, and a method of operating the same
GB2007726.9A GB2586696B (en) 2017-09-12 2018-06-26 A graphics processing unit that performs path rendering, and a method of operating the same
GB1810476.0A GB2566349B (en) 2017-09-12 2018-06-26 Generation and management of winding numbers in graphic processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170116658A KR102446865B1 (ko) 2017-09-12 2017-09-12 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법

Publications (2)

Publication Number Publication Date
KR20190029279A KR20190029279A (ko) 2019-03-20
KR102446865B1 true KR102446865B1 (ko) 2022-09-23

Family

ID=63042756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170116658A KR102446865B1 (ko) 2017-09-12 2017-09-12 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법

Country Status (5)

Country Link
US (1) US10776896B2 (ko)
KR (1) KR102446865B1 (ko)
CN (1) CN109509244B (ko)
DE (1) DE102018113275A1 (ko)
GB (2) GB2566349B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102699047B1 (ko) 2018-12-14 2024-08-27 삼성전자주식회사 경로를 포함하는 객체를 렌더링하는 장치, 이를 포함하는 컴퓨팅 장치 및 이의 렌더링 방법
CN111881152B (zh) * 2020-07-17 2024-04-02 珠海格力电器股份有限公司 组态软件的模块的连接方法及系统
CN113934491B (zh) * 2021-09-30 2023-08-22 阿里云计算有限公司 一种大数据处理方法及装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100953637B1 (ko) 2003-07-07 2010-04-20 엘지전자 주식회사 광디스크 및 광디스크의 디스크정보 기록방법
US7218317B2 (en) * 2003-08-25 2007-05-15 Via Technologies, Inc. Mechanism for reducing Z buffer traffic in three-dimensional graphics processing
JP4199159B2 (ja) * 2004-06-09 2008-12-17 株式会社東芝 描画処理装置、描画処理方法、及び描画処理プログラム
US7408553B1 (en) * 2005-12-15 2008-08-05 Nvidia Corporation Inside testing for paths
US7817512B1 (en) 2006-10-30 2010-10-19 Marvell International, Ltd. Method and apparatus to correct wobble phase slip in optical recorders
US7872648B2 (en) 2007-06-14 2011-01-18 Microsoft Corporation Random-access vector graphics
US8587581B2 (en) * 2009-10-15 2013-11-19 Nvidia Corporation Order-preserving distributed rasterizer
US20110285736A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Decomposing cubic bèzier segments for tessellation-free stencil filling
US9330495B2 (en) * 2012-08-09 2016-05-03 Qualcomm Incorporated Extending DX11 GPU for programmable vector graphics
US9558573B2 (en) * 2012-12-17 2017-01-31 Nvidia Corporation Optimizing triangle topology for path rendering
US9437014B2 (en) 2013-07-16 2016-09-06 Mitsubishi Electric Research Laboratories, Inc. Method for labeling segments of paths as interior or exterior
KR102238651B1 (ko) 2014-04-23 2021-04-09 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치.
EP2985735B1 (en) 2014-08-11 2019-12-04 Samsung Electronics Co., Ltd Method and apparatus for performing tile-based path rendering
KR102423767B1 (ko) * 2014-08-11 2022-07-22 삼성전자주식회사 타일 기반 경로 렌더링을 수행하는 방법 및 장치.
KR102327144B1 (ko) * 2014-11-26 2021-11-16 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법
JP6642964B2 (ja) 2015-01-05 2020-02-12 キヤノン株式会社 情報処理装置、情報処理方法、プログラム
KR102426669B1 (ko) 2015-08-03 2022-07-28 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치.

Also Published As

Publication number Publication date
DE102018113275A1 (de) 2019-03-14
GB2566349A (en) 2019-03-13
US10776896B2 (en) 2020-09-15
GB2586696B (en) 2022-05-04
US20190080428A1 (en) 2019-03-14
GB201810476D0 (en) 2018-08-08
GB2586696A (en) 2021-03-03
KR20190029279A (ko) 2019-03-20
GB202007726D0 (en) 2020-07-08
CN109509244B (zh) 2023-11-14
CN109509244A (zh) 2019-03-22
GB2566349B (en) 2021-01-06

Similar Documents

Publication Publication Date Title
JP6273380B2 (ja) レイトレーシングアプリケーションにおけるツリー横断のための開始ノード決定
JP6571884B2 (ja) グラフィックス処理におけるシャドーレイのツリー横断のための開始ノード決定
KR102446865B1 (ko) 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법
CN105006010B (zh) 执行路径渲染的方法和设备
KR102554419B1 (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
EP3420537B1 (en) Single pass bounding volume hierarchy rasterization
KR100762811B1 (ko) 하프 플레인 에지 함수를 이용한 타일 비닝 방법 및 시스템
US20150228111A1 (en) Graphics processing unit
CN105144244A (zh) 用于基于瓦片的渲染器的查询处理
US12086922B2 (en) Intersection testing in ray tracing systems using hierarchical acceleration structures with implicitly represented nodes
KR102699047B1 (ko) 경로를 포함하는 객체를 렌더링하는 장치, 이를 포함하는 컴퓨팅 장치 및 이의 렌더링 방법
EP3929877A1 (en) Hierarchical acceleration structures for use in ray tracing systems
US20210407167A1 (en) Hierarchical Acceleration Structures for Use in Ray Tracing Systems

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