Top

물리 기반 렌더링 3/e [고급 그래픽스를 위한 이론, CG 영화에서 게임 엔진 렌더러까지]

  • 원서명Physically Based Rendering, Third Edition: From Theory to Implementation (ISBN 9780128006450)
  • 지은이매트 파르(Matt Pharr), 웬젤 제이콥(Wenzel Jakob), 그렉 험프리스(Greg Humphreys)
  • 옮긴이이상우
  • ISBN : 9791161753744
  • 69,000원
  • 2020년 01월 07일 펴냄
  • 페이퍼백 | 1,440쪽 | 188*235mm

책 소개

요약

게임과 영화 등에 사용되는 컴퓨터 그래픽스에 대한 심도 깊은 이해를 돕고, 게임 엔진이나 렌더러 구현에 관심이 있는 현업 종사자나 학생, 관련 기술을 사용하는 그래픽 아티스트에게 매우 유용한 책이다. 영화 프로덕션의 렌더맨이나 언리얼 엔진의 라이트 매스 같은 오프라인 렌더러의 기술과 최근 게임 엔진에서 사용하는 렌더링 기술을 다루고 있어 컴퓨터 그래픽스의 이해를 위한 최고의 서적이다. 특히 현재 영화뿐 아니라 실시간 렌더링까지 물리 기반 렌더링으로 변경되고 있기에, 엔비디아의 RTX와 DirectX 12의 DXR을 통해 보편화될 레이트레이싱 기술을 이해하기에 최고의 문헌이라 자부한다.

추천의 글

이 책은 확실히 아카데미상을 받을 만 하다. 나는 이 책이 퓰리처상 후보로도 임명돼야 한다고 믿는다.
- 도널드 커누스/ 『The Art of Computer Programming』의 저자

대단한 책이다. 이 책은 기묘한 수학, 매혹적인 물리, 실용적인 소프트웨어 공학, 최첨단 실사 렌더러를 작성하는 데 필요한 기술을 모두 다룬다. 이 모든 주제를 깔끔하고 교육적인 구성으로, 중요한 모든 세부 사항을 생략하지 않고 상세히 설명한다.
pbrt는 단지 레이트레이서(ray tracer)의 ‘장난감’ 구현에 그치지 않고, 안정적이며 완전한 전역 조명 렌더러다. pbrt는 수행 시간을 줄이고 복잡한 장면의 메모리 소모량을 줄이기 위한 중요한 최적화를 포함한다. 그리고 pbrt는 기타 렌더링 알고리즘 변종과 함께 쉽게 확장할 수 있다.
이 책은 학생을 위한 교과서일 뿐만 아니라, 실제 분야의 전문가를 위한 유용한 참고서다. 개정판은 메트로폴리스 빛 전송, 표면 밑 산란, 사전 계산 빛 전송 등으로 확장해 다루고 있다.
- 페르 크리스텐센(Per Christensen) /픽사 애니메이션 스튜디오 렌더맨 프로덕션, 선임 소프트웨어 개발자

연구나 최고급 렌더링 분야에서 직업을 찾고 있는가? 기초 교육을 받았다면 이제 이 책의 이론과 실전 예제, 즉 실제 코드로 자신의 프로젝트를 시작하라.
개정판에서 매트 파르와 그렉 험프리스는 메트로폴리스 빛 전송이나 의사 몬테카를로 방식 같은 가장 발전된 렌더링 기술도 쉽게 접근할 수 있도록 돕는다. 게다가 기반 작업을 통해 렌더러에 자료를 넣고 추출할 때의 고통을 겪지 않게 해준다.
거시적 접근 방식의 문학적 프로그래밍은 읽기 쉬운 문장의 깔끔한 로직으로 나타난다. 그래픽을 진지하게 생각한다면 최신 기술을 다룬 이 독창적이고도 가치 있는 책을 반드시 읽기 바란다.
- 알렉산더 켈러(Alexander Keller) /멘탈 이미지스(Mental Images) 수석 과학자

이 책의 대상 독자

이 책의 대상 독자층은 크게 세 종류로 나뉜다.
첫 번째는 대학원생 혹은 학부 고학년 컴퓨터 그래픽스 강의를 들을 수 있는 수준의 학생들이다. 이 책은 독자가 대학 입문 수준의 컴퓨터 그래픽스 지식을 기본적으로 갖췄다고 가정하지만, 벡터 기하학이나 변환 같은 특정 중요 개념은 설명한다. 몇 만 줄 이상의 프로그램을 경험해보지 못한 학생들에게 문학적 프로그래밍 방식은 이해하기 쉬운 바람직한 소개가 될 것이다. 독자들에게 시스템이 왜 이런 방식으로 구성됐는지 알려주기 위해 시스템의 핵심 인터페이스와 추상화를 설명하는 데 특별히 신경을 썼다.
두 번째 독자층은 컴퓨터 그래픽 분야의 전문적인 대학원생과 연구자다. 렌더링을 연구하는 연구자에게 이 책은 해당 분야에 대한 폭넓은 내용을 전할 것이며, pbrt 소스코드는 추가 개발하기에 유용한 기반을 제공한다(혹은 최소한 소스코드의 일부라도 사용할 수 있다). 다른 분야의 연구자인 경우 렌더링을 깊이 있게 이해하는 것은 앞으로의 연구에 유용할 것이라 믿는다.
세 번째 대상 독자층은 소프트웨어 개발 종사자다. 이 책의 많은 내용이 소프트웨어 개발자에게 익숙하겠지만, 알고리즘들의 문학적 방식의 설명은 새로운 관점을 제공할 것이다. pbrt는 표면 세분화(subdivision surfaces), 몬테카를로 빛 전송(Monte Carlo light transport)과 메트로폴리스 표본화(Metropolis sampling)같이 고도화된 구현이 어려운 알고리즘들과 테크닉들의 구현을 포함한다. 이 내용은 경험 있는 렌더링 현업자가 특히 관심 있는 분야일 것이다.
하나의 완전하고 비중 있는 렌더링 시스템의 구조를 파헤침으로써 독자들의 관심을 이끌어내기를 기대한다.

2판과 3판의 차이점

2판이 나온 후 6년이 지나 책과 pbrt 시스템을 갱신하고 확장할 시간이 됐다. 다루기에 가장 유용한 주제가 어떤 것인지 독자에게서 배웠다. 더욱이 렌더링 연구는 계속 빨라지고 있다. 현재 최고의 사용 예를 반영해 책의 많은 부분을 갱신하고 개선했다.
■ 양방향 빛 전송: pbrt의 3판에서는 완전한 기능의 양방향 경로 추적기를 포함하며, 입체 빛 전송과 경로를 가중시키기 위한 다중 중요도 표본화를 지원한다. 완전히 새로운 메트로폴리스 빛 전송 적분기는 양방향 경로 추적기의 요소를 사용하며, 특히 해당 알고리즘의 간결한 구현을 허용한다. 이 알고리즘의 기반은 대략 15년 전에 성립됐다. 이를 pbrt에서 완전히 지원하는 것은 이미 예전에 이뤄졌어야 했던 부분이다.
■ 표면 밑 산란: 많은 물체(특히 피부와 반투명 물체)의 모습은 표면 밑 빛 전송의 결과다. 2판에서의 표면 밑 산란 구현은 초기 2000년대의 최신 기술을 반영했다. 그 후 10년의 연구 진행을 반영하기 위해 BSSRDF 모형과 표면 밑 빛 전송 알고리즘을 철저히 검토했다.
이제 광선 추적 기반 표본화 기술과 함께 더 정확한 방사(diffusion) 방정식을 사용해 2판에서 사용된 비용이 큰 재처리 과정의 필요성을 제거했다.
■ 수치적으로 안정적인 교차점: 기하학적 광선 교차점 계산에서 부동소수점의 반올림 오류는 광선 추적의 오래된 도전이었다. 이는 이미지에 작은 오류를 유발할 수 있다.
이 사안에 집중하고 이 오류에 대한 보수적인(하지만 밀접한) 경계를 유도했으며, 이는 이전 렌더링보다 이 사안에 대한 구현을 더욱 안정적이게 한다.
■ 반투명 물질의 표현: 시스템에서 산란 매질이 설명되고 표현되는 방식을 개선했다. 이는 중첩된 산란 매질에 대해 더 정확한 결과를 얻게 한다. 새 표본화 기술에 따르면 균일 매질의 편향되지 않은 렌더링이 가능해 시스템의 다른 부분과 깔끔하게 통합된다.
■ 측정된 재질: 3판에서는 측정된 재질을 간헐 주파수 공간 기반을 사용해서 표현하고 계산하는 새 기술을 포함했다. 이 방식은 2판에서 사용된 표현으로는 불가능한 정확한 중요도 표본화를 가능하게 해서 편리하다.
■ 포톤 매핑: 포톤 매핑 알고리즘의 획기적인 발전이 메모리에 모든 포톤을 저장할 필요가 없는 변종의 개발로 이뤄졌다. pbrt의 포톤 매핑 알고리즘을 많은 어려운 빛 전송 효과를 효율적으로 렌더링하는 확률적 진행 포톤 매핑에 기반을 둔 구현으로 대체했다.
■ 표본 생성 알고리즘: 렌더링 알고리즘의 수치적인 적분에 사용되는 표본 값의 분포는 최종 결과의 품질에 큰 영향을 미친다. 이 주제에 대한 처리를 철저히 갱신했으며, 이전보다 더 깊이 새로운 방식과 효율적인 구현 기술을 다뤘다.
시스템의 다른 많은 부분은 해당 분야의 진행을 반영하기 위해 개선되고 갱신됐다. 미세표면 반사 모형은 훨씬 나은 표본화 기술과 함께 더 깊이 다뤘다. 털과 다른 세밀한 기하 구조를 위해 새 ‘곡선’ 모양을 추가했다. 이제 현실적인 렌즈 시스템을 모사하는 새 카메라 모형도 사용할 수 있다. 이 책에서 다양하고도 작은 변화를 통해 pbrt 같은 물리 기반 렌더링 시스템의 핵심 개념을 더 명확히 설명하고 묘사했다.

