셰이더 코딩 입문 (셰이더 코딩의 기초에서 유니티와 언리얼 셰이더까지)

셰이더 코딩 입문 (셰이더 코딩의 기초에서 유니티와 언리얼 셰이더까지)

$36.88
Description
셰이더 코딩의 기초부터 유니티와 언리얼 엔진의 커스텀 셰이더 제작까지 실습과 함께 설명한다. 먼저 오픈프레임웍스를 이용해 버텍스와 프래그먼트 셰이더부터 라이팅과 노말 매핑까지 게임 그래픽의 핵심 개념을 실제 코딩으로 구현한다. 그 다음 게임 최적화에 관련된 문제를 개념과 원리를 바탕으로 깊이 있게 설명한다. 마지막으로 앞에서 배운 내용을 바탕으로 유니티, 언리얼, 고도 엔진에서 커스텀 셰이더를 제작한다. 게임 그래픽과 셰이더에 관심이 있으며 프로그래밍의 기초 지식을 갖춘 게임 개발자나 아티스트에게 도움이 될 책이다.
저자

카일할러데이

(KyleHalladay)
시카고에거주하는게임프로그래머다.셰이더프로그래밍을비롯해게임과건축시각화와관련된그래픽기술개발분야에서7년이상종사했다.

목차

지은이소개
기술감수자소개
감사의글
옮긴이소개
옮긴이의말
들어가며

1장.게임그래픽

__렌더링
__메쉬
__벡터
__색상
__렌더링파이프라인
__셰이더
__요약

2장.셰이더작성

__윈도우개발환경준비
__프로젝트세팅
__메쉬생성
__버텍스셰이더
____버전선언
____in키워드
____vec데이터타입
____gl_Position
____정규화장치좌표
__프래그먼트셰이더
____out키워드
__셰이더바인딩
__버텍스속성
__프래그먼트보간
__유니폼변수
__요약

3장.텍스처

__쿼드
__UV좌표
__텍스처사용
__UV좌표스크롤링
__밝기조정
__색상연산
__mix()
__요약

4장.투명도와깊이

__새프로젝트준비
__메쉬와셰이더준비
__알파테스팅과discard
__깊이테스팅
__알파블렌딩
__min()과max()
__알파블렌딩의원리
__가산블렌딩
__스프라이트시트애니메이션
__요약

5장.버텍스셰이더와이동,회전,크기

__버텍스셰이더와이동
__버텍스셰이더와크기
__버텍스셰이더와회전
__변환행렬
__변환행렬애니메이션
__단위행렬
__요약

6장.카메라와좌표

__뷰행렬
__변환행렬과좌표공간
__카메라프러스텀과투영
__요약

7장.3D프로젝트

__메쉬불러오기
__카메라와원근투영
__요약

8장.디퓨즈라이팅

__부드러운셰이딩과평평한셰이딩
__월드노말과뒤섞기
__노말행렬
__라이팅계산과노말
__벡터의내적
__내적을이용한셰이딩
__디렉셔널라이트
__림라이트효과
__요약

9장.라이팅모델

__스펙큘러라이팅
__스펙큘러셰이더
__디퓨즈와스펙큘러라이팅합치기
__앰비언트라이팅
__퐁라이팅모델
__블린-퐁라이팅모델
__텍스처를이용한라이팅제어
__요약

10장.노말매핑

__노말맵
__탄젠트공간
__탄젠트벡터
__벡터의외적
__노말매핑
__물셰이더
__노말매핑의현재
__요약

11장.큐브맵과스카이박스

__큐브맵
____큐브맵불러오기
__큐브맵렌더링하기
__스카이박스
__원근분할
__스카이박스와원근분할
__스카이박스그리기
__큐브맵반사
__큐브맵의현재
__요약

12장.라이팅심화

__디렉셔널라이트
__포인트라이트
__스포트라이트
__정적멀티라이트
__동적멀티라이트
__라이팅의현재
__요약

13장.셰이더프로파일링

__성능측정
__CPU시간과GPU시간
__수직동기
__드라이버와소프트웨어
__프로파일링
__그래픽디버거:엔사이트그래픽스
__CPU제약과GPU제약
____간편프로파일링
__셰이더추적
__요약

14장.셰이더최적화

__버텍스셰이더활용
__동적분기
__MAD연산
__GLSL함수
__쓰기마스크
__오버드로우
__마지막지침

15장.정밀도

__부동소수점정밀도
__사례연구:애니메이션
__모바일플랫폼과저정밀도변수
__사례연구:포인트라이트
__요약

16장.유니티셰이더

__셰이더와재질
__셰이더랩
__단색셰이더
__블린-퐁셰이더포팅하기
__반투명셰이더
__멀티라이트지원
__코드에서데이터전달
__셰이더그래프
__요약

17장.언리얼엔진셰이더

__재질과재질인스턴스
__단색셰이더
__UE4노드그래프
__림라이트재질
__DefaultLit재질의입력
__버텍스셰이더와프래그먼트셰이더
__다른셰이딩모델
__블렌드모드
__코드에서데이터전달
__언리얼셰이더코드
__요약

18장.고도셰이더

