KR20230027083A - 광선 추적을 위한 초기 컬링 - Google Patents

광선 추적을 위한 초기 컬링 Download PDF

Info

Publication number
KR20230027083A
KR20230027083A KR1020227045669A KR20227045669A KR20230027083A KR 20230027083 A KR20230027083 A KR 20230027083A KR 1020227045669 A KR1020227045669 A KR 1020227045669A KR 20227045669 A KR20227045669 A KR 20227045669A KR 20230027083 A KR20230027083 A KR 20230027083A
Authority
KR
South Korea
Prior art keywords
ray
leaf node
culling
traversal
intersection
Prior art date
Application number
KR1020227045669A
Other languages
English (en)
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 KR20230027083A publication Critical patent/KR20230027083A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

Landscapes

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

Abstract

광선 추적 동작을 수행하기 위한 기술이 제공된다. 본 기술은 경계 볼륨 계층구조의 비-리프 노드에 대한 후손-공유 유형 메타데이터를 판독하는 단계; 광선에 대한 광선 교차 테스트를 위한 하나 이상의 컬링 유형을 식별하는 단계; 및 상기 하나 이상의 컬링 유형이 상기 후손-공유 유형 메타데이터에 의해 특정된 적어도 하나의 유형을 포함하는지 여부에 기초하여 상기 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부를 결정하는 단계를 포함한다.

Description

