KR20210095914A - 가변 레이트 셰이딩과 슈퍼 샘플 셰이딩의 통합 - Google Patents
가변 레이트 셰이딩과 슈퍼 샘플 셰이딩의 통합 Download PDFInfo
- Publication number
- KR20210095914A KR20210095914A KR1020217019698A KR20217019698A KR20210095914A KR 20210095914 A KR20210095914 A KR 20210095914A KR 1020217019698 A KR1020217019698 A KR 1020217019698A KR 20217019698 A KR20217019698 A KR 20217019698A KR 20210095914 A KR20210095914 A KR 20210095914A
- Authority
- KR
- South Korea
- Prior art keywords
- quads
- shading rate
- shading
- rate
- modified
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
분리된 해상도로 래스터화 및 픽셀 셰이딩을 수행하는 기술이 본 출원에서 제공된다. 이 기술은 쿼드를 생성하기 위해 정상적으로 래스터화를 수행하는 것을 수반한다. 쿼드는 타일 버퍼에 누적된다. 타일 버퍼의 콘텐츠에 대해 셰이딩 레이트가 결정된다. 셰이딩 레이트가 서브 샘플링 셰이딩 레이트인 경우이면, 타일 버퍼의 쿼드가 다운샘플링되어 픽셀 셰이더에서 수행할 작업량을 감소시킨다. 그런 다음, 셰이딩된 다운샘플링된 쿼드가 렌더 대상의 해상도로 복원된다. 셰이딩 레이트가 슈퍼 샘플링 셰이딩 레이트인 경우이면, 타일 버퍼의 쿼드가 업샘플링된다. 셰이딩된 다운샘플링 또는 업샘플링된 쿼드의 결과가 렌더 대상에 기록된다.
Description
관련 출원에 대한 상호 참조
본 출원은 2018년 12월 20일자로 출원된 미국 정규 출원 제16/228,692호의 이익을 주장하며, 그 내용은 본 출원에 참조로 통합된다.
3차원("3D") 그래픽 처리 파이프라인은 일련의 단계를 수행하여 입력 지오메트리를 화면에 디스플레이할 2차원("2D") 이미지로 변환한다. 일부 단계는 래스터화 및 픽셀 셰이딩을 포함한다. 래스터화는 래스터라이저 이전의 파이프라인의 스테이지에서 제공되는 삼각형에 커버되는 픽셀(또는 서브픽셀 샘플)을 식별하는 것을 수반한다. 래스터화의 출력에는 쿼드- 2x2 픽셀 블록 -와 쿼드의 픽셀에 의해 커버되는 샘플을 나타내는 커버리지 데이터가 포함된다. 픽셀 셰이더는 쿼드의 픽셀을 셰이딩하고, 쿼드의 픽셀은 이어서 프레임 버퍼에 기록된다. 픽셀 셰이딩은 매우 자원 집약적이기 때문에 픽셀 셰이딩의 효율성을 개선하기 위한 기술이 지속적으로 개발되고 있다.
첨부 도면과 함께 예로서 주어진 다음 설명으로부터 보다 상세한 이해를 얻을 수 있다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 디바이스의 블록도이다.
도 2는 예에 따른 도 1의 디바이스의 세부 사항을 예시한다.
도 3은 도 2에 예시된 그래픽 처리 파이프라인의 추가 세부 사항을 보여주는 블록도이다.
도 4a 내지 도 4d는 예에 따라 픽셀 셰이딩과는 다른 해상도에서 래스터화를 수행하는 기술을 예시한다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 디바이스의 블록도이다.
도 2는 예에 따른 도 1의 디바이스의 세부 사항을 예시한다.
도 3은 도 2에 예시된 그래픽 처리 파이프라인의 추가 세부 사항을 보여주는 블록도이다.
도 4a 내지 도 4d는 예에 따라 픽셀 셰이딩과는 다른 해상도에서 래스터화를 수행하는 기술을 예시한다.
분리된 해상도로 래스터화 및 픽셀 셰이딩을 수행하는 기술이 본 출원에서 제공된다. 이 기술은 쿼드를 생성하기 위해 정상적으로 래스터화를 수행하는 것을 수반한다. 쿼드는 타일 버퍼에 누적된다. 타일 버퍼의 콘텐츠에 대해 셰이딩 레이트가 결정된다. 셰이딩 레이트가 서브 샘플링 셰이딩 레이트인 경우이면, 타일 버퍼의 쿼드가 다운샘플링되어 픽셀 셰이더에서 수행할 작업량을 감소시킨다. 그 다음, 셰이딩된 다운샘플링된 쿼드가 렌더 대상의 해상도로 복원된다. 셰이딩 레이트가 슈퍼 샘플링 셰이딩 레이트인 경우이면, 타일 버퍼의 쿼드가 업샘플링된다. 셰이딩된 다운샘플링 또는 업샘플링된 쿼드의 결과가 렌더 대상에 기록된다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 디바이스(100)의 블록도이다. 디바이스(100)는 예를 들어 컴퓨터, 게임 디바이스, 핸드헬드 디바이스, 셋톱 박스, 텔레비전, 이동 전화, 태블릿 컴퓨터 또는 다른 컴퓨팅 디바이스 중 하나일 수 있지만 이에 제한되지 않는다. 디바이스(100)는 프로세서(102), 메모리(104), 저장소(106), 하나 이상의 입력 디바이스(108) 및 하나 이상의 출력 디바이스(110)를 포함한다. 디바이스(100)는 또한 하나 이상의 입력 드라이버(112) 및 하나 이상의 출력 드라이버(114)를 포함한다. 임의의 입력 드라이버(112)는 하드웨어, 하드웨어와 소프트웨어의 조합, 또는 소프트웨어로서 구현되고, 입력 디바이스(112)를 제어하는 목적(예를 들어, 동작을 제어하고, 입력 드라이버(112)로부터 입력을 수신하고, 입력 드라이버(112)에 데이터를 제공함)으로 기능한다. 유사하게, 임의의 출력 드라이버(114)는 하드웨어, 하드웨어와 소프트웨어의 조합, 또는 소프트웨어로서 구현되고, 출력 디바이스(114)를 제어하는 목적(예를 들어, 동작을 제어하고, 출력 드라이버(114)로부터 입력을 수신하고, 입력 드라이버(114)에 데이터를 제공함)으로 기능한다. 디바이스(100)는 도 1에 도시되지 않은 추가 컴포넌트를 포함할 수 있는 것으로 이해된다.
다양한 대안에서, 프로세서(102)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 동일한 다이에 위치한 CPU 및 GPU, 또는 하나 이상의 프로세서 코어를 포함하고, 각 프로세서 코어는 CPU 또는 GPU일 수 있다. 다양한 대안에서, 메모리(104)는 프로세서(102)와 동일한 다이에 위치하거나 프로세서(102)와 별도로 위치된다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 예를 들어 랜덤 액세스 메모리(RAM), 동적 RAM 또는 캐시를 포함한다.
저장소(106)는 고정 또는 이동식 저장소, 예를 들어, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광학 디스크, 또는 플래시 드라이브를 포함하지만 이에 제한되지는 않는다. 입력 디바이스(108)는 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체 인식 스캐너, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함하지만 이에 제한되지는 않는다. 출력 디바이스(110)는 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 지시등, 안테나, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함하지만 이에 제한되지는 않는다.
입력 드라이버(112) 및 출력 드라이버(114)는 각각 입력 디바이스(108) 및 출력 디바이스(110)와 인터페이싱하고 구동하도록 구성된 하나 이상의 하드웨어, 소프트웨어 및/또는 펌웨어 컴포넌트를 포함한다. 입력 드라이버(112)는 프로세서(102) 및 입력 디바이스(108)와 통신하고, 프로세서(102)가 입력 디바이스(108)로부터 입력을 수신하도록 허용한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스(110)와 통신하고, 프로세서(102)가 출력 디바이스(110)에 출력을 전송하도록 허용한다. 출력 드라이버(114)는 디스플레이 디바이스(118)에 결합된 가속 처리 디바이스("APD")(116)를 포함하며, 디스플레이 디바이스는 일부 예에서 물리적 디스플레이 디바이스 또는 원격 디스플레이 프로토콜을 사용하여 출력을 보여주는 모의 디바이스이다. APD(116)는 프로세서(102)로부터 컴퓨트 커맨드 및 그래픽 렌더링 커맨드를 수용하고, 이들 컴퓨트 및 그래픽 렌더링 커맨드를 처리하고, 디스플레이를 위해 디스플레이 디바이스(118)에 픽셀 출력을 제공하도록 구성된다. 아래에서 더 구체적으로 설명되는 바와 같이, APD(116)는 단일 명령어 다중 데이터("SIMD") 패러다임에 따라 계산을 수행하도록 구성된 하나 이상의 병렬 처리 유닛을 포함한다. 따라서, 다양한 기능이 본 출원에서 APD(116)에 의해 또는 이와 함께 수행되는 것으로 설명되지만, 다양한 대안에서, APD(116)에 의해 수행되는 것으로 설명된 기능은 추가적으로 또는 대안적으로 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않는 유사한 능력을 가지면서 디스플레이 디바이스(118)에 그래픽 출력을 제공하도록 구성되는 다른 컴퓨팅 디바이스에 의해 수행된다. 예를 들어, SIMD 패러다임에 따라 처리 태스크를 수행하는 임의의 처리 시스템이 본 출원에 설명된 기능을 수행하도록 구성될 수 있는 것으로 고려된다. 대안적으로, SIMD 패러다임에 따라 처리 태스크를 수행하지 않는 컴퓨팅 시스템이 본 출원에 설명된 기능을 수행하는 것이 고려된다.
도 2는 일 예에 따른 디바이스(100) 및 APD(116)의 세부 사항을 예시한다. 프로세서(102)(도 1)는 운영 체제(120), 드라이버(122) 및 애플리케이션(126)을 실행하고, 대안적으로 또는 추가적으로, 다른 소프트웨어를 실행할 수도 있다. 운영 체제(120)는 하드웨어 자원 관리, 서비스 요청 처리, 프로세스 실행 스케줄링 및 제어, 다른 동작 수행과 같은 디바이스(100)의 다양한 양태를 제어한다. APD 드라이버(122)는 APD(116)의 동작을 제어하고, 그래픽 렌더링 태스크 또는 다른 작업과 같은 태스크를 처리를 위해 APD(116)로 전송한다. APD 드라이버(122)는 또한 APD(116)의 처리 컴포넌트(예컨대, 아래에서 더 구체적으로 설명되는 SIMD 유닛(138))에 의한 실행을 위해 프로그램을 컴파일하는 실시간 컴파일러(just-in-time compiler)를 포함한다.
APD(116)는 병렬 처리에 적합할 수 있는 그래픽 연산 및 비그래픽 연산과 같은 선택된 기능에 대한 커맨드 및 프로그램을 실행한다. APD(116)는 프로세서(102)로부터 수신된 커맨드에 기초하여 픽셀 연산, 기하학적 계산 및 디스플레이 디바이스(118)로의 이미지의 렌더링과 같은 그래픽 파이프라인 연산을 실행하는 데 사용될 수 있다. APD(116)는 또한 프로세서(102)로부터 수신된 커맨드에 기초하여 비디오, 물리 시뮬레이션, 전산 유체 역학 또는 다른 태스크와 관련된 연산과 같은 그래픽 연산과 직접 관련되지 않은 컴퓨트 처리 연산을 실행한다.
APD(116)는 SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)(또는 다른 유닛)의 요청시 연산을 수행하도록 구성된 하나 이상의 SIMD 유닛(138)을 포함하는 컴퓨트 유닛(132)을 포함한다. SIMD 패러다임은 여러 처리 요소가 단일 프로그램 제어 흐름 유닛 및 프로그램 카운터를 공유하고, 따라서, 동일한 프로그램을 실행하지만 상이한 데이터로 해당 프로그램을 실행할 수 있는 패러다임이다. 하나의 예에서, 각 SIMD 유닛(138)은 16개의 레인을 포함하고, 각 레인은 SIMD 유닛(138)의 다른 레인과 동시에 동일한 명령어를 실행하지만 상이한 데이터로 해당 명령어를 실행할 수 있다. 모든 레인이 주어진 명령어를 실행할 필요가 없는 경우가 예측되면 레인을 오프 상태로 전환할 수 있다. 예측은 또한 분기 제어 흐름으로 프로그램을 실행하는 데 사용될 수 있다. 더 구체적으로, 제어 흐름이 개별 레인에 의해 수행되는 계산에 기초하는 조건부 분기 또는 다른 명령어를 갖는 프로그램의 경우, 다양한 제어 흐름 경로의 직렬 실행 및 현재 실행되지 않는 제어 흐름 경로에 대응하는 레인의 예측은 임의의 제어 흐름을 허용한다.
컴퓨트 유닛(132)에서 실행의 기본 단위는 작업 항목이다. 각 작업 항목은 특정 레인에서 병렬로 실행될 프로그램의 단일 인스턴스화를 나타낸다. 작업 항목은 단일 SIMD 처리 유닛(138) 상에서 "웨이브프론트(wavefront)"로서 동시에(또는 부분적으로 동시에 및 부분적으로 순차적으로) 실행될 수 있다. 하나 이상의 웨이브프론트가 동일한 프로그램을 실행하도록 지정된 작업 항목 모음을 포함하는 "작업 그룹"에 포함된다. 작업 그룹을 구성하는 각 웨이브프론트를 실행하여 작업 그룹을 실행할 수 있다. 대안적으로, 웨이브프론트는 단일 SIMD 유닛(138) 또는 상이한 SIMD 유닛들(138)에서 실행된다. 웨이브프론트는 단일 SIMD 유닛(138)에서 동시적으로(또는 의사-동시적으로) 실행될 수 있는 가장 큰 작업 항목 모음으로 고려할 수 있다. SIMD 유닛(138)의 레인 수보다 더 큰 웨이브프론트의 경우 "의사-동시" 실행이 발생한다. 이러한 상황에서, 웨이브프론트는 여러 주기에 걸쳐 실행되며 서로 다른 작업 항목 모음이 서로 다른 주기로 실행된다. APD 스케줄러(136)는 컴퓨트 유닛(132) 및 SIMD 유닛(138) 상의 다양한 작업 그룹 및 웨이브프론트를 스케줄링하는 것과 관련된 동작을 수행하도록 구성된다.
컴퓨트 유닛(132)에 의해 제공되는 병렬성은 픽셀 값 계산, 정점 변환 및 다른 그래픽 연산과 같은 그래픽 관련 연산에 적합하다. 따라서, 일부 예에서, 프로세서(102)로부터 그래픽 처리 커맨드를 수용하는 그래픽 파이프 라인(134)은 병렬 실행을 위해 계산 태스크를 컴퓨트 유닛(132)에 제공한다.
컴퓨트 유닛(132)은 또한 그래픽과 관련이 없거나 그래픽 파이프 라인(134)의 "정상" 동작의 일부로서 수행되지 않는 계산 태스크(예를 들어, 그래픽 파이프 라인(134)의 동작을 위해 수행되는 처리를 보충하기 위해 수행되는 사용자 지정 동작)를 수행하는 데 사용된다. 프로세서(102)에서 실행되는 애플리케이션(126) 또는 다른 소프트웨어는 실행을 위해 이러한 계산 태스크를 정의하는 프로그램을 APD(116)로 송신한다.
도 3은 도 2에 예시되어 있는 그래픽 처리 파이프라인(134)의 추가 세부 사항을 보여주는 블록도이다. 그래픽 처리 파이프라인(134)은 그래픽 처리 파이프라인(134)의 특정 기능을 각각 수행하는 스테이지를 포함한다. 각 스테이지는 프로그램 가능한 컴퓨트 유닛(132)에서 실행되는 셰이더 프로그램으로서 부분적으로 또는 전체적으로 구현되거나, 컴퓨트 유닛(132) 외부의 고정 기능, 프로그래밍 불가능한 하드웨어로서 부분적으로 또는 전체적으로 구현된다.
입력 어셈블러 스테이지(302)는 사용자 채움 버퍼(예를 들어, 애플리케이션(126)과 같은 프로세서(102)에 의해 실행되는 소프트웨어의 요청으로 채워진 버퍼)로부터 기본요소(primitive) 데이터를 판독하고 파이프라인의 잔여 부분에서 사용하기 위해 데이터를 기본요소로 조합한다. 입력 어셈블러 스테이지(302)는 사용자 채움 버퍼에 포함된 기본요소 데이터에 기초하여 상이한 유형의 기본요소를 생성할 수 있다. 입력 어셈블러 스테이지(302)는 나머지 파이프라인에서 사용하기 위해 조합된 기본요소를 포맷한다.
정점 셰이더 스테이지(304)는 입력 어셈블러 스테이지(302)에 의해 조합된 기본요소의 정점을 처리한다. 정점 셰이더 스테이지(304)는 변환, 스키닝(skinning), 모핑(morphing) 및 정점별 조명과 같은 다양한 정점별 연산을 수행한다. 변환 연산에는 정점의 좌표를 변환하는 다양한 연산이 포함된다. 이러한 연산에는 모델링 변환, 보기 변환, 투영 변환, 원근 분할 및 정점 좌표를 수정하는 뷰포트 변환과 비좌표 속성을 수정하는 다른 연산 중 하나 이상이 포함된다.
정점 셰이더 스테이지(304)는 하나 이상의 컴퓨트 유닛(132)에서 실행될 정점 셰이더 프로그램으로서 부분적으로 또는 전체적으로 구현된다. 정점 셰이더 프로그램은 프로세서(102)에 의해 제공되고 컴퓨터 프로그래머에 의해 미리 작성된 프로그램에 기초한다. 드라이버(122)는 이러한 컴퓨터 프로그램을 컴파일하여 컴퓨트 유닛(132) 내에서 실행하기에 적절한 포맷을 갖는 정점 셰이더 프로그램을 생성한다.
헐 셰이더 스테이지(306), 테셀레이터 스테이지(308) 및 도메인 셰이더 스테이지(310)는 테셀레이션을 구현하기 위해 함께 작업하며, 이는 기본요소를 세분함으로써 간단한 기본요소를 더 복잡한 기본요소로 변환한다. 헐 셰이더 스테이지(306)는 입력 기본요소에 기초하여 테셀레이션을 위한 패치를 생성한다. 테셀레이터 스테이지(308)는 패치를 위한 샘플 세트를 생성한다. 도메인 셰이더 스테이지(310)는 패치를 위한 샘플에 대응하는 정점에 대한 정점 위치를 계산한다. 헐 셰이더 스테이지(306) 및 도메인 셰이더 스테이지(310)는 정점 셰이더 스테이지(304)에서와 같이 드라이버(122)에 의해 컴파일되는 컴퓨트 유닛(132)에서 실행될 셰이더 프로그램으로서 구현될 수 있다.
지오메트리 셰이더 스테이지(312)는 기본요소별로 정점 연산을 수행한다. 포인트 스프라이트 확장, 동적 파티클 시스템 연산, 퍼핀(fur-fin) 생성, 쉐도우 볼륨 생성, 단일 패스 렌더-투-큐브맵(single pass render-to-cubemap), 기본요소별 자료 스와핑, 기본요소별 자료 설정과 같은 연산을 비롯한, 다양한 상이한 유형의 연산이 지오메트리 셰이더 스테이지(312)에 의해 수행될 수 있다. 일부 예에서, 드라이버(122)에 의해 컴파일되고 컴퓨트 유닛(132)에서 실행되는 지오메트리 셰이더 프로그램은 지오메트리 셰이더 스테이지(312)에 대한 연산을 수행한다.
래스터라이저 스테이지(314)는 래스터라이저 스테이지(314)로부터 업스트림에 생성된 간단한 기본요소(삼각형)를 수용하고 래스터화한다. 래스터화는 특정 기본요소에 의해 커버되는 화면 픽셀(또는 서브픽셀 샘플)을 결정하는 것으로 구성된다. 래스터화는 고정 기능 하드웨어에 의해 수행된다.
픽셀 셰이더 스테이지(316)는 업스트림에서 생성된 기본요소 및 래스터화 결과에 기초하여 화면 픽셀에 대한 출력 값을 계산한다. 픽셀 셰이더 스테이지(316)는 텍스쳐 메모리로부터 텍스쳐를 적용할 수 있다. 픽셀 셰이더 스테이지(316)에 대한 연산은 드라이버(122)에 의해 컴파일되고 컴퓨트 유닛(132)에서 실행되는 픽셀 셰이더 프로그램에 의해 수행된다.
출력 병합기 스테이지(318)는 픽셀 셰이더 스테이지(316)로부터의 출력을 수용하고 이러한 출력을 프레임 버퍼로 병합하고, 화면 픽셀에 대한 최종 색상을 결정하기 위해 z-테스트 및 알파 블렌딩과 같은 연산을 수행한다.
하나의 동작 모드에서, 래스터라이저 스테이지(314)에 의해 수행되는 래스터화는 픽셀 셰이더 스테이지(316)에 의해 수행되는 픽셀 셰이딩과 동일한 해상도에서 수행된다. 배경으로, 래스터라이저 스테이지(314)는 이전 스테이지로부터 삼각형을 수용하고 삼각형에 대한 스캔 변환을 수행하여 단편을 생성한다. 단편은 렌더 대상의 개별 픽셀에 대한 데이터이며 위치, 깊이 및 커버리지 데이터와 같은 정보를 포함하고 나중에 픽셀 셰이더 스테이지 이후에 색상과 같은 셰이딩 데이터를 포함한다. 렌더 대상은 렌더링이 이루어지는(즉, 색상 또는 다른 값이 기록됨) 목표 이미지이다.
전형적으로 단편은 쿼드로 그룹화되며, 각 쿼드에는 4개의 이웃 픽셀 위치(즉, 2x2 단편)에 대응하는 단편이 포함된다. 삼각형의 스캔 변환에는 삼각형에 의해 커버되는 각 픽셀 위치에 대한 단편을 생성하는 것이 수반된다. 렌더 대상이 다중 샘플 이미지인 경우, 이때, 각 픽셀에는 여러 샘플 위치가 있으며 각 위치가 커버리지에 대해 테스트된다. 단편은 해당 단편의 샘플에 대한 커버리지 데이터를 기억한다. 래스터라이저 스테이지(314)에 의해 생성된 단편은 픽셀 셰이더 스테이지(316)로 송신되며, 이는 단편을 셰이딩하고(이러한 단편에 대한 색상 값을 결정), 또한 다른 값도 결정할 수 있다.
동일한 해상도에서 래스터화 및 픽셀 셰이딩을 수행하는 것은 래스터라이저에 의해 생성된 각 단편에 대해 픽셀 셰이더(316)가 해당 단편에 대한 색상을 결정하기 위해 계산을 수행함을 의미한다. 다시 말해서, 픽셀이 점유하는 화면 공간의 면적은 색상이 결정되는 정밀도와 동일한 면적이다. 하나의 예에서, 컴퓨트 유닛(132)의 SIMD 기반 하드웨어에서, 래스터라이저 스테이지(314)에 의해 생성된 각각의 단편은 상이한 작업 항목에 의해 셰이딩된다. 따라서 생성된 단편과 이들 단편을 셰이딩하기 위해 생성된 작업 항목 사이에 일대일 대응성이 있다. 래스터라이저 스테이지(314)는 전형적으로 깊이 테스트를 수행하고, 이전에 렌더링된 단편에 의해 가려진 단편을 컬링(culling)한다는 것에 유의한다. 따라서 이 깊이 컬링에서 존속한 단편과 이들 존속 단편의 색상을 지정하기 위해 생성된 작업 항목 사이에 일대일 대응성이 존재하지만, 궁극적으로는 폐기되는 쿼드에 대한 도우미 단편을 렌더링하기 위해 추가 작업 항목이 생성될 수 있다. 도우미 단편은 삼각형으로 커버되지 않지만 어쨌든 텍스쳐 샘플링을 위한 도함수의 계산을 지원하기 위해 쿼드의 일부로 생성되는 단편이다. 래스터화가 셰이딩과 동일한 해상도로 수행되는 동작 모드를 이해하는 또 다른 방법은 삼각형의 변을 정의할 수 있는 해상도가 해당 삼각형의 색상을 정의할 수 있는 해상도와 동일하다는 것이다.
픽셀 셰이딩과 동일한 해상도에서 래스터화가 이루어지는 위의 동작 모드에서, 고정된 색상을 갖거나 낮은 빈도로 색상이 변하는 삼각형에 대해 한 가지 문제가 발생한다. 이러한 삼각형의 경우 근방 단편에 대한 픽셀 셰이딩 연산은 동일하거나 유사한 색상을 생성하며 사실상 중복된다. 따라서 훨씬 더 적은 수의 픽셀 셰이더 동작으로 유사한 결과를 수행할 수 있다. 따라서, 본 출원에서 가변 레이트 셰이딩("VRS")으로 지칭되는 기술에 따라 래스터화 해상도와 관련하여 셰이딩 해상도를 감소시키는 것이 유리하다. 이러한 기술의 이점은 수행되는 픽셀 셰이더 연산의 수를 감소시켜 처리 부하를 감소시키고 성능을 개선 시킨다는 것이다. VRS의 세부 사항은 아래에 상세히 설명되어 있다.
VRS의 한 가지 문제는 해당 기술과 슈퍼 샘플 안티 앨리어싱("SSAA")의 통합 문제이다. SSAA는 각 렌더 대상 픽셀이 여러 커버리지 및 색상 샘플을 갖게 하는 기술이다. 더 구체적으로, 이 기술에서, 그래픽 처리 파이프라인(134)은 슈퍼 샘플링된 이미지를 생성하기 위해 렌더 대상의 해상도보다 더 높은 해상도로 래스터화하고 셰이딩한다. 그 다음, 그래픽 처리 파이프라인(134)은 렌더 대상의 해상도로 이미지를 생성하기 위해 안티 앨리어싱 기술을 통해 슈퍼 샘플링된 이미지를 "해상(resolve)" 한다.
VRS와 SSAA를 모두 수행할 수 있는 시스템에서 문제가 발생한다. 구체적으로, 한 구현에서 VRS와 SSAA를 모두 온 상태로 전환하여 VRS가 렌더 대상의 해상도에 대해 셰이딩의 해상도를 감소시키도록 동작하고 SSAA는 렌더 대상의 해상도에 대한 셰이딩의 해상도를 증가시키도록 동작하게 할 수 있다. 이 동작 모드는 정의되지 않았거나 예상치 못한 결과를 생성할 수 있으며, 따라서, 바람직하지 않을 수 있다. 따라서 SSAA 및 VRS를 그래픽 처리 파이프라인(134)에 응집적으로 통합하기 위한 기술이 본 출원에 제시된다.
도 4는 예에 따라 SSAA, VRS 중 하나를 사용하거나 둘 다 사용하지 않고 렌더링된 이미지를 래스터화, 셰이딩 및 출력하는 기술을 예시한다. 이 기술은 단계 402에서 시작하며, 여기서, 래스터라이저 스테이지(314)는 그래픽 처리 파이프라인(134)의 이전 스테이지로부터 수신된 삼각형을 래스터화하여 커버된 샘플을 결정하고 이들 커버된 샘플의 표시를 포함하는 단편을 생성한다. 래스터화는 삼각형에 의한 커버리지를 갖는 렌더 대상의 각 픽셀에 대해 하나의 단편을 생성한다. 단편은 단일 픽셀에 대응하는 데이터 그룹으로, 샘플 커버리지, 각 샘플에 대한 색상 데이터(픽셀 셰이더 스테이지 이후), 각 샘플에 대한 깊이 데이터 및 가능하게는 다른 유형의 데이터와 같은 정보를 포함한다. 단편은 출력 병합기 스테이지(318)에서 프레임 버퍼의 픽셀을 색칠하기 위해 사용된다. 샘플은 커버리지 정보, 깊이 정보 및 색상 정보와 같은 정보가 개별적으로 결정될 수 있는 화면 픽셀 내의 한 지점이다. 일부 동작 모드에서는 각 렌더 대상 픽셀에 대해 여러 샘플이 있다. 일반적으로, 각 렌더 대상 픽셀에 대해 여러 샘플을 갖는 목적은 안티 앨리어싱을 수행하여 이미지 내의 고정 가장자리(hard edge)의 시각적 외관을 개선시키는 것이다. 다른 동작 모드에서, 렌더 대상 픽셀 당 하나의 샘플만 존재한다.
단계 402에서, 래스터라이저 스테이지(314)는 수신된 기본요소에 의해 커버되는 샘플과 커버되지 않는 샘플을 결정한다. 일반적으로, 래스터라이저 스테이지(314)는 그래픽 처리 파이프라인(134)의 이전 스테이지로부터 삼각형을 수신하고 이들 삼각형을 래스터화하여 단편을 생성한다. 삼각형을 래스터화하는 작업에는 렌더 대상의 어떤 픽셀이 삼각형으로 커버되는지, 그리고 픽셀 당 여러 샘플이 존재하는 경우 이들 커버된 픽셀 내의 어떤 샘플이 삼각형으로 커버되는지를 결정하는 것이 포함된다. 삼각형을 래스터화하기 위해 기술적으로 가능한 임의의 기술을 사용할 수 있다. 하나의 샘플이 커버되는 각 픽셀에 대해 단편이 생성된다.
래스터라이저 스테이지(314)는 또한 단계 402에서 깊이 테스트를 수행한다. 하나의 예에서, 깊이 테스트에는 삼각형에 의해 커버된 각 샘플의 깊이 값을 검사하고 이들 깊이 값을 이미 처리된 삼각형의 깊이 값을 저장하는 깊이 버퍼와 비교하는 것이 수반된다. 특정 샘플의 깊이 값은 특정 샘플과 동일한 위치에 대해 깊이 버퍼에 저장된 깊이 값과 비교된다. 깊이 버퍼가 샘플이 가려진다고 나타내면, 이때, 해당 샘플은 커버되지 않은 것으로 표시되고 깊이 버퍼가 샘플이 가려지지 않았다고 나타내면, 이때, 해당 샘플은 존속된다. 어떤 샘플 위치가 커버되고, 가려지지 않는지를 나타내는 데이터는 본 설명의 다른 곳에서 설명된 바와 같이 추후 처리를 위해 그래픽 처리 파이프라인(134)의 다른 부분으로 전달된다. 본 출원에서, 샘플을 적용할 때 "커버됨"이라는 용어는 샘플이 삼각형으로 커버되고 깊이 테스트를 통과했음을 의미하며 "커버되지 않음" 또는 "비커버"라는 용어는 샘플이 삼각형으로 커버되지 않았거나, 삼각형으로 커버되었지만 깊이 테스트를 통과하지 못한것을 의미한다.
래스터화는 쿼드라 알려진 2x2 그룹의 단편을 출력한다. 더 구체적으로, 삼각형으로 커버된 적어도 하나의 샘플을 갖는 렌더 대상의 각 픽셀에 대해, 래스터라이저 스테이지(314)는 단편을 생성한다. 래스터라이저(314)는 이들 단편으로부터 쿼드를 생성한다. 하나 이상의 이러한 단편이 삼각형으로 완전히 커버되지 않더라도("완전히 커버되지 않음"은 단편의 어떠한 샘플도 삼각형으로 커버되지 않고 가려지지도 않음을 의미한다), 쿼드는 2x2 픽셀의 인접 섹션에 대한 단편을 포함한다. 완전히 커버되지 않은 단편은 도우미 단편이라 지칭된다. 도우미 단편은 셰이딩에 대한 공간적 도함수를 계산하기 위해 픽셀 셰이더 스테이지(316)에서 사용된다. 종종 이러한 공간적 도함수는 밉맵(mipmap) 선택 및 텍스쳐 필터링에 사용되지만 공간적 도함수는 다른 목적으로 사용될 수 있다.
또한 단계 402에서, 래스터라이저 스테이지(314)는 삼각형의 샘플에 대한 하나 이상의 셰이딩 레이트를 결정한다. 셰이딩 레이트는 서브-샘플 셰이딩 레이트, 일대일 셰이딩 레이트 또는 슈퍼 샘플 셰이딩 레이트 중 하나일 수 있다. 서브-샘플 셰이딩 레이트는 픽셀 셰이딩의 해상도가 렌더 대상의 해상도(샘플의 해상도는 아님)보다 더 낮다는 것을 의미한다. 일대일 셰이딩 레이트는 픽셀 셰이딩의 해상도가 렌더 대상의 해상도와 동일함을 의미한다. 슈퍼 샘플 셰이딩 레이트는 픽셀 셰이딩의 해상도가 렌더 대상의 해상도보다 더 높다는 것을 의미한다. 슈퍼 샘플 셰이딩 레이트를 사용하더라도 픽셀 셰이딩의 해상도가 래스터화(커버리지 결정)의 해상도와 상이할 수 있다는 점에 유의한다. 구체적으로, 래스터라이저가 픽셀 당 특정 수의 샘플에 대한 샘플 커버리지를 결정한 다음 해당 샘플 수보다 더 낮은 레이트로 픽셀 셰이딩이 이루어지도록 할 수 있다. 예를 들어, 각 단편에 대해 4개의 샘플에 대해 래스터화가 이루어지지만 픽셀 셰이딩은 단편별 두 번만 이루어질 수 있다.
셰이딩 레이트라고도 지칭되는 픽셀 셰이딩의 해상도는 픽셀 셰이더 스테이지(316)에서 함께 셰이딩되는 단편의 수를 정의한다. 더 구체적으로, 서브 샘플링의 경우, 픽셀 셰이딩의 해상도는 렌더 대상의 얼마나 많은 픽셀 위치에 픽셀 셰이더 스테이지(316)의 단일 작업 항목에 의해 결정된 색상이 주어지는지를 결정한다. 예를 들어, 셰이딩 레이트가 1/4이면, 이때, 픽셀 셰이더 스테이지(316)의 작업 항목은 렌더 대상의 4개 픽셀 위치에 대한 색상을 결정한다. 슈퍼 샘플링의 경우, 픽셀 셰이딩의 해상도는 얼마나 많은 주어진 단편의 샘플에 단일 작업 항목에 의해 결정된 색상이 주어지는지를 결정한다. 예를 들어, 픽셀 셰이딩의 해상도가 "4x"이면, 이때, 4개의 상이한 작업 항목이 래스터라이저 스테이지(314)에 의해 생성된 단편별 4개의 상이한 샘플에 대한 색상을 결정한다.
셰이딩 레이트는 삼각형별 베이시스, 셰이딩 레이트 타일별 베이시스 또는 개별 삼각형에 대한 셰이딩 레이트 타일별 베이시스로 결정될 수 있다. 삼각형별 베이시스의 셰이딩을 위해, 픽셀 셰이더 업스트림의 그래픽 처리 파이프라인(134)의 유닛은 래스터라이저 스테이지(314)로 전송된 삼각형에 대한 셰이딩 레이트를 결정한다. 예에서, 정점 셰이더 스테이지(304)는 그 스테이지에 의해 처리된 삼각형에 대한 셰이딩 레이트를 결정한다. 다른 예에서, 지오메트리 셰이더 스테이지(312)는 그 스테이지에 의해 방출된 삼각형에 대한 셰이딩 레이트를 결정한다. 셰이딩 레이트 타일별 베이시스의 셰이딩을 위해, 래스터라이저 스테이지(314)는 렌더 대상의 상이한 셰이딩 레이트 타일에 대한 셰이딩 레이트를 결정한다. 렌더 대상은 각각 렌더 대상의 여러 픽셀을 포함하는 셰이딩 레이트 타일로 분할된다. 더 구체적으로, 렌더 대상은 셰이딩 레이트 타일로 "타일화"되며, 각 타일은 상이한 셰이딩 레이트를 가질 수 있다. 셰이딩 레이트 타일에 대한 셰이딩 레이트를 결정하기 위해 기술적으로 가능한 임의의 기술이 사용될 수 있다. 하나의 예에서, 셰이딩 레이트 타일 이미지가 사용된다. 셰이딩 레이트 타일 이미지는 이들 셰이딩 레이트 타일의 셰이딩 레이트를 나타내는 렌더 대상의 상이한 셰이딩 레이트 타일에 대한 정보를 갖는다. 셰이딩 레이트 이미지는 애플리케이션에 의해 명시적으로 또는 알고리즘적으로 지정될 수 있다.
개별 삼각형에 대한 셰이딩 레이트 타일별 베이시스의 셰이딩의 경우 셰이딩 레이트 타일별 및 삼각형별 정보의 조합을 사용하여 임의의 주어진 쿼드에 대한 셰이딩 레이트를 결정한다. 구체적으로, 각 삼각형은 삼각형의 다양한 부분에 대한 셰이딩 레이트를 정의하는 삼각형 셰이딩 레이트 이미지와 관련된다.
셰이딩 레이트 타일의 크기는 타일 버퍼에 의해 커버되는 렌더 대상 픽셀의 수와 동일한 크기이거나 해당 버퍼보다 클 수 있다. 그러나, 임의의 특정 시점의 타일 버퍼의 콘텐츠는 동일한 셰이딩 레이트를 가질 것이다.
단계 404에서, 래스터라이저 스테이지(314)는 단계 402에서의 래스터화의 결과로 생성된 쿼드를 타일 버퍼(510)에 누적한다. 타일 버퍼는 임의의 기술적으로 가능한 수의 쿼드를 저장할 수 있다. 하나의 예에서, 타일 버퍼는 2x2 어레이로 4개의 인접한 쿼드를 저장한다. 타일 버퍼의 쿼드는 렌더 대상의 연속적인 부분에 대응한다. 이는 VRS를 사용할 때 더 적은 수의 쿼드에서 쿼드를 다운샘플링할 수 있게 한다. 쿼드를 타일 버퍼에 누적한 후, 래스터라이저 스테이지(314)는 단계 406을 트리거한다. 이 트리거링은 타일 버퍼(510)의 적어도 일부 부분이 비어 있는 상태에서 발생할 수 있음에 유의한다. 더 구체적으로, 타일 버퍼(510)는 동일한 삼각형으로부터 화면 공간의 연속적인 부분으로부터 쿼드를 저장한다. 해당 연속적인 부분의 상이한 부분에서 커버리지가 존재하는 경우에도, 해당 연속적인 부분의 적어도 일부에서 특정 삼각형에 대해 어떠한 커버리지도 없는 것이 가능하다. 이러한 상황에서, 가득 차지 않은 타일 버퍼(510)가 단계 406에서 사용될 것이다(셰이딩 레이트에 기초하여 수정 레이트 쿼드를 생성함).
단계 406에서, 래스터라이저 스테이지(314)는 타일 버퍼(510)의 콘텐츠를 검사하고 셰이딩 레이트에 기초하여 수정 레이트 쿼드를 생성한다. 이런 상황이 이루어질 수 있는 세 가지 가능한 방법이 있다. 앞서 설명한 바와 같이, 타일 버퍼의 콘텐츠의 임의의 특정 인스턴스에 대해, 모든 이들 콘텐츠에 대해 셰이딩 레이트가 정의된다. 이 셰이딩 레이트는 서브 샘플링 레이트, 1:1 레이트 또는 슈퍼 샘플링 레이트 중 하나일 수 있다. 셰이딩 레이트가 서브 샘플링 레이트이면, 이때, 래스터라이저 스테이지(314)는 타일 버퍼(510)의 쿼드를 다운샘플링하여 수정 레이트 쿼드를 생성한다. 결과적인 다운샘플링된 쿼드에는 렌더 대상의 픽셀보다 더 큰 코어스 단편(coarse fragment)이 포함된다. 쿼드를 다운샘플링하는 목적은 단편을 셰이딩하기 위해 생성되는 픽셀 셰이더 작업 항목의 수를 감소시키는 것이다. 구체적으로, 픽셀 셰이더는 단편별 하나의 작업 항목을 론칭하기 때문에 단편을 더 크게 만들면 생성되는 작업 항목 수가 감소되어 셰이딩 작업부하가 더 빨리 완료된다.
서브 샘플링 셰이딩 레이트에서는, 다운샘플링된 쿼드에서 이용 가능한 커버리지 정보의 양이 타일 버퍼(510)에서 쿼드의 커버리지 데이터의 전체 해상도를 표현하기에 불충분할 수 있다. 이러한 경우에, 다운샘플링은 커버리지 데이터의 압축을 포함한다.
셰이딩 레이트가 1:1 레이트이면, 이때, 래스터라이저 스테이지(314)는 수정 레이트 쿼드로서 수정되지 않은 타일 버퍼(510)의 쿼드를 단순히 출력한다.
셰이딩 레이트가 슈퍼 샘플링 레이트이면, 이때, 래스터라이저 스테이지(314)는 타일 버퍼(510)의 쿼드를 업샘플링하여 수정 레이트 쿼드를 생성한다. 결과적인 업샘플링된 쿼드는 타일 버퍼(510)의 쿼드보다 더 많은 쿼드를 포함한다. 쿼드 수가 증가하는 인자는 슈퍼 샘플링 레이트와 동일하다.
단계 408에서, 래스터라이저 스테이지(314)는 쿼드의 단편에 대한 중심 위치를 할당한다. 이 작업이 수행되는 방식은 셰이딩 레이트, 타일 버퍼 쿼드의 샘플 수와 위치 및 가능하게는 다른 요인을 포함하여, 여러 요인에 따라 달라진다. 중심은 텍스쳐 좌표와 같은 픽셀 속성이 평가되는 위치이다.
단계 410에서, 픽셀 셰이더 스테이지(316)는 쿼드의 단편을 셰이딩한다. 본 출원의 다른 곳에서 설명된 바와 같이, 단편별 하나의 작업 항목이 생성된다. 픽셀 셰이더는 단계 408에서 결정된 중심을 사용하여 단편을 셰이딩한다. 또한, 픽셀 셰이더는 예를 들어 단편의 하나 이상의 샘플을 커버된 상태로부터 커버되지 않은 상태로 또는 커버되지 않은 상태로부터 커버된 상태로 전환함으로써 임의의 특정 단편에 대한 커버리지를 수정할 수 있다. 예에서, 픽셀 셰이더는 특정 커버된 샘플에 대응하는 알파 값이 완전히 투명(예를 들어, 알파 값이 0 임)하다고 결정하고, 따라서, 해당 샘플을 커버되지 않도록 설정한다. 앞서 설명한 내용은 단지 하나의 예일 뿐이며 애플리케이션 개발자가 작성할 수 있는 픽셀 셰이더 프로그램은 임의의 기술적으로 가능한 방식으로 커버리지를 잠재적으로 수정할 수 있음을 이해하여야 한다.
단계 412에서, 쿼드가 다운샘플링된 경우, 이때, 출력 병합기 스테이지(318)는 이러한 쿼드의 원래 해상도를 복원하고, 이는 래스터라이저 스테이지(314)로부터의 미세 커버리지 데이터를 적용하는 것을 포함한다. 도 4d와 관련하여 추가 세부 사항이 제공된다.
단계 414에서, 출력 병합기 스테이지(318)는 늦은 픽셀 연산을 수행하고 쿼드의 샘플을 프레임 버퍼에 기록한다. 셰이딩된 쿼드가 다운샘플링된 경우(즉, VRS가 사용된 경우), 이때, 출력 병합기 스테이지(318)는 단계 412에서 복원된 쿼드로부터 데이터를 기록한다. 셰이딩된 쿼드가 업샘플링되거나 1:1 셰이딩 레이트가 사용된 경우, 이때, 픽셀 셰이더(316)에 의해 출력된 쿼드의 데이터가 렌더 대상을 셰이딩하는 데 사용된다.
도 4b는 예에 따른 슈퍼 샘플 셰이딩 레이트에 대한 타일 버퍼(510)의 콘텐츠에 기초하여 수정된 셰이딩 레이트 쿼드를 생성하기 위한 동작을 예시한다. 다시 말해서, 도 4b는 슈퍼 샘플링 셰이딩 레이트에 대한 단계 406의 동작을 나타낸다. 타일 버퍼(510)는 래스터라이저 스테이지(314)에 의해 생성된 쿼드를 누적한 후의 상태로 도시되어 있다(단계 404). 타일 버퍼의 콘텐츠에 대해 결정된 셰이딩 레이트는 슈퍼 샘플 셰이딩 레이트이며, 이는 렌더 대상의 해상도보다 더 높은 해상도에서 픽셀 셰이딩이 이루어짐을 의미한다. 도 4b의 예에서, 셰이딩 레이트는 4x이지만, 본 출원의 교시는 임의의 슈퍼 샘플 셰이딩 레이트에 적용된다.
도시되어 있는 바와 같이, 타일 버퍼(510)는 3개의 쿼드를 가지며(쿼드 1에 대한 공간은 해당 쿼드에 대해 커버된 샘플이 없기 때문에 비어 있음), 각각은 4개의 단편을 갖는다. 타일 버퍼(510)의 각 단편은 4개의 커버리지 샘플을 갖는다. 수정된 셰이딩 레이트 쿼드(422)를 생성하기 위해, 적어도 하나의 샘플이 커버되는 타일 버퍼(510)의 각 쿼드에 대해, 래스터라이저 스테이지(314)는 셰이딩 레이트와 동일한 수의 쿼드를 생성한다. 생성된 쿼드의 각 단편은 타일 버퍼(510)의 단편의 샘플의 서브세트를 갖는다.
타일 버퍼(510)의 단편의 샘플 수 대 생성되는 단편의 샘플 수의 비율은 셰이딩 레이트와 동일하다. 4x 셰이딩 레이트의 경우, 타일 버퍼(510)의 단편은 수정된 셰이딩 레이트 단편보다 4배 많은 샘플을 갖는다. 임의의 특정 생성된 쿼드의 단편은 타일 버퍼에 있는 대응하는 쿼드 단편의 동일한 샘플 위치의 샘플을 갖는다. 예에서, 생성된 쿼드의 각 단편은 예시된 픽셀 템플릿(420)의 "샘플 a" 위치에 샘플을 갖는다. 이 예에서, 적어도 하나의 커버된 샘플을 갖는 각 쿼드에 대해, 4개의 쿼드- 각 샘플에 대해 하나 -가 생성되고, 그래서, 각 생성된 쿼드는 동일한 샘플 위치에 샘플을 갖는 단편을 포함하고, 상이한 쿼드에 할당된 샘플은 서로 다르다. 도시된 예에서 쿼드 1은 비어 있으며 어떠한 수정된 셰이딩 레이트 쿼드도 생성되지 않는다. 쿼드 2는 쿼드 2a, 2b, 2c 및 2d가 생성되게 한다. 쿼드 2a의 단편에는 쿼드 2의 단편으로부터의 샘플 a가 있다. 쿼드 2b의 단편에는 쿼드 2의 단편으로부터의 샘플 b가 있다. 쿼드 2c의 단편에는 쿼드 2의 단편으로부터의 샘플 c가 있다. 쿼드 2d의 단편에는 쿼드 2의 단편으로부터의 샘플 d가 있다. 쿼드 3a-3d 및 4a-4d는 유사한 방식으로 쿼드 3 및 4에서 그 샘플을 도출한다. 단편별 커버리지 샘플 수는 셰이딩 레이트와 상이할 수 있음에 유의한다. 이 경우, 수정된 셰이딩 레이트 쿼드의 단편은 타일 버퍼의 쿼드에서 여러 샘플을 취득한다.
도 4a와 관련하여 설명된 바와 같이, 수정된 셰이딩 레이트 쿼드(422)를 생성한 후, 쿼드의 단편에 대한 중심이 단계 408에서 할당된다. 중심은 텍스쳐 좌표와 같은 속성이 평가되는 위치이다. 단편의 중심은 해당 단편에 할당된 샘플의 위치를 기초로 할당된다. 예를 들어, 쿼드 2a, 3a, 4a의 단편은 샘플 a의 위치에서 중심을 취득한다. 유사하게, 쿼드 2b, 3b 및 4b의 단편은 샘플 b의 위치에서 중심을 취득하고, 쿼드 2c, 3c 및 4c는 샘플 c의 위치에서 중심을 취득하고, 쿼드 2d, 3d 및 4d는 샘플 d의 위치에서 중심을 취득한다. 수정된 셰이딩 레이트 쿼드(422)가 여러 샘플을 갖는 경우, 이때, 중심은 이러한 샘플을 대표하는 위치에 위치한다. 예에서, 중심은 커버된 샘플 중 하나의 위치에 있거나 커버된 샘플 사이의 중간에 있거나 샘플을 대표하는 임의의 다른 위치에 있다.
도 4a와 관련하여 또한 설명된 바와 같이, 수정된 셰이딩 레이트 쿼드(422)는 단계 410에서 셰이딩된다. 각각의 수정된 셰이딩 레이트 쿼드(422)의 각 단편은 상이한 작업 항목을 사용하여 셰이딩되며, 따라서 타일 버퍼(510)의 단일 단편에서 유래한 샘플에는 상이한 색상이 주어질 수 있다. 예를 들어, 커버된 샘플을 커버되지 않은 것으로 표시함으로써, 픽셀 셰이더 스테이지(316)가 커버리지를 수정하는 것도 가능하다. 단계 414에서, 출력 병합기 스테이지(318)는 셰이딩된 단편을 렌더 대상에 기록한다. 셰이딩된 샘플을 렌더 대상에 기록하는 것에 대한 세부 사항은 일반적으로 알려져 있으며 본 출원에 자세히 설명하지 않는다. 일반적으로 이 동작은 샘플이 이전 샘플에 의해 가려지는지 여부를 결정하기 위해 z-테스트를 수행하고, 혼합이 가능한 경우 샘플의 색상을 렌더 대상의 색상과 혼합하는 것을 포함한다. 다른 동작도 마찬가지로 수행될 수 있다.
도 4c는 일 예에 따른 서브-샘플 셰이딩 레이트(VRS)가 사용될 때 타일 버퍼(510)에서 쿼드를 다운샘플링하는 것과 관련된 동작을 예시한다. 다운샘플링 동작은 타일 버퍼(510)의 쿼드를 더 적은 수의 하나 이상의 수정된 셰이딩 레이트 쿼드(440)로 변환하는 것을 포함한다. 생성된 쿼드의 수는 타일 버퍼(510)의 쿼드 수에 셰이딩 레이트를 승산한 것과 동일하다(타일 버퍼(510)가 쿼드로 완전히 채워지지 않거나 커버리지를 갖지 않는 생성된 쿼드가 존재하는 경우 더 적은 수가 생성될 수 있음). 예에서, 셰이딩 레이트는 1/4이고, 타일 버퍼(510)의 쿼드의 수는 4이고, 이러한 쿼드로부터 생성되는 쿼드의 수는 1이다(4 * 1/4 = 1).
생성된 각 쿼드는 4개의 단편을 포함한다. 각각의 이러한 단편에 할당된 커버리지는 타일 버퍼(510)에서 쿼드의 단편에 할당된 커버리지의 합병이다. 일부 상황에서, 이러한 합병은 너무 많은 커버리지 데이터를 갖는 수정된 셰이딩 레이트 쿼드(440)의 단편을 초래할 것이다. 더 구체적으로, 그래픽 처리 파이프라인(134)은 단편에 대한 커버리지 데이터를 지정하는 데 사용될 수 있는 비트 수에 대한 제한을 가질 수 있다. 이 상황에서, 커버리지 데이터가 생성된 쿼드의 단편에 대한 커버리지 데이터로 합병되면 해당 데이터는 충실도가 감소(압축)된다. 남아있는 커버리지 데이터는 타일 버퍼(510)에 있는 쿼드의 단편의 커버리지를 기하학적으로 대표할 것이다.
도 4c의 예에서, 타일 버퍼(510)의 쿼드의 각 단편은 4개의 샘플을 갖는다. 더욱이, 셰이딩 레이트는 1/4이며, 이는 타일 버퍼(510)에 있는 단편의 4개 단편이 픽셀 셰이더 스테이지(316)에서 단일 단편으로 함께 셰이딩됨을 의미한다. 또한, 픽셀 셰이딩 하드웨어는 단편별 처리할 수 있는 샘플 수에 제한이 있으며 그 제한은 8개이다. 이들 요인으로 인해, 다운-샘플링 동작(442)은 다음 방식으로 수정된 셰이딩 레이트 쿼드(440)를 생성한다. 1/4의 셰이딩 레이트는 타일 버퍼(510)의 각 쿼드가 수정된 셰이딩 레이트 쿼드(440)에서 단일 단편으로 변환되는 결과를 초래한다. 구체적으로, 각 쿼드에는 4개의 단편이 있고 셰이딩 레이트는 1/4이므로 쿼드의 4개의 단편은 단일 단편으로 변환된다. 타일 버퍼(510)는 4개의 쿼드를 가지고 있기 때문에 타일 버퍼(510)의 콘텐츠는 단일 쿼드로 변환된다. 쿼드의 각각의 코어스 단편은 타일 버퍼(510)의 4개의 단편에 대응한다.
또한, 픽셀 셰이더(316)는 단편별 8개의 샘플만을 처리할 수 있기 때문에 타일 버퍼(510)의 각 쿼드의 16개 샘플은 각 코어스 단편에 대해 8개의 샘플로 압축된다. 각 샘플은 타일 버퍼(510)에 있는 2개의 샘플을 기하학적으로 대표한다. 또한, 이 압축 동작은 압축된 샘플에 대응하는 샘플 중 어느 하나 또는 둘 모두가 타일 버퍼(510)에서 커버되는 경우, 이때, 코어스 단편의 샘플도 커버되지만 어느 샘플도 커버되지 않는 경우, 이때, 코어스 단편의 샘플은 커버되지 않는다는 점에서 보수적이다. 도 4c의 예에서, 타일 버퍼(510)에 있는 단편의 대응하는 영역을 예시하기 위해 수정된 셰이딩 레이트 쿼드(440)에 점선이 제공된다. 이들 대응하는 영역의 각 샘플은 타일 버퍼(510)의 2개의 샘플에 대응함을 알 수 있다. 또한, "미세 단편"에 대응하는 코어스 단편 부분의 좌측 상단 샘플은 해당 미세 단편의 2개의 상단 샘플에 대응하고, 미세 단편에 대응하는 코어스 단편 부분의 우측 하단 샘플은 해당 미세 단편의 2개의 하단 샘플에 대응한다. 단일 코어스 단편으로 합병된 샘플 수가 해당 단편의 샘플 제한을 초과하지 않으면, 이때, 압축이 발생하지 않음에 유의한다. 또한 1/4의 셰이딩 레이트가 예시되어 있으며, 1/2 수평(타일 버퍼(510)의 2개의 단편의 행이 수정된 셰이딩 레이트 쿼드에서 코어스 단편을 형성함), 1/2 수직(타일 버퍼(510)의 2개의 단편의 열이 수정된 셰이딩 레이트 쿼드에서 코어스 단편을 형성함) 또는 임의의 다른 레이트 같은 다른 셰이딩 레이트가 사용될 수 있다는 것을 또한 유의해야 한다.
단계 406 후에, 중심이 생성된 쿼드의 단편에 할당된다. 각 코어스 단편의 중심은 임의의 기술적으로 가능한 방식으로 설정된다. 하나의 예에서, 중심은 코어스 단편의 커버된 샘플의 위치를 대표한다. 다른 예에서, 단편 중 하나의 위치가 선택된다. 또 다른 예에서, 코어스 단편의 중심이 중심으로 사용된다. 앞서 설명한 바와 같이, 중심은 픽셀 셰이더 스테이지(316)가 텍스쳐 좌표와 같은 속성을 계산하는 위치로 사용된다.
단계 410에서, 픽셀 셰이더 스테이지(316)는 생성된 쿼드의 단편을 셰이딩한다. 구체적으로, 코어스 단편별로 하나의 작업 항목이 론칭되고 각 코어스 단편에 대해 결정된 색상(및 다른 속성)이 해당 단편의 각 커버된 샘플에 적용된다. 또한, 픽셀 셰이더 스테이지(316)는 예컨대 커버된 샘플을 커버되지 않도록 설정하거나 커버되지 않은 샘플을 커버되도록 설정함으로써 코어스 단편의 커버리지를 수정하는 것이 가능하다.
단계 412에서, 출력 병합기 스테이지(318)는 래스터라이저 스테이지(314)로부터의 미세 커버리지 데이터를 셰이딩된 쿼드에 적용하여 렌더 대상의 해상도에서 단편을 생성한다. 도 4d는 이 동작의 예를 예시한다. 먼저, 출력 병합기 스테이지(318)는 셰이딩된 코어스 쿼드를 업샘플링하여 셰이딩된 업샘플링된 쿼드를 생성한다. 이를 위해, 출력 병합기 스테이지(318)는 셰이딩 레이트에 기초하여 각각의 코어스 단편을 업샘플링된 단편으로 분할한다. 셰이딩 레이트가 1/4인 경우 각 코어스 단편은 4개의 업샘플링된 단편으로 변환된다. 업샘플링된 각 단편의 샘플은 해당 샘플이 유래된 코어스 단편의 색상을 취득한다. 또한 샘플이 원래 압축되어 있는 경우 샘플 해상도가 복원되고 복원된 각 샘플은 코어스 단편의 대응하는 샘플 색상을 취득한다. 복원된 각 샘플의 커버리지(커버됨 또는 커버되지 않음)는 코어스 단편의 대응하는 샘플의 커버리지와 동일하다.
도 4d에서 업샘플링은 다음과 같이 진행된다. 코어스 단편 1은 어떠한 커버리지도 갖지 않는다. 따라서, 해당 단편에서 생성되는 쿼드는 커버리지를 갖지 않으며 폐기된다. 코어스 단편 2에는 색상 1이 있고 도시된 바와 같이 6개의 커버된 단편이 있다. 대응하는 업샘플링된 쿼드(쿼드 2)는 각각 커버된 4개의 샘플을 갖는 3개의 단편과 커버된 샘플이 없는 1개의 단편을 갖는다. 쿼드 2의 각 샘플은 코어스 단편 2의 색상을 갖는다. 유사하게, 코어스 단편 3과 코어스 단편 4의 커버리지와 색상은 쿼드 3과 쿼드 4를 생성하는 데 사용된다.
이 시점에서, 래스터화 스테이지(314)에 의해 생성된 원래의 커버리지 데이터는 업샘플링 동작에서 생성된 커버리지 데이터를 변조하기 위해 사용된다. 변조는 "AND" 연산이며, 여기서, 샘플의 두 사본이 원본 커버리지 데이터 및 업샘플링 동작으로부터의 커버리지 데이터에서 커버되는 경우, 이때, 출력 샘플은 커버되는 것으로 고려되고, 샘플 중 어느 하나 또는 둘 모두가 원래의 커버리지 데이터에서 커버되지 않는 경우, 이때, 출력 샘플은 커버되지 않은 것으로 고려된다. 결과는 변조된 커버리지와 픽셀 셰이더(316)에 의해 생성된 색상을 갖는 쿼드 세트이다. 쿼드는 통상적으로 렌더 대상에 기록된다(예를 들어, 깊이 테스트, 혼합 및 다른 동작이 이러한 출력 쿼드의 색상과 렌더 대상의 색상을 조합하기 위해 수행됨).
본 출원의 개시에 기초하여 많은 변형이 가능하다는 것을 이해하여야 한다. 특징 및 요소가 특정 조합으로 위에 설명되었지만, 각각의 특징 또는 요소는 단독으로, 또는 다른 특징 및 요소와 함께 또는 다른 특징 및 요소가 있거나 없는 다양한 조합으로 사용될 수 있다. 하나의 예는 앞서 설명된 타일 버퍼(510)를 채우기 위한 대안적인 기술이다. 더 구체적으로, 앞서 설명한 기술에서, 래스터라이저 스테이지(314)는 먼저 쿼드를 생성한 다음 이러한 쿼드를 타일 버퍼(510)에 누적한다. 다른 기술에서, 래스터라이저 스테이지(314)는 타일 버퍼(510)에서 쿼드를 직접 생성하고 쿼드를 생성한 다음 이러한 쿼드를 타일 버퍼(510)에 누적하는 2개의 개별 단계를 수행할 필요가 없다.
제공된 방법은 범용 컴퓨터, 프로세서 또는 프로세서 코어에서 구현될 수 있다. 적절한 프로세서는 예로서 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 연관된 하나 이상의 마이크로 프로세서, 제어기, 마이크로제어기, ASIC(Application Specific Integrated Circuits), FPGA(Field Programmable Gate Array) 회로, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 기계를 포함한다. 이러한 프로세서는 처리된 하드웨어 기술 언어(HDL) 명령어 및 넷리스트를 포함하는 다른 중간 데이터 (이러한 명령어는 컴퓨터 판독 가능 매체 상에 저장될 수 있음)의 결과를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 처리의 결과는 본 개시의 특징을 구현하는 프로세서를 제조하기 위해 반도체 제조 프로세스에서 사용되는 마스크워크들일 수 있다.
본 명세서에 제공된 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독 가능 저장 매체에 포함된 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어로 구현될 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체의 예는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 자기 매체, 예컨대, 내부 하드 디스크 및 이동식 디스크, 광자기 매체, 및 광학 매체, 예컨대, CD-ROM 디스크, 및 디지털 다기능 디스크(DVD)를 포함한다.
Claims (19)
- 상이한 해상도에서 픽셀 셰이딩(pixel shading) 및 래스터화(rasterization)를 수행하는 방법에 있어서,
제1 세트의 쿼드(quad)를 타일 버퍼에 저장하는 단계;
상기 제1 세트의 쿼드로부터 서브 샘플링 레이트(sub-sampling rate)로 제1 세트의 수정된 셰이딩 레이트 쿼드를 생성하는 단계;
제2 세트의 쿼드를 상기 타일 버퍼에 저장하는 단계;
상기 제2 세트의 쿼드로부터 슈퍼 샘플링 레이트(super-sampling rate)로 제2 세트의 수정된 셰이딩 레이트 쿼드를 생성하는 단계; 및
상기 제1 수정된 셰이딩 레이트 쿼드 및 상기 제2 세트의 수정된 셰이딩 레이트 쿼드를 셰이딩하는 단계(shading)를 포함하는, 방법. - 청구항 1에 있어서,
제3 세트의 쿼드가 일대일 셰이딩 레이트로 셰이딩되어야 하는지 결정하는 단계; 및
상기 제3 세트의 쿼드에 대해 수정된 셰이딩 레이트 쿼드의 세트를 생성하지 않고 상기 제3 세트의 쿼드를 셰이딩하는 단계를 더 포함하는, 방법. - 청구항 1에 있어서,
개별 삼각형에 대해 삼각형별 베이시스(basis), 셰이딩 레이트 타일별 베이시스 또는 개별 삼각형에 대한 셰이딩 레이트 타일별 베이시스 중 하나에 기초하여, 상기 제1 세트의 수정된 셰이딩 레이트 쿼드가 서브 샘플링 셰이딩 레이트를 갖는지 및 상기 제2 세트의 수정된 셰이딩 레이트 쿼드가 슈퍼 샘플링 셰이딩 레이트를 갖는지를 결정하는 단계를 더 포함하는, 방법. - 청구항 3에 있어서,
상기 제1 세트의 수정된 셰이딩 레이트 쿼드가 서브 샘플링 셰이딩 레이트를 갖는지 또는 상기 제2 세트의 수정된 셰이딩 레이트 쿼드가 슈퍼 샘플링 셰이딩 레이트를 갖는지를 결정하는 단계는 삼각형별 베이시스로 수행되고, 이는,
삼각형의 셰이딩 레이트를 식별하는 단계;
상기 삼각형을 래스터화하여 상기 제1 세트의 쿼드 또는 상기 제2 세트의 쿼드를 생성하는 단계; 및
상기 삼각형의 상기 셰이딩 레이트를 상기 제1 세트의 쿼드 또는 상기 제2 세트의 쿼드에 할당하는 단계를 포함하는, 방법. - 청구항 3에 있어서,
상기 제1 세트의 수정된 셰이딩 레이트 쿼드가 서브 샘플링 셰이딩 레이트를 갖는지 또는 상기 제2 세트의 수정된 셰이딩 레이트 쿼드가 슈퍼 샘플링 셰이딩 레이트를 갖는지를 결정하는 단계는 셰이딩 레이트 타일별 베이시스로 수행되고, 이는,
상기 제1 세트의 쿼드 또는 상기 제2 쿼드 중 어느 하나에 대응하는 셰이딩 레이트 타일에 대한 셰이딩 레이트를 식별하는 단계; 및
상기 제1 세트의 쿼드 또는 상기 제2 세트의 쿼드 중 어느 하나에 상기 셰이딩 레이트 타일의 상기 셰이딩 레이트를 할당하는 단계를 포함하는, 방법. - 청구항 5에 있어서, 상기 셰이딩 레이트 타일에 대한 상기 셰이딩 레이트를 식별하는 단계는 셰이딩 레이트 타일 이미지에서 검색(lookup)을 수행하는 단계를 포함하는, 방법.
- 청구항 3에 있어서,
상기 제1 세트의 수정된 셰이딩 레이트 쿼드가 서브 샘플링 셰이딩 레이트를 갖는지 또는 상기 제2 세트의 수정된 셰이딩 레이트 쿼드가 슈퍼 샘플링 셰이딩 레이트를 갖는지를 결정하는 단계는 개별 삼각형에 대한 셰이딩 레이트 타일별 베이시스로 수행되고, 이는,
삼각형의 셰이딩 레이트를 식별하는 단계;
상기 삼각형을 래스터화하여 상기 제1 세트의 쿼드 또는 상기 제2 세트의 쿼드를 생성하는 단계;
상기 삼각형 내에서 상기 제1 세트의 쿼드 또는 상기 제2 쿼드 중 어느 하나에 대응하는 셰이딩 레이트 타일에 대한 셰이딩 레이트를 식별하는 단계; 및
상기 제1 세트의 쿼드 또는 상기 제2 세트의 쿼드 중 어느 하나에 상기 셰이딩 레이트 타일의 상기 셰이딩 레이트를 할당하는 단계를 포함하는, 방법. - 청구항 1에 있어서,
렌더 대상(render target)에 상기 셰이딩된 제2 수정된 셰이딩 레이트 쿼드 세트를 기록하는 단계를 더 포함하는, 방법. - 청구항 1에 있어서,
상기 셰이딩된 제1 세트의 수정된 셰이딩 레이트 쿼드를 업샘플링하고, 결과로 생성된 업샘플링된 쿼드를 변조하는 단계를 더 포함하는, 방법. - 상이한 해상도에서 픽셀 셰이딩 및 래스터화를 수행하는 그래픽 처리 파이프라인에 있어서,
타일 버퍼;
래스터라이저 스테이지- 상기 레스터라이저 스테이지는
제1 세트의 쿼드를 상기 타일 버퍼에 저장하고;
상기 제1 세트의 쿼드로부터 서브 샘플링 레이트로 제1 세트의 수정된 셰이딩 레이트 쿼드를 생성하고;
제2 세트의 쿼드를 상기 타일 버퍼에 저장하고;
상기 제2 세트의 쿼드로부터 슈퍼 샘플링 레이트로 제2 세트의 수정된 셰이딩 레이트 쿼드를 생성하도록 구성되고; 및
픽셀 셰이더 스테이지(pixel shader stage)- 상기 픽셀 셰이더 스테이지는
상기 제1 수정된 셰이딩 레이트 쿼드와 상기 제2 세트의 수정된 셰이딩 레이트 쿼드 세트를 셰이딩하도록 구성되는 것을 포함하는, 그래픽 처리 파이프라인. - 청구항 10에 있어서, 상기 래스터라이저 스테이지는
제3 세트의 쿼드가 일대일 셰이딩 레이트로 셰이딩되어야 하는지 결정하고; 및
상기 제3 세트의 쿼드에 대해 수정된 셰이딩 레이트 쿼드의 세트를 생성하지 않고 상기 제3 세트의 쿼드를 셰이딩하도록 추가로 구성되는, 그래픽 처리 파이프라인. - 청구항 10에 있어서, 래스터라이저 스테이지는
개별 삼각형에 대해 삼각형별 베이시스, 셰이딩 레이트 타일별 베이시스 또는 개별 삼각형에 대한 셰이딩 레이트 타일별 베이시스 중 하나에 기초하여, 상기 제1 세트의 수정된 셰이딩 레이트 쿼드가 서브 샘플링 셰이딩 레이트를 갖는지 및 상기 제2 세트의 수정된 셰이딩 레이트 쿼드가 슈퍼 샘플링 셰이딩 레이트를 갖는지를 결정하도록 추가로 구성되는, 그래픽 처리 파이프라인. - 청구항 12에 있어서,
상기 제1 세트의 수정된 셰이딩 레이트 쿼드가 서브 샘플링 셰이딩 레이트를 갖는지 또는 상기 제2 세트의 수정된 셰이딩 레이트 쿼드가 슈퍼 샘플링 셰이딩 레이트를 갖는지를 결정하는 것은 삼각형별 베이시스로 수행되고, 이는,
삼각형의 셰이딩 레이트를 식별하는 단계;
상기 삼각형을 래스터화하여 상기 제1 세트의 쿼드 또는 상기 제2 세트의 쿼드를 생성하는 단계; 및
상기 삼각형의 상기 셰이딩 레이트를 상기 제1 세트의 쿼드 또는 상기 제2 세트의 쿼드에 할당하는 단계를 포함하는, 그래피 처리 파이프라인. - 청구항 12에 있어서,
상기 제1 세트의 수정된 셰이딩 레이트 쿼드가 서브 샘플링 셰이딩 레이트를 갖는지 또는 상기 제2 세트의 수정된 셰이딩 레이트 쿼드가 슈퍼 샘플링 셰이딩 레이트를 갖는지를 결정하는 것은 셰이딩 레이트 타일별 베이시스로 수행되고, 이는,
상기 제1 세트의 쿼드 또는 상기 제2 쿼드 중 어느 하나에 대응하는 셰이딩 레이트 타일에 대한 셰이딩 레이트를 식별하는 단계; 및
상기 제1 세트의 쿼드 또는 상기 제2 세트의 쿼드 중 어느 하나에 상기 셰이딩 레이트 타일의 상기 셰이딩 레이트를 할당하는 단계를 포함하는, 그래픽 처리 파이프라인. - 청구항 14에 있어서, 상기 셰이딩 레이트 타일에 대한 상기 셰이딩 레이트를 식별하는 단계는 셰이딩 레이트 타일 이미지에서 검색을 수행하는 단계를 포함하는, 그래픽 처리 파이프라인.
- 청구항 12에 있어서,
상기 제1 세트의 수정된 셰이딩 레이트 쿼드가 서브 샘플링 셰이딩 레이트를 갖는지 또는 상기 제2 세트의 수정된 셰이딩 레이트 쿼드가 슈퍼 샘플링 셰이딩 레이트를 갖는지를 결정하는 것은 개별 삼각형에 대한 셰이딩 레이트 타일별 베이시스로 수행되고, 이는,
삼각형의 셰이딩 레이트를 식별하는 단계;
상기 삼각형을 래스터화하여 상기 제1 세트의 쿼드 또는 상기 제2 세트의 쿼드를 생성하는 단계;
상기 삼각형 내에서 상기 제1 세트의 쿼드 또는 상기 제2 쿼드 중 어느 하나에 대응하는 셰이딩 레이트 타일에 대한 셰이딩 레이트를 식별하는 단계; 및
상기 제1 세트의 쿼드 또는 상기 제2 세트의 쿼드 중 어느 하나에 상기 셰이딩 레이트 타일의 상기 셰이딩 레이트를 할당하는 단계를 포함하는, 그래픽 처리 파이프라인. - 청구항 10에 있어서,
렌더 대상에 상기 셰이딩된 제2 세트의 수정된 셰이딩 레이트 쿼드를 기록하도록 구성된 출력 병합기 스테이지를 더 포함하는, 그래픽 처리 파이프라인. - 청구항 10에 있어서,
상기 세이딩된 제1 세트의 수정된 셰이딩 레이트 쿼드를 업샘플링하고, 결과로 생성된 상기 업샘플링된 쿼드를 변조하도록 구성된 출력 병합기 스테이지를 더 포함하는, 그래픽 처리 파이프라인. - 가속 처리 디바이스("APD")에 있어서,
픽셀 셰이더 프로그램을 실행하도록 구성된 처리 유닛; 및
상이한 해상도에서 픽셀 셰이딩 및 래스터화를 수행하기 위한 그래픽 처리 파이프라인을 포함하고, 상기 그래픽 처리 파이프라인은,
타일 버퍼;
래스터라이저 스테이지- 상기 레스터라이저 스테이지는
제1 세트의 쿼드를 상기 타일 버퍼에 저장하고;
상기 제1 세트의 쿼드로부터 서브 샘플링 레이트로 제1 세트의 수정된 셰이딩 레이트 쿼드를 생성하고;
제2 세트의 쿼드를 상기 타일 버퍼에 저장하고;
상기 제2 세트의 쿼드로부터 슈퍼 샘플링 레이트로 제2 세트의 수정된 셰이딩 레이트 쿼드를 생성하도록 구성되고; 및
상기 픽셀 셰이더 프로그램을 실행하도록 구성된 픽셀 셰이더 스테이지- 상기 픽셀 셰이더 프로그램은
상기 제1 수정된 셰이딩 레이트 쿼드와 상기 제2 세트의 수정된 셰이딩 레이트 쿼드 세트를 셰이딩하는, 가속 처리 디바이스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/228,692 | 2018-12-20 | ||
US16/228,692 US11276211B2 (en) | 2018-12-20 | 2018-12-20 | Integration of variable rate shading and super-sample shading |
PCT/US2019/066500 WO2020131679A1 (en) | 2018-12-20 | 2019-12-16 | Integration of variable rate shading and super-sample shading |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210095914A true KR20210095914A (ko) | 2021-08-03 |
Family
ID=71097730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217019698A KR20210095914A (ko) | 2018-12-20 | 2019-12-16 | 가변 레이트 셰이딩과 슈퍼 샘플 셰이딩의 통합 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11276211B2 (ko) |
EP (1) | EP3899858A4 (ko) |
JP (1) | JP2022512082A (ko) |
KR (1) | KR20210095914A (ko) |
CN (1) | CN113196333A (ko) |
WO (1) | WO2020131679A1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10460513B2 (en) * | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
US11257273B2 (en) * | 2019-12-19 | 2022-02-22 | Advanced Micro Devices, Inc. | Data output rate with variable rate shading |
US11127109B1 (en) * | 2020-03-23 | 2021-09-21 | Samsung Electronics Co., Ltd. | Methods and apparatus for avoiding lockup in a graphics pipeline |
GB2603156B (en) * | 2021-01-28 | 2023-05-10 | Advanced Risc Mach Ltd | Tile-based graphics processing systems |
US12067649B2 (en) * | 2021-06-29 | 2024-08-20 | Advanced Micro Devices, Inc. | Per-pixel variable rate shading controls using stencil data |
US11763521B2 (en) | 2021-08-13 | 2023-09-19 | Samsung Electronics Co., Ltd. | Method and apparatus for the automation of variable rate shading in a GPU driver context |
US20230298133A1 (en) * | 2022-03-17 | 2023-09-21 | Advanced Micro Devices, Inc. | Super resolution upscaling |
CN115022678B (zh) * | 2022-05-30 | 2024-07-02 | 中国电信股份有限公司 | 图像处理方法、系统、装置、设备及存储介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6943805B2 (en) | 2002-06-28 | 2005-09-13 | Microsoft Corporation | Systems and methods for providing image rendering using variable rate source sampling |
US8547395B1 (en) * | 2006-12-20 | 2013-10-01 | Nvidia Corporation | Writing coverage information to a framebuffer in a computer graphics system |
WO2008146406A1 (ja) | 2007-06-01 | 2008-12-04 | Thomson Licensing | ピクセルデータ変換のための画像処理装置及び方法 |
US8044956B1 (en) * | 2007-08-03 | 2011-10-25 | Nvidia Corporation | Coverage adaptive multisampling |
KR20090040515A (ko) | 2007-10-22 | 2009-04-27 | 삼성전자주식회사 | 적응적 탐색 기법을 이용한 이미지 공간 기반의 음영 처리장치 및 방법 |
US8605087B2 (en) * | 2008-07-03 | 2013-12-10 | Nvidia Corporation | Hybrid multisample/supersample antialiasing |
US9299125B2 (en) * | 2013-05-03 | 2016-03-29 | Advanced Micro Devices Inc. | Variable acuity rendering using multisample anti-aliasing |
US9355483B2 (en) | 2013-07-19 | 2016-05-31 | Nvidia Corporation | Variable fragment shading with surface recasting |
US9569883B2 (en) * | 2013-12-12 | 2017-02-14 | Intel Corporation | Decoupled shading pipeline |
US9569886B2 (en) * | 2013-12-19 | 2017-02-14 | Intel Corporation | Variable shading |
US9905046B2 (en) * | 2014-04-03 | 2018-02-27 | Intel Corporation | Mapping multi-rate shading to monolithic programs |
US10262455B2 (en) * | 2015-12-04 | 2019-04-16 | Intel Corporation | Merging fragments for coarse pixel shading using a weighted average of the attributes of triangles |
US10192280B2 (en) * | 2016-04-08 | 2019-01-29 | Qualcomm Incorporated | Per-vertex variable rate shading |
US10535186B2 (en) * | 2016-08-30 | 2020-01-14 | Intel Corporation | Multi-resolution deferred shading using texel shaders in computing environments |
US10147227B2 (en) * | 2017-02-17 | 2018-12-04 | Microsoft Technology Licensing, Llc | Variable rate shading |
US10706616B2 (en) * | 2017-04-21 | 2020-07-07 | Intel Corporation | Fragment compression for coarse pixel shading |
US10235799B2 (en) * | 2017-06-30 | 2019-03-19 | Microsoft Technology Licensing, Llc | Variable rate deferred passes in graphics rendering |
US10510185B2 (en) * | 2017-08-25 | 2019-12-17 | Advanced Micro Devices, Inc. | Variable rate shading |
-
2018
- 2018-12-20 US US16/228,692 patent/US11276211B2/en active Active
-
2019
- 2019-12-16 CN CN201980084278.2A patent/CN113196333A/zh active Pending
- 2019-12-16 KR KR1020217019698A patent/KR20210095914A/ko unknown
- 2019-12-16 EP EP19897802.5A patent/EP3899858A4/en active Pending
- 2019-12-16 JP JP2021530935A patent/JP2022512082A/ja active Pending
- 2019-12-16 WO PCT/US2019/066500 patent/WO2020131679A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2020131679A1 (en) | 2020-06-25 |
CN113196333A (zh) | 2021-07-30 |
EP3899858A4 (en) | 2022-09-21 |
JP2022512082A (ja) | 2022-02-02 |
US11276211B2 (en) | 2022-03-15 |
US20200202594A1 (en) | 2020-06-25 |
EP3899858A1 (en) | 2021-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102192065B1 (ko) | 가변 레이트 셰이딩 | |
US11276211B2 (en) | Integration of variable rate shading and super-sample shading | |
US11657560B2 (en) | VRS rate feedback | |
US20240257435A1 (en) | Hybrid binning | |
US11030791B2 (en) | Centroid selection for variable rate shading | |
US20220414939A1 (en) | Render target compression scheme compatible with variable rate shading | |
US11900499B2 (en) | Iterative indirect command buffers | |
US11880924B2 (en) | Synchronization free cross pass binning through subpass interleaving | |
US20220319091A1 (en) | Post-depth visibility collection with two level binning | |
US20240104685A1 (en) | Device and method of implementing subpass interleaving of tiled image rendering | |
US20210398349A1 (en) | Fine grained replay control in binning hardware | |
CN115769264A (zh) | 用于多采样抗锯齿的加载指令 |