__셰이더와재질
__고도셰이딩언어
__프래그먼트셰이더출력변수
__림라이트셰이더
__버텍스애니메이션셰이더
__UV애니메이션
__반투명셰이더와블렌드모드
__코드에서데이터전달
__비주얼셰이더편집기?
__요약
__메쉬탄젠트계산

부록

__메쉬탄젠트계산
__ofxEasyCubemap클래스

찾아보기

출판사 서평

★이책에서다루는내용★

■셰이더의개념과작동원리
■버텍스셰이더와프래그먼트셰이더작성
■블렌딩공식의원리와활용
■실시간컴퓨터그래픽에서좌표공간의개념
■애니메이션,라이팅,기타시각효과를위한수학
■셰이더의성능문제파악과해결
■유니티,언리얼4,고도엔진에서의셰이더개발

★이책의대상독자★

게임이나다른리얼타임애플리케이션에사용할셰이더코드를공부하려는사람을위한책이다.간단한C++코드를작성할수있는사전지식을갖췄다고가정하고작성했다.진행에필요한모든수학적내용은책에서다룬다.또한3D메쉬가무엇인지부터시작해다양한그래픽테크닉을자세히분석한다.설령C++실력이시원치않아도큰문제가되지않는다.이책은셰이더개발을주로다루기때문에C++를깊이다룰일은없다.그나마작성하게될코드도아주단순한수준이다.

★이책의구성★

이책은크게세부분으로나뉜다.1장에서12장은셰이더테크닉을가르치고중요한그래픽개념을소개한다.이분야를처음접한다면1장부터시작해모든내용을순서대로읽어나가길권장한다.각장은이전장에서다뤘던내용에기반하고있기때문에너무급하게건너뛰면내용을따라가지못할수있다.
이미어느정도셰이더개발에대한지식을갖추고있다면새로운내용이나올때까지건너뛰는것도나쁘지는않다.중간에이해할수없는개념이나온다면책뒤에있는인덱스에서그개념이소개된부분을찾을수있고,그때거기로돌아가내용을파악하면된다.
13에서15장은셰이더코드의디버깅과최적화를설명한다.지금개발중인프로젝트가초당10프레임으로실행되고문제를고쳐야하는상황이라면,앞부분을읽기전에바로여기로와서당면한문제의해법을찾아볼수도있다.
16에서18장은가장인기있는세개의게임엔진인유니티,언리얼,고도(Godot)에서이책에서배운개념을실제로활용하는방법을설명한다.책에서배운주요개념을프로젝트에적용할준비를마칠때까지이부분은남겨두길권장한다.
마지막으로부록에는이책의프로젝트에필요한주요코드가수록돼있다.이코드들은셰이더코드가아니기때문에자세히설명하지않는다.

★옮긴이의말★

애니메이션,영화,건축,제품같은컴퓨터그래픽분야는일찍부터셰이더의중요성을인식했다.셰이더는이미지나영상의품질을좌우하는핵심요소였고,스튜디오의기술력을보여주는척도였다.반면게임에서셰이더는오랫동안관심밖의초라한존재였다.기능자체도형편없었지만,그나마도최적화단계에서일순위로버림받기일쑤였다.
그러던셰이더의지위에변화가생겼다.PBR이폴리곤이나텍스처만큼이나흔한말이됐다.모바일게임에헤어셰이더와피부셰이더가사용되고,UI아티스트가연출을위해직접셰이더를만드는모습도어렵지않게볼수있다.굴욕의시간을버틴주인공이결국은사문의복수를하고무림의일인자가되듯,셰이더는어느새게임의때깔을좌우하는위치로인정받기시작했다.
더강력한하드웨어,주요엔진이제공하는직관적인셰이더개발도구,사용자의높아진기대치에부합하기위한그래픽경쟁.이런요인들이맞물려셰이더가부각되는추세는더욱강화될것이다.특히앞으로다가올게임스트리밍서비스는오프라인렌더링과리얼타임렌더링간의마지막남은경계마저허물어버리는계기가될지도모른다.게임에서셰이더의역할이어느때보다높게평가받는시기다.이제게임개발자,특히게임아트쪽개발자에게셰이더는반드시이해해야하는대상인동시에개인의역량을드러낼수있는기회의영역이라고할수있다.
이책은셰이더의개념과원리를코딩을통해직접경험할수있는기회를제공한다.코드에서버텍스와메쉬를생성하는것에서출발한다.라이팅,노말매핑,큐브맵과같은현대게임그래픽의근간이되는주요개념을자세히설명하고,직접코딩을통해구현한다.마지막으로유니티와언리얼에서이책에서설명한내용과의접점을확인한다.당장쓸수있는화려한최신기법을소개하기보다는실제코딩을통해리얼타임컴퓨터그래픽과셰이더의기본개념을설명한다.
독자에따라서는일부그래픽과수학개념이다소어렵게느껴질수있다.최대한친절하게전달하려했지만개념자체가생소한독자에게는여전히어렵게느껴질것이다.그러나설령한두부분을이해하지못하고넘어간다해도크게문제가되지는않는다.이책을읽은것만으로도셰이더사용과게임엔진의셰이더개발도구를활용하는데큰도움이될것이다.
이책의번역이독자제현(諸賢)의학습과실무에도움이될수있기를진심으로기원한다.

2019년11월
한적한겨울바닷가에서
조형재드림