KR102197064B1 - Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들 - Google Patents

Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들 Download PDF

Info

Publication number
KR102197064B1
KR102197064B1 KR1020140136583A KR20140136583A KR102197064B1 KR 102197064 B1 KR102197064 B1 KR 102197064B1 KR 1020140136583 A KR1020140136583 A KR 1020140136583A KR 20140136583 A KR20140136583 A KR 20140136583A KR 102197064 B1 KR102197064 B1 KR 102197064B1
Authority
KR
South Korea
Prior art keywords
geometric information
shader
lod
output
processing unit
Prior art date
Application number
KR1020140136583A
Other languages
English (en)
Other versions
KR20160042547A (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 KR1020140136583A priority Critical patent/KR102197064B1/ko
Priority to US14/812,099 priority patent/US9905036B2/en
Priority to DE102015113927.8A priority patent/DE102015113927B4/de
Priority to CN201510651987.8A priority patent/CN105513117B/zh
Publication of KR20160042547A publication Critical patent/KR20160042547A/ko
Application granted granted Critical
Publication of KR102197064B1 publication Critical patent/KR102197064B1/ko

Links

Images

Classifications

    • 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
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail
    • 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/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers

Landscapes

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

Abstract

테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더를 포함하는 그래픽스 프로세싱 유닛에서, 상기 쉐이더는 상기 어느 하나를 위한 기하 정보를 이용하여 LOD(level-of-detail)를 계산하고, 상기 어느 하나를 위한 비-기하 정보를 이용하여 상기 LOD를 조절한다.

Description

LOD를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들{GRAPHICS PROCESSING UNIT FOR ADJUSTING LEVEL-OF-DETAIL, METHOD THEREOF, AND DEVICES HAVING THE SAME}
본 발명의 개념에 따른 실시 예는 그래픽스 프로세싱(graphics processing)에 관한 것으로, 특히 기하 정보(geometry information)를 이용하여 테셀레이션 또는 텍스처링을 위한 LOD(level-of-detail)를 계산하고, 비-기하 정보(non-geometry information)를 이용하여, 계산된 LOD를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들에 관한 것이다.
컴퓨터 그래픽스에서, LOD(level of detail)는 거리에 따라 디테일을 조절하는 것이다. 즉, LOD는 3차원 물체가 시청자(viewer)로부터 멀어져감에 따라 3차원 물체 표현(3D object representation)의 복잡성을 감소시키는 것이다.
LOD 기술들은 그래픽스 파이프라인 스테이지들의 워크로드(예컨대, 꼭지점 변환들(vertex transformations))를 줄여서 렌더링 효율을 증가시킨다.
일반적으로 LOD는 기하 정보만을 이용하여 계산된다. 예컨대, 테셀레이션 (tessellation)에서 LOD는 컨트롤 포인트들(control points)의 깊이 값들(depth values) 또는 곡률(curvature)에 기초하여 계산된다. 텍스처링(texturing)에서 LOD는 이웃 픽셀들의 텍셀들(texels)의 거리들에 기초하여 계산된다.
그러나, 시각적인 모습(visual appearance)은 기하 정보에 기초하여 정의되는 것이 아니다. 따라서, LOD가 적절하게 조절되지 못하면, 렌더링 효율이 좋지 못하고 시각적 품질(visual quality)도 좋지 못하다.
본 발명이 이루고자 하는 기술적인 과제는, 시각적 품질을 유지하면서 렌더링 오버헤드를 줄이기 위해, 기하 정보를 이용하여 테셀레이션 또는 텍스처링을 위한 LOD(level-of-detail)를 계산하고, 계산된 LOD를 비-기하 정보를 이용하여 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들을 제공하는 것이다.
본 발명의 실시 예에 따른 테셀레이션(tessellation)과 텍스처링(texturing) 중에서 어느 하나를 수행할 수 있는 쉐이더(shader)를 포함하는 그래픽스 프로세싱 유닛의 LOD(level-of-detail) 조절 방법은 상기 어느 하나를 위한 기하 정보를 이용하여 LOD를 계산하는 단계와, 상기 어느 하나를 위한 비-기하 정보를 이용하여 상기 LOD를 조절하는 단계를 포함한다.
실시 예에 따라, 상기 기하 정보와 상기 비-기하 정보는 동일한 소스로부터 출력된다. 상기 동일한 소스는 버텍스 쉐이더와 래스터라이저 중에서 어느 하나이다.
다른 실시 예에 따라, 상기 기하 정보는 제1소스로부터 출력되고, 상기 비-기하 정보는 제2소스로부터 출력된다. 상기 제1소스는 버텍스 쉐이더와 래스터라이저 중에서 어느 하나이고, 상기 제2소스는 프레임버퍼 오프젝트와 이전 프레임을 저장하는 프레임 버퍼 중에서 어느 하나이다.
실시 예에 따라, 상기 기하 정보와 상기 비-기하 정보는 동일한 프레임에 대한 정보이다.
다른 실시 예에 따라, 상기 기하 정보와 상기 비-기하 정보 각각은 서로 다른 프레임들 각각에 대한 정보이다. 상기 기하 정보는 현재 프레임에 대한 기하 정보이고, 상기 비-기하 정보는 이전 프레임에 대한 비-기하 정보이다.
상기 비-기하 정보는 패치(patch), 프리미티브(primitive), 및 프레임 (frame) 중에서 어느 하나의 밝기 값이다.
실시 예에 따라, 상기 비-기하 정보가 패치, 프리미티브, 및 프레임 중에서 어느 하나의 밝기 값 일 때, 상기 조절하는 단계는 상기 밝기 값이 제1기준 밝기 값보다 클 때 상기 LOD를 유지하거나 감소시키고, 상기 밝기 값이 상기 제1기준 밝기 값보다 작은 제2기준 밝기 값보다 작을 때 상기 LOD를 유지하거나 감소시키고, 상기 밝기 값이 상기 제1기준 밝기 값과 상기 제2기준 밝기 값의 사이일 때, 상기 LOD를 유지하거나 증가시킨다.
다른 실시 예에 따라, 상기 비-기하 정보는 프레임들 사이에서 이동하는 패치와 프리미티브 중에서 어느 하나의 이동 속도이다.
상기 LOD는 오브젝트(object), 프리미티브(primitive), 패치(patch), 에지 (edge), 버텍스(vertex) 또는 컨트롤 포인트(control point) 마다 할당된다.
본 발명의 실시 예에 따른 LOD 조절 방법은 컴퓨터 프로그램을 작성되고 컴퓨터로 읽을 수 있는 기록 매체에 저장될 수 있다.
본 발명의 실시 예에 따른 테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더를 포함하는 그래픽스 프로세싱 유닛에서, 상기 쉐이더는 상기 어느 하나를 위한 기하 정보를 이용하여 LOD(level-of-detail)를 계산하고, 상기 어느 하나를 위한 비-기하 정보를 이용하여 상기 LOD를 조절한다.
상기 쉐이더는 통일된 쉐이더(unified shader)이다.
실시 예들에 따라, 상기 그래픽스 프로세싱 유닛은 버텍스 쉐이더와, 래스터라이저를 더 포함하고, 상기 기하 정보와 상기 비-기하 정보는 상기 버텍스 쉐이더와 상기 래스터라이저 중에서 어느 하나로부터 출력된다.
실시 예들에 따라, 상기 그래픽스 프로세싱 유닛은 버텍스 쉐이더와, 래스터라이저와, 현재 프레임과 이전 프레임 중에서 어느 하나를 저장하는 버퍼를 더 포함하고, 상기 기하 정보는 상기 버텍스 쉐이더와 상기 래스터라이저 중에서 어느 하나로부터 출력되고, 상기 비-기하 정보는 상기 버퍼로부터 출력되고, 상기 기하 정보는 상기 현재 프레임에 대한 기하 정보이다.
상기 비-기하 정보는 상기 테셀레이션과 상기 텍스처링 중에서 상기 어느 하나를 위한 패치와 프리미티브 중에서 어느 하나의 밝기, 이동 속도, 및 컬러 그레이디언트 중에서 어느 하나이다.
본 발명의 실시 예에 따른 시스템 온 칩(system on chip)은 CPU와, 상기 CPU로부터 출력된 명령에 응답하여, 테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더를 포함하는 그래픽스 프로세싱 유닛을 포함하고, 상기 쉐이더는 상기 어느 하나를 위한 기하 정보를 이용하여 LOD(level-of-detail)를 계산하고, 상기 어느 하나를 위한 비-기하 정보를 이용하여 상기 LOD를 조절한다.
본 발명의 실시 예에 따른 컴퓨팅 장치는 시스템 온 칩과, 상기 시스템 온 칩에 접속된 메모리를 포함하고, 상기 시스템 온 칩은 상기 메모리의 작동을 제어할 수 있는 메모리 컨트롤러와, CPU와, 상기 CPU로부터 출력된 명령에 응답하여, 테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더를 포함하는 그래픽스 프로세싱 유닛을 포함하고, 상기 쉐이더는 상기 어느 하나를 위한 기하 정보를 이용하여 LOD(level-of-detail)를 계산하고, 상기 어느 하나를 위한 비-기하 정보를 이용하여 상기 LOD를 조절한다.
본 발명의 실시 예에 따른 테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더를 포함하는 그래픽스 프로세싱 유닛에서, 상기 쉐이더는 상기 어느 하나를 위한 기하 정보를 이용하여 LOD(level-of-detail)를 계산하고, 상기 어느 하나를 위한 비-기하 정보를 이용하여 상기 LOD를 조절할 수 있는 효과가 있다.
상기 그래픽스 프로세싱 유닛은 상기 비-기하 정보를 이용하여 상기 LOD를 조절할 수 있으므로 시각적 품질을 유지하면서 렌더링 오버헤드를 줄일 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치의 블록도이다.
도 2는 도 1에 도시된 CPU(central processing unit)와 GPU(pgaphics processing unit)의 블록도이다.
도 3은 비-기하 정보를 이용하여 LOD(level-of-detail)를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 일 실시 예를 설명하기 위한 개념도이다.
도 4는 비-기하 정보를 이용하여 LOD를 조절하는 도 1에 도시된 GPU의 작동 방법의 일 실시 예를 설명하기 위한 플로우차트이다.
도 5는 계산된 절대 밝기 값과 절대 기준 밝기 값에 대한 비교 작동을 설명하기 위한 개념도이다.
도 6은 비-기하 정보를 이용하여 LOD를 조절하는 도 1에 도시된 GPU의 작동 방법의 다른 실시 예를 설명하기 위한 플로우차트이다.
도 7은 상대 밝기 값과, 계산된 상대 밝기 값과 상대 기준 밝기 값에 대한 비교 작동을 설명하기 위한 개념도이다.
도 8은 패치 또는 프리미티브의 이동 속도를 이용하여 LOD를 조절하는 방법을 설명하기 위한 개념도이다.
도 9는 패치 또는 프리미티브의 컬러 그레이디언트(color gradient)를 이용하여 LOD를 조절하는 방법을 설명하기 위한 개념도이다.
도 10은 비-기하 정보를 이용하여 LOD를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 다른 실시 예를 설명하기 위한 개념도이다.
도 11은 비-기하 정보를 이용하여 LOD를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 또 다른 실시 예를 설명하기 위한 개념도이다.
도 12는 비-기하 정보를 이용하여 LOD를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 또 다른 실시 예를 설명하기 위한 개념도이다.
도 13은 비-기하 정보를 이용하여 LOD를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 또 다른 실시 예를 설명하기 위한 개념도이다.
도 14는 비-기하 정보를 이용하여 LOD를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 또 다른 실시 예를 설명하기 위한 개념도이다.
2본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치의 블록도이다.
컴퓨팅 장치(100)는 TV, PC(personal computer), 데스크 탑 컴퓨터, 랩탑 컴퓨터, 컴퓨터 워크 스테이션(computer workstation), 태블릿 PC, 비디오 게임 플랫폼(또는 비디오 게임 콘솔), 서버, 또는 휴대용 전자 장치(또는 모바일 컴퓨팅 장치)로 구현될 수 있다.
상기 휴대용 전자 장치는 이동 전화기, 스마트 폰(smart phone), 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), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북(e-book)으로 구현될 수 있다.
컴퓨팅 장치(100)는 2D 또는 3D 그래픽스 데이터를 처리하고 디스플레이할 수 있는 다양한 장치를 포함할 수 있다.
컴퓨팅 장치(100)는 시스템 온 칩(system on chip(SoC); 200), 적어도 하나의 메모리(310-1과 310-2), 및 디스플레이(400)를 포함한다.
SoC(200)는 호스트의 기능을 수행할 수 있다.
즉, SoC(200)는 컴퓨팅 장치(100)의 작동을 전반적으로 제어할 수 있다. 예컨대, SoC(200)는 본 명세서에서 설명된 작동을 수행할 수 있는 집적 회로 (integrated circuit(IC)), 애플리케이션 프로세서(application processor), 또는 모바일(mobile) AP로 대체될 수 있다.
CPU(210), 적어도 하나의 메모리 컨트롤러(220-1과 220-2), 사용자 인터페이스(230), 디스플레이 컨트롤러(240), 및 그래픽스 프로세싱 유닛(graphics processing unit(GPU); 260)는 버스(201)를 통해 서로 통신할 수 있다. 예컨대, 버스(201)는 PCI 버스(Peripheral Component Interconnect Bus), PCI 익스프레스(PCI Express) 버스, AMBA(Advanced High Performance Bus), AHB(Advanced High Performance Bus), APB(Advanced Peripheral Bus), 또는 AXI 버스, 또는 이들의 결합으로 구현될 수 있다.
CPU(210)는 SoC(200)의 작동을 제어할 수 있다.
사용자는, CPU(210)가 하나 또는 그 이상의 애플리케이션들(예컨대, 소프트웨어 애플리케이션들)을 실행할 수 있도록, 입력을 SoC(200)로 제공할 수 있다.
CPU(210)에 의해 실행되는 애플리케이션들은 운영 체계(operating system(OS)), 워드프로세서 애플리케이션, 미디어 플레이어 애플리케이션, 비디오 게임 애플리케이션, 및/또는 그래픽 사용자 인터페이스(graphical user intergace(GUI)) 애플리케이션을 포함할 수 있다.
사용자는 사용자 인터페이스(230)에 접속된 입력 장치(미 도시)를 통해 입력을 SoC(200)로 입력할 수 있다. 예컨대, 상기 입력 장치는 키보드, 마우스, 마이크로폰, 또는 터치 패드로 구현될 수 있다.
또한, CPU(210)에 의해 실행되는 애플리케이션들은 그래픽스 렌더링 지시들 (graphics rendering instructions)을 포함할 수 있다. 상기 그래픽스 렌더링 지시들은 그래픽스 API(application programming interface)에 관련될 수 있다.
그래픽스 API는 Open Graphics Library (OpenGL(R)) API, Open Graphics Library for Embedded Systems (Open GL ES) API, DirectX API, Renderscript API, WebGL API, 또는 Open VG(R) API를 의미한다.
그래픽스 렌더링 지시들을 처리하기 위해, CPU(210)는 그래픽스 렌더링 명령을 버스(201)를 통해 GPU(260)를 전송할 수 있다. 따라서, CPU(260)는, 상기 그래픽스 렌더링 명령에 응답하여, 그래픽스 데이터를 처리(또는 렌더링)할 수 있다.
상기 그래픽스 데이터는 포인트들(points), 라인들(lines), 삼각형들 (triangles), 사변형들(quadrilateral), 패치들(patches), 및/또는 프리미티브들 (primitives)을 포함할 수 있다. 또한, 상기 그래픽스 데이터는 선분들(line segments), 타원 호들(elliptical arcs), 이차 베지어 곡선들(quadratic Bezier curves), 및/또는 입방 베지어 곡선들(cubic Bezier curves)을 포함할 수 있다.
적어도 하나의 메모리 컨트롤러(220-1과 220-2)는, CPU(210) 또는 GPU(260)로부터 출력된 리드 요청(read request)에 응답하여, 적어도 하나의 메모리(310-1과 310-2)에 저장된 데이터(예컨대, 그래픽스 데이터)를 리드하고, 리드된 데이터예컨대, 그래픽스 데이터)를 대응되는 구성(예컨대, 210, 240, 또는 260)으로 전송할 수 있다.
적어도 하나의 메모리 컨트롤러(220-1과 220-2)는, CPU(210) 또는 GPU(260)로부터 출력된 라이트 요청(write request)에 응답하여, 대응되는 구성(예컨대, 210, 230, 또는 240)로부터 출력된 데이터(예컨대, 그래픽스 데이터)를 적어도 하나의 메모리(310-1과 310-2)에 라이트할 수 있다.
도 1에서는 설명의 편의를 위해, 적어도 하나의 메모리 컨트롤러(220-1과 220-2)가 CPU(210) 또는 GPU(260)와 분리된 것으로 도시되어 있으나, 실시 예들에 따라 적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 CPU(210), GPU(260) 또는 적어도 하나의 메모리(310-1과 310-2) 내부에 구현될 수도 있다.
실시 예들에 따라, 제1메모리(310-1)가 휘발성 메모리로 구현되고, 제2메모리(310-2)가 불휘발성 메모리로 구현될 때, 제1메모리 컨트롤러(220-1)는 제1메모리(310-1)와 통신할 수 있는 메모리 컨트롤러로 구현될 수 있고, 제2메모리 컨트롤러(220-2)는 제2메모리(310-2)와 통신할 수 있는 메모리 컨트롤러로 구현될 수 있다.
예컨대, 상기 휘발성 메모리는 RAM(random access memory), SRAM(static RAM), DRAM(dynamic RAM), SDRAM(synchronous DRAM), 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 MRAM), FeRAM(ferroelectric RAM), PRAM(phase change RAM), 또는 RRAM(resistive RAM)으로 구현될 수 있다.
또한, 상기 불휘발성 메모리는 MMC(multimedia card), eMMC(embedded MMC), UFS(universal flash storage), SSD(solid state drive), 또는 USB 플래시 드라이브로 구현될 수 있다.
적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 CPU(210)에 의해 실행가능한 프로그램(또는 애플리케이션) 또는 지시들(instructions)을 저장할 수 있다. 또한, 적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 CPU(210)에 의해 실행되는 프로그램에 의해 사용될 데이터를 저장할 수 있다.
또한, 적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 사용자 애플리케이션과 상기 사용자 애플리케이션에 관련된 그래픽스 데이터를 저장할 수 있다. 또한, 적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 SoC(200)에 포함된 요소들에 의해 사용될 또는 상기 요소들에 의해 생성된 데이터(또는 정보)를 저장할 수 있다.
적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 GPU(260)의 작동에 사용될 데이터 및/또는 GPU(260)의 작동에 의해 생성된 데이터를 저장할 수 있다. 적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 GPU(260)의 프로세싱을 위한 명령 스트림들(command streams)을 저장할 수 있다.
디스플레이 컨트롤러(240)는 CPU(210)에 의해 처리된 데이터 또는 GPU(260)에 의해 처리된 데이터(예컨대, 그래픽스 데이터)를 디스플레이(400)로 전송할 수 있다.
디스플레이(400)는 모니터, TV 모니터, 프로젝션 장치(projection device), TFT-LCD(thin film transistor-liquid crystal display), LED(light emitting diode) 디스플레이, OLED(organic LED) 디스플레이, AMOLED(active-matrix OLED) 디스플레이, 또는 플렉시블(flexible) 디스플레이로 구현될 수 있다.
실시 예에 따라, 디스플레이(400)는 컴퓨팅 장치(100)에 집적될 수 있다. 예컨대, 디스플레이(400)는 휴대용 전자 장치의 스크린일 수 있고, 무선 통신 링크 또는 유선 통신 링크를 통해 컴퓨팅 장치(100)에 접속되는 독립형 장치(stand-alone) 장치일 수 있다.
다른 실시 예에 따라, 디스플레이(400)는 케이블 또는 유선 링크를 통해 PC에 접속된 컴퓨터 모니터일 수 있다.
GPU(260)는 CPU(210)로부터 출력된 명령들(commands)을 수신하고, 수신된 명령들을 실행할 수 있다. GPU(260)에 의해 실행되는 명령은 그래픽스 명령, 메모리 전송 명령, 커널 실행 명령, 비-기하 정보를 이용하여 LOD(level-of-detail)를 조절할 수 있는 테셀레이션 명령, 또는 비-기하 정보를 이용하여 LOD를 조절할 수 있는 텍스처링 명령을 포함할 수 있다.
GPU(260)는 그래픽스 데이터를 레더(render)하기 위한 그래픽스 작동들을 수행할 수 있다.
CPU(210)에서 실행 중인 애플리케이션이 그래픽스 프로세싱을 요구할 때, CPU(210)는 그래픽스 데이터를 디스플레이(400)에서 랜더링하기 위해 상기 그래픽스 데이터를 GPU(260)로 전송하고, 그래픽스 명령을 GPU(260)로 전송할 수 있다.
상기 그래픽스 명령은 비-기하 정보를 이용하여 LOD를 조절할 수 있는 테셀레이션 명령, 또는 비-기하 정보를 이용하여 LOD를 조절할 수 있는 테스처링 명령을 포함할 수 있다. 상기 그래픽스 데이터는 버텍스(vertex) 데이터, 텍스처 (texture) 데이터, 또는 표면(surface) 데이터를 포함할 수 있다.
표면은 파라메트릭(parametric) 표면, 서브디비젼(subdivision) 표면, 트라이앵글 메시(triangle mesh) 또는 곡선(curve)을 포함할 수 있다.
실시 예들에 따라, CPU(210)는 그래픽스 명령과 그래픽스 데이터를 GPU(260)로 전송할 수 있다. 다른 실시 예에 따라, CPU(210)가 그래픽스 명령과 그래픽스 데이터를 적어도 하나의 메모리(300-1과 300-2)에 라이트하면, GPU(260)는 적어도 하나의 메모리(300-1과 300-2)에 라이트된 상기 그래픽스 명령과 상기 그래픽스 데이터를 리드할 수 있다.
GPU(260)는 GPU 캐시(290)를 직접 액세스할 수 있다. 따라서, GPU(260)는 버스(201)를 통하지 않고 GPU 캐시(290)로 그래픽스 데이터를 라이트하거나 GPU 캐시(290)로부터 그래픽스 데이터를 리드할 수 있다.
도 1에서는 GPU(260)와 GPU 캐시(290)가 서로 분리되어 있으나, 실시 예들에 따라, GPU(260)는 GPU 캐시(290)를 포함할 수 있다. 예컨대, GPU 캐시(290)는 DRAM 또는 SRAM으로 구현될 수 있다.
CPU(210) 또는 GPU(260)는 적어도 하나의 메모리(310-1과 310-2)에 포함된 프레임 버퍼에 처리된(또는 레더링된) 그래픽스 데이터를 저장할 수 있다.
도 2는 도 1에 도시된 CPU(central processing unit)와 GPU(pgaphics processing unit)의 블록도이다.
도 2를 참조하면, CPU(210)와 GPU(260)는 버스(201)를 통해 통신할 수 있다.
실시 예들에 따라, CPU(210)와 GPU(260)는 마더보드(motherboard) 또는 SoC에 집적될 수 있다. 다른 실시 예들에 따라, GPU(260)와 CPU(210)는 마더보드에 설치된 그래픽 카드에 구현될 수 있다.
CPU(210)는 애플리케이션(예컨대, 소프트웨어 애플리케이션; 211), 그래픽스 API(213), GPU 드라이버(215), 및 운영 체계(217)를 포함할 수 있다. 즉, CPU(210)는 각 구성(211, 213, 215, 및 217)을 실행할 수 있다.
애플리케이션(211)은 그래픽스 데이터를 디스플레이하기 위한 지시들 및/또는 GPU(260)에 수행될 지시들을 포함할 수 있다.
애플리케이션(211)은 지시들을 그래픽스 API(213)로 출력할 수 있다. 그래픽스 API(213)는 애플리케이션(211)으로부터 수신된 상기 지시들을 GPU 드라이버 (215)에 의해 사용될 포맷으로 바꿀 수 있다.
GPU 드라이버(215)는, 그래픽스 API(213)를 통해, 상기 지시들을 수신하고, GPU(260)에 의해 상기 지시들이 수행될 수 있도록 GPU(260)의 작동을 제어할 수 있다.
실시 예들에 따라, GPU 드라이버(215)는 운영 체계(217)를 통해 명령들 (commands)을 GPU(260)로 전송하거나, 상기 명령들을 GPU(260)에 의해 액세스될 수 있는 적어도 하나의 메모리(310-1과 310-2)로 전송할 수 있다.
GPU(260)는 명령 디코더(또는 명령 엔진; 251)와 하나 또는 그 이상의 프로세싱 유닛들(253)을 포함할 수 있다.
명령 디코더(251)는 CPU(210)로부터 전송된 명령 또는 적어도 하나의 메모리 (310-1과 310-2)를 통해 수신된 명령을 수신하고, GPU(260)가 상기 명령을 실행하도록 GPU(260)를 제어한다.
프로세싱 유닛들(253) 각각은 프로그램가능한 프로세싱 유닛 또는 고정-기능 (fixed-function) 프로세싱 유닛일 수 있다.
예컨대, 프로그램가능한 프로세싱 유닛은 하나 또는 그 이상의 쉐이더 프로그램들을 실행할 수 있는 프로그램가능한 쉐이더 유닛일 수 있다. 상기 프로그램가능한 쉐이더 유닛은 CPU(210)로부터 GPU(260)로 다운로드될 수 있다.
프로세싱 유닛들(253)에서 실행되는 프로그램가능한 쉐이더 유닛들은 버텍스 쉐이더 유닛, 헐 쉐이더 유닛, 도메인 쉐이더 유닛, 지오메트리 쉐이더 유닛, 픽셀 쉐이더 유닛(또는 프래그먼트 쉐이더 유닛), 및/또는 통합된 쉐이더 유닛(unified shader 유닛)을 포함할 수 있다.
고정-기능 프로세싱 유닛은 하드웨어를 포함할 수 있다. 상기 하드웨어는 특정 기능들을 수행하기 위해 하드-와이어드(hard-wired)되어 있다. 예컨대, 프로세싱 유닛들(253)에서 고정-기능 프로세싱 유닛은 래스터 작동들을 수행하는 프로세싱 유닛들을 포함할 수 있다.
실시 예들에 따라, 프로세싱 유닛들(253)은 3D 그래픽스 파이프라인을 형성할 수 있다. 예컨대, 상기 3D 그래픽스 파이프라인은 OpenGL(R) API, OpenGL ES API, DirectX API, Renderscript API, WebGL API, 또는 Open VG(R) API에 부응하는 3D 그래픽스 파이프라인일 수 있다.
도 3은 비-기하 정보를 이용하여 LOD(level-of-detail)를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 일 실시 예를 설명하기 위한 개념도이다.
도 3을 참조하면, 그래픽스 파이프라인(260A)은 Microsoft(R) DirectX 11 그래픽스 파이프라인에 해당할 수 있다.
그래픽스 파이프라인(260A)에 포함된 테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더는 상기 어느 하나를 위한 기하 정보(VGEO)를 이용하여 LOD(level-of detail)을 계산하고, 상기 어느 하나를 위한 비-기하 정보(VNGEO)를 이용하여, 계산된 LOD를 조절할 수 있다.
그래픽스 파이프라인(260A)은 도 2의 프로세싱 유닛들(253)을 포함할 수 있는 복수의 프로세싱 스테이지들과, 리소스 블록(263)을 포함할 수 있다.
상기 복수의 프로세싱 스테이지들(또는 프로세싱 유닛들(253))은 입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3A), 테셀레이터(261-4), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 래스터라이저(261-7), 픽셀 쉐이더 (261-8), 및 출력 머저(261-9)를 포함할 수 있다.
헐 쉐이더(261-3A), 테셀레이터(261-4), 및 도메인 쉐이더(261-5)는 그래픽스 파이프라인(260A)의 테셀레이션 스테이지들을 형성한다. 따라서, 상기 테셀레이션 스테이지들이 테셀레이션(또는 테셀레이션 작동)을 수행할 수 있다. 또한, 픽셀 쉐이더(261-8)는 프래그먼트 쉐이더(fragment shader)로 불릴 수 있다.
예컨대, 입력 어셈블러(261-1), 테셀레이터(261-4), 래스터라이저(261-7), 및 출력 머저(261-9)는 고정-기능 스테이지들이고, 버텍스 쉐이더(261-2), 헐 쉐이더(261-3A), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 및 픽셀 쉐이더 (261-8)는 프로그램가능한 스테이지들이다.
상기 프로그램가능한 스테이지들 각각은 특별한 종류의 쉐이더 프로그램을 실행할수 있는 구조는 갖는다. 예컨대, 버텍스 쉐이더(261-2)는 버텍스 쉐이더 프로그램을 실행할 수 있고, 헐 쉐이더(261-3A)는 헐 쉐이더 프로그램을 실행할 수 있고, 도메인 쉐이더(261-5)는 도메인 쉐이더 프로그램을 실행할 수 있고, 지오메트리 쉐이더(261-6)는 지오메트리 쉐이더 프로그램을 실행할 수 있고, 픽셀 쉐이더(261-8)는 픽셀 쉐이더 프로그램을 실행할 수 있다. 예컨대, 각 쉐이더 프로그램은 적절한 타이밍에서 GPU(260)의 쉐이더 유닛에서 실행될 수 있다.
실시 예들에 따라, 서로 다른 종류의 쉐이더 프로그램들 각각은 GPU(260)의 공동 쉐이더(또는 공통 쉐이더 유닛)에서 실행될 수 있다. 예컨대, 공동 쉐이더는 통합된 쉐이더를 의미할 수 있다.
다른 실시 예들에 따라, 하나 또는 그 이상의 전용(dedicated) 쉐이더들은 하나 또는 그 이상의 특별한 종류들의 쉐이더 프로그램들을 전용으로 실행할 수 있다.
입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3A), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 픽셀 쉐이더(261-8), 및 출력 머저 (261-9)는 리소스 블록(263)과 통신할 수 있다.
따라서, 입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3A), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 픽셀 쉐이더(261-8), 및 출력 머저(261-9)는 리소스 블록(263)으로부터 입력 데이터를 검색(retrieve)하거나 수신할 수 있다.
지오메트리 쉐이더(261-6)와 출력 머저(261-9)는 출력 데이터를 리소스 블록 (263)에 라이트할 수 있다.
도 3에 도시된 각 구성(261-1~261-9)과 리소스 블록(263) 사이의 통신은 설명을 위한 실시 예에 불과하므로 다양한 변경들이 가능하다.
실시 예들에 따라, 입력 어셈블러(261-1)는 적어도 하나의 메모리(310-1과 310-2)의 버텍스 버퍼(미 도시)로부터 복수의 꼭지점들(vertices)을 획득하고, 획득된 복수의 꼭지점들을 처리한다.
다른 실시 예들에 따라, 입력 어셈블러(261-1)는 처리될 복수의 꼭지점들을 직접 버텍스 쉐이더(261-2)로 전송할 수 있다. 또 다른 실시 예들에 따라, 입력 어셈블러(261-1)는 처리를 위한 복수의 꼭지점들을 상기 버텍스 버퍼로부터 검색하도록 버텍스 쉐이더(261-2)에게 지시할 수 있다.
버텍스 쉐이더(261-2)는 입력 어셈블러(261-1)로부터 출력된 복수의 꼭지점들 및/또는 리소스 블록(263)으로부터 출력된 복수의 꼭지점들을 처리하고, 처리된 복수의 꼭지점들 각각에 대한 출력 꼭지점들 각각을 생성할 수 있다.
버텍스 쉐이더(261-2)로 입력되는 꼭지점들은 입력 컨트롤 포인트들(input control points)이라 하고, 버텍스 쉐이더(261-2)에 의해 생성된 출력 꼭지점들은 출력 컨트롤 포인트들(output control points)이라 한다.
버텍스 쉐이더(261-2)는 출력 꼭지점에 대한 하나 또는 그 이상의 출력 속성들을 생성할 수 있다. 버텍스 쉐이더(261-2)로 입력되는 꼭지점은 하나 또는 그 이상의 입력 속성들을 포함할 수 있다. 상기 출력 속성들과 상기 입력 속성들은 동일하지 않을 수 있다.
예컨대, 버텍스 쉐이더(261-2)는 입력 속성들에 새로운 속성들을 더하거나 빼서 출력 속성들을 생성할 수 있다.
상기 입력 속성들은 꼭지점 정보(예컨대, 좌표 정보, 법선 벡터, 텍스처 정보, 및/또는 컬러 정보)를 포함할 수 있다.
상기 출력 속성들은 기하 정보(VGEO)와 비-기하 정보(VNGEO)를 포함할 수 있다. 실시 예들에 따라, 기하 정보(VGEO)는 버텍스 쉐이더(261-2)의 출력 컨트롤 포인트들에 대한 깊이(depth) 값들 또는 곡률(curvature)일 수 있다. 실시 예들에 따라, 비-기하 정보(VNGEO)는 버텍스 쉐이더(261-2)의 출력 컨트롤 포인트들에 대한 밝기 값들, 패치에 대한 밝기 값들, 프리미티브에 대한 밝기 값들, 또는 프레임에 대한 밝기 값들일 수 있다. 실시 예들에 따라 비-기하 정보(VNGEO)는 그림자 (shadow) 정보를 포함할 수 있다.
헐 쉐이더(261-3A)는 기하 정보(VGEO)를 이용하여 LOD(level-of detail)을 계산하고, 계산된 LOD를 비-기하 정보(VNGEO)를 이용하여 조절할 수 있다. 상기 LOD는 테셀레이션 팩터들을 의미할 수 있다. 이때, 헐 쉐이더(261-3A)는 기하 정보(VGEO)와 비-기하 정보(VNGEO)를 출력하는 소스의 기능을 수행할 수 있다.
도 4는 비-기하 정보를 이용하여 LOD를 조절하는 도 1에 도시된 GPU의 작동 방법의 일 실시 예를 설명하기 위한 플로우차트이고, 도 5는 계산된 절대 밝기 값과 절대 기준 밝기 값에 대한 비교 작동을 설명하기 위한 개념도이다.
도 3부터 도 5를 참조하면, 헐 쉐이더(261-3A)는 버텍스 쉐이더(261-2)의 출력 속성들(예컨대, 정보)을 수신하고(S110), 수신된 정보가 꼭지점들(예컨대, 버텍스 쉐이더(261-2)의 출력 컨트롤 포인트들)에 대한 기하 정보(VGEO)인지를 판단한다(S120). 수신된 정보가 기하 정보(VGEO)일 때, 헐 쉐이더(261-3A)는 기하 정보 (VGEO)를 이용하여 LOD를 계산한다(S130).
헐 쉐이더(261-3A)는 오브젝트(object), 프리미티브(primitive), 패치 (patch), 에지(edge), 버텍스(vertex) 또는 컨트롤 포인트(control point) 마다 LOD를 계산하고 할당할 수 있다. 즉, 헐 쉐이더(261-3A)는 오브젝트, 프리미티브, 패치, 에지, 버텍스 또는 컨트롤 포인트마다 테셀레이션 팩터를 할당할 수 있다.
S130이 수행된 후, 버텍스 쉐이더(261-2)로부터 수신된 정보가 꼭지점들(예컨대, 버텍스 쉐이더(261-2)의 출력 컨트롤 포인트들)에 대한 비-기하 정보(VNGEO)일 때, 헐 쉐이더(261-3A)는, 비-기하 정보(VNGEO)를 이용하여, 버텍스 쉐이더 (261-2)의 출력 컨트롤 포인트들에 의해 정의된 패치, 프리미티브, 또는 프레임의 절대 밝기 값(ABS_B)을 계산한다(S140). 예컨대, 패치 또는 프리미티브는 세 개의 꼭지점들 또는 네 개의 꼭지점들을 포함할 수 있다.
헐 쉐이더(261-3A)는 계산된 절대 밝기 값(ABS_B)이 제1 절대 기준 밝기 값 (REFB)보다 큰지 또는 계산된 밝기 값(ABS_B)이 제2절대 기준 밝기 값(REFD)보다 작은지를 판단한다(S150).
도 5의 경우 1(Case1)과 같이, 계산된 절대 밝기 값(ABS_B=ABS_B1)이 제1 절대 기준 밝기 값(REFB)보다 클 때(S150), 패치(또는 프리미티브)는 불명확 (indefinite)하게 보이므로, 헐 쉐이더(261-3A)는 상기 패치(또는, 상기 프리미티브)의 LOD를 유지하거나 감소시키기 위한 조절 값을 계산한다(S155).
도 5의 경우 3(Case3)과 같이, 계산된 절대 밝기 값(ABS_B=ABS_B3)이 제2 절대 기준 밝기 값(REFD)보다 작을 때(S150), 패치(또는 프리미티브)는 불명확하게 보이므로, 헐 쉐이더(261-3A)는 상기 패치(또는 상기 프리미티브)의 LOD를 유지하거나 감소시키기 위한 조절 값를 계산한다(S155). 예컨대, 절대 제2기준 밝기 값(REFD)은 절대 제1기준 밝기 값(REFB)보다 작다.
그러나, 도 5의 경우 2(Case2)와 같이, 계산된 절대 밝기 값(ABS_B=ABS_B2)이 제1 절대 기준 밝기 값(REFB)과 제2절대 기준 밝기 값(REFD) 사이에 존재할 때 (S1500, 패치(또는 프리미티브)는 명확(definite)하게 보이므로, 헐 쉐이더(261-3A)는 상기 패치(또는 프리미티브)의 LOD를 유지하거나 증가시키기 위한 조절 값을 계산한다 (S156).
헐 쉐이더(261-3A)는 S155 또는 S156을 통해 계산된 조절 값을 이용하여 S130에서 계산된 LOD를 조절할 수 있다(S160). 예컨대, 헐 쉐이더(261-3A)는 계산된 LOD에 계산된 조절 값을 더하거나 빼서 상기 계산된 LOD를 조절할 수 있다. 여기서, 상기 조절은 감소, 유지, 또는 증가를 의미할 수 있다.
즉, 헐 쉐이더(261-3A)는 오브젝트, 프리미티브, 패치, 에지, 버텍스 또는 컨트롤 포인트마다 할당된 테셀레이션 팩터를 감소시키거나 증가시킬 수 있다. 헐 쉐이더(261-3A)는 컨트롤 포인트들과 조절된 LOD(즉, 하나 또는 그 이상의 테셀레이션 팩터들)를 테셀레이터(261-4)로 전송할 수 있다. 실시 예들에 따라, 상기 컨트롤 포인트들은 버텍스 쉐이더(261-2)의 출력 컨트롤 포인트들과 동일하거나 동일하지 않을 수 있다.
LOD는 하나 또는 그 이상의 테셀레이션 팩터들을 의미하는 것으로서, 상기 LOD(또는 하나 또는 그 이상의 테셀레이션 팩터들)는 정수(integer) 또는 부동 소수점수(floating-point number)일 수 있다.
실시 예들에 따라, 제1 절대 기준 밝기 값(REFB)과 제2 절대 기준 밝기 값 (REFD) 각각은 사용자(user)에 의해 조절될 수 있고, 런-타임(run-time)에서 프로그램(예컨대, 헐 쉐이더 프로그램)에 의해 계산될 수 있다.
상술한 바와 같이, 상기 LOD는 오브젝트, 프리미티브, 패치, 에지, 버텍스 또는 컨트롤 포인트별로 계산되거나, 할당되거나 또는 조절될 수 있다.
도 6은 비-기하 정보를 이용하여 LOD를 조절하는 도 1에 도시된 GPU의 작동 방법의 다른 실시 예를 설명하기 위한 플로우차트이고, 도 7은 상대 밝기 값과, 계산된 상대 밝기 값과 상대 기준 밝기 값에 대한 비교 작동을 설명하기 위한 개념도이다.
헐 쉐이더(261-3A)에서 사용될 수 있는 밝기 값은 절대 밝기 값 및/또는 상대 밝기 값이다.
도 3부터 도 7을 참조하면, 헐 쉐이더(261-3A)는 절대 밝기 값과 상대 밝기 값을 이용하여 LOD를 조절할 수 있다.
헐 쉐이더(261-3A)는 버텍스 쉐이더(261-2)의 출력 속성들(예컨대, 정보)을 수신하고(S110), 수신된 정보가 꼭지점들(예컨대, 버텍스 쉐이더(261-2)의 출력 컨트롤 포인트들)에 대한 기하 정보(VGEO)인지를 판단한다(S120). 수신된 정보가 기하 정보(VGEO)일 때, 헐 쉐이더(261-3A)는 기하 정보(VGEO)를 이용하여 LOD를 계산한다(S130).
헐 쉐이더(261-3A)는 오브젝트(object), 프리미티브(primitive), 패치 (patch), 에지(edge), 버텍스(vertex) 또는 컨트롤 포인트(control point) 마다 LOD를 계산하고 할당할 수 있다. 즉, 헐 쉐이더(261-3A)는 오브젝트, 프리미티브, 패치, 에지, 버텍스 또는 컨트롤 포인트마다 테셀레이션 팩터를 할당할 수 있다.
S130이 수행된 후, 버텍스 쉐이더(261-2)로부터 수신된 정보가 꼭지점들(예컨대, 버텍스 쉐이더(261-2)의 출력 컨트롤 포인트들)에 대한 비-기하 정보(VNGEO)일 때, 헐 쉐이더(261-3A)는, 비-기하 정보(VNGEO)를 이용하여, 버텍스 쉐이더 (261-2)의 출력 컨트롤 포인트들에 의해 정의된 패치, 프리미티브, 또는 프레임의 절대 밝기 값(ABS_B)을 계산한다(S140).
도 5의 경우 1(Case1)과 같이 계산된 밝기 값(ABS_B=ABS_B1)이 제1 절대 기준 밝기 값(REFB)보다 클 때(S150), 또는 경우 3(Case3)과 같이 계산된 밝기 값 (ABS_B=ABS_B3)이 제2 절대 기준 밝기 값(REFD)보다 작을 때(S150), 헐 쉐이더(261-3A)는 비-기하 정보 (VNGEO)를 이용하여 버텍스 쉐이더(261-2)의 출력 컨트롤 포인트들에 의해 정의된 패치, 프리미티브, 또는 프레임의 상대 밝기 값(RBR)을 계산한다(S151).
상대 밝기 값을 계산하는 단계의 수행 여부는 제1절대 밝기 값과 제2절대 밝기 값의 비교 결과에 따라 결정될 수 있다.
예컨대, 도 7에 도시된 바와 같이, 이미지(DR)에서 제1패치(또는 제1프리미티브; DR1)가 LOD 조절 대상이고 제2패치(또는 제2프리미티브; DR2)가 제1패치 (DR1)에 인접할 할 때, 경우 4(Case4)과 같이 계산된 상대 밝기 값(RBR=RBR1)이 제1 상대 기준 밝기 값(RREFB)보다 클 때(S153), 제1패치(DR1)는 불명확하게 보이므로, 헐 쉐이더(261-3A)는 제1패치(DR1)의 LOD를 유지하거나 감소시키기 위한 조절 값을 계산한다(S155).
경우 6(Case6)과 같이, 계산된 상대 밝기 값(RBR=RBR3)이 제2 상대 기준 밝기 값(RREFD)보다 작을 때(S153), 제1패치(DR1)는 불명확하게 보이므로, 헐 쉐이더 (261-3A)는 제1패치(DR1)의 LOD를 유지하거나 감소시키기 위한 조절 값을 계산한다(S155).
도 7에 도시된 바와 같이, 제2 상대 기준 밝기 값(RREFD)은 제1 상대 기준 밝기 값(RREFB)보다 작다. 실시 예들에 따라, 제1 상대 기준 밝기 값(RREFB)은 제1 절대 기준 밝기 값(REFB)보다 높게 또는 낮게 설정될 수 있고, 제2 상대 기준 밝기 값(RREFD)은 제2 절대 기준 밝기 값(REFD)보다 높게 또는 낮게 설정될 수 있다.
그러나, 경우 5(Case5)와 같이, 계산된 상대 밝기 값(RBR=RBR2)이 제1 상대 기준 밝기 값(RREFB)과 제2 상대 기준 밝기 값(RREFD) 사이에 존재할 때(S153), 제1패치(DR1)는 명확하게 보이므로, 헐 쉐이더(261-3A)는 제1패치(DR1)의 LOD를 유지하거나 증가시키기 위한 조절 값을 계산한다(S156).
헐 쉐이더(261-3A)는 S155 또는 S156을 통해 계산된 조절 값을 이용하여 S130에서 계산된 LOD를 조절할 수 있다(S160). 예컨대, 헐 쉐이더(261-3A)는 계산된 LOD에 계산된 조절 값을 더하거나 빼서 상기 계산된 LOD를 조절할 수 있다.
헐 쉐이더(261-3A)는 오브젝트, 프리미티브, 패치, 에지, 버텍스 또는 컨트롤 포인트마다 할당된 테셀레이션 팩터를 감소시키거나 증가시킬 수 있다. 헐 쉐이더(261-3A)는 컨트롤 포인트들과 조절된 LOD(즉, 하나 또는 그 이상의 테셀레이션 팩터들)를 테셀레이터(261-4)로 전송할 수 있다. 실시 예들에 따라, 상기 컨트롤 포인트들은 버텍스 쉐이더(261-2)의 출력 컨트롤 포인트들과 동일하거나 동일하지 않을 수 있다.
LOD는 하나 또는 그 이상의 테셀레이션 팩터들을 의미하는 것으로서, 상기 LOD(또는 하나 또는 그 이상의 테셀레이션 팩터들)는 정수(integer) 또는 부동 소수점수(floating-point number)일 수 있다.
실시 예들에 따라, 제1 상대 기준 밝기 값(RREFB)과 제2 상대 기준 밝기 값 (RREFD) 각각은 사용자에 의해 조절될 수 있고, 런-타임(run-time)에서 프로그램(예컨대, 헐 쉐이더 프로그램)에 의해 계산될 수 있다.
상술한 바와 같이, 상기 LOD는 오브젝트, 프리미티브, 패치, 에지, 버텍스 또는 컨트롤 포인트별로 계산되거나, 할당되거나 또는 조절될 수 있다.
도 8은 패치 또는 프리미티브의 이동 속도를 이용하여 LOD를 조절하는 방법을 설명하기 위한 개념도이다.
도 3과 도 8을 참조하면, 헐 쉐이더(261-3A)는 패치, 프리미티브, 또는 프레임의 밝기 값 이외에 패치 또는 프리미티브의 이동 속도 또는 이동(movement)을 이용하여 LOD를 조절할 수 있다. 상기 이동 속도 또는 상기 이동은 비-기하 정보의 예이다.
N-번째 프레임(PF1)과 (N+1)-번째 프레임(CF1) 사이에서, 동일한 패치(또는 프리미티브)가 중앙에 위치하고 천천히 움직일 때, 시청자(viewer)는 상기 패치의 화질(image quality)에 집중하므로, 헐 쉐이더(261-3A)는 기하 정보(VGEO)를 이용하여 계산된 상기 패치에 대한 LOD를 유지하거나 증가시킬 수 있다.
N-번째 프레임(PF1)의 패치(또는 프리미티브; PR1)는 이동 전 패치(또는 프리미티브)를 나타내고, (N+1)-번째 프레임(CF1)의 패치(또는 프리미티브; PR2)는 이동 후 패치(또는 프리미티브)를 나타낸다. 예컨대, 각 패치(또는 각 프리미티브; PR1과 PR2)는 동일한 패치(또는 프리미티브)이다.
도 3의 헐 쉐이더(261-3A)는 버텍스 쉐이더(261-2)로부터 출력된 기하 정보 (VGEO)를 이용하여 LOD를 계산하고, 버텍스 쉐이더(261-2)로부터 출력된 비-기하 정보(VNGEO), 즉 프레임들 사이에서 이동하는 패치 또는 프리미티브의 이동 속도 또는 이동을 이용하여 상기 LOD를 조절하고, 조절된 LOD를 테셀레이터(261-4)로 출력할 수 있다.
도 9는 패치 또는 프리미티브의 컬러 변화도(color gradient)를 이용하여 LOD를 조절하는 방법을 설명하기 위한 개념도이다.
도 3과 도 9를 참조하면, 헐 쉐이더(261-3A)는 패치, 프리미티브, 또는 프레임의 밝기 값 이외에 패치 또는 프리미티브의 컬러 변화도를 이용하여 LOD를 조절할 수 있다.
N-번째 프레임(PF2)에 포함된 패치 또는 프리미티브의 제1컬러 값들(CV1)과 (N+1)-번째 프레임(CF2)에 포함된 패치 또는 프리미티브의 제2컬러 값들(CV2)이 거의 동일할 때, 즉, 컬러 변화도가 아주 낮을 때, 헐 쉐이더(261-3A)는 기하 정보 (VGEO)에 기초하여 계산된 LOD를 유지하거나 증가시킨다.
즉, 헐 쉐이더(261-3A)는 버텍스 쉐이더(261-2)로부터 출력된 기하 정보 (VGEO)를 이용하여 LOD를 계산하고, 버텍스 쉐이더(261-2)로부터 출력된 비-기하 정보(VNGEO), 즉 프레임들 사이의 패치 또는 프리미티브의 컬러 그레이디언트를 이용하여 상기 LOD를 조절할 수 있다.
상술한 바와 같이, 헐 쉐이더(261-3A)는 버텍스 쉐이더(261-2)로부터 출력된 비-기하 정보(VNGEO)를 이용하여 LOD를 조절하고, 조절된 LOD와 컨트롤 포인트들을 테셀레이터(261-4)로 전송할 수 있다. 상술한 바와 같이, 상기 컨트롤 포인트들은 버텍스 쉐이더(261-2)의 출력 컨트롤 포인트들과 동일하거나 동일하지 않을 수 있다.
헐 쉐이더(261-3A)는 상기 컨트롤 포인트들과, 패치 방정식(patch equation)에 관련된 값들을 도메인 쉐이더(261-5)로 전송할 수 있다.
예컨대, 상기 패치 방정식은 곡선(curve) 방정식 또는 표면(surface) 방정식일 수 있다. 예컨대, 상기 곡선 방정식은 에르미트 곡선(Hermite curve) 방정식, 베지어 곡선(Bezier curve) 방정식, 넙스 곡선(NURBS curve) 방정식, 또는 B-스플라인 곡선(B-spline curve) 방정식일 수 있다. 상기 패치 방정식에 관련된 값들은 상기 패치 방정식의 계수들(coefficients)일 수 있다.
테셀레이터(261-4)는, 헐 쉐이더(261-3A)로부터 전송된 조절된 LOD(예컨대, 조절된 테셀레이션 팩터들)과 컨트롤 포인트들을 이용하여, 테셀레이션 작동을 수행하고, 테셀레이트된 컨트롤 포인트들(또는 도메인 좌표들(domain coordinates))을 도메인 쉐이더(261-5)로 전송할 수 있다.
예컨대, 테셀레이터(261-4)는 헐 쉐이더(261-3A)로부터 수신된 컨트롤 포인트들에 대한 도메인 좌표들을 결정하고, 결정된 도메인 좌표들을 도메인 쉐이더 (261-5)로 출력하고, 결정된 도메인 좌표들에 관련된 그래픽 특성들(graphical features)을 지시하는 정보(예컨대, 토폴로지(topology) 정보)를 도메인 쉐이더 (261-5)로 출력한다.
도메인 쉐이더(261-5)는 테셀레이터(261-4)에 의해 결정된 도메인 좌표들에 대한 파라메트릭 방정식들(parametric equations)을 평가하고, 평가 결과에 따라 꼭지점 좌표들(vertex coordinates)을 출력할 수 있다.
예컨대, 도메인 쉐이더(261-5)는 테셀레이터(261-4)로부터 도메인 좌표들과 그래픽 특성들을 지시하는 정보를 수신하고, 헐 쉐이더(261-3A)로부터 컨트롤 포인트들과 패치 방정식에 관련된 값들을 수신하고, 이러한 입력들을 이용하여 꼭지점 좌표들을 생성하고, 상기 꼭지점 좌표들에 관련된 그래픽 특성들을 지시하는 정보를 생성할 수 있다.
지오메트리 쉐이더(261-6)는 도메인 쉐이더(261-5)로부터 출력된 도메인 좌표들과 그래픽 특성들을 지시하는 정보를 수신하고, 이들을 이용하여 복수의 그래픽스 프리미티브들을 생성할 수 있다. 여기서, 프리미티브들은 점들, 라인들, 및/또는 삼각형들을 포함할 수 있다.
실시 예들에 따라, 지오메트리 쉐이더(261-6)는 도메인 쉐이더(261-5)로부터 테셀레이트된 선분들을 수신하고, 수신된 테셀레이트된 선분들에 기초하여 복수의 삼각형 프리미티브들을 생성할 수 있다.
다른 실시 예들에 따라, 지오메트리 쉐이더(261-6)는 도메인 쉐이더(261-5)로부터 테셀레이트된 선분들 각각에 해당하는 두 개의 꼭지점 좌표들을 수신하고, 하나의 삼각형 프리미티브에 해당하는 세 개의 꼭지점 좌표들의 세트를 생성할 수 있다.
래스터라이저(261-7)는 지오메트리 쉐이더(261-6)로부터 복수의 그래픽스 프리미티브들을 수신하고, 수신된 복수의 그래픽스 프리미티브들을 복수의 프래그먼트들로 변환할 수 있다. 예컨대, 래스터라이저(261-7)는 삼각형 프리미티브에 해당하는 세 개의 꼭지점 좌표들을 복수의 프래그먼트들로 변환할 수 있다.
래스터라이저(261-7)는 복수의 프래그먼트들에 대한 기하 정보와 비-기하 정보를 생성할 수 있다.
픽셀 쉐이더(261-8)는 래스터라이저(261-7)로부터 복수의 프래그먼트들을 수신하고, 픽셀 쉐이더 프로그램에 따라, 쉐이드된(shades) 복수의 픽셀들을 생성할 수 있다.
출력 머저(261-9)는 픽셀 쉐이더(261-8)로부터 수신된 쉐이드된 복수의 픽셀들에 대한 픽셀 데이터와 렌더(render) 타겟(예컨대, 프레임 버퍼 또는 스텐실 (stencil) 버퍼)이 이미 저장된 픽셀 데이터를 병합할 수 있다.
도 10은 비-기하 정보를 이용하여 LOD를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 다른 실시 예를 설명하기 위한 개념도이다.
그래픽스 파이프라인(260B)은 도 2의 프로세싱 유닛들(253)을 포함할 수 있는 복수의 프로세싱 스테이지들과, 리소스 블록(263)을 포함할 수 있다.
상기 복수의 프로세싱 스테이지들(또는 프로세싱 유닛들(253))은 입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3B), 테셀레이터(261-4), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 래스터라이저(261-7), 픽셀 쉐이더 (261-8B), 및 출력 머저(261-9)를 포함할 수 있다.
버텍스 쉐이더(261-2)는 기하 정보(VGEO)와 비-기하 정보(VNGEO)를 헐 쉐이더(261-3B)로 출력한다.
도 3에 도시된 헐 쉐이더(261-3A)와 달리, 도 10에 도시된 헐 쉐이더(261-3B)는 기하 정보(VGEO)를 이용하여 LOD를 계산하고, 계산된 LOD를 프레임버퍼 오프젝트(265)로부터 출력된 비-기하 정보(VNGEO1)를 이용하여 조절한다.
헐 쉐이더(261-3B)를 이용하여 LOD를 조절하는 방법은 헐 쉐이더(261-3A)를 이용하여 LOD를 조절하는 방법과 실질적으로 동일 또는 유사하다. 따라서, 헐 쉐이더(261-3B)는 도 4부터 도 9를 참조하여 설명된 LOD를 조절하는 방법을 사용할 수 있다.
프레임 버퍼 오프젝트(265)는 래스터라이저(261-7)로부터 출력된 복수의 프레그먼트들에 대한 비-기하 정보를 수신하여 저장하고, 저장된 비-기하 정보 (VNGEO1)를 헐 쉐이더(261-3B)로 출력한다. 도 10의 픽셀 쉐이더(261-8B)의 기능은 도 3의 픽셀 쉐이더(261-8)의 기능과 실질적으로 동일 또는 유사하다.
도 10에서는 프레임 버퍼 오프젝트(265)가 그래픽스 파이프라인(260B)에 포함된 것으로 도시되어 있으나, 이는 설명의 편의를 위한 것으로서 프레임 버퍼 오프젝트(265)의 구현 위치는 설계 사양에 따라 다양하게 변경될 수 있다.
도 10에 도시된 실시 예에 따라, 동일한 프레임 내에서 헐 쉐이더(261-3B)는 버텍스 쉐이더(261-2)로부터 출력된 기하 정보(VGEO)를 이용하여 LOD를 계산하고, 계산된 LOD를 프레임 버퍼 오프젝트(265)로부터 수신된 비-기하 정보(VNGEO1)를 이용하여 조절할 수 있다.
버텍스 쉐이더(261-2)는 현재 프레임의 기하 정보(VGEO)를 출력하는 제1소스의 기능을 수행할 수 있고, 프레임 버퍼 오프젝트(265)는 상기 현재 프레임의 비-기하 정보(VNGEO1)를 출력하는 제2소스의 기능을 수행할 수 있다.
도 11은 비-기하 정보를 이용하여 LOD를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 또 다른 실시 예를 설명하기 위한 개념도이다.
그래픽스 파이프라인(260C)은 도 2의 프로세싱 유닛들(253)을 포함할 수 있는 복수의 프로세싱 스테이지들과, 리소스 블록(263)을 포함할 수 있다.
상기 복수의 프로세싱 스테이지들(또는 프로세싱 유닛들(253))은 입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3C), 테셀레이터(261-4), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 래스터라이저(261-7), 픽셀 쉐이더 (261-8C), 및 출력 머저(261-9)를 포함할 수 있다.
버텍스 쉐이더(261-2)는 기하 정보(VGEO)와 비-기하 정보(VNGEO)를 헐 쉐이더(261-3C)로 출력한다.
도 3에 도시된 헐 쉐이더(261-3A)와 달리, 도 11에 도시된 헐 쉐이더(261-3C)는 버텍스 쉐이더(261-2)로부터 출력된 기하 정보(VGEO)를 이용하여 LOD를 계산하고, 계산된 LOD를 프레임 버퍼(267)로부터 수신된 비-기하 정보(VNGEO2)를 이용하여 조절할 수 있다.
헐 쉐이더(261-3C)를 이용하여 LOD를 조절하는 방법은 헐 쉐이더(261-3A)를 이용하여 LOD를 조절하는 방법과 실질적으로 동일 또는 유사하다. 따라서, 헐 쉐이더(261-3C)는 도 4부터 도 9를 참조하여 설명된 LOD를 조절하는 방법을 사용할 수 있다.
프레임 버퍼(267)는 픽셀 쉐이더(261-8B)로부터 출력된 이전 프레임의 쉐이드된 복수의 픽셀들에 대한 비-기하 정보를 저장하고, 저장된 비-기하 정보 (VNGEO2)를 헐 쉐이더(261-3C)로 출력한다.
도 11에서는 프레임 버퍼(267)가 그래픽스 파이프라인(260C)에 포함된 것으로 도시되어 있으나, 이는 설명의 편의를 위한 것으로서 프레임 버퍼(267)의 구현 위치는 설계 사양에 따라 다양하게 변경될 수 있다. 예컨대, 프레임 버퍼(267)는 리소스 블록(263)에 포함될 수 있다.
도 11에 도시된 실시 예에 따라, 헐 쉐이더(261-3C)는 현재 프레임에 대한 기하 정보(VGEO)를 이용하여 LOD를 계산하고, 이전 프레임에 대한 비-기하 정보 (VNGEO2)를 이용하여 상기 LOD를 조절할 수 있다.
버텍스 쉐이더(261-2)는 현재 프레임의 기하 정보(VGEO)를 출력하는 제1소스의 기능을 수행할 수 있고, 프레임 버퍼(267)는 이전 프레임의 비-기하 정보 (VNGEO2)를 출력하는 제2소스의 기능을 수행할 수 있다.
도 12는 비-기하 정보를 이용하여 LOD를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 또 다른 실시 예를 설명하기 위한 개념도이다.
그래픽스 파이프라인(260D)은 도 2의 프로세싱 유닛들(253)을 포함할 수 있는 복수의 프로세싱 스테이지들과, 리소스 블록(263)을 포함할 수 있다.
상기 복수의 프로세싱 스테이지들(또는 프로세싱 유닛들(253))은 입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3), 테셀레이터(261-4), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 래스터라이저(261-7D), 픽셀 쉐이더 (261-8D), 및 출력 머저(261-9)를 포함할 수 있다.
래스터라이저(261-7D)는 복수의 프래그먼트들, 및 상기 복수의 프래그먼트들에 대한 기하 정보(FGEO)와 비-기하 정보(FNGEO)를 생성할 수 있다.
픽셀 쉐이더(261-8D)는 래스터라이저(261-7D)로부터 출력된 기하 정보(FGEO)를 이용하여 LOD를 계산하고, 계산된 LOD를 래스터라이저(261-7D)로부터 출력된 비-기하 정보(FNGEO)를 이용하여 조절할 수 있다. 픽셀 쉐이더(261-8D)는 텍스처링 작동을 수행할 수 있다.
헐 쉐이더(261-3A)를 이용하여 LOD를 조절하는 방법은 픽셀 쉐이더(261-8D)를 이용하여 LOD를 조절하는 방법과 실질적으로 동일 또는 유사하다. 따라서, 픽셀 쉐이더(261-8D)는 도 4부터 도 9를 참조하여 설명된 LOD를 조절하는 방법을 사용할 수 있다.
헐 쉐이더(261-3)는 버텍스 쉐이더(261-1)로부터 출력 컨트롤 포인트들을 수신하고, 하나 또는 그 이상의 테셀레이션 팩터들을 생성하고, 상기 출력 컨트롤 포인들과 상기 하나 또는 그 이상의 테셀레이션 팩터들을 테셀레이터(261-4)로 전송할 수 있다.
테셀레이터(261-4)는 상기 출력 컨트롤 포인들과 상기 하나 또는 그 이상의 테셀레이션 팩터들을 이용하여 테셀레이션을 하고, 테셀레이트된 컨트롤 포인트들을 도메인 쉐이더(261-5)로 전송할 수 있다.
예컨대, 테셀레이터(261-4)는 헐 쉐이더(261-3A)로부터 수신된 컨트롤 포인트들에 대한 도메인 좌표들을 결정하고, 결정된 도메인 좌표들을 도메인 쉐이더 (261-5)로 출력하고, 결정된 도메인 좌표들에 관련된 그래픽 특성들을 지시하는 정보(예컨대, 토폴로지 정보)를 도메인 쉐이더 (261-5)로 출력할 수 있다.
도 13은 비-기하 정보를 이용하여 LOD를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 또 다른 실시 예를 설명하기 위한 개념도이다.
그래픽스 파이프라인(260E)은 도 2의 프로세싱 유닛들(253)을 포함할 수 있는 복수의 프로세싱 스테이지들과, 리소스 블록(263)을 포함할 수 있다.
상기 복수의 프로세싱 스테이지들(또는 프로세싱 유닛들(253))은 입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3), 테셀레이터(261-4), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 래스터라이저(261-7D), 픽셀 쉐이더 (261-8E), 및 출력 머저(261-9)를 포함할 수 있다.
래스터라이저(261-7D)는 복수의 프래그먼트들, 및 상기 복수의 프래그먼트들에 대한 기하 정보(FGEO)와 비-기하 정보(FNGEO)를 생성할 수 있다. 래스터라이저 (261-7D)는 비-기하 정보(FNGEO)를 프레임 버퍼 오프젝트(269)로 전송할 수 있다. 래스터라이저(261-7D)로 전송되는 비-기하 정보(FNGEO)의 양은 설계 사양에 따라 결정될 수 있다. 실시 예들에 따라 상기 양은 프레임, 오브젝트, 프리미티브, 패치, 에지, 버텍스, 또는 컨트롤 포인트에 해당할 수 있다.
픽셀 쉐이더(261-8E)는 래스터라이저(261-7D)로부터 출력된 기하 정보(FGEO)를 이용하여 LOD를 계산하고, 계산된 LOD를 프레임 버퍼 오프젝트(269)로부터 출력된 비-기하 정보(FNGEO0)를 이용하여 조절할 수 있다.
도 13에서는 프레임 버퍼 오프젝트(269)가 그래픽스 파이프라인(260E)에 포함된 것으로 도시되어 있으나, 이는 설명의 편의를 위한 것으로서 프레임 버퍼 오프젝트(269)의 구현 위치는 설계 사양에 따라 다양하게 변경될 수 있다.
헐 쉐이더(261-3A)를 이용하여 LOD를 조절하는 방법은 픽셀 쉐이더(261-8E)를 이용하여 LOD를 조절하는 방법과 실질적으로 동일 또는 유사하다. 따라서, 픽셀 쉐이더(261-8E)는 도 4부터 도 9를 참조하여 설명된 LOD를 조절하는 방법을 사용할 수 있다.
도 13에 도시된 실시 예에 따라, 동일한 프레임 내에서 픽셀 쉐이더(261-8E)는 래스터라이저(261-7D)로부터 출력된 기하 정보(VGEO)를 이용하여 LOD를 계산하고, 계산된 LOD를 프레임 버퍼 오프젝트(269)로부터 수신된 비-기하 정보(FNGEO0)를 이용하여 조절할 수 있다.
래스터라이저(261-7D)는 현재 프레임의 기하 정보(VGEO)를 출력하는 제1소스의 기능을 수행할 수 있고, 프레임 버퍼 오프젝트(269)는 상기 현재 프레임의 비-기하 정보(FNGEO0)를 출력하는 제2소스의 기능을 수행할 수 있다.
도 14는 비-기하 정보를 이용하여 LOD를 조절할 수 있는 도 1에 도시된 GPU의 그래픽스 파이프라인의 또 다른 실시 예를 설명하기 위한 개념도이다.
그래픽스 파이프라인(260F)은 도 2의 프로세싱 유닛들(253)을 포함할 수 있는 복수의 프로세싱 스테이지들과, 리소스 블록(263)을 포함할 수 있다.
상기 복수의 프로세싱 스테이지들(또는 프로세싱 유닛들(253))은 입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3), 테셀레이터(261-4), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 래스터라이저(261-7D), 픽셀 쉐이더 (261-8F), 및 출력 머저(261-9)를 포함할 수 있다.
래스터라이저(261-7D)는 복수의 프래그먼트들, 및 상기 복수의 프래그먼트들에 대한 기하 정보(FGEO)와 비-기하 정보(FNGEO)를 생성할 수 있다.
도 13에 도시된 픽셀 쉐이더(261-8E)와 달리, 도 14에 도시된 픽셀 쉐이더(261-8F)는 래스터라이저(261-7D)로부터 출력된 기하 정보(FGEO)를 이용하여 LOD를 계산하고, 계산된 LODf를 프레임 버퍼(271)로부터 수신된 비-기하 정보(FNGEO1)를 이용하여 조절할 수 있다.
헐 쉐이더(261-3A)를 이용하여 LOD를 조절하는 방법은 픽셀 쉐이더(261-8F)를 이용하여 LOD를 조절하는 방법과 실질적으로 동일 또는 유사하다. 따라서, 픽셀 쉐이더(261-8F)는 도 4부터 도 9를 참조하여 설명된 LOD를 조절하는 방법을 사용할 수 있다.
프레임 버퍼(267)는 픽셀 쉐이더(261-8F)로부터 출력된 이전 프레임의 쉐이드된 복수의 픽셀들에 대한 비-기하 정보를 저장하고, 저장된 비-기하 정보 (FNGEO1)를 픽셀 쉐이더(261-8F)로 출력할 수 있다.
픽셀 쉐이더(261-8F)는 복수의 픽셀들에 대한 비-기하 정보를 프레임 버퍼 (271)로 전송할 수 있다. 프레임 버퍼 (271)로 전송되는 비-기하 정보의 양은 설계 사양에 따라 결정될 수 있다. 실시 예들에 따라, 상기 양은 프레임, 오브젝트, 프리미티브, 패치, 에지, 버텍스, 또는 컨트롤 포인트에 해당할 수 있다.
도 14에서는 프레임 버퍼(271)가 그래픽스 파이프라인(260F)에 포함된 것으로 도시되어 있으나, 이는 설명의 편의를 위한 것으로서 프레임 버퍼(271)의 구현 위치는 설계 사양에 따라 다양하게 변경될 수 있다. 예컨대, 프레임 버퍼(271)는 리소스 블록(263)에 포함될 수 있다.
도 14에 도시된 실시 예에 따라, 픽셀 쉐이더(261-8F)는 현재 프레임에 대한 기하 정보(FGEO)를 이용하여 LOD를 계산하고, 계산된 LOD를 이전 프레임에 대한 비-기하 정보(FNGEO1)를 이용하여 조절할 수 있다.
상술한 바와 같이, 테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더를 포함하는 그래픽스 프로세싱 유닛의 LOD(level-of-detail) 조절 방법은 상기 어느 하나를 위한 기하 정보를 이용하여 LOD를 계산하고, 계산된 LOD를 상기 어느 하나를 위한 비-기하 정보를 이용하여 조절할 수 있다.
상기 쉐이더는 헐 쉐이더일 수도 있고 픽셀 쉐이더일 수도 있다. 상기 기하 정보와 상기 비-기하 정보는 동일한 소스로부터 출력될 수도 있고 서로 다른 소스들로부터 출력될 수도 있다.
상기 기하 정보와 상기 비-기하 정보는 동일한 프레임에 대한 정보일 수도 있고, 서로 다른 프레임들에 대한 정보일 수도 있다.
테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더를 포함하는 그래픽스 프로세싱 유닛의 LOD 조절 방법은 컴퓨터 프로그램으로 프로그램되고, 상기 컴퓨터 프로그램은 기록 매체에 저장될 수 있다. 상기 저장 매체는 CPU(210), GPU(260), 또는 적어도 하나의 메모리(310-1과 310-2)일 수 있다. 상기 적어도 하나의 메모리(310-1과 310-2)는 SoC(200)에 착탈 가능한 메모리일 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 컴퓨팅 장치
200: 시스템 온 칩
210: CPU
220-1과 220-2: 메모리 컨트롤러
230: 사용자 인터페이스
240: 메모리 컨트롤러
260: 그래픽스 프로세싱 유닛(GPU)
261-2; 버텍스 쉐이더
261-3, 261-3A, 261-3B, 및 261-3C: 헐 쉐이더
261-7, 및 261-7D: 래스터라이저
261-8, 261-8B, 261-8C, 261-8D, 261-8E, 및 261-8F: 픽셀 쉐이더(프래그먼트 쉐이더)
265, 269: 프레임버퍼 오브젝트
267, 271; 프레임 버퍼
290; GPU 캐시

Claims (20)

  1. 테셀레이션(tessellation)과 텍스처링(texturing) 중에서 어느 하나를 수행할 수 있는 쉐이더(shader)를 포함하는 그래픽스 프로세싱 유닛의 LOD(level-of-detail) 조절 방법에 있어서,
    상기 어느 하나를 위한 기하 정보에 기초하여 LOD를 계산하는 단계; 및
    상기 어느 하나를 위한 비-기하 정보에 기초하여 상기 LOD를 기준 값과 비교함으로써 상기 LOD를 조절하는 단계를 포함하는 그래픽스 프로세싱 유닛의 LOD 조절 방법.
  2. 제1항에 있어서,
    상기 기하 정보와 상기 비-기하 정보는 동일한 소스로부터 출력되고,
    상기 동일한 소스는 버텍스 쉐이더와 래스터라이저 중에서 어느 하나인 그래픽스 프로세싱 유닛의 LOD 조절 방법.
  3. 제1항에 있어서,
    상기 기하 정보는 제1소스로부터 출력되고, 상기 비-기하 정보는 제2소스로부터 출력되고,
    상기 제1소스는 버텍스 쉐이더와 래스터라이저 중에서 어느 하나이고,
    상기 제2소스는 프레임버퍼 오프젝트와 이전 프레임을 저장하는 프레임 버퍼 중에서 어느 하나인 그래픽스 프로세싱 유닛의 LOD 조절 방법.
  4. 제1항에 있어서,
    상기 기하 정보와 상기 비-기하 정보는 동일한 프레임에 대한 정보인 그래픽스 프로세싱 유닛의 LOD 조절 방법.
  5. 제1항에 있어서,
    상기 기하 정보와 상기 비-기하 정보 각각은 서로 다른 프레임들 각각에 대한 정보인 그래픽스 프로세싱 유닛의 LOD 조절 방법.
  6. 제1항에 있어서,
    상기 LOD는 오브젝트(object), 프리미티브(primitive), 패치(patch), 에지 (edge), 버텍스(vertex) 또는 컨트롤 포인트(control point) 마다 할당되는 그래픽스 프로세싱 유닛의 LOD 조절 방법.
  7. 제1항에 기재된 LOD 조절 방법을 실행할 수 있는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  8. 테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더를 포함하는 그래픽스 프로세싱 유닛에 있어서,
    상기 쉐이더는,
    상기 어느 하나를 위한 기하 정보에 기초하여 LOD(level-of-detail)를 계산하고, 상기 어느 하나를 위한 비-기하 정보에 기초하여 상기 LOD를 기준 값과 비교함으로써 상기 LOD를 조절하는 그래픽스 프로세싱 유닛.
  9. 제8항에 있어서,
    상기 쉐이더는 통일된 쉐이더(unified shader)인 그래픽스 프로세싱 유닛.
  10. 제8항에 있어서,
    버텍스 쉐이더; 및
    래스터라이저를 더 포함하고,
    상기 기하 정보와 상기 비-기하 정보는 상기 버텍스 쉐이더와 상기 래스터라이저 중에서 어느 하나로부터 출력되는 그래픽스 프로세싱 유닛.
  11. 제8항에 있어서,
    버텍스 쉐이더;
    래스터라이저; 및
    현재 프레임과 이전 프레임 중에서 어느 하나를 저장하는 버퍼를 더 포함하고,
    상기 기하 정보는 상기 버텍스 쉐이더와 상기 래스터라이저 중에서 어느 하나로부터 출력되고,
    상기 비-기하 정보는 상기 버퍼로부터 출력되고,
    상기 기하 정보는 상기 현재 프레임에 대한 기하 정보인 그래픽스 프로세싱 유닛.
  12. 제8항에 있어서,
    상기 비-기하 정보는 상기 테셀레이션과 상기 텍스처링 중에서 상기 어느 하나를 위한 패치와 프리미티브 중에서 어느 하나의 밝기, 이동 속도, 및 컬러 그레이디언트 중에서 어느 하나인 그래픽스 프로세싱 유닛.
  13. CPU; 및
    상기 CPU로부터 출력된 명령에 응답하여, 테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더를 포함하는 그래픽스 프로세싱 유닛을 포함하고,
    상기 쉐이더는,
    상기 어느 하나를 위한 기하 정보에 기초하여 LOD(level-of-detail)를 계산하고, 상기 어느 하나를 위한 비-기하 정보에 기초하여 상기 LOD를 기준 값과 비교함으로써 상기 LOD를 조절하는 시스템 온 칩(System On Chip).
  14. 제13항에 있어서,
    상기 비-기하 정보는 상기 테셀레이션과 상기 텍스처링 중에서 상기 어느 하나를 위한 패치와 프리미티브 중에서 어느 하나의 밝기, 이동 속도, 및 컬러 그레이디언트 중에서 어느 하나인 시스템 온 칩.
  15. 제13항에 있어서, 상기 그래픽스 프로세싱 유닛은,
    버텍스 쉐이더; 및
    래스터라이저를 더 포함하고,
    상기 기하 정보와 상기 비-기하 정보는 상기 버텍스 쉐이더와 상기 래스터라이저 중에서 어느 하나로부터 출력되는 시스템 온 칩.
  16. 제13항에 있어서, 상기 그래픽스 프로세싱 유닛은,
    버텍스 쉐이더;
    래스터라이저; 및
    현재 프레임과 이전 프레임 중에서 어느 하나를 저장하는 버퍼를 더 포함하고,
    상기 기하 정보는 상기 버텍스 쉐이더와 상기 래스터라이저 중에서 어느 하나로부터 출력되고,
    상기 비-기하 정보는 상기 버퍼로부터 출력되고,
    상기 기하 정보는 상기 현재 프레임에 대한 기하 정보인 시스템 온 칩.
  17. 시스템 온 칩; 및
    상기 시스템 온 칩에 접속된 메모리를 포함하고,
    상기 시스템 온 칩은,
    상기 메모리의 작동을 제어할 수 있는 메모리 컨트롤러;
    CPU; 및
    상기 CPU로부터 출력된 명령에 응답하여, 테셀레이션과 텍스처링 중에서 어느 하나를 수행할 수 있는 쉐이더를 포함하는 그래픽스 프로세싱 유닛을 포함하고,
    상기 쉐이더는,
    상기 어느 하나를 위한 기하 정보에 기초하여 LOD(level-of-detail)를 계산하고, 상기 어느 하나를 위한 비-기하 정보에 기초하여 상기 LOD를 기준 값과 비교함으로써 상기 LOD를 조절하는 컴퓨팅 장치.
  18. 제17항에 있어서,
    상기 비-기하 정보는 상기 테셀레이션과 상기 텍스처링 중에서 상기 어느 하나를 위한 패치와 프리미티브 중에서 어느 하나의 밝기, 이동 속도, 및 컬러 그레이디언트 중에서 어느 하나인 컴퓨팅 장치.
  19. 제17항에 있어서, 상기 그래픽스 프로세싱 유닛은,
    버텍스 쉐이더; 및
    래스터라이저를 더 포함하고,
    상기 기하 정보와 상기 비-기하 정보는 상기 버텍스 쉐이더와 상기 래스터라이저 중에서 어느 하나로부터 출력되는 컴퓨팅 장치.
  20. 제17항에 있어서, 상기 그래픽스 프로세싱 유닛은,
    버텍스 쉐이더;
    래스터라이저; 및
    현재 프레임과 이전 프레임 중에서 어느 하나를 저장하는 버퍼를 더 포함하고,
    상기 기하 정보는 상기 버텍스 쉐이더와 상기 래스터라이저 중에서 어느 하나로부터 출력되고,
    상기 비-기하 정보는 상기 버퍼로부터 출력되고,
    상기 기하 정보는 상기 현재 프레임에 대한 기하 정보인 컴퓨팅 장치.
KR1020140136583A 2014-10-10 2014-10-10 Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들 KR102197064B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020140136583A KR102197064B1 (ko) 2014-10-10 2014-10-10 Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들
US14/812,099 US9905036B2 (en) 2014-10-10 2015-07-29 Graphics processing unit for adjusting level-of-detail, method of operating the same, and devices including the same
DE102015113927.8A DE102015113927B4 (de) 2014-10-10 2015-08-21 Graphikverarbeitungseinheit zum Einstellen eines Detailierungsgrads, Verfahren zum Betreiben derselben und Vorrichtungen mit derselben
CN201510651987.8A CN105513117B (zh) 2014-10-10 2015-10-10 调整细节等级的图形处理单元、操作方法及包括其的设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140136583A KR102197064B1 (ko) 2014-10-10 2014-10-10 Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들

Publications (2)

Publication Number Publication Date
KR20160042547A KR20160042547A (ko) 2016-04-20
KR102197064B1 true KR102197064B1 (ko) 2020-12-30

Family

ID=55644253

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140136583A KR102197064B1 (ko) 2014-10-10 2014-10-10 Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들

Country Status (4)

Country Link
US (1) US9905036B2 (ko)
KR (1) KR102197064B1 (ko)
CN (1) CN105513117B (ko)
DE (1) DE102015113927B4 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2533443B (en) * 2015-06-05 2018-06-06 Imagination Tech Ltd Tessellation method using recursive sub-division of triangles
US10643296B2 (en) * 2016-01-12 2020-05-05 Qualcomm Incorporated Systems and methods for rendering multiple levels of detail
US10643381B2 (en) 2016-01-12 2020-05-05 Qualcomm Incorporated Systems and methods for rendering multiple levels of detail
KR102657587B1 (ko) * 2016-11-21 2024-04-15 삼성전자주식회사 커브 렌더링을 수행하는 방법 및 장치.
CN106709859B (zh) * 2016-12-12 2020-04-07 中国航空工业集团公司西安航空计算技术研究所 一种图形处理器光栅化单元的自适应低功耗时钟门控结构
CN106652008B (zh) * 2016-12-23 2019-08-13 浙江大学 一种自动生成网格与着色器多层次细节的方法
US10373365B2 (en) * 2017-04-10 2019-08-06 Intel Corporation Topology shader technology
KR102199458B1 (ko) * 2017-11-24 2021-01-06 한국전자통신연구원 3차원 컬러 메쉬 복원 방법 및 장치
US11833423B2 (en) * 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102903146A (zh) 2012-09-13 2013-01-30 中国科学院自动化研究所 用于场景绘制的图形处理方法
US20130342537A1 (en) * 2012-06-25 2013-12-26 Google Inc. Movement Based Level of Detail Adjustments

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953015A (en) 1996-11-15 1999-09-14 Samsung Electronics Co., Ltd. Determining the level of detail for texture mapping in computer graphics
US6100898A (en) 1998-04-08 2000-08-08 Webtv Networks, Inc. System and method of selecting level of detail in texture mapping
US6600485B1 (en) * 1998-07-03 2003-07-29 Sega Enterprises, Ltd. Polygon data generation method and image display apparatus using same
US6441817B1 (en) * 1999-11-29 2002-08-27 Xerox Corporation Methods and apparatuses for performing Z-buffer granularity depth calibration in graphics displays of three-dimensional scenes
US20030210271A1 (en) * 2002-05-13 2003-11-13 King William Davis Power based level-of- detail management system for a portable computer graphics display
TWI238975B (en) 2003-02-20 2005-09-01 Via Tech Inc Method of performing cubic mapping with texturing
US7002592B2 (en) * 2003-07-30 2006-02-21 Hewlett-Packard Development Company, L.P. Graphical display system and method for applying parametric and non-parametric texture maps to graphical objects
JP2005228223A (ja) 2004-02-16 2005-08-25 Matsushita Electric Ind Co Ltd 詳細度を用いた画像表示装置
JP4198087B2 (ja) * 2004-04-13 2008-12-17 株式会社ソニー・コンピュータエンタテインメント 画像生成装置および画像生成方法
KR100809522B1 (ko) 2005-12-08 2008-03-04 한국전자통신연구원 지형의 효율적인 뷰-의존 lod 렌더링 방법
KR100723421B1 (ko) * 2006-03-13 2007-05-30 삼성전자주식회사 포인트 보간에 의한 렌더링 방법, 포인트 보간에 의한 렌더링 장치 및 기록매체
KR100723422B1 (ko) * 2006-03-16 2007-05-30 삼성전자주식회사 포인트 기반 렌더링 장치와 방법 및 컴퓨터 프로그램을 저장한 컴퓨터로 읽을 수 있는 기록매체
US8281281B1 (en) * 2006-06-07 2012-10-02 Pixar Setting level of detail transition points
KR100745768B1 (ko) 2006-08-29 2007-08-02 삼성전자주식회사 전력 소비를 감소시키기 위한 lod 값 계산 방법과이것을 이용한 3차원 렌더링 시스템
US8106918B2 (en) 2007-05-01 2012-01-31 Vivante Corporation Apparatus and method for texture level of detail computation
US20090033659A1 (en) 2007-07-31 2009-02-05 Lake Adam T Real-time luminosity dependent subdivision
US8284197B2 (en) * 2008-07-11 2012-10-09 Advanced Micro Devices, Inc. Method and apparatus for rendering instance geometry
US20100164954A1 (en) 2008-12-31 2010-07-01 Sathe Rahul P Tessellator Whose Tessellation Time Grows Linearly with the Amount of Tessellation
US8587602B2 (en) * 2010-08-16 2013-11-19 Microsoft Corporation GPU texture tile detail control
EP2555166B1 (en) * 2011-08-01 2019-10-16 Harman Becker Automotive Systems GmbH Space error parameter for 3D buildings and terrain
US8654124B2 (en) * 2012-01-25 2014-02-18 Google Inc. Texture fading for smooth level of detail transitions in a graphics application
US9105129B2 (en) * 2012-06-05 2015-08-11 Google Inc. Level of detail transitions for geometric objects in a graphics application
KR101987302B1 (ko) 2013-05-20 2019-06-10 삼성전기주식회사 패키지 검사 장치 및 패키지 검사 방법
US9405442B1 (en) * 2013-09-04 2016-08-02 Ca, Inc. List control with zoom operation
US9595075B2 (en) * 2013-09-26 2017-03-14 Nvidia Corporation Load/store operations in texture hardware
US20150279055A1 (en) * 2014-03-28 2015-10-01 Nikos Kaburlasos Mipmap compression

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130342537A1 (en) * 2012-06-25 2013-12-26 Google Inc. Movement Based Level of Detail Adjustments
CN102903146A (zh) 2012-09-13 2013-01-30 中国科学院自动化研究所 用于场景绘制的图形处理方法

