Physically Based Rendering Second Edition 물리 기반 렌더링 [현실 같은 그래픽스를 위한 알고리즘, 게임 엔진과 렌더러까지]
- 원서명Physically Based Rendering, Second Edition: From Theory To Implementation (ISBN 9780123750792)
- 지은이매트 파르(Matt Pharr), 그렉 험프리스(Greg Hunphreys)
- 옮긴이이상우
- ISBN : 9788960777620
- 58,000원
- 2015년 10월 16일 펴냄
- 페이퍼백 | 1,224쪽 | 188*255mm
판매처
개정판책 소개
2016년 대한민국학술원 우수학술도서 선정도서
요약
이 책은 게임과 영화 등에 사용되는 컴퓨터 그래픽스에 대한 심도 깊은 이해를 돕고, 게임 엔진이나 렌더러 구현에 관심이 있는 현업 종사자나 학생들에게 매우 유용한 책이다. 영화 프로덕션의 렌더맨(RenderMan)이나 언리얼 엔진의 라이트 매스(Lightmass) 같은 오프라인 렌더러의 기술에 더해, 최근 게임 엔진에서 사용하는 렌더링 기술까지 다루는, 컴퓨터 그래픽스를 위한 최고의 서적이다.
추천의 글
이 책은 대단한 책이다. 이 책은 기묘한 수학, 매혹적인 물리, 실용적인 소프트웨어 공학, 그리고 최첨단 실사 렌더러를 작성하는 데 필요한 기발한 기술을 모두 다룬다. 이 모든 주제를 깔끔하고 교육적인 방식으로, 실제로 중요한 모든 세부사항을 생략하지 않고 상세히 설명한다.
pbrt는 단지 레이트레이서(ray tracer)의 ‘장난감’ 구현만이 아니라, 일반적이고 안정적인 완전한 전역 조명 렌더러다. pbrt는 수행 시간을 줄이고 복잡한 장면의 메모리 소모량을 줄이기 위한 많은 중요한 최적화를 포함한다. 더욱이 pbrt는 기타 렌더링 알고리즘 변종과 함께 쉽게 확장할 수 있다.
이 책은 학생을 위한 교과서일 뿐만 아니라, 실제 분야의 전문가들을 위한 유용한 참고 도서다. 개정판은 메트로폴리스 빛 전송, 표면 밑 산란, 사전 계산 빛 전송 등에 대한 부분으로 확장됐다.
-페르 크리스텐센(Per Christensen) / 픽사 애니메이션 스튜디오(Pixar Animation Studios) 렌더맨 프로덕션, 선임 소프트웨어 개발자
연구나 최고급 렌더링 분야에서 직업을 찾고 있는가? 기초 교육을 받고난 후에는 이론과 실전 예제, 즉 실제 코드가 함께 하는 이 책으로 자신의 프로젝트를 시작하라.
개정판에서 매트 파르와 그렉 험프리스는 메트로폴리스 빛 전송이나 의사 몬테카를로 방식 같은 가장 발전된 렌더링 기술에 대해서도 쉬운 접근을 제공한다. 게다가 기반 작업을 통해, 렌더러에 자료를 넣고 추출할 때의 고통을 겪지 않게 해준다.
거시적 접근 방식의 문학적 프로그래밍은 읽기 쉬운 문장의 깔끔한 로직으로 나타난다. 그래픽을 진지하게 생각한다면 최신 기술을 다룬 이 독창적이고도 극도로 가치 있는 이 책을 반드시 읽기 바란다.
-알렉산더 켈러(Alexander Keller) / 멘탈 이미지스(Mental Images) 수석 과학자
이 책에서 다루는 내용
이 책은 현대 실사 렌더링 시스템 기반의 수학적인 이론과 함께 실질적인 구현을 설명한다. 문학적 프로그래밍(literate programming)으로 알려진 메소드를 써서 사람이 읽을 수 있는 문서와 소스코드를 합쳐, 잘 이해할 수 있도록 특별히 설계된 하나의 참고문헌으로 만들었다. 그래픽 교육에 있어 경탄할 만한 성취다. 이 책의 개념과 소프트웨어를 통해 굉장히 아름다운 이미지를 생성하는 완전한 기능의 렌더링 시스템을 디자인하고 사용하는 방법을 배우게 될 것이다.
표면 밑 산란, 메트로폴리스 빛 전송, 사전 계산 빛 전송, 다중 분광 렌더링 등을 다루는 많은 내용이 개정판에 추가되었다.
이 책에서 설명한 렌더링 시스템의 윈도우, OS X, 리눅스 지원 소스코드는 www.pbrt.org에서 볼 수 있다.
코드와 문서는 각 함수, 변수, 메소드를 처음 설명하는 페이지를 열거하고, 고유한 색인 기능으로 긴밀히 상호 참조할 수 있도록 정리했다.
이 책의 대상 독자
이 책의 주요 독자층은 대학원생 혹은 학부 고학년 컴퓨터 그래픽스 강의를 들을 수 있는 수준의 학생들이다. 이 책은 기본적으로 독자들이 대학 입문 수준의 컴퓨터 그래픽스 지식을 갖췄다고 가정하지만, 벡터 기하학이나 변환 같은 특정한 중요한 개념은 설명한다. 몇 만 줄 이상의 프로그램을 경험해보지 못한 학생들에게 문학적 프로그래밍 방식은 이런 복잡성에 대한 바람직한 소개가 될 것이다. 우리는 이런 독자들에게 왜 시스템이 이런 방식으로 구성됐는지를 알려주기 위해 시스템의 핵심 인터페이스와 추상화에 대한 이유를 설명하는 데 특별히 신경을 썼다.
두 번째 대상 독자층은 전문적인 대학원생들과 연구자, 소프트웨어 개발 종사자, 그리고 자신만의 렌더링 시스템을 구현하는 데 재미를 느끼고 관심이 있는 사람들이다. 이 책의 많은 내용이 이런 독자들에게는 익숙하겠지만, 알고리즘들의 문학적 방식의 설명을 보는 것이 새로운 관점을 제공할 수 있다. pbrt는 표면 세분화(subdivision surfaces), 몬테카를로 빛 전송(Monte Carlo light transport)과 메트로폴리스 표본화(Metropolis sampling)같이 고도화된 구현이 어려운 알고리즘들과 테크닉들의 구현을 포함하고 있으며, 이 내용은 특히 경험 있는 렌더링 현업자에게 관심 있는 분야일 것이다. 하나의 완전하고 비중 있는 렌더링 시스템의 구조를 파헤치는 것이 이런 독자들의 관심을 유발하기를 기대한다.
이 책의 구성
개정판에서 달라진 점
초판이 발행된 지 6년이 지났다. 그 동안 수천 권이 팔렸으며, 수천 번의 pbrt 다운로드가 있었다. 많은 피드백과 격려가 있었으며, 우리의 경험을 바탕으로 초판의 pbrt 버전과 업데이트된 버전의 변화를 결정했다.
1.플러그인(plugin) 아키텍처를 제거 초기 버전 pbrt는 실행 중(run-time) 플러그인 아키텍처를 통해 장면을 렌더하기 위한 기하 모양(shape), 광원, 적분기(integrator), 카메라 등의 물체(object)를 동적으로 불러왔다. 사용자들은 렌더링 시스템을 다시 컴파일할 필요 없이 새로운 물체 종류(예, 새로운 기하 모양)를 추가해 확장할 수 있었다. 이 방식은 초기에 우아하게 보였지만, 복잡한 멀티플랫폼의 지원과 어려운 디버깅을 야기했다. 유일하게 사용 가능한 시나리오(바이너리(binary) pbrt 배포본 혹은 바이너리 플러그인)는 우리의 교육적 오픈소스 목표와 반하므로 이번 판에서 제외됐다.
2.이미지 처리 파이프라인(image processing pipeline)을 제거 초기 버전에서는 톤 매핑(tone-mapping) 인터페이스를 통해 고명암비(HDR, High Dynamic Range) 부동소수점 결과 이미지를 직접 저명암비(low dynamic range) TIFF로 전환해 보여줬다. 이 기능은 HDR 이미지가 드물던 2004년 기준으로 만들어졌다. 하지만 2010년에는 디지털 사진술(photography)의 발달로 HDR 이미지가 흔해졌다. 톤 매핑의 이론과 실습은 우아하고 배울 가치가 있지만, 새 버전에선 이미지 형성(formation) 과정에 집중하고 이미지 디스플레이(display)를 제외하기로 했다. 관심 있는 독자들은 레인하드(Reinhard) 등(2005)의 철저한 최신 HDR 이미지 디스플레이를 위한 처리에 관한 책을 읽어보자.
3.작업 병렬화 멀티코어 아키텍처는 이제 도처에 존재하며, pbrt 역시 유저들의 사용 가능한 코어의 개수대로 성능을 확장할 수 있어야 의미 있다. 이 책의 병렬 프로그래밍 구현에 관한 세부 사항(예, 적절한 작업 크기나 뮤텍스(mutex) 종류)이 그래픽 프로그래머가 아직도 어렵고 잘 가르쳐주지 않는 확장 가능한 병렬 코드 개발의 세부 사항과 복잡성을 이해하는 데 도움이 되길 바란다.
4.프로덕션(production) 렌더링에의 적합성 초기 버전은 순수하게 교육용 툴과 렌더링 연구의 디딤돌로서 제작됐다. 사실 초기 버전은 제한된 이미지 기반 라이팅(image-based lighting), 모션 블러(motion blur) 미지원, 복잡한 라이팅에서의 광자 매핑(photon mapping) 구현의 불안정성 등 프로덕션 환경에서의 사용이 어려운 점이 많았다. 초기 버전보다 훨씬 발전된 기능의 지원과 표면 밑 산란(subsurface scattering)과 메트로폴리스 빛 전송(Metropolis light transport)의 지원으로 복잡한 환경의 초고품질 렌더링 이미지에 훨씬 적합해졌다. 기능 개선을 통해 더욱 기능이 완전해졌지만, 교수에겐 학생이 처리 가능한 과제를 주는 것이 더욱 어려워졌다. 사실 초기 버전 pbrt에 대해서도 학생들이 직접 레이트레이싱 시스템을 개발하는 것의 부담과 이점에 대한 트레이드오프가 발생했다. 초기 버전의 pbrt가 많은 대학에서 사용됐으므로, 새 버전의 복잡성과 기능 완성의 트레이드오프가 바람직해 계속 고품질 렌더링 수업에 사용되길 바란다.
목차
목차
- 1 서론
- 1.1 문학적 프로그래밍
- 1.1.1 색인과 상호 참조
- 1.2 극 사실적 렌더링과 레이트레이싱 알고리즘
- 1.2.1 카메라
- 1.2.2 광선-물체 교차점
- 1.2.3 빛 분포
- 1.2.4 가시성
- 1.2.5 표면 산란
- 1.2.6 재귀적 레이트레이싱
- 1.2.7 광선 전파
- 1.3 pbrt: 시스템 개요
- 1.3.1 실행 단계
- 1.3.2 장면 표현
- 1.3.3 렌더러 인터페이스와 SamplerRenderer
- 1.3.4 주 렌더링 루프
- 1.3.5 pbrt의 병렬화
- 1.3.6 휘티드 레이트레이싱의 적분기
- 1.4 이 책을 읽는 방법
- 1.4.1 연습문제
- 1.5 코드의 사용과 이해
- 1.5.1 포인터 혹은 참조?
- 1.5.2 코드 최적화
- 1.5.3 이 책의 웹사이트
- 1.5.4 시스템의 확장
- 1.5.5 버그
- __더 읽을거리
- __연습문제
- 2 기하 구조와 변환
- 2.1 좌표계
- 2.1.1 좌표계의 손 방향
- 2.2 벡터
- 2.2.1 연산
- 2.2.2 크기 변경
- 2.2.3 내적과 외적
- 2.2.4 정규화
- 2.2.5 한 벡터로부터의 좌표계
- 2.3 점
- 2.4 법선
- 2.5 광선
- 2.5.1 광선 미분
- 2.6 3차원 경계 상자
- 2.7 변환
- 2.7.1 동차 좌표계
- 2.7.2 기본 연산
- 2.7.3 이동
- 2.7.4 크기 변경
- 2.7.5 x, y, z축 회전
- 2.7.6 임의의 축에 대한 회전
- 2.7.7 보는 방향 변환
- 2.8 변환의 적용
- 2.8.1 점
- 2.8.2 벡터
- 2.8.3 법선
- 2.8.4 광선
- 2.8.5 경계 상자
- 2.8.6 변환의 조합
- 2.8.7 변환과 좌표계의 손 방향
- 2.9 애니메이션 변환
- 2.9.1 사원수
- 2.9.2 사원수 보간
- 2.9.3 AnimatedTransform 구현
- 2.10 미분 기하 구조
- __더 읽을거리
- __연습문제
- 3 모양
- 3.1 기본 모양 인터페이스
- 3.1.1 경계
- 3.1.2 세분화
- 3.1.3 교차점
- 3.1.4 잘못된 자가 교차의 회피
- 3.1.5 음영 기하 구조
- 3.1.6 표면 면적
- 3.1.7 방향성
- 3.2 구
- 3.2.1 생성
- 3.2.2 경계
- 3.2.3 교차
- 3.2.4 부분적 구
- 3.2.5 법선 벡터의 편미분
- 3.2.6 DifferentialGeometry 초기화
- 3.2.7 표면 면적
- 3.3 원기둥
- 3.3.1 생성
- 3.3.2 경계
- 3.3.3 교차
- 3.3.4 부분 원기둥
- 3.3.5 표면 면적
- 3.4 원반
- 3.4.1 생성
- 3.4.2 경계
- 3.4.3 교차
- 3.4.4 표면 면적
- 3.5 다른 이차 곡면
- 3.5.1 원뿔
- 3.5.2 쌍곡면
- 3.5.3 포물면
- 3.6 삼각형과 메시
- 3.6.1 삼각형
- 3.6.2 삼각형 교차점
- 3.6.3 표면 면적
- 3.6.4 음영 기하 구조
- 3.7 세분 표면
- 3.7.1 메시 표현
- 3.7.2 경계
- 3.7.3 세분화
- __더 읽을거리
- __연습문제
- 4 프리미티브와 교차 가속
- 4.1 프리미티브 인터페이스와 기하학적 프리미티브
- 4.1.1 기하학적 프리미티브
- 4.1.2 TransformedPrimitive 물체 인스턴싱과 애니메이션 프리미티브
- 4.2 집합체
- 4.2.1 광선-상자 교차
- 4.3 격자 가속기
- 4.3.1 생성
- 4.3.2 횡단
- 4.4 경계 볼륨 계층
- 4.4.1 BVH 생성
- 4.4.2 표면 면적 휴리스틱
- 4.4.3 횡단을 위한 간편한 BVH
- 4.4.4 횡단
- 4.5 KD 트리 가속기
- 4.5.1 트리 표현
- 4.5.2 트리 생성
- 4.5.3 횡단
- 4.6 집합체 디버깅
- 4.6.1 집합체의 버그 찾기
- 4.6.2 집합체의 버그 수정
- 4.6.3 집합체 성능 버그
- __더 읽을거리
- __연습문제
- 5 색과 방사 분석
- 5.1 분광 표현
- 5.1.1 Spectrum 형
- 5.1.2 CoefficientSpectrum 구현
- 5.2 SampledSpectrum 클래스
- 5.2.1 XYZ 색
- 5.2.2 RGB 색
- 5.3 RGBSpectrum 구현
- 5.4 기본 방사 분석
- 5.4.1 기본 양
- 5.4.2 입사와 방출 방사 함수
- 5.4.3 휘도와 측광
- 5.5 방사 측정 적분
- 5.5.1 투영된 입체각에 대한 적분
- 5.5.2 구좌표에 대한 적분
- 5.5.3 면적에 대한 적분
- 5.6 표면 반사
- 5.6.1 BRDF
- 5.6.2 BSSRDF
- __더 읽을거리
- __연습문제
- 6 카메라 모델
- 6.1 카메라 모델
- 6.1.1 카메라 좌표 공간
- 6.2 투영 카메라 모델
- 6.2.1 정사영 카메라
- 6.2.2 원근 카메라
- 6.2.3 피사계 심도
- 6.3 환경 카메라
- __더 읽을거리
- __연습문제
- 7 표본 추출과 재구성
- 7.1 표본화 정리
- 7.1.1 주파수 영역과 퓨리에 변환
- 7.1.2 이상적인 표본화와 재구성
- 7.1.3 에일리어싱
- 7.1.4 안티에일리어싱 기술
- 7.1.5 이미지 합성에 활용
- 7.1.6 렌더링에서 에일리어싱의 근원
- 7.1.7 픽셀에 대한 이해
- 7.2 이미지 표본 인터페이스
- 7.2.1 표본 표현과 할당
- 7.3 층별 표본화
- 7.4 저불일치 표본화
- 7.4.1 불일치의 정의
- 7.4.2 햄머슬리와 핼톤 연속
- 7.4.3 (0,2)-연속
- 7.4.4 저불일치 표본기
- 7.5 최고-후보 표본 패턴
- 7.6 적응적 표본화
- 7.7 이미지 재구성
- 7.7.1 필터 함수
- 7.8 필름과 이미지화 파이프라인
- 7.8.1 필름 인터페이스
- 7.8.2 이미지 필름
- __더 읽을거리
- __연습문제
- 8 반사 모델
- 8.1 기본 인터페이스
- 8.1.1 반사
- 8.1.2 BRDF → BTDF 어댑터
- 8.1.3 BxDF 크기 변환 어댑터
- 8.2 거울 반사와 투과
- 8.2.1 프레넬 반사
- 8.2.2 거울 반사
- 8.2.3 반사광 투과
- 8.3 램버트 반사
- 8.4 미세면 모델
- 8.4.1 오렌-네이어 확산 반사
- 8.4.2 토랜스-스패로우 모델
- 8.4.3 블린 미세면 분포
- 8.4.4 비등방성 미세면 모델
- 8.5 프레넬 입사 효과
- 8.6 측정된 BRDF
- 8.6.1 비균일 등방성 측정 BRDF
- 8.6.2 균일 반각 형식
- __더 읽을거리
- __연습문제
- 9 재질
- 9.1 BSDF
- 9.1.1 BSDF 메모리 관리
- 9.2 재질 인터페이스와 구현
- 9.2.1 무광 재질
- 9.2.2 플라스틱 재질
- 9.2.3 혼합 재질
- 9.2.4 측정 재질
- 9.2.5 추가적인 재질
- 9.3 범프 매핑
- __더 읽을거리
- __연습문제
- 10 텍스처 함수 필터링
- 10.1 표본화와 안티에일리어싱
- 10.1.1 텍스처 표본율 찾기
- 10.1.2 텍스처 함수 필터링
- 10.1.3 거울 반사와 투과를 위한 광선 차분
- 10.2 텍스처 좌표 생성
- 10.2.1 2D (u, v) 매핑
- 10.2.2 구면 매핑
- 10.2.3 원통 매핑
- 10.2.4 평면 매핑
- 10.2.5 3D 매핑
- 10.3 텍스처 인터페이스와 기본 텍스처
- 10.3.1 상수 텍스처
- 10.3.2 텍스처 크기 변화
- 10.3.3 텍스처 혼합
- 10.3.4 이중선형 보간
- 10.4 이미지 텍스처
- 10.4.1 텍스처 캐싱
- 10.4.2 MIP 맵
- 10.4.3 등방성 삼각 필터
- 10.4.4 타원형 가중 평균
- 10.5 입체와 절차적 텍스처링
- 10.5.1 UV 텍스처
- 10.5.2 체커보드
- 10.5.3 입체 체커보드
- 10.6 잡음
- 10.6.1 펄린 잡음
- 10.6.2 임의의 물방울무늬
- 10.6.3 잡음 관용구와 분광 합성
- 10.6.4 울퉁불퉁하고 주름진 텍스처
- 10.6.5 풍랑
- 10.6.6 대리석
- __더 읽을거리
- __연습문제
- 11 입체 산란
- 11.1 입체 산란 과정
- 11.1.1 흡수
- 11.1.2 방출
- 11.1.3 외산란과 흡광
- 11.1.4 내산란
- 11.2 위상 함수
- 11.3 입체 인터페이스와 동일 매질
- 11.3.1 동질 입체
- 11.4 변화하는 밀도 입체
- 11.4.1 3D 격자
- 11.4.2 지수 밀도
- 11.5 입체 집합체
- 11.6 BSSRDF
- 11.6.1 표면 밑 산란 재질
- __추가 도서 목록
- __연습문제
- 12 광원
- 12.1 빛 인터페이스
- 12.1.1 시야 시험
- 12.2 점광원
- 12.2.1 스포트라이트
- 12.2.2 텍스처 투영 빛
- 12.2.3 각광도계 표 빛
- 12.3 원거리 광
- 12.4 영역 광
- 12.5 무한 영역 광
- __더 읽을거리
- __연습문제
- 13 몬테카를로 적분 I: 기본 개념
- 13.1 배경 지식과 확률의 검토
- 13.1.1 연속 임의의 변수
- 13.1.2 기댓값과 분산
- 13.2 몬테카를로 추정기
- 13.3 임의의 변수의 기본 표본화
- 13.3.1 역 방식
- 13.3.2 배제 방식
- 13.4 메트로폴리스 표본화
- 13.4.1 기본 알고리즘
- 13.4.2 변형 선택 전략
- 13.4.3 초기 편향
- 13.4.4 메트로폴리스 표본화로 적분 예측
- 13.4.5 예: 1차원 설정
- 13.5 분포 사이에서 변환
- 13.5.1 다중 차원에서 변환
- 13.5.2 예: 극좌표계
- 13.5.3 예: 구좌표계
- 13.6 다차원 변환의 2D 표본화
- 13.6.1 예: 반구의 균일 표본화
- 13.6.2 예: 단위 원반의 표본화
- 13.6.3 예: 코사인 가중 반구 표본화
- 13.6.4 예: 삼각형 표본화
- 13.6.5 예: 부분 상수 2D 분포
- __더 읽을거리
- __연습문제
- 14 몬테카를로 적분 II: 효율 개선
- 14.1 러시안 룰렛과 분리
- 14.1.1 분리
- 14.2 신중한 표본 배치
- 14.2.1 계층 표본화
- 14.2.2 의사 몬테카를로
- 14.2.3 표본 뒤틀림과 왜곡
- 14.3 편향
- 14.4 중요성 표본화
- 14.4.1 다중 중요도 표본화
- 14.5 표본화 반사 함수
- 14.5.1 블린 미세 표면 분포 표본화
- 14.5.2 비등방성 미세 표면 모델의 표본화
- 14.5.3 FresnelBlend 표본화
- 14.5.4 광택 반사와 투과
- 14.5.5 응용: 반사 예측
- 14.5.6 BSDF 표본화
- 14.6 광원 표본화
- 14.6.1 기본 인터페이스
- 14.6.2 특이점이 있는 빛
- 14.6.3 영역 광
- 14.6.4 SHAPESET 표본화
- 14.6.5 무한 영역 광
- 14.7 입체 산란
- 14.7.1 상 함수의 표본화
- 14.7.2 광학적 두께의 계산
- __더 읽을거리
- __연습문제
- 15 빛 전송 I: 표면 반사
- 15.1 직접 광
- 15.1.1 직접 광 적분의 예측
- 15.2 빛 전송 방정식
- 15.2.1 기본 유도
- 15.2.2 LTE에로의 분석 해법
- 15.2.3 LTE의 표면 형
- 15.2.4 경로에 대한 적분
- 15.2.5 피적분 함수에서의 델타 분포
- 15.2.6 피적분 함수의 분할
- 15.2.7 측정 방정식과 중요도
- 15.3 경로 추적
- 15.3.1 개요
- 15.3.2 경로 표본화
- 15.3.3 점진적 경로 생성
- 15.3.4 구현
- 15.3.5 양방향 경로 추적
- 15.4 순간 전역 조명
- 15.4.1 가상 광원 생성
- 15.4.2 가상 광원으로 렌더링
- 15.5 방사 조도 캐싱
- 15.5.1 방사 조도 캐시로 렌더링
- 15.5.2 검색과 보간
- 15.5.3 새로운 값 추가
- 15.6 입자 추적과 광자 매핑
- 15.6.1 입자 추적을 위한 이론적 기반
- 15.6.2 광자 적분기
- 15.6.3 광자 맵의 생성
- 15.6.4 광자 맵의 사용
- 15.6.5 광자 보간과 밀도 예측
- 15.7 메트로폴리스 빛 전송
- 15.7.1 표본 표현
- 15.7.2 변이
- 15.7.3 경로 생성
- 15.7.4 경로 기여
- 15.7.5 MetropolisRenderer 구현
- 15.7.6 렌더링
- __더 읽을거리
- __연습문제
- 16 빛 전송 II: 입체 렌더링
- 16.1 전송 방정식
- 16.2 입체 적분 인터페이스
- 16.3 방출 전용 적분기
- 16.4 단일 산란 적분기
- 16.5 표면 밑 산란
- 16.5.1 표본점의 푸아송 분포
- 16.5.2 표면 점 8진 트리의 생성
- 16.5.3 양극 확산 근사
- 16.5.4 계층적 적분으로 렌더링
- 16.5.5 산란 특성의 설정
- __더 읽을거리
- __연습문제
- 17 빛 전송 III: 사전 계산 빛 전송
- 17.1 기저 함수: 이론
- 17.1.1 부분 상수 기저
- 17.1.2 기저로의 투영
- 17.1.3 정규 직교 기저 함수
- 17.2 구면 조화
- 17.2.1 효율적인 계산
- 17.2.2 광원 투영
- 17.2.3 입사 방사 함수의 투영
- 17.2.4 물결 감소
- 17.2.5 회전
- 17.3 방사 탐색기
- 17.3.1 방사 탐색기의 생성
- 17.3.2 방사 탐색기의 사용
- 17.4 사전 계산한 확산 전송
- 17.5 사전 계산된 광택 전송
- 17.5.1 전송 행렬
- 17.5.2 BSDF 행렬
- 17.5.3 GlossyPRTIntegrator 구현
- __더 읽을거리
- __연습문제
- 18 회고와 미래
- 18.1 디자인 회고
- 18.1.1 추상성과 효율성
- 18.1.2 대안 디자인: 삼각형 전용
- 18.1.3 증가된 장면 복잡도
- 18.2 처리량 프로세서
- 18.2.1 미래
- 18.2.2 추가 자료
- 18.3 결론
- 부록 A 다용도 함수
- A.1 주 인클루드 파일
- A.2 이미지 파일 입력과 출력
- A.3 사용자 인터페이스
- A.4 탐색기와 통계
- A.5 메모리 관리
- A.6 수학적 루틴
- A.7 8진 트리
- A.8 kd 트리
- A.9 병렬화
- __더 읽을거리
- __연습문제
- 부록 B 장면 설명 인터페이스
- B.1 매개변수 집합
- B.2 초기화와 렌더링 옵션
- B.3 장면 정의
- B.4 새로운 객체 구현의 추가
- __더 읽을거리
- __연습문제
- 부록 C 코드 조각 찾아보기
- 부록 D 클래스와 멤버 찾아보기
- 부록 E 다양한 식별자 찾아보기