이미 소장하고 있다면 판매해 보세요.
|
1부. 유니티 셰이더 소개
1장. 셰이더 개발 과정 __셰이더란? ____빛의 시뮬레이션으로서의 셰이더 ____원근법을 활용한 렌더링 ____렌더링 과정 ____GPU에서 동작하는 코드로서의 셰이더 ____셰이더 실행 ____여러 가지 종류의 셰이더 ____좌표 체계 ____빛의 종류 ____점 광원 ____방향 광원 ____면 광원 __렌더링 방정식 ____빛의 특성 ________반사된 빛 ____렌더러 종류 ________포워드 ________디퍼드 ________포워드+(타일 포워드 셰이딩) ________미래 렌더러 ____셰이더 시각 그래프 __요약 2장. 첫 유니티 셰이더 __유니티 소개 ____준비 ____유니티 UI ____첫 번째 씬 생성 ____셰이더 수정 ________셰이더의 경로와 이름 ________특성 ________하위 셰이더 ________태그 ________패스 ________CGPROGRAM(그리고 ENDCG) ________Pragma 선언 ________Includes ________입력과 출력 구조체 ________변수 선언 ________정점 함수와 프레그먼트 함수 __셰이더 수정 ____하얀색에서 빨간색으로 ____속성 추가 __요약 3장. 그래픽스 파이프라인 __그래픽스 API 기본을 배워야 하는 이유 __그래픽스 파이프라인의 일반적인 구조 __레스터라이저 __언릿 셰이더의 구조 __정점 데이터 구조체 __정점 함수 __프래그먼트 데이터 구조체 __프래그먼트 함수 __정점 색상 지원 추가 ____Appdata에 추가 ____v2f에 추가 ____정점 함수에 색상 할당 ____프레그먼트 함수에서 색상 값 사용하기 ____최종 결과 __요약 4장. 좌표 공간 변환 __좌표 공간: 누가 누구인가? ____객체 공간 ____월드 공간 ____공간과 공간 간의 변환 ____카메라 공간 ____절단 공간 ____정규 기기 좌표 ____화면 공간 __내장 함수가 내포하는 것들 __셰이더 “표준 라이브러리” 코드 위치 __요약 5장. 최초 라이팅 셰이더 __라이팅 셰이더 ____근사란? ____디퓨즈 근사 ____스펙큘러 근사 ____디퓨즈와 스펙큘러의 조합 __기본 라이팅 계산 ____디퓨즈 __최초 유니티 라이팅 셰이더 ____디퓨즈 항 구현하기 ____텍스처 속성 추가 ____엠비언트 값 추가 __요약 6장. 스펙큘러 구현 __기본 라이팅 계산(파트 II) ____스펙큘러 ____최초 유니티 라이팅 셰이더 (파트 II) ________스펙큘러 구현 __더 많은 광원 지원하기 __요약 7장. 서피스 셰이더 __서피스 셰이더는 무엇인가? ____기본 서피스 셰이더 ____Pragmas ____신규 데이터 구조체 ____서피스 함수 ____라이팅 모델이란? ____서피스 셰이더의 데이터 흐름 __서피스 셰이더 편집 ____두 번째 알베도 맵 추가하기 ____노멀맵 추가하기 ____그림자 작동 확인하기 ____다른 내장 라이팅 모델 사용 __커스텀 라이팅 모델 작성 ____라이팅 모델 함수 시그니처 ____SurfaceOutput 데이터 구조체 ____서피스 함수 ____속성 블록 ____커스텀 라이팅 함수 __요약 2부. 물리 기반 셰이딩 8장. 물리 기반 셰이딩이란? __전자기파의 일종인 빛 __미세면 이론 개요 __굴절과 다른 beasts __프레넬 반사율 __빛을 측정하는 방법 ____입체각 ____파워 ____일레디안스 __재질을 표현하는 방법 ____양방향 반사 분포 함수 ________양성 ________상반성 ________에너지 보존 __미세면 이론 ________프레넬 ________정규 분포 함수 ________기하 함수 __렌더링 방정식(파트 2) __실시간 렌더링 해킹에 필요한 것들 __HDR과 톤 매핑 __선형 색상 공간 __왜 물리 기반 셰이딩이 유용한가? __요약 9장. 물리 기반 셰이더 제작하기 __퐁 분석하기 ____양수성 확인 ____상반성 확인 ____에너지 보존법칙 확인 __개선된 퐁 __요약 10장. 후처리 효과 __후처리 효과 동작 원리 __왜 후처리 효과가 유용한가? __후처리 효과 설정 ____HDR과 선형 설정 ____스크립트 설정 __선형 변환 __렌더 텍스처 간략 오버뷰 __단순 톤 매핑 __후처리 스택 v1 __후처리 스택 v2 __요약 11장. BRDF 누가 누구인가? __BRDF 익스프롤러 __BRDF 파라미터화 __BRDF 익스플로러의 출력 해석 ____퐁 ____MERL 데이터베이스 ____BRDF 비교하기 ____실시간 렌더링에 사용하는 BRDF 불완전 리스트 ________어시크먼 셜리 ________쿡 토렌스 ________오렌 네이어 ________월드 ________디즈니 __요약 12장. BRDF 구현하기 __어떤 BRDF를 구현할 것인가? __레퍼런스 찾기 ____쿡토렌스 ____디즈니 __출발은 논문에서부터 ____쿡토렌스 (혹은 미세면) BRDF ____디즈니 BRDF __구현 ____속성 ____커스텀 라이트 함수 구현 ____유틸리티 함수 ____쿡토렌스 구현 ____수정된 GGX 분포항 ____슐릭 프레넬 항 ____수정된 슐릭 기하항 ____쿡토렌스 함수에 넣기 ____디즈니 디퓨즈 ____디즈니 디퓨즈의 다른 구현 ____전부 한곳에 담기 __요약 13장. 표준 셰이더 후킹 __표준 셰이더 역공학 ____셰이더 키워드 ____표준 셰이더 구조체 ____쉐이드 키워드 추적 ____대체 표준 셰이더 구현 ________BRDF 함수 구현 ________BRDF 셰이더 작성하기 ________BRDF 셰이더를 위한 GUI 제작 __요약 14장. 고급 기술 구현 __기술을 탐색할만 한 곳 __반투명 구현 ____속성 ____구현 __실시간 반사 ____큐브맵이란? ____반사 브로브란? ____큐브맵 평가 ____큐브맵 프로세싱 프로그램 __요약 3부. 셰이더 개발에 대한 조언 15장. 아티스트가 사용할 셰이더 제작 __디즈니 BRDF의 UX __일반적인 문제 #1: 너무나도 많은 세팅 __일반적인 문제 #2: 불분명한 세팅 값의 효과 __일반적인 문제 #3: 세팅 값 의존성 __일반적인 문제 #4: 텍스처에 불분명한 정보 유입 __일반적인 문제 #5: 이상한 범위 __좋은 예시: 블렌더의 디즈니 BRDF __요약 16장. 복잡도와 우버셰이더 __우버셰이더란? __표준 셰이더 __셰이더에서 복잡도 문제를 일으키는 요인 __우버셰이더 가챠(Gotcha) __우버셰이더 장점 __요약 17장. 셰이더가 정상작동하지 않을 때 __일반적인 트릭 __디버깅 도구 __생성된 셰이더 코드 살펴보기 __퍼포먼스 프로파일링 __요약 18장. 최신 트렌드 따라잡기 __컨퍼런스 __서적 __온라인 커뮤니티 __웹사이트 __소셜 미디어 __결론 |
Claudia Doppioslash
최동훈의 다른 상품
|
★ 이 책에서 다루는 내용 ★
■ 셰이더 프로그래밍 마스터 ■ 물리 기반 셰이딩 구현 ■ 셰이더 하부시스템 조작법 ■ 커스텀 물리 기반 라이팅 시스템 구현 및 선택 뒤에 숨겨진 로직 관찰 ★ 이 책의 대상 독자 ★ 유니티 경험이 있지만 셰이더 코딩 경험은 거의 없거나 전혀 없는 이들을 대상으로 쓴 책이다. 어느 정도 프로그래밍 경험이 있다면 코드를 다루는 것부터 공부할 필요가 없기 때문에 도움이 될 것이다. 물리 기반 셰이딩 원리나 노드 기반 인터페이스가 아닌 셰이더 프로그래밍 코드 작성법을 배우고자 하는 테크니컬 아티스트도 이 책을 읽기에 적합하다. 또한 셰이더 프로그래밍을 시작하는 방법을 배우고 싶거나 물리 기반 셰이딩과 관련된 몇 가지 기술을 구현하고자 하는 프로그래머에게도 도움이 될 것이다. ★ 이 책의 구성 ★ 이 책은 3부, 18장으로 구성돼 있다. 처음부터 순차적으로 읽을 수 있게 집필했지만 이미 알고 있는 부분은 넘어가도 괜찮다. 셰이더 경험이 어느 정도 있고 유니티에 대한 특정 내용을 찾고 있다면, 1장을 대충 훑고 바로 5장으로 넘어가는 것을 추천한다. 이미 그래픽스 프로그래밍에 능숙하고 물리 기반 셰이딩에만 관심이 있다면, 1장을 대충 훑고 8장으로 넘어가는 것을 추천한다. 만약 단 한 줄의 셰이더 코드도 작성한 적이 없고 노드 에디터 사용에 익숙한 테크니컬 아티스트라면, 이 책을 순서대로 읽되 유니티에서 셰이더 코드를 작성하는 방법이 나오는 2장을 특히 집중해서 읽을 것을 추천한다. 1부. 유니티 셰이더 소개 1부는 독자를 셰이더 초보에서 그래픽스 프로그래밍의 중요 개념 지식 및 비물리 기반 셰이더 작성에 대한 지식을 갖춘 사람으로 만들어 줄 것이다. 1장, ‘셰이더의 동작 방법’ 렌더링과 그래픽스 프로그래밍의 기본 개념을 다룬다. 셰이더가 무엇인지, 그래픽스 파이프라인의 동작, 렌더링 프로세스, 빛의 성질, 셰이더 및 렌더러 타입에 대한 전체적인 지식을 얻을 수 있다 2장, ‘첫 번째 유니티 셰이더’ 첫 번째 유니티 셰이더를 작성해 볼 것이다. 프로젝트 설정, 씬 제작, 문법, 유니티 셰이더를 구성하는 부품을 다룬다. 단순한 단색 언릿 셰이더를 작성해볼 것이다. 3장, ‘그래픽스 파이프라인’ 그래픽스 파이프라인이 어떻게 동작하는지, 그래픽스 파이프라인으로 셰이더의 다양한 부분을 어떻게 후킹하는지, 거기에 무슨 데이터가 전송되고 어떻게 처리되는지, 데이터를 가지고 할 수 있는 것이 무엇인지를 설명한다. 4장, ‘좌표 공간 변환’ 그래픽스 파이프라인에서 일반적으로 쓰이는 각각의 좌표 공간을 보여주고 설명한다. 그리고 유니티가 제공하는 변환 도구에 대해서 설명한다. 5장, ‘첫 번째 라이팅 셰이더’ 몇 가지 일반적인 라이팅 콘셉트와 근사법(디퓨즈나 스펙큘러와 같은)을 소개한다. 그리고 이를 언릿 셰이더에 구현하는 방법에 대해서 설명한다. 이 장을 마치면 독자는 첫 번째 커스텀 라이팅 셰이더를 작성하게 되는 것이다. 6장, ‘스펙큘러 구현’ 5장에 이어 스펙큘러 근사법을 구현해 디퓨즈를 완성한다. 또한 언릿 셰이더에 한 개 이상의 빛을 지원하는 방법과 셰이더 랩 패스의 실용적인 사용에 대해 설명한다. 7장, ‘서피스 셰이더’ 지금까지 언릿 셰이더만을 사용했다. 언릿 셰이더가 좀 더 직관적이고 그래픽스 파이프라인과 셰이더가 맞닿는 곳을 숨기지 않기 때문이다. 하지만 언릿 셰이더는 불필요한 내용이 많을 수 있으므로, 이 장에서는 서피스 셰이더를 소개하고 서피스 셰이더가 어떻게 꽤나 많은 양의 시간과 타이핑을 절약하는지에 대해서 설명한다. 앞의 두 장에서 구현했던 언릿 셰이더를 서피스 셰이더의 커스텀 라이팅 함수로 재구현할 것이다. 2장. 물리 기반 셰이딩 이론부터 구현까지 온전히 물리 기반 셰이딩에 집중한다. 이제 독자는 유니티 셰이더를 구현해봤으므로 렌더링이 어떻게 동작하는지 탄탄한 기초를 알 것이다. 따라서 물리 원리에 따른 셰이더 작성에 완전히 집중할 수 있다. 8장, ‘물리 기반 셰이딩이란?’ 미세면 이론을 보여주고 1장에서 빛이 동작하는 방식을 설명하는 데 단순화한 몇 가지 것을 바로잡는다. 프레넬 반사와 굴절률뿐만 아니라 빛을 측정하는 방법, 재질을 때리는 빛의 성질을 함수로 표현하는 방법을 살펴볼 것이다. 물리 기반 라이팅 모델에 필요한 것을 설명하고, 렌더링 방정식의 모든 부분을 설명한다. 9장, ‘물리 기반 셰이더 제작하기’ 물리 기반 셰이딩의 개념을 곧바로 실전에 적용하기 위해 7장에서 배운 커스텀 라이팅 서피스 셰이더를 가지고 물리 기반에 필요 조건들을 갖춘다. 10장, ‘후처리 효과’ 후처리는 HDR 렌더링에 필요한 부분이다. 물리 기반 셰이딩에 HDR 자체가 필요하다. 에셋 스토어를 통해 유니티가 제공하는 후처리 효과 스택은 강력하지만, 여전히 이해가 필요하며 종종 후처리 효과를 구현할 수 있어야 한다. 또한 유니티 후처리 스택 버전 1과 버전 2의 개요를 포함하고 있다. 11장, ‘BRDF 누가 누구인가?’ 일반적인 라이팅 함수들을 이름과 효과에 따라 알게 될 것이다. 이 장에는 디즈니 연구소에서 커스텀 라이팅 함수를 개발하고 분석하기 위해 개발한 엄청난 프로그램인 BRDF 익스플로러가 등장한다. 12장, ‘BRDF 구현’ 몇 가지 물리 기반 라이팅 함수를 알게 됐으므로 하나 혹은 둘 정도를 실제로 구현해본다. 정보를 수집하고 물리 기반 BRDF를 구현하는 방법을 다루며, 쿡토렌스 스펙큘러와 디즈니 BRDF 디퓨즈를 구현할 것이다. 13장, ‘표준 셰이더 후킹’ 12장에서 구현한 라이팅 함수를 유니티 표준 셰이더 인프스트럭처에 주입하는 방법을 설명한다. 이로써 거의 무료로 반사와 광역 조명등을 제공할 것이다. 14장, ‘고급 기술 구현’ BRDF 구현과 관련된 모든 것을 마치고, 반투명과 같이 BRDF로 구현할 수 없는 빛 현상을 추가하는 방법을 설명한다. 또한 반사 프로브가 작동하는 복잡한 메커니즘을 설명한다. 3부. 셰이더 개발 조언 유니티의 커스텀 라이팅 시스템 구현에 필수적인 것들을 모두 배웠다. 3부에서는 이에 관한 기술인 디버깅, 좋은 코드 작성법, 아티스트가 독자가 만든 셰이더를 잘 쓰게 만드는 방법에 대해서 설명한다. 15장, ‘아티스트가 사용할 셰이더 만들기’ 프로그래머가 아티스트가 사용하기에 너무 복잡한 셰이더를 만드는 경우가 많다. 심지어 본인이 그러고 있다는 사실조차도 깨닫지 못한 채로 말이다. 이 장은 프로그래머가 저지르는 셰이더 사용에 관한 다섯 가지 실수를 나열하고 몇 가지 해결책을 제시한다. 16장, ‘복잡성과 우버 셰이더’ 13장 이후 셰이더 시스템의 복잡성이 어떻게 생겼는지에 대해 어느 정도 다뤘다. 이 장은 시스템이 왜 그렇게 돼 있고, 왜 그것이 여전히 현재 셰이딩 언어에서 최고의 방법인지 설명한다. 17장, ‘셰이더가 정상 작동하지 않을 때’ 첫 번째 시도에서 작성한 셰이더가 제대로 되는 경우는 존재하지 않는다. 따라서 버그를 추적하는 방법과 문제를 찾아내는 방법을 배워야 한다. 이 장은 셰이딩 프로파일링과 디버깅 및 이것들을 위한 다양한 도구에 대해서 이야기한다. 18장, ‘최신 트렌드 따라잡기’ 게임과 영화 산업은 결코 잠들지 않으며, 매년 진보를 거듭한다. 이 책을 읽은 이후에는 독자는 SIGGRAPH 논문을 읽어가며 지식을 더 깊게 쌓는 데 유리한 위치에 있을 것이다. 이 장은 렌더링과 셰이더 개발에 대한 최신 개발 기술과 어깨를 나란히 하는 다양한 방법을 나열한다. ★ 지은이의 말 ★ 여러분들이 유니티 혹은 물리 기반 셰이딩에 관심이 있어서 이 책을 갖고 있을 것이라 생각한다. Shadertoy 웹사이트가 증명하는 바와 같이 셰이더는 멋지다. 그리고 유니티는 셰이더를 작성하는 방법을 배우는 좋은 도구다. 지난 몇 년간 트리플 A급 게임이 증명하듯이 물리 기반 셰이딩 역시 멋지다. 그리고 또 다시 유니티는 렌더러를 작성하지 않고도 그것에 발 담그는 편리한 방법이다. 이 책은 두 분야 모두의 온전한 범위(sanity thresholds)를 배우는 데 필요한 노력을 지속하는 편리한 매개체로서 유니티를 활용해 셰이더를 개발하는 방법과 물리 기반 셰이딩을 가르쳐 줄 것이다. ★ 옮긴이의 말 ★ 많은 게임 개발자가 셰이더라는 단어를 신성시하는 것 같다. 나도 처음 셰이더를 배우려고 했을 때 셰이더에 대한 지식을 접하기 매우 어려웠으며(적어도 내가 셰이더에 대한 지식을 찾아 다닐 때는 그랬다) 셰이더와 관련된 추상적이고 괴상한 이야기를 많이 들었다. 어떤 사람들은 셰이더 개발은 천재들만 할 수 있다고도 말한다. 본래 사람은 자신이 잘 모르는 분야에 대해서는 두려워하고 경외시하는 것 같다. 잘 모르는 분야라도 막상 부딪히고, 익숙해지려고 노력하다 보면 대부분 생각보다 원리가 단순한 경우가 많다. 셰이더도 마찬가지라고 생각한다. 이 책은 요즘 인기 있는 유니티의 셰이더를 다룬다. 여기에서 나온 예제는 유니티 2018.2.13f1에서 직접 테스트를 완료했다. 내용을 따라 하다 보면, 유니티에서 셰이딩 프로그래밍을 어떤 식으로 진행하는지에 대한 감이 잡힐 것이다. 이 책이 예전 나와 같은 개발자들이 셰이더를 빠르고 간결하게 이해하는 데 필요한 지도가 됐으면 하는 바람으로 이 책을 번역했다. 이 책이 독자 여러분들에게 꼭 도움이 됐으면 한다. |