광선 추적을 위한 초기 컬링
본 출원은 2020년 6월 26일 출원된 "EARLY CULLING FOR RAY TRACING"이라는 명칭의 미국 가출원 제63/044,686호 및 2020년 8월 31일 출원된 "EARLY CULLING FOR RAY TRACING"이라는 명칭의 미국 정규 출원 제17/008,462호의 이익을 주장하며, 이의 전체 내용은 본원에 참조로 포함된다.
광선 추적은 시뮬레이션된 광선을 투사하여 객체 교차점을 테스트하고 픽셀은 광선 투사 결과에 기초하여 색상화되는 그래픽 렌더링 기술의 유형이다. 광선 추적은 래스터화 기반 기술보다 계산적으로 더 비싸지만, 보다 물리적으로 정확한 결과를 생성한다. 광선 추적 동작의 개선은 지속적으로 이루어진다.
첨부된 도면과 함께 예로서 주어진 하기 설명으로부터 보다 상세한 이해를 얻을 수 있다.
도 1은 본 개시내용의 하나 이상의 특징이 구현될 수 있는 예시적인 장치의 블록도이다.
도 2는, 일례에 따른, 도 1의 가속 처리 장치에서 처리 작업의 실행과 관련된 추가 세부사항을 예시하는 장치의 블록도이다.
도 3은, 일례에 따른, 광선 추적 기술을 사용하여 그래픽을 렌더링하기 위한 광선 추적 파이프라인을 도시한다.
도 4는, 일례에 따른, 경계 볼륨 계층구조의 예시이다.
도 5는 일례에 따른, 가속 구조 순회 스테이지의 블록도이다.
도 6a는 일례에 따른, 경계 볼륨 계층구조 노드들의 초기 컬링을 가능하게 하기 위해 비-리프 노드들에서의 유형 메타데이터를 포함하는 경계 볼륨 계층의 블록도이다.
도 6b는 비-리프 노드들에서의 유형 메타데이터를 포함하는 예시적인 경계 볼륨 계층구조를 도시한다.
도 7은 일례에 따른, 광선 추적 동작을 수행하기 위한 방법의 흐름도이다.
광선 추적 동작을 수행하기 위한 기술이 제공된다. 본 기술은 경계 볼륨 계층구조의 비-리프 노드에 대한 후손-공유 유형 메타데이터를 판독하는 단계; 광선에 대한 광선 교차 테스트를 위한 하나 이상의 컬링 유형을 식별하는 단계; 및 상기 하나 이상의 컬링 유형이 상기 후손-공유 유형 메타데이터에 의해 특정된 적어도 하나의 유형을 포함하는지 여부에 기초하여 상기 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부를 결정하는 단계를 포함한다.
도 1은 본 개시내용의 하나 이상의 특징이 구현될 수 있는 예시적인 장치(100)의 블록도이다. 장치(100)는, 예를 들어, 컴퓨터, 게이밍 장치, 핸드헬드 장치, 셋톱 박스, 텔레비전, 모바일 폰, 또는 태블릿 컴퓨터를 포함한다. 장치(100)는 프로세서(102), 메모리(104), 스토리지(106), 하나 이상의 입력 장치(108), 및 하나 이상의 출력 장치(110)를 포함한다. 장치(100)는 또한 선택적으로 입력 드라이버(112) 및 출력 드라이버(114)를 포함한다. 장치(100)는 도 1에 도시되지 않은 추가 구성요소를 포함하는 것으로 이해된다.
다양한 대안에서, 프로세서(102)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 동일한 다이 상에 위치한 CPU 및 GPU, 또는 하나 이상의 프로세서 코어를 포함하며, 여기서 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 다양한 대안에서, 메모리(104)는 프로세서(102)와 동일한 다이 상에 위치하거나, 프로세서(102)와 별도로 위치한다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 예를 들어, RAM(random access memory), 동적 RAM, 또는 캐시를 포함한다.
스토리지(106)는 고정 또는 착탈식 스토리지, 예를 들어, 하드 디스크 드라이브, 고체 상태 드라이브, 광학 디스크, 또는 플래시 드라이브를 포함한다. 입력 장치(108)는, 제한 없이, 키보드, 키패드, 터치 화면, 터치 패드, 검출기, 마이크, 가속도계, 자이로스코프, 생체인식 스캐너, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함한다. 출력 장치(110)는, 제한 없이, 디스플레이 장치(118), 스피커, 프린터, 햅틱 피드백 장치, 하나 이상의 조명, 안테나, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함한다.
입력 드라이버(112)는 프로세서(102) 및 입력 장치(108)와 통신하고, 프로세서(102)가 입력 장치(108)로부터 입력을 수신할 수 있게 한다. 출력 드라이버(114)는 프로세서(102) 및 출력 장치(110)와 통신하고, 프로세서(102)가 출력 장치(110)에 출력을 송신할 수 있게 한다. 입력 드라이버(112) 및 출력 드라이버(114)는 선택적 구성요소이고, 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우, 장치(100)는 동일한 방식으로 동작할 것이라는 점에 유의한다. 출력 드라이버(114)는 디스플레이 디바이스(118)에 결합된 가속 처리 디바이스("APD")(116)를 포함한다. APD(116)는 프로세서(102)로부터 계산 명령 및 그래픽 렌더링 명령을 수용하여, 이러한 계산 및 그래픽 렌더링 명령을 처리하고 화면표시를 위해 디스플레이 장치(118)에 픽셀 출력을 제공하도록 구성된다. 아래에서 더 상세히 설명되는 바와 같이, APD(116)는 단일-명령어-다중-데이터 ("SIMD") 패러다임에 따라 계산을 수행하도록 구성된 하나 이상의 병렬 처리 유닛을 포함한다. 따라서, 다양한 기능이 APD(116)에 의해 또는 이와 함께 수행되는 것으로 본원에 설명되지만, 다양한 대안에서, APD(116)에 의해 수행되는 것으로 설명된 기능은 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않고 디스플레이 장치(118)에 (그래픽) 출력을 제공하도록 구성된 유사한 능력을 갖는 다른 컴퓨팅 장치에 의해 추가적으로 또는 대안적으로 수행된다. 예를 들어, SIMD 패러다임에 따라 처리 작업을 수행하는 임의의 처리 시스템은 본원에 설명된 기능을 수행하도록 구성될 수 있음이 고려된다. 또는, SIMD 패러다임에 따라 처리 작업을 수행하지 않는 컴퓨팅 시스템은 본원에 설명된 기능을 수행하는 것으로 고려된다.
도 2는, APD(116)에서 처리 작업의 실행과 관련된 추가 세부사항을 도시하는, 디바이스(100)의 블록도이다. 프로세서(102)는, 시스템 메모리(104)에, 프로세서(102)에 의한 실행을 위한 하나 이상의 제어 로직 모듈을 유지한다. 제어 로직 모듈은 운영 체제(120), 드라이버(122), 및 애플리케이션(126)을 포함한다. 이러한 제어 로직 모듈은 프로세서(102) 및 APD(116)의 동작의 다양한 특징을 제어한다. 예를 들어, 운영 체제(120)는 하드웨어와 직접 통신하고, 프로세서(102) 상에서 실행되는 다른 소프트웨어를 위한 하드웨어에 인터페이스를 제공한다. 드라이버(122)는, 예를 들어, APD(116)의 다양한 기능에 액세스하기 위해 프로세서(102) 상에서 실행되는 소프트웨어(예를 들어, 애플리케이션(126))에 애플리케이션 프로그래밍 인터페이스("API")를 제공함으로써 APD(116) 동작을 제어한다. 일부 구현예에서, 드라이버(122)는 APD(116)의 처리 구성요소(예컨대, 아래에서 더 상세히 논의되는 SIMD 유닛(138))에 의한 실행을 위해 프로그램을 컴파일하는 JIT(just-in-time) 컴파일러를 포함한다. 다른 구현예에서, 프로그램을 컴파일하기 위해 JIT 컴파일러가 사용되지 않고, 정상 애플리케이션 컴파일러가 APD(116) 상에서 실행하기 위한 셰이더 프로그램을 컴파일한다.
APD(116)는 병렬 처리 및/또는 비순차 처리에 적합한 그래픽 동작 및 비그래픽 동작과 같은 선택된 기능에 대한 명령 및 프로그램을 실행한다. APD(116)는 픽셀 동작, 지오메트리 계산과 같은 그래픽 파이프라인 동작을 실행하고, 프로세서(102)로부터 수신된 명령에 기초하여 이미지를 디스플레이 장치(118)에 렌더링하는 데 사용된다. APD(116)는 또한, 프로세서(102)로부터 수신된 명령에 기초하여, 비디오, 물리 시뮬레이션, 계산 유체 역학, 또는 다른 작업과 관련된 연산과 같은 그래픽 연산과 직접적으로 관련되지 않은 계산 처리 동작을 실행한다.
APD(116)는 SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)의 요청에 동작을 수행하는 하나 이상의 SIMD 유닛(138)을 포함하는 계산 유닛(132)을 포함한다. SIMD 패러다임은 다수의 프로세싱 요소가 단일 프로그램 제어 흐름 유닛 및 프로그램 카운터를 공유하고, 따라서 동일한 프로그램을 실행하지만, 상이한 데이터로 해당 프로그램을 실행할 수 있는 것이다. 일례에서, 각각의 SIMD 유닛(138)은 16개의 레인을 포함하고, 여기서 각각의 레인은 SIMD 유닛(138)의 다른 레인과 동일한 시간에 동일한 명령어를 실행하지만 상이한 데이터로 해당 명령어를 실행한다. 모든 레인이 주어진 명령어를 실행할 필요가 없는 경우 예측으로 레인을 끌 수 있다. 예측은 발산 제어 흐름으로 프로그램을 실행하는 데에도 사용될 수 있다. 보다 구체적으로, 제어 흐름이 개별 레인에 의해 수행된 계산에 기초하는 조건부 분기 또는 다른 명령어를 갖는 프로그램에 대해, 현재 실행되지 않은 제어 흐름 경로에 대응하는 레인의 예측, 및 상이한 제어 흐름 경로의 순차 실행이 임의의 제어 흐름을 허용한다. 일 구현예에서, 계산 유닛(132) 각각은 로컬 L1 캐시를 가질 수 있다. 일 구현예에서, 다수의 계산 유닛(132)은 L2 캐시를 공유한다.
계산 유닛(132)에서 실행의 기본 단위는 작업-항목이다. 각각의 작업-항목은 특정 레인에서 병렬로 실행될 프로그램의 단일 인스턴스화를 나타낸다. 작업-항목은 단일 SIMD 처리 유닛(138) 상에서 "파면(wavefront)"으로서 동시에 실행될 수 있다. 하나 이상의 파면은 동일한 프로그램을 실행하도록 지정된 작업-항목의 집합을 포함하는 "작업 그룹"에 포함된다. 작업 그룹을 구성하는 웨이브프론트 각각을 실행함으로써 작업 그룹은 실행된다. 대안적으로, 파면은 단일 SIMD 유닛(138) 상에서 순차적으로 또는 상이한 SIMD 유닛(138) 상에서 부분적으로 또는 완전히 병렬로 실행된다. 파면은 단일 SIMD 유닛(138) 상에서 동시에 실행될 수 있는 작업-항목의 가장 큰 집합으로 생각될 수 있다. 따라서, 프로세서(102)로부터 수신된 명령이, 프로그램이 단일 SIMD 유닛(138) 상에서 동시에 실행될 수 없는 정도로 특정 프로그램이 병렬화되어야 함을 표시하는 경우, 해당 프로그램은 2개 이상의 SIMD 유닛(138) 상에 병렬화되거나 동일한 SIMD 유닛(138) 상에 직렬화되는 (또는 필요에 따라 병렬화 및 직렬화 모두) 파면으로 분할된다. 스케줄러(136)는 상이한 계산 유닛(132) 및 SIMD 유닛(138) 상의 다양한 파면을 스케줄링하는 것에 관련된 동작을 수행하도록 구성된다.
계산 유닛(132)에 의해 제공되는 병렬성은 픽셀 값 계산, 정점 변환 및 다른 그래픽 동작과 같은 그래픽 관련 동작에 적합하다. 따라서, 일부 경우에서, 프로세서(102)로부터 그래픽 처리 명령을 수용하는 그래픽 파이프라인(134)은 병렬로 실행하기 위해 계산 유닛(132)에 계산 작업을 제공한다.
계산 유닛(132)은 또한 그래픽과 관련되지 않거나 그래픽 파이프라인(134)의 "정상(normal)" 동작의 일부로서 수행되지 않는 계산 작업(예를 들어, 그래픽 파이프라인(134)의 동작을 위해 수행되는 처리를 보완하기 위해 수행된 커스텀 동작)을 수행하는 데 사용된다. 프로세서(102) 상에서 실행되는 애플리케이션(126) 또는 다른 소프트웨어는 이러한 계산 작업을 정의하는 프로그램을 실행을 위해 APD(116)에 전송한다.
계산 유닛(132)은 장면에서 시뮬레이션된 광선과 객체 사이의 교차점을 테스트함으로써 3D 장면을 렌더링하는 기술인 광선 추적을 구현한다. 광선 추적에 수반되는 많은 작업은, 아래에서 추가로 상세히 설명되는 바와 같이, 계산 유닛(132)의 SIMD 유닛(138) 상에서 실행되는, 프로그래밍 가능한 셰이더 프로그램에 의해 수행된다.
도 3은, 일례에 따른, 광선 추적 기술을 사용하여 그래픽을 렌더링하기 위한 광선 추적 파이프라인(300)을 도시한다. 광선 추적 파이프라인(300)은 광선 추적을 이용하여 장면을 렌더링하는 데 수반되는 동작 및 엔티티의 개요를 제공한다. 일부 구현예에서, 광선 생성 셰이더(302), 임의의 히트 셰이더(306), 가장 가까운 히트 셰이더(310), 및 미스 셰이더(312)는 기능이 SIMD 유닛(138) 상에서 실행되는 셰이더 프로그램에 의해 수행되는 광선 추적 파이프라인 단계를 나타내는 셰이더-구현 단계이다. 각각의 특정 셰이더-구현 단계에서의 임의의 특정 셰이더 프로그램은 애플리케이션-제공 코드에 의해 (즉, 애플리케이션 컴파일러에 의해 미리 컴파일되고/되거나 드라이버(122)에 의해 컴파일되는 애플리케이션 개발자에 의해 제공되는 코드에 의해) 정의된다. 다른 구현예에서, 임의의 광선 생성 셰이더(302), 임의의 히트 셰이더(306), 가장 가까운 히트 셰이더(310), 및 미스 셰이더(312)는 임의의 유형의 프로세서 상에서 실행되고 본원에 설명된 동작을 수행하는 소프트웨어, 본원에 설명된 동작을 수행하는 회로, 또는 프로세서 상에서 실행되는 소프트웨어와 하드웨어 회로의 조합으로 구현된다. 가속 구조 순회 단계(304)는 광선이 삼각형에 충돌하는지 여부를 결정하기 위해 광선 교차 테스트를 수행한다.
광선 추적 파이프라인(300)은 광선 추적 동작이 흐르는 경로를 나타낸다. 광선 추적을 사용하여 장면을 렌더링하기 위해, 프로세서(102) 상에서 실행되는 프로그램과 같은 렌더링 오케스트레이터는 지오메트리의 집합을 "장면(scene)"으로 지정한다. 장면에서 다양한 객체는 종종 삼각형인 지오메트리 프리미티브의 집합으로 표현되지만, 임의의 지오메트리 형상일 수 있다. 본원에서 사용될 때 용어 "삼각형"은 장면을 구성하는 이러한 지오메트리 프리미티브를 지칭한다. 렌더링 오케스트레이터는 카메라 위치 및 이미지를 지정하고, 이미지를 통해 카메라에서 광선을 추적하도록 요청하여 장면을 렌더링한다. 광선 추적 파이프라인(300)은 본원에 설명된 다양한 동작을 수행하여 광선에 대한 색상을 결정한다. 색상은 종종 광선에 의해 교차되는 삼각형으로부터 유래된다. 본원의 다른 곳에서 설명된 바와 같이, 삼각형을 히트하지 못한 광선은 미스 셰이더(312)를 호출한다. 미스 셰이더(312)에 대한 하나의 가능한 동작은 "스카이박스(skybox)"로부터의 색상으로 광선을 색상화하는 것인데, 이는 지오메트리가 존재하지 않는 주변 장면을 나타내는 것으로 지정된 이미지이다(예를 들어, 지오메트리가 없는 장면은 스카이박스만을 렌더링할 것이다). 이미지에서 픽셀에 대한 색상은 광선과 이미지 위치 사이의 교차점에 기초하여 결정된다. 일부 예에서, 충분한 수의 광선이 추적되고 이미지의 픽셀이 색상으로 지정된 후, 이미지는 화면에 표시되거나 일부 다른 방식으로 사용된다.
광선 추적 파이프라인(300)의 셰이더 단계가 소프트웨어로 구현되는 일부 구현예에서, 다양한 프로그래밍 가능한 셰이더 단계(광선 생성 셰이더(302), 임의의 히트 셰이더(306), 가장 가까운 히트 셰이더(310), 미스 셰이더(312))가 SIMD 유닛(138) 상에서 실행되는 셰이더 프로그램으로 구현된다. 가속 구조 순회 단계(304)는 소프트웨어로(예를 들어, SIMD 유닛(138) 상에서 실행되는 셰이더 프로그램으로), 하드웨어로, 또는 하드웨어와 소프트웨어의 조합으로 구현된다. 히트 또는 미스 유닛(308)은 임의의 기술적으로 실현가능한 방식으로, 예컨대 임의의 다른 유닛의 일부로 구현되거나, 하드웨어 가속 구조로 구현되거나, SIMD 유닛(138) 상에서 실행되는 셰이더 프로그램으로 구현된다. 광선 추적 파이프라인(300)은, 다양한 구현예에서, 부분적으로 또는 완전히 소프트웨어로 또는 부분적으로 또는 완전히 하드웨어로 오케스트레이션되고, 프로세서(102), 스케줄러(136)에 의해, 이들의 조합에 의해, 또는 부분적으로 또는 완전히 임의의 다른 하드웨어 및/또는 소프트웨어 유닛에 의해 오케스트레이션될 수 있다. 예에서, 광선 추적 파이프라인(300)을 통한 순회는 자율적으로 또는 프로세서(102)의 제어 하에 스케줄러(136)에 의해 부분적으로 또는 완전히 수행되거나, 또는 하나 이상의 SIMD 유닛(138) 상에서 실행되는 셰이더 프로그램(예컨대, 경계 볼륨 계층구조 순회 셰이더 프로그램)에 의해 부분적으로 또는 완전히 수행된다. 일부 예에서, (가속 구조 순회 단계(304) 내부의) 박스 및 삼각형에 대한 광선을 테스트하는 것은 하드웨어 가속이다(고정 기능 하드웨어 유닛이 이러한 테스트에 대한 단계를 수행함을 의미함). 다른 예에서, 이러한 테스트는 하나 이상의 SIMD 유닛(138) 상에서 실행되는 셰이더 프로그램과 같은 소프트웨어에 의해 수행된다. 본원에서, 어구 "광선 추적 파이프라인이 [조치를] 한다"가 사용되는 경우, 이는 광선 추적 파이프라인(300)을 구현하는 하드웨어 및/또는 소프트웨어가 해당 조치를 한다는 것을 의미한다. 도 3의 SIMD 유닛(138) 상에서 실행되는 것으로 설명되었지만, 다른 구현예에서, SIMD 능력을 갖거나 갖지 않는 다른 하드웨어(예를 들어, 프로세서(102))는 대안적으로 예시된 광선 추적 파이프라인(300)의 셰이더 프로그램을 실행하는 것으로 이해되어야 한다.
광선 추적 파이프라인(300)은 다음 방식으로 동작한다. 광선 생성 셰이더(302)가 수행된다. 광선 생성 셰이더(302)는 광선에 대한 데이터를 설정하여 삼각형에 대해 테스트하고, 가속 구조 순회 단계(304)에 삼각형과 교차에 대해 광선을 테스트하도록 요청한다.
가속 구조 순회 단계(304)는 장면 내의 장면 볼륨 및 객체(예컨대, 삼각형)를 설명하는 데이터 구조인 가속 구조를 순회하여, 장면 내의 삼각형에 대해 광선을 테스트한다. 다양한 예에서, 가속 구조는 경계 볼륨 계층구조이다. 일부 구현예에서, 가속 구조 순회 단계(304)의 일부인 히트 또는 미스 유닛(308)은 (무게중심 좌표 및 잠재적 히트 시간과 같은 원시 데이터를 포함할 수 있는) 가속 구조 순회 단계(304)의 결과가 실제로 히트를 나타내는지 여부를 결정한다. 히트된 삼각형의 경우, 광선 추적 파이프라인(300)은 임의의 히트 셰이더(306)의 실행을 트리거한다. 다수의 삼각형이 단일 광선에 의해 히트될 수 있다는 것에 유의한다. 가속 구조 순회 단계가 광원에 가장 가까운 것에서 광원에 가장 먼 것의 순서로 가속 구조를 순회할 것은 보장되지 않는다. 히트 또는 미스 유닛(308)은 광선이 히트하는 광원에 가장 가까운 삼각형에 대한 가장 가까운 히트 셰이더(310)의 실행을 트리거하거나, 또는 어떠한 삼각형도 히트되지 않은 경우, 미스 셰이더를 트리거한다.
임의의 히트 셰이더(306)가 광선 교차 테스트 유닛(304)으로부터 히트를 "거절"하는 것이 가능하고, 따라서 광선 교차 테스트 유닛(304)에 의해 어떠한 히트도 발견되거나 허용되지 않는 경우, 히트 또는 미스 유닛(308)은 미스 셰이더(312)의 실행을 트리거하는 것에 유의한다. 임의의 히트 셰이더(306)가 히트를 "거절"할 수 있는 예시적인 상황은, 광선 교차 테스트 유닛(304)이 히트된 것으로 보고하는 삼각형의 적어도 일부가 완전히 투명한 때이다. 광선 교차 테스트 유닛(304)은 지오메트리만 테스트하고, 투명도는 테스트하지 않기 때문에, 적어도 약간의 투명도를 갖는 삼각형에 대한 히트로 인해 호출되는 임의의 히트 셰이더(306)는 보고된 히트가 삼각형의 투명 부분 상의 "히트"로 인해 실제로는 히트가 아니라고 결정할 수 있다. 가장 가까운 히트 셰이더(310)에 대한 통상적인 사용은 재료에 대한 텍스처에 기초하여 재료를 색상화하는 것이다. 미스 셰이더(312)에 대한 통상적인 사용은 스카이박스에 의해 설정된 색상으로 픽셀을 색상화하는 것이다. 가장 가까운 히트 셰이더(310) 및 미스 셰이더(312)는 픽셀을 색상화하고/하거나 다른 동작을 수행하기 위한 매우 다양한 기술을 구현할 수 있다는 것을 이해해야 한다. 이러한 셰이더가 셰이더 프로그램을 실행하는 프로그래밍 가능한 셰이더 단계로 구현되는 경우에서, 동일한 애플리케이션에 대해 사용되는 상이한 셰이더 프로그램은 상이한 방식으로 픽셀을 색상화할 수 있다.
광선 생성 셰이더(302)가 광선을 생성하는 통상적인 방식은 역방향 광선 추적으로 지칭되는 기술을 사용하는 것이다. 역방향 광선 추적에서, 광선 생성 셰이더(302)는 카메라의 지점에서 원점을 갖는 광선을 생성한다. 광선이 화면에 대응하도록 정의된 평면과 교차하는 지점은 광선이 색상을 결정하는 데 사용되는 화면 상의 픽셀을 정의한다. 광선이 객체를 히트하면, 해당 픽셀은 가장 가까운 히트 셰이더(310)에 기초하여 색상화된다. 광선이 객체를 히트하지 않으면, 픽셀은 미스 셰이더(312)에 기초하여 색상화된다. 다수의 광선이 픽셀당 투사될 수 있으며, 픽셀의 최종 색상은 픽셀의 광선 각각에 대해 결정된 색상의 일부 조합에 의해 결정된다. 본원의 다른 곳에서 설명된 바와 같이, 개별 광선이 다수의 샘플을 생성하는 것이 가능하며, 각각의 샘플은 광선이 삼각형을 히트하는지 또는 삼각형을 히트하지 않는지 여부를 나타낸다. 일례에서, 4개의 샘플로 광선이 투사된다. 2 개의 이러한 샘플은 삼각형을 히트하고 2개는 그렇지 않다. 따라서, 삼각형 색상은 픽셀의 최종 색상에 부분적으로만 (예를 들어, 50%) 기여하며, 색상의 다른 부분은 다른 샘플에 의해 히트된 삼각형에 기초하여 결정되거나, 또는 삼각형이 히트되지 않은 경우, 미스 셰이더에 의해 결정된다. 일부 예에서, 장면을 렌더링하는 것은 각각의 픽셀에 대한 색상을 획득하기 위해 이미지의 복수의 픽셀 각각에 대한 적어도 하나의 광선을 투사하는 것을 포함한다. 일부 예에서, 다중 샘플 렌더 타깃에 대한 픽셀 당 다수의 색상을 얻기 위해 각각의 픽셀에 대해 다수의 광선이 투사된다. 일부 이러한 예에서, 나중에, 다중 샘플 렌더 타깃은 색상 블렌딩을 통해 압축되어 디스플레이 또는 추가 처리를 위해 단일 샘플 이미지를 얻는다. 픽셀당 다수의 광선을 투사함으로써 픽셀 당 다수의 샘플을 얻는 것이 가능하지만, 하나의 광선만 투사하여 픽셀 당 다수의 샘플이 얻어지도록 광선당 다수의 샘플을 얻기 위한 기술이 본원에 제공된다. 픽셀 당 추가 샘플을 얻기 위해 이러한 작업을 여러 번 수행할 수 있다. 보다 구체적으로, 픽셀당 획득된 샘플의 총 수가 픽셀당 광선의 수를 곱한 광선당 샘플의 수이도록, 픽셀당 다수의 광선을 투사하고 광선당 다수의 샘플을 얻는 것이 가능하다.
임의의 히트 셰이더(306), 가장 가까운 히트 셰이더(310), 및 미스 셰이더(312) 중 임의의 것이, 광선 테스트 지점에서 광선 추적 파이프라인(300)에 들어가는, 자체 광선을 생성하는 것이 가능하다. 이들 광선은 임의의 목적을 위해 사용될 수 있다. 하나의 일반적인 사용은 환경 조명 또는 반사를 구현하는 것이다. 일례에서, 가장 가까운 히트 셰이더(310)가 호출될 때, 가장 가까운 히트 셰이더(310)는 다양한 방향으로 광선을 생성한다. 생성된 광선에 의해 히트되는 각각의 객체 또는 광에 대해, 가장 가까운 히트 셰이더(310)는 조명 강도 및 색상을 가장 가까운 히트 셰이더(310)에 대응하는 픽셀에 추가한다. 광선 추적 파이프라인(300)의 다양한 구성요소가 장면을 렌더링하는 데 사용될 수 있는 방식의 일부 예가 설명되었지만, 매우 다양한 기술 중 임의의 것이 대안적으로 사용될 수 있다는 것을 이해해야 한다.
상술한 바와 같이, 광선이 객체를 히트하는지 여부의 결정은 본원에서 "광선 교차 테스트"로 지칭된다 광선 교차 테스트는 원점으로부터 광선을 발사하는 단계 및 광선이 삼각형을 히트하는지 여부를 그리고, 만약 그렇다면, 원점으로부터 어떤 거리에서 삼각형을 히트하는지 결정하는 단계를 포함한다. 효율을 위해, 광선 추적 테스트는 경계 볼륨 계층구조로 지칭되는 공간의 표현을 사용한다. 이러한 경계 볼륨 계층구조는 상술한 "가속 구조"이다. 경계 볼륨 계층구조에서, 각각의 비-리프 노드는 해당 노드의 모든 자식 지오메트리를 경계로 하는 축 정렬된 경계 박스를 나타낸다. 일례에서, 베이스 노드는 광선 교차 테스트가 수행되고 있는 전체 영역의 최대 범위를 나타낸다. 이 예에서, 베이스 노드는 전체 영역을 세분하는 상호 배타적인 축 정렬된 경계 박스를 각각 나타내는 2개의 자식을 갖는다. 이들 2개의 자식 각각은 그들의 부모의 공간을 세분하는 축 정렬된 경계 박스를 나타내는 2개의 자식 노드를 가지며, 등등이다. 리프 노드는 광선 테스트가 수행될 수 있는 삼각형을 나타낸다.
경계 볼륨 계층구조 데이터 구조는, 이러한 데이터 구조가 사용되지 않아서 장면의 모든 삼각형이 광선에 대해 테스트되어야 하는 시나리오와 비교하여 (복잡하고 이에 따라 처리 자원의 관점에서 고가인) 광선-삼각형 교차점의 수를 줄일 수 있게 한다. 구체적으로, 광선이 특정 경계 박스와 교차하지 않고, 해당 경계 박스가 많은 수의 삼각형 경계를 이루는 경우, 해당 박스의 모든 삼각형은 테스트로부터 제거될 수 있다. 따라서, 광선 교차 테스트는 축-정렬된 경계 박스에 대한 광선 테스트의 시퀀스로서 수행되고, 이어서 삼각형에 대해 테스트된다.
도 4는, 일례에 따른, 경계 볼륨 계층구조의 예시이다. 단순화를 위해, 계층구조가 2D로 도시된다. 그러나, 3D로의 확장은 간단하며, 본원에 설명된 테스트는 일반적으로 3차원으로 수행될 것임을 이해해야 한다.
경계 볼륨 계층구조의 공간적 표현(402)은 도 4의 좌측에 도시되고, 경계 볼륨 계층구조의 트리 표현(404)은 도 4의 우측에 도시되어 있다. 공간 표현(402) 및 트리 표현(404) 모두에서, 비-리프 노드는 문자 "N" 으로 표현되고, 리프 노드는 문자 "O" 로 표현된다. 광선 교차 테스트는 트리(404)를 통해 순회함으로써 수행될 것이고, 각각의 비-리프 노드가 테스트되는 경우, 해당 비-리프 노드에 대한 박스 테스트가 실패하면 해당 노드 아래의 분기를 제거한다. 제거되지 않은 리프 노드의 경우, 광선-삼각형 교차 테스트가 수행되어 광선이 해당 리프 노드에서 삼각형과 교차하는지 여부를 결정한다. 제거되지 않은 비-리프 노드들의 경우, 광선 교차 테스트는 이러한 노드들의 자식들이 고찰로부터 제거되어야 하는지 여부를 결정하기 위해, 이러한 제거되지 않은 노드들과 광선을 교차시킬 것이다. 제거되는 리프 노드들 또는 비-리프 노드들의 경우, 광선 교차 테스트는 이러한 노드들과 광선의 교차 테스트를 수행하지 않는다. 요약하면, 광선에 대한 교차 테스트를 수행하기 위해, 광선 추적 파이프라인(300)은 하나 이상의 시작 비-리프 노드로 시작하고, 광선과의 교차에 대해 이들 비-리프 노드 중 하나 이상을 테스트한다. 광선 추적 파이프라인(300)은 경계 볼륨 계층구조의 에지들을 따라, 광선에 대해 비-리프 노드를 테스트하여 이들 노드의 자식들을 제거하거나 또는 제거하지 않는다. 광선 추적 파이프라인(300)이 마주치는 리프 노드들의 경우, 광선 추적 파이프 라인(300)은 이러한 노드들에 대해 광선을 테스트하여 광선이 이러한 리프 노드들과 연관된 지오메트리와 교차하는지 여부를 결정한다.
일례에서, 광선은 O5와 교차하지만 다른 삼각형은 아니다. 테스트는 N1에 대해 테스트하여, 해당 테스트가 성공함을 판단한다. 테스트는 N2에 대해 테스트하여, 테스트가 실패함을 판단한다(O5가 N1 내에 있지 않기 때문이다). 테스트는 N2의 모든 하위 노드를 제거하고 N3에 대해 테스트하여, 해당 테스트가 성공함을 주목한다. 테스트는 N6과 N7을 테스트하여, N6은 성공하지만 N7은 실패함을 주목한다. 테스트는 O5와 O6을 테스트하여, O5는 성공하지만 O6은 실패함을 주목한다. 8개의 삼각형 테스트를 테스트하는 대신에, 2개의 삼각형 테스트(O5 및 O6) 및 5개의 박스 테스트(N1, N2, N3, N6 및 N7)가 수행된다.
본원에서 설명된 바와 같이, 비-리프 노드들은 이들 비-리프 노드들의 자식들의 지오메트리를 경계로 하는 경계 박스들과 연관된다. 리프 노드들은 광선들이 테스트되는 장면의 지오메트리와 연관된다. 다양한 지오메트리 유형들이 존재할 수 있다. 리프 노드들에 대한 일부 예시적인 지오메트리 유형들은 삼각형들 및 프로시저 지오메트리이지만, 이것이 완전한 리스트는 아니다. 프로시저 지오메트리는 광선과의 교차가 데이터로서가 아니라, 프로시저로 정의되는 지오메트리이다. 보다 구체적으로, 프로시저 지오메트리는 리프 노드들과 연관되고, 광선이 이러한 리프 노드들의 지오메트리에 히트하는지 여부를 결정하기 위해 광선이 테스트되는 지오메트리를 나타낸다. 경계 볼륨 계층구조를 순회하는 프로세스에서, 광선 추적 파이프라인(300)이 연관된 프로시저 지오메트리를 갖는 리프 노드를 마주치는 것에 응답하여, 광선 추적 파이프라인(300)은 광선이 해당 프로시저 지오메트리와 교차하는지 여부를 결정하기 위해, 셰이더 프로그램에서 (또는 다른 수단들을 통해) 특정된 것과 같은 프로시저의 실행을 트리거한다. 이에 따라, 프로시저와의 교차에 대한 테스트는 프로시저로 정의된다.
도 5는 일례에 따른, 가속 구조 순회 스테이지(500)의 블록도이다. 일부 구현예에서, 도 3의 가속 구조 순회 스테이지(304)는 도 5의 가속 구조 순회 스테이지(500)이다.
가속 구조 순회 스테이지(500)는 순회 유닛(502) 및 교차 유닛(504)을 포함한다. 순회 유닛(502)은 장면에서의 지오메트리와의 교차에 대해 광선을 테스트하기 위한 요청을 수용한다. 순회 유닛(502)은 가속 구조(506)의 노드들을 순회하여, 가속 구조(506)로부터 노드 데이터를 요청 및 획득하고, 교차 테스트들이 교차 유닛(504)에서 수행될 것을 요청한다. 교차 유닛(504)은 순회 유닛(502)에 대해 요청된 교차 테스트들을 수행하고, 교차 테스트들의 결과들을 순회 유닛(502)에 반환한다.
일례에서, 순회 유닛(502)은 가속 구조(506)에 의해 표현되는 장면의 지오메트리와의 교차에 대해 테스트하기 위해 광선을 수신한다. 순회 유닛(502)은 가속 구조(506)로부터 제1 비-리프 노드(예를 들어, 도 4의 경계 볼륨 계층(404)으로부터의 N2)를 판독하고, 교차 유닛(504)이 해당 노드의 지오메트리에 대해 광선을 테스트할 것을 요청한다. 교차 유닛(504)은 해당 테스트를 수행하고, 테스트 결과를 순회 유닛에 반환한다. 결과는 광선이 박스와 교차하지 않음을 나타내고, 이에 따라 비-리프 노드의 자식들을 고찰로부터 제거한다. 후속해서, 순회 유닛(502)은 가속 구조(506)로부터 또 다른 비-리프 노드(예를 들어, N3)를 판독하고, 교차 유닛(504)이 해당 노드의 지오메트리에 대해 광선을 테스트할 것을 요청한다. 교차 유닛(504)은 해당 테스트를 수행하고, 테스트 결과를 순회 유닛(502)에 반환한다. 테스트 결과는 광선이 해당 노드와 연관된 박스와 교차함을 나타내고, 이에 따라 순회 유닛(502)이 해당 비-리프 노드(본 예에서, 노드들 N6 및 N7)의 자식들을 테스트하는 것을 계속한다.
다양한 구현예에서, 순회 유닛(502) 및 교차 유닛(504)은 프로그래밍 가능한 프로세서, 하드-와이어드 회로, 또는 이들의 조합 상에서 실행되는 소프트웨어로서 구현된다. 하나의 예시적인 구현예에서, 순회 유닛(502)은 하나 이상의 계산 유닛(132) 상에서 실행되는 셰이더 프로그램("순회 셰이더 프로그램")이다. 교차 유닛(504)은 광선-삼각형 및 광선-박스 교차 테스트들과 같은 교차 테스트들을 수행하도록 구성된 전용 하드웨어 회로이다. 순회 셰이더 프로그램은 교차 유닛(504)이 광선에 대한 교차 테스트를 수행할 것을 요청하기 위한 적어도 하나의 명령어를 포함하는 명령어 세트 아키텍처의 명령어들을 실행한다. 일부 구현예에서, 프로시저 지오메트리의 경우, 순회 셰이더 프로그램은 프로시저 지오메트리에 대해 광선을 테스트하기 위한 명령어들의 세트의 실행을 트리거한다. 다른 구현예들에서, 순회 유닛(502)은 본원에서 설명되는 동작들을 수행하는 하드-와이어드 회로 유닛이다.
일부 상황들에서, 애플리케이션, 또는 본원에서 설명된 셰이더 프로그램들 또는 하드웨어 유닛들 중 임의의 것과 같은 컬링-요청 엔티티는 특정 유형들의 지오메트리가 장면으로부터 컬링될 것을 요청한다. 컬링은 장면에 지오메트리가 존재하더라도, 지오메트리가 렌더링되지 않는다는 것을 의미한다. 경계 볼륨 계층구조에 관하여, 컬링될 지오메트리는 리프 노드들에 의해 특정된(또는 리프 노드들과 연관된) 지오메트리이다. 경계 볼륨 계층구조의 순회 및 경계 볼륨 계층구조의 노드들에 대한 광선을 테스트하는 것을 수반하는 광선에 대한 광선 교차 테스트 동안, 순회 유닛(502)은 컬링될 지오메트리를 광선에 의해 교차되지 않는 것으로서 고찰한다.
다양한 상황들에서, 하나보다 많은 컬링 엔티티들은 특정 지오메트리 유형들이 컬링될 것을 요청한다. 이러한 상황들에서, 광선 추적 파이프라인(300)은 요청된 유형들 모두의 지오메트리를 컬링한다. 일부 구현예에서, 컬링될 수 있는 지오메트리의 유형들은 불투명 지오메트리, 비-불투명 지오메트리, 삼각형들, 또는 프로시저 지오메트리를 포함한다.
광선 교차 테스트 동안, 해당 지오메트리가 컬링-요청 엔티티가 컬링될 것을 요청한 유형이라는 것을 주목하고, 이에 응답하여, 해당 지오메트리에 대한 광선의 교차 테스트를 수행하지 않고 광선이 해당 지오메트리와 교차하지 않는다고 결정함으로써, 특정 리프 노드 지오메트리를 컬링하는 것이 가능하다. 보다 구체적으로, 광선 추적 파이프라인(300)은 컬링되는 지오메트리가 렌더링되지 않아야 한다고 결정한다. 유사하게, 광선이 지오메트리와 교차하지 않는다면, 해당 지오메트리는 렌더링되지 않는다. 이에 따라, 지오메트리가 컬링된다는 결정은 지오메트리가 광선에 의해 교차되지 않는다는 결정과 동일한 효과를 갖는다.
또한, 특정 상황들에서, 비-리프 노드의 모든 후손들이 하나 이상의 컬링-요청 엔티티가 컬링될 것을 요청한 유형을 갖는다는 결정에 기초하여 비-리프 노드를 컬링하는 것이 가능하다. 일례에서, 박스 노드의 모든 자식들은 불투명하고, 컬링-요청 엔티티는 불투명 지오메트리가 컬링될 것을 요청하였다. 이러한 상황에서, 실제 교차 테스트를 수행하지 않고, 또는 이러한 교차 테스트가 광선이 비-리프 노드와 교차한다고 결정하더라도, 비-리프 노드를 교차되지 않는 것으로서 취급함으로써 이러한 비-리프 노드를 컬링하는 것이 가능하다.
도 6a는 일례에 따른, 경계 볼륨 계층구조 노드들의 초기 컬링을 가능하게 하기 위해 비-리프 노드들에서의 유형 메타데이터를 포함하는 경계 볼륨 계층(600)의 블록도이다. 경계 볼륨 계층구조(600)는 비-리프 노드들(602), 및 리프 노드들(606)을 포함한다. 비-리프 노드들(602)은 자식 유형 메타데이터(604)를 포함하고, 리프 노드들(606)은 리프 노드 유형 데이터(608)와 연관된다.
리프 노드 유형 데이터(608)는 연관된 리프 노드(606)의 유형을 나타낸다. 본원의 다른 곳에서 설명된 바와 같이, 일부 구현예에서, 유형들은 리프 노드가 어떤 지오메트리(예를 들어, 삼각형 또는 프로시저형)인지, 및 리프 노드가 불투명인지 또는 비-불투명인지와 같은 양태들을 포함한다. 임의의 다른 리프 노드 유형들이 가능하다. 일례에서, 리프 노드는 임의의 애플리케이션-정의 마스킹 정보를 포함한다. 일례에서, 이러한 마스킹 정보는 전경 및 배경 객체들과 같은 렌더링에서의 상이한 계층들을 정의한다. 이러한 예에서, 노드들은 배경 또는 전경 중 어느 하나이고, 유형들은 배경 또는 전경 중 어느 하나를 포함한다. 다른 유사한 애플리케이션-정의 유형 정보가 사용될 수 있다.
비-리프 노드들(602)과 연관된 자식 유형 메타데이터(604)는 비-리프 노드(602)의 각 리프 노드 후손이 특정 리프 노드 유형을 갖는지 여부를 나타낸다. 보다 구체적으로, 주어진 비-리프 노드(602)에 대한 자식 유형 메타데이터(604)는 하나 이상의 리프 노드 유형에 대해, 그 주어진 비-리프 노드(602)의 각 리프 노드 후손이 그 리프 노드 유형을 갖는지 여부를 나타낸다. 제1 노드는 제1 노드가 제2 노드의 자식인 상황 또는 제1 노드가 제2 노드의 후손의 자식인 상황 중 어느 하나에서 제2 노드의 후손이다.
도 5 및 도 6a를 함께 참조하면, 동작 시, 가속 구조 순회 스테이지(500)는 다음과 같은 방식으로 교차들에 대해 광선을 테스트하기 위한 요청에 응답하여 (이에 제한되지 않지만, 경계 볼륨 계층구조(600)와 같은) 경계 볼륨 계층구조를 통해 순회한다. 순회 유닛(502)은 어느 하나 이상의 리프 노드 유형이 컬링될지를 나타내는 정보를 획득한다. 일례에서, 이러한 정보는 삼각형들을 컬링할지 여부, 프로시저 지오메트리를 컬링할지 여부, 불투명 지오메트리를 컬링할지, 또는 비-불투명 지오메트리를 컬링할지 여부를 포함한다.
어느 하나 이상의 리프 노드 유형이 컬링될지에 관한 정보, 및 교차에 대해 테스트될 광선을 수신하는 것에 응답하여, 순회 유닛(502)은 경계 볼륨 계층구조를 순회한다. 순회 유닛(502)은 어느 리프 노드 유형들이 컬링될지에 관한 정보를 교차 유닛(504)에 제공한다. 순회 유닛(502)은 고찰 중인 (최상위 노드들과 같은) 특정 노드들로 시작하여, 경계 볼륨 계층구조를 순회한다. 고찰 중인 임의의 특정 노드에 대해, 순회 유닛(502)은 해당 노드와의 광선 또는 교차를 테스트하기 위한 요청을 교차 유닛(504)에 송신하며, 이 유닛은 테스트를 수행하고 결과를 순회 유닛(502)에 반환한다. 비-리프 노드(602)의 경우, 교차 유닛(504)으로부터의 결과가 광선이 비-리프 노드(602)와 교차하지 않음을 나타낸다면, 순회 유닛(502)은 해당 비-리프 노드(602)의 임의의 자식을 고찰하지 않는다(여기서, "고찰한다"는 광선과의 교차에 대한 테스트를 의미한다). 교차 유닛(504)이 광선이 비-리프 노드(602)와 교차함을 나타낸다면, 순회 유닛(502)은 해당 비-리프 노드(602)의 자식을 고찰할 수 있게 된다(그리고 특정 상황들에서 고려한다). 교차 유닛(504)이 경계 볼륨 계층구조의 순회를 초기에 종료하는 것과 같은 다른 이유들로 이러한 자식들을 고찰하지 않는 것이 가능하다는 점에 유의한다. 리프 노드(606)의 경우, 교차 테스트의 결과는 이를테면 픽셀에 대한 컬러를 결정함으로써 또는 픽셀에 대한 조명 기여도를 결정함으로써, 임의의 기술적으로 실현가능한 방식으로 렌더링 목적에 이용된다.
컬링이 일어날 적어도 하나의 유형에 매칭하는 메타데이터(604)를 갖는 비-리프 노드들(602)의 경우, 교차 유닛(504)은 지오메트리로, 광선이 실제로 비-리프 노드(602)와 교차하더라도, 광선이 해당 비-리프 노드(602)와 교차하지 않는 결과를 반환한다. 보다 구체적으로, 비-리프 노드(602)의 모든 리프 노드 후손들이 특정 유형을 가짐을 메타데이터(604)가 나타내고, 컬링이 해당 특정 유형의 리프 노드들에 대해 일어난다면, 교차 유닛(504)은 해당 비-리프 노드(602)의 교차가 일어나지 않는다는 것을 순회 유닛(502)에 나타낸다. 이러한 동작은 비-리프 노드(602)의 모든 후손들이 컬링되는 경우 비-리프 노드(602)의 임의의 후손들을 고찰할 이유가 없기 때문에 일어난다.
교차 유닛(504)이 어느 리프 노드 유형들을 컬링할지에 관한 정보를 수신하고, 그 정보에 기초하여 교차 테스트 결과를 순회 유닛(502)에 보고하는 것으로 상술되었지만, 다른 구현예들에서, 순회 유닛(502)은 이러한 정보를 교차 유닛(504)에 제공하지 않는다. 이러한 구현예들에서, 순회 유닛(502)은 비-리프 노드(602)가 광선에 의해 교차되지 않는 것으로서 취급되어야 하는지 여부를 결정하기 위해 비-리프 노드(602)에 대한 메타데이터(604)를 검사한다. 일부 구현예에서, 순회 유닛(502)과 교차 유닛(504)은 동일한 엔티티이다.
경계 볼륨 계층구조(600)의 순회에 대한 특정 순서는 설명되지 않았다는 점에 유의한다. 이는 임의의 기술적으로 실현가능한 순서로 경계 볼륨 계층구조(600)를 순회하는 것이 가능하기 때문이다. 가속 구조는 간단히, 비-리프 노드(602)에 대한 테스트들을 통해 경계 볼륨 계층구조의 특정 노드들을 제거하는 것을 돕는다.
도 6b는 비-리프 노드들(602)에서의 유형 메타데이터(604)를 포함하는 예시적인 경계 볼륨 계층구조(650)를 도시한다. 도시된 메타데이터 및 유형 데이터는 단지 예시를 위한 것이고, 제한하는 것으로 여겨져서는 안 된다. 비-리프 노드(602)에 대한 "(없음)"의 메타데이터는 이용 가능한 삼각형 유형들 중, 비-리프 노드(602)의 모든 후손 리프 노드들(606) 간에 공유되는 삼각형 유형이 없음을 나타낸다.
이 예에서, 8개의 리프 노드(606: 606(11) 내지 606(18))가 있다. 리프 노드(606(11))는 삼각형 및 불투명의 유형 데이터 (608(11))를 갖는다. 리프 노드(606(12))는 삼각형 및 비-불투명의 유형 데이터 (608(12))를 갖는다. 리프 노드(606(13))는 삼각형 및 불투명의 유형 데이터 (608(13))를 갖는다. 리프 노드(606(14))는 프로시저 및 비-불투명의 유형 데이터 (608(14))를 갖는다. 리프 노드(606(15))는 삼각형 및 불투명의 유형 데이터 (608(15))를 갖는다. 리프 노드(606(16))는 삼각형 및 불투명의 유형 데이터 (608(16))를 갖는다. 리프 노드(606(17))는 프로시저 및 불투명의 유형 데이터 (608(17))를 갖는다. 리프 노드(606(18))는 프로시저 및 불투명의 유형 데이터 (608(18))를 갖는다.
비-리프 노드(602(13))는 비-리프 노드(602(13))의 각 후손이 "삼각형" 유형을 공유함을 나타내는 메타데이터(604(13))를 포함한다. 이들 후손들은 "불투명" 또는 "비-불투명" 유형을 공유하지 않기 때문에, 그 정보는 메타데이터(604(13))에 포함되지 않는다. 비-리프 노드(602(14))는 비-리프 노드(602(14))의 모든 후손들 간에 어떠한 유형 데이터도 공유되지 않음을 나타내는 메타데이터(604(14))를 포함한다. 비-리프 노드(602(15))는 비-리프 노드(602(15))의 리프 노드 후손이 "삼각형" 및 "불투명" 유형 데이터(608)를 가짐을 나타내는 메타데이터(604(15))를 포함한다. 비-리프 노드(602(16))는 비-리프 노드(602(16))의 각 리프 노드 후손이 "프로시저" 및 "불투명" 유형 데이터를 가짐을 나타내는 메타데이터(604(16))를 포함한다. 비-리프 노드(602(11))는 비-리프 노드(602(11))의 모든 리프 노드 후손들 간에 어떠한 리프 노드 유형도 공유되지 않음을 나타내는 메타데이터(604(11))를 포함한다. 비-리프 노드(602(12))는 비-리프 노드(602(12))의 모든 리프 노드 후손들이 "불투명"의 리프 노드 유형을 가짐을 나타내는 메타데이터(604(12))를 포함한다.
일례에서, 동작 시, 가속 구조 순회 스테이지(500)는 삼각형들을 컬링하는 것이다. 이러한 예에서, 가속 구조 순회 스테이지(500)는 비-리프 노드(602(13)) 또는 비-리프 노드(602(15))의 후손들 중 어느 것에 대해서도 광선 교차 테스트들을 수행하지 않을 것이다. 다른 예에서, 가속 구조 순회 스테이지(500)는 불투명 지오메트리를 컬링하는 것이다. 이러한 예에서, 가속 구조 순회 스테이지(500)는 비-리프 노드(602(12))의 후손들 중 어느 것에 대해서도 광선 교차 테스트들을 수행하지 않을 것이다. 또 다른 예에서, 가속 구조 순회 스테이지(500)는 불투명 지오메트리 및 삼각형들을 컬링하는 것이다. 이러한 예에서, 가속 구조 순회 스테이지(500)는 비-리프 노드(602(12)) 또는 비-리프 노드(602(13))의 후손들 중 어느 것에 대해서도 광선 교차 테스트들을 수행하지 않을 것이다.
도 7은 일례에 따른 광선 추적 동작을 수행하기 위한 방법(700)의 흐름도이다. 도 1 내지 도 6b의 시스템과 관련하여 설명되었지만, 당업자는 방법(700)의 단계를 임의의 기술적으로 실현가능한 순서로 수행하도록 구성된 임의의 시스템은 본 개시의 범위 내에 속한다는 것을 이해할 것이다.
방법(700)은 특정 비-리프 노드(602)를 고찰하기 위한 단계들을 설명하고, 경계 볼륨 계층구조의 순회 동안 사용된다. 이에 따라, 가속 구조 순회 스테이지(500)가 경계 볼륨 계층구조의 단일 비-리프 노드(602)를 고찰하고 있는 방법(700)이 시작한다.
단계(702)에서, 가속 구조 순회 스테이지(500)는 비-리프 노드(602)에 대한 후손-공유 유형 메타데이터(604)를 판독한다. 다양한 예들에서, 이 메타데이터(604)는 경계 볼륨 계층구조에 대한 다른 정보와 동일한 데이터 구조에 저장되거나 또는 별도로, "사이드-밴드(side-band)" 정보로서 저장된다. 메타데이터는 임의의 특정 리프 노드 유형이 비-리프 노드(602)의 모든 리프 노드 후손들 간에 공유되는지 여부, 그리고 그렇다면, 어떤 리프 노드 유형들이 공유되는지를 나타낸다.
단계(704)에서, 가속 구조 순회 스테이지(500)는 광선 교차 테스트를 위해 하나 이상의 컬링 유형을 결정한다. 보다 구체적으로, 가속 구조 순회 스테이지(500)는 예를 들어, 애플리케이션, 계이더 프로그램, 또는 하드웨어 유닛으로부터, 어떤 유형의 리프 노드들을 컬링할지에 관한 정보를 획득한다. 일부 예에서, 이 정보는 가속 구조 순회 스테이지(500)가 경계 볼륨 계층구조를 순회하기 시작하기 전에 획득된다.
단계(706)에서, 가속 구조 순회 스테이지(500)는 하나 이상의 컬링 유형이 후손-공유 유형 메타데이터의 적어도 하나의 유형을 포함하는지 여부에 기초하여 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부를 결정한다. 메타데이터(604)가 컬링될 적어도 하나의 유형을 포함하는 경우에, 가속 구조 순회 스테이지(500)는 비-리프 노드(602)의 어떠한 자식도 순회되지 않아야 한다고 결정한다. 일부 구현예에서, 가속 구조 순회 스테이지(500)는 광선의 지오메트리가 비-리프 노드(602)와 연관된 지오메트리와 실제로 교차하더라도, 비-리프 노드(602)를 광선에 의해 교차되지 않는 것으로서 취급한다. 메타데이터(604)가 컬링될 유형을 포함하지 않는 경우에, 가속 구조 순회 스테이지(500)는 통상 광선-박스 교차 테스트를 수행하여, (예를 들어, 교차 테스트가 광선이 비-리프 노드(602)와 교차한다고 결정한다면 비-리프 노드(602)의 자식 노드들을 고찰하거나, 또는 교차 테스트가 광선이 비-리프 노드(602)와 교차하지 않는다고 결정한다면 이들 자식 노드들을 고찰로부터 제거함) 통상과 같이 가속 구조 순회를 진행한다.
도면에 예시된 각각의 유닛은 본원에 설명된 동작을 수행하도록 구성된 하드웨어 회로, 본원에 설명된 동작을 수행하도록 구성된 소프트웨어, 또는 본원에 설명된 단계를 수행하도록 구성된 소프트웨어와 하드웨어의 조합을 나타낸다. 예를 들어, 가속 구조 순회 단계(304)는 완전히 하드웨어로, 완전히 처리 유닛(예컨대, 계산 유닛(132)) 상에서 실행되는 소프트웨어로, 또는 이들의 조합으로 구현된다. 일부 예에서, 가속 구조 순회 단계(304)는 부분적으로 하드웨어로 그리고 부분적으로 소프트웨어로 구현된다. 일부 예에서, 경계 볼륨 계층구조를 순회하는 가속 구조 순회 단계(304)의 부분은 프로세서 상에서 실행되는 소프트웨어이고, 광선-박스 교차 테스트 및 광선-삼각형 교차 테스트를 수행하는 가속 구조 순회 단계(304)의 부분은 하드웨어로 구현된다. 또한, 광선 추적 파이프라인(300)의 스테이지들 중 임의의 것은 다양한 구현예에서, 하드웨어 회로, 프로세서 상에서 실행되는 소프트웨어, 또는 이들의 조합으로서 구현된다. 또한, 도 1 또는 도 2의 유닛들 중 임의의 것은 다양한 구현예에서, 하드웨어 회로, 프로세서 상에서 실행되는 소프트웨어, 또는 이들의 조합으로서 구현된다. 광선 추적 파이프라인(300)의 특정 단계가 "호출됨"이라고 하는 경우, 이러한 호출은, 단계가 하드웨어 회로로서 구현되는 경우, 하드웨어의 기능을 수행하는 것을, 또는 단계가 프로세서 상에서 실행되는 셰이더 프로그램으로 구현되는 경우, 셰이더 프로그램(또는 다른 소프트웨어)을 실행하는 것을 수반한다.
본원의 개시에 기초하여 많은 변형이 가능하다는 것을 이해해야 한다. 특징 및 요소가 특정 조합으로 위에서 설명되어 있지만, 각각의 특징 또는 요소는 다른 특징 및 요소 없이 단독으로 또는 다른 특징 및 요소와 함께 또는 이것 없이 다양한 조합으로 사용될 수 있다.
제공된 방법은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서는, 예를 들어, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 관련된 하나 이상의 마이크로프로세서, 제어기, 마이크로컨트롤러, ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 회로, 임의의 다른 유형의 IC(integrated circuit) 및/또는 상태 기계를 포함한다. 이러한 프로세서는 처리된 HDL(hardware description language) 명령어의 결과 및 넷리스트(예컨대 컴퓨터 판독가능 매체에 저장될 수 있는 명령어)를 포함하는 다른 중간 데이터를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 처리의 결과는 구현예의 양태를 구현하는 프로세서를 제조하기 위해 반도체 제조 공정에서 사용되는 마스크작업일 수 있다.
본원에 제공된 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독가능 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어에서 구현될 수 있다. 비일시적 컴퓨터 판독가능 저장 매체의 예는 ROM(read only memory), RAM(random access memory), 레지스터, 캐시 메모리, 반도체 메모리 장치, 내부 하드 디스크 및 탈착식 디스크와 같은 자기 매체, 자기 광학 매체, 및 CD-ROM 디스크 및 DVD(digital versatile disk)와 같은 광학 매체를 포함한다.

Claims (20)

  1. 광선 추적 동작을 수행하기 위한 방법으로서,
    경계 볼륨 계층구조의 비-리프 노드에 대한 후손-공유 유형 메타데이터를 판독하는 단계;
    광선에 대한 광선 교차 테스트를 위한 하나 이상의 컬링 유형을 식별하는 단계; 및
    상기 하나 이상의 컬링 유형이 상기 후손-공유 유형 메타데이터에 의해 특정된 적어도 하나의 유형을 포함하는지 여부에 기초하여 상기 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부를 결정하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 컬링 유형은 상기 후손-공유 유형 메타데이터에 의해 특정된 적어도 하나의 유형을 포함하고;
    상기 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부를 결정하는 단계는 상기 비-리프 노드를 교차되지 않는 것으로서 취급하도록 결정하는 단계를 포함하는 것인, 방법.
  3. 제1항에 있어서,
    상기 하나 이상의 컬링 유형은 상기 후손-공유 유형 메타데이터에 의해 특정된 어느 유형도 포함하지 않고;
    상기 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부를 결정하는 단계는 상기 비-리프 노드를 교차되지 않는 것으로서 취급하도록 결정하지 않는 단계를 포함하는 것인, 방법.
  4. 제1항에 있어서,
    상기 하나 이상의 컬링 유형은 삼각형, 프로시저 지오메트리, 불투명 지오메트리, 및 비-불투명 지오메트리 중 하나 이상을 포함하는 것인, 방법.
  5. 제1항에 있어서,
    상기 비-리프 노드를 교차되지 않는 것으로 처리하는 단계는 상기 비-리프 노드가 상기 광선과 교차되지 않는다는 표시를 생성하는 단계를 포함하는 것인 방법.
  6. 제5항에 있어서,
    순회 유닛이 상기 비-리프 노드에 대한 교차에 대해 상기 광선이 테스트될 것을 요청하는 것에 응답하여 상기 순회 유닛에 상기 표시를 송신하는 단계를 더 포함하는, 방법.
  7. 제6항에 있어서, 상기 순회 유닛은 상기 광선 교차 테스트의 일부로서 상기 비-리프 노드에 대한 교차에 대해 상기 광선이 테스트될 것을 요청하는 순회 셰이더 프로그램을 실행하도록 구성되는 것인, 방법.
  8. 제1항에 있어서,
    상기 경계 볼륨 계층구조의 순회 동안 상기 경계 볼륨 계층구조의 다수의 노드들에 대해 상기 판독하는 단계, 식별하는 단계, 및 결정하는 단계를 수행하는 단계를 더 포함하는, 방법.
  9. 제8항에 있어서,
    상기 광선이 상기 비-리프 노드와 교차하지 않는 것으로 결정되는 비-리프 노드들에 대한 상기 광선의 교차 테스트들에 대해, 해당 비-리프 노드의 자식들을 고찰하는 것을 금지하는 단계를 더 포함하는, 방법.
  10. 시스템으로서,
    가속 구조 순회 스테이지 ― 상기 가속 구조 순회 스테이지는:
    경계 볼륨 계층구조의 비-리프 노드에 대한 후손-공유 유형 메타데이터를 판독하고,
    광선에 대한 광선 교차 테스트를 위한 하나 이상의 컬링 유형을 식별하며,
    상기 하나 이상의 컬링 유형이 상기 후손-공유 유형 메타데이터에 의해 특정된 적어도 하나의 유형을 포함하는지 여부에 기초하여 상기 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부를 결정하게 하도록 구성됨 ―; 및
    상기 경계 볼륨 계층구조의 적어도 일부를 저장하도록 구성된 메모리를 포함하는, 시스템.
  11. 제10항에 있어서,
    상기 하나 이상의 컬링 유형은 상기 후손-공유 유형 메타데이터에 의해 특정된 적어도 하나의 유형을 포함하고;
    상기 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부를 결정하는 것은 상기 비-리프 노드를 교차되지 않는 것으로서 취급하도록 결정하는 것을 포함하는 것인, 시스템.
  12. 제10항에 있어서,
    상기 하나 이상의 컬링 유형은 상기 후손-공유 유형 메타데이터에 의해 특정된 어느 유형도 포함하지 않고;
    상기 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부를 결정하는 것은 상기 비-리프 노드를 교차되지 않는 것으로서 취급하도록 결정하지 않는 것을 포함하는 것인, 시스템.
  13. 제10항에 있어서,
    상기 하나 이상의 컬링 유형은 삼각형, 프로시저 지오메트리, 불투명 지오메트리, 및 비-불투명 지오메트리 중 하나 이상을 포함하는 것인, 시스템.
  14. 제10항에 있어서,
    상기 비-리프 노드를 교차되지 않는 것으로 처리하는 것은 상기 비-리프 노드가 상기 광선과 교차되지 않는다는 표시를 생성하는 것을 포함하는 것인, 시스템.
  15. 제14항에 있어서, 상기 가속 구조 순회 스테이지는 또한:
    순회 유닛이 상기 비-리프 노드에 대한 교차에 대해 상기 광선이 테스트될 것을 요청하는 것에 응답하여 상기 순회 유닛에 상기 표시를 송신하도록 구성되는 것인, 시스템.
  16. 제15항에 있어서, 상기 순회 유닛은 상기 광선 교차 테스트의 일부로서 상기 비-리프 노드에 대한 교차에 대해 상기 광선이 테스트될 것을 요청하는 순회 셰이더 프로그램을 실행하도록 구성되는 것인, 시스템.
  17. 제10항에 있어서, 상기 가속 구조 순회 스테이지는 또한:
    상기 경계 볼륨 계층구조의 순회 동안 상기 경계 볼륨 계층구조의 다수의 노드들에 대해 상기 판독하는 단계, 식별하는 단계, 및 결정하는 단계를 수행하도록 구성되는 것인, 시스템.
  18. 제17항에 있어서, 상기 가속 구조 순회 스테이지는 또한:
    상기 광선이 상기 비-리프 노드와 교차하지 않는 것으로 결정되는 비-리프 노드들에 대한 상기 광선의 교차 테스트들에 대해, 해당 비-리프 노드의 자식들을 고찰하는 것을 금지하도록 구성되는 것인, 시스템.
  19. 명령어들을 저장하는 비일시적인 컴퓨터 판독가능 매체로서, 상기 명령어들은 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    경계 볼륨 계층구조의 비-리프 노드에 대한 후손-공유 유형 메타데이터를 판독하고;
    광선에 대한 광선 교차 테스트를 위한 하나 이상의 컬링 유형을 식별하며;
    상기 하나 이상의 컬링 유형이 상기 후손-공유 유형 메타데이터에 의해 특정된 적어도 하나의 유형을 포함하는지 여부에 기초하여 상기 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부를 결정하게 하는 것인, 비일시적인 컴퓨터 판독가능 매체.
  20. 제19항에 있어서,
    상기 하나 이상의 컬링 유형은 상기 후손-공유 유형 메타데이터에 의해 특정된 적어도 하나의 유형을 포함하고;
    상기 비-리프 노드를 교차되지 않는 것으로서 취급할지 여부의 결정은 상기 비-리프 노드를 교차되지 않는 것으로서 취급하도록 결정하는 것을 포함하는 것인, 비일시적인 컴퓨터 판독가능 매체.
