장바구니 담기 close

장바구니에 상품을 담았습니다.

유니티 물리 기반 셰이더 개발

유니티 물리 기반 셰이더 개발

  • 클라우디아도피오슬래시
  • |
  • 에이콘출판
  • |
  • 2019-04-30 출간
  • |
  • 356페이지
  • |
  • 188 X 235 X 20 mm
  • |
  • ISBN 9791161752891
판매가

30,000원

즉시할인가

27,000

카드할인

0원(즉시할인 0%)

적립금

1,500원 적립(5%적립)

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

추가혜택

네이버페이 무조건 1%적립+ 추가 1%적립

수량
+ -
총주문금액
27,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




★ 이 책에서 다루는 내용 ★

■ 셰이더 프로그래밍 마스터
■ 물리 기반 셰이딩 구현
■ 셰이더 하부시스템 조작법
■ 커스텀 물리 기반 라이팅 시스템 구현 및 선택 뒤에 숨겨진 로직 관찰

★ 이 책의 대상 독자 ★

유니티 경험이 있지만 셰이더 코딩 경험은 거의 없거나 전혀 없는 이들을 대상으로 쓴 책이다. 어느 정도 프로그래밍 경험이 있다면 코드를 다루는 것부터 공부할 필요가 없기 때문에 도움이 될 것이다.
물리 기반 셰이딩 원리나 노드 기반 인터페이스가 아닌 셰이더 프로그래밍 코드 작성법을 배우고자 하는 테크니컬 아티스트도 이 책을 읽기에 적합하다. 또한 셰이더 프로그래밍을 시작하는 방법을 배우고 싶거나 물리 기반 셰이딩과 관련된 몇 가지 기술을 구현하고자 하는 프로그래머에게도 도움이 될 것이다.

★ 이 책의 구성 ★

이 책은 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 논문을 읽어가며 지식을 더 깊게 쌓는 데 유리한 위치에 있을 것이다. 이 장은 렌더링과 셰이더 개발에 대한 최신 개발 기술과 어깨를 나란히 하는 다양한 방법을 나열한다.

★ 옮긴이의 말 ★

많은 게임 개발자가 셰이더라는 단어를 신성시하는 것 같다. 나도 처음 셰이더를 배우려고 했을 때 셰이더에 대한 지식을 접하기 매우 어려웠으며(적어도 내가 셰이더에 대한 지식을 찾아 다닐 때는 그랬다) 셰이더와 관련된 추상적이고 괴상한 이야기를 많이 들었다. 어떤 사람들은 셰이더 개발은 천재들만 할 수 있다고도 말한다. 본래 사람은 자신이 잘 모르는 분야에 대해서는 두려워하고 경외시하는 것 같다. 잘 모르는 분야라도 막상 부딪히고, 익숙해지려고 노력하다 보면 대부분 생각보다 원리가 단순한 경우가 많다. 셰이더도 마찬가지라고 생각한다.
이 책은 요즘 인기 있는 유니티의 셰이더를 다룬다. 여기에서 나온 예제는 유니티 2018.2.13f1에서 직접 테스트를 완료했다. 내용을 따라 하다 보면, 유니티에서 셰이딩 프로그래밍을 어떤 식으로 진행하는지에 대한 감이 잡힐 것이다. 이 책이 예전 나와 같은 개발자들이 셰이더를 빠르고 간결하게 이해하는 데 필요한 지도가 됐으면 하는 바람으로 이 책을 번역했다. 이 책이 독자 여러분들에게 꼭 도움이 됐으면 한다.


목차


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장. 최신 트렌드 따라잡기
__컨퍼런스
__서적
__온라인 커뮤니티
__웹사이트
__소셜 미디어
__결론

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.