저자/역자 소개

지은이의 말

이 책은 완전한 렌더링 시스템을 위해 작성된 소스코드를 이용해 현대 렌더링에서 선정한 알고리즘을 설명한다. 표지 이미지를 비롯한 이 책의 모든 이미지는 이런 소프트웨어를 이용해 렌더링한 결과물이다. 이 책은 이런 이미지들을 생성하는 데 쓰인 알고리즘도 모두 수록했다. 렌더링 시스템인 pbrt는 산문적인 시스템에 대한 묘사와 구현하는 소스코드를 혼합하는 문학적 프로그래밍(literate programming)이라는 프로그래밍 방법론으로 개발됐다.
우리는 문학적 프로그래밍 접근법이 컴퓨터 그래픽스와 컴퓨터 과학 전반에 걸친 아이디어를 도입하는 데 가치 있는 방법이라고 믿는다. 흔히 알고리즘의 세부적인 부분들은 구현하기 전에는 명확하지 않거나 보이지 않으므로, 실제 구현된 코드를 읽는 것은 알고리즘의 세부적인 부분을 확실히 이해할 수 있는 좋은 방법이다. 피상적으로 이해한 많은 알고리즘보다는 이렇게 구현된 코드를 통해 제대로 이해할 수 있게 엄선된 소수의 알고리즘이 컴퓨터 그래픽스를 연구하는 데 더 큰 도움이 될 것이다.
pbrt와 이 책에서 다루는 내용은 극 사실적 렌더링(photorealistic rendering)에 중점을 둔다. 극 사실적 렌더링은 다양하게 정의할 수 있으며, 주로 카메라로 찍은 사진과 구분이 불가능한 이미지를 생성하는 작업이나, 인간이 실제 장면을 보는 것과 같은 반응을 일으키는 작업으로 정의된다. 극 사실주의(photorealism)에 집중하는 데는 다양한 이유가 있다. 극 사실적 이미지는 영화 특수효과 업계에서 매우 중요한데, 컴퓨터로 제작한 이미지는 현실의 화면과 부드럽게 이어지도록 자주 합성되기 때문이다. 모든 이미지가 인공적으로 제작되는 엔터테인먼트에서 극 사실주의는 관객이 실제로는 존재하지 않는 것을 보고 있다는 사실을 잊게 해주는 효과적인 방법이다. 마지막으로 극 사실주의는 렌더링 시스템의 결과물 품질에 대한 합리적으로 잘 정의된 평가 방법을 제공한다.
우리의 접근 방식으로 인해 이 책의 내용과 설명하는 시스템에서 최첨단 렌더링 기술을 빠짐없이 다루지는 못했다. 많은 극 사실적 렌더링의 재미있는 주제를 소개하지는 않았는데, 우리의 소프트웨어 아키텍처에 잘 부합하지 않거나 구현의 복잡도에 비해 알고리즘 설명의 교육학적 가치가 낮기 때문이다. 대신 소개하지 않은 주제에 관심이 있는 독자를 위해 관련 정보를 찾을 수 있는 시작점을 제공한다. 인터랙티브 렌더링(interactive rendering), 시각화(visualization), 펜과 잉크 스타일의 회화적 렌더링 등 여타 많은 렌더링의 분야들도 다루지 않았다. 그럼에도 이 시스템의 많은 알고리즘과 아이디어는 다른 다양한 렌더링 스타일에 적용할 수 있다.