KR1020227045669A 2020-06-26 2021-06-07 광선 추적을 위한 초기 컬링 KR20230027083A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063044686P 2020-06-26 2020-06-26
US63/044,686 2020-06-26
US17/008,462 2020-08-31
US17/008,462 US11238640B2 (en) 2020-06-26 2020-08-31 Early culling for ray tracing
PCT/US2021/036262 WO2021262427A1 (en) 2020-06-26 2021-06-07 Early culling for ray tracing

Publications (1)

Publication Number Publication Date
KR20230027083A true KR20230027083A (ko) 2023-02-27

Family

ID=79031215

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227045669A KR20230027083A (ko) 2020-06-26 2021-06-07 광선 추적을 위한 초기 컬링

Country Status (6)

Country Link
US (1) US11238640B2 (ko)
EP (1) EP4172951A1 (ko)
JP (1) JP2023532434A (ko)
KR (1) KR20230027083A (ko)
CN (1) CN115769265A (ko)
WO (1) WO2021262427A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11704859B2 (en) * 2020-08-20 2023-07-18 Sony Interactive Entertainment LLC System and method for accelerated ray tracing
US11494969B2 (en) 2020-08-20 2022-11-08 Sony Interactive Entertainment LLC System and method for accelerated ray tracing with asynchronous operation and ray transformation
GB2599124A (en) * 2020-09-24 2022-03-30 Imagination Tech Ltd Memory allocation for recursive processing in a ray tracing system
CN114331800A (zh) * 2020-09-30 2022-04-12 想象技术有限公司 用于光线跟踪的相交测试

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080024489A1 (en) * 2006-07-28 2008-01-31 Robert Allen Shearer Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements
US7969434B2 (en) 2006-09-19 2011-06-28 Caustic Graphics, Inc. Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering
US7884819B2 (en) 2006-09-27 2011-02-08 International Business Machines Corporation Pixel color accumulation in a ray tracing image processing system
US9269182B2 (en) * 2008-09-05 2016-02-23 Nvidia Corporation System and method for identifying entry points of a hierarchical structure
US8619078B2 (en) 2010-05-21 2013-12-31 International Business Machines Corporation Parallelized ray tracing
US8957896B2 (en) * 2012-06-11 2015-02-17 Disney Enterprises, Inc. Streaming hierarchy traversal renderer
US10235338B2 (en) * 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
JP7100427B2 (ja) 2016-03-21 2022-07-13 イマジネイション テクノロジーズ リミテッド 階層融合
US10692270B2 (en) * 2017-08-18 2020-06-23 Microsoft Technology Licensing, Llc Non-divergent parallel traversal of a bounding volume hierarchy
US10957095B2 (en) * 2018-08-06 2021-03-23 Intel Corporation Programmable ray tracing with hardware acceleration on a graphics processor
US10740952B2 (en) * 2018-08-10 2020-08-11 Nvidia Corporation Method for handling of out-of-order opaque and alpha ray/primitive intersections

Also Published As

Publication number Publication date
US20210407175A1 (en) 2021-12-30
WO2021262427A1 (en) 2021-12-30
CN115769265A (zh) 2023-03-07
US11238640B2 (en) 2022-02-01
JP2023532434A (ja) 2023-07-28
EP4172951A1 (en) 2023-05-03

Similar Documents

Publication Publication Date Title
US11488343B2 (en) Mechanism for supporting discard functionality in a ray tracing context
KR20230027083A (ko) 광선 추적을 위한 초기 컬링
JP2022091849A (ja) 光線バンドルの光線に対する差分データを決定する方法及びグラフィックス処理ユニット
US11393156B2 (en) Partially resident bounding volume hierarchy
KR20220154706A (ko) 광선 추적 다중 샘플 앤티-에일리어싱
US11321903B2 (en) Bounding volume hierarchy compression
KR20210119899A (ko) 그래픽 프로세싱
US20240087223A1 (en) Overlay trees for ray tracing
US11748935B2 (en) Bounding volume hierarchy traversal
US11521308B2 (en) Ambient occlusion using bounding volume hierarchy bounding box tests
US11954788B2 (en) Variable width bounding volume hierarchy nodes
US20230097562A1 (en) Acceleration structures with delta instances
US20220189096A1 (en) Opacity texture-driven triangle splitting
US11450058B2 (en) Early termination of bounding volume hierarchy traversal
US20240144580A1 (en) Split-based trees for ray tracing
US20240112392A1 (en) Dynamic node traversal order for ray tracing
US11854138B2 (en) Techniques for introducing oriented bounding boxes into bounding volume hierarchy
US20230351667A1 (en) Method and apparatus for performing high speed parallel locally order clustering for a bounding volume hierarchy
US20240104844A1 (en) Multi-resolution geometric representation using bounding volume hierarchy for ray tracing
US11158112B1 (en) Bounding volume hierarchy generation
US20230099806A1 (en) Bounding volume hierarchy having oriented bounding boxes with quantized rotations
JP2022539951A (ja) 減少した分岐をソートする計算ユニット