KR20230058460A - 깊이 컬링을 지연호출하기 위한 셰이더 코어 명령 - Google Patents
깊이 컬링을 지연호출하기 위한 셰이더 코어 명령 Download PDFInfo
- Publication number
- KR20230058460A KR20230058460A KR1020237010670A KR20237010670A KR20230058460A KR 20230058460 A KR20230058460 A KR 20230058460A KR 1020237010670 A KR1020237010670 A KR 1020237010670A KR 20237010670 A KR20237010670 A KR 20237010670A KR 20230058460 A KR20230058460 A KR 20230058460A
- Authority
- KR
- South Korea
- Prior art keywords
- culling
- shader core
- shader
- unit
- function
- Prior art date
Links
- 230000006870 function Effects 0.000 claims abstract description 34
- 238000000034 method Methods 0.000 claims abstract description 33
- 239000000872 buffer Substances 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 abstract description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 9
- 238000012360 testing method Methods 0.000 description 9
- 230000003321 amplification Effects 0.000 description 5
- 238000003199 nucleic acid amplification method Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- 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/10—Geometric effects
- G06T15/40—Hidden part removal
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
셰이더 코어 명령을 실행하여 깊이 컬링을 지연 호출하는 시스템들, 장치들 및 방법들이 개시된다. 셰이더 코어는 명령을 실행하여 대응하는 드로우 호출을 완료하기 전에 하나 이상의 엔티티용 깊이 컬링 유닛에 대한 컬링 함수를 지연호출한다. 셰이더 코어는 명령을 실행한 결과로서 깊이 컬링 유닛에게 모드 및 좌표를 제공한다. 깊이 컬링 유닛은 컬링 함수를 구현하여 엔티티들에 대응하는 하나 이상의 프리미티브들이 폐색되는지 여부를 결정하기 위해 라이브 깊이 버퍼에 액세스한다. 컬링 유닛은 하나 이상의 프리미티브들을 처리하는 결과(들)에 관한 표시(들)을 셰이더 코어에 리턴한다. 예를 들어, 그 결과가 프리미티브가 폐색된 것을 나타내는 경우, 셰이더 코어는 프리미티브에 대한 드로우 호출을 취소한다.
Description
그래픽 프로세서들은 종종 컴퓨터 그래픽 처리 시스템들 내에서 사용되어 기하학적 모델로부터 컴퓨터 생성 이미지를 생성한다. 기하학적 모델은 가상 장면의 다양한 객체, 세부 사항, 조명 소스, 및 다른 요소를 정의한다. 계산 시스템은 기하학적 모델 및 소프트웨어 애플리케이션으로부터의 다른 입력에 기초하여 주어진 장면을 렌더링하는 방법을 결정한다. 이러한 입력들은 점, 선, 다각형, 메쉬렛(meshlet), 3차원 입체 객체, 및 다른 객체와 같은 그래픽 객체를 포함한다. 이러한 객체들은 보다 일반적으로 "프리미티브(primitive)"로 지칭될 수 있다.
그래픽 처리 유닛(GPU) 또는 다른 유형의 프로세서는 입력과 기하학적 모델을 처리하여 원하는 이미지 또는 비디오 프레임을 나타내는 픽셀 컬러 값의 2차원 또는 3차원 어레이를 생성한다. 프레임의 각 픽셀은 색상 및 텍스처를 포함한, 그와 연관된 다수의 속성을 갖는다. 보통, 셰이더는 각 픽셀의 속성에 대한 산술 및 논리 동작을 수행하는 데 사용되어 픽셀을 나타내는 최종 값을 달성한다. 셰이더는 프로그램, 고정 기능 하드웨어, 제어 로직, 또는 이들 및/또는 다른 처리 요소들의 임의의 조합일 수 있다. 최종 값은 프레임 버퍼에 배치되고 픽셀이 디스플레이 장치로 구동될 때 사용된다.
다수의 프리미티브들이 렌더링되고 스크린 상의 동일한 픽셀들에 투영될 때, 렌더링 엔진은 어떤 프리미티브가 가시적인지 그리고 어떤 프리미티브들이 숨겨지는지를 결정할 필요가 있다. 폐색(occlusion) 문제를 해결하기 위한 하나의 기법은 깊이 버퍼로 깊이 테스트를 수행하는 것을 포함한다. 스크린 상의 각각의 픽셀에 대해, 시점(viewpoint)의 관점에서 가장 가까운 물체까지의 거리가 깊이 버퍼에 저장된다. 프리미티브가 스크린 공간의 주어진 픽셀에 투영될 때, 렌더링된 프리미티브가 가장 가깝고 이전에 렌더링된 프리미티브보다 스크린(즉, 시점)에 더 가까운지를 결정하기 위해 깊이 테스트가 수행된다. 프리미티브가 이전에 렌더링된 프리미티브들보다 시점에 더 가까운 경우, 프리미티브는 테스트를 통과한다. 그렇지 않으면, 프리미티브가 임의의 이전에 렌더링된 프리미티브보다 시점에서 더 멀리 떨어져 있는 경우, 프리미티브는 테스트에 실패한다. 시점은 사용자의 시점 또는 관점을 나타내는 가상 카메라에 의해 정의된다.
다음의 개시내용은 상술한 문맥에 관한 것이지만, 본 명세서에 설명된 방법 및 메커니즘은 또한 처리량을 증가시키고, 성능을 개선하고, 전력 소비를 감소시키고, 다른 이점을 달성하기 위해 다른 상황에서 사용될 수 있다는 것을 이해해야 한다.
본 명세서에 설명된 방법 및 메커니즘의 장점은 첨부 도면을 조합하여 이하의 설명을 참조함으로써 더 잘 이해될 수 있다.
도 1은 계산 시스템의 일 구현의 블록도이다.
도 2는 계산 시스템의 다른 구현의 블록도이다.
도 3은 계산 시스템의 다른 구현의 블록도이다.
도 4는 셰이더 코어 명령어를 실행하여 깊이 컬링을 지연호출하는(invoke) 방법의 일 구현을 도시하는 일반화된 흐름도이다.
도 5는 셰이더 코어 명령어를 실행하여 깊이 컬링을 지연호출하는 방법의 일 구현을 도시하는 일반화된 흐름도이다.
도 6은 드로우 호출(draw call)을 컬링 함수 쿼리(query)로 변환하는 방법의 일 구현을 도시하는 일반화된 흐름도이다.
도 7은 컬링 유닛에 대한 쿼리를 생성할 때 엔티티를 합성하는 방법의 일 구현을 도시하는 일반화된 흐름도이다.
도 1은 계산 시스템의 일 구현의 블록도이다.
도 2는 계산 시스템의 다른 구현의 블록도이다.
도 3은 계산 시스템의 다른 구현의 블록도이다.
도 4는 셰이더 코어 명령어를 실행하여 깊이 컬링을 지연호출하는(invoke) 방법의 일 구현을 도시하는 일반화된 흐름도이다.
도 5는 셰이더 코어 명령어를 실행하여 깊이 컬링을 지연호출하는 방법의 일 구현을 도시하는 일반화된 흐름도이다.
도 6은 드로우 호출(draw call)을 컬링 함수 쿼리(query)로 변환하는 방법의 일 구현을 도시하는 일반화된 흐름도이다.
도 7은 컬링 유닛에 대한 쿼리를 생성할 때 엔티티를 합성하는 방법의 일 구현을 도시하는 일반화된 흐름도이다.
아래의 설명에서, 본 명세서에 제시된 방법 및 메커니즘에 대한 완전한 이해를 제공하기 위해 다양한 구체적인 세부 사항이 제시된다. 그러나, 당업자는 이러한 구체적인 세부 사항 없이 다양한 구현을 실시할 수 있음을 인식해야 한다. 일부 실례에서, 잘 알려진 구조, 구성 요소, 신호, 컴퓨터 프로그램 명령 및 기술은 본 명세서에 설명된 방법을 모호하게 하는 것을 피하기 위해 상세히 설명하지 않는다. 첨부 도면의 단순성과 명확성을 위해, 도면에 도시된 요소는 반드시 축척대로 그려진 것은 아니라는 것을 이해할 것이다. 예를 들어, 일부 요소의 크기는 다른 요소에 비해 과장될 수 있다.
셰이더 코어 명령을 실행하여 깊이 컬링을 지연호출하는 다양한 시스템들, 장치들 및 방법들이 본 명세서에 개시된다. 일 구현에서, 셰이더 코어는 명령을 실행하여 대응하는 드로우 호출을 완료하기 전에 하나 이상의 엔티티들(예를 들어, 프리미티브들, 스크린-공간 직사각형)용 깊이 컬링 유닛에서 컬링 함수를 지연호출한다. 셰이더 코어는 명령을 실행한 결과로서 깊이 컬링 유닛에게 모드 및 좌표를 제공한다. 일 구현에서, 깊이 컬링 유닛은 컬링 함수를 구현하여 라이브 깊이 버퍼에 액세스하여 하나 이상의 프리미티브가 폐색되는지 여부를 결정한다. 컬링 유닛은 하나 이상의 엔티티들을 처리한 결과(들)에 관한 표시(들)을 셰이더 코어에 리턴한다. 컬링 함수 결과(들)에 관한 표시(들)을 수신한 것에 응답하여, 셰이더 코어는 드로우 호출을 수정, 취소, 또는 계속할지 여부를 결정한다. 예를 들어, 일 구현에서, 컬링 유닛으로부터의 결과들이 프리미티브가 폐색됨을 나타내는 경우, 셰이더 코어는 프리미티브에 대한 드로우 호출을 취소한다. 컬링 유닛에 의해 생성된 결과에 따라 셰이더 코어에 의해 다른 유형의 동작이 취해질 수 있다. 따라서, 그래픽 처리 파이프라인은 드로우 호출과 연관된 임의의 불필요한 처리 작업들을 회피하여, 그래픽 처리 파이프라인의 성능을 증가시킨다.
여기서, 도 1을 참조하면, 계산 시스템(100)의 일 구현의 블록도가 도시되어 있다. 일 구현에서, 계산 시스템(100)은 적어도 프로세서(105A 내지 105N), 입력/출력(I/O) 인터페이스(120), 버스(125), 메모리 제어기(들)(130), 네트워크 인터페이스(135), 메모리 장치(들)(140), 디스플레이 제어기(150) 및 디스플레이(155)를 포함한다. 다른 구현에서, 계산 시스템(100)은 다른 구성 요소를 포함하고, 및/또는 계산 시스템(100)은 상이하게 배열된다. 프로세서(105A 내지 105N)는 시스템(100)에 포함된 임의의 수의 프로세서를 나타낸다.
일 구현에서, 프로세서(105A)는 중앙처리장치(CPU)와 같은 범용 프로세서이다. 이 구현에서, 프로세서(105A)는 시스템(100) 내의 다른 프로세서 중 하나 이상의 동작과 통신 및/또는 제어하기 위한 드라이버(110)(예를 들어, 그래픽 드라이버)를 실행한다. 상기 구현에 따라, 드라이버(110)는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 적합한 조합으로 구현될 수 있다는 점에 유의한다. 일 구현에서, 프로세서(105N)는 고도로 평행한 아키텍처를 갖는 데이터 병렬 프로세서이다. 데이터 병렬 프로세서는 그래픽 처리 유닛(GPU), 디지털신호 프로세서(DSP), 필드 프로그래밍 가능한 게이트 어레이(FPGA), 주문형 집적회로(ASIC) 등을 포함한다. 일부 구현에서, 프로세서(105A 내지 105N)는 복수의 데이터 병렬 프로세서를 포함한다. 일 구현에서, 프로세서(105N)는 디스플레이 제어기(150)에 픽셀을 제공하여 디스플레이(155)에 의해 구동되는 GPU이다.
메모리 제어기(들)(130)는 프로세서(105A 내지 105N)에 의해 액세스 가능한 임의의 수 및 유형의 메모리 제어기를 나타낸다. 메모리 제어기(들)(130)는 프로세서(105A 내지 105N)로부터 분리된 것으로 도시되어 있으며, 이는 단지 하나의 가능한 구현을 나타낸다는 것을 이해해야 한다. 다른 구현에서, 메모리 제어기(들)(130)는 하나 이상의 프로세서(105A 내지 105N)에 내장될 수 있으며 및/또는 메모리 제어기(130)는 하나 이상의 프로세서(105A 내지 105N)와 같은 동일한 반도체 코어에 위치할 수 있다. 메모리 제어기(들)(130)는 임의의 수 및 유형의 메모리 장치(140)에 결합된다. 메모리 장치(들)(140)은 임의의 수 및 유형의 메모리 장치를 나타낸다. 예를 들어, 메모리 장치(들)(140)에 있는 메모리의 유형은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), NAND 플래시 메모리, NOR 플래시 메모리, 강유전체 랜덤 액세스 메모리(FeRAM) 또는 다른 것을 포함한다.
I/O 인터페이스(120)는 임의의 수 및 유형의 I/O 인터페이스(예를 들어, 주변 구성 요소 상호연결(PCI) 버스, PCI-확장(PCI-X), PCIE(PCI Express) 버스, 기가비트 이더넷(GBE) 버스 및 범용 직렬 버스(USB))를 나타낸다. 다양한 유형의 주변 장치(도시되지 않음)가 I/O 인터페이스(120)에 결합된다. 이러한 주변 장치는 디스플레이, 키보드, 마우스, 프린터, 스캐너, 조이스틱 또는 다른 유형의 게임 제어기, 매체 기록 장치, 외부 저장 장치, 네트워크 인터페이스 카드 등을 포함한다(그러나 이것에 국한되지 않는다). 네트워크 인터페이스(135)는 네트워크를 통해 네트워크 메시지를 수신 및 전송할 수 있다.
다양한 구현에서, 계산 시스템(100)은 컴퓨터, 랩톱, 모바일 장치, 게임기, 서버, 스트리밍 장치, 웨어러블 장치 또는 임의의 다양한 다른 유형의 계산 시스템 또는 장치이다. 계산 시스템(100)의 구성 요소 수는 구현에 따라 달라진다는 점에 유의한다. 예를 들어, 다른 구현에서, 각 구성 요소는 도 1에 도시된 수보다 더 많거나 적다. 다른 구현에서, 계산 시스템(100)은 도 1에 도시되지 않은 다른 구성 요소를 포함한다는 점에 또한 유의한다. 추가적으로, 다른 구현에서, 계산 시스템(100)은 도 1에 도시된 것과 다른 방식으로 구조화된다.
여기서, 도 2를 참조하면, 계산 시스템(200)의 다른 구현의 블록도가 도시되어 있다. 일 구현에서, 시스템(200)은 GPU(205), 시스템 메모리(225), 및 로컬 메모리(230)를 포함한다. 시스템(200)은 또한 도면을 모호하게 하는 것을 피하기 위해 도시되지 않은 다른 구성요소들을 포함할 수 있다. GPU(205)는 적어도 명령 프로세서(235), 제어 로직(240), 디스패치 유닛(250), 계산 유닛들(255A 내지 255N), 메모리 제어기(220), 글로벌 데이터 공유(270), 레벨 1(L1) 캐시(265), 및 레벨 2(L2) 캐시(260)를 포함한다. 다른 구현들에서, GPU(205)는 다른 구성요소들을 포함하고, 예시된 구성요소들 중 하나 이상을 생략하고, 단지 하나의 인스턴스만이 도 2에 도시되더라도 구성요소의 다수의 인스턴스들을 가지며, 및/또는 다른 적합한 방식들로 구성된다. 일 구현에서, GPU(205) 회로는 (도 1의) 프로세서(105N)에 포함된다.
다양한 구현에서, 계산 시스템(200)은 임의의 다양한 유형의 소프트웨어 애플리케이션을 실행한다. 주어진 소프트웨어 애플리케이션을 실행하는 것의 일부로서, 계산 시스템(200)의 호스트 CPU(미도시)는 GPU(205)에서 수행될 작업을 시작한다. 일 실시예에서, 명령 프로세서(235)는 호스트 CPU로부터 드로우 호출을 수신하고, 명령 프로세서(235)는 연산 유닛(255A 내지 255N)에 드로우 호출을 발행하기 위해 디스패치 유닛(250)을 사용한다. 주어진 메시렛에 대한 드로우 호출을 개시하는 것에 응답하여, 계산 유닛들(255A 내지 255N)은 깊이 컬링 함수를 지연호출하여 주어진 메시렛에 대한 드로우 호출을 취소, 수정 또는 실행할지 여부를 결정한다. 주어진 메시렛은 임의의 수의 정점들을 포함할 수 있다. 이들 및 다른 기술에 대한 더 많은 세부사항이 본 개시의 나머지 전반에 걸쳐 제공될 것이다.
여기서, 도 3을 참조하면, 계산 시스템(300)의 다른 구현의 블록도가 도시되어 있다. 일 구현에서, 계산 시스템(300)은 적어도 제어 유닛(305), 캐시/메모리 서브시스템(310), 셰이더 코어(320), 래스터화기(330), 컬링 유닛(340), 및 깊이 버퍼(345)를 포함한다. 제어 유닛(305)은 하나 이상의 프레임들 또는 프레임의 하나 이상의 부분들을 렌더링하는 것의 일부로서 시스템(300)의 다양한 유닛들에 의해 수행되는 처리를 조정한다. 제어 유닛(305)은 소프트웨어 및/또는 하드웨어의 임의의 적합한 조합을 사용하여 구현될 수 있다. 제어 유닛(305)은 제어 로직(305)으로도 지칭될 수 있다는 것에 유의한다. 또한, 제어 유닛(305)의 일부분들은 셰이더 코어(320) 및 컬링 유닛(340) 내에 위치할 수 있고, 제어 유닛(305)의 일부분들은 셰이더 코어(320) 및 컬링 유닛(340)의 외부에 위치할 수 있다. 시스템(300) 전체에 걸쳐 펼쳐진 임의의 적절한 제어 유닛(305) 로직의 배열이 구현될 수 있다. 계산 시스템(300)은 도면을 모호하게 하는 것을 피하기 위해 도시되지 않은 임의의 수의 다른 구성요소들(예를 들어, 메모리 디바이스, 프레임 버퍼, 디스플레이)을 포함할 수 있다.
셰이더 코어(320)는 1 내지 N 개의 임의의 수의 셰이더 유닛들(325A 내지 325N)을 포함하고, 여기서 N은 1보다 큰 양의 정수이다. 셰이더 유닛들(325A 내지 325N)은 또한 셰이더 스테이지들(325A 내지 325N)로도 지칭될 수 있다. 셰이더 유닛들(325A 내지 325N)은 정점 셰이더, 헐(hull) 셰이더, 테셀레이터(tesselator), 광 셰이더, 픽셀 셰이더, 기하구조 셰이더, 메시 셰이더, 증폭 셰이더, 도메인 셰이더, 프래그먼트 셰이더, 계산 셰이더 등과 같은 임의의 수 및 유형의 셰이더들을 포함할 수 있다는 것에 유의한다. 상이한 구현들에서 상이한 셰이더 코어들(320)은 개별 셰이더 유닛들(325A 내지 325N)의 상이한 조합들 및 배열들을 가질 수 있다. 셰이더 코어(320)는 본 명세서에서 셰이더 파이프라인(320)으로 지칭될 수 있다. 추가적으로, 컬링 유닛(340)은 또한 본 명세서에서 깊이 컬링 유닛(340)으로 지칭될 수 있다.
일 구현에서, 제어 유닛(305)은 하나 이상의 프리미티브용 셰이더 코어(320)에게 드로우 호출을 발행한다. 드로우 호출을 수신하는 것에 응답하여, 셰이더 코어(320)는 캐시/메모리 서브시스템(310)으로부터 대응 프리미티브들을 검색한다. 일 구현에서, 셰이더 코어(320)는 드로우 호출을 하는 동안 명령을 실행하여 컬링 유닛(340)에 액세스한다. 일 구현에서, 명령은 주어진 인터페이스(322A 내지 322N)에 셰이더 코어(320)의 대응 셰이더(325A 내지 325N)로부터 액세스한다. 다수의 인터페이스들(322A 내지 322N)이 도시되어 있지만, 이들은 컬링 유닛(340)이 임의의 셰이더(325A 내지 325N)로부터 액세스가능하다는 것을 나타내도록 의도된다. 즉, 인터페이스들(322A 내지 322N)은 실제로 일부 구현들에서 단일 인터페이스로 구성될 수 있다. 또한, 컬링 유닛(340)은 인터페이스(342)를 포함하여 셰이더 코어(320)로부터 명령어 및 대응 파라미터들을 수신한다
셰이더 코어(320)에 의해 실행되는 명령은 셰이더 코어(320)가 컬링 유닛(340)에 요청(query)하여 셰이딩 처리를 하는 동안 컬링 테스트를 수행하게 한다. 일 구현에서, 쿼리는 하나 이상의 프리미티브들과 연관된 하나 이상의 파라미터들을 포함한다. 다른 구현에서, 쿼리는 크기가 있는 스크린-공간 직사각형을 정의하는 파라미터들을 포함한다. 일 구현에서, 쿼리를 수신한 것에 응답하여, 컬링 유닛(340)은 깊이 버퍼(345)에 액세스함으로써 컬링 함수를 실행한다. 셰이더 코어(320)에 의해 실행되는 명령(들)에 응답하여 액세스되는 깊이 버퍼(345)는 실제 깊이 버퍼의 사본이 아닌 라이브 깊이 버퍼(345)인 것에 유의한다. 깊이 버퍼(345)는 캐시 내, 메모리 내 또는 다른 위치에 저장될 수 있다.
일 구현에서, 컬링 유닛(340)은 컬링 함수의 결과를 셰이더 코어(320)에 리턴하고, 셰이더 코어(320)는 컬링 함수의 결과에 기초하여 드로우 호출을 진행할지 여부 및/또는 진행 방법을 결정한다. 예를 들어, 일 구현에서, 프리미티브가 컬링되지 않아야 하는 셰이더 코어(320)에 컬링 유닛(340)이 표시자(indicator)를 리턴하면, 셰이더 코어(320)는 프리미티브에 대한 드로우 호출을 계속한다. 프리미티브에 대한 드로우 호출을 완료한 후, 셰이더 코어(320)는 프레임 버퍼(미도시)에 대한 셰이딩 픽셀들을 생성하는 래스터화기(330)에 기하구조를 내보낸다(export). 다른 구현에서, 래스터화기(330)는 추가 처리를 위해 픽셀들을 셰이더 코어(320)에 다시 이송한다. 컬링 유닛(340)이 주어진 프리미티브가 폐색되는 셰이더 코어(320)에 표시자를 리턴하면, 셰이더 코어(320)는 주어진 프리미티브에 대한 드로우 호출을 취소한다. 셰이더 코어(320)는 중첩된 컬링 요청들을 컬링 유닛(340)에게 발행할 수 있고, 다수의 보류 컬링 요청들을 갖는 것에 유의한다. 셰이더 코어(320)는 이러한 요청들에 대한 응답들을 수신하기 전에, 깊이 컬링 유닛으로 전송되었던 복수의 미결(outstanding) 컬링 요청들을 추적한다. 주어진 컬링 요청에 대해 응답이 수신되면, 주어진 컬링 요청은 셰이더 코어(320)에 의해 제거된다.
여기서, 도 4를 참조하면, 셰이더 코어 명령을 실행하여 깊이 컬링을 지연호출하는 방법(400)의 일 구현이 도시되어 있다. 논의를 위해, 본 구현의 단계들 및 도 5 내지 도 7의 단계들이 순차적으로 도시되어 있다. 그러나, 설명된 방법의 다양한 구현에서, 설명된 요소 중 하나 이상이 동시에 수행되거나, 도시된 것과 다른 순서로 수행되거나 전체적으로 생략될 수 있다는 점에 유의해야 한다. 또한, 다른 추가 요소가 원하는 대로 수행된다. 본 명세서에 설명된 임의의 다양한 시스템 또는 장치들은 방법(400)을 구현하도록 구성된다.
드로우 호출이 셰이더 코어에 의해 수신된다(405 블록). 일 구현에서, 드로우 호출은 하나 이상의 프리미티브들, 또는 그 일부들에 대한 것이다. 드로우 호출을 수신한 후, 셰이더 코어는 명령을 실행하여 깊이 컬링 유닛에서 컬링 함수를 지연호출한다(410 블록). 다음으로, 깊이 컬링 유닛은 셰이더 코어 명령에 의해 지연호출된 컬링 함수를 실행한다(415 블록). 일 구현에서, 컬링 함수는 프리미티브의 픽셀들, 서브-픽셀들, 조각들, 또는 다른 부분들이 관찰자에게 가장 가까워지는지 또는 다른 프리미티브의 이전에 렌더링된 픽셀들에 의해 숨겨지는지 여부를 결정한다. "컬링 함수" 는 또한 "깊이 테스트"또는 "폐색 컬링 함수"로도 지칭될 수 있다는 것에 유의한다. 다른 구현에서, 절두체(frustum) 컬링, 배면(backface) 컬링, 작은 프리미티브 컬링, 깊이 경계(bound) 컬링, 또는 다른 유형의 컬링 동작을 실행하기 위한 함수와 같은 다른 컬링 함수들이 채용될 수 있다. 일반적으로 말해, "컬링 함수"는, 프리미티브가 사용자에게 제시되는 최종 이미지에 효과를 갖지 않거나, (예를 들어, 보이지 않을) 상대적으로 작은 효과를 갖는다고 판단되는 경우, 후속 셰이딩 동작들에서 프리미티브를 제거하거나 드롭하기 위한 프로세스로 정의된다.
다음으로, 깊이 컬링 유닛은 컬링 함수의 결과를 셰이더 코어로 다시 전송한다(420 블록). 각 쿼리에 대해, 깊이 컬링 유닛이 컬링이 발생해야 함을 나타내는 경우(조건 블록(425)에서, "예"인 경우), 셰이더 코어는 드로우 호출을 수정하거나 취소한다(430 블록). 셰이더 코어는 또한 430 블록에서 드로우 호출과 연관된 임의의 프리미티브들을 폐기할 수 있다. 이는 셰이더 코어를 통해 이동하고 처리된 프리미티브들의 수를 감소시킨다. 그렇지 않으면, 깊이 컬링 유닛이 컬링이 발생하지 않아야 함을 나타내는 경우(조건 블록(430)에서 "예"인 경우), 셰이더 코어는 드로우 호출을 계속한다(435 블록). 깊이 컬링 유닛은 임의의 가시적 프리미티브들에 기초하여 새로운 깊이 값들을 갖는 스크린 픽셀들에 대한 깊이 버퍼를 업데이트할 수 있다는 점에 유의한다. 430 및 435 블록 이후, 방법(400)은 종료된다.
여기서, 도 5를 참조하면, 셰이더 코어 명령을 실행하여 깊이 컬링을 지연호출하는 방법(500)의 일 구현이 도시되어 있다. 셰이더 코어는 명령을 실행하여 깊이 컬링 유닛에 의한 깊이 컬링을, 하나 이상의 엔티티(예를 들어, 프리미티브, 스크린-공간 직사각형)에 대해 지연호출한다(505 블록). 명령 실행의 일부로서, 셰이더 코어는 하나 이상의 엔티티에 대한 적어도 모드 및 좌표를 깊이 컬링 유닛에 전송한다(510 블록). 예를 들어, 일 구현에서, 셰이더 코어 명령은 깊이 컬링 유닛으로 전달되는 다음의 파라미터들: geometry_cull_quad <output>, <screen min XY>, <screen max XY>, <depth min>, <depth max>를 포함한다. 다른 구현에서, 셰이더 코어 명령은 깊이 컬링 유닛 으로 전달되는 다음의 파라미터들을 포함한다; geometry_cull_triangle <output>, <vertex 0 XYZ>, <vertex 1 XYZ>, <vertex 2 XYZ>. 다른 구현들에서, 셰이더 코어 명령은 다른 파라미터들을 포함하고/하거나 다른 적합한 방식들로 포맷된다.
다음으로, 깊이 컬링 유닛은 라이브 깊이 버퍼에 액세스하여 엔티티들에 대응하는 하나 이상의 프리미티브가 폐색되었는지 여부를 결정한다(515 블록). 다음으로, 깊이 컬링 유닛은, 각 프리미티브별로, 프리미티브가 컬링되어야 하는지 여부를 나타내는 셰이더 코어에 결과(예를 들어, 부울 결과(Boolean result), 커버리지 결과)를 리턴한다(520 블록). 일 구현에서, 깊이 컬링 유닛은 상이한 상세 수준(level-of-detail)을 선택하는 데 유용한, 부분적으로 커버된 값을 리턴한다. 이는, 예를 들어, 프리미티브가 대부분 숨겨진 경우 발생할 수 있다. 520 블록 이후, 방법(500)은 종료된다. 일 구현에서, 셰이더 코어는 깊이 컬링 유닛에 의해 제공된 결과(들)을 사용하여, 하나 이상의 프리미티브들에 대한 드로우 호출들을 수정, 취소 또는 계속할지 여부를 결정할 것이다.
여기서, 도 6을 참조하면, 드로우 호출을 컬링 함수 쿼리로 변환하는 방법(600)의 일 구현이 도시되어 있다. 드로우 호출은 제어 유닛(예를 들어, 도 3의 제어 유닛(305))에 의해 수신된다(605 블록). 제어 유닛은 하드웨어 및/또는 소프트웨어의 임의의 적합한 조합을 사용하여 구현될 수 있다. 드로우 호출을 수신한 것에 응답하여, 제어 유닛은 드로우 호출의 일부로서 컬링 함수 쿼리를 발행한다(610 블록). 다음으로, 컬링 함수는 컬링 유닛(예를 들어, 도 3의 컬링 유닛(340))에서 실행된다(615 블록). 쿼리의 결과에 기초하여, 드로우 호출 또는 드로우 호출의 일부분들은 파이프라인의 나머지 부분에 걸쳐 상이하게 폐기되거나 처리될 수 있다(620 블록). 다시 말해서, 컬링 함수의 결과가 하나 이상의 프리미티브들(또는 그의 일부들)이 상이하게 컬링되거나 처리되어야 함을 나타내는 경우, 그에 따라 셰이더 코어는 하나 이상의 프리미티브들에 대해 드로우 호출을 수정한다. 예를 들어, 증폭 셰이더는 컬링 쿼리 결과에 기초하여 드로우 호출의 일부분을 취소할 수 있다. 다른 예에서, 메시 셰이더는 컬링 쿼리의 결과에 기초하여 개별 프리미티브들을 폐기할 수 있다. 그렇지 않으면, 컬링 쿼리의 결과가 프리미티브(들)이 컬링되지 않아야 함을 나타내는 경우, 드로우 호출은 프리미티브(들)에 대해 셰이더 코어에 의해 수정되지 않은 형태로 실행된다. 620 블록 이후, 방법(600)은 종료된다.
여기서, 도 7을 참조하면, 컬링 유닛에 대한 쿼리를 생성할 때 엔티티를 합성하는 방법(700)의 일 구현이 도시되어 있다. 드로우 호출은 그래픽 드라이버에서 셰이더 코어로 이송된다(705 블록). 일 실시예에서, "드로우 호출"은 하나 이상의 프리미티브들을 렌더링하는 요청으로 정의되며, 그 요청은 그래픽 애플리케이션 프로그래밍 인터페이스(API)와 호환된다. 다음으로, 셰이더 코어는 컬링 유닛에 질의하기 위해 엔티티를 합성한다(즉, 계산한다)(710 블록). 일 실시예에서, 엔티티는 크기가 있는 스크린-공간 직사각형이다. 예를 들어, 일 실시예에서, 증폭 셰이더는 드로우 호출에 의해 참조된 하나 이상의 프리미티브를 캡슐화하는 스크린-공간 경계 박스를 합성한다. 다음으로, 셰이더 코어는 컬링 유닛에 쿼리를 전송하고, 여기서 쿼리는 셰이더 코어에 의해 합성된 엔티티를 포함하거나 참조한다(715 블록). 일 구현에서, 엔티티가 스크린-공간 경계 박스인 경우, 쿼리는 스크린-공간 경계 박스의 최소 및 최대 값들을 특정한다.
컬링 유닛은 쿼리를 수신한 것에 응답하여 엔티티에 대한 하나 이상의 테스트를 수행한다(720 블록). 예를 들어, 일 구현에서, 쿼리에 의해 정의된 엔티티가 프리미티브일 때, 컬링 유닛은 Z-평면(즉, 깊이 평면)에 대해 프리미티브를 체크한다. 다른 구현에서, 쿼리에 의해 정의된 엔티티가 스크린-공간 직사각형인 경우, 컬링 유닛은 직사각형을 계층적 타일(HTile) 에 대해 체크한다. HTile은 픽셀 블록(예를 들어, 8 x 8 픽셀 블록)에 대한 깊이 정보를 저장한다. 다음으로, 컬링 유닛은 하나 이상의 테스트의 결과를 셰이더 코어에 전송한다(725 블록). 다음으로, 셰이더 코어는 하나 이상의 테스트의 결과에 기초하여 컬링을 결정한다(730 블록). 예를 들어, 일 구현에서, 셰이더 코어는 컬링 유닛으로부터 수신된 결과들에 기초하여 드로우 호출의 일부 또는 전체를 수정할지 여부에 대한 결정을 한다. 일 구현에서, 계산 셰이더는 그 결과에 기초하여 간접적인 드로우를 수행할 때 전체 드로우 호출을 중지하도록 결정할 수 있다. 다른 구현에서, 기하구조, 헐, 증폭, 또는 계산 셰이더는 개별 프리미티브들을 컬링할 수 있다. 추가 구현에서, 기하구조, 헐, 또는 증폭 셰이더는 프리미티브를 보다 적거나 전혀 생성하지 않도록 결정할 수 있다. 예를 들어, 이 구현에서, 셰이더가 임계량(예를 들어, 90%)에 의해 커버되는 것으로 식별되는 지형(terrain) 타일을 렌더링하는 경우, 전체 메시를 생성하는 대신 비교적 적은 수의 삼각형을 사용하여 근사가 수행된다. 다른 구현들에서, 컬링 유닛 결과들에 응답하는 다른 방식들이 가능하고 고려된다. 730 블록 이후, 방법(700)은 종료된다.
다양한 구현에서, 소프트웨어 애플리케이션의 프로그램 명령은 본 명세서에 설명된 방법 및/또는 메커니즘을 구현하기 위해 사용된다. 예를 들어, 일반적인 프로세서 또는 특수 목적 프로세서에 의해 실행 가능한 프로그램 명령이 고려된다. 다양한 구현에서, 이러한 프로그램 명령은 높은 레벨의 프로그래밍 언어에 의해 표현된다. 다른 구현에서, 프로그램 명령은 높은 레벨의 프로그래밍 언어에서 이진법, 중간체 또는 다른 형태로 컴파일된다. 또한, 프로그램 명령은 하드웨어의 동작이나 설계를 설명하도록 작성된다. 이러한 프로그램 명령은 C 언어와 같은 높은 레벨 프로그래밍 언어에 의해 표현된다. 또한, Verilog와 같은 하드웨어 설계 언어(HDL)가 사용된다. 다양한 구현에서, 프로그램 명령은 임의의 다양한 비일시적 컴퓨터 판독가능한 저장 매체에 저장된다. 저장 매체는 사용과정에 계산 시스템에 의해 액세스가능하여 프로그램을 실행하기 위해 계산 시스템에 프로그램 명령을 제공할 수 있다. 일반적으로 말하면, 이러한 계산 시스템은 적어도 하나 이상의 메모리 및 프로그램 명령을 실행하도록 구성된 하나 이상의 프로세서를 포함한다.
전술한 구현은 구현의 비제한적인 예일뿐이라는 것이 강조되어야 한다. 상기 개시 내용이 완전히 이해되면, 당업자는 복수의 변형 및 수정이 명백해질 것이다. 이하의 특허청구범위는 이러한 모든 변형 및 수정을 포함하도록 해석되는 것으로 의도된다.
Claims (20)
- 장치로서,
인터페이스; 및
셰이더 코어를 포함하되,
상기 장치는
상기 셰이더 코어가 드로우 호출을 수신하고;
상기 셰이더 코어가 명령을 실행하여 상기 드로우 호출용 컬링 유닛에서 컬링 함수를 지연호출하고; 및
상기 인터페이스를 통해 수신된 표시자에 기초하여 상기 드로우 호출을 취소, 계속 또는 수정할지 여부를 결정하도록 구성되는, 장치. - 제1항에 있어서, 상기 컬링 유닛은 상기 컬링 함수를 실행하여 라이브 깊이 버퍼에 액세스하도록 구성되는, 장치.
- 제2항에 있어서, 상기 컬링 유닛은 상기 셰이더 코어에 의해 합성된 엔티티 상에서 상기 컬링 함수를 실행하도록 구성되는, 장치.
- 제1항에 있어서, 상기 표시는 부울 값 또는 커버리지 값인, 장치.
- 제1항에 있어서, 상기 셰이더 코어는 상기 명령을 실행한 결과로서 모드 및 좌표를 상기 컬링 유닛에 제공하도록 더 구성되는, 장치.
- 제1항에 있어서, 상기 셰이더 코어는 상기 명령을 실행하는 메시 셰이더를 포함하는, 시스템.
- 제1항에 있어서, 상기 셰이더 코어는 상기 컬링 유닛으로 전송되었던 복수의 미결(outstanding) 컬링 요청들을 추적하도록 더 구성되는, 장치.
- 방법으로서,
셰이더 코어가, 드로우 호출을 수신하는 단계;
셰이더 코어가 명령을 실행하여 드로우 호출용 컬링 유닛에서 컬링 함수를 지연호출하는 단계; 및
인터페이스를 통해 수신된 표시에 기초하여 상기 드로우 호출을 취소, 계속 또는 수정할지 여부를 결정하는 단계를 포함하는, 방법. - 제8항에 있어서, 상기 컬링 유닛이 상기 컬링 함수를 실행하여 라이브 깊이 버퍼에 액세스하는 단계를 더 포함하는, 방법.
- 제9항에 있어서, 상기 컬링 유닛이 상기 셰이더 코어에 의해 합성된 엔티티 상에서 상기 컬링 함수를 실행하는 단계를 더 포함하는, 방법.
- 제8항에 있어서, 상기 표시는 부울 값 또는 커버리지 값인, 방법.
- 제8항에 있어서, 상기 셰이더 코어가 상기 명령을 실행한 결과로서 모드 및 좌표를 상기 컬링 유닛에 제공하는 단계를 더 포함하는, 방법.
- 제8항에 있어서, 메시 셰이더가 상기 명령을 실행하는 단계를 더 포함하는, 방법.
- 제8항에 있어서, 상기 셰이더 코어가, 상기 컬링 유닛으로 전송되었던 복수의 미결 컬링 요청을 추적하는 단계를 더 포함하는, 방법.
- 시스템으로서,
깊이 버퍼를 저장하는 메모리;
컬링 유닛; 및
셰이더 코어를 포함하되, 상기 셰이더 코어는,
메시렛용 드로우 호출을 수신하고;
명령을 실행하여 상기 메시렛용 상기 컬링 유닛에서 컬링 함수를 지연호출하고; 및
인터페이스를 통해 수신된 표시에 기초하여 상기 드로우 호출을 취소, 계속 또는 수정할지 여부를 결정하도록 구성되는, 시스템. - 제15항에 있어서, 상기 컬링 유닛은 상기 컬링 함수를 실행하여 상기 깊이 버퍼에 액세스하도록 구성되는, 시스템.
- 제16항에 있어서, 상기 컬링 유닛은 상기 셰이더 코어에 의해 합성된 엔티티에서 상기 컬링 함수를 실행하도록 구성되는, 시스템.
- 제15항에 있어서, 상기 표시는 부울 값 또는 커버리지 값인, 시스템.
- 제15항에 있어서, 상기 셰이더 코어는 상기 명령을 실행한 결과로서 모드 및 좌표를 상기 컬링 유닛에 제공하도록 더 구성되는, 시스템.
- 제15항에 있어서, 상기 셰이더 코어는 상기 컬링 유닛으로 전송되었던 복수의 미결 컬링 요청들을 추적하도록 더 구성되는, 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/007,935 US11481967B2 (en) | 2020-08-31 | 2020-08-31 | Shader core instruction to invoke depth culling |
US17/007,935 | 2020-08-31 | ||
PCT/US2021/047914 WO2022047136A1 (en) | 2020-08-31 | 2021-08-27 | Shader core instruction to invoke depth culling |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230058460A true KR20230058460A (ko) | 2023-05-03 |
KR102675870B1 KR102675870B1 (ko) | 2024-06-17 |
Family
ID=77897751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237010670A KR102675870B1 (ko) | 2020-08-31 | 2021-08-27 | 깊이 컬링을 지연호출하기 위한 셰이더 코어 명령 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11481967B2 (ko) |
EP (1) | EP4205082A1 (ko) |
JP (1) | JP7515008B2 (ko) |
KR (1) | KR102675870B1 (ko) |
CN (1) | CN116018620A (ko) |
WO (1) | WO2022047136A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116188243A (zh) * | 2023-03-02 | 2023-05-30 | 格兰菲智能科技有限公司 | 图形绘制流水线管理方法和图形处理器 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5729672A (en) | 1993-07-30 | 1998-03-17 | Videologic Limited | Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces |
US7746355B1 (en) * | 2007-01-24 | 2010-06-29 | Vivante Corporation | Method for distributed clipping outside of view volume |
US9214006B2 (en) * | 2013-06-04 | 2015-12-15 | Arm Limited | Hidden surface removal in graphics processing systems |
US9123168B2 (en) * | 2013-01-30 | 2015-09-01 | Qualcomm Incorporated | Output ordering of domain coordinates for tessellation |
US9189883B1 (en) | 2014-02-27 | 2015-11-17 | Pixar | Rendering of multiple volumes |
US10083541B2 (en) | 2014-03-13 | 2018-09-25 | Imagination Technologies Limited | Object illumination in hybrid rasterization and ray traced 3-D rendering |
US10089779B2 (en) * | 2016-04-01 | 2018-10-02 | Intel Corporation | Apparatus and method for conservative rasterization of polygons |
US10068307B2 (en) * | 2016-05-20 | 2018-09-04 | Intel Corporation | Command processing for graphics tile-based rendering |
GB2551388B (en) | 2016-06-17 | 2021-01-27 | Geomerics Ltd | Graphics processing systems |
US20180082464A1 (en) * | 2016-09-16 | 2018-03-22 | Tomas G. Akenine-Moller | Apparatus and method for an efficient 3d graphics pipeline |
US11379941B2 (en) * | 2016-09-22 | 2022-07-05 | Advanced Micro Devices, Inc. | Primitive shader |
US10943389B2 (en) * | 2016-12-09 | 2021-03-09 | Advanced Micro Devices, Inc. | Removing or identifying overlapping fragments after z-culling |
US10417815B2 (en) | 2017-01-27 | 2019-09-17 | Advanced Micro Devices, Inc. | Out of order pixel shader exports |
US10417787B2 (en) * | 2017-02-15 | 2019-09-17 | Microsoft Technology Licensing, Llc | Index buffer block compression |
US10636201B2 (en) | 2017-05-05 | 2020-04-28 | Disney Enterprises, Inc. | Real-time rendering with compressed animated light fields |
US10311016B2 (en) | 2017-05-30 | 2019-06-04 | Arm Limited | Hidden surface removal in graphics processing systems |
US10692270B2 (en) | 2017-08-18 | 2020-06-23 | Microsoft Technology Licensing, Llc | Non-divergent parallel traversal of a bounding volume hierarchy |
US10573055B2 (en) * | 2017-08-31 | 2020-02-25 | Intel Corporation | Apparatus and method for a programmable depth stencil graphics pipeline stage |
US10878611B2 (en) * | 2018-01-26 | 2020-12-29 | Nvidia Corporation | Techniques for pre-processing index buffers for a graphics processing pipeline |
US10846915B2 (en) * | 2018-03-21 | 2020-11-24 | Intel Corporation | Method and apparatus for masked occlusion culling |
US10789675B2 (en) | 2018-12-28 | 2020-09-29 | Intel Corporation | Apparatus and method for correcting image regions following upsampling or frame interpolation |
US10981059B2 (en) * | 2019-07-03 | 2021-04-20 | Sony Interactive Entertainment LLC | Asset aware computing architecture for graphics processing |
US11551398B2 (en) | 2019-11-15 | 2023-01-10 | Advanced Micro Devices, Inc. | Light volume rendering |
-
2020
- 2020-08-31 US US17/007,935 patent/US11481967B2/en active Active
-
2021
- 2021-08-27 CN CN202180053555.0A patent/CN116018620A/zh active Pending
- 2021-08-27 EP EP21773957.2A patent/EP4205082A1/en active Pending
- 2021-08-27 KR KR1020237010670A patent/KR102675870B1/ko active IP Right Grant
- 2021-08-27 JP JP2023509659A patent/JP7515008B2/ja active Active
- 2021-08-27 WO PCT/US2021/047914 patent/WO2022047136A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
US20220068012A1 (en) | 2022-03-03 |
KR102675870B1 (ko) | 2024-06-17 |
EP4205082A1 (en) | 2023-07-05 |
US11481967B2 (en) | 2022-10-25 |
WO2022047136A1 (en) | 2022-03-03 |
JP7515008B2 (ja) | 2024-07-11 |
JP2023539808A (ja) | 2023-09-20 |
CN116018620A (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3008701B1 (en) | Using compute shaders as front end for vertex shaders | |
JP6377842B2 (ja) | 位置限定シェーディングパイプライン | |
JP6073533B1 (ja) | タイルベースのアーキテクチャ上での最適化されたマルチパスレンダリング | |
US20170004647A1 (en) | Rendering graphics data on demand | |
EP3353746B1 (en) | Dynamically switching between late depth testing and conservative depth testing | |
WO2016025113A1 (en) | Bandwidth reduction using texture lookup by adaptive shading | |
US10068366B2 (en) | Stereo multi-projection implemented using a graphics processing pipeline | |
US11631187B2 (en) | Depth buffer pre-pass | |
KR20110016938A (ko) | 기하 셰이더를 사용하는 테셀레이션 엔진을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품 | |
KR102675870B1 (ko) | 깊이 컬링을 지연호출하기 위한 셰이더 코어 명령 | |
JP2023501692A (ja) | ライトボリュームレンダリング | |
US11887245B2 (en) | Techniques for rendering signed distance functions | |
US20240087078A1 (en) | Two-level primitive batch binning with hardware state compression | |
JP2023530309A (ja) | ビニングハードウェアにおけるきめ細かなリプレイ制御 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |