1부. 레이 트레이싱 기본
1장. 레이 트레이싱 용어
1.1 역사적 노트
1.2 정의
2장. 광선 소개
2.1 광선의 수학적 설명
2.2 광선 간격
2.3 DXR의 광선
2.4 결론
3장. 다이렉트X 레이 트레이싱 소개
3.1 소개
3.2 개요
3.3 시작
3.4 다이렉트X 레이 트레이싱 파이프라인
3.5 다이렉트X 레이 트레이싱을 위한 새로운 HLSL 지원
3.6 간단한 HLSL 레이 트레이싱 예제
3.7 다이렉트X 레이 트레이싱의 호스트 초기화 개요
3.8 기본 DXR 초기화와 설정
3.9 레이 트레이싱 파이프라인 상태 오브젝트
3.10 셰이더 테이블
3.11 광선 디스패칭
3.12 더 깊게 들어가기와 추가 자원
3.13 결론
4장. 플라네타리움 돔 마스터 카메라
4.1 소개
4.2 방법
4.3 플라네타리움 돔 마스터 투영 샘플 코드
5장. 서브배열의 최소와 최대 계산
5.1 동기
5.2 나이브한 전체 테이블 탐색
5.3 희소 테이블 해결법
5.4 (재귀 범위 트리 방식
5.5 반복적인 범위 트리 쿼리
5.6 결과
5.7 요약
2부. 교차와 효율성
6장. 자기 교차를 피하는 빠르고 강력한 방법
6.1 서론
6.2 방법
6.3 결론
7장. 광선/교차의 정밀도 향상
7.1 기본 광선/구체 교차
7.2 부동소수점 정밀도 고려 사항
7.3 관련 자료
8장. 멋진 패치: 광선/이중선형 패치 교차에 대한 지오메트릭 접근
8.1 소개와 선행 기술
8.2 GARP 세부 사항
8.3 결과 논의
8.4 코드
9장. DXR에서의 다중 충돌 레이 트레이싱
9.1 소개
9.2 구현
9.3 결과
9.4 결론
10장. 높은 스케일 효율성을 지닌 단순한 로드밸런스 체계
10.1 소개
10.2 요구 사항
10.3 로드밸런싱
10.4 결과
3부. 반사, 굴절, 셰도우
11장. 중첩된 볼륨의 머티리얼 자동 처리
11.1 모델링 볼륨
1
단순성, 병렬성, 접근성은 레이 트레이싱에서 떠오르는 주제다. 나는 레이 트레이싱이 글로벌 일루미네이션을 위한 최고의 매개가 돼 줄 것이라 생각하지 못했지만 단순성은 매력적이다. 그래픽 렌더링 알고리즘은 시각화하거나 설명 혹은 코드화하기 쉽지 않다. 이 단순성은 초보 프로그래머가 두 개의 투명 구체와 포인트 라이트 소스로 밝히는 체커보드를 쉽게 렌더링할 수 있게 한다. 실습에서 경로 추적과 원래 알고리즘에서의 다른 출발을 구현하는 것은 좀 더 복잡하지만 경로를 따라 놓여있는 모든 것과 계속 교차한다.
‘처치 곤란 병렬(embarrassingly parallel’이라는 용어는 레이 트레이싱을 실행할 합리적인 병렬 엔진이 있기 훨씬 이전부터 레이 트레이싱에 적용됐다. 오늘날 레이 트레이싱은 현대 GPU의 탁월한 병렬 처리와 원시 처리 능력에 부합한다.
접근성은 모든 프로그래머에게 항상 중요한 문제였다. 수십 년 전 내가 원하는 것을 컴퓨터가 하지 않으면 나는 그 뒤를 걸어 다니며 회로를 사소하게 변경했을 것이다(농담이 아니다. 요즘은 커스터마이즈하고자 그래픽 API의 레이어 아래를 들여다보는 것은 생각조차 하지 못할 일이 돼버렸다. 프로그래밍할 수 있는 셰이딩의 점진적인 확장으로 인해 수십 년 전에 미묘하게 변경됐다. 지원 프로그래밍 도구와 함께 현대 GPU의 유연성은 병렬 처리 요소에 전례 없는 접근성을 제공한다.
그렇다면 이 모든 것이 실시간 레이 트레이싱으로 어떻게 이어졌을까? 분명 성능, 복잡성, 정확성의 문제는 그래픽 프로그래머가 품질과 속도를 동시에 향상시키는 것을 막지 않았다. 그래픽 프로세서도 진화해 레이 트레이싱은 더할 나위 없이 딱 들어맞게 됐다. 그래픽 하드웨어에 레이 트레이싱 가속 기능을 도입하는 것은 실시간 레이 트레이싱을 일반적인 용도로 가져오는 주요 단계다. 레이 트레이싱의 단순성 및 내재된 병렬성과 최신 GPU의 접근성 및 마력과의 결합은 모든 그래픽 프로그래머가 도달할 수 있는 범위 내로 실시간 레이 트레이싱 성능을 낼 수 있게