Also Published As

Publication number Publication date
DE102015113927A1 (de) 2016-04-14
US20160104458A1 (en) 2016-04-14
CN105513117B (zh) 2021-07-20
KR20160042547A (ko) 2016-04-20
CN105513117A (zh) 2016-04-20
US9905036B2 (en) 2018-02-27
DE102015113927B4 (de) 2024-05-29

Similar Documents

Publication Publication Date Title
KR102197064B1 (ko) Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들
US10140677B2 (en) Graphics processing unit and device employing tessellation decision
US10269090B2 (en) Rendering to multi-resolution hierarchies
EP3008701B1 (en) Using compute shaders as front end for vertex shaders
JP5844485B2 (ja) グラフィックス処理システムにおけるメモリアクセス帯域幅をデスティネーションアルファ値に基づいて減少させるための技法
KR102651126B1 (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
US9665980B2 (en) Graphics processing unit, method of operating the same, and devices including the same
KR102554419B1 (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
GB2463763A (en) One pass tessellation process
KR102188543B1 (ko) 그래픽 처리 장치
US9811940B2 (en) Bandwidth reduction using vertex shader
US10607390B2 (en) Techniques for tiling compute work with graphics work
US8605085B1 (en) System and method for perspective corrected tessellation using parameter space warping
US8558833B1 (en) System and method for symmetric parameterization of independently tessellated patches
WO2015123029A1 (en) Techniques for conservative rasterization
US20160071317A1 (en) Graphics processing unit (gpu) including subdivider and device including the gpu
US9552618B2 (en) Method for domain shading, and devices operating the same
US9563930B2 (en) Techniques for clearing a shared surface
US8489911B1 (en) Hardware WCK2CK training engine using meta-EDC sweeping and adjustably accurate voting algorithm for clock phase detection
US8704835B1 (en) Distributed clip, cull, viewport transform and perspective correction
Chou Windows High-Speed Drawing Technology Research

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