지은이 소개

매트 파르(Matt Pharr)

구글의 소프트웨어 엔지니어다. 인텔이 인수한 네옵티카(Neoptica)와 엔비디아(NVIDIA)가 인수한 엑스루나(Exluna)의 공동 설립자다. 예일대학교를 졸업하고, 스탠포드대학교의 그래픽스 랩에서 팻 한라한의 지도하에 박사 학위를 받았다.

웬젤 제이콥(Wenzel Jakob)

로잔 연방 공과대학교(EPFL) 컴퓨터 통신과학부의 조교수다. 재질 표현 모델화, 렌더링 알고리즘, 빛의 경로의 고차원 기하 구조를 중심으로 연구한다. 스티브 마슈너(Steve Marschner)의 지도 아래서 코넬대학교에서 박사 학위를 받았으며, 올가 소르킨 헤르눙(Olga Sorkine Hornun)의 지도 아래 박사후 과정 연구를 위해 ETH 취리히에 합류했다. 또한 연구 지향 렌더링 시스템인 미츠바 렌더러(Mitsuba renderer)의 리드 개발자다.

그렉 험프리스(Greg Hunphreys)

판듀얼(FanDuel)의 엔지니어링 디렉터며, 구글의 크롬 그래픽 팀과 엔비디아의 옵틱스 GPU 레이트레이싱 엔진에서 일했다. 버지니아대학교의 컴퓨터 과학의 교수였으며, 고성능과 물리 기반 컴퓨터 그래픽스에서 연구를 수행했으며, 컴퓨터 아키텍처와 비쥬얼라이제이션도 연구했다. 프린스턴대학교를 졸업하고 팻 한라한의 지도하에 스탠포드대학교에서 컴퓨터 과학 박사 학위를 받았다. 광선을 추적하지 않을 때는 보통 브리지 토너먼트를 즐긴다.

옮긴이의 말

컴퓨터로 표현할 수 있는 수많은 가상 세계에 가장 직관적으로 접근하는 방법은 렌더링이다. 인간의 감각 중 뇌의 성능을 가장 많이 사용하고, 세계를 인지하는 가장 큰 부분이 시각이기에, 인간의 뇌는 시각 처리에 많은 부분을 할애하고 있다. 그러하기에 컴퓨터 그래픽스는 수많은 분야에서 사용되며, 이제는 모든 미디어에 자연스럽게 녹아 들어있다.
수많은 컴퓨터 그래픽스의 연구 결과 중에서 가장 기본이 되는 핵심 이론이 레이트레이싱을 통한 빛 반사의 시뮬레이션이다. 알고리즘의 엄청난 비용에도 최적화와 비용 대비 퀄리티 향상을 위한 끊임없는 연구로 인해, 실시간 렌더링에서도 실물과 상당히 유사한 퀄리티를 보여준다. 특히나 2018년에 발표한 엔비디아의 RTX 발표와 마이크로소프트의 DirectX 12의 DXR 도입은 이제 모든 그래픽스 관계자가 염원하던 시대의 시작을 알리는 효시가 될 것이다.
대학교 학부 시절에는 그래픽스에 관심이 없었기에 이론적인 토대가 별로 없는 상태에서 게임 그래픽스를 통해 귀납적으로 학습하고 있었다. 그러던 중 보게 된GDC와 SIGGRAPH 같은 해외 콘퍼런스의 내용은 심히 흥미로웠다. 그때 지적 갈증을 해결해준 책이 바로 이 책의 초판이었으며, 이를 통해 그래픽스 분야로 유학을 가게 됐기에 이 책은 유학길에 들고 간 유일한 책이었다. 심도 깊은 내용과 풍부한 레퍼런스는 부족했던 기반 지식을 채워주기 충분했고, 고급 실시간 렌더러와 언리얼 엔진의 개발 연구 과정에서의 렌더링 이론 이해에도 매우 큰 도움이 됐다.
2판에서는 전통적인 오프라인 렌더러의 기법뿐만이 아니라, 이를 응용하거나 비슷한 결과를 내는 당시 최신 실시간 렌더러의 기술과 근래의 GPGPU까지 소개돼 있어 최신 기술에 대한 이해도를 높일 수 있었다.
꽤 오랜 시간이 흐른 후에 나온 3판에서는 그동안의 레이트레이싱 기술의 발전과 변화된 기술 기반에 대한 상세한 설명을 더했다. 또한 조금 산발적이던 이론과 기술을 재분류하고 재정리해 2판보다 접근성있는 설명력을 갖췄으므로, 처음 보는 독자에게 좀 더 이해하기 쉬운 구성이 됐다고 믿는다.
이제 영화 제작과 실시간 그래픽 애플리케이션에서 물리 기반 렌더링이 보편적으로 사용되기 시작한 이후에 3판이 나온 만큼, 기존 제작 파이프라인과 물리 기반 렌더링이 도입된 이후의 제작 파이프라인과의 차이와 결과에 대한 예를 통해 이해를 도울 수 있다.
번역 의뢰를 받았을 때 바쁜 일정과 방대한 양으로 인해 주저했지만, 끝까지 진행할 수 있었던 것은 이 책에 대한 나의 존경의 발로일 것이다. 컴퓨터 그래픽스 분야는 여전히 한글 용어가 제대로 확립되지 않았기에 최대한 이해하기 쉽게 풀어보려고 했지만, 미흡한 부분이 많아 아쉬움이 남는다. 그럼에도 이 책을 통해 좀 더 많은 사용자가 핵심 그래픽 이론에 대해 이해할 수 있기를 바란다.

옮긴이 소개

이상우

과학에 흥미가 많았던 과학도로서, 과학고를 조기 졸업하고 KAIST에 입학해 전산학과를 수석으로 졸업했다. 컴퓨터로 표현할 수 있는 가상 세계에 흥미가 높아 엔씨소프트에서 게임 개발을 시작했다. 게임 그래픽을 통해 오프라인 렌더러 기반의 이론에 관심을 갖게 됐고, 컴퓨터 그래픽 이론을 연구하고자 UNC-CH의 그래픽 랩으로 유학을 가서 학위를 받았다. 에픽 게임즈에서 최고의 실시간 렌더러를 가진 게임 엔진인 언리얼 엔진 3/4를 개발하다가 엔씨소프트로 돌아와 AAA 퀄리티의 그래픽을 위해 파이프라인 전반에 대한 포괄적인 기술을 개발 중이다.

목차

목차
  • 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 적분기 인터페이스와 SamplerIntegrator
  • 1.3.4 주 렌더링 반복문
  • 1.3.5 휘티드 레이트레이싱의 적분기
  • 1.4 pbrt의 병렬화
  • 1.4.1 자료 경쟁과 조정
  • 1.4.2 pbrt의 관습
  • 1.4.3 pbrt의 스레드 안전 기대치
  • 1.5 이 책을 읽는 방법
  • 1.5.1 연습문제
  • 1.6 코드의 사용과 이해
  • 1.6.1 포인터 혹은 참조?
  • 1.6.2 추상화와 효율성
  • 1.6.3 코드 최적화
  • 1.6.4 이 책의 웹 사이트
  • 1.6.5 시스템의 확장
  • 1.6.6 버그
  • 1.7 간단한 물리 기반 렌더링에 대한 역사
  • 1.7.1 연구
  • 1.7.2 제작
    • 더 읽을거리
    • 연습문제

  • 2장. 기하 구조와 변환
  • 2.1 좌표계
  • 2.1.1 좌표계의 손 방향
  • 2.2 벡터
  • 2.2.1 내적과 외적
  • 2.2.2 정규화
  • 2.2.3 다양한 연산
  • 2.2.4 한 벡터로부터의 좌표계
  • 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 애니메이션(Animation) 변환
  • 2.9.1 사원수
  • 2.9.2 사원수 보간
  • 2.9.3 AnimatedTransform 구현
  • 2.9.4 움직이는 경계 상자의 경계
  • 2.10 상호작용
  • 2.10.1 표면 상호작용
    • 더 읽을거리
    • 연습문제

  • 3장. 모양
  • 3.1 기본 모양 인터페이스
  • 3.1.1 경계
  • 3.1.2 광선-경계 교차
  • 3.1.3 교차 테스트
  • 3.1.4 표면 면적
  • 3.1.5 방향성
  • 3.2 구
  • 3.2.1 경계
  • 3.2.2 교차 테스트
  • 3.2.3 법선 벡터의 편미분
  • 3.2.4 SurfaceInteraction 초기화
  • 3.2.5 표면 면적
  • 3.3 원기둥
  • 3.3.1 경계
  • 3.3.2 교차 테스트
  • 3.3.3 표면 면적
  • 3.4 원반
  • 3.4.1 경계
  • 3.4.2 교차 테스트
  • 3.4.3 표면 면적
  • 3.5 기타 2차 곡면
  • 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.8 세분 표면
  • 3.8.1 메시 표현
  • 3.8.2 세분
  • 3.9 반올림 오차 관리
  • 3.9.1 부동소수점 산술
  • 3.9.2 보존적 광선-경계 교차
  • 3.9.3 안정적 삼각형 교차
  • 3.9.4 교차점 오차 경계
  • 3.9.5 안정적으로 생성한 광선 원점
  • 3.9.6 광선 원점 뒤의 교차의 회피
  • 3.9.7 토론
    • 더 읽을거리
    • 연습문제

  • 4장. 프리미티브와 교차 가속
  • 4.1 기본체 인터페이스와 기하학적 기본체
  • 4.1.1 기하학적 기본체
  • 4.1.2 TransformedPrimitive 물체 인스턴싱과 애니메이션 기본체
  • 4.2 집합체
  • 4.3 경계 볼륨 계층
  • 4.3.1 BVH 생성
  • 4.3.2 표면 면적 휴리스틱
  • 4.3.3 선형 경계 입체 계층
  • 4.3.4 횡단을 위한 간편한 BVH
  • 4.3.5 횡단
  • 4.4 kd-트리 가속기
  • 4.4.1 트리 표현
  • 4.4.2 트리 생성
  • 4.4.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 환경 카메라
  • 6.4 사실적 카메라
  • 6.4.1 렌즈 시스템 표현
  • 6.4.2 렌즈를 지나는 광선의 추적
  • 6.4.3 두꺼운 렌즈 근사
  • 6.4.4 초점 조정
  • 6.4.5 출사동
  • 6.4.6 광선 생성
  • 6.4.7 카메라 측정 방정식
    • 더 읽을거리
    • 연습문제

  • 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.2.2 기본 Sampler 인터페이스
  • 7.2.3 표본기 구현
  • 7.2.4 픽셀 표본기
  • 7.2.5 전역 표본기
  • 7.3 층별 표본화
  • 7.4 핼톤 표본기
  • 7.4.1 해머슬리와 핼톤 연속
  • 7.4.2 핼톤 표본기 구현
  • 7.5 (0, 2)-연속 표본기
  • 7.5.1 생성 행렬로 표본화
  • 7.5.2 표본기 구현
  • 7.6 최소거리 최대화 표본기
  • 7.7 소볼' 표본기
  • 7.8 이미지 재구성
  • 7.8.1 필터 함수
  • 7.9 필름과 이미지화 파이프라인
  • 7.9.1 필름 클래스
  • 7.9.2 픽셀 값을 필름에 공급
  • 7.9.3 이미지 결과
    • 더 읽을거리
    • 연습문제

  • 8장. 반사 모델
  • 8.1 기본 인터페이스
  • 8.1.1 반사
  • 8.1.2 BxDF 크기변환 어댑터
  • 8.2 거울 반사와 투과
  • 8.2.1 프레넬 반사
  • 8.2.2 거울 반사
  • 8.2.3 반사광 투과
  • 8.2.4 프레넬 조절 거울 반사와 투과
  • 8.3 램버트 반사
  • 8.4 미세면 모델
  • 8.4.1 오렌-네이어 확산 반사
  • 8.4.2 미세면 분포 함수
  • 8.4.3 차폐와 그림자
  • 8.4.4 토랜스-스패로우 모델
  • 8.5 프레넬 입사 효과
  • 8.6 퓨리에 기반 BSDF
  • 8.6.1 스플라인 보간
    • 더 읽을거리
    • 연습문제

  • 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 ImageTexture 계산
  • 10.4.3 밉맵
  • 10.4.4 등방성 삼각 필터
  • 10.4.5 타원형 가중 평균
  • 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.3.2 균일 매질
  • 11.3.3 3D 격자
  • 11.4 BSSRDF
  • 11.4.1 분리 가능한 BSSRDF
  • 11.4.2 도표화된 BSSRDF
  • 11.4.3 표면 밑 산란 재질
    • 더 읽을거리
    • 연습문제

  • 12장. 광원
  • 12.1 빛 방출
  • 12.1.1 흑체 방출체
  • 12.1.2 표준 광원
  • 12.2 빛 인터페이스
  • 12.2.1 시야 테스트
  • 12.3 점광원
  • 12.3.1 스포트라이트
  • 12.3.2 텍스처 투영 빛
  • 12.3.3 각광도계 다이어그램 빛
  • 12.4 원거리 광
  • 12.5 영역 광
  • 12.6 무한 영역 광
    • 더 읽을거리
    • 연습문제

  • 13장. 몬테카를로 적분
  • 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 1차원 설정
  • 13.4.5 메트로폴리스 표본화로 적분 예측
  • 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 삼각형 표본화
  • 13.6.6 카메라 표본화
  • 13.6.7 부분 상수 2D 분포
  • 13.7 러시안 룰렛과 분리
  • 13.7.1 분리
  • 13.8 신중한 표본 배치
  • 13.8.1 계층 표본화
  • 13.8.2 의사 몬테카를로
  • 13.8.3 표본 뒤틀림과 왜곡
  • 13.9 편향
  • 13.10 중요성 표본화
  • 13.10.1 다중 중요도 표본화
    • 더 읽을거리
    • 연습문제

  • 14장. 빛 전송 I: 표면 반사
  • 14.1 반사 함수 표본화
  • 14.1.1 미세면 BxDF
  • 14.1.2 FresnelBlend 표본화
  • 14.1.3 광택 반사와 투과
  • 14.1.4 퓨리에 BSDF
  • 14.1.5 응용: 반사 예측
  • 14.1.6 BSDF 표본화
  • 14.2 광원 표본화
  • 14.2.1 특이점이 있는 빛
  • 14.2.2 모양 표본화
  • 14.2.3 영역 광
  • 14.2.4 무한 영역 광
  • 14.3 직접 광
  • 14.3.1 직접 광 적분의 예측
  • 14.4 빛 전송 방정식
  • 14.4.1 기본 유도
  • 14.4.2 LTE에로의 분석적 해
  • 14.4.3 LTE의 표면형
  • 14.4.4 경로에 대한 적분
  • 14.4.5 피적분 함수에서의 델타 분포
  • 14.4.6 피적분 함수의 분할
  • 14.5 경로 추적
  • 14.5.1 개요
  • 14.5.2 경로 표본화
  • 14.5.3 점진적 경로 생성
  • 14.5.4 구현
    • 더 읽을거리
    • 연습문제

  • 15장. 빛 전송 II: 입체 렌더링
  • 15.1 전송 방정식
  • 15.1.1 일반화된 경로 공간
  • 15.2 입체 산란 표본화
  • 15.2.1 균일 매질
  • 15.2.2 불균일 매질
  • 15.2.3 위상 함수 표본화
  • 15.3 입체 빛 전송
  • 15.3.1 경로 추적
  • 15.4 표면 밑 반사 함수의 표본화
  • 15.4.1 SeparableBSSRDF의 표본화
  • 15.4.2 TabulatedBSSRDF 표본화
  • 15.4.3 경로 추적기에서의 표면 및 산란
  • 15.5 확산 방정식을 사용한 표면 밑 산란
  • 15.5.1 유사성의 원칙
  • 15.5.2 확산 이론
  • 15.5.3 단극 해
  • 15.5.4 비고전 확산
  • 15.5.5 양극 해
  • 15.5.6 빛줄기 해
  • 15.5.7 단일 산란 항
  • 15.5.8 BSSRDFTable 채우기
  • 15.5.9 산란 특성 설정
    • 더 읽을거리
    • 연습문제

  • 16장. 빛 전송 III: 사전 계산 빛 전송
  • 16.1 경로-공간 측정 방정식
  • 16.1.1 카메라 표본화
  • 16.1.2 광선 표본화
  • 16.1.3 비대칭 산란
  • 16.2 확률적 점진적 광자 매핑
  • 16.2.1 입자 추적을 위한 이론적 기반
  • 16.2.2 광자 매핑
  • 16.2.3 SPPMIntegrator
  • 16.2.4 가시점의 누적
  • 16.2.5 가시점 격자 생성
  • 16.2.6 광자 기여의 누적
  • 16.3 양방향 경로 추적
  • 16.3.1 정점 추상화 레이어
  • 16.3.2 카메라와 빛의 세부 경로 생성
  • 16.3.3 세부 경로 연결
  • 16.3.4 다중 중요도 표본화
  • 16.3.5 무한 영역 광과 BDPT
  • 16.4 메트로폴리스 빛 전송
  • 16.4.1 주 표본 공간 MLT
  • 16.4.2 다중화 MLT
  • 16.4.3 렌더링에의 적용
  • 16.4.4 주 표본 공간 표본기
  • 16.4.5 MLT 적분기
    • 더 읽을거리
    • 연습문제

  • 17장. 회고와 미래
  • 17.1 디자인 회고
  • 17.1.1 삼각형 전용
  • 17.1.2 증가된 장면 복잡도
  • 17.1.3 상용 렌더링
  • 17.1.4 특수한 컴파일
  • 17.2 대안 하드웨어 아키텍처
  • 17.2.1 GPU 레이트레이싱
  • 17.2.2 패킷 추적
  • 17.2.3 레이트레이싱 하드웨어
  • 17.2.4 미래
  • 17.3 결론
  • 부록 A. 유틸리티 함수
  • 부록 B. 장면 설명 인터페이스
  • 부록 C. 코드 조각 찾아보기
  • 부록 D. 클래스, 메소드 및 다양한 식별자 찾아보기

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.180 그림 2.19 2행]
∂p/∂u와 ∂p/∂v는
->
∂n/∂u와 ∂n/∂v는

[p.191 그림 3.3]

->

[p.226 4-6행]
음영 기하 구조를 위한 법선과 접선 벡터는 Shape에 저장되지 않을 수 있는 GetShadingGeometry() 메서드에서 받은 행렬을 통해 월드 공간으로 변환해야 하므로 물체 공간에 남겨진다.
->
문장 삭제

[p.280 아래에서 6행]

->

[p.336 첫 번쨰 문단 3-4행]
극좌표 분해 기반 변환 보관 알고리즘
->
극좌표 분해 기반 변환 보간 알고리즘

[p.367 첫 번쨰 문단 2행]
개시 라인
->
캐시 라인

[p.377 두 번쨰 문단 2행]
KdTreeAccel::nAllocedNodessms는
->
KdTreeAccel::nAllocedNodes는

[p.378 세 번쨰 문단 1행]

->