KR20160063081A - 선택적 테셀레이션 방법 및 장치 - Google Patents
선택적 테셀레이션 방법 및 장치 Download PDFInfo
- Publication number
- KR20160063081A KR20160063081A KR1020140166630A KR20140166630A KR20160063081A KR 20160063081 A KR20160063081 A KR 20160063081A KR 1020140166630 A KR1020140166630 A KR 1020140166630A KR 20140166630 A KR20140166630 A KR 20140166630A KR 20160063081 A KR20160063081 A KR 20160063081A
- Authority
- KR
- South Korea
- Prior art keywords
- domain
- stream
- vertex
- visible
- primitive
- Prior art date
- Legal status (The legal status 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 status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
렌더링 장치가, 입력 패치의 적어도 하나의 도메인이 렌더링될 때 가시적인지 여부를 나타내는, 도메인 가시성 스트림을 생성하고, 도메인 가시성 스트림을 이용하여, 입력 패치의 가시적인 영역에 대한 도메인 정보를 생성하고, 도메인 정보에 기초하여, 가시적인 도메인에 대해 도메인 쉐이딩을 수행하는, 방법이 개시된다.
Description
개시된 실시예들은 선택적으로 테셀레이션을 수행하는 방법 및 장치에 관한 것이다.
테셀레이션(tessellation)은 렌더링 파이프라인(rendering pipeline)의 일부 과정으로, 폴리곤(polygon)을 더 작은 여러 개의 폴리곤들로 잘게 나누는 과정을 의미한다. 테셀레이션 과정은 API(Application Programing Interface)에 따라 차이가 있다.
테셀레이션의 입력은 패치(patch)로, 하나의 패치는 여러 개의 컨트롤 포인트(control point)로 구성된다. 테셀레이션의 출력은 여러 개의 정점(vertex)이다. 테셀레이션 결과 획득된 정점들은 프리미티브(primitive)를 구성하게 된다.
개시된 일 실시예는 2-패스 렌더링 파이프라인(2-pass rendering pipeline)을 이용하여 선택적으로 테셀레이션하는 방법 및 장치를 제공하는 것이다.
개시된 다른 실시예는 2-패스 렌더링 파이프라인을 이용하여 선택적으로 정점 쉐이딩하는 방법 및 장치를 제공하는 것이다.
일 실시예에 따른 선택적 테셀레이션 방법은, 입력 패치의 적어도 하나의 도메인이 렌더링될 때 가시적인지 여부를 나타내는, 도메인 가시성 스트림을 생성하는 단계; 상기 도메인 가시성 스트림을 이용하여, 상기 입력 패치의 가시적인 영역에 대한 도메인 정보를 생성하는 단계; 및 상기 도메인 정보에 기초하여, 가시적인 도메인에 대해 도메인 쉐이딩을 수행하는 단계를 포함한다.
또한, 상기 도메인 가시성 스트림을 생성하는 단계는, 상기 입력 패치의 상기 도메인 각각에 대응하는 정점에 대한 위치 정보를 이용하여, 상기 도메인 가시성 스트림을 생성하는 것일 수 있다.
또한, 상기 도메인 가시성 스트림을 생성하는 단계는, 상기 입력 패치의 상기 도메인들에 대하여 깊이 테스트를 수행함으로써, 상기 도메인 가시성 스트림을 생성하는 것일 수 있다.
또한, 상기 도메인 가시성 스트림은, 상기 입력 패치 별로 도메인의 가시성을 나타내는 정보를 포함할 수 있다.
또한, 상기 가시성을 나타내는 정보는, 상기 입력 패치에 포함된 가시적인 도메인 세트 및 비가시적인 도메인 세트 중 더 적은 개수의 도메인을 갖는 도메인 세트에 포함된 도메인의 식별자와, 상기 더 적은 개수의 도메인을 갖는 도메인 세트에 포함된 도메인이 가시적인지 또는 비가시적인지를 구별하는 리버스 플래그를 포함할 수 있다.
또한, 상기 도메인 쉐이딩을 수행하는 단계는, 상기 도메인 가시성 스트림을 이용하여, 상기 입력 패치의 상기 도메인들 중 비가시적인 도메인에 대한 도메인 쉐이딩을 스킵하는 것일 수 있다.
또한, 상기 방법은 상기 도메인이 프리미티브로 어셈블리 되는지 여부를 나타내는 프리미티브 어셈블리 스트림을 생성하는 단계를 및 상기 프리미티브 어셈블리 스트림을 이용하여, 상기 도메인 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행하는 단계를 더 포함할 수 있다.
또한, 상기 도메인 가시성 스트림을 생성하는 단계는, 제1 렌더링 파이프라인에서 수행되며, 상기 도메인 정보를 생성하는 단계 및 상기 가시적인 도메인에 대해 도메인 쉐이딩을 수행하는 단계는, 제2 렌더링 파이프라인에서 수행될 수 있다.
다른 실시예에 따른 선택적 정점 쉐이딩 방법은, 입력되는 적어도 하나의 정점이 렌더링 될 때 가시적인지 여부를 나타내는, 정점 가시성 스트림을 생성하는 단계; 및 상기 정점 가시성 스트림을 이용하여, 상기 가시적인 정점에 대한 정점 정보에 기초하여, 가시적인 정점에 대해 정점 쉐이딩을 수행하는 단계를 포함한다.
또한, 상기 방법은, 상기 정점이 프리미티브로 어셈블리 되는지 여부를 나타내는 프리미티브 어셈블리 스트림을 생성하는 단계 및 상기 프리미티브 어셈블리 스트림을 이용하여, 상기 정점 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행하는 단계를 더 포함할 수 있다.
일 실시예에 따른 렌더링 장치는, 입력 패치의 적어도 하나의 도메인이 렌더링될 때 가시적인지 여부를 나타내는, 도메인 가시성 스트림을 생성하는 제1 렌더링 파이프라인 수행부; 및 상기 도메인 가시성 스트림을 이용하여, 상기 입력 패치의 가시적인 영역에 대한 도메인 정보를 생성하고, 상기 도메인 정보에 기초하여, 가시적인 도메인에 대해 도메인 쉐이딩을 수행하는 제2 렌더링 파이프라인 수행부를 포함한다.
다른 실시예에 따른 렌더링 장치는, 입력된 적어도 하나의 정점이 렌더링될 때 가시적인지 여부를 나타내는, 정점 가시성 스트림을 생성하는 제1 렌더링 파이프라인 수행부; 상기 정점 가시성 스트림을 이용하여, 상기 가시적인 정점에 대한 정점 정보에 기초하여, 가시적인 정점에 대해 정점 쉐이딩을 수행하는 제2 렌더링 파이프라인 수행부를 포함한다.
또 다른 실시예는, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
또 다른 실시예는, 하드웨어와 결합되어 상기 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램을 제공한다.
일 실시예에 따른 테셀레이션 방법은 테셀레이션 수행 시 불필요한 연산을 줄일 수 있다.
다른 실시예에 따른 정점 쉐이딩 방법은 정점 쉐이딩 수행 시 불필요한 연산을 줄일 수 있다.
도 1은 일 실시예에 따른 선택적 테셀레이션을 수행하는 방법에 대한 개념도이다.
도 2는 일 실시예에 따른 선택적 테셀레이션 방법을 설명하기 위한 흐름도이다.
도 3은 도 2에 도시된 방법을 설명하기 위한 예시도이다.
도 4는 일 실시예에 따른 도메인 가시성 스트림 구조를 설명하기 위한 예시도이다.
도 5는 다른 실시예에 따라 가시성 스트림 및 프리미티브 어셈블리 스트림을 이용한 선택적 테셀레이션 방법을 설명하기 위한 흐름도이다.
도 6은 도 5에 도시된 방법을 설명하기 위한 예시도이다.
도 7은 또 다른 실시예에 따른 선택적 정점 쉐이딩 방법을 설명하기 위한 흐름도이다.
도 8 및 도 9는 도 7에 도시된 방법을 설명하기 위한 예시도이다.
도 10 내지 도 13은 일 실시예에 따른 도메인 가시성 스트림 및 프리미티브 어셈블리 스트림 생성을 설명하기 위한 예시도이다.
도 14는 다른 실시예에 따른 정점 가시성 스트림 및 프리미티브 어셈블리 스트림 생성을 설명하기 위한 예시도이다.
도 15는 일 실시예에 따른 테셀레이션 장치의 구조를 나타내는 블록도이다.
도 2는 일 실시예에 따른 선택적 테셀레이션 방법을 설명하기 위한 흐름도이다.
도 3은 도 2에 도시된 방법을 설명하기 위한 예시도이다.
도 4는 일 실시예에 따른 도메인 가시성 스트림 구조를 설명하기 위한 예시도이다.
도 5는 다른 실시예에 따라 가시성 스트림 및 프리미티브 어셈블리 스트림을 이용한 선택적 테셀레이션 방법을 설명하기 위한 흐름도이다.
도 6은 도 5에 도시된 방법을 설명하기 위한 예시도이다.
도 7은 또 다른 실시예에 따른 선택적 정점 쉐이딩 방법을 설명하기 위한 흐름도이다.
도 8 및 도 9는 도 7에 도시된 방법을 설명하기 위한 예시도이다.
도 10 내지 도 13은 일 실시예에 따른 도메인 가시성 스트림 및 프리미티브 어셈블리 스트림 생성을 설명하기 위한 예시도이다.
도 14는 다른 실시예에 따른 정점 가시성 스트림 및 프리미티브 어셈블리 스트림 생성을 설명하기 위한 예시도이다.
도 15는 일 실시예에 따른 테셀레이션 장치의 구조를 나타내는 블록도이다.
본 실시예들은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 특정한 실시 형태에 대해 범위를 한정하려는 것이 아니며, 개시된 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 실시예들을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 권리범위를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
명세서 전체에서, "도메인 가시성 스트림(domain visibility stream)"이란, 입력 패치의 적어도 하나의 도메인 각각이 렌더링될 때가시적인지 여부를 나타내는 것이다. 도메인 가시성 스트림은 도메인들에 의해 생성되는 프래그먼트(fragment)가 렌더링될 때 가시적인지 여부를 나타내는 것도 포함할 수 있다. 예를 들어, 프래그먼트를 형성하는 각각의 도메인들이 렌더링 시 비가시적인 경우라도, 이러한 도메인들에 의해 생성되는 프래그먼트는 렌더링 시 가시적일 수 있다. 도메인 가시성 스트림은 프래그먼트를 형성하는 각각의 도메인들이 렌더링 시 비가시적인 경우, 비가시적인 도메인들에 의해 생성되는 프래그먼트가 렌더링 시 가시적인지 여부를 나타내는 정보도 포함할 수 있다. 도메인 가시성 스트림의 형태는 예를 들어, 비트 스트림(bit stream), 인덱스 레인지(index range), 인덱스 세트(index set), 비트 맵(bit map) 및 인덱스 스트림(index stream) 등을 포함할 수 있다.
명세서 전체에서, "프리미티브 어셈블리 스트림(primitive assembly stream)"이란, 도메인 또는 정점이 프리미티브로 어셈블리 되는지 여부를 나타내는 것으로, 결과적으로 프리미티브의 가시성 여부를 나타낼 수 있다. 프리미티브 어셈블리 스트림의 형태는 예를 들어, 비트 스트림, 인덱스 레인지, 인덱스 세트, 비트 맵 및 인덱스 스트림 등을 포함할 수 있다.
명세서 전체에서, "정점 가시성 스트림(vertex visibility stream)"이란, 적어도 하나의 정점 각각이 렌더링 시 가시적인지 여부를 나타내는 것이다. 정점 가시성 스트림은 정점들에 의해 생성되는 프래그먼트가 렌더링될 때 가시적인지 여부를 나타내는 것도 포함할 수 있다. 예를 들어, 프래그먼트를 형성하는 각각의 정점들이 렌더링 시 비가시적인 경우라도, 이러한 정점들에 의해 생성되는 프래그먼트는 렌더링 시 가시적일 수 있다. 정점 가시성 스트림은 프래그먼트를 형성하는 각각의 정점들이 렌더링 시 비가시적인 경우, 비가시적인 정점들에 의해 생성되는 프래그먼트가 렌더링 시 가시적인지 여부를 나타내는 정보도 포함할 수 있다. 정점 가시성 스트림의 형태는 예를 들어, 비트 스트림, 인덱스 레인지, 인덱스 세트, 비트 맵 및 인덱스 스트림 등을 포함할 수 있다.
이하, 실시예를 첨부 도면을 참조하여 상세히 설명하기로 하며, 첨부 도면을 참조하여 설명함에 있어, 동일하거나 대응하는 구성 요소는 동일한 도면번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 선택적 테셀레이션을 수행하는 방법에 대한 개념도이다.
도 1에 도시된 바와 같이, 렌더링 장치는 도메인 가시성 스트림(140)을 이용하여, 렌더링 시 가시적인 도메인에 대해서만 도메인 쉐이딩(domain shading)을 수행하도록 한다. 여기서는, API로 Directx11를 이용하는 것을 예로 들어 설명하지만, API의 종류는 이에 제한되지 않으며, 렌더링 파이프 라인의 단계 또한 Directx11에서 정의하는 단계로 제한되지 않는다.
일 실시예에 따라 Directx11를 이용하는 경우, 테셀레이션은 입력 패치(110)가 헐 쉐이더(120), 테셀레이터(130) 및 도메인 쉐이더(150)를 거쳐 정점으로 출력되는 과정이 될 수 있다.
일 실시예에 따른 렌더링 장치는, 제1 렌더링 파이프 라인 수행 시 입력 패치(110)를 작은 폴리곤들로 잘게 나누는 간단한 테셀레이션 과정(112)을 거쳐, 렌더링 시 가시적인 영역과 비가시적인 영역을 구분하는 정보(114)를 생성할 수 있다. 렌더링 장치는 제2 렌더링 파이프 라인 수행 시, 가시적인 영역과 비가시적인 영역을 구분하는 정보(114)를 이용하여, 입력 패치의 가시적인 영역(116)에 대해서만 도메인 쉐이딩 등의 연산을 수행할 수 있다. 즉, 테셀레이터(130)는 가시적인 도메인에 대해서만 도메인 정보를 생성하거나, 업데이트 하고, 도메인 쉐이더(150)는 비가시적인 도메인에 대한 도메인 쉐이딩을 스킵(skip)할 수 있다. 결과적으로, 불필요한 메모리 사용 및 트래픽(traffic)을 감소시킬 수 있고, GPU(Graphic Processing Unit)를 이용한 그래픽 처리 시 전력 소모를 감소시킬 수 있다.
또한, 이러한 과정을 렌더링 파이프 라인의 다른 단계에도 확장하여 적용 가능하다. 예를 들어, 정점 쉐이딩에도 전술한 방식을 적용하여, 렌더링 시 연산량을 감소시킬 수 있다. 렌더링 장치는, 제1 렌더링 파이프 라인 수행 시 렌더링 시 가시성 여부를 나타내는 정점 가시성 스트림을 생성하고, 제2 렌더링 파이프 라인 수행 시 정점 가시성 스트림을 이용하여 가시적인 정점에 대해서만 정점 쉐이딩을 수행할 수 있다.
도 2는 일 실시예에 따른 선택적 테셀레이션 방법을 설명하기 위한 흐름도이다.
단계 210에서, 렌더링 장치는 입력 패치의 적어도 하나의 도메인에 대한 렌더링 시 가시성 여부를 나타내는 도메인 가시성 스트림을 생성한다.
일 실시예에 따른 렌더링 장치는 입력 패치의 상기 도메인 각각에 대응하는 정점에 대한 위치 정보를 이용한 제1 렌더링 파이프라인을 수행하여, 도메인 가시성 스트림을 생성할 수 있다. 이 때 수행되는 제1 렌더링 파이프라인은 도메인의 가시성 여부를 판별하기 위한 과정이 다. 도메인 가시성 스트림을 획득하기 위해서는 렌더링 파이프라인을 수행하여야 하는데, 모든 정보를 이용하여 렌더링 파이프라인을 수행하는 것은 오버헤드가 크다. 따라서, 렌더링 장치는 정점에 대한 위치 정보를 이용하여 제1 렌더링 파이프라인을 수행할 수 있다.
일 실시예에 따른 렌더링 장치는 입력 패치의 도메인에 대한 깊이 테스트에 기초하여, 각각의 도메인에 대한 렌더링 시 가시성 여부를 나타내는 도메인 가시성 스트림을 생성할 수 있다.
도메인 가시성 스트림은, 입력 패치 별로 각각의 도메인의 가시성을 나타내는 정보를 포함할 수 있다. 도메인 가시성 스트림의 구조에 대한 상세한 설명은 도 4를 참조하여 후술한다.
다른 실시예에 따른 렌더링 장치는 도메인이 프리미티브로 어셈블리 되는지 여부를 나타내는 프리미티브 어셈블리 스트림을 추가적으로 생성할 수 있다.
단계 220에서, 렌더링 장치는 도메인 가시성 스트림을 이용하여, 입력 패치의 가시적인 영역에 대한 도메인 정보를 생성한다.
예를 들어, 렌더링 장치는 테셀레이터(tessellator)의 정해진 연산에 의해서, 도메인 쉐이더(domain shader)에 무게 중심 좌표(Barycentric Coordinates)들을 전달할 수 있다. 테셀레이터는 삼각형과 선으로 오브젝트(object)를 얼마나 세밀하게 분할할 것인지 즉, LOD(Level of Detail)를 결정할 수 있다.
이 때 수행되는 제2 렌더링 파이프라인은 실제 화면에 디스플레이하기 위한 렌더링을 위한 과정으로, 단계 210에서 수행되었던 제1 렌더링 파이프라인보다 많은 정보를 처리해야 하는 과정이다. 다만, 도메인이 가시적인지 여부에 따라 실제 렌더링 시 보이지 않은 도메인에 대한 처리를 생략하므로, 오버헤드를 감소시킬 수 있다.
일 실시예에 따른 렌더링 장치는 렌더링 시 비가시적인 도메인에 대한 도메인 정보를 생성 또는 업데이트 하지 않는다. 따라서, 불필요한 연산 및 메모리 사용을 줄일 수 있다.
단계 230에서, 렌더링 장치는 도메인 정보에 기초하여, 가시적인 도메인에 대해 도메인 쉐이딩을 수행한다.
여기서, "도메인 쉐이딩"은 분할 후의 폴리곤에 3차원적인 의미를 부여해 변이나 좌표 변환을 행하는 것을 의미하며, OpenGL4.0에서의 테셀레이션 이벨류에이션 쉐이더(tessellation evaluation shader) 또한 유사한 기능을 수행할 수 있다. 즉, 본 명세서에서 도메인 쉐이더는 테셀레이션 이벨류에이션 쉐이더를 포함할 수 있고, 그 외 유사한 기능을 하는 다른 쉐이더를 포함할 수 있다.
렌더링 장치는 도메인 가시성 스트림에 의해 비가시적인 것으로 나타내어진 도메인에 대한 도메인 쉐이딩을 스킵할 수 있다. 또한 이후의 렌더링 파이프라인 과정에서도 비가시적인 부분에 대한 처리를 생략 할 수 있게 되어, 불필요한 연산 및 메모리 사용을 줄일 수 있다.
렌더링 장치는 전술한 테셀레이션 방법을 거쳐 출력으로 정점을 획득할 수 있다. 또한, 렌더링 장치는 획득된 정점을 어셈블리(assembly)하여 프리미티브를 생성할 수 있다.
다른 실시예에 따른 렌더링 장치는 프리미티브 어셈블리 스트림을 이용하여, 도메인 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행할 수 있다.
도 3은 도 2에 도시된 방법을 설명하기 위한 예시도이다.
도 3을 참조하면, 일 실시예에 따른 2-패스 테셀레이션(2-pass tesselation)이 수행되는 것을 나타낸다. 도 3의 (a)는 도메인의 가시성 여부를 판단하여 도메인 가시성 스트림을 생성하기 위한 제1 테셀레이션 과정을 나타낸다. 도 3의 (b)는 도 3의 (a)에서 생성된 도메인 가시성 스트림을 이용하여 가시적인 도메인에 대한 처리를 수행하는, 실제 렌더링을 위한 제2 테셀레이션 과정을 나타낸다.
일 실시예에 따르면, 도 3의 (a)의 제1 테셀레이션과 도 3의 (b)의 제2 테셀레이션은 하나의 GPU 코어(GPU core)에서 수행될 수 있다. 즉, 하나의 정점 쉐이더(310a, 310b)가 도 3의 (a)에서 수행되는 제1 정점 쉐이딩 및 도 3의 (b)에서 수행되는 제2 정점 쉐이딩을 순차적으로 수행할 수 있다. 또한, 하나의 헐 쉐이더(320a, 320b)는 도 3의 (a)에서 수행되는 제1 헐 쉐이딩 및 도 3의 (b)에서 수행되는 제2 헐 쉐이딩을 순차적으로 수행할 수 있다. 하나의 테셀레이터(330a, 330b)는 도 3의 (a)에서 수행되는 제1 테셀레이션 및 도 3의 (b)에서 수행되는 제2 테셀레이션을순차적으로 수행할 수 있다. 하나의 도메인 쉐이더(340a, 340b)는 도 3의 (a)에서 수행되는 제1 도메인 쉐이딩 및 도 3의 (b)에서 수행되는 제2 도메인 쉐이딩을 순차적으로 수행할 수 있다.
정점 쉐이더(310a, 310b)는 테셀레이터(330a, 330b)가 작동하는 경우, 입력 패치를 관리하는 기능을 수행할 수 있다. 정점 쉐이더(310a, 310b)는 입력 패치를 헐 쉐이더(320a, 320b)로 전송할 수 있다.
헐 쉐이더(320a, 320b)는 각각의 패치 상에서 폴리곤을 얼마나 분할할지 결정하는 "테셀레이션 인자(tessellation factor)"를 설정하고, 테셀레이션 인자를 테셀레이터(330a, 330b)로 전송할 수 있다. 테셀레이터(330a, 330b)의 기능은 3차원 오브젝트의 입력 패치들을 다수의 출력 프리미티브들로 세분하는 것이다. 테셀레이터(330a, 330b)는 입력 패치들을 더 작은 출력 프리미티브들, 예컨대 헐 쉐이더(320a, 320b)로부터 제공된 테셀레이션 인자에 따른 삼각형들, 쿼드들(quads) 또는 등치선들(isolines)로 세분할 수 있다. 테셀레이터(330a, 330b)의 출력은 출력 프리미티브들을 정의하는 정점들의 세트가 될 수 있다. 도메인 쉐이더(340a, 340b)는 테셀레이터(330a, 330b)에 의해 생성된 출력 정점들을 처리할 수 있다. 도메인 쉐이더(340a, 340b)는 출력 정점의 위치 및 헐 쉐이더(320a, 320b)로부터 수신된 컨트롤 포인트들로부터 속성들에 대해 연산할 수 있다. 테셀레이션은 이와 같은 과정을 통해, 그래픽적으로 더 상세한 이미지들을 표현할 수 있는 더 스무드(smooth)한 곡면을 렌더링하는 것을 가능하게 한다.
다른 실시예에 따르면, 도 3의 (a)의 제1 테셀레이션과 도 3의 (b)의 제2 테셀레이션은 별개의 GPU 또는 별개의 GPU 코어에서 수행될 수 있다.
도 3의 (a)를 참조하면, 제1 테셀레이션 수행 시 렌더링 장치는 각각의 입력 패치에 포함된 도메인이 렌더링 시 가시적인지 여부를 판단하여, 각각의 입력 패치에 대한 도메인 가시성 스트림을 생성할 수 있다. 제1 테셀레이션은 도메인 가시성 스트림을 생성하기 위한 과정으로, 정점에 대한 위치 정보를 이용하여 수행될 수 있다.
도 3의 (a)의 입력 패치 스트림(350)에 표시된 1 내지 6은 입력 패치 스트림(350)의 제1 패치 내지 제6 패치 각각의 식별자를 나타낸다. 입력 패치 스트림(350)은, 제1 패치, 제2 패치, 제4 패치 및 제5 패치는 가시적이고, 제3 패치 및 제6 패치는 비가시적인 것을 나타낸다. 즉, 입력 패치 스트림(350)은 입력 패치 중 제3 패치 및 제6 패치 각각에 포함된 모든 도메인은 비가시적인 것을 나타낸다. 렌더링 장치는 입력 패치 중 가시적인 제1 패치, 제2 패치, 제4 패치 및 제5 패치 각각에 대한 도메인 가시성 스트림을 생성하여 저장한다.
일 실시예에 따른 렌더링 장치는 제2 테셀레이션 수행 시 입력 패치 스트림(350)의 식별자(identifier)를 통해, 현재 처리해야 하는 각각의 입력 패치에 매칭되는 도메인 가시성 스트림을 검색할 수 있다.
즉, 테셀레이터(330b)가 제1 패치를 처리할 때에는 제1 패치와 매칭되는 제1 도메인 가시성 스트림을 이용하여, 제1 도메인 가시성 스트림에 의해 가시적인 것으로 나타난 도메인에 대한 도메인 정보를 생성한다. 도메인 쉐이더(340b)는 도메인 정보를 이용하여 제1 패치의 가시적인 도메인에 대해서만 도메인 쉐이딩을 수행할 수 있다.
마찬가지로, 테셀레이터(330b)가 제2 패치를 처리할 때에는 제2 패치와 매칭되는 제2 도메인 가시성 스트림을 이용하여, 제2 도메인 가시성 스트림에 의해 가시적인 것으로 나타난 도메인에 대한 도메인 정보를 생성한다. 도메인 쉐이더(340b)는 도메인 정보를 이용하여 제2 패치의 가시적인 도메인에 대해서만 도메인 쉐이딩을 수행할 수 있다.
이러한 방식으로, 일 실시예에 따른 렌더링 장치는 입력 패치들 중 모든 도메인이 비가시적인 입력 패치에 대한 처리는 스킵할 수 있다. 그러나, 렌더링 장치는 가시적인 도메인을 포함하는 입력 패치에 대해, 가시적인 도메인에 대한 도메인 정보를 생성하고, 가시적인 도메인에 대해서만 도메인 쉐이딩을 수행할 수 있다. 따라서, 일 실시예에 따른 렌더링 장치는 도메인 쉐이더(340b)에서의 연산량을 감소시킬 수 있다.
도 4는 일 실시예에 따른 도메인 가시성 스트림 구조를 설명하기 위한 예시도이다.
도메인 가시성 스트림은, 입력 패치(410) 별로 각각의 도메인의 가시성을 나타내는 정보를 포함할 수 있다. 도 4를 참조하면, 각각의 입력 패치(410)는 식별자(0 내지 N)에 의해 구별될 수 있다. 가시성을 나타내는 정보는, 각각의 입력 패치(410)에 포함된 가시적인 도메인 세트 및 비가시적인 도메인 세트 중 더 적은 개수의 도메인을 갖는 도메인 세트(420)에 포함된 도메인의 식별자와, 더 적은 개수의 도메인을 갖는 도메인 세트에 포함된 도메인이 가시적인지 또는 비가시적지를 구별하기 위한 리버스 플래그(reverse flag)(430)를 포함할 수 있다.
예를 들어, 도 4에서는 리버스 플래그(430)가 0이면 더 적은 개수의 도메인을 갖는 도메인 세트에 포함된 도메인이 가시적임을 나타내고, 리버스 플래그(430)가 1이면 더 적은 개수의 도메인을 갖는 도메인 세트에 포함된 도메인이 비가시적임을 나타낸다. 도 4는 식별자가 0인 패치에 포함된, 식별자가 0 내지 10인 도메인들은 가시적임을 나타낸다. 마찬가지로, 도 4를 참조하면, 식별자가 1인 패치에 포함된, 식별자가 0 및 3인 도메인들은 비가시적이다. 식별자가 2인 패치에 포함된, 식별자가 10 내지 15, 17 및 20인 도메인들은 가시적이다. 식별자가 3인 패치에 포함된, 식별자가 1, 2 및 3인 도메인들은 비가시적이다. 식별자가 4인 패치에 포함된, 식별자가 0 내지 50인 도메인들은 가시적이다. 식별자가 N인 패치에 포함된, 식별자가 0 내지 10인 도메인들은 비가시적이다.
리버스 플래그(430)는, 가시적인 도메인 및 비가시적인 도메인을 구별하여 나타낼 수 있으므로, 각각의 입력 패치(410)에 포함된 가시적인 도메인 세트 및 비가시적인 도메인 세트 중 더 적은 개수의 도메인을 갖는 도메인 세트(420)에 포함된 도메인의 식별자를 저장할 수 있게 한다.
도 5는 다른 실시예에 따라 가시성 스트림 및 프리미티브 어셈블리 스트림을 이용한 선택적 테셀레이션 방법을 설명하기 위한 흐름도이다.
단계 510에서 렌더링 장치는 제1 렌더링 파이프라인 수행 시, 도메인 가시성 스트림 및 프리미티브 어셈블리 스트림을 생성할 수 있다.
단계 510의 도메인 가시성 스트림을 생성하는 단계는 도 2의 단계 210와 동일 대응되므로, 도 2에서와 중복되는 설명은 생략한다.
일 실시예에 따른 렌더링 장치는 정점에 대한 위치 정보를 이용하여 렌더링 파이프라인을 수행해, 프리미티브 어셈블리 스트림을 획득할 수 있다.
프리미티브 어셈블리 스트림은, 입력 패치 별로 각각의 도메인 또는 정점이 프리미티브로 어셈블리 되는지 여부를 나타낸다. 결과적으로 프리미티브 어셈블리 스트림은, 프리미티브가 렌더링 시 가시적인지 여부를 나타낼 수 있다.
단계 520에서 렌더링 장치는 제2 렌더링 파이프라인 수행 시, 제1 렌더링 파이프라인 수행 시 생성한 도메인 가시성 스트림을 이용하여 도메인이 가시적인지 여부를 판단한다. 도메인이 가시적이라고 판단된 경우 단계 530이 수행되고, 도메인이 비가시적이라고 판단된 경우 단계 535가 수행된다.
단계 530에서 렌더링 장치는 제2 렌더링 파이프라인 수행 시, 가시적이라고 판단된 도메인에 대하여 도메인 정보를 생성하고, 도메인 쉐이딩을 수행한다.
단계 530은 도 2의 단계 220 내지 단계 230과 동일 대응되므로, 도 2에서와 중복되는 설명은 생략한다.
단계 535에서 렌더링 장치는 제2 렌더링 파이프라인 수행 시, 비가시적이라고 판단된 도메인에 대하여 더미 도메인 쉐이딩(dummy domain shading)을 수행한다.
더미 도메인 쉐이딩은 비가시적이라고 판단된 도메인에 대해 최소화된 도메인 쉐이딩을 수행하거나, 또는 이와 유사한 작업을 수행하는 것을 의미한다. 예를 들어, 더미 도메인 쉐이딩은 비가시적인 도메인에 대해, 위치만을 이용한 도메인 쉐이딩을 수행하는 것을 의미할 수 있다. 다른 예로, 더미 도메인 쉐이딩은 비가시적인 도메인에 대해 위치 정보를 더미(dummy) 값으로 생성할 수 있다. 또한, 더미 값은 이미 메모리에 있는 값을 가리키도록 하여, 메모리 사용을 줄일 수 있다. 더미 도메인 쉐이딩은 비가시적인 도메인에 대한 도메인 쉐이딩의 결과는 사용되지 않으므로, 연산량을 줄여 오버헤드를 감소시키기 위한 것이다.
단계 540에서 렌더링 장치는 제2 렌더링 파이프라인 수행 시, 프리미티브 어셈블리 스트림을 이용하여, 도메인이 프리미티브로 어셈블리 되는지 여부를 판단한다. 도메인이 프리미티브로 어셈블리 되는 것으로 판단된 경우 단계 550이 수행되고, 도메인이 프리미티브로 어셈블리 되지 않는 것으로 판단된 경우, 단계 555가 수행된다.
단계 550에서 렌더링 장치는 제2 렌더링 파이프라인 수행 시, 도메인 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행한다. 예를 들어, 렌더링 장치는 획득된 정점 세 개를 이용하여 삼각형의 프리미티브를 조합할 수 있다. 결과적으로, 렌더링 장치는 가시적인 도메인들로부터 가시적인 프리미티브를 어셈블리할 수 있다.
단계 555에서 렌더링 장치는 제2 렌더링 파이프라인 수행 시, 비가시적인 프리미티브를 폐기한다.
일 실시예에 따른 렌더링 장치는, 프리미티브 어셈블리 스트림을 이용하여, 더미 값으로 생성된 프리미티브를 제거할 수 있다.
도 6은 도 5에 도시된 방법을 설명하기 위한 예시도이다.
도 6에서, 도 3에서의 설명과 중복되는 부분에 대한 설명은 생략한다. 특히, 도 6의 정점 쉐이더(620a, 620b), 헐 쉐이더(640a, 640b), 테셀레이터(650a, 650b) 및 도메인 쉐이더(660a, 660b)는 도 3의 정점 쉐이더(310a, 310b), 헐 쉐이더(320a, 320b), 테셀레이터(330a, 330b) 및 도메인 쉐이더(340a, 340b)와 동일 대응되므로, 도 3에서와 중복되는 설명은 생략한다.
도 6은 일 실시예에 따른 2-패스 렌더링 파이프라인이 수행되는 것을 나타낸다. 도 6의 (a)는 도메인 가시성 스트림(675) 및 프리미티브 어셈블리 스트림(690)을 생성하기 위한 제1 렌더링 파이프라인을 나타낸다. 도 6의 (b)는 도메인 가시성 스트림(675) 및 프리미티브 어셈블리 스트림(690)을 이용하여 가시적인 도메인에 대한 처리를 수행하는, 실제 렌더링을 위한 제2 렌더링 파이프라인을 나타낸다.
일 실시예에 따른 렌더링 방법은 GPU에서 수행될 수 있다. GPU는 고도의 병렬 구조를 사용하여 데이터를 빠르게 조작하도록 설계된 전용 프로세서이다. 특히, GPU는 그래픽적 프로세싱을 수행하기 위해 렌더링 파이프라인의 프로그램 가능한 스테이지들 또는 고정된 기능의 스테이지들을 실행하도록 구성될 수 있다. 일 예에서, GPU는 3차원 오브젝트들을 디스플레이용의 2차원 공간으로 렌더링하기 위해 3차원 그래픽스 렌더링 파이프라인을 실행하도록 구성될 수도 있다. 예를 들면, GPU는 쉐이딩, 블렌딩(blending), 일루미네이팅(illuminationg) 등과 같은 기능 및 디스플레이 상에 디스플레이될 픽셀들에 대한 픽셀 값들을 생성하기 위한 기능들을 수행할 수 있다. 일 실시예에서, GPU는 쉐이딩, 블렌딩, 및 일루미네이팅 등과 같은 기능을 수행하기 이전에, 타일링 기능으로도 칭해지는 비닝 패스(binning pass)를 수행할 수 있다. 타일 기반의 렌더링 아키텍쳐에서는 전체 프레임의 타일들이 별도로 렌더링되고 그 다음 디스플레이용으로 결합된다.
일 실시예에 따른 디바이스는 GPU와 유사한 복수의 GPU들 또는 GPU 코어들을 포함할 수 있다. 그래픽스 프로세싱 태스크들은 이들 GPU들 또는 GPU 코어들 사이에서 분할될 수 있다.
일 실시예에 따르면, 도 6의 (a)의 제1 렌더링 파이프라인과 도 6의 (b)의 제2 렌더링 파이프라인은 하나의 GPU 코어에서 수행될 수 있다. 즉, 하나의 정점 쉐이더(620a, 620b)가 도 6의 (a)에서 수행되는 제1 정점 쉐이딩 및 도 6의 (b)에서 수행되는 제2 정점 쉐이딩을 순차적으로 수행할 수 있다. 또한, 하나의 헐 쉐이더(640a, 640b)는 도 6의 (a)에서 수행되는 제1 헐 쉐이딩 및 도 6의 (b)에서 수행되는 제2 헐 쉐이딩을 순차적으로 수행할 수 있다. 하나의 테셀레이터(650a, 650b)는 도 6의 (a)에서 수행되는 제1 테셀레이션 및 도 6의 (b)에서 수행되는 제2 테셀레이션을순차적으로 수행할 수 있다. 하나의 도메인 쉐이더(660a, 660b)는 도 6의 (a)에서 수행되는 제1 도메인 쉐이딩 및 도 6의 (b)에서 수행되는 제2 도메인 쉐이딩을 순차적으로 수행할 수 있다. 하나의 프리미티브 어셈블러(670a, 670b)는 도 6의 (a)에서 수행되는 제1 프리미티브 어셈블리 및 도 6의 (b)에서 수행되는 제2 프리미티브 어셈블리를 순차적으로 수행할 수 있다. 하나의 HSR부(Hidden Surface Removal unit)(680a, 680b)는 도 6의 (a)에서 수행되는 제1 숨은 공간 삭제(Hidden Surface Removal) 및 제2 숨은 공간 삭제를 순차적으로 수행할 수 있다.
다른 실시예에 따르면, 도 6의 (a)의 제1 렌더링 파이프라인과 도 6의 (b)의 제2 렌더링 파이프라인은 별개의 GPU 또는 별개의 GPU 코어에서 수행될 수 있다.
도 6의 (a)를 참조하면, 제1 렌더링 파이프라인 수행 시 렌더링 장치는 각각의 입력 패치에 포함된 도메인이 렌더링 시 가시적인지 여부를 판단하여, 각각의 입력 패치에 대한 도메인 가시성 스트림(675)을 생성할 수 있다. 또한, 도메인이 프리미티브로 어셈블리 되는지 여부를 나타내는 프리미티브 어셈블리 스트림(690)을 생성할 수 있다. 제1 렌더링 파이프라인은 도메인 가시성 스트림(675) 및 프리미티브 어셈블리 스트림(690)을 생성하는 데 필요한 정보만를 이용하여 수행될 수 있다.
도 6의 (a)의 입력 패치 스트림(635)에 표시된 A 내지 F는 입력 패치 스트림(635)의 제1 패치 내지 제6 패치 각각의 식별자를 나타낸다. 렌더링 장치는 제1 렌더링 파이프라인 수행 결과 획득한 각각의 입력 패치에 매칭되는 도메인 가시성 스트림(675)을 테셀레이터(650b)에서 이용하여 가시적인 도메인에 대한 도메인 쉐이딩을 수행할 수 있다. 도 6의 도메인 가시성 스트림(675)은 입력 패치 스트림(635)에 포함된 입력 패치 중 어느 하나의 입력 패치에 포함된, 식별자 1 내지 8로 표현된 도메인이 가시적인지 여부를 나타내는 정보를 포함한다. 프리미티브 어셈블리 스트림(690)은 도메인들이 식별자 1 내지 6으로 표현된 프리미티브로 어셈블리 되는지 여부를 나타내는 정보를 포함한다.
제2 렌더링 파이프라인 수행 시 렌더링 장치는 입력 패치 스트림(635)을 이용하여, 각각의 입력 패치에 매칭되는 도메인 가시성 스트림(675)을 검색할 수 있다.
도 6의 (b)를 참조하면, 테셀레이터(650b)는 처리할 입력 패치와 매칭되는 도메인 가시성 스트림(675)을 이용하여, 도메인 가시성 스트림(675)에 의해 가시적인 도메인에 대한 도메인 정보를 생성한다. 도메인 쉐이더(660b)는 도메인 정보를 이용하여 가시적인 도메인에 대해서만 도메인 쉐이딩을 수행할 수 있다. 또한, 프리미티브 어셈블러(670b)는 프리미티브 어셈블리 스트림(690)을 이용하여 도메인 쉐이더의 출력 정점을 프리미티브로 어셈블리할 수 있다.
도 7은 또 다른 실시예에 따른 선택적 정점 쉐이딩 방법을 설명하기 위한 흐름도이다.
단계 710에서, 렌더링 장치는 입력된 적어도 하나의 정점이 렌더링될 때 가시적인지 여부를 나타내는 정점 가시성 스트림을 생성할 수 있다.
렌더링 장치는 제1 렌더링 파이프라인을 수행하여 정점 가시성 스트림을 획득할 수 있다. 렌더링 장치는 정점에 대한 위치 정보를 이용한 제1 렌더링 파이프라인을 수행해, 정점 가시성 스트림을 획득할 수 있다.
일 실시예에 따른 렌더링 장치는 정점들에 대한 깊이 테스트에 기초하여, 각각의 정점이 렌더링될 때 가시적인지 여부를 나타내는 정점 가시성 스트림을 생성할 수 있다.
다른 실시예에 따른 렌더링 장치는 정점이 프리미티브로 어셈블리 되는지 여부를 나타내는 프리미티브 어셈블리 스트림을 추가적으로 생성할 수 있다.
테셀레이터와 정점 쉐이더가 함께 작동하는 경우, 정점 쉐이더는 입력 패치를 관리하는 기능을 수행할 수 있다. 이 경우, 렌더링 장치는 입력 패치의 적어도 하나의 조절점이 렌더링될 때 가시적인지 여부를 나타내는, 조절점 가시성 스트림을 생성할 수 있다. 또한, 렌더링 장치는 조절점들이 패치로 어셈블리 되는지 여부를 나타내는 패치 어셈블리 스트림을 추가적으로 생성할 수 있다.
단계 720에서, 렌더링 장치는 정점 가시성 스트림을 이용하여, 가시적인 정점에 대한 정점 정보에 기초하여, 가시적인 정점에 대해 정점 쉐이딩을 수행할 수 있다.
단계 720에서 수행되는 제2 렌더링 파이프라인은 실제 화면에 디스플레이하기 위한 렌더링을 위한 과정으로, 단계 710에서 수행되었던 제1 렌더링 파이프라인보다 많은 정보를 처리해야 하는 과정이다. 다만, 렝더링 장치는 정점이 가시적인지 여부에 따라, 실제 렌더링될 때 비가시적인 정점에 대한 처리를 생략하므로, 오버헤드를 감소시킬 수 있다.
일 실시예에 따른 렌더링 장치는 렌더링 시 비가시적인 정점에 대한 처리는 생략할 수 있다. 따라서, 불필요한 연산 및 메모리 사용을 줄일 수 있다.
다른 실시예에 따른 렌더링 장치는 프리미티브 어셈블리 스트림을 이용하여, 정점 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행할 수 있다.
도 8은 도 7에 도시된 방법을 설명하기 위한 예시도이다.
도 8은 렌더링 파이프라인에 테셀레이터가 포함되어 있지 않은 경우에 따른 실시예를 나타낼 수 있다. 또한, 도 8은 렌더링 파이프라인에 테셀레이터가 포함되어 있으나, 테셀레이터가 작동하지 않는 경우에 따른 실시예를 나타낼 수 있다.
도 8은, 일 실시예에 따른 2-패스 렌더링 파이프라인이 수행되는 것을 나타낸다. 도 8의 (a)는 정점 가시성 스트림(825)을 생성하기 위한 제1 렌더링 파이프라인을 나타낸다. 도 8의 (b)는 정점 가시성 스트림(825)을 이용하여 가시적인 정점에 대한 처리를 수행하는, 실제 렌더링을 위한 제2 렌더링 파이프라인을 나타낸다. 정점 가시성 스트림(825)은 입력 패치 또는 입력 프리미티브를 구성하는, 식별자 1 내지 8로 표현된 정점들이 가시적인지 여부를 나타내는 정보를 포함한다.
일 실시예에 따른 렌더링 장치는, 제1 렌더링 파이프라인 수행 시 정점 쉐이더(820a)에 입력되는 프리미티브 또는 패치에 포함된 정점이 렌더링 시 가시적인지 여부를 판단할 수 있다. 렌더링 장치는, 각각의 정점이 렌더링 시 가시적인지 여부에 기초하여 정점 가시성 스트림(825)을 생성할 수 있다.
다른 실시예에 따른 렌더링 장치는, 정점들이 프리미티브로 어셈블리 되는지 여부를 나타내는 프리미티브 어셈블리 스트림(835)을 추가적으로 생성할 수 있다. 프리미티브 어셈블리 스트림(835)은 식별자 1 내지 8로 표현된 정점들이 식별자 1 내지 6으로 표현된 프리미티브로 어셈블리 되는지 여부를 나타내는 정보를 포함한다. 결과적으로 프리미티브 어셈블리 스트림(835)은 프리미티브 각각의 가시성을 나타낼 수 있다. 제1 렌더링 파이프라인은 정점 가시성 스트림(825) 및 프리미티브 어셈블리 스트림(835)을 생성하는 데 필요한 정보를 이용하여 수행될 수 있다. 정점 가시성 스트림(825) 및 프리미티브 어셈블리 스트림(835)을 생성하는 데 필요한 정보는 예를 들어, 정점에 대한 위치 정보를 포함할 수 있다.
렌더링 장치는 제1 렌더링 파이프라인 수행 결과 획득한 정점 가시성 스트림(825)을 정점 쉐이더(820b)에서 이용하여 가시적인 정점에 대한 처리를 수행할 수 있다.
제2 렌더링 파이프라인 수행 시 정점 쉐이더(820b)는 처리할 입력 패치 또는 입력 프리미티브에 매칭되는 정점 가시성 스트림(825)을 이용하여, 정점 가시성 스트림(825)에 의해 가시적인 것으로 나타난 정점에 대해서만 처리를 수행할 수 있다. 또한, 프리미티브 어셈블러(830b)는 프리미티브 어셈블리 스트림(835)을 이용하여 정점 쉐이더(820b)의 출력 정점을 프리미티브로 어셈블리할 수 있다.
도 9는 도 7에 도시된 방법을 설명하기 위한 예시도이다.
도 9는 렌더링 파이프라인의 테셀레이터가 작동하는 경우에 따른 실시예를 나타낸다. 렌더링 파이프라인의 테셀레이터가 작동하는 경우, 정점 쉐이더는 입력 패치를 관리하는 기능을 수행할 수 있다.
도 9에서, 도 6에서의 설명과 중복되는 부분에 대한 설명은 생략한다. 특히, 도 9의 헐 쉐이더(940a, 940b), 테셀레이터(950a, 950b), 도메인 쉐이더(960a, 960b) 및 프리미티브 어셈블러(970a, 970b)는 도 6의 헐 쉐이더(640a, 640b), 테셀레이터(650a, 650b), 도메인 쉐이더(660a, 660b) 및 프리미티브 어셈블러(670a, 670b)와 동일 대응되므로, 도 6에서와 중복되는 설명은 생략한다.
도 9는, 일 실시예에 따른 2-패스 렌더링 파이프라인이 수행되는 것을 나타낸다. 도 9의 (a)는 조절점(control point) 가시성 스트림(925), 패치 어셈블리 스트림(935), 도메인 가시성 스트림(975) 및 프리미티브 어셈블리 스트림(990)을 생성하기 위한 제1 렌더링 파이프라인을 나타낸다. 조절점 가시성 스트림(925)은 입력 패치에 포함된 적어도 하나의 조절점 각각이 렌더링될 때 가시적인지 여부를 나타낼 수 있다.
도 9의 (b)는 조절점 가시성 스트림(925)을 이용하여 가시적인 조절점에 대한 처리를 수행하는, 실제 렌더링을 위한 제2 렌더링 파이프라인을 나타낸다. 조절점 가시성 스트림(925)은 입력 패치를 구성하는, 식별자 1 내지 8로 표현된 조절점들이 가시적인지 여부를 나타내는 정보를 포함한다.
정점 쉐이더(vertex shader)(920a, 920b)는 입력 패치의 각 조절점에 대한 동작들을 수행할 수 있다. 정점 쉐이더(920a, 920b)는 가상 공간에서의 각각의 조절점의 3차원 위치를, 각각의 조절점이 스크린 상에서 나타나는 2차원 상의 좌표 및 깊이 값으로 변환할 수 있다. 정점 쉐이더(920a, 920b)는 위치, 색상 및 텍스쳐 좌표와 같은 특성들을 조작할 수 있지만, 새로운 조절점들을 생성하지는 않는다.
일 실시예에 따른 렌더링 장치는, 제1 렌더링 파이프라인 수행 시 정점 쉐이더(920a)에 입력되는 패치의 조절점이 렌더링 시 가시적인지 여부를 판단할 수 있다. 렌더링 장치는, 각각의 조절점이 렌더링 시 가시적인지 여부에 기초하여 조절점 가시성 스트림(925)을 생성할 수 있다.
다른 실시예에 따른 렌더링 장치는, 조절점들이 패치로 어셈블리 되는지 여부를 나타내는 패치 어셈블리 스트림(935)을 추가적으로 생성할 수 있다. 패치 어셈블리 스트림(935)은 조절점이 식별자 1 내지 6으로 표현된 패치로 어셈블리 되는지 여부를 나타내는 정보를 포함한다. 결과적으로 패치 어셈블리 스트림(935)은 패치 각각의 가시성을 나타낼 수 있다. 제1 렌더링 파이프라인은 조절점 가시성 스트림(925) 및 패치 어셈블리 스트림(935)을 생성하는 데 필요한 정보를 이용하여 수행될 수 있다. 조절점 가시성 스트림(925) 및 패치 어셈블리 스트림(935)을 생성하는 데 필요한 정보는 예를 들어, 조절점에 대한 위치 정보를 포함할 수 있다.
장치는 제1 렌더링 파이프라인 수행 결과 획득한 조절점 가시성 스트림(925)을 정점 쉐이더(920b)에서 이용하여 가시적인 조절점에 대한 처리를 수행할 수 있다.
제2 렌더링 파이프라인 수행 시 정점 쉐이더(920b)는 처리할 입력 패치에 매칭되는 조절점 가시성 스트림(925)을 이용하여, 조절점 가시성 스트림(925)에 의해 가시적인 것으로 나타난 조절점에 대해서만 처리를 수행할 수 있다. 또한, 패치 어셈블러(930b)는 패치 어셈블리 스트림(935)을 이용하여 정점 쉐이더(920b)의 출력 조절점을 패치로 어셈블리할 수 있다.
이러한 방식으로, 일 실시예에 따른 렌더링 장치는 조절점 가시성 스트림(925)을 이용하여 가시적인 조절점에 대해서만 정점 쉐이딩을 수행할 수 있다. 또한, 렌더링 장치는 패치 어셈블리 스트림(935)을 이용하여, 패치로 어셈블리되는 조절점들만의 정보를 이용하여, 패치 어셈블리를 수행할 수 있다. 따라서, 일 실시예에 따른 렌더링 장치는 전체적인 렌더링 파이프라인 수행 시 연산량을 감소시켜, 불필요한 전력 소모를 줄일 수 있다.
도 10 내지 도 13은 일 실시예에 따른 도메인 가시성 스트림 및 프리미티브 어셈블리 스트림 생성을 설명하기 위한 예시도이다.
도 10 내지 도 13의 (a)를 참조하면, 프리미티브 스트림(PS; Primitive Stream)(1020, 1120, 1220, 1320)은 입력 패치(1010, 1110, 1210, 1310)를 구성하는 프리미티브 각각의 가시성을 나타낼 수 있다. 입력 패치(1010, 1110, 1210, 1310)에 나타난 A 내지 F는 입력 패치를 구성하는 프리미티브 각각의 식별자를 나타낸다. 프리미티브 스트림(1020, 1120, 1220, 1320)에서, 1은 대응되는 프리미티브가 가시적임을, 0은 대응되는 프리미티브가 비가시적임을 나타낸다.
도 10 내지 도 13의 (b)는 입력 패치(1010, 1110, 1210, 1310)의 도메인이 도메인 쉐이딩(DS)(1030, 1130, 1230, 1330)을 거쳐 정점으로 출력되고, 정점이 프리미티브 어셈블리(PA)(1040, 1140, 1240, 1340)를 거쳐 프리미티브로 출력되고, 프리미티브가 숨은 공간 삭제(HSR)(1050, 1150, 1250, 1350) 단계를 거치는 과정을 나타낸다. 도 10 내지 도 13의 (b)의 좌측을 참조하면, 제1 렌더링 파이프라인이 수행됨에 따라 도메인 가시성 스트림(DM)(1055, 1155, 1255, 1355) 및 프리미티브 어셈블리 스트림(PM)(1060, 1160, 1260, 1360)이 생성되는 것이 도시되어 있다. 정점 스트림(VS; Vertex Stream)(1035, 1135, 1235, 1335)은 입력 패치(1010, 1110, 1210, 1310)의 도메인이 도메인 쉐이딩(1030, 1130, 1230, 1330)을 거쳐 생성될 수 있다.
일 실시예에 따른 프리미티브 어셈블리 스트림(1060, 1160, 1260, 1360)은 각각의 프리미티브가 어셈블리되는 데 사용되는 도메인들 중 도메인 가시성 스트림(1055, 1155, 1255, 1355) 상에서 가장 먼저 표시되는 도메인의 식별자를 포함할 수 있다. 이 때, 프리미티브가 어셈블리되는 데 사용되는 도메인들 중 도메인 가시성 스트림(1055, 1155, 1255, 1355) 상에서 가장 먼저 표시되는 도메인이 비가시적인 경우, 이 프리미티브는 프리미티브 어셈블리 스트림(1060, 1160, 1260, 1360)에서 제외될 수 있다.
도 10 내지 도 13의 (b)의 우측을 참조하면, 렌더링 장치가 도메인 가시성 스트림(1055, 1155, 1255, 1355)을 이용하여 도메인 쉐이딩(1030)을 수행하는 것과, 프리미티브 어셈블리 스트림(1060, 1160, 1260, 1360)을 이용하여 프리미티브 어셈블리(1040, 1140, 1240, 1340)를 수행하는 것이 나타나 있다.
도 10 내지 도 13의 (c)를 참조하면, 가시적인 프리미티브에 대한 스트림(1070, 1170, 1270, 1370)이 식별자와 함께 나타나 있다. 즉, 개시된 실시예에 따른 렌더링 장치는 비가시적인 프리미티브에 대한 처리를 생략하고 가시적인 프리미티브에 대해서만 처리를 수행할 수 있다.
이하, 도 10 내지 도 13 각각을 더 상세하게 살펴본다.
도 10의 (a)는 입력 패치(1010) 및 프리미티브 스트림(1020)을 나타낸다. 도 10의 (a)를 참조하면, 입력 패치(1010)는 식별자 0 내지 6으로 정의된 도메인들과 식별자 A 내지 E로 정의된 프리미티브들로 구성된다.
도 10의 (b)의 좌측을 참조하면, 정점 스트림(1035)은 입력 패치(1010)에 포함된 정점 각각을 식별자 0 내지 6으로 나타낼 수 있다. 도 10의 (a)의 입력 패치(1010)에 포함된 도메인 0 내지 6은 가시적이므로, 도메인 가시성 스트림(1055)에서 식별자 0 내지 6에 대응되는 비트들은 1의 값을 가져 도메인이 가시적임을 나타낼 수 있다. 또한, 입력 패치(1010)에 포함된 프리미티브 A, B, C, D 및 E는 가시적이므로, 프리미티브 어셈블리 스트림(1060)에서 식별자 A, B, C, D 및 E에 대응되는 비트들은 1의 값을 가져 프리미티브가 어셈블리될 수 있음을 나타낼 수 있다.
10의 (b)를 참조하면, 프리미티브 어셈블리 스트림(1060)의 첫 번째 비트는 도메인 0 내지 2를 이용하여 어셈블리되는 프리미티브를 나타내고, 두 번째 비트는 도메인 1 내지 3을 이용하여 어셈블리되는 프리미티브를 나타내고, 세 번째 비트는 도메인 2 내지 4를 이용하여 어셈블리되는 프리미티브를 나타내고, 네 번째 비트는 도메인 3 내지 5를 이용하여 어셈블리되는 프리미티브를 나타내고, 다섯 번째 비트는 도메인 4 내지 6을 이용하여 어셈블리되는 프리미티브를 나타낸다. 여기서, 모든 프리미티브가 어셈블리되므로, 프리미티브 어셈블리 스트림(1060)의 모든 비트 값은 1을 나타낸다.
도 10(b)의 도메인 가시성 스트림(1055)을 참조하면, 모든 도메인은 렌더링 시 가시적이다. 따라서, 렌더링 장치는 모든 도메인에 대한 도메인 정보를 생성하고, 도메인 쉐이딩(1030)을 수행한다. 또한, 도 10의 (b)의 프리미티브 어셈블리 스트림(1060)을 참조하면, 모든 프리미티브가 어셈블리 됨을 나타내므로, 모든 프리미티브에 대해 프리미티브 어셈블리(1040)를 수행할 수 있다.
도 11의 (a)는 입력 패치(1110) 및 프리미티브 스트림(1120)을 나타낸다. 도 11의 (a)를 참조하면, 입력 패치(1110)는 식별자 0 내지 6으로 정의된 도메인들과 식별자 A 내지 E로 정의된 프리미티브들로 구성된다.
도 11의 (b)의 좌측을 참조하면, 정점 스트림(1135)은 입력 패치(1110)에 포함된 정점 각각을 식별자 0 내지 6으로 나타낼 수 있다. 도 11의 (a)의 입력 패치(1110)에 포함된 도메인 0 내지 6은 가시적이므로, 도메인 가시성 스트림(1155)에서 식별자 0 내지 6에 대응되는 비트들은 1의 값을 가져 도메인이 가시적임을 나타낼 수 있다. 또한, 입력 패치(1110)에 포함된 프리미티브 A, C, D 및 E는 가시적이고, B는 비가시적이므로, 프리미티브 어셈블리 스트림(1160)에서 식별자 A, C, D 및 E에 대응되는 비트들은 1의 값을 가져 프리미티브가 어셈블리될 수 있음을 나타내고, 식별자 B에 대응되는 비트는 0의 값을 가져 프리미티브가 어셈블리되지 않음을 나타낼 수 있다.
11의 (b)를 참조하면, 프리미티브 어셈블리 스트림(1160)의 첫 번째 비트는 도메인 0 내지 2를 이용하여 어셈블리되는 프리미티브를 나타내고, 두 번째 비트는 도메인 1 내지 3을 이용하여 어셈블리되는 프리미티브를 나타내고, 세 번째 비트는 도메인 2 내지 4를 이용하여 어셈블리되는 프리미티브를 나타내고, 네 번째 비트는 도메인 3 내지 5를 이용하여 어셈블리되는 프리미티브를 나타내고, 다섯 번째 비트는 도메인 4 내지 6을 이용하여 어셈블리되는 프리미티브를 나타낸다. 여기서, 프리미티브 어셈블리 스트림(1160)의 두 번째 비트가 나타내는, 프리미티브 B는 어셈블리되지 않는 프리미티브이므로, 프리미티브 B에 대응되는 비트는 0을 나타내고, 나머지 프리미티브에 대응되는 비트는 1을 나타낼 수 있다.
도 11(b)의 도메인 가시성 스트림(1155)을 참조하면, 모든 도메인은 렌더링 시 가시적이다. 따라서, 렌더링 장치는 모든 도메인에 대한 도메인 정보를 생성하고, 도메인 쉐이딩(1130)을 수행한다. 또한, 도 11의 (b)의 프리미티브 어셈블리 스트림(1160)을 참조하면, 식별자가 A, C, D 및 E인 프리미티브만이 어셈블리 됨을 나타내므로, 각각의 프리미티브의 식별자에 대응하는 값이 1을 갖는 프리미티브 A, C, D 및 E에 대해서만 프리미티브 어셈블리(1140)를 수행할 수 있다.
도 12의 (a)는 입력 패치(1210) 및 프리미티브 스트림(1220)을 나타낸다. 도 12의 (a)를 참조하면, 입력 패치(1210)는 식별자 0 내지 6으로 정의된 도메인들과 식별자 A 내지 E로 정의된 프리미티브들로 구성된다.
도 12의 (b)의 좌측을 참조하면, 정점 스트림(1235)은 입력 패치(1210)에 포함된 정점 각각을 식별자 0 내지 6으로 나타낼 수 있다. 도 12의 (a)의 입력 패치(1210)에 포함된 도메인 0 내지 2 및 4 내지 6은 가시적이므로, 도메인 가시성 스트림(1255)에서 식별자 0 내지 2 및 4 내지 6에 대응되는 비트들은 1의 값을 가져 도메인이 가시적임을 나타낼 수 있다.
또한, 입력 패치(1210)에 포함된 프리미티브 A 및 E는 가시적이고, B, C 및 D는 비가시적이다. 프리미티브 어셈블리 스트림(1260)의 첫 번째 비트는 도메인 0 내지 2를 이용하여 어셈블리되는 프리미티브를 나타내고, 두 번째 비트는 도메인 1 내지 3을 이용하여 어셈블리되는 프리미티브를 나타내고, 세 번째 비트는 도메인 2 내지 4를 이용하여 어셈블리되는 프리미티브를 나타낼 수 있다. 도메인 3은 비가시적인 도메인이므로 도메인 3 내지 5를 이용하여 어셈블리되는 프리미티브(프리미티브 D)는 프리미티브 어셈블리 스트림(1260)에서 제외할 수 있다. 따라서, 프리미티브 어셈블리 스트림(1260)의 네 번째 비트는 도메인 4 내지 6를 이용하여 어셈블리되는 프리미티브를 나타낸다. 여기서, 프리미티브 어셈블리 스트림(1260)의 두 번째 비트 및 세 번째 비트가 나타내는, 프리미티브 B 및 C는 어셈블리되지 않는 프리미티브이므로, 대응되는 비트는 0을 나타내고, 나머지 프리미티브에 대응되는 비트는 1을 나타낼 수 있다.
도 12의 (b)의 도메인 가시성 스트림(1255)을 참조하면, 도메인 0 내지 2 및 4 내지 6은 렌더링 시 가시적이다. 따라서, 렌더링 장치는 도메인 0 내지 2 및 4 내지 6에 대한 도메인 정보를 생성하고, 도메인 쉐이딩(1230)을 수행한다. 또한, 도 12의 (b)의 프리미티브 어셈블리 스트림(1260)을 참조하면, 식별자가 A 및 E인 프리미티브만이 어셈블리됨을 나타내므로, 각각의 프리미티브의 식별자에 대응하는 값이 1을 갖는 프리미티브 A 및 E에 대해서만 프리미티브 어셈블리(1240)를 수행할 수 있다.
도 13의 (a)는 입력 패치(1310) 및 프리미티브 스트림(1320)을 나타낸다. 도 13의 (a)를 참조하면, 입력 패치(1310)는 식별자 0 내지 7로 정의된 도메인들과 식별자 A 내지 F로 정의된 프리미티브들로 구성된다.
도 13의 (b)의 좌측을 참조하면, 정점 스트림(1335)은 입력 패치(1310)에 포함된 정점 각각을 식별자 0 내지 7로 나타낼 수 있다. 도 13의 (a)의 입력 패치(1310)에 포함된 도메인 0 내지 2 및 5 내지 7은 가시적이므로, 도메인 가시성 스트림(1355)에서 식별자 0 내지 2 및 5 내지 7에 대응되는 비트들은 1의 값을 가져 도메인이 가시적임을 나타낼 수 있다.
또한, 도 13의 (a)의 입력 패치(1310)에 포함된 프리미티브 A 및 F는 가시적이고, B, C, D 및 E는 비가시적이다. 프리미티브 어셈블리 스트림(1360)의 첫 번째 비트는 도메인 0 내지 2를 이용하여 어셈블리되는 프리미티브를 나타내고, 두 번째 비트는 도메인 1 내지 3을 이용하여 어셈블리되는 프리미티브를 나타내고, 세 번째 비트는 도메인 2 내지 4를 이용하여 어셈블리되는 프리미티브를 나타낼 수 있다. 도메인 3은 비가시적인 도메인이므로 도메인 3 내지 5를 이용하여 어셈블리되는 프리미티브(프리미티브 D)는 프리미티브 어셈블리 스트림(1360)에서 제외할 수 있다. 또한, 도메인 4는 비가시적인 도메인이므로 도메인 4 내지 6를 이용하여 어셈블리되는 프리미티브(프리미티브 E)는 프리미티브 어셈블리 스트림(1360)에서 제외할 수 있다. 따라서, 프리미티브 어셈블리 스트림(1360)의 네 번째 비트는 도메인 5 내지 7을 이용하여 어셈블리되는 프리미티브(프리미티브 F)를 나타낸다. 여기서, 프리미티브 어셈블리 스트림(1360)의 두 번째 비트 및 세 번째 비트가 나타내는, 프리미티브 B 및 C는 어셈블리되지 않는 프리미티브이므로, 대응되는 비트는 0을 나타내고, 나머지 프리미티브에 대응되는 비트는 1을 나타낼 수 있다.
도 13의 (b)의 도메인 가시성 스트림(1355)을 참조하면, 도메인 0 내지 2 및 5 내지 7은 렌더링 시 가시적이다. 따라서, 렌더링 장치는 도메인 0 내지 2 및 5 내지 7에 대한 도메인 정보를 생성하고, 도메인 쉐이딩(1330)을 수행한다. 또한, 도 13의 (b)의 프리미티브 어셈블리 스트림(1360)을 참조하면, 식별자가 A 및 F인 프리미티브만이 어셈블리됨을 나타내므로, 각각의 프리미티브의 식별자에 대응하는 값이 1을 갖는 프리미티브 A 및 F에 대해서만 프리미티브 어셈블리(1340)를 수행할 수 있다.
도 14는 다른 실시예에 따른 정점 가시성 스트림 및 프리미티브 어셈블리 스트림 생성을 설명하기 위한 예시도이다.
도 14의 (a)는 입력 패치 또는 입력 프리미티브(1410), 및 프리미티브 스트림(1420)을 나타낸다. 여기서는 입력 패치라 가정한다. 도 14의 (a)를 참조하면, 입력 패치(1410)는 식별자 0 내지 6으로 정의된 정점과 식별자 A 내지 E로 정의된 프리미티브로 구성된다. 프리미티브 스트림(1420)은 입력 패치(1410)를 구성하는 프리미티브 각각의 가시성을 나타낼 수 있다. 여기서는, 1은 프리미티브가 가시적임을, 0은 프리미티브가 비가시적임을 나타낸다.
도 14의 (b)는 입력 정점이 정점 쉐이딩(VS; Vertex Shading)(1430)을 거쳐 출력 정점으로 출력되고, 출력 정점이 프리미티브 어셈블리(1440)를 거쳐 프리미티브로 출력되고, 프리미티브가 숨은 공간 삭제(1450) 단계를 거치는 과정을 나타낸다.
도 14의 (b)의 좌측을 참조하면, 제1 렌더링 파이프라인이 수행되면, 정점 가시성 스트림(1455) 및 프리미티브 어셈블리 스트림(1460)이 생성된다. 정점 스트림(1435)은 입력 정점이 정점 쉐이딩(1430)을 거쳐 생성될 수 있다. 정점 스트림(1435)은 입력 패치(1410)에 포함된 정점 각각을 식별자 0 내지 6으로 나타낼 수 있다. 도 14의 (a)의 입력 패치(1410)에 포함된 정점 0 내지 6은 가시적이므로, 정점 가시성 스트림(1455)에서 식별자 0 내지 6에 대응되는 비트들은 1의 값을 가져 정점이 가시적임을 나타낼 수 있다. 또한, 도 14의 (a)의 입력 패치(1410)에 포함된 프리미티브 A, B, C, D 및 E는 가시적이므로, 프리미티브 어셈블리 스트림(1460)에서 식별자 A, B, C, D 및 E에 대응되는 비트들은 1의 값을 가져 프리미티브가 어셈블리될 수 있음을 나타낼 수 있다.
일 실시예에 따른 프리미티브 어셈블리 스트림(1460)은 각각의 프리미티브가 어셈블리되는 데 사용되는 정점 중 정점 가시성 스트림(1455) 상에서 가장 먼저 표시되는 정점의 식별자를 포함할 수 있다. 예를 들어, 프리미티브 어셈블리 스트림(1460)의 첫 번째 비트는 정점 0 내지 2를 이용하여 어셈블리되는 프리미티브를 나타내고, 두 번째 비트는 정점 1 내지 3을 이용하여 어셈블리되는 프리미티브를 나타내고, 세 번째 비트는 정점 2 내지 4를 이용하여 어셈블리되는 프리미티브를 나타내고, 네 번째 비트는 정점 3 내지 5를 이용하여 어셈블리되는 프리미티브를 나타내고, 다섯 번째 비트는 정점 4 내지 6을 이용하여 어셈블리되는 프리미티브를 나타낼 수 있다. 여기서는, 모든 프리미티브가 어셈블리 되므로, 프리미티브 어셈블리 스트림(1460)의 모든 비트 값은 1을 나타낸다.
도 14의 (b)의 우측을 참조하면, 렌더링 장치가 정점 가시성 스트림(1455)을 이용하여 정점 쉐이딩(1430)을 수행하는 것과, 프리미티브 어셈블리 스트림(1460)을 이용하여 프리미티브 어셈블리(1440)를 수행하는 것이 나타나 있다. 도 14의 (b)의 정점 가시성 스트림(1455)을 참조하면, 모든 정점은 렌더링 시 가시적이므로, 렌더링 장치는 모든 정점에 대한 정점 정보를 이용하여 정점 쉐이딩(1430)을 수행한다. 또한, 도 14의 (b)의 프리미티브 어셈블리 스트림(1460)을 참조하면, 모든 프리미티브가 어셈블리 됨을 나타내므로, 모든 프리미티브에 대해 프리미티브 어셈블리(1440)를 수행할 수 있다.
도 14의 (c)를 참조하면, 가시적인 프리미티브에 대한 스트림(1470)이 식별자와 함께 나타나 있다. 개시된 실시예에 따른 렌더링 장치는 비가시적인 프리미티브에 대한 처리를 생략하고 가시적인 프리미티브에 대해서만 처리를 수행할 수 있다.
도 15는 일 실시예에 따른 테셀레이션 장치의 구조를 나타내는 블록도이다.
도 15에 도시된 바와 같이, 일 실시예에 따른 렌더링 장치(1500)는, 제1 렌더링 파이프라인 수행부(1510) 및 제2 렌더링 파이프라인 수행부(1520)를 포함할 수 있다.
일 실시예에 따르면, 제1 렌더링 파이프라인 수행부(1510) 및 제2 렌더링 파이프라인 수행부(1520)는 별개의 GPU 또는 GPU 코어에서 구현될 수 있다.
다른 실시예에 따르면, 제1 렌더링 파이프라인 수행부(1510) 및 제2 렌더링 파이프라인 수행부(1520)는 하나의 렌더링 파이프라인 수행부에서 2-패스 렌더링 파이프라인이 순차적으로 수행되는 것을 나타낼 수 있다.
제1 렌더링 파이프라인 수행부(1510)는 입력 패치의 적어도 하나의 도메인이 렌더링될 때 가시적인지 여부를 나타내는 도메인 가시성 스트림을 생성한다.
일 실시예에 따른 제1 렌더링 파이프라인 수행부(1510)는, 입력 패치의 정점에 대한 위치 정보를 이용한 렌더링 파이프라인을 수행하여, 도메인 가시성 스트림을 생성할 수 있다. 예를 들어, 제1 렌더링 파이프라인 수행부(1510)는, 입력 패치의 도메인에 대한 깊이 테스트에 기초하여, 도메인이 렌더링될 때 가시적인지 여부를 나타내는 도메인 가시성 스트림을 생성할 수 있다.
다른 실시예에 따른 제1 렌더링 파이프라인 수행부(1510)는 입력된 적어도 하나의 정점이 렌더링될 때 가시적인지 여부를 나타내는 정점 가시성 스트림을 생성할 수 있다.
또 다른 실시예에 따른 제1 렌더링 파이프라인 수행부(1510)는, 도메인 또는 정점이 프리미티브로 어셈블리되는지 여부를 나타내는 프리미티브 어셈블리 스트림을 생성할 수 있다.
또 다른 실시예에 따른 제1 렌더링 파이프라인 수행부(1510)는, 테셀레이터가 작동하는 경우 정점 쉐이더에 입력된 적어도 하나의 조절점이 렌더링될 때 가시적인지 여부를 나타내는 조절점 가시성 스트림을 생성할 수 있다. 또한, 제1 렌더링 파이프라인 수행부(1510)는, 조절점이 패치로 어셈블리되는지 여부를 나타내는 패치 어셈블리 스트림을 생성할 수 있다.
제2 렌더링 파이프라인 수행부(1520)는 도메인 가시성 스트림을 이용하여, 입력 패치의 가시적인 영역에 대한 도메인 정보를 생성하고, 도메인 정보에 기초하여, 가시적인 도메인에 대해 도메인 쉐이딩을 수행한다.
일 실시예에 따른 제2 렌더링 파이프라인 수행부(1520)는, 도메인 가시성 스트림에 의해 비가시적인 것으로 나타내어진 도메인에 대한 도메인 쉐이딩을 스킵할 수 있다.
다른 실시예에 따른 제2 렌더링 파이프라인 수행부(1520)는 정점 가시성 스트림을 이용하여, 가시적인 정점에 대한 정점 정보에 기초하여, 가시적인 정점에 대해 정점 쉐이딩을 수행할 수 있다.
또 다른 실시예에 따른 제2 렌더링 파이프라인 수행부(1520)는, 프리미티브 어셈블리 스트림을 이용하여, 프리미티브 어셈블리를 수행할 수 있다. 예를 들어, 제2 렌더링 파이프라인 수행부(1520)는 도메인 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행할 수 있다. 다른 예로, 제2 렌더링 파이프라인 수행부(1520)는 정점 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행할 수 있다.
또 다른 실시예에 따른 제2 렌더링 파이프라인 수행부(1520)는, 조절점 가시성 스트림을 이용하여, 가시적인 조절점에 대한 정점 쉐이딩을 수행할 수 있다. 또한, 제2 렌더링 파이프라인 수행부(1520)는, 패치 어셈블리 스트림을 이용하여, 패치 어셈블리를 수행할 수 있다.
일 실시예에 따른 렌더링 장치(1500)는 가시성 정보를 이용하여 선택적으로 테셀레이션을 수행할 수 있다. 즉, 제2 렌더링 파이프라인 수행 시 테셀레이터에서의 연산량 및 도메인 쉐이더에서의 연산량을 감소시킬 수 있다. 결과적으로 메모리 사용량 및 전력 소모를 감소시킬 수 있다.
다른 실시예에 따른 렌더링 장치(1500)는 가시성 정보를 이용하여 선택적으로 정점 쉐이딩을 수행하여, 제2 렌더링 파이프라인 수행 시 정점 쉐이더에서의 연산량을 감소시킬 수 있다. 결과적으로 메모리 사용량 및 전력 소모를 감소시킬 수 있다.
본 실시예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 실시예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다.
본 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.
1500: 렌더링 장치
1510: 제1 렌더링 파이프라인 수행부
1520: 제2 렌더링 파이프라인 수행부
1520: 제2 렌더링 파이프라인 수행부
Claims (20)
- 입력 패치의 적어도 하나의 도메인이 렌더링될 때 가시적인지 여부를 나타내는, 도메인 가시성 스트림을 생성하는 단계;
상기 도메인 가시성 스트림을 이용하여, 상기 입력 패치의 가시적인 영역에 대한 도메인 정보를 생성하는 단계; 및
상기 도메인 정보에 기초하여, 가시적인 도메인에 대해 도메인 쉐이딩을 수행하는 단계를 포함하는, 선택적 테셀레이션 방법. - 제1항에 있어서,
상기 도메인 가시성 스트림을 생성하는 단계는,
상기 입력 패치의 상기 도메인 각각에 대응하는 정점에 대한 위치 정보를 이용하여, 상기 도메인 가시성 스트림을 생성하는, 선택적 테셀레이션 방법. - 제1항에 있어서,
상기 도메인 가시성 스트림을 생성하는 단계는,
상기 입력 패치의 상기 도메인에 대하여 깊이 테스트를 수행함으로써 상기 도메인 가시성 스트림을 생성하는, 선택적 테셀레이션 방법. - 제1항에 있어서,
상기 도메인 가시성 스트림은, 상기 입력 패치 별로 도메인의 가시성을 나타내는 정보를 포함하는, 선택적 테셀레이션 방법. - 제4항에 있어서,
상기 가시성을 나타내는 정보는, 상기 입력 패치에 포함된 가시적인 도메인 세트 및 비가시적인 도메인 세트 중 더 적은 개수의 도메인을 갖는 도메인 세트에 포함된 도메인의 식별자와, 상기 더 적은 개수의 도메인을 갖는 도메인 세트에 포함된 도메인이 가시적인지 또는 비가시적인지를 구별하는 리버스 플래그를 포함하는, 선택적 테셀레이션 방법. - 제1항에 있어서,
상기 도메인 쉐이딩을 수행하는 단계는,
상기 도메인 가시성 스트림을 이용하여, 상기 입력 패치의 상기 도메인 중 비가시적인 도메인에 대한 도메인 쉐이딩을 스킵하는, 선택적 테셀레이션 방법. - 제1항에 있어서,
상기 도메인이 프리미티브로 어셈블리 되는지 여부를 나타내는, 프리미티브 어셈블리 스트림을 생성하는 단계; 및
상기 프리미티브 어셈블리 스트림을 이용하여, 상기 도메인 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행하는 단계를 더 포함하는, 선택적 테셀레이션 방법. - 제1항에 있어서,
상기 도메인 가시성 스트림을 생성하는 단계는,
제1 렌더링 파이프라인에서 수행되며,
상기 도메인 정보를 생성하는 단계 및 상기 가시적인 도메인에 대해 도메인 쉐이딩을 수행하는 단계는,
제2 렌더링 파이프라인에서 수행되는, 선택적 테셀레이션 방법. - 입력되는 적어도 하나의 정점이 렌더링될 때 가시적인지 여부를 나타내는, 정점 가시성 스트림을 생성하는 단계; 및
상기 정점 가시성 스트림을 이용하여, 상기 가시적인 정점에 대한 정점 정보에 기초하여, 가시적인 정점에 대해 정점 쉐이딩을 수행하는 단계를 포함하는, 선택적 정점 쉐이딩 방법. - 제9항에 있어서,
상기 정점이 프리미티브로 어셈블리 되는지 여부를 나타내는, 프리미티브 어셈블리 스트림을 생성하는 단계; 및
상기 프리미티브 어셈블리 스트림을 이용하여, 상기 정점 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행하는 단계를 더 포함하는, 선택적 정점 쉐이딩 방법. - 입력 패치의 적어도 하나의 도메인이 렌더링될 때 가시적인지 여부를 나타내는, 도메인 가시성 스트림을 생성하는 제1 렌더링 파이프라인 수행부; 및
상기 도메인 가시성 스트림을 이용하여, 상기 입력 패치의 가시적인 영역에 대한 도메인 정보를 생성하고, 상기 도메인 정보에 기초하여, 가시적인 도메인에 대해 도메인 쉐이딩을 수행하는 제2 렌더링 파이프라인 수행부를 포함하는, 렌더링 장치. - 제11항에 있어서,
제1 렌더링 파이프라인 수행부는, 상기 입력 패치의 상기 도메인 각각에 대응하는 정점에 대한 위치 정보를 이용하여, 상기 도메인 가시성 스트림을 생성하는, 렌더링 장치. - 제11항에 있어서,
제1 렌더링 파이프라인 수행부는, 상기 입력 패치의 상기 도메인에 대하여 깊이 테스트를 수행함으로써, 상기 도메인 가시성 스트림을 생성하는, 렌더링 장치. - 제11항에 있어서,
상기 도메인 가시성 스트림은, 상기 입력 패치 별로 도메인의 가시성을 나타내는 정보를 포함하는, 렌더링 장치. - 제11항에 있어서,
상기 제2 렌더링 파이프라인 수행부는, 상기 도메인 가시성 스트림을 이용하여, 상기 입력 패치의 상기 도메인들 중 비가시적인 도메인에 대한 도메인 쉐이딩을 스킵하는, 렌더링 장치. - 제11항에 있어서,
상기 제1 렌더링 파이프라인 수행부는, 상기 도메인이 프리미티브로 어셈블리되는지 여부를 나타내는 프리미티브 어셈블리 스트림을 생성하고,
상기 제2 렌더링 파이프라인 수행부는, 상기 프리미티브 어셈블리 스트림을 이용하여, 상기 도메인 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행하는, 렌더링 장치. - 입력되는 적어도 하나의 정점이 렌더링될 때 가시적인지 여부를 나타내는, 정점 가시성 스트림을 생성하는 제1 렌더링 파이프라인 수행부;
상기 정점 가시성 스트림을 이용하여, 상기 가시적인 정점에 대한 정점 정보에 기초하여, 가시적인 정점에 대해 정점 쉐이딩을 수행하는 제2 렌더링 파이프라인 수행부를 포함하는, 렌더링 장치. - 제17항에 있어서,
상기 제1 렌더링 파이프라인 수행부는, 상기 정점이 프리미티브로 어셈블리 되는지 여부를 나타내는, 프리미티브 어셈블리 스트림을 생성하고,
상기 제2 렌더링 파이프라인 수행부는, 상기 프리미티브 어셈블리 스트림을 이용하여, 상기 정점 쉐이딩 결과 획득된 정점에 대하여 프리미티브 어셈블리를 수행하는, 렌더링 장치. - 제1항 내지 제10항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
- 하드웨어와 결합되어 제1항 내지 제10항 중에 어느 한 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020140166630A KR20160063081A (ko) | 2014-11-26 | 2014-11-26 | 선택적 테셀레이션 방법 및 장치 |
| US14/939,059 US20160148426A1 (en) | 2014-11-26 | 2015-11-12 | Rendering method and apparatus |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020140166630A KR20160063081A (ko) | 2014-11-26 | 2014-11-26 | 선택적 테셀레이션 방법 및 장치 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| KR20160063081A true KR20160063081A (ko) | 2016-06-03 |
Family
ID=56010737
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020140166630A Withdrawn KR20160063081A (ko) | 2014-11-26 | 2014-11-26 | 선택적 테셀레이션 방법 및 장치 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20160148426A1 (ko) |
| KR (1) | KR20160063081A (ko) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
| US11087644B2 (en) | 2015-08-19 | 2021-08-10 | E Ink Corporation | Displays intended for use in architectural applications |
| WO2017205066A1 (en) | 2016-05-24 | 2017-11-30 | E Ink Corporation | Method for rendering color images |
| US20190176405A1 (en) * | 2016-08-12 | 2019-06-13 | Siemens Product Lifecycle Management Software Inc. | Computer aided design with high resolution lattice structures using graphics processing units (gpu) |
| US11080928B2 (en) * | 2019-04-01 | 2021-08-03 | Qualcomm Incorporated | Methods and apparatus for visibility stream management |
| US12380625B2 (en) | 2020-11-18 | 2025-08-05 | Qualcomm Incorporated | Methods and apparatus for selection of rendering modes |
| US20220319091A1 (en) * | 2021-03-31 | 2022-10-06 | Advanced Micro Devices, Inc. | Post-depth visibility collection with two level binning |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100277488A1 (en) * | 2009-04-30 | 2010-11-04 | Kevin Myers | Deferred Material Rasterization |
| GB201007348D0 (en) * | 2010-04-30 | 2010-06-16 | Imagination Tech Ltd | Programmable tessellation in a tile based rendering system |
| GB201104066D0 (en) * | 2011-03-09 | 2011-04-20 | Imagination Tech Ltd | Compression of a tessellated primitive index list in a tile rendering system |
| US9177351B2 (en) * | 2012-10-09 | 2015-11-03 | Qualcomm Incorporated | Multi-primitive graphics rendering pipeline |
| GB2544679B (en) * | 2012-12-20 | 2017-08-16 | Imagination Tech Ltd | Tessellating patches of surface data in tile based computer graphics rendering |
| US9123168B2 (en) * | 2013-01-30 | 2015-09-01 | Qualcomm Incorporated | Output ordering of domain coordinates for tessellation |
| US9269179B2 (en) * | 2013-03-15 | 2016-02-23 | Nvidia Corporation | System, method, and computer program product for generating primitive specific attributes |
| US9483861B2 (en) * | 2013-03-15 | 2016-11-01 | Qualcomm Incorporated | Tile-based rendering |
| US9836878B2 (en) * | 2013-03-15 | 2017-12-05 | Nvidia Corporation | System, method, and computer program product for processing primitive specific attributes generated by a fast geometry shader |
| US9754407B2 (en) * | 2014-08-12 | 2017-09-05 | Nvidia Corporation | System, method, and computer program product for shading using a dynamic object-space grid |
-
2014
- 2014-11-26 KR KR1020140166630A patent/KR20160063081A/ko not_active Withdrawn
-
2015
- 2015-11-12 US US14/939,059 patent/US20160148426A1/en not_active Abandoned
Also Published As
| Publication number | Publication date |
|---|---|
| US20160148426A1 (en) | 2016-05-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR20160063081A (ko) | 선택적 테셀레이션 방법 및 장치 | |
| JP6778485B2 (ja) | レンダリング方法及びその装置 | |
| EP2780891B1 (en) | Tessellation in tile-based rendering | |
| US10497085B2 (en) | Graphics processing method and system | |
| CN103886633B (zh) | 基于图块的计算机图形渲染中细分面数据的面片 | |
| US10169839B2 (en) | Method and apparatus for executing graphics pipeline | |
| KR20150039495A (ko) | 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치 | |
| KR20180055446A (ko) | 타일 기반 렌더링 방법 및 장치 | |
| US10078911B2 (en) | System, method, and computer program product for executing processes involving at least one primitive in a graphics processor, utilizing a data structure | |
| KR20160051155A (ko) | 렌더링 장치 및 방법 | |
| US10134171B2 (en) | Graphics processing systems | |
| JP2017062789A (ja) | グラフィックス処理装置、及びテクスチャリングのためのlodを決定する方法 | |
| KR20160046614A (ko) | 텍스쳐를 처리하는 방법 및 장치 | |
| US20150145858A1 (en) | Method and apparatus to process current command using previous command information | |
| KR100833842B1 (ko) | 3차원 그래픽 엔진에서의 픽셀 래스터라이제이션 처리방법및 그의장치 | |
| KR20180039479A (ko) | 그래픽 처리 장치 및 방법 | |
| US9607390B2 (en) | Rasterization in graphics processing system | |
| KR20180037838A (ko) | 텍스쳐를 처리하는 방법 및 장치 | |
| US10580209B2 (en) | Removal of degenerated sub-primitives in tessellation | |
| US10297067B2 (en) | Apparatus and method of rendering frame by adjusting processing sequence of draw commands | |
| US9449118B2 (en) | Hybrid hidden-line processor and method | |
| Nielsen et al. | Shader-based wireframe drawing | |
| KR20160131457A (ko) | 커브 렌더링을 수행하는 방법 및 장치. | |
| GB2540981A (en) | Graphics processing |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20141126 |
|
| PG1501 | Laying open of application | ||
| PC1203 | Withdrawal of no request for examination | ||
| WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |