KR101868200B1 - 타일 기반 렌더링에서의 테셀레이션 - Google Patents

타일 기반 렌더링에서의 테셀레이션 Download PDF

Info

Publication number
KR101868200B1
KR101868200B1 KR1020147016242A KR20147016242A KR101868200B1 KR 101868200 B1 KR101868200 B1 KR 101868200B1 KR 1020147016242 A KR1020147016242 A KR 1020147016242A KR 20147016242 A KR20147016242 A KR 20147016242A KR 101868200 B1 KR101868200 B1 KR 101868200B1
Authority
KR
South Korea
Prior art keywords
output
input
primitive
tile
primitives
Prior art date
Application number
KR1020147016242A
Other languages
English (en)
Other versions
KR20140098133A (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 퀄컴 인코포레이티드
Publication of KR20140098133A publication Critical patent/KR20140098133A/ko
Application granted granted Critical
Publication of KR101868200B1 publication Critical patent/KR101868200B1/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

Abstract

개시된 기술들은 프레임의 각각의 타일에 대한 입력 가시성 스트림을 생성하는 것, 및 프레임의 각각의 타일에 대한 출력 가시성 스트림을 생성하는 것을 포함하고, 입력 가시성 스트림은 렌더링시 각각의 타일에서 입력 프리미티브가 보이는지 아닌지의 여부를 나타내고, 출력 가시성 스트림은 렌더링시 출력 프리미티브가 각각의 타일에서 보이는지 아닌지의 여부를 나타내며, 출력 프리미티브는 입력 프리미티브를 테셀레이팅하는 것에 의해 생성된다. 이러한 방식에서, 입력 가시성 스트림에 기초하여, 타일에서 보이지 않는 전체 입력 프리미티브에 대해 테셀레이션이 스킵될 수도 있다. 또한, 출력 가시성 스트림에 기초하여, 입력 프리미티브의 일부가 보이지 않더라도, 타일에서 보이지 않는 출력 프리미티브들 중 어떤 출력 프리미티브들에 대해 테셀레이션이 스킵될 수도 있다.

Description

타일 기반 렌더링에서의 테셀레이션{TESSELLATION IN TILE-BASED RENDERING}
본 개시는 그래픽스 프로세싱을 위한 기술들에 관한 것으로, 특히 타일 기반의 렌더링 아키텍쳐를 사용하는 경우의 테셀레이션 (tessellation) 을 위한 기술들에 관한 것이다.
그래피컬 유저 인터페이스들 및 비디오 게임들에 대한 컨텐츠와 같은, 디스플레이용의 시각적 컨텐츠는, 그래픽스 프로세싱 유닛 (graphics processing unit; GPU) 에 의해 생성될 수도 있다. GPU는 2차원 또는 3차원 (3D) 오브젝트들을, 디스플레이될 수도 있는 2차원 (2D) 픽셀 표현으로 변환할 수도 있다. 3D 오브젝트들에 관한 정보를 디스플레이될 수 있는 비트맵으로 변환하는 것은 픽셀 렌더링으로서 알려져 있고, 상당한 메모리와 프로세싱 파워를 필요로 한다. 과거, 3D 그래픽스 기능은 성능 좋은 (powerful) 워크스테이션들에서만 이용가능했다. 그러나, 이제 3D 그래픽스 가속기들이, PC (personal computers) 뿐만 아니라 임베딩된 디바이스들, 예컨대 스마트폰들, 태블릿 컴퓨터들, 휴대형 미디어 플레이어들, 휴대형 비디오 게임용 콘솔들 등에서도 일반적으로 발견된다. 통상적으로, 임베딩된 디바이스는 종래의 PC들과 비교하여 낮은 계산 파워와 메모리 성능을 갖는다. 이와 같이, 3D 그래픽스 렌더링 기술들에서의 증가된 복잡도는, 임베딩된 시스템 상에서 이러한 기술들을 구현하는 경우 어려움들을 야기시킨다.
개요
일반적으로, 본 개시는 그래픽스 프로세싱을 위한 기술들, 특히, 테셀레이션을 활용하는 타일 기반의 그래픽스 프로세싱 아키텍쳐를 갖는 컴퓨팅 디바이스에서의 그래픽스 프로세싱을 위한 기술들을 설명한다. 본 개시는 프레임의 타일에서의 그래픽스 프리미티브들의 가시성을 나타내는 출력 및/또는 입력 가시성 스트림들 (visibility streams) 의 생성을 제안한다. 이러한 가시성 스트림들은 타일 기반의 그래픽스 프로세싱 아키텍쳐가, 프레임에서 보이지 않는 그래픽스 프리미티브들의 렌더링을 스킵하는 것을 가능하게 한다. 이렇게, 불필요한 프로세싱이 방지될 수도 있고, 따라서 성능을 향상시키게 된다.
본 개시의 일 예에서, 타일 기반의 그래픽스에서의 테셀레이션을 위한 방법이 제안된다. 그 방법은 프레임의 각각의 타일에 대한 입력 가시성 스트림을 생성하는 것, 및 프레임의 각각의 타일에 대한 출력 가시성 스트림을 생성하는 것을 포함하고, 입력 가시성 스트림은 렌더링시 각각의 타일에서 입력 프리미티브가 보이는지 아닌지의 여부를 나타내고, 출력 가시성 스트림은 렌더링시 출력 프리미티브가 각각의 타일에서 보이는지 아닌지의 여부를 나타내며, 출력 프리미티브는 입력 프리미티브를 테셀레이팅하는 것에 의해 생성된다.
본 개시의 다른 예에서, 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치가 제안된다. 그 장치는, 프레임의 각각의 타일에 대한 입력 가시성 스트림을 생성하도록 구성된 비닝 파이프라인을 포함한다. 입력 가시성 스트림은, 입력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타낸다. 비닝 파이프라인은 프레임의 각각의 타일에 대한 출력 가시성 스트림을 생성하도록 더 구성된다. 출력 가시성 스트림은 출력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타내고, 출력 프리미티브는 입력 프리미티브를 테셀레이팅하는 것에 의해 생성된다.
본 개시의 다른 예에서, 타일 기반의 렌더링 파이프라인에서의 테셀레이션을 위한 방법이 제안된다. 그 방법은, 프레임의 각각의 타일에 대한 각각의 입력 프리미티브에 대한 가시성 스트림을 생성하는 것을 포함하고, 가시성 스트림은 N 비트들의 길이를 가지고, 각각의 비트는 출력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타내고, 출력 프리미티브는 입력 프리미티브를 테셀레이팅하는 것에 의해 생성된다.
본 개시의 다른 예에서, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치가 제안된다. 그 장치는, 프레임의 각각의 타일에 대한 각각의 입력 프리미티브에 대한 가시성 스트림을 생성하도록 구성된 비닝 파이프라인을 포함하고, 가시성 스트림은 N 비트들의 길이를 가지고, 각각의 비트는 출력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타내고, 출력 프리미티브는 입력 프리미티브를 테셀레이팅하는 것에 의해 생성된다.
하나 이상의 예의 상세들은 첨부된 도면과 하기의 설명으로부터 설명된다. 다른 특징들, 목적들 및 이점들은 설명과 도면들, 및 특허청구범위로부터 명확해질 것이다.
도 1은 타일 기반의 렌더링 아키텍쳐에서의 프레임의 타일들을 예시하는 개념도이다.
도 2는 일 예의 그래픽스 프로세싱 시스템을 예시하는 블록도이다.
도 3은 테셀레이션을 이용하는 일 예의 그래픽스 파이프라인을 예시하는 블록도이다.
도 4는 입력 가시성 스트림 및 출력 가시성 스트림을 생성하는 일 예의 비닝 파이프라인 (binning pipeline) 을 예시하는 블록도이다.
도 5는 일 예의 입력 가시성 스트림 및 일 예의 출력 가시성 스트림을 예시하는 개념도이다.
도 6은 입력 프리미티브를 테셀레이팅하는 일 예의 기술을 예시하는 개념도이다.
도 7은 입력 프리미티브를 테셀레이팅하는 일 예의 기술을 예시하는 개념도이다.
도 8은 입력 가시성 스트림을 생성하는 일 예의 비닝 파이프라인을 예시하는 블록도이다.
도 9는 일 예의 단일의 가시성 스트림을 예시하는 개념도이다.
도 10은 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하는 일 예의 방법을 예시하는 흐름도이다.
도 11은 타일 기반의 렌더링 파이프라인에서 비닝 패스의 일 예의 방법을 예시하는 흐름도이다.
도 12는 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하는 다른 예의 방법을 예시하는 흐름도이다.
도 13은 타일 기반의 렌더링 파이프라인에서 비닝 패스의 다른 예의 방법을 예시하는 흐름도이다.
상세한 설명
본 개시는 그래픽스 프로세싱을 위한 기술들에 관한 것으로, 특히 타일 기반의 렌더링 아키텍쳐를 사용하는 경우 테셀레이션을 위한 기술들에 관한 것이다.
마이크로소프트의 다이렉트X11 (DX11) 어플리케이션 프로그래밍 인터페이스 (application programming interface; API) 를 포함하는 몇몇 그래픽스 렌더링 파이프라인들은 그래픽스 프리미티브들의 테셀레이션을 허용하는 추가적인 프로세싱 스테이지들을 포함한다. 테셀레이션은, 그래픽스 프리미티브들을 더 작은 그래픽스 프리미티브들로 분할하여 디스플레이된 이미지에서의 더 미세한 디테일을 가능하게 하는 프로세스이다.
테셀레이터 스테이지를 갖는 레퍼런스 구현예는 마이크로소프트 DX11 소프트웨어 레퍼런스 래스터라이저 (software reference rasterizer) 에 의해 잘 정의되지만, 이러한 구현예는, 임베딩된 디바이스들 (예를 들면, 태블릿 컴퓨터들, 모바일 폰들, 모바일 게임용 디바이스들, 모바일 미디어 플레이어들 등) 에서의 그래픽스 프로세서들에서 사용되는 것과 같은, 타일 기반의 렌더링 아키텍쳐에 아주 효율적으로 매핑되지 않는다. 타일 기반의 렌더링 (종종 비닝 (binning) 으로 칭해짐) 은 3D 장면의 한 프레임을, 그 프레임을 더 작은 부분들 (예를 들면, 직사각형 타일들) 로 나누고 이들 부분들을 개별적으로 렌더링하는 것에 의해 렌더링한다. 타일 기반의 렌더링은, 전용 그래픽스 메모리가 거의 이용가능하지 않은 어플리케이션들에 대해, 예컨대 모바일 어플리케이션들에 대해 유용하다. 도 1은 타일 기반의 렌더링 아키텍쳐에서의 프레임의 타일들을 예시하는 개념도이다. 프레임 (22) 은, 타일 (24) 과 같은 복수의 타일들로 분할될 수도 있다. 그 다음, 그래픽스 프로세싱은 타일 단위 기준으로 수행되어 전체 프레임을 렌더링한다.
마이크로소프트 DX11 소프트웨어 레퍼런스 래스터라지저를 포함하는 테셀레이션 스테이지로써 그래픽스 데이터를 렌더링하는 종래의 기술들은, 3D 장면의 전체 프레임이 전체로서 렌더링될 것이라고 가정하여 설계된다. 이와 같이, 이러한 레퍼런스 래스터라이저에서 사용되는 테셀레이션 알고리즘은 전체 입력 프리미티브를 출력 프리미티브들의 전체 세트로 항상 테셀레이팅한다. 타일 기반의 렌더링 아키텍쳐에서, 이것은 많은 무관한 그래픽스 프로세싱 유닛 (GPU) 의 원인이 될 수 있고 테셀레이팅된 출력 프리미티브들의 부분으로서만의 테셀레이션 프로세싱은 현재 렌더링된 타일에 실제 기여할 수도 있다 (즉, 몇몇 출력 프리미티브들은 다른 타일에서의 현재 렌더링된 타일 외부에 있을 것이다).
이러한 관점에서, 본 개시는 타일 기반의 그래픽스 렌더링 아키텍쳐에서의 테셀레이션을 위한 방법 및 장치를 제안한다. 개시된 기술들은 프레임의 각각의 타일에 대한 입력 가시성 스트림을 생성하는 것, 및 프레임의 각각의 타일에 대한 출력 가시성 스트림을 생성하는 것을 포함하고, 입력 가시성 스트림은 렌더링시 각각의 타일에서 입력 프리미티브가 보이는지 아닌지의 여부를 나타내고, 출력 가시성 스트림은 렌더링시 출력 프리미티브가 각각의 타일에서 보이는지 아닌지의 여부를 나타내며, 출력 프리미티브는 입력 프리미티브를 테셀레이팅하는 것에 의해 생성된다. 이러한 방식에서, 입력 가시성 스트림에 기초하여, 타일에서 보이지 않는 전체 입력 프리미티브에 대해 테셀레이션이 스킵될 수도 있다. 또한, 출력 가시성 스트림에 기초하여, 입력 프리미티브의 일부가 보이지 않더라도, 타일에서 보이지 않는 출력 프리미티브들 중 어떤 출력 프리미티브들에 대해 테셀레이션이 스킵될 수도 있다. 이와 같이, 불필요한 테셀레이션이 방지된다. 또한, 테셀레이션이 스킵되는 것으로 인해 몇몇 출력 프리미티브들이 생성되지 않기 때문에, 그래픽스 파이프라인의 나중의 스테이지들에서, 생성되지 않은 출력 프리미티브들의 프로세싱이 방지된다.
본 개시의 다른 예에서, 프레임의 각각의 타일에 대한 각각의 입력 프리미티브에 대해 단일의 가시성 스트림이 생성된다. 가시성 스트림은 N 비트들의 길이를 갖는데, 각 비트는 출력 프리미티브가 렌더링시 각 타일에서 보이는지 아닌지의 여부를 나타내고, 출력 프리미티브는 입력 프리미티브를 테셀레이팅하는 것에 의해 생성된다.
도 2는 본 개시의 기술들을 구현하도록 구성될 수도 있는 디바이스 (2) 를 예시하는 블록도이다. 디바이스 (2) 의 예들은, 무선 디바이스들, 이동 전화기들, PDA들 (personal digital assistants), 휴대형 미디어 플레이어들, (내장 디스플레이가 있거나 또는 없는) 비디오 게임용 콘솔들, 모바일 화상 회의 유닛들, 랩탑 컴퓨터들, 데스크탑 컴퓨터들, 텔레비젼 셋탑 박스들, 태블릿 컴퓨팅 디바이스들, 이북 리더들 등을 포함하지만, 이들에 제한되지는 않는다. 디바이스 (2) 는 프로세서 (4), 그래픽 프로세싱 유닛 (GPU; 6), 디스플레이 (8), 프레임 버퍼 (10), 저장 디바이스 (12), 트랜시버 모듈 (14), 유저 인터페이스 (16), 저해상도 버퍼 (18) (저해상도-z 버퍼 또는 LRZ (low resolution-z) 버퍼로서 칭해질 수도 있다), 및 타일 메모리 (20) 를 포함할 수도 있다. 디바이스 (2) 는, 명확화를 위해 도 2에 도시되지 않은 부가적인 모듈들 또는 유닛들을 포함할 수도 있다. 예를 들면, 디바이스 (2) 는, 디바이스 (2) 가 이동 무선 전화기인 경우의 예들에서 전화 통신들을 실현하기 위해 스피커 및 마이크를 포함할 수도 있는데, 이들 중 어느 것도 도 2에 도시되지 않았다. 또한, 디바이스 (2) 에서 도시된 다양한 모듈들 및 유닛들은 디바이스 (2) 의 모든 예에서 필수적이지 않을 수도 있다. 예를 들면, 유저 인터페이스 (16) 와 디스플레이 (8) 는, 디바이스 (2) 가 비디오 게임용 콘솔 또는 데스크탑 컴퓨터인 예들에서 디바이스 (2) 외부에 있을 수도 있다.
프로세서 (4) 는 하나 이상의 어플리케이션들을 실행할 수도 있다. 어플리케이션들의 예들은 웹브라우저, 이메일 어플리케이션들, 스프레드시트들, 비디오 게임들, 또는 표시를 위해 가시적인 오브젝트들을 생성하는 다른 어플리케이션들 포함한다. 하나 이상의 어플리케이션들은 저장 디바이스 (12) 내에 저장될 수도 있다. 몇몇 경우들에서, 프로세서 (4) 는 (예를 들면, 인터넷 또는 다른 네트워크로부터) 트랜시버 모듈 (14) 을 통해 하나 이상의 어플리케이션들을 다운로드할 수도 있다. 프로세서 (4) 는 유저 인터페이스 (16) 를 통한 유저에 의한 선택에 기초하여 하나 이상의 어플리케이션들을 실행할 수도 있다. 몇몇 예들에서, 프로세서 (4) 는 유저 상호작용 없이 하나 이상의 어플리케이션들을 실행할 수도 있다.
프로세서 (4) 의 예들은 디지털 신호 프로세서 (DSP), 범용 마이크로프로세서, 주문형 반도체 (ASIC), 필드 프로그램 가능 로직 어레이 (FPGA), 또는 다른 등가의 집적 또는 이산 로직 회로부를 포함하는데, 이들에 제한되는 것은 아니다. 저장 디바이스 (12) 는 하나 이상의 컴퓨터 판독가능 저장 매체들을 포함할 수도 있다. 저장 디바이스 (12) 의 예들은 RAM (random access memory), ROM (read only memory), EEPROM (electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기적 저장 디바이스들, 플래시 메모리, 또는 소망의 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 사용될 수 있으며 컴퓨터 또는 프로세서에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 몇몇 양태들에 있어서, 저장 디바이스 (12) 는, 호스트 프로세서 (4) 및/또는 GPU (6) 로 하여금, 본 개시에서의 호스트 프로세서 (4) 및 GPU (6) 에 의한 기능들을 수행하게 하는 명령들을 포함할 수도 있다.
저장 디바이스 (12) 는, 몇몇 예들에서, 비일시적 저장 매체로서 간주될 수도 있다. 용어 "비일시적"이란 저장 매체가 반송파 또는 전파 신호로 구체화되지 않는 것을 나타낼 수도 있다. 그러나, 용어 "비일시적"은 저장 디바이스 (12) 가 움직일 수 없다는 것을 의미하는 것으로 해석되어선 안된다. 일 예로서, 저장 디바이스 (12) 는 디바이스 (2) 로부터 제거되어, 다른 디바이스로 이동될 수도 있다. 다른 예로서, 저장 디바이스 (12) 와 거의 유사한 저장 디바이스가 디바이스 (2) 에 삽입될 수도 있다. 어떤 예들에서, 비일시적 저장 매체는 경시적으로 변할 수 있는 데이터를 (예를 들면, RAM에) 저장할 수도 있다.
유저 인터페이스 (16) 의 예들은 트랙볼, 마우스, 키보드, 게임용 컨트롤러 및 다른 타입의 입력 디바이스들을 포함하는데, 이들에 제한되는 것은 아니다. 유저 인터페이스 (16) 는 터치스크린일 수도 있고 디스플레이 (8) 의 일부로서 내장될 수도 있다. 트랜스시버 모듈 (14) 은, 디바이스 (2) 와 다른 디바이스 또는 네트워크 사이의 무선 또는 유선 통신을 가능하게 하는 회로부를 포함할 수도 있다. 트랜스시버 모듈 (14) 은 변조기들, 복조기들, 증폭기들 및 유선 또는 무선 통신을 위한 다른 이러한 회로부를 포함할 수도 있다.
GPU (6) 는 고도의 병렬 구조를 사용하여 데이터를 빠르게 조작하도록 설계된 전용 프로세서이다. 특히, GPU (6) 는 그래픽적 프로세싱을 수행하기 위해 렌더링 파이프라인의 프로그램 가능하고 고정된 기능 스테이지들을 실행하도록 구성될 수도 있다. 일 예에서, GPU (6) 는 3차원 오브젝트들을 디스플레이용의 2차원 공간으로 렌더링하기 위해 3차원 그래픽스 렌더링 파이프라인을 실행하도록 구성될 수도 있다. 예를 들면, GPU (6) 는 쉐이딩, 블렌딩, 일루미네이팅과 같은 기능들, 및 디스플레이 (8) 상에 디스플레이될 픽셀들에 대한 픽셀 값들을 생성하기 위한 기능들을 수행할 수도 있다. GPU (6) 에 의해 생성된 픽셀들은 디스플레이 이전에 프레임 버퍼 (10) 에 저장될 수도 있다. 몇몇 예들에서, 쉐이딩, 블렌딩, 및 일루미네이팅과 같은 기능들을 수행하기 이전에, GPU (6) 는 타일링 기능으로도 칭해지는 비닝 패스 (binning pass) 를 수행할 수도 있다.
도 1에서 하나의 GPU (6) 가 예시되지만, 본 개시의 양태들은 그렇게 제한되지 않는다. 몇몇 예들에서, 디바이스 (2) 는 GPU (6) 와 유사한 복수의 GPU들 또는 GPU 코어들을 포함할 수도 있다. 그래픽스 프로세싱 태스크들은 이들 GPU들 또는 GPU 코어들 사이에서 분할될 수도 있다.
비닝 패스를 실행하기 위해, 도 1에 도시된 바와 같이, GPU (6) 는 디스플레이 (8) 상의 픽셀들을, 타일들로 칭해지는, 픽셀들의 복수의 블록들로 분할될 수도 있다. 예를 들면, 디스플레이 (8) 는 640x480 픽셀들을 포함하도록 구성된다. 일 예로서, GPU (6) 는 디스플레이를 10x10 타일들로 분할할 수도 있는데, 각각의 타일은 64x48 픽셀들을 포함한다.
타일 메모리 (20) 는, 비닝 패스 동안, 이미지 표면이 속하는 특정 타일들을 나타낼 수도 있다. 몇몇 예들에서, 타일 메모리 (20) 는 저장 디바이스 (12) 의 일부로서 형성될 수도 있지만, 본 개시의 양태들은 그렇게 제한되지는 않는다. GPU (6) 는 이미지 표면에 대한 표면 식별자 값을, 그 이미지 표면에 대한 비닝 패스 동안, 그 이미지 표면이 어떤 타일들에 속하는지에 기초하여 타일 메모리 (20) 의 적절한 저장 위치들 내에 저장할 수도 있다. 타일 메모리 (20) 는 복수의 레이어들을 포함하는 것으로 간주될 수도 있다. 각각의 레이어는 이미지 표면들 중 하나에 대응할 수도 있다. 각각의 레이어는 복수의 저장 위치들을 포함하는 2차원 레이어일 수도 있다. 각각의 저장 위치는 디스플레이 (8) 의 타일들 중 하나에 대응할 수도 있다.
저해상도 버퍼 (18) 는 복수의 저장 위치들을 갖는 2차원 버퍼일 수도 있다. 몇몇 예들에서, 저해상도 버퍼 (18) 는 저장 디바이스 (12) 의 일부로서 형성될 수도 있지만, 본 개시의 양태들은 그렇게 제한되지는 않는다. 하기에 더 상세히 설명되는 바와 같이, 저해상도 버퍼 (18) 는 후속적으로 차단되는 픽셀들을 불필요하게 렌더링하는 것을 방지하기 위해 어떤 픽셀들이 렌더링되어야 하는지의 효율적인 표시 (indication) 를 촉진한다. 저해상도 버퍼 (18) 에서의 각각의 저장 위치는 디스플레이 (8) 상에서 표현되는 픽셀들의 블록에 대응할 수도 있다. 예를 들면, 디스플레이 (8) 상에서 표현되는 4x4 픽셀들의 블록은 저해상도 버퍼 (18) 에서의 하나의 저장 위치에 대응할 수도 있다. 4x4 픽셀들의 블록은 예시의 목적으로 제공되며, 제한하는 것으로 간주되어선 안된다. 저해상도 버퍼 (18) 는, 저해상도 버퍼 (18) 의 각각의 저장 위치가 단일의 픽셀보다는 복수의 픽셀들에 대응하기 때문에 저해상도 버퍼로서 간주될 수도 있다.
도 3은 도 2의 GPU (6) 에 의해 실행될 수도 있는 예시적인 그래픽스 파이프라인 (30) 을 묘사한다. 위에서 언급된 바와 같이, 그래픽스 파이프라인 (30) 은 타일 기반의 렌더링 아키텍쳐에서 구현될 수도 있는데, 타일 기반의 렌더링 아키텍쳐에서는 전체 프레임의 타일들이 별도로 렌더링되고 그 다음 디스플레이용으로 결합된다. 그래픽스 파이프라인 (30) 은 마이크로소프트의 다이렉트X11 API에 따라 구현될 수도 있다. 다이렉트X11 API는 다이렉트X API들의 이전의 버전들 (iterations) 에서 발견되지 않는 3개의 스테이지들, 즉 프로그램 가능 헐 쉐이더 (hull shader; HS; 36), 고정 기능 테셀레이터 (fixed function tessellator; TS; 38), 및 프로그램 가능 도메인 쉐이더 (domain shader; DS; 40) 를 포함한다. 헐 쉐이더 (36), 테셀레이터 (38), 및 도메인 쉐이더 (40) 는 종종 함께 "테셀레이션 파이프라인"으로 칭해진다.
입력 어셈블러 (IA; 32) 는 베이직 프리미티브들에 대한 버텍스들 (vertices) 을 메모리로부터 판독한다. 베이직 프리미티브들은 리소스들 (50) 의 메모리 (예를 들면, 도 2의 타일 메모리 (20)) 에 저장될 수도 있다. 몇몇 예들에서, 그래픽스 파이프라인에 대한 베이직 프리미티브는 삼각형이다. 테셀레이션 스테이지들을 포함하는 그래픽스 파이프라인들의 경우, 그래픽스 파이프라인 (30) 과 마찬가지로, 베이직 프리미티브는 패치일 수도 있다. 패치는 본질적으로 메시 또는 표면의 표현이다. 패치는 표면을 정의하기 위한 1 내지 32개의 상이한 컨트롤 포인트들을 포함할 수도 있다. 그래픽스 파이프라인의 나머지 논의는 베이직 프리미티브가 패치라고 가정할 것이지만; 그러나 본 개시의 기술들은 다른 베이직 프리미티브 타입들에 대해서도 적용가능하다.
버텍스 쉐이더 (vertex shader; VS; 34) 는 패치의 각 컨트롤 포인트에 대한 동작들을 수행하는 프로그램 가능 스테이지이다. 버텍스 쉐이더 (34) 는 가상 공간에서의 각각의 컨트롤 포인트의 3D 포지션을, 각각의 컨트롤 포인트가 스크린 상에서 나타나는 2D 좌표뿐만 아니라 깊이 값으로 변환한다. 버텍스 쉐이더들은 포지션, 칼라, 및 텍스쳐 좌표와 같은 특성들을 조작할 수 있지만, 새로운 컨트롤 포인트들을 생성하지는 않는다. 버텍스 쉐이더 (34) 의 출력 컨트롤 포인트들은 헐 쉐이더 (36) 로 간다.
헐 쉐이더 (36) 는 2개의 동작들을 수행한다. 대부분의 패치들에 대해, 버텍스 쉐이더로부터의 변환된 컨트롤 포인트들은 단순히 도메인 쉐이더 (40) 로 전달된다. 보다 복잡한 표면을 표현하는 패치들의 컨트롤 포인트들은, 도메인 쉐이더 (40) 로 전달되기 이전에 헐 쉐이더 (36) 에 의한 추가 프로세싱을 필요로 할 수도 있다. 또한 헐 쉐이더는 각각의 패치 상에서 수행될 테셀레이션의 레벨을 결정하고 이 "테셀레이션 인자"를 테셀레이터 (38) 로 전송한다.
테셀레이터 (38) 의 기본 기능은 3D 장면의 입력 프리미티브들 (예를 들면, 패치들) 을 다수의 출력 프리미티브들로 테셀레이팅 (즉, 세분) 하는 것이다. 테셀레이터 (38) 는 이들 패치들을 더 작은 출력 프리미티브들, 예컨대 헐 쉐이더 (36) 에 의해 제공된 테셀레이션 인자에 따른 삼각형들, 쿼드들 (quads) 또는 등치선들 (isolines) 로 세분한다. 테셀레이터 (38) 의 출력은 출력 프리미티브들을 정의하는 버텍스들의 세트이다. 테셀레이션은 그래픽적으로 더 상세한 이미지들로 귀결되는 더 스무스한 곡면을 렌더링하는 것을 가능하게 한다.
도메인 쉐이더 (40) 는 테셀레이션 파이프라인의 최종 스테이지이다. 도메인 쉐이더 (40) 는 테셀레이터 (38) 에 의해 생성된 출력 버텍스들에 대해 동작한다. 도메인 쉐이더 (40) 는 최종 출력 버텍스 포지션들 및 헐 쉐이더 (36) 로부터 수신된 컨트롤 포인트들로부터 속성들을 계산할 책임이 있다.
지오메트리 쉐이더 (geometry shader; GS; 42) 는 테셀레이션 파이프라인으로부터 수신된 테셀레이팅된 출력 프리미티브들로부터 추가적인 프리미티브들을 생성하기 위해 사용될 수도 있는 옵션적인 프로그램 가능 스테이지이다. 지오메트리 쉐이더 (42) 는 그래픽적으로 한층 더 상세한 이미지들을 가능하게 한다.
파이프라인의 나머지 스테이지들에서, 래스터라이저 (rasterizer; RS; 44) 는, 3D 공간으로부터의 지오메트리 쉐이더 (42) 및/또는 테셀레이션 파이프라인으로부터의 출력 프리미티브들을 2D 공간에서의 픽셀 값들로 변환한다. 그 다음 프로그램 가능 픽셀 쉐이더 (programmable pixel shader; PS; 46) 는, 깊이 테스트, 클리핑, 시저링 (scissoring), 블렌딩 등과 같은 추가 동작들을 픽셀들에 대해 수행할 수도 있다. 픽셀 쉐이더 (46) 의 출력은 프레임 버퍼 (10) 에 저장되고 그 다음 디스플레이 (8) (도 2 참조) 와 같은 디스플레이 상에 디스플레이될 수도 있다.
불필요한 GPU 프로세싱을 방지하고 타일 기반의 렌더링 아키텍쳐들의 제한된 그래픽스 메모리를 가장 효율적으로 사용하기 위해, 본 개시는 테셀레이션 스테이지들을 구비하는 그래픽스 파이프라인 (예를 들면, 도 3의 그래픽스 파이프라인) 을 갖는 가시성 스트림들의 사용을 제안한다. 가시성 스트림은 프리미티브가 렌더링된 타일에 기여하는지의 여부를 매 프리미티브마다 설명하는 일련의 비트들 (0/1) 이다. 즉, 가시성 스트림은, 프리미티브가 현재 렌더링된 프레임에서 보이는지 아닌지의 여부를 렌더링 파이프라인의 상이한 스테이지들에게 나타낸다. 가시성 스트림들은 타일들을 렌더링하기 이전에 실행되는 "비닝" 패스에서의 각각의 프레임의 시작에서 생성된다. 하나 이상의 가시성 스트림들은 프레임에서의 각각의 타일에 대해 생성된다. 타일 렌더링 동안, 렌더링된 타일에 기여하지 않는 무관한 프리미티브들 (즉, 이들은 보이지 않을 것이다) 을 컬링 (culling) 하기 위해, 그 타일에 대한 대응하는 가시성 스트림 (들) 이 사용된다.
본 개시는, 테셀레이터 입력 프리미티브들 (즉, 패치들) 및 출력 프리미티브들 (즉, 삼각형들, 쿼드들, 또는 등치선들) 양자를 타일당 하나 이상의 가시성 스트림들로 인코딩하는 가시성 스트림들의 생성을 제안한다. 입력 및 출력 프리미티브들에 대한 가시성 정보를 활용함으로써, 이러한 테셀레이션 알고리즘은 (예를 들면, 입력 프리미티브 가시성 스트림을 사용하여) 현재 렌더링된 타일에 기여하지 않는 전체 입력 패치들을 컬링하고, 또한 (예를 들면, 출력 프리미티브 가시성 스트림을 사용하여) 현재 렌더링된 타일에 기여하지 않는 출력 프리미티브들의 테셀레이터 스테이지를 컬링한다. 테셀레이터 스테이지의 입력 및 출력 양자에서 이들 가시성 스트림들을 활용함으로써, 렌더링 파이프라인 (예를 들면, 도메인 쉐이더 (40)) 에서의 나중의 스테이지들의 무관한 또는 중복적 호출들 (invocations) 의 수에서의 감소가 달성될 수도 있다. 본질적으로, 가시성 스트림들은, 입력 및 출력 가시성 스트림들에 의해 보이지 않는 것으로 나타내어진 입력 또는 출력 프리미티브들에 대해 렌더링 파이프라인의 하나 이상의 스테이지들이 스킵되는 것을 가능하게 한다. 추가적으로, 무관한 또는 보이지 않는 출력 프리미티브들을 프로세싱하는 것이 방지될 수 있기 때문에, 하나의 입력 패치를 테셀레이팅하기 위해 테셀레이터 하드웨어가 소비해야할 필요가 있는 클록 싸이클들의 수에서의 감소가 달성된다.
본 개시의 일 양태에서, 2개의 가시성 스트림들은 렌더링 이전에 비닝 패스에서 타일마다 생성된다. 하나는 테셀레이션 입력 프리미티브들 (패치들) 에 대한 것이고 하나는 테셀레이션 출력 프리미티브들 (삼각형들) 에 대한 것이다. 본 개시의 다른 양태에서, 입력 및 출력 가시성 스트림들은 단일의 가시성 스트림으로 결합되거나 또는 지오메트리 쉐이더와 함께 사용될 수도 있다.
도 4는 입력 가시성 스트림 및 출력 가시성 스트림을 생성하는 일 예의 비닝 파이프라인 (binning pipeline) 을 예시하는 블록도이다. 비닝 파이프라인은 도 2의 GPU (6) 에 의해 실행될 수도 있다. 가시성 스트림을 생성하기 위해, 비닝 파이프라인 (60) 은 전체 프레임에 대한 입력 프리미티브를 프로세싱하는 비닝 패스를 수행한다. 비닝 파이프라인은 도 3에 도시된 전체 렌더링 파이프라인의 단순화된 버전이다. 테셀레이션 스테이지들 (즉, HS/TS/DS) 및 옵션적 지오메트리 쉐이더를 포함하는 그래픽스 파이프라인들에 대해, 비닝 파이프라인 (60) 은 비닝 버텍스 쉐이더 (62), 비닝 헐 쉐이더 (64), 비닝 테셀레이터 (66), 비닝 도메인 쉐이더 (68), 옵션적 비닝 지오메트리 쉐이더 (70), 비닝 래스터라이저 (72), 및 비닝 깊이 테스트 유닛 (74) 을 포함할 수도 있다.
비닝 버텍스 쉐이더 (62) 는 비닝 쉐이더로서 칭해질 수도 있다. 비닝 쉐이더는 버텍스 쉐이더의 수정된 버전일 수도 있는데, 여기서는 출력만이 버텍스 포지션이다. 일반적으로 버텍스 쉐이더에 의해 수행되는 모든 파라미터 엑스포트들 (exports) 은 비닝 쉐이더뿐만 아니라 이들에 관련된 임의의 계산들로부터 제거될 수 있다.
비닝 버텍스 쉐이더 (62) 에 의해 출력된 버텍스들로부터, 비닝 헐 쉐이더 (64), 비닝 테셀레이터 (66), 및 비닝 도메인 쉐이더는, 도 3의 테셀레이션 파이프라인에서와 동일한 방식으로, 테셀레이팅된 출력 프리미티브들을 생성한다. 비닝 헐 쉐이더 (64) 와 비닝 테셀레이터 (66) 는 도 3의 테셀레이션 파이프라인에서의 대응하는 스테이지들에 대해 최적화될 수도 있다. 특히, 비닝 헐 쉐이더 (64) 와 비닝 테셀레이터 (66) 는 포지션 관련 변수들만을 계산하도록 최적화될 수도 있다.
지오메트리 쉐이더가 전체 렌더링 파이프라인에 대해 인에이블되면, 비닝 파이프라인 (60) 은 비닝 테셀레이터에 의해 생성된 테셀레이팅된 출력 프리미티브들로부터 추가적인 출력 프리미티브들을 생성하는 비닝 지오메트리 쉐이더 (70) 를 또한 포함할 수도 있다.
비닝 래스터라이저 (72) 는 2D 공간들 (즉, 픽셀들) 에서의 출력 프리미티브들의 저해상도 표현을 생성한다. 각각의 픽셀은 최종 이미지에서의 픽셀 영역 (예를 들면, 4x4 픽셀 영역) 을 나타낸다. 생성된 저해상도 픽셀들은 (부분적으로 커버되거나 또는 완전히 커버되는) 2개의 값들을 가질 수 있다. 비닝 래스터라이저 (72) 는 통상의 래스터라이제이션 스테이지와 동일한 컬링 룰들 (페이스니스 (faceness), 프러스텀 (frustum) 등) 을 사용하고, 따라서 장면에 실제 보이는 그들 삼각형들만을 생성한다.
비닝 패스에서의 최종 스테이지는 비닝 깊이 테스트 유닛 (74) (저해상도 Z 테스트라고도 칭해짐) 이다. 비닝 깊이 테스트 유닛 (74) 은, 출력 프리미티브들로부터 래스터라이징된 픽셀들이 최종 장면에서 보이는지를 결정한다. 비닝 깊이 테스트 유닛 (74) 은, 픽셀들이 삼각형에 의해 완전히 커버되는 상황에서만 저해상도 버퍼 (도 2 참조, 저해상도 z-버퍼라고도 칭해짐) 에 기록된다. 부분적으로 커버되는 픽셀들은 저해상도 버퍼에 기록되지 않는다. 비닝 패스의 끝에서, 저해상도 버퍼 (18) 는 외부 메모리에 기록될 수 있고, 나중에, 렌더링 패스 동안 사용하기 위해 Z-버퍼를 초기화하는 데 사용될 수 있다. 이것은 (예를 들면, 도 3의 픽셀 쉐이더 (46) 에서의) 렌더링 동안 향상된 깊이 테스팅을 제공한다. GPU (6) 의 내부 그래픽스 메모리는 비닝 패스 동안 저해상도 버퍼로서 또한 사용될 수도 있다. 렌더링 패스들이 4x4 픽셀 블록들에서 행해지기 때문에, 그래픽스 메모리에서의 Z-버퍼도 또한 이 해상도에 있다. 또한, 그래픽스 메모리에서 어떠한 칼라 버퍼도 필요되지 않는다. 이것은, 저해상도 버퍼 (18) 가 저해상도와 비교하여 아주 큰 온스크린 영역을 커버할 수 있다는 것을 의미한다.
특정 타일에 대한 비닝 깊이 테스트를 통과하는 프리미티브들 (즉, 프리미티브를 래스터라이징하는 것에 의해 생성된 픽셀들이 그 타일에서 보인다) 은 가시성 스트림에서 보이는 것으로 마킹된다. 특정 타일에 대한 저해상도 Z-테스트를 통과하지 못한 프리미티브들 (즉, 프리미티브들을 래스터라이징하는 것에 의해 생성된 픽셀들이 그 타일에서 보이지 않는다) 은 가시성 스트림에서 보이지 않는 것으로 마킹된다. 대부분의 삼각형들로부터 래스터라이징된 대부분의 픽셀들이 임의의 주어진 타일에 대해 보이지 않을 것이기 때문에, 각각의 타일에 대한 가시성 스트림들은, 각각의 프리미티브들이 보이지 않는다는 것을 나타내는, 아주 많은 수의 0들로 구성될 수도 있다. 이와 같이, 가시성 스트림들은 런렝쓰 압축 알고리즘을 사용하여 압축될 수도 있다.
출력 가시성 스트림 (82) 은 출력 프리미티브들 (예를 들면, 삼각형들) 의 가시성을 인코딩한다. 출력 가시성 스트림은 출력 프리미티브마다, 대응하는 타일에서 출력 프리미티브가 보이는지의 여부를 나타내는 1비트 (예를 들면, 보이는 것에 대해 1을, 보이지 않는 것에 대해 0을, 또는 그 반대인) 를 포함한다. 입력 가시성 스트림 (80) 은 입력 프리미티브들 (예를 들면, DX11에서의 패치들) 의 가시성을 인코딩한다. 비닝 깊이 테스트 유닛 (74) 에 의해 패치로부터 형성된 적어도 하나의 출력 프리미티브가 보이는 것으로 결정되면, 패치는 보이는 것으로 간주된다. 패치로부터 형성된 어떠한 출력 프리미티브들도 보이지 않으면, 입력 가시성 스트림에서 전체 패치는 보이지 않는 것으로 나타내어진다. 이 경우, 입력 가시성 스트림에서의 대응하는 비트는 0으로 설정될 수도 있다. 대안적으로, 패치로부터 형성된 적어도 하나의 출력 프리미티브가 보인다면, 전체 패치는, 예를 들면, 대응하는 비트를 1로 설정하는 것에 의해, 입력 가시성 스트림에서 보이는 것으로 나타내어질 수도 있다.
도 5는 일 예의 입력 가시성 스트림 및 일 예의 출력 가시성 스트림을 예시하는 개념도이다. 입력 가시성 스트림 (80) 은 각각의 패치에 대해 1들과 0들의 스트링을 포함할 수도 있는데, 하나의 비트는 패치의 적어도 일부가 최종 장면에서 보인다는 것을 나타내고 (예를 들면, 패치 3에 대한 비트 1), 다른 비트는 최종 장면에서 전체 패치가 보이지 않는다는 것을 나타낸다 (예를 들면 패치 0에 대한 비트 0). 출력 가시성 스트림 (82) 은 각각의 삼각형에 대해 1들과 0들의 스트림을 포함할 수도 있는데, 하나의 비트는 최종 장면에서 보이는 픽셀에 대해 그 삼각형이 기여한다는 것을 나타내고 (예를 들면, 삼각형 0에 대한 비트 1), 다른 비트는 최종 장면에서 보이는 픽셀에 대해 그 삼각형이 기여하지 않는다는 것을 나타낸다 (예를 들면 삼각형 2에 대한 비트 0). 도 5에 도시된 바와 같이, 출력 가시성 스트림들은 패치 단위 기준으로 생성될 수도 있다. 즉, 각각의 타일에 대한 패치마다 하나의 출력 가시성 스트림이 존재한다. 다른 예에서, 각각의 타일은 입력 프리미티브들로부터 형성된 출력 프리미티브들을 모두 함께 연결하는 하나의 출력 가시성 스트림을 가질 수도 있다.
도 3으로 돌아가면, 출력 및 입력 가시성 스트림들은 메모리 (예를 들면, 타일 메모리 (20)) 에 저장될 수도 있고 리소스들 (50) 을 통해 파이프라인 스테이지들을 렌더링하는 것에 이용가능하게 될 수도 있다. 입력 가시성 스트림 및 출력 가시성 스트림에 의해 나타내어진 가시성에 각각 기초하여 입력 프리미티브 또는 출력 프리미티브를 렌더링할 때, 하나 이상의 렌더링 스테이지들은 스킵될 수도 있다.
일 예로서, 출력 가시성 스트림을 활용하면, 테셀레이터 (38) 는 아주 많은 수의 삼각형들이 현재 렌더링된 타일에서 보이지 않거나 현재 렌더링된 타일에 로케이팅되지 않는 경우 그 아주 많은 수의 삼각형들을 스킵할 수 있다. 마찬가지로, 패치가 보인다는 것을 입력 가시성 스트림이 나타내면, 그 패치는 렌더링 패스 동안 현재 타일에 대해 프로세싱되고, 그렇지 않으면 그 패치는 컬링된다 (즉, 그 패치에 대한 렌더링이 스킵된다).
특히, 보이지 않는 입력에 대해 렌더링을 스킵하는 것은, 입력 프리미티브가 보이지 않는다는 것을 입력 가시성 스트림이 나타낼 때 전체 입력 프리미티브의 테셀레이션을 방지하는 것을 수반할 수도 있다. 이와 같이, 출력 프리미티브들은 그 입력 프리미티브에 대해 생성되지 않고, 따라서 파이프라인의 추가 스테이지들에 의한 프로세싱에 이용가능하지 않다. 마찬가지로, 보이지 않는 출력 프리미티브들에 대해 렌더링을 스킵하는 것은, 보이지 않는 출력 프리미티브들을 생성하게 될 패치의 특정 부분에 대해 테셀레이션을 스킵하는 것을 수반할 수도 있다. 사용되는 스킵 프로세스는 테셀레이션 하드웨어에 의존적일 수도 있다. 도 6 및 도 7을 참조로 하기에 일 예가 설명된다. 도 6 및 도 7은 입력 프리미티브를 테셀레이팅하는 일 예의 기술을 설명하는 개념도이다.
일반적으로, 입력 패치 테셀레이션은 입력 삼각형 내부에 더 작은 삼각형을 추가하는 것, 및 두 삼각형들 쌍 단위 (wise) 로부터의 한 에지 (즉, 동일 방향에 있는 더 큰 삼각형으로부터의 한 에지와 더 작은 삼각형으로부터의 한 에지) 를 고려하는 것에 의해 2개의 삼각형들 사이의 영역을 테셀레이팅하는 것을 수반한다. 도 6에 도시된 바와 같이, 테셀레이션은 에지 쌍 (83a 및 83b), 에지 쌍 (84a 및 84b), 및 에지 쌍 (85a 및 85b) 사이에서 발생할 수도 있다. 3개의 에지 쌍들에 대해 테셀레이션이 완료된 후, 이전의 더 작은 삼각형 내부에 새로운 더 작은 입력 삼각형이 삽입된다 (도 7 참조). 도 7에 도시된 바와 같이, 에지들 (83b, 84b, 및 85b) 은 이제 에지들 (83c, 84c, 및 85c) 과 각각 쌍을 이루게 된다. 이 프로세스는 입력 삼각형이 완전히 테셀레이팅될 때까지 계속된다. 테셀레이션의 양 (즉, 테셀레이션 레벨) 은 헐 쉐이더 (36) (도 3 참조) 에 의해 생성된 테셀레이션 인자에 의해 정의된다.
상기 예시적인 테셀레이션로부터 알 수 있는 바와 같이, 테셀레이션 프로세스는 한 번에 하나의 에지 쌍만큼 진행한다. 출력 가시성 스트림으로부터 삼각형 가시성 정보를 활용함으로써, 향상된 테셀레이터 구현예는, 현재 테셀레이팅된 영역에 대한 출력 삼각형들의 어느 것도 현재 렌더링된 타일에서 보이지 않게 될 경우 전체 에지 쌍들의 프로세싱을 스킵할 수 있다. 예를 들면, 에지 쌍 (85b 및 85c) 사이의 영역은 출력 가시성 스트림에 의해 보이지 않는 것으로서 나타내어진 출력 프리미티브들을 포함할 수도 있다. 이와 같이, 테셀레이션은 이 에지 쌍에 대해 스킵될 수도 있고, 도 7에 도시된 바와 같이, 어떠한 출력 삼각형들도 생성되지 않는다. 단일의 테스트로 여러 에지 쌍들을 스킵하는 것도 또한 가능한데, 그 이유는, 하나의 삼각형 쌍에 대해, 셋업 페이즈 이후에, 헐 쉐이더로부터 수신된 테셀레이션 인자에 기초하여, 두 삼각형들 사이의 영역에 얼마나 많은 삼각형들이 생성될 것인지를 알기 때문이다 (다수의 에지 쌍들이 병렬로 또는 잠재적으로 함께 고려될 수 있다).
본 개시의 다른 예에서, 입력 프리미티브들에 대해 가시성 스트림을 출력 프리미티브들에 대해 별도의 가시성 스트림을 생성하는 대신, 단일의 가시성 스트림이 생성된다. 이러한 경우들에서, 단일의 가시성 스트림은 최대 테셀레이션 출력에 대해 인코딩될 것이다. 즉, 가시성 스트림의 길이는, 특정 렌더링 파이프라인에 대해 정의된 패치 사이즈 및 최대 가능한 테셀레이션 인자가 주어지면, 테셀레이팅된 프리미티브들의 최대 양에 의해 정의될 것이다. 예를 들면, 최대 테셀레이션 출력은 다이렉트X11 API에 의해 정의될 수도 있다. 단일의 가시성 스트림은 각각의 타일에 대한 패치 단위 기준으로 출력 프리미티브들의 가시성을 나타낼 것이다. 패치에 대한 단일의 가시성 스트림에서의 하나의 출력 프리미티브가 보이면, 그 패치도 또한 보인다. 각각의 패치에 대한 가시성 스트림은 길이 N을 가질 것인데, 여기서 N은 최대 테셀레이션 출력 (즉, 가능한 출력 삼각형들의 최대 수) 에 대응한다.
도 8은 단일의 가시성 스트림을 생성하는 일 예의 비닝 파이프라인을 예시하는 블록도이다. 비닝 파이프라인 (90) 은 도 4의 비닝 파이프라인 (60) 과 유사한 방식으로 동작할 것이다. 그러나, 2개의 가시성 스트림들을 생성하는 대신, 비닝 파이프라인 (90) 은 단일의 가시성 스트림 (104) 을 생성한다. 디폴트로, 전체 패치에 대한 가시성 스트림 (104) 에서의 각각의 비트는 0들로 인코딩될 것이다 (즉, 테셀레이터의 어떤 출력 삼각형들도 보이지 않는다고 가정된다). 임의의 테셀레이터 출력 삼각형들이 비닝 깊이 테스트 유닛 (74) 에 의해 현재 렌더링된 타일에서 보인다고 알려지면, 가시성 스트림으로부터의 대응하는 비트들은 1로 설정된다. 타일들이 렌더링되는 경우, 임의의 가시성 비트들이 단일의 가시성 스트림에서의 단일의 패치 영역 내부에서 1일 것인지를 결정하기 위해 가시성 스트림들은 단순히 체크될 수도 있다. 패치 내부의 모든 값들이 0이면, 이것은, 예를 들면 하나의 클록 싸이클에서 결정될 수 있다. 패치에 대한 모든 가시성 비트들이 0이면, 버텍스 쉐이더 및 테셀레이션 파이프라인 양자는 그 패치에 대해 스킵될 수도 있다. 가시성 스트림에서의 임의의 가시성 비트들이 1이면, 패치는 정상적으로 프로세싱된다. 그러나, 이제 테셀레이터는, 가시성 스트림에 의해 보이지 않는 것 (0들) 으로 정의된 어떤 출력 프리미티브들의 테셀레이션을 스킵하도록 구성될 수도 있다. 이와 같이, 보이지 않는 패치들 및 삼각형들을 스킵하는 것에 의해, 버텍스 쉐이더, 테셀레이션 파이프라인뿐만 아니라, 래스터라이저에 대해 불필요한 프로세싱이 방지된다.
도 9는 일 예의 단일의 가시성 스트림을 예시하는 개념도이다. 가시성 스트림 (104) 은 길이 N으로 이루어지는데, 여기서 N은 렌더링 파이프라인에 의해 정의된 바와 같은 패치당 출력 프리미티브들의 최대 수를 정의한다.
도 8로 돌아가면, 본 개시의 다른 예에서, 지오메트리 쉐이더가 인에이블되면 단일의 가시성 스트림이 또한 사용될 수도 있다. 위에서 언급된 바와 같이, 지오메트리 쉐이더는 테셀레이션 파이프라인에 의해 출력된 프리미티브들로부터 더 많은 프리미티브들을 생성할 수도 있다. 단일의 지오메트리 쉐이더 호출이 생성할 수 있는 데이터의 최대량은 DX11 API에 의해 4kB로 제한된다. 위에서 설명된 최대 테셀레이션 출력에 기초하여 입력 및 출력 가시성 스트림들을 함께 병합하는 것과 유사하게, 지오메트리 쉐이더가 인에이블된 단일의 출력 가시성 스트림은, 지오메트리 쉐이더가 생성한 프리미티브들의 최대 수에 의해 승산된 최대 수의 테셀레이팅된 프리미티브들을 인코딩할 것이다. 즉, 테셀레이션 출력 프리미티브들의 최대 수가 N이고, 지오메트리 쉐이더로부터의 출력 프리미티브들의 최대 수가 M이면, 지오메트리 쉐이더가 인에이블되는 경우의 가시성 스트림의 길이는 NxM이 될 것이다. 이 예에서, 비닝 지오메트리 쉐이더 (70) 는, 지오메트리 쉐이더에 의해 생성된 프리미티브들이 최종 장면에서 보이는지를 비닝 깊이 테스트 유닛 (74) 이 결정할 수도 있도록 인에이블될 것이다.
다시, 이 단일의 가시성 스트림에 대한 디폴트 값들은 0들이다. 임의의 지오메트리 쉐이더 출력 삼각형들이 비닝 깊이 테스트 유닛 (74) 에 의한 비닝 패스 동안 현재 렌더링된 타일에서 보인다고 결정되면, 그것의 대응하는 가시성 비트는 1로 설정될 것이다. 타일이 렌더링될 때, 단일의 가시성 스트림에서의 단일의 패치 영역 내부에서 임의의 가시성 비트들이 1로 설정되는지를 결정하기 위해 가시성 스트림이 체크된다. 패치 내부의 모든 값들이 0이면, 이것은 하나의 클록 싸이클에서 결정될 수 있다. 대응하여, 도메인 쉐이더 (40) 또는 지오메트리 쉐이더 (42) 에 의한 프로세싱을 위해 현재 테셀레이팅된 삼각형이 생성되어 전송될 필요가 있을 것인지의 여부를 결정하기 위해 임의의 지오메트리 쉐이더 출력 프리미티브들이 보였다면, 테셀레이터 (38) (도 3 참조) 는 매 (every) 지오메트리 쉐이더 출력 가시성 비트 범위 (범위 사이즈는 지오메트리 쉐이더 출력 프리미티브들의 최대 수이다) 를 체크할 것이다.
도 9로 돌아가면, 테셀레이션 스테이지뿐만 아니라 인에이블된 지오메트리 쉐이더를 구비하는 그래픽스 파이프라인에 대해 단일의 가시성 스트림 (104') 이 사용된다. 단일의 가시성 스트림 (104') 은 길이 NxM으로 이루어지는데, 여기서 N은 렌더링 파이프라인에 의해 정의된 것과 같은 패치마다의 출력 프리미티브들의 최대 수를 정의하고 M은 지오메트리 쉐이더에 의해 생성될 수도 있는 출력 프리미티브들의 최대 수를 정의한다.
도 10은 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하는 일 예의 방법을 예시하는 흐름도이다. 일 예로서, 이 방법은 도 2의 GPU (6) 에 의해 수행될 수도 있다. GPU (6) 는 프레임의 각각의 타일에 대한 입력 가시성 스트림을 생성하도록 (110), 그리고 프레임의 각각의 타일에 대한 출력 가시성 스트림을 생성하도록 (112) 구성될 수도 있다. 입력 가시성 스트림은, 입력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타낸다. 출력 가시성 스트림은, 출력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타낸다. 출력 프리미티브는 입력 프리미티브를 테셀레이팅하는 것에 의해 생성된다.
GPU (6) 는 프레임의 현재 타일을 렌더링하도록 더 구성될 수도 있는데, 여기서 렌더링은 입력 가시성 스트림 및 출력 가시성 스트림에 각각 기초하여 입력 프리미티브들 및 출력 프리미티브들에 대해 스킵된다 (114). 특히, 출력 프리미티브들에 대한 렌더링을 스킵하는 것은, 출력 가시성 스트림에 의해 현재 프레임에서 보이지 않는 것으로 나타내어진 출력 프리미티브들에 대해 테셀레이션을 스킵하는 것을 포함할 수도 있다.
입력 가시성 스트림을 생성하고 (110) 그리고 출력 가시성 스트림을 생성하는 (112) 단계들은 비닝 패스 (116) 에서 함께 수행될 수도 있다. 도 11은 타일 기반의 렌더링 파이프라인에서 비닝 패스의 일 예의 방법을 예시하는 흐름도이다. GPU (6) 는 비닝 패스 (116) 를 수행하도록 구성될 수도 있다. GPU (6) 는, 입력 프리미티브를 버텍스 쉐이딩하고 (118), 복수의 출력 프리미티브들을 생성하기 위해 버텍스 쉐이딩된 입력 프리미티브를 테셀레이팅하고 (120), 복수의 출력 프리미티브들을 래스터라이징하고 (122), 프레임의 타일에 대해 출력 프리미티브들이 보이는지를 결정하기 위해 래스터라이징된 출력 프리미티브들에 대한 깊이 테스트를 수행하도록 (124) 더 구성될 수도 있다.
GPU (6) 는, 깊이 테스트에 기초하여 입력 프리미티브가 타일에서 보이는지 아닌지의 여부의 표시 (indication) 를 입력 가시성 스트림에서 생성하는데, 여기서 입력 프리미티브는, 그 입력 프리미티브를 테셀레이팅하는 것에 의해 생성된 임의의 출력 프리미티브들이 보이는 것으로 결정되면 보이는 것으로 결정된다 (126). 마찬가지로, GPU (6) 는 깊이 테스트에 기초하여 출력 프리미티브가 타일에서 보이는지 아닌지의 표시를 출력 가시성 스트림에서 생성한다 (128).
도 12는 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하는 다른 예의 방법을 예시하는 흐름도이다. 이 예에서, 단일의 가시성 스트림은, 입력 프리미티브로부터 형성될 수도 있는 출력 프리미티브들의 가시성을 나타내는 입력 프리미티브마다 생성된다. GPU (6) 는, 입력 프리미티브를 버텍스 쉐이딩하고 (140), 복수의 출력 프리미티브들을 생성하기 위해 버텍스 쉐이딩된 입력 프리미티브를 테셀레이팅하고 (142), 복수의 출력 프리미티브들을 래스터라이징하고 (144), 프레임의 타일에 대해 출력 프리미티브들이 보이는지를 결정하기 위해 래스터라이징된 출력 프리미티브들에 대한 깊이 테스트를 수행하도록 (146) 구성될 수도 있다.
GPU (6) 는 깊이 테스트에 기초하여 출력 프리미티브가 타일에서 보이는지 아닌지의 표시를 가시성 스트림에서 생성하도록 더 구성될 수도 있다 (148). 가시성 스트림은 N 비트들의 길이를 가질 수도 있는데, 각 비트는 렌더링시 각 타일에서 출력 프리미티브가 보이는지 아닌지의 여부를 나타낸다. 길이 N은, 렌더링 파이프라인에 의해 정의된 바와 같은 입력 프리티브마다의 출력 프리미티브들의 최대 수에 의해 결정된다. GPU (6) 는 프레임의 현재 타일을 렌더링하도록 또한 구성될 수도 있는데, 여기서 가시성 스트림에서의 매 비트가 보이지 않는 출력 프리미티브를 나타내는 경우, 입력 프리미티브들에 대해 렌더링이 스킵되고, 가시성 스트림에 의해 현재 프레임에서 보이지 않는 것으로 나타내어진 출력 프리미티브들에 대해 렌더링이 스킵된다 (150).
도 13은 타일 기반의 렌더링 파이프라인에서 비닝 패스의 다른 예의 방법을 예시하는 흐름도이다. 도 13에 도시된 프로세스는, 지오메트리 단계 (152) 의 추가를 제외하면 도 12에 도시된 것과 동일하다. GPU (6) 가 인에이블된 지오메트리 쉐이더를 가지면, 복수의 출력 프리미티브들의 지오메트리 쉐이딩을 수행하여 추가적인 출력 프리미티브들을 생성하는 추가적 단계 (152) 가 테셀레이션 단계 (142) 와 래스터라이제이션 단계 (144) 사이에서 수행된다. 이 예에서, 가시성 스트림은 NxM 비트들의 증가된 길이를 가질 것인데, 여기서 M은 지오메트리 쉐이더에 의해 생성된 출력 프리미티브들의 최대 수이다.
하나 이상의 실시형태들에서, 상술된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되면, 상기 기능들은 비일시적 컴퓨터 판독가능 매체를 포함하는 제조 물품 상의 하나 이상의 명령들 또는 코드로서 저장될 수도 있다. 컴퓨터 판독가능 매체들은 컴퓨터 데이터 저장 매체들을 포함할 수도 있다. 데이터 스토리지 매체들은 본 개시에서 설명된 기술들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용 가능한 매체들일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기적 저장 디바이스들, 플래시 메모리, 또는 소망의 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본원에서 사용된 바와 같이, 디스크 (disk) 와 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 디스크 (disk) 는 일반적으로 데이터를 자기적으로 재생하고, 디스크 (disc) 는 데이터를 레이저들에 의해 광학적으로 재생한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
하나 이상의 DSP들, 범용 마이크로프로세서들, ASIC들, FPGA들, 또는 다른 등가의 집적 또는 이산 로직 회로부와 같은 하나 이상의 프로세서들에 의해 코드가 실행될 수도 있다. 또한, 몇몇 양태들에서, 본원에서 설명된 기능성은 전용 하드웨어 및/또는 소프트웨어 모듈들 내에서 제공될 수도 있다. 또한, 본 기술들은 하나 이상의 회로들 또는 로직 소자들에서 완전히 구현될 수 있다.
본 개시의 기술들은, 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들면, 칩셋) 를 포함하는 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적 양태를 강조하기 위해 다양한 소자들, 모듈들, 또는 유닛들이 본 개시에서 설명되었지만, 반드시 상이한 하드웨어 유닛들에 의해 실현될 필요는 없다. 대신, 상술한 바와 같이, 다양한 유닛들은, 적절한 소프트웨어 및/또는 펌웨어와 연계하여, 코덱 하드웨어 유닛에서 통합되거나 또는 상술한 하나 이상의 프로세서들을 포함하는 상호 동작적인 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 예들을 설명하였다. 이들 및 다른 예들은 하기의 특허청구범위 내에 있다.

Claims (48)

  1. 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션 (tessellation) 을 위한 방법으로서,
    프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 입력 가시성 스트림을 생성하는 것으로서, 상기 입력 가시성 스트림은 입력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타내는, 상기 입력 가시성 스트림을 생성하는 것;
    상기 프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 출력 가시성 스트림을 생성하는 것으로서, 상기 출력 가시성 스트림은 깊이 테스트에 기초하여 상기 타일에서 출력 프리미티브가 보이는지 아닌지의 여부의 표시를 포함하고, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되고, 상기 출력 프리미티브는 상기 입력 프리미티브를 테셀레이팅하는 것에 의해 생성되고, 상기 출력 가시성 스트림은 매 (every) 출력 프리미티브에 대해 프리미티브가 렌더링된 타일에 대해 기여하는지 아닌지의 여부를 나타내는 일련의 비트들을 포함하고, 상기 입력 가시성 스트림은 매 입력 프리미티브에 대해 프리미티브가 렌더링된 타일에 대해 기여하는지 아닌지의 여부를 나타내는 일련의 비트들을 포함하는, 상기 출력 가시성 스트림을 생성하는 것; 및
    상기 입력 가시성 스트림 및 상기 출력 가시성 스트림에 기초하여 현재 타일에 대한 출력 프리미티브들을 생성하기 위해 입력 프리미티브들을 테셀레이팅하는 것을 포함하고,
    상기 입력 프리미티브들을 테셀레이팅하는 것은:
    상기 입력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들에 대해 테셀레이션을 스킵하는 것; 및
    상기 출력 가시성 스트림에 기초하여, 상기 입력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하는 것으로 나타내어진 입력 프리미티브들에 대해 테셀레이션을 수행하는 것으로서, 대응하는 출력 프리미티브들이 상기 출력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들의 일부에 대해 테셀레이션이 스킵되는, 상기 입력 프리미티브들에 대해 테셀레이션을 수행하는 것
    을 포함하는, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  2. 제 1항에 있어서,
    상기 입력 가시성 스트림을 생성하는 것은:
    상기 입력 프리미티브를 버텍스 (vertex) 쉐이딩하는 것;
    버텍스 쉐이딩된 상기 입력 프리미티브를 헐 (hull) 쉐이딩하는 것;
    복수의 출력 프리미티브들을 생성하기 위해 헐 쉐이딩된 상기 입력 프리미티브를 테셀레이팅하는 것;
    상기 복수의 출력 프리미티브들을 도메인 쉐이딩하는 것;
    픽셀들을 생성하기 위해 상기 복수의 출력 프리미티브들을 래스터라이징하는 것;
    프레임의 타일에 대해 상기 픽셀들이 보이는지를 결정하기 위해 깊이 테스트를 수행하는 것; 및
    상기 깊이 테스트에 기초하여 상기 입력 프리미티브가 상기 타일에서 보이는지 아닌지의 여부의 표시 (indication) 를 상기 입력 가시성 스트림에서 생성하는 것으로서, 상기 입력 프리미티브와 관련된 상기 출력 프리미티브들을 래스터라이징하는 것에 의해 생성된 임의의 픽셀들이 보이는 것으로 결정되면 상기 입력 프리미티브는 보이는 것으로 결정되는, 상기 표시를 상기 입력 가시성 스트림에서 생성하는 것을 포함하는, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  3. 삭제
  4. 제 1항에 있어서,
    상기 입력 프리미티브는 패치이고 상기 출력 프리미티브는 삼각형, 쿼드 (quad) 또는 등치선 (isoline) 인, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  5. 제 1항에 있어서,
    상기 프레임의 상기 현재 타일을 렌더링하는 것을 더 포함하고,
    상기 입력 가시성 스트림에 의해 현재 타일에서 보이지 않는 것으로 나타내어진 입력 프리미티브들에 대해 렌더링이 스킵되는, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  6. 제 1항에 있어서,
    상기 프레임의 상기 현재 타일을 렌더링하는 것을 더 포함하고,
    상기 출력 가시성 스트림에 의해 현재 타일에서 보이지 않는 것으로 나타내어진 출력 프리미티브들에 대해 렌더링이 스킵되는, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  7. 삭제
  8. 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법으로서,
    프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 각각의 입력 프리미티브에 대한 가시성 스트림을 생성하는 것; 및
    상기 가시성 스트림에 기초하여 현재 타일에 대한 출력 프리미티브들을 생성하기 위해 입력 프리미티브들을 테셀레이팅하는 것을 포함하고,
    상기 가시성 스트림은 깊이 테스트에 기초하여 상기 타일에서 출력 프리미티브가 보이는지 아닌지의 여부의 표시를 포함하고, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되고, 상기 가시성 스트림은 N 비트들의 길이를 가지고, 각각의 비트는 각각의 출력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타내고, 상기 출력 프리미티브는 상기 입력 프리미티브를 테셀레이팅하는 것에 의해 생성되고,
    상기 입력 프리미티브들을 테셀레이팅하는 것은, 대응하는 출력 프리미티브들이 상기 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들의 일부에 대해 테셀레이션을 스킵하는 것을 포함하는, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  9. 제 8항에 있어서,
    상기 길이 N은, 렌더링 파이프라인에 의해 정의된 바와 같은 입력 프리티브마다의 출력 프리미티브들의 최대 수에 의해 결정되는, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  10. 제 8항에 있어서,
    상기 가시성 스트림을 생성하는 것은:
    상기 입력 프리미티브를 버텍스 쉐이딩하는 것;
    버텍스 쉐이딩된 상기 입력 프리미티브를 헐 쉐이딩하는 것;
    복수의 출력 프리미티브들을 생성하기 위해 헐 쉐이딩된 상기 입력 프리미티브를 테셀레이팅하는 것;
    상기 복수의 출력 프리미티브들을 도메인 쉐이딩하는 것;
    픽셀들을 생성하기 위해 상기 복수의 출력 프리미티브들을 래스터라이징하는 것;
    프레임의 타일에 대해 상기 픽셀들이 보이는지를 결정하기 위해 깊이 테스트를 수행하는 것; 및
    상기 깊이 테스트에 기초하여 상기 타일에서 상기 출력 프리미티브가 보이는지 아닌지의 여부의 상기 표시를 상기 가시성 스트림에서 생성하는 것으로서, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되는, 상기 표시를 상기 가시성 스트림에서 생성하는 것을 포함하는, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  11. 제 8항에 있어서,
    상기 프레임의 상기 현재 타일을 렌더링하는 것을 더 포함하고,
    상기 가시성 스트림에서의 매 비트가 보이지 않는 출력 프리미티브를 나타내는 경우 입력 프리미티브들에 대해 렌더링이 스킵되는, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  12. 제 8항에 있어서,
    상기 프레임의 상기 현재 타일을 렌더링하는 것을 더 포함하고,
    상기 가시성 스트림에 의해 현재 타일에서 보이지 않는 것으로 나타내어진 출력 프리미티브들에 대해 렌더링이 스킵되는, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  13. 제 8항에 있어서,
    상기 타일 기반의 렌더링 아키텍쳐는 인에이블된 지오메트리 쉐이더를 구비하고, 상기 가시성 스트림은 NxM 비트들의 길이를 가지며, M은 상기 지오메트리 쉐이더에 의해 생성된 출력 프리미티브들의 최대 수이고, 상기 가시성 스트림을 생성하는 것은 상기 출력 프리미티브들을 도메인 쉐이딩한 이후 상기 복수의 출력 프리미티브들을 지오메트리 쉐이딩하는 것을 더 포함하는, 그래픽 프로세서에 의한 타일 기반의 그래픽스 렌더링 파이프라인에서의 테셀레이션을 위한 방법.
  14. 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치로서,
    그래픽스 데이터를 저장하도록 구성된 메모리; 및
    상기 메모리와 통신하는 그래픽스 프로세서를 포함하고,
    상기 그래픽스 프로세서는:
    상기 그래픽스 데이터 상에서 비닝 파이프라인을 실행하도록 구성되고, 상기 비닝 파이프라인은 프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 입력 가시성 스트림을 생성하도록 구성되고, 상기 입력 가시성 스트림은 입력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타내고, 상기 비닝 파이프라인은 상기 프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 출력 가시성 스트림을 생성하도록 더 구성되고, 상기 출력 가시성 스트림은 깊이 테스트에 기초하여 상기 타일에서 출력 프리미티브가 보이는지 아닌지의 여부의 표시를 포함하고, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되고, 상기 출력 프리미티브는 상기 입력 프리미티브를 테셀레이팅하는 것에 의해 생성되고, 상기 출력 가시성 스트림은 매 출력 프리미티브에 대해 프리미티브가 렌더링된 타일에 대해 기여하는지 아닌지의 여부를 나타내는 일련의 비트들을 포함하고, 상기 입력 가시성 스트림은 매 입력 프리미티브에 대해 프리미티브가 렌더링된 타일에 대해 기여하는지 아닌지의 여부를 나타내는 일련의 비트들을 포함하고, 그리고
    상기 그래픽스 프로세서는 또한 렌더링 파이프라인을 실행하도록 구성되고, 상기 렌더링 파이프라인은 상기 입력 가시성 스트림 및 상기 출력 가시성 스트림에 기초하여 현재 타일에 대한 출력 프리미티브들을 생성하기 위해 입력 프리미티브들을 테셀레이팅하도록 구성되고, 상기 입력 프리미티브들을 테셀레이팅하는 것은, 상기 입력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들에 대해 테셀레이션을 스킵하는 것, 및 상기 출력 가시성 스트림에 기초하여, 상기 입력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하는 것으로 나타내어진 입력 프리미티브들에 대해 테셀레이션을 수행하는 것을 포함하고, 대응하는 출력 프리미티브들이 상기 출력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들의 일부에 대해 테셀레이션이 스킵되는, 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  15. 제 14항에 있어서,
    상기 비닝 파이프라인은:
    상기 입력 프리미티브에 대해 버텍스 쉐이딩을 수행하도록 구성된 비닝 버텍스 쉐이더;
    버텍스 쉐이딩된 상기 입력 프리미티브에 대해 헐 쉐이딩을 수행하도록 구성된 비닝 헐 쉐이더;
    복수의 출력 프리미티브들을 생성하기 위해 헐 쉐이딩된 상기 입력 프리미티브를 테셀레이팅하도록 구성된 비닝 테셀레이터 스테이지;
    상기 복수의 출력 프리미티브들에 대해 도메인 쉐이딩을 수행하도록 구성된 비닝 도메인 쉐이더;
    픽셀들을 생성하기 위해 상기 복수의 출력 프리미티브들을 래스터라이징하도록 구성된 비닝 래스터라이저; 및
    상기 픽셀들이 프레임의 타일에 대해 보이는지를 결정하기 위해 상기 픽셀들에 대해 깊이 테스트를 수행하도록 구성된 비닝 깊이 테스트 스테이지를 포함하고,
    상기 비닝 파이프라인은, 상기 깊이 테스트에 기초하여 상기 입력 프리미티브가 상기 타일에서 보이는지 아닌지의 여부의 표시를 상기 입력 가시성 스트림에서 생성하고, 상기 입력 프리미티브와 관련된 상기 출력 프리미티브들을 래스터라이징하는 것에 의해 생성된 임의의 픽셀들이 보이는 것으로 결정되면 상기 입력 프리미티브는 보이는 것으로 결정되는, 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  16. 제 14항에 있어서,
    상기 입력 프리미티브는 패치이고 상기 출력 프리미티브는 삼각형, 쿼드 또는 등치선인, 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  17. 제 14항에 있어서,
    상기 프레임의 상기 현재 타일을 렌더링하도록 구성된 상기 렌더링 파이프라인을 더 포함하고,
    상기 입력 가시성 스트림에 의해 현재 타일에서 보이지 않는 것으로 나타내어진 입력 프리미티브들에 대해 렌더링이 스킵되고, 상기 출력 가시성 스트림에 의해 상기 현재 타일에서 보이지 않는 것으로 나타내어진 출력 프리미티브들에 대해 렌더링이 스킵되는, 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  18. 삭제
  19. 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치로서,
    그래픽스 데이터를 저장하도록 구성된 메모리; 및
    상기 메모리와 통신하는 그래픽스 프로세서를 포함하고,
    상기 그래픽스 프로세서는 상기 그래픽스 데이터 상에서 비닝 파이프라인을 실행하도록 구성되고, 상기 비닝 파이프라인은 프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 각각의 입력 프리미티브에 대한 가시성 스트림을 생성하도록 구성되고, 상기 가시성 스트림은 깊이 테스트에 기초하여 상기 타일에서 출력 프리미티브가 보이는지 아닌지의 여부의 표시를 포함하고, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되고, 상기 가시성 스트림은 N 비트들의 길이를 가지며, 각각의 비트는 각각의 출력 프리미티브가 렌더링시 각각의 타일에서 보이는지의 여부를 나타내고, 상기 출력 프리미티브는 상기 입력 프리미티브를 테셀레이팅하는 것에 의해 생성되고,
    상기 그래픽스 프로세서는 또한 렌더링 파이프라인을 실행하도록 구성되고, 상기 렌더링 파이프라인은 상기 가시성 스트림에 기초하여 현재 타일에 대한 출력 프리미티브들을 생성하기 위해 입력 프리미티브들을 테셀레이팅하도록 구성되고, 상기 입력 프리미티브들을 테셀레이팅하는 것은, 대응하는 출력 프리미티브들이 상기 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들의 일부에 대해 테셀레이션을 스킵하는 것을 포함하는, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  20. 제 19항에 있어서,
    상기 길이 N은, 상기 렌더링 파이프라인에 의해 정의된 바와 같은 입력 프리티브마다의 출력 프리미티브들의 최대 수에 의해 결정되는, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  21. 제 19항에 있어서,
    상기 비닝 파이프라인은:
    상기 입력 프리미티브에 대해 버텍스 쉐이딩을 수행하도록 구성된 비닝 버텍스 쉐이더;
    버텍스 쉐이딩된 상기 입력 프리미티브에 대해 헐 쉐이딩을 수행하도록 구성된 비닝 헐 쉐이더;
    복수의 출력 프리미티브들을 생성하기 위해 헐 쉐이딩된 상기 입력 프리미티브를 테셀레이팅하도록 구성된 비닝 테셀레이터 스테이지;
    상기 복수의 출력 프리미티브들에 대해 도메인 쉐이딩을 수행하도록 구성된 비닝 도메인 쉐이더;
    픽셀들을 생성하기 위해 상기 복수의 출력 프리미티브들을 래스터라이징하도록 구성된 비닝 래스터라이저; 및
    상기 픽셀들이 프레임의 타일에 대해 보이는지를 결정하기 위해 상기 픽셀들에 대해 깊이 테스트를 수행하도록 구성된 비닝 깊이 테스트 스테이지를 포함하고,
    상기 비닝 파이프라인은, 상기 깊이 테스트에 기초하여 상기 타일에서 상기 출력 프리미티브가 보이는지 아닌지의 여부의 상기 표시를 상기 가시성 스트림에서 생성하고, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되는, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  22. 제 19항에 있어서,
    상기 프레임의 상기 현재 타일을 렌더링하도록 구성된 상기 렌더링 파이프라인을 더 포함하고,
    상기 가시성 스트림에서의 매 비트가 보이지 않는 출력 프리미티브를 나타내는 경우 입력 프리미티브들에 대해 렌더링이 스킵되는, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  23. 삭제
  24. 제 19항에 있어서,
    상기 렌더링 파이프라인은 지오메트리 쉐이더를 포함하고, 상기 가시성 스트림은 NxM 비트들의 길이를 가지며, M은 상기 지오메트리 쉐이더에 의해 생성된 출력 프리미티브들의 최대 수이고, 상기 비닝 파이프라인은 상기 비닝 도메인 쉐이더 뒤에 상기 복수의 출력 프리미티브들에 대한 지오메트리 쉐이딩을 수행하도록 구성된 비닝 지오메트리 쉐이더를 더 포함하는, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  25. 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치로서,
    프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 입력 가시성 스트림을 생성하는 수단으로서, 상기 입력 가시성 스트림은 입력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타내는, 상기 입력 가시성 스트림을 생성하는 수단;
    상기 프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 출력 가시성 스트림을 생성하는 수단으로서, 상기 출력 가시성 스트림은 깊이 테스트에 기초하여 상기 타일에서 출력 프리미티브가 보이는지 아닌지의 여부의 표시를 포함하고, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되고, 상기 출력 프리미티브는 상기 입력 프리미티브를 테셀레이팅하는 것에 의해 생성되고, 상기 출력 가시성 스트림은 매 출력 프리미티브에 대해 프리미티브가 렌더링된 타일에 대해 기여하는지 아닌지의 여부를 나타내는 일련의 비트들을 포함하고, 상기 입력 가시성 스트림은 매 입력 프리미티브에 대해 프리미티브가 렌더링된 타일에 대해 기여하는지 아닌지의 여부를 나타내는 일련의 비트들을 포함하는, 상기 출력 가시성 스트림을 생성하는 수단; 및
    상기 입력 가시성 스트림 및 상기 출력 가시성 스트림에 기초하여 현재 타일에 대한 출력 프리미티브들을 생성하기 위해 입력 프리미티브들을 테셀레이팅하는 수단을 포함하고,
    상기 입력 프리미티브들을 테셀레이팅하는 수단은:
    상기 입력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들에 대해 테셀레이션을 스킵하는 수단; 및
    상기 출력 가시성 스트림에 기초하여, 상기 입력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하는 것으로 나타내어진 입력 프리미티브들에 대해 테셀레이션을 수행하는 수단으로서, 대응하는 출력 프리미티브들이 상기 출력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들의 일부에 대해 테셀레이션이 스킵되는, 상기 입력 프리미티브들에 대해 테셀레이션을 수행하는 수단
    을 포함하는, 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  26. 제 25항에 있어서,
    상기 입력 가시성 스트림을 생성하는 수단은:
    상기 입력 프리미티브를 버텍스 쉐이딩하는 수단;
    버텍스 쉐이딩된 상기 입력 프리미티브를 헐 쉐이딩하는 수단;
    복수의 출력 프리미티브들을 생성하기 위해 헐 쉐이딩된 상기 입력 프리미티브를 테셀레이팅하는 수단;
    상기 복수의 출력 프리미티브들을 도메인 쉐이딩하는 수단;
    픽셀들을 생성하기 위해 상기 복수의 출력 프리미티브들을 래스터라이징하는 수단;
    프레임의 타일에 대해 상기 픽셀들이 보이는지를 결정하기 위해 상기 픽셀들에 대해 깊이 테스트를 수행하는 수단; 및
    상기 깊이 테스트에 기초하여 상기 입력 프리미티브가 상기 타일에서 보이는지 아닌지의 여부의 표시를 상기 입력 가시성 스트림에서 생성하는 수단으로서, 상기 입력 프리미티브와 관련된 상기 출력 프리미티브들을 래스터라이징하는 것에 의해 생성된 임의의 픽셀들이 보이는 것으로 결정되면 상기 입력 프리미티브는 보이는 것으로 결정되는, 상기 표시를 상기 입력 가시성 스트림에서 생성하는 수단을 포함하는, 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  27. 삭제
  28. 제 25항에 있어서,
    상기 입력 프리미티브는 패치이고 상기 출력 프리미티브는 삼각형, 쿼드 또는 등치선인, 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  29. 제 25항에 있어서,
    상기 프레임의 상기 현재 타일을 렌더링하는 수단을 더 포함하고,
    상기 입력 가시성 스트림에 의해 현재 타일에서 보이지 않는 것으로 나타내어진 입력 프리미티브들에 대해 렌더링이 스킵되는, 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  30. 제 25항에 있어서,
    상기 프레임의 상기 현재 타일을 렌더링하는 수단을 더 포함하고,
    상기 출력 가시성 스트림에 의해 현재 타일에서 보이지 않는 것으로 나타내어진 출력 프리미티브들에 대해 렌더링이 스킵되는, 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  31. 삭제
  32. 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치로서,
    프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 각각의 입력 프리미티브에 대한 가시성 스트림을 생성하는 수단;
    상기 가시성 스트림에 기초하여 현재 타일에 대한 출력 프리미티브들을 생성하기 위해 입력 프리미티브들을 테셀레이팅하는 수단; 및
    상기 프레임의 상기 현재 타일을 렌더링하는 수단을 포함하고,
    상기 가시성 스트림은 깊이 테스트에 기초하여 상기 타일에서 출력 프리미티브가 보이는지 아닌지의 여부의 표시를 포함하고, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되고, 상기 가시성 스트림은 N 비트들의 길이를 가지고, 각각의 비트는 출력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타내고, 상기 출력 프리미티브는 상기 입력 프리미티브를 테셀레이팅하는 것에 의해 생성되고, 상기 가시성 스트림에서의 매 비트가 보이지 않는 출력 프리미티브를 나타내는 경우 입력 프리미티브들에 대해 렌더링이 스킵되고,
    상기 입력 프리미티브들을 테셀레이팅하는 것은, 대응하는 출력 프리미티브들이 상기 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들의 일부에 대해 테셀레이션을 스킵하는 것을 포함하는, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  33. 제 32항에 있어서,
    상기 길이 N은, 렌더링 파이프라인에 의해 정의된 바와 같은 입력 프리티브마다의 출력 프리미티브들의 최대 수에 의해 결정되는, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  34. 제 32항에 있어서,
    가시성 스트림을 생성하는 수단은:
    상기 입력 프리미티브를 버텍스 쉐이딩하는 수단;
    버텍스 쉐이딩된 상기 입력 프리미티브를 헐 쉐이딩하는 수단;
    복수의 출력 프리미티브들을 생성하기 위해 헐 쉐이딩된 상기 입력 프리미티브를 테셀레이팅하는 수단;
    상기 복수의 출력 프리미티브들을 도메인 쉐이딩하는 수단;
    픽셀들을 생성하기 위해 상기 복수의 출력 프리미티브들을 래스터라이징하는 수단;
    프레임의 타일에 대해 상기 픽셀들이 보이는지를 결정하기 위해 상기 픽셀들에 대해 깊이 테스트를 수행하는 수단; 및
    상기 깊이 테스트에 기초하여 상기 타일에서 상기 출력 프리미티브가 보이는지 아닌지의 여부의 상기 표시를 상기 출력 가시성 스트림에서 생성하는 수단으로서, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되는, 상기 표시를 상기 출력 가시성 스트림에서 생성하는 수단을 포함하는, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  35. 삭제
  36. 제 32항에 있어서,
    상기 프레임의 상기 현재 타일을 렌더링하는 수단을 더 포함하고,
    상기 가시성 스트림에 의해 현재 타일에서 보이지 않는 것으로 나타내어진 출력 프리미티브들에 대해 렌더링이 스킵되는, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  37. 제 32항에 있어서,
    상기 타일 기반의 렌더링 아키텍쳐는 인에이블된 지오메트리 쉐이더를 구비하고, 상기 가시성 스트림은 NxM 비트들의 길이를 가지며, M은 상기 지오메트리 쉐이더에 의해 생성된 출력 프리미티브들의 최대 수이고, 상기 가시성 스트림을 생성하는 수단은 상기 출력 프리미티브들을 도메인 쉐이딩하는 수단 뒤에 상기 복수의 출력 프리미티브들을 지오메트리 쉐이딩하는 수단을 더 포함하는, 타일 기반의 렌더링 파이프라인에서 테셀레이션을 수행하도록 구성된 장치.
  38. 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 실행시 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하는 디바이스의 하나 이상의 프로세서들로 하여금:
    프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 입력 가시성 스트림을 생성하게 하는 것으로서, 상기 입력 가시성 스트림은 입력 프리미티브가 렌더링시 각각의 타일에서 보이는지의 여부를 나타내는, 상기 입력 가시성 스트림을 생성하게 하고,
    상기 프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 출력 가시성 스트림을 생성하게 하는 것으로서, 상기 출력 가시성 스트림은 깊이 테스트에 기초하여 상기 타일에서 출력 프리미티브가 보이는지 아닌지의 여부의 표시를 포함하고, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되고, 상기 출력 프리미티브는 상기 입력 프리미티브를 테셀레이팅하는 것에 의해 생성되고, 상기 출력 가시성 스트림은 매 출력 프리미티브에 대해 프리미티브가 렌더링된 타일에 대해 기여하는지 아닌지의 여부를 나타내는 일련의 비트들을 포함하고, 상기 입력 가시성 스트림은 매 입력 프리미티브에 대해 프리미티브가 렌더링된 타일에 대해 기여하는지 아닌지의 여부를 나타내는 일련의 비트들을 포함하는, 상기 출력 가시성 스트림을 생성하게 하고, 그리고
    상기 입력 가시성 스트림 및 상기 출력 가시성 스트림에 기초하여 현재 타일에 대한 출력 프리미티브들을 생성하기 위해 입력 프리미티브들을 테셀레이팅하게 하고,
    상기 입력 프리미티브들을 테셀레이팅하는 것은:
    상기 입력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들에 대해 테셀레이션을 스킵하는 것; 및
    상기 출력 가시성 스트림에 기초하여, 상기 입력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하는 것으로 나타내어진 입력 프리미티브들에 대해 테셀레이션을 수행하는 것으로서, 대응하는 출력 프리미티브들이 상기 출력 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들의 일부에 대해 테셀레이션이 스킵되는, 상기 입력 프리미티브들에 대해 테셀레이션을 수행하는 것
    을 포함하는, 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
  39. 제 38항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 추가로:
    상기 입력 프리미티브에 대해 버텍스 쉐이딩을 수행하게 하고;
    버텍스 쉐이딩된 상기 입력 프리미티브에 대해 헐 쉐이딩을 수행하게 하고;
    복수의 출력 프리미티브들을 생성하기 위해 헐 쉐이딩된 상기 입력 프리미티브를 테셀레이팅하게 하고;
    상기 복수의 출력 프리미티브들에 대해 도메인 쉐이딩을 수행하게 하고;
    픽셀들을 생성하기 위해 상기 복수의 출력 프리미티브들을 래스터라이징하게 하고;
    프레임의 타일에 대해 상기 픽셀들이 보이는지를 결정하기 위해 상기 픽셀들에 대해 깊이 테스트를 수행하게 하고;
    상기 깊이 테스트에 기초하여 상기 입력 프리미티브가 상기 타일에서 보이는지 아닌지의 여부의 표시를 상기 입력 가시성 스트림에서 생성하게 하고, 상기 입력 프리미티브와 관련된 상기 출력 프리미티브들을 래스터라이징하는 것에 의해 생성된 임의의 픽셀들이 보이는 것으로 결정되면 상기 입력 프리미티브는 보이는 것으로 결정되는, 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
  40. 제 38항에 있어서,
    상기 입력 프리미티브는 패치이고 상기 출력 프리미티브는 삼각형, 쿼드 또는 등치선인, 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
  41. 제 38항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 추가로:
    상기 프레임의 상기 현재 타일을 렌더링하게 하고,
    상기 입력 가시성 스트림에 의해 현재 프레임에서 보이지 않는 것으로 나타내어진 입력 프리미티브들에 대해 렌더링이 스킵되고, 상기 출력 가시성 스트림에 의해 상기 현재 프레임에서 보이지 않는 것으로 나타내어진 출력 프리미티브들에 대해 렌더링이 스킵되는, 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
  42. 삭제
  43. 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 실행시 타일 기반의 그래픽스 렌더링 파이프라인에서 테셀레이션을 수행하는 디바이스의 하나 이상의 프로세서들로 하여금:
    프레임을 렌더링하기 전에 상기 프레임의 각각의 타일에 대한 각각의 입력 프리미티브에 대한 가시성 스트림을 생성하게 하고,
    상기 가시성 스트림에 기초하여 현재 타일에 대한 출력 프리미티브들을 생성하기 위해 입력 프리미티브들을 테셀레이팅하게 하고,
    상기 가시성 스트림은 깊이 테스트에 기초하여 상기 타일에서 출력 프리미티브가 보이는지 아닌지의 여부의 표시를 포함하고, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되고, 상기 가시성 스트림은 N 비트들의 길이를 가지고, 각각의 비트는 각각의 출력 프리미티브가 렌더링시 각각의 타일에서 보이는지 아닌지의 여부를 나타내고, 상기 출력 프리미티브는 상기 입력 프리미티브를 테셀레이팅하는 것에 의해 생성되고,
    상기 입력 프리미티브들을 테셀레이팅하는 것은, 대응하는 출력 프리미티브들이 상기 가시성 스트림에 의해 상기 현재 타일에 대해 기여하지 않는 것으로 나타내어진 입력 프리미티브들의 일부에 대해 테셀레이션을 스킵하는 것을 포함하는, 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
  44. 제 43항에 있어서,
    상기 길이 N은, 렌더링 파이프라인에 의해 정의된 바와 같은 입력 프리티브마다의 출력 프리미티브들의 최대 수에 의해 결정되는, 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
  45. 제 43항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 추가로:
    상기 입력 프리미티브에 대해 버텍스 쉐이딩을 수행하게 하고;
    버텍스 쉐이딩된 상기 입력 프리미티브에 대해 헐 쉐이딩을 수행하게 하고;
    복수의 출력 프리미티브들을 생성하기 위해 헐 쉐이딩된 상기 입력 프리미티브를 테셀레이팅하게 하고;
    상기 복수의 출력 프리미티브들에 대해 도메인 쉐이딩을 수행하게 하고;
    픽셀들을 생성하기 위해 상기 복수의 출력 프리미티브들을 래스터라이징하게 하고;
    프레임의 타일에 대해 상기 픽셀들이 보이는지를 결정하기 위해 상기 픽셀들에 대해 깊이 테스트를 수행하게 하고; 그리고
    상기 깊이 테스트에 기초하여 상기 타일에서 상기 출력 프리미티브가 보이는지 아닌지의 여부의 상기 표시를 상기 가시성 스트림에서 생성하게 하고, 상기 출력 프리미티브를 래스터라이징하는 것에 의해 생성된 임의의 픽셀이 보이는 것으로 결정되면 상기 출력 프리미티브는 보이는 것으로 결정되는, 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
  46. 제 43항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 추가로:
    상기 프레임의 상기 현재 타일을 렌더링하게 하고,
    상기 가시성 스트림에서의 매 비트가 보이지 않는 출력 프리미티브를 나타내는 경우 입력 프리미티브들에 대해 렌더링이 스킵되는, 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
  47. 제 46항에 있어서,
    상기 가시성 스트림에 의해 현재 타일에서 보이지 않는 것으로 나타내어진 출력 프리미티브들에 대해 렌더링이 스킵되는, 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
  48. 제 43항에 있어서,
    상기 명령들은 상기 하나 이상의 프로세서들로 하여금 추가로, 지오메트리 쉐이더를 포함하는 렌더링 파이프라인을 실행하게 하고,
    상기 가시성 스트림은 NxM 비트들의 길이를 가지며, M은 상기 지오메트리 쉐이더에 의해 생성된 출력 프리미티브들의 최대 수이고, 상기 명령들은 프로세서로 하여금 추가로, 도메인 쉐이딩을 수행한 이후 상기 복수의 출력 프리미티브들에 대해 지오메트리 쉐이딩을 수행하게 하는, 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체.
KR1020147016242A 2011-11-16 2012-10-16 타일 기반 렌더링에서의 테셀레이션 KR101868200B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/298,051 2011-11-16
US13/298,051 US10089774B2 (en) 2011-11-16 2011-11-16 Tessellation in tile-based rendering
PCT/US2012/060368 WO2013074236A1 (en) 2011-11-16 2012-10-16 Tessellation in tile-based rendering

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020167010091A Division KR20160049031A (ko) 2011-11-16 2012-10-16 타일 기반 렌더링에서의 테셀레이션

Publications (2)

Publication Number Publication Date
KR20140098133A KR20140098133A (ko) 2014-08-07
KR101868200B1 true KR101868200B1 (ko) 2018-06-15

Family

ID=47178898

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167010091A KR20160049031A (ko) 2011-11-16 2012-10-16 타일 기반 렌더링에서의 테셀레이션
KR1020147016242A KR101868200B1 (ko) 2011-11-16 2012-10-16 타일 기반 렌더링에서의 테셀레이션

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167010091A KR20160049031A (ko) 2011-11-16 2012-10-16 타일 기반 렌더링에서의 테셀레이션

Country Status (7)

Country Link
US (1) US10089774B2 (ko)
EP (1) EP2780891B1 (ko)
JP (1) JP5837221B2 (ko)
KR (2) KR20160049031A (ko)
CN (1) CN103946895B (ko)
IN (1) IN2014CN03427A (ko)
WO (1) WO2013074236A1 (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101511273B1 (ko) * 2008-12-29 2015-04-10 삼성전자주식회사 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템
GB2500284B (en) 2012-09-12 2014-04-30 Imagination Tech Ltd Tile based computer graphics
US10438314B2 (en) * 2012-10-26 2019-10-08 Nvidia Corporation Two-pass cache tile processing for visibility testing in a tile-based architecture
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
GB2509113B (en) * 2012-12-20 2017-04-26 Imagination Tech Ltd Tessellating patches of surface data in tile based computer graphics rendering
US9087410B2 (en) * 2013-01-17 2015-07-21 Qualcomm Incorporated Rendering graphics data using visibility information
GB2511817A (en) 2013-03-14 2014-09-17 Imagination Tech Ltd Rendering in computer graphics systems
US9807145B2 (en) 2013-05-10 2017-10-31 Successfactors, Inc. Adaptive tile framework
KR102116708B1 (ko) * 2013-05-24 2020-05-29 삼성전자 주식회사 그래픽스 프로세싱 유닛
US9286649B2 (en) 2013-05-31 2016-03-15 Qualcomm Incorporated Conditional execution of rendering commands based on per bin visibility information with added inline operations
US9256976B2 (en) * 2013-07-09 2016-02-09 Intel Corporation Techniques for extracting and displaying partially processed graphics information
US9483862B2 (en) * 2013-12-20 2016-11-01 Qualcomm Incorporated GPU-accelerated path rendering
WO2015154004A1 (en) * 2014-04-05 2015-10-08 Sony Computer Entertainment America Llc Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US9865074B2 (en) 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
US9710957B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Graphics processing enhancement by tracking object and/or primitive identifiers
US10068311B2 (en) 2014-04-05 2018-09-04 Sony Interacive Entertainment LLC Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US9940686B2 (en) 2014-05-14 2018-04-10 Intel Corporation Exploiting frame to frame coherency in a sort-middle architecture
GB2526598B (en) * 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
GB2524121B (en) 2014-06-17 2016-03-02 Imagination Tech Ltd Assigning primitives to tiles in a graphics processing system
GB2524120B (en) * 2014-06-17 2016-03-02 Imagination Tech Ltd Assigning primitives to tiles in a graphics processing system
GB2527822B (en) * 2014-07-03 2020-10-07 Advanced Risc Mach Ltd Graphics processing
KR102329475B1 (ko) * 2014-08-27 2021-11-19 삼성전자주식회사 렌더링 퀄리티 제어 장치 및 방법
US9824412B2 (en) * 2014-09-24 2017-11-21 Intel Corporation Position-only shading pipeline
GB2520822B (en) * 2014-10-10 2016-01-13 Aveva Solutions Ltd Image rendering of laser scan data
KR20160051155A (ko) * 2014-10-31 2016-05-11 삼성전자주식회사 렌더링 장치 및 방법
KR102327144B1 (ko) 2014-11-26 2021-11-16 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법
US9607352B2 (en) * 2014-12-03 2017-03-28 Intel Corporation Prediction based primitive sorting for tile based rendering
US9600926B2 (en) * 2014-12-15 2017-03-21 Intel Corporation Apparatus and method decoupling visibility bins and render tile dimensions for tiled rendering
US9773340B2 (en) * 2015-06-12 2017-09-26 Qualcomm Incorporated Rendering using ray tracing to generate a visibility stream
US9786098B2 (en) * 2015-07-06 2017-10-10 Mediatek Inc. Apparatus for performing tessellation operation and methods utilizing the same
KR102381945B1 (ko) 2015-11-18 2022-04-01 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
US20170199888A1 (en) * 2016-01-13 2017-07-13 Google Inc. Detecting visibility of a content item in a content item slot on a resource
US10096147B2 (en) * 2016-03-10 2018-10-09 Qualcomm Incorporated Visibility information modification
US10332290B2 (en) * 2016-03-21 2019-06-25 Adobe Inc. Fast, coverage-optimized, resolution-independent and anti-aliased graphics processing
US10068307B2 (en) * 2016-05-20 2018-09-04 Intel Corporation Command processing for graphics tile-based rendering
US20170352182A1 (en) * 2016-06-06 2017-12-07 Qualcomm Incorporated Dynamic low-resolution z test sizes
US10032308B2 (en) * 2016-06-22 2018-07-24 Advanced Micro Devices, Inc. Culling objects from a 3-D graphics pipeline using hierarchical Z buffers
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10652284B2 (en) * 2016-10-12 2020-05-12 Samsung Electronics Co., Ltd. Method and apparatus for session control support for field of view virtual reality streaming
EP3565259A1 (en) * 2016-12-28 2019-11-06 Panasonic Intellectual Property Corporation of America Three-dimensional model distribution method, three-dimensional model receiving method, three-dimensional model distribution device, and three-dimensional model receiving device
US10417810B2 (en) * 2017-05-31 2019-09-17 Verizon Patent And Licensing Inc. Methods and systems for rendering virtual reality content based on two-dimensional (“2D”) captured imagery of a three-dimensional (“3D”) scene
GB2567207B (en) * 2017-10-06 2020-02-19 Advanced Risc Mach Ltd Graphics processing systems
GB2574361B (en) * 2017-12-18 2021-03-24 Advanced Risc Mach Ltd Graphics Processing
US10409359B2 (en) * 2018-01-17 2019-09-10 Qualcomm Incorporated Dynamic bin ordering for load synchronization
US10580209B2 (en) 2018-03-06 2020-03-03 Qualcomm Incorporated Removal of degenerated sub-primitives in tessellation
GB2572603B (en) * 2018-04-05 2022-03-23 Imagination Tech Ltd Edge and depth processing hardware
EP3671650A1 (en) * 2018-12-21 2020-06-24 Imagination Technologies Limited Primitive block-based rasterization in graphics processing systems
US11080928B2 (en) * 2019-04-01 2021-08-03 Qualcomm Incorporated Methods and apparatus for visibility stream management
US11010862B1 (en) * 2019-11-14 2021-05-18 Advanced Micro Devices, Inc. Reduced bandwidth tessellation factors
US11170461B2 (en) * 2020-02-03 2021-11-09 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis while rendering
CN112672131B (zh) * 2020-12-07 2024-02-06 聚好看科技股份有限公司 一种全景视频图像显示方法及显示设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2480012A (en) * 2010-04-30 2011-11-02 Imagination Tech Ltd Programmable tessellation in a tile based 3D image rendering system

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697063B1 (en) 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
US6856320B1 (en) 1997-11-25 2005-02-15 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
JP4541533B2 (ja) 2000-11-24 2010-09-08 パナソニック株式会社 描画装置
US7218317B2 (en) * 2003-08-25 2007-05-15 Via Technologies, Inc. Mechanism for reducing Z buffer traffic in three-dimensional graphics processing
US7388581B1 (en) * 2003-08-28 2008-06-17 Nvidia Corporation Asynchronous conditional graphics rendering
GB0524804D0 (en) * 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
US7692648B2 (en) 2006-01-18 2010-04-06 Siemens Medical Solutions Usa, Inc. System and method for empty space skipping in sliding texture based volume rendering by trimming slab polygons
TW200744019A (en) * 2006-05-23 2007-12-01 Smedia Technology Corp Adaptive tile depth filter
US7847798B1 (en) * 2006-10-24 2010-12-07 Adobe Systems Incorporated Clipping and culling artwork using a graphics processing unit
US8203564B2 (en) * 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
GB2452300B (en) 2007-08-30 2009-11-04 Imagination Tech Ltd Predicated geometry processing in a tile based rendering system
US8289319B2 (en) * 2007-10-08 2012-10-16 Ati Technologies Ulc Apparatus and method for processing pixel depth information
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
US8497861B2 (en) 2008-05-30 2013-07-30 Siemens Aktiengesellschaft Method for direct volumetric rendering of deformable bricked volumes
GB0810205D0 (en) 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
GB0823468D0 (en) 2008-12-23 2009-01-28 Imagination Tech Ltd Display list control stream grouping in tile based 3D computer graphics systems
US8692829B2 (en) 2009-10-05 2014-04-08 Nvidia Corporation Calculation of plane equations after determination of Z-buffer visibility
US20110141112A1 (en) 2009-12-11 2011-06-16 William Allen Hux Image processing techniques
US9058685B2 (en) * 2010-03-11 2015-06-16 Broadcom Corporation Method and system for controlling a 3D processor using a control list in memory
US20110310102A1 (en) * 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
US8499305B2 (en) * 2010-10-15 2013-07-30 Via Technologies, Inc. Systems and methods for performing multi-program general purpose shader kickoff
KR101782044B1 (ko) * 2011-02-22 2017-09-26 삼성전자주식회사 그래픽 프로세서 및 조기 가시성 테스트 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2480012A (en) * 2010-04-30 2011-11-02 Imagination Tech Ltd Programmable tessellation in a tile based 3D image rendering system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Frederico Abraham, et al., ‘A load-balancing strategy for sort-first distributed rendering’, IEEE, Proceedings of the XVII Brazilian Symposium on Computer Graphics and Image Processing, 2004.

Also Published As

Publication number Publication date
CN103946895B (zh) 2017-03-15
JP5837221B2 (ja) 2015-12-24
IN2014CN03427A (ko) 2015-10-09
US10089774B2 (en) 2018-10-02
KR20140098133A (ko) 2014-08-07
US20130120380A1 (en) 2013-05-16
WO2013074236A1 (en) 2013-05-23
EP2780891B1 (en) 2018-04-18
KR20160049031A (ko) 2016-05-04
CN103946895A (zh) 2014-07-23
JP2015501981A (ja) 2015-01-19
EP2780891A1 (en) 2014-09-24

Similar Documents

Publication Publication Date Title
KR101868200B1 (ko) 타일 기반 렌더링에서의 테셀레이션
US10991127B2 (en) Index buffer block compression
US10049426B2 (en) Draw call visibility stream
US9330475B2 (en) Color buffer and depth buffer compression
JP4987988B2 (ja) 画像の圧縮及び/又は復元
US9569811B2 (en) Rendering graphics to overlapping bins
KR102258100B1 (ko) 텍스쳐 처리 방법 및 장치
KR101635334B1 (ko) 대칭적 에지 스플릿팅에 의한 표면 테셀레이션
EP3580726B1 (en) Buffer index format and compression
KR101711775B1 (ko) 그래픽스 프로세싱을 위한 그래픽스 메모리 로드 마스크
EP3427229B1 (en) Visibility information modification
US9607435B2 (en) Method for rendering an image synthesis and corresponding device
US11978234B2 (en) Method and apparatus of data compression
US10580209B2 (en) Removal of degenerated sub-primitives in tessellation
US20230186523A1 (en) Method and system for integrating compression
CN106447593A (zh) 图形处理

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2016101002273; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20160418

Effective date: 20180418

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)