KR102188543B1 - 그래픽 처리 장치 - Google Patents

그래픽 처리 장치 Download PDF

Info

Publication number
KR102188543B1
KR102188543B1 KR1020140014394A KR20140014394A KR102188543B1 KR 102188543 B1 KR102188543 B1 KR 102188543B1 KR 1020140014394 A KR1020140014394 A KR 1020140014394A KR 20140014394 A KR20140014394 A KR 20140014394A KR 102188543 B1 KR102188543 B1 KR 102188543B1
Authority
KR
South Korea
Prior art keywords
tile
primitive
processing device
graphic processing
information
Prior art date
Application number
KR1020140014394A
Other languages
English (en)
Other versions
KR20150093518A (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 KR1020140014394A priority Critical patent/KR102188543B1/ko
Priority to US14/617,076 priority patent/US10019802B2/en
Publication of KR20150093518A publication Critical patent/KR20150093518A/ko
Application granted granted Critical
Publication of KR102188543B1 publication Critical patent/KR102188543B1/ko

Links

Images

Classifications

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

Abstract

본 발명의 일 실시예에 따르면, 타일 단위로 렌더링하는 그래픽 처리 장치에 있어서, 제1 타일 및 제2 타일에 포함되는 프리미티브의 정점 좌표에 기초하여 내삽 계수를 생성하는 제1 삼각형 셋업부, 상기 내삽 계수에 따라 상기 프리미티브의 상기 제1 타일 내 각 픽셀에서의 무게중심좌표(barycentric coordinate) 및 픽셀 값을 생성하는 내삽부, 및 상기 내삽 계수를 저장하는 저장부를 포함하며, 상기 그래픽 처리 장치는 상기 저장부에 저장된 상기 내삽 계수에 따라, 상기 프리미티브를 포함하는 제2 타일 내 각 픽셀에서의 무게중심좌표 및 픽셀 값을 생성한다.

Description

그래픽 처리 장치{GRAPHIC PROCESSING UNIT}
본 발명은 그래픽 처리 장치에 관한 것이다.
타일(tile) 단위로 렌더링(rendering)하는 GPU(graphic processing unit)는 래스터라이저(rasterizer)를 통해서 해당 타일에 걸쳐져 있는 프리미티브(primitive) 내부의 픽셀 값(컬러, 깊이 값 등)을 생성한다.
프리미티브가 복수의 타일들에 걸쳐지는 경우, 프리미티브가 복수의 타일들에 중복으로 할당되게 되므로 각 타일에 할당된 프리미티브 리스트(primitive list)의 사이즈가 커진다. 프리미티브 리스트의 사이즈를 줄이기 위해 복수의 타일들에 할당된 프리미티브를 더 높은 레벨의 타일(상기 복수의 타일들을 포함하는 더 큰 타일)에 할당하여 계층적인 구조의 타일을 구성하기도 한다.
그러나, 프리미티브들이 복수의 타일들에 걸쳐지는 경우, GPU는 개별 타일들의 렌더링 때마다 동일한 프리미티브에 대해서 동일한 연산을 중복으로 처리한다.
본 발명이 이루고자 하는 기술적인 과제는 보다 효율적으로 래스터라이제이션(rasterization)을 수행하는 그래픽 처리 장치를 제공하는 것이다.
본 발명의 일 실시예에 따르면, 타일 단위로 렌더링하는 그래픽 처리 장치에 있어서, 제1 타일 및 제2 타일에 포함되는 프리미티브의 정점 좌표에 기초하여 내삽 계수를 생성하는 제1 삼각형 셋업부, 상기 내삽 계수에 따라 상기 프리미티브의 상기 제1 타일 내 각 픽셀에서의 픽셀 값(컬러, 텍스쳐 좌표, 노멀(normal) 벡터 등)을 내삽하기 위한 무게중심좌표(barycentric coordinate)를 생성하고 내삽을 수행하는 내삽부, 및 상기 내삽 계수를 저장하는 저장부를 포함하며, 상기 그래픽 처리 장치는 상기 저장부에 저장된 상기 내삽 계수에 따라, 상기 프리미티브를 포함하는 제2 타일 내 각 픽셀에서의 픽셀 값을 생성한다.
상기 제1 타일은 상기 제2 타일보다 큰 사이즈를 갖고, 상기 제2 타일을 포함할 수 있다.
상기 내삽 계수는 상기 프리미티브의 적어도 두 개의 정점 좌표들의 차이에 기초한 값일 수 있다.
상기 프리미티브는 삼각형이고, 상기 내삽 계수는 N, |N|, N/|N|, V1-V2, V0-V1 및 V2-V0 중 적어도 하나를 포함하며, 상기 N은 (V2-V0)x(V1-V0)이고, 상기 V0, V1, V2는 상기 프리미티브의 각 정점(Vertex)에 상응하는 벡터이며, 상기 |N|은 상기 N의 크기일 수 있다.
상기 그래픽 처리 장치는 상기 프리미티브의 상기 제1 타일에서의 깊이 정보를 산출하는 깊이 정보 생성부를 더 포함하며, 상기 저장부는 상기 깊이 정보를 저장하고, 상기 그래픽 처리 장치는 상기 저장부에 저장된 상기 깊이 정보에 따라, 상기 제2 타일에 대한 래스터라이제이션을 수행할 수 있다.
상기 그래픽 처리 장치는 상기 제1 삼각형 셋업부와 동일한 기능을 수행하는 제2 삼각형 셋업부를 더 포함하고, 상기 제2 타일 내 각 픽셀에서의 무게중심좌표는 상기 제1 삼각형 셋업부 또는 상기 제2 삼각형 셋업부에서 생성될 수 있다.
상기 그래픽 처리 장치는 상기 프리미티브의 상기 제1 타일에서의 기하학적 정보에 따라 상기 프리미티브의 제3 타일에 대한 커버리지 정보를 산출하는 커버리지 체크부를 더 포함하고, 상기 저장부는 상기 커버리지 정보를 더 저장할 수 있다.
상기 제1 타일은 상기 제3 타일보다 큰 사이즈를 갖고 상기 제3 타일을 포함하거나, 또는 상기 제3 타일보다 작은 사이즈를 갖고 상기 제3 타일에 포함될 수 있다.상기 제1 타일은 상기 제3 타일과 동일한 사이즈를 가질 수 있다.
상기 기하학적 정보는 상기 제1 타일의 각 꼭지점이 상기 프리미티브에 포함되는지 여부에 관한 정보일 수 있다.
상기 그래픽 처리 장치는 상기 제1 타일 및 상기 제3 타일을 동일한 코어 또는 서로 다른 코어에서 처리할 수 있다.
상기 저장부는 캐시 메모리 또는 버퍼 메모리로 구현될 수 있다.
본 발명의 다른 실시예에 따르면, 타일 단위로 렌더링하는 그래픽 처리 장치는, 제1 타일에 포함되는 프리미티브의 상기 제1 타일에서의 기하학적 정보에 따라, 상기 프리미티브의 제2 타일에 대한 커버리지 정보를 산출하는 래스터라이저, 및 상기 커버리지 정보를 저장하는 저장부를 포함한다. 상기 래스터라이저는 상기 저장부에 저장된 상기 커버리지 정보에 따라, 상기 제2 타일에 대한 래스터라이제이션을 수행한다.
상기 제2 타일은 상기 제1 타일에 포함되는 상기 제1 타일보다 N(N은 1 이상의 정수)-레벨 하위의 타일이거나, 또는 상기 제1 타일을 포함하는 상기 제1 타일보다 N-레벨 상위의 타일일 수 있다.
상기 커버리지 정보 산출 및 상기 래스터라이제이션은 동일한 코어 또는 서로 다른 코어에서 수행될 수 있다.
상기 래스터라이저는 상기 프리미티브의 상기 제1 타일에서의 깊이 정보를 산출하며, 상기 저장부는 상기 깊이 정보를 저장하고, 상기 래스터라이저는 상기 저장부에 저장된 상기 깊이 정보에 따라, 상기 제2 타일에 대한 래스터라이제이션을 수행할 수 있다.
본 발명의 실시예에 따르면 불필요한 연산을 줄임으로써 고속 및 저전력으로 그래픽을 처리할 수 있는 효과가 있다.
도 1은 본 발명의 실시 예에 따른 그래픽 프로세싱 유닛을 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 도 1의 GPU의 블록도이다.
도 3은 도 2의 프래그먼트 프로세서의 일 실시예를 나타낸다.
도 4는 프리미티브 내 각 픽셀에서의 값을 구하는 방법을 나타내기 위한 도면이다.
도 5는 동일한 내삽 계수가 적용되는 타일들을 나타낸다.
도 6은 도 2의 프래그먼트 프로세서의 다른 실시예를 나타낸다.
도 7은 도 2의 프래그먼트 프로세서의 또 다른 실시예를 나타낸다.
도 8은 본 발명의 비교예에 따른 계층적 타일링 기법을 사용할 경우의 프래그먼트 프로세서의 동작을 나타낸다.
도 9는 본 발명의 일 실시예에 따른 개념도를 나타낸다.
도 10은 커버리지 정보 생성의 일례를 나타낸다.
도 11은 삼각형에 대한 각 타일의 인-아웃 테스트연산을 설명하기 위한 도면이다.
도 12는 본 발명의 일 실시예에 따른 커버리지 정보 산출 방법을 나타내는 도면이다.
도 13은 프리미티브에 대한 타일의 인-아웃 패턴들을 나타낸다.
도 14는 본 발명의 일 실시예에 따른 그래픽 처리 방법을 나타낸다.
도 15는 본 발명의 다른 실시예에 따른 그래픽 처리 방법을 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 먼저, 본 발명에서 사용하는 용어 및 이와 관련된 사항에 대하여 설명하면 다음과 같다.
프리미티브(primitive)는 컴퓨터 그래픽에서 그래픽 프로그램에 의해 개별적인 실체로 그려지고 저장 및 조작될 수 있는 선, 원, 곡선, 다각형과 같은 그래픽 디자인을 창작하는데 필요한 요소를 의미한다. 그래픽 처리 시 면은 다수의 기본 요소, 즉 프리미티브로 분할된다. 일반적으로 프리미티브는 삼각형과 같은 단순한 폴리건으로 표현되고, 삼각형의 정점을 정의하는 것으로 기술된다.
렌더링(rendering)은 컴퓨터 프로그램을 사용하여 모델로부터 영상을 만들어내는 과정을 의미한다. 여기서, 모델은 자료 구조나 강력하게 정의된 언어로 짠 3차원 물체에 대한 설명이며, 기하학, 시점, 텍스처 매핑, 조명, 셰이딩 정보 등을 포함할 수 있다. 랜더링은 마지막 비디오 출력물을 만들어내기 위해 영상 편집 파일의 효과를 계산하는 과정이라고 이야기할 수도 있다.
렌더링 장치는 3차원 모델로부터 2차원 화면으로 폴리건을 그리는 일을 수행한다. 프레임 기반의 렌더링 장치는 전체 프레임 버퍼를 한번에 그리지만, 보다 효율적인 방법은 화면을 부분 영역, 즉 타일(tile)로 분할한 뒤, 각 타일을 순차적으로 랜더링하는 방식이다. 이러한 방식에서 장면은 일반적으로 동일한 크기와 모양을 가지는 타일들로 나뉘어진다.
타일은 복수의 다각형을 포함할 수 있다. 타일 기반의 랜더링 장치에서, 주어진 타일에 대해서 보이지 않는 프리미티브를 포함시키지 않는 것이 권장된다. 따라서, 이러한 방법을 수행하기 위해서 각 타일에 대해서 목록(list)이 마련된다. 이러한 목록은 타일 목록(tile-list) 또는 프리미티브 목록(pritimive-list) 또는 디스플레이 리스트(display list)라고 부른다. 이러한 디스플레이 리스트(display list)는 각 영역에 그려질 프리미티브를 포함하고 있다.
설명의 편의를 위해 이하에서는 프리미티브를 삼각형으로 지칭하고, 디스플레이 리스트를 삼각형 리스트로 지칭하여 설명하나, 본 발명의 실시예가 이에 한정되는 것은 아니다.
도 1은 본 발명의 실시 예에 따른 그래픽 프로세싱 유닛을 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
도 1을 참조하면, 데이터 처리 시스템(10)은 데이터 처리 장치(50), 디스플레이(20) 및 메모리(30)를 포함할 수 있다.
데이터 처리 시스템(10)은 PC(personal computer) 또는 휴대용 전자 장치(또는 모바일 기기), 또는 이미지 데이터를 디스플레이할 수 있는 디스플레이(30)를 포함하는 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, 모바일 인터넷 디바이스(mobile internet device(MID)), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
데이터 처리 장치(50)는 디스플레이(20) 및/또는 메모리(30)를 제어할 수 있다. 즉, 데이터 처리 장치(50)는 데이터 처리 시스템(10)의 동작을 전반적으로 제어할 수 있다.
데이터 처리 장치(50)는 마더보드(motherboard)와 같은 인쇄 회로 기판(printed circuit board(PCB)), 집적 회로(integrated circuit(IC)), 또는 SoC(system on chip)로 구현될 수 있다. 예컨대, 데이터 처리 장치(50)는 애플리케이션 프로세서(application processor)일 수 있다.
데이터 처리 장치(50)는 CPU(Central Processing Unit; 60), ROM(Read Only Memory; 70), RAM(Random Access Memory; 80), 디스플레이 컨트롤러(display controller; 90), 메모리 인터페이스(memory interface; 95) 및 그래픽 프로세싱 유닛(Graphic Processing Unit(GPU); 100)을 포함할 수 있다.
CPU(60)는 데이터 처리 장치(50)의 전반적인 동작을 제어할 수 있다. 예컨대, CPU(60)는 각 구성요소(70, 80, 90, 95, 및 100)의 동작을 제어할 수 있다. 즉, CPU(60)는 버스(55)를 통하여 각 구성요소(70, 80, 90, 95, 및 100)와 통신할 수 있다.
또한, CPU(60)는 프로그램 명령들(program instructions)을 읽고 실행할 수 있다.
예컨대, 메모리(70, 80 또는 30)에 저장된 프로그램들 및/또는 데이터는 CPU(60)의 제어에 따라 CPU(60) 내부의 메모리, 예컨대 캐시 메모리(미도시)로 로드(load)될 수 있다.
실시 예에 따라, CPU(60)는 멀티-코어(multi-core)로 구현될 수 있다. 상기 멀티-코어는 두 개 또는 그 이상의 독립적인 코어들(cores)을 갖는 컴퓨팅 컴포넌트(computing component)일 수 있다.
ROM(70)은 프로그램들 및/또는 데이터를 영구적으로 저장할 수 있다.
실시 예에 따라, ROM(70)은 EPROM(erasable programmable read-only memory) 또는 EEPROM(electrically erasable programmable read-only memory)으로 구현될 수 있다.
RAM(80)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(70 또는 30)에 저장된 프로그램들 및/또는 데이터는 CPU(60)의 제어, GPU(100)의 제어, 또는 ROM(70)에 저장된 부팅 코드(booting code)에 따라 RAM(80)에 일시적으로 저장될 수 있다.
실시 예에 따라, RAM(80)은 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다.
GPU(100)는 CPU(60)의 부하를 감소시키기 위해 그래픽 처리와 관련된 동작을 수행할 수 있다.
디스플레이 컨트롤러(90)는 디스플레이(20)의 동작을 제어할 수 있다.
예컨대, 디스플레이 컨트롤러(90)는 메모리(30)로부터 출력된 이미지 데이터, 예컨대 스틸 이미지(still image) 데이터, 무빙 이미지(moving image) 데이터, 3차원 이미지(3D image), 또는 3차원 입체 이미지(stereoscopic 3D image) 데이터를 디스플레이(20)로 전송할 수 있다.
메모리 인터페이스(95)는 메모리(30)를 액세스할 수 있는 메모리 컨트롤러의 기능을 수행할 수 있다. 예컨대, 데이터 처리 장치(50)와 메모리(30)는 메모리 인터페이스(95)를 통하여 서로 통신할 수 있다. 즉, 데이터 처리 장치(50)와 메모리(30)는 메모리 인터페이스(95)를 통하여 서로 데이터를 주고받을 수 있다.
디스플레이(20, 또는 스크린이라 칭함)는 디스플레이 컨트롤러(90)로부터 출력된 상기 이미지 데이터에 대응되는 이미지를 디스플레이할 수 있다. 디스플레이(20)는 픽셀 어레이를 포함할 수 있다.
예컨대, 디스플레이(20)는 터치스크린, LCD(liquid crystal display), TFT-LCD(thin film transistor-liquid crystal display), LED(liquid emitting diode) 디스플레이, OLED(organic LED) 디스플레이, AMOLED(active matrix OLED) 디스플레이 또는 플렉시블(flexible) 디스플레이로 구현될 수 있다.
메모리(30)는 CPU(60) 및/또는 GPU(100)에 의하여 처리될 프로그램들 및/또는 데이터(또는 이미지 데이터)를 저장할 수 있다.
메모리(30)는 휘발성 메모리 장치 또는 불휘발성 메모리 장치로 구현될 수 있다.
상기 휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM (static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
상기 불휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive bridging RAM(CBRAM), FeRAM (Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM: RRAM), 나노튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
상기 불휘발성 메모리 장치는 플래시-기반(flash-based) 메모리 장치, 예컨대 SD(Secure Digital) 카드, MMC(multimedia card), eMMC(embedded-MMC), USB (Universal Serial Bus) 플래시 드라이브, 또는 UFS(Universal Flash Storage)로 구현될 수 있다.
또한, 상기 불휘발성 메모리 장치는 하드디스크 드라이브(hard disk drive(HDD)) 또는 솔리드 스테이트 드라이브(SSD)로 구현될 수 있다.
도 2는 도 1의 GPU의 블록도이다.
도 1 및 도 2를 참조하면, GPU(100)는 지오메트리 프로세서(110) 및 프래그먼트 프로세서(120)를 포함할 수 있다.
GPU(100)는 CPU(60) 및/또는 메모리 인터페이스(95)를 통해 메모리(20)로부터 출력된 데이터를 수신하거나 GPU(100)에 의해 처리된 데이터를 메모리(20)로 전송하나, 설명의 편의를 위해 CPU(60)와 메모리 인터페이스(95)는 생략한다.
GPU(100)는 3차원 공간의 객체(object) 정보를 수신하여 2차원 공간에 그려주는 작업을 수행할 수 있다. 3차원 공간의 객체는 복수의 정점(vertex)들로 구성될 수 있다.
지오메트리 프로세서(110)는 3차원 공간의 정점 정보(V_3D)를 수신하여 2차원 공간으로 좌표 변환할 수 있다.
프래그먼트 프로세서(120)는 2차원 공간의 정점 정보(V_2D)에 따라 픽셀 데이터(PDATA)를 생성할 수 있다.
예컨대, 프래그먼트 프로세서(120)는 2차원 공간의 정점 정보(V_2D)에 따라 프리미티브(primitive)를 구성하고, 각 프리미티브가 스크린의 어느 픽셀에 겹치는지 판단하여, 각 픽셀의 값을 결정할 수 있다.
도 3은 도 2의 프래그먼트 프로세서의 일 실시예(120a)를 나타내고, 도 4는 프리미티브 내 각 픽셀에서의 값을 구하는 방법을 나타내기 위한 도면이며, 도 5는 동일한 내삽 계수가 적용되는 타일들을 나타낸다.
도 1 내지 도 5를 참조하면, 프래그먼트 프로세서(120a)는 캐시(122a) 및 코어(200a)를 포함할 수 있다.
캐시(122a)는 L2 캐시일 수 있다. 캐시는 외부 메모리(예컨대 도 1의 ROM(70) 또는 RAM(80))와 데이터를 주고받을 수 있다.
코어(200a)는 타일러(201), 프리미티브 리스트 리더(Primitive list reader; PLR, 203), 삼각형 셋업부(205), 래스터라이저(210) 및 저장부(220)를 포함할 수 있다.
타일러(201)는 2차원 공간의 정점 정보(V_2D)를 수신하여, 각 타일별로 삼각형 리스트(TRI_LIST)를 생성하고 캐시(122a)로 출력할 수 있다.
PLR(203)는 각 타일별 삼각형 리스트(TRI_LIST)를 수신하고, 삼각형 리스트(TRI_LIST)의 각 삼각형 정보(TRI)를 순차적으로 삼각형 셋업부(205)로 출력할 수 있다. 각 삼각형 정보(TRI)는 삼각형의 각 정점의 값, 예컨대 좌표, 컬러 값, 깊이 값, 노멀 벡터 등을 포함할 수 있다.
삼각형 셋업부(205)는 각 삼각형 정보(TRI)에 따라 각 삼각형의 타일 내 각 픽셀에서의 무게중심좌표(barycentric coordinate; BC)를 계산하는데 필요한 정보를 생성할 수 있다.
예컨대, 삼각형은 복수의 타일들(예컨대 제1 타일 및 제2 타일)에 포함될 수 있다. 코어(200a)가 제1 타일을 처리할 때, 삼각형 셋업부(205)는 삼각형의 정점 좌표에 기초하여 내삽 계수(interpolation coefficient; INTC)를 생성할 수 있다. 내삽부(215)는 내삽 계수(INTC)에 따라 상기 삼각형의 상기 제1 타일 내 각 픽셀에서의 무게중심좌표(BC)를 생성할 수 있다.
기준점에서 삼각형의 세 정점을 향하는 벡터를 각각 V0, V1, V2라 하고, 각 정점에서의 값(예컨대 컬러 값 또는 깊이 값)을 각각 v0, v1, v2라 하기로 한다. 이때, 삼각형에 포함되는 (x, y) 좌표에서의 픽셀 값(Pixel(x,y))은 이하의 수학식 1에 따라 구할 수 있다.
Figure 112014012412740-pat00001
Figure 112014012412740-pat00002
상기 수학식 1에서, α, β, γ는 각 픽셀에서의 무게중심좌표(BC)이며,
Figure 112014012412740-pat00003
(또는 |N|)은 벡터 N의 크기를 나타낸다.
무게중심좌표(BC)를 구하는 과정 중에 계산되는 값으로서, 각 픽셀의 위치와 상관없이 동일한 값을 갖는 계수를 내삽 계수(INTC)라 정의한다. 내삽 계수(INTC)는 상기 삼각형의 정점 좌표들의 차이에 기초한 값일 수 있다.
상기 수학식 1을 참조하면, V0, V1 및 V2는 각 픽셀에 대하여 동일하므로, N, N/|N|, |N|, V1-V2, V0-V1, V2-V0은 각 픽셀에 대하여 동일한 값을 갖는다. 내삽 계수(INTC)는 상기 값들 중 적어도 하나를 포함할 수 있다.
저장부(220)는 내삽 계수(INTC)를 저장할 수 있다. 저장부(220)는 캐시 메모리 또는 버퍼 메모리로 구현될 수 있다.
코어(200a)가 제2 타일을 처리할 때, 제2 타일의 적어도 일부가 상기 삼각형에 포함되면, 삼각형 셋업부(205)는 저장부(220)에 저장된 내삽 계수(INTC)를 수신할 수 있다. 삼각형 셋업부(205)는 내삽 계수(INTC)를 수신함으로써, 상기 삼각형에 대한 내삽 계수(INTC)를 다시 생성하지 않을 수 있다. 내삽부(215)는 저장부(220) 또는 삼각형 셋업부(205)로부터 수신한 내삽 계수(INTC)에 따라, 상기 삼각형의 제2 타일 내 각 픽셀에서의 무게중심좌표(BC)를 생성할 수 있다.
실시예에 따라, 상기 제1 타일은 상기 제2 타일보다 상위의 타일일 수 있다. 즉, 제1 타일은 제2 타일보다 큰 사이즈를 갖고, 상기 제2 타일을 포함할 수 있다. 그러나, 본 발명의 실시예가 이에 한정되는 것은 아니다.
삼각형이 4개의 타일(예컨대, Tile0, Tile1, Tile2, Tile3)에 걸쳐 있는 경우, 종래에는 4개의 타일을 포함하는 상위 타일 및 4개의 타일 각각에 대하여 내삽 계수(INTC)를 계산하였다. 이때 N을 구하기 위해서는 32비트 부동소수점 기반의 3x3 벡터 곱셈(Cross Product)을 수행해야 하고, N/|N|을 구하기 위해서는 긴 레이턴시가 필요한 나누기 연산이 필요하다.
본 발명의 일 실시예에 따르면 삼각형에 대한 내삽 계수(INTC)를 저장부(220)에 저장하고, 이후 동일한 삼각형이 로딩될 때마다 저장된 내삽 계수(INTC)를 읽어옴으로써, 연산량을 줄여 고속 및 저전력 동작을 가능케 하는 효과가 있다.
래스터라이저(210)는 타일에 걸치는 삼각형의 정보를 순차적으로 수신하여, 삼각형 정보에 따라 타일 내 각 픽셀의 값을 생성할 수 있다.
실시예에 따라, 래스터라이저(210)는 커버리지 체크부(211), 계층적 깊이 테스트부(Hierarchical Z-Test, 213), 내삽부(215) 및 조기 깊이 테스트부(Early Z-Test, 217)를 포함할 수 있다.
커버리지 체크부(211)는 제1 타일에 포함되는 삼각형의 상기 제1 타일에서의 기하학적 정보에 따라 삼각형의 제2 타일에 대한 커버리지 정보(coverage information; CV)를 산출할 수 있다. 커버리지 정보(CV)는 제2 타일의 적어도 일부가 상기 삼각형에 포함되는지 여부를 나타내는 정보이다. 설명의 편의를 위해 커버리지 정보(CV)의 산출 방법에 대하여는 도 10 내지 도 13을 참조하여 후술한다.
상기 기하학적 정보는 상기 제1 타일의 각 꼭지점이 상기 삼각형에 포함되는지 여부에 관한 정보일 수 있다.
계층적 타일구조 상에서, 제2 타일은 제1 타일보다 N(N은 1 이상의 정수)-단계 하위 계층의 타일일 수 있다. 즉, 상기 제1 타일은 상기 제2 타일보다 큰 사이즈를 갖고, 상기 제2 타일을 포함할 수 있다.
다른 실시예에 따라 제2 타일은 제1 타일과 동일한 계층의 타일일 수 있다. 즉, 상기 제1 타일은 상기 제2 타일과 동일한 사이즈를 가질 수 있다.
저장부(220)는 커버리지 정보(CV)를 저장할 수 있다.
계층적 깊이 테스트부(Hierarchical Z-Test, 213)는 각 타일별로 삼각형의 깊이 정보를 비교할 수 있다.
내삽부(215)는 내삽 계수(INTC)에 따라 상기 삼각형의 상기 제1 타일 내 각 픽셀에서의 무게중심좌표(BC)를 생성하고, 무게중심좌표(BC)에 따라 상기 삼각형의 정점들의 값을 내삽(interpolation)하여 상기 삼각형 내부의 픽셀 값들을 생성할 수 있다. 픽셀 값은 예컨대 컬러 값, 텍스쳐 좌표, 노멀(normal) 벡터 등일 수 있다.
조기 깊이 테스트부(Early Z-Test, 217)는 각 픽셀별로 삼각형의 깊이 정보를 비교할 수 있다.
제2 타일 처리 시, 래스터라이저(210)는 저장부(220)에 저장된 커버리지 정보(CV)에 따라, 상기 제2 타일에 대한 래스터라이제이션을 수행할 수 있다.
실시예에 따라, 코어(200a)가 제1 타일을 처리할 때 깊이 테스트부(213 또는 217)는 프리미티브의 제1 타일에서의 깊이 정보를 산출할 수 있다. 저장부(220)는 깊이 테스트부에서 산출된 깊이 정보를 저장할 수 있다. 코어(200a)가 제2 타일을 처리할 때 래스터라이저(210)는 저장부(220)에 저장된 깊이 정보에 따라, 제2 타일에 대한 래스터라이제이션을 수행할 수 있다. 다른 실시예에 따라, 제1 타일 및 제2 타일의 처리는 서로 다른 코어에서 수행될 수 있다.
코어(200a)는 래스터라이저(210)의 출력을 추가로 처리하여 픽셀 데이터(PDATA)를 생성할 수 있다. 예컨대 코어(200a)는 복수의 픽셀들의 컬러 또는 명암 등의 효과를 처리하기 위하여 래스터라이저(210)의 출력에 텍스쳐 매핑(texture mapping) 또는 컬러 포멧 변환(color format conversion) 등의 계산 연산을 더 수행할 수 있다.
도 6은 도 2의 프래그먼트 프로세서(120)의 다른 실시예(120b)를 나타낸다. 도 6의 프래그먼트 프로세서(120b)의 구성은 도 3에 도시된 것과 대부분 동일하므로, 설명의 편의를 위해 이하에서 차이점을 위주로 설명한다.
도 3 및 도 6을 참조하면, 저장부(220)는 코어(200b) 대신 캐시(122b)에 포함될 수 있다.
도 7은 도 2의 프래그먼트 프로세서(120)의 또 다른 실시예(120c)를 나타낸다. 도 7의 프래그먼트 프로세서(120c)의 구성은 도 6에 도시된 것과 대부분 동일하므로, 설명의 편의를 위해 이하에서 차이점을 위주로 설명한다.
도 2, 도 6 및 도 7을 참조하면, 프래그먼트 프로세서(120c)는 복수의 코어들(200c-1~200c-N) 및 캐시(122c)를 포함할 수 있다.
캐시(122c)는 저장부(220)를 포함할 수 있다. 각 코어(200c-1~200c-N)의 구성은 도 6의 코어(200b)와 동일할 수 있다.
각 코어(200c-1~200c-N)는 서로 다른 타일을 처리할 수 있다. 각 코어(200c-1~200c-N)의 동작은 병렬적으로 수행될 수 있다.
실시예에 따라 제1 코어(200c-1)가 제1 타일을 처리하면서 삼각형의 내삽 계수 또는 삼각형의 제2 타일에 대한 커버리지 정보를 저장부(220)에 저장하면, 제2 코어(200c-2)가 상기 내삽 계수 또는 상기 커버리지 정보를 저장부(220)로부터 독출할 수 있다. 제2 코어(200c-2)는 독출한 내삽 계수 또는 커버리지 정보에 따라 제2 타일을 처리할 수 있다.
도 8은 본 발명의 비교예에 따른 계층적 타일링 기법을 사용할 경우의 프래그먼트 프로세서의 동작을 나타낸다.
도 3 및 도 8을 참조하면, 가장 아래 계층(Level 0)의 타일들(Tile0, Tile1, Tile2, Tile3)을 순서대로 처리하면서, 각 타일을 포함하는 상위 계층(Level 1, Level 2)의 타일에 할당된 삼각형들을 로딩하여 래스터라이제이션 과정을 처리하게 된다.
이때, 삼각형 셋업부(205) 및 래스터라이저(210)는 상위 계층(Level 1, Level 2)에 속하는 타일들에 대하여 동일한 연산을 중복으로 수행할 수 있다. 도면에는 도시되지 않았으나, 이러한 비효율은 동일한 계층(예컨대, Level 0)에 속하는 타일들에 대하여도 발생할 수 있다.
도 9는 본 발명의 일 실시예에 따른 개념도를 나타낸다.
도 8 및 도 9를 참조하면, 상위 계층(Level 1, Level 2)에 속하는 제1 타일에서의 삼각형의 특성(예컨대 내삽 계수 또는 제1 타일의 하위 타일들에 대한 커버리지 정보)을 저장부(예컨대 캐시, 122c)에 저장할 수 있다.
이후 코어(200c-1~200c-4) 중 하나가 하위 계층(Level 0)에 속하는 제2 타일의 처리를 수행할 때, 상기 코어는 캐시(122c)로부터 저장된 삼각형의 내삽 계수 또는 커버리지 정보를 독출하고, 독출한 삼각형의 내삽 계수 또는 커버리지 정보에 따라 제2 타일의 래스터라이제이션을 수행할 수 있다.
도 10은 커버리지 정보 생성의 일례를 나타낸다.
도 10을 참조하면, 계층적 타일링 기법을 사용할 경우, 상위 계층의 타일에 할당된 삼각형(T)의 정보는 그 바로 아래 타일에 대한 커버리지 정보를 가지고 있다. 커버리지 정보는 삼각형(T)이 소속된 계층의 바로 아래 계층에 속한 타일 중 삼각형(T)의 바운딩 박스(BB)가 터치하는 타일을 제1 로직 레벨(예컨대 '1')로 세팅함으로써 결정될 수 있다.
이러한 방식은 연산이 간단한 장점이 있으나, 제1 타일 그룹(TG1)에 속하는 타일들의 경우 실제로 삼각형(T)과 겹쳐지는 영역이 없음에도 불구하고, 바운딩 박스(BB)와 겹쳐지기 때문에 '1'로 세팅된다. 따라서 해당 타일 처리 시 삼각형 정보가 래스터라이저의 입력으로 들어오게 되는 문제점이 있다.
본 발명의 일 실시예에 따르면 바로 아래 계층의 타일뿐 아니라, 더 아래 계층의 타일에 대한 커버리지 정보를 생성함으로써, 제2 타일 그룹(TG2)에 속하는 타일들의 처리 시 삼각형 정보가 래스터라이저의 입력으로 들어오는 것을 막을 수 있다.
또한, 바운딩 박스와 하위 계층 타일의 겹쳐지는 영역을 찾는 대신, 삼각형에 대한 각 타일의 인-아웃 테스트를 수행하여 커버리지 정보를 생성하게 되면, 제3 타일 그룹(TG3)에 속하는 타일들의 처리 시 삼각형 정보가 래스터라이저의 입력으로 들어오는 것을 막을 수 있다. 따라서 불필요한 연산을 피할 수 있어 전력감소 효과가 있다.
도 11은 삼각형에 대한 각 타일의 인-아웃 테스트연산을 설명하기 위한 도면이다.
도 3 및 도 11을 참조하면, 커버리지 체크부(211)는 타일을 구성하는 4개의 꼭지점들의 좌표를 삼각형을 이루는 세 개의 엣지(edge)에 상응하는 엣지함수(Edge Function)의 입력으로 하여, 이하의 수학식 2에 따라 인-아웃 테스트를 수행함으로써, 삼각형에 대한 타일의 인-아웃 테스트를 수행할 수 있다.
Figure 112014012412740-pat00004
상기 수학식 2에서, E0(x,y), E1(x,y) 및 E2(x,y)는 타일의 꼭지점의 좌표 (x,y)에서의 엣지함수를 나타내고, A0, A1, A2, B0, B1, B2, C0, C1, C2는 삼각형의 특성에 따라 설정되는 상수 값이다.
커버리지 체크부(211)는 엣지함수(E0, E1, E2)의 값이 모두 양수가 되면 해당 꼭지점은 삼각형 내부에 있는 것으로 판단할 수 있다. 커버리지 체크부(211)는 타일의 적어도 하나의 꼭지점이 삼각형 내부에 있으면, 상기 타일은 삼각형에 적어도 일부 포함되는 것으로 판단할 수 있다.
커버리지 체크부(211)는 꼭지점 P1~P4에 대해 상기 수학식 2의 인-아웃 테스트를 수행함으로써 Level 0의 타일의 인-아웃 여부를 판단하고, 꼭지점 P5~P9에 대해 상기 수학식 2의 인-아웃 테스트를 추가로 수행함으로써 Level 1의 4개의 타일들의 인-아웃 여부를 판단할 수 있다.
도 12는 본 발명의 일 실시예에 따른 커버리지 정보 산출 방법을 나타내는 도면이다.
도 3 및 도 12를 참조하면, 하위 레벨로 내려갈수록 타일 수가 증가하여, 더 많은 인-아웃 테스트가 필요하므로 하드웨어적인 부담이 커진다.
이를 극복하기 위해 커버리지 체크부(211)는 제1 타일에 포함되는 삼각형의 상기 제1 타일에서의 기하학적 정보에 따라 제2 타일에 대한 커버리지 정보를 산출할 수 있다.
P1, P2, P3 및 P4로 구성되는 Level 0의 타일을 제1 타일이라고 가정하고, P2, P5, P6 및 P7로 구성되는 Level 1의 타일을 제2 타일이라고 가정한다.
P1, P2 및 P3이 인-아웃 테스트에 따라 삼각형의 내부에 속한다고 판단되면, 삼각형의 기하학적 성질에 따라 P1, P2 및 P3 사이에 있는 P5, P6 및 P7도 상기 삼각형의 내부에 속하게 된다.
따라서, Level 0의 타일의 인-아웃을 계산한 후, Level 1의 타일들의 인-아웃을 계산하기 위해 종래에는 5개의 점들(P5~P9)에 대해서 추가적으로 인-아웃 테스트를 수행해야 하지만, 본 발명에 따르면 2개의 점들(P8, P9)에 대해서만 추가적으로 인-아웃 테스트를 수행할 수 있다.
동일한 방법으로 Level 2 및 보다 하위 레벨의 타일들에 대해서도 인-아웃을 계산할 수 있다.
도 13은 프리미티브에 대한 타일의 인-아웃 패턴들을 나타낸다.
도 3 및 도 13을 참조하면, 커버리지 체크부(211)는 타일의 각 꼭지점이 모두 삼각형에 속하는 경우(도 13의 (a)), 상기 타일의 하위 타일들의 꼭지점들은 모두 상기 삼각형에 속하는 것으로 판단할 수 있다.
타일의 3개의 꼭지점이 삼각형에 속하는 경우(도 13의 (b)), 상기 도 8을 참조하여 설명한 바와 같이 하위 타일들의 인-아웃 테스트를 수행할 수 있다.
타일의 2개의 꼭지점이 삼각형에 속하는 경우(도 13의 (c)), 삼각형에 속하는 꼭지점을 잇는 선분 위에 있는 상기 타일의 하위 타일의 꼭지점은 상기 삼각형에 속하는 것으로 판단할 수 있다.
실시예에 따라, 삼각형의 특성(예컨대 사이즈 또는 각도)에 제약이 존재할 경우, 상기 특성 및 타일의 인-아웃 패턴에 따라 하위 타일들의 인-아웃 정보를 추론할 수 있다.
다른 실시예에 따라, 타일의 아래 2개의 꼭지점만이 삼각형에 속하는 경우(도 13의 (c)), 커버리지 체크부(211)는 상기 타일의 좌측 및 우측에 인접한 타일들이 상기 타일과 동일한 인-아웃 패턴을 가지면, 상기 타일의 윗변에 접하는 타일이 삼각형에 속하지 않는다고 판단할 수 있다.
커버리지 체크부(211)는 상술한 패턴들 또는 그 밖의 패턴들(예컨대, 도 13의 (d) 또는 (e))에 따른 인-아웃 판단 방법을 테이블 등의 형태로 저장할 수 있다.
상술한 방법에 따라 프리미티브의 타일 커버리지 정보를 보다 적은 하드웨어 리소스를 투입하여 구할 수 있으며, 연산량 감소 및 저전력 구현이 가능한 효과가 있다. 상술한 방법은 타일의 단위의 커버리지뿐 아니라, 다수의 픽셀로 구성되는 타일의 픽셀 커버리지를 계산하는데도 사용될 수 있다.
도 14는 본 발명의 일 실시예에 따른 그래픽 처리 방법을 나타낸다.
도 2, 도 3, 도 7 및 도 14를 참조하면, 삼각형 셋업부(203)는 제1 타일에 포함되는 프리미티브의 정점 좌표에 기초하여 내삽 계수를 생성할 수 있다(S11).
삼각형 셋업부(203)는 상기 내삽 계수에 따라 상기 프리미티브의 상기 제1 타일 내 각 픽셀에서의 무게중심좌표를 생성할 수 있다(S13).
저장부(220)는 상기 내삽 계수를 저장할 수 있다(S15).
삼각형 셋업부(203)는 저장부(220)에 저장된 상기 내삽 계수에 따라, 상기 프리미티브를 포함하는 제2 타일 내 각 픽셀에서의 무게중심좌표를 생성할 수 있다(S17).
상기 제2 타일은 상기 제1 타일과 동일한 코어 또는 다른 코어에서 처리될 수 있다. 따라서 S17 단계는 제1 타일을 처리한 코어의 삼각형 셋업부(203) 또는 다른 코어의 삼각형 셋업부(203)에서 수행될 수 있다.
도 15는 본 발명의 다른 실시예에 따른 그래픽 처리 방법을 나타낸다.
도 2, 도 3, 도 7 및 도 15를 참조하면, 커버리지 체크부(211)는 제1 타일에 포함되는 프리미티브의 상기 제1 타일에서의 기하학적 정보에 따라, 상기 프리미티브의 제2 타일에 대한 커버리지 정보를 산출할 수 있다(S21).
저장부(220)는 상기 커버리지 정보를 저장할 수 있다(S23).
래스터라이저(210)는 상기 저장된 커버리지 정보에 따라 상기 제2 타일에 대한 래스터라이제이션을 수행할 수 있다(S25).
S21 단계 및 S25 단계는 서로 동일한 코어 또는 서로 다른 코어에서 수행될 수 있다.
도 14 및 도 15에서, 제1 타일은 제2 타일보다 큰 사이즈를 갖고 제2 타일을 포함하는, 제2 타일보다 N(N은 1 이상의 정수)-레벨 상위의 타일일 수 있다. 다른 실시예에 따라, 제1 타일은 제2 타일보다 작은 사이즈를 갖고 상기 제2 타일에 포함되는 제2 타일보다 N-레벨 하위의 타일일 수 있다. 또 다른 실시예에 따라, 제1 타일 및 제2 타일은 동일한 사이즈를 갖는 타일일 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 본 발명에 따른 객체 정보 추정 방법을 수행하기 위한 프로그램 코드는 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 전송될 수도 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
데이터 처리 시스템(10) 그래픽 프로세싱 유닛(100)
데이터 처리 장치(50) 메모리 인터페이스(95)
CPU(60) 디스플레이(20)
디스플레이 컨트롤러(90) 메모리(30)

Claims (10)

  1. 타일 단위로 렌더링하는 그래픽 처리 장치에 있어서,
    제1 타일 및 제2 타일에 포함되는 프리미티브의 정점 좌표에 기초하여 내삽 계수를 생성하는 제1 삼각형 셋업부;
    상기 내삽 계수에 따라 상기 프리미티브의 상기 제1 타일 내 각 픽셀에서의 무게중심좌표(barycentric coordinate)를 생성하고, 상기 무게중심좌표에 따라 내삽(interpolation)을 수행하여 상기 프리미티브에 상응하는 상기 제1 타일 내 각 픽셀에서의 픽셀 값을 생성하는 내삽부; 및
    상기 내삽 계수를 저장하는 저장부를 포함하며,
    상기 내삽부는
    상기 저장부에 저장된 상기 내삽 계수에 따라, 상기 프리미티브의 상기 제2 타일 내 각 픽셀에서의 무게중심좌표를 생성하고, 상기 무게중심좌표에 따라 내삽을 수행하여 상기 프리미티브에 상응하는 상기 제2 타일 내 각 픽셀에서의 픽셀 값을 생성하는 그래픽 처리 장치.
  2. 제1항에 있어서, 상기 제1 타일은
    상기 제2 타일보다 큰 사이즈를 갖고, 상기 제2 타일을 포함하는 그래픽 처리 장치.
  3. 제1항에 있어서, 상기 내삽 계수는
    상기 프리미티브의 적어도 두 개의 정점 좌표들의 차이에 기초한 값인 그래픽 처리 장치.
  4. 제3항에 있어서, 상기 프리미티브는
    삼각형이고,
    상기 내삽 계수는
    N, |N|, N/|N|, V1-V2, V0-V1 및 V2-V0 중 적어도 하나를 포함하며,
    상기 N은
    (V2-V0)x(V1-V0)이고,
    상기 V0, V1, V2는
    상기 프리미티브의 각 정점에 상응하는 벡터이며,
    상기 |N|은
    상기 N의 크기인 그래픽 처리 장치.
  5. 제1항에 있어서, 상기 그래픽 처리 장치는
    상기 프리미티브의 상기 제1 타일에서의 깊이 정보를 산출하는 깊이 정보 생성부를 더 포함하며,
    상기 저장부는
    상기 깊이 정보를 저장하고,
    상기 그래픽 처리 장치는
    상기 저장부에 저장된 상기 깊이 정보에 따라, 상기 제2 타일에 대한 래스터라이제이션을 수행하는 그래픽 처리 장치.
  6. 제1항에 있어서, 상기 그래픽 처리 장치는
    상기 제1 삼각형 셋업부와 동일한 기능을 수행하는 제2 삼각형 셋업부를 더 포함하고,
    상기 제2 타일 내 각 픽셀에서의 무게중심좌표는
    상기 제1 삼각형 셋업부 또는 상기 제2 삼각형 셋업부에서 생성되는 그래픽 처리 장치.
  7. 제1항에 있어서, 상기 그래픽 처리 장치는
    상기 프리미티브의 상기 제1 타일에서의 기하학적 정보에 따라 상기 프리미티브의 제3 타일에 대한 커버리지 정보를 산출하는 커버리지 체크부를 더 포함하고,
    상기 저장부는
    상기 커버리지 정보를 더 저장하는 그래픽 처리 장치.
  8. 제7항에 있어서, 상기 기하학적 정보는
    상기 제1 타일의 각 꼭지점이 상기 프리미티브에 포함되는지 여부에 관한 정보인 그래픽 처리 장치.
  9. 타일 단위로 렌더링하는 그래픽 처리 장치에 있어서,
    프리미티브의 기하학적 정보 및 상기 프리미티브의 제1 타일의 하나 이상의 제1 꼭지점을 나타내는 꼭지점 정보에 따라, 상기 프리미티브의 제2 타일의 하나 이상의 제2 꼭지점을 결정하고, 상기 결정된 상기 프리미티브의 상기 제2 타일의 상기 하나 이상의 제2 꼭지점을 제외한 상기 제2 타일의 나머지 꼭지점들에 대해서 인-아웃 테스트를 수행하여, 상기 제2 타일의 꼭지점들 중 상기 프리미티브에 포함되는 하나 이상의 제2 꼭지점을 결정하고, 상기 결정된 상기 프리미티브에 포함되는 상기 하나 이상의 제2 꼭지점에 따라, 상기 제2 타일이 상기 프리미티브에 포함되는지 나타내는 상기 프리미티브의 상기 제2 타일에 대한 커버리지 정보를 산출하는 래스터라이저; 및
    상기 커버리지 정보를 저장하는 저장부를 포함하며,
    상기 제2 타일은 상기 제1 타일보다 작으며, 상기 제1 타일에 포함되고, 그리고
    상기 래스터라이저는
    상기 저장부에 저장된 상기 커버리지 정보에 따라, 상기 제2 타일에 대한 래스터라이제이션을 수행하는 그래픽 처리 장치.
  10. 타일 단위로 렌더링하는 그래픽 처리 장치에 있어서,
    제1 타일에 포함되는 프리미티브의 상기 제1 타일에서의 기하학적 정보에 따라, 상기 프리미티브의 제2 타일에 대한 커버리지 정보를 산출하는 래스터라이저; 및
    상기 커버리지 정보를 저장하는 저장부를 포함하며,
    상기 제2 타일은 상기 제1 타일에 포함되는, 상기 제1 타일보다 N(N은 1 이상의 정수)-레벨 하위의 타일이거나, 또는 상기 제1 타일을 포함하는, 상기 제1 타일보다 N-레벨 상위의 타일이고, 그리고
    상기 래스터라이저는
    상기 저장부에 저장된 상기 커버리지 정보에 따라, 상기 제2 타일에 대한 래스터라이제이션을 수행하는 그래픽 처리 장치.
KR1020140014394A 2014-02-07 2014-02-07 그래픽 처리 장치 KR102188543B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140014394A KR102188543B1 (ko) 2014-02-07 2014-02-07 그래픽 처리 장치
US14/617,076 US10019802B2 (en) 2014-02-07 2015-02-09 Graphics processing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140014394A KR102188543B1 (ko) 2014-02-07 2014-02-07 그래픽 처리 장치

Publications (2)

Publication Number Publication Date
KR20150093518A KR20150093518A (ko) 2015-08-18
KR102188543B1 true KR102188543B1 (ko) 2020-12-08

Family

ID=53775377

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140014394A KR102188543B1 (ko) 2014-02-07 2014-02-07 그래픽 처리 장치

Country Status (2)

Country Link
US (1) US10019802B2 (ko)
KR (1) KR102188543B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2526598B (en) 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
CN105574925A (zh) * 2015-12-11 2016-05-11 中国航空工业集团公司西安航空计算技术研究所 一种自适应的光照处理算法动态选择策略
KR102455843B1 (ko) * 2016-03-21 2022-10-19 한국전자통신연구원 영상 재구성 장치 및 방법
CN108122190B (zh) * 2017-12-06 2021-06-01 中国航空工业集团公司西安航空计算技术研究所 一种gpu统一染色阵列顶点染色任务属性数据组装方法
US10861230B2 (en) * 2018-08-01 2020-12-08 Nvidia Corporation System-generated stable barycentric coordinates and direct plane equation access
GB2591803B (en) 2020-02-07 2022-02-23 Imagination Tech Ltd Graphics processing method and system for rendering items of geometry based on their size
GB2591802B (en) 2020-02-07 2022-03-23 Imagination Tech Ltd Graphics processing method and system for rendering items of geometry based on their size

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636218B1 (en) * 2000-06-30 2003-10-21 Intel Corporation Title-based digital differential analyzer rasterization
US7061495B1 (en) 2002-11-18 2006-06-13 Ati Technologies, Inc. Method and apparatus for rasterizer interpolation
US8089486B2 (en) 2005-03-21 2012-01-03 Qualcomm Incorporated Tiled prefetched and cached depth buffer
KR100703709B1 (ko) 2005-06-02 2007-04-06 삼성전자주식회사 그래픽스 처리장치와 처리방법, 및 그 기록 매체
US9070213B2 (en) 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
US8139058B2 (en) 2006-11-03 2012-03-20 Vivante Corporation Hierarchical tile-based rasterization algorithm
KR101517465B1 (ko) 2007-12-07 2015-05-04 삼성전자주식회사 폴리곤의 특징에 적응된 순서로 래스터화하는 래스터화엔진 및 3차원 그래픽스 시스템
JP2011128713A (ja) 2009-12-15 2011-06-30 Toshiba Corp 画像処理装置および画像処理プログラム
KR101683556B1 (ko) 2010-01-06 2016-12-08 삼성전자주식회사 타일 기반의 렌더링 장치 및 렌더링 방법
KR101136737B1 (ko) 2011-10-07 2012-04-19 (주)넥셀 그래픽 처리방법 및 그 장치
GB2497762B (en) 2011-12-20 2018-05-23 Advanced Risc Mach Ltd Intermediate value storage within a graphics processing apparatus
US10096079B2 (en) * 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US9501859B2 (en) * 2013-07-19 2016-11-22 Adobe Systems Incorporated Triangle rasterization

Also Published As

Publication number Publication date
KR20150093518A (ko) 2015-08-18
US20150228111A1 (en) 2015-08-13
US10019802B2 (en) 2018-07-10

Similar Documents

Publication Publication Date Title
KR102188543B1 (ko) 그래픽 처리 장치
CN110084875B (zh) 使用计算着色器作为顶点着色器的前端
US8217962B2 (en) Single-pass bounding box calculation
JP5866457B2 (ja) オーバドロー・トラッカを用いたグラフィック処理におけるダイレクト・レンダリングとビニングとの切替
CN110097625B (zh) 片段着色器执行顶点着色器计算
KR102066659B1 (ko) 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템 및 이의 동작 방법
KR102109130B1 (ko) 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들
EP3180773B1 (en) Bandwidth reduction using texture lookup by adaptive shading
US20150170406A1 (en) Graphic processing unit, system-on-chip including graphic processing unit, and graphic processing system including graphic processing unit
CN105654418B (zh) 图形处理单元和包括其的装置
US9342322B2 (en) System and method for layering using tile-based renderers
US9905036B2 (en) Graphics processing unit for adjusting level-of-detail, method of operating the same, and devices including the same
JP2008097583A (ja) グラフィックスパイプラインにおけるタイルベース精度のラスタライズ
KR102554419B1 (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
US9552618B2 (en) Method for domain shading, and devices operating the same
KR102477265B1 (ko) 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법
US20130063453A1 (en) Reordering graph execution for processing optimization
US20160071317A1 (en) Graphics processing unit (gpu) including subdivider and device including the gpu
JP6441963B2 (ja) グラフィックス処理における加速された複数のポリゴンの単一平面クリッピング
US9460559B2 (en) Method of generating tessellation data and apparatus for performing the same
Guillemot et al. Software rendering methods to display wafer scale integrated circuit dataset

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