티스토리 뷰

클라이언트 게임 개발자로 일한지 5년차가 넘었다. 그 동안 주로 유니티 엔진을 사용하여 게임을 개발하였는데 핑계아닌 핑계라고 한다면 엔진의 편리성 때문에 원리를 잊고 개발하고 있는 부분이 적지 않다. 이 책은 그러한 사람들과 보다 깊이 있는 개발을 위하여 필요한 게임 수학을 담은 책이다. 알던 부분도 다시 상기시킬 수 있었고 몰랐던 부분은 이해할 수 있는 계기를 가질 수 있었다.

이론과 실무를 접목한 게임 프로그래머 최고의 수학 학습서! 게임을 개발하며 수학을 독학한 소프트웨어 엔지니어가 현업에서의 시행착오 경험을 바탕으로 현장에서의 수요를 염두에 두고 현실적으로 구성했다. 현업에 필요한 지식을 빠르게 습득할 수 있도록 게임 개발자가 알아야 할 수학 지식만을 담아 실무용 생존 지침서로 적합하다. 먼저 수학 개념을 살펴보고, 이어서 유니티 예제를 실행해 눈으로 그 원리를 직접 확인할 수 있어 수포자도 확실하게 수학을 배울 수 있다.

CHAPTER 1 삼각함수
__1.1 삼각형
__1.2 직각삼각형
__1.3 피타고라스의 정리
__1.4 사인, 코사인, 탄젠트
__1.5 삼각함수의 주기성
____1.5.1 단위원
____1.5.2 코사인법칙
____1.5.3 주기성
____1.5.4 라디안
____1.5.5 덧셈정리
____1.5.6 사인파, 코사인파
__1.6 유니티 예제 : 클릭 위치를 향하는 캡슐?바인드하는 구체
____1.6.1 동작과 사양
____1.6.2 구현 코드

CHAPTER 2 좌표계
__2.1 직교좌표계
____2.1.1 2D 좌표계
____2.1.2 3D 좌표계
____2.1.3 왼손 좌표계와 오른손 좌표계
____2.1.4 로컬 좌표계와 월드 좌표계
____2.1.5 Center/Pivot과 Local/Global
____2.1.6 스크린 좌표
__2.2 극좌표계
____2.2.1 2D 극좌표계
____2.2.2 3D 극좌표계 = 구면좌표계
__2.3 유니티 예제 : 3인칭 시점 카메라
____2.3.1 동작과 사양
____2.3.2 구현 코드

CHAPTER 3 벡터
__3.1 벡터의 정의
____3.1.1 수벡터
____3.1.2 기하벡터
____3.1.3 스칼라
__3.2 벡터 연산
____3.2.1 덧셈·뺄셈·교환법칙·결합법칙
____3.2.2 스칼라 곱셈·나눗셈
____3.2.3 단위벡터
____3.2.4 기저와 좌표계
____3.2.5 법선벡터
____3.2.6 크기
____3.2.7 내적
____3.2.8 벡터의 직교투영
____3.2.9 내적의 응용
____3.2.10 외적
____3.2.11 외적의 응용
__3.3 유니티 예제 : 간이 충돌 판정
____3.3.1 동작과 사양
____3.3.2 구현 코드

CHAPTER 4 행렬
__4.1 행렬의 정의
____4.1.1 정의
____4.1.2 행렬의 종류
__4.2 행렬의 연산
____4.2.1 행렬과 행렬의 연산
____4.2.2 전치행렬
____4.2.3 역행렬
____4.2.4 행렬과 벡터의 곱셈
____4.2.5 스위즐 연산119
____4.2.6 행우선과 열우선
____4.2.7 AoS와 SoA
____4.2.8 행렬식
____4.2.9 직교행렬
__4.3 유니티 예제 : 행렬 계산을 위한 Inspector 확장
____4.3.1 유니티 에디터의 확장 기능
____4.3.2 동작과 사양130
____4.3.3 구현 코드

CHAPTER 5 좌표 변환
__5.1 좌표 변환이란 무엇인가
__5.2 지오메트리 파이프라인
____5.2.1 모델 변환
____5.2.2 뷰 변환
____5.2.3 프로젝션 변환
__5.3 동차좌표계
____5.3.1 동차좌표계란 무엇인가
____5.3.2 동차좌표계와 사영기하학
____5.3.3 유니티의 동차좌표계
__5.4 변환 종류
____5.4.1 선형 변환
____5.4.2 아핀 변환
____5.4.3 리지드바디 변환
____5.4.4 투영 변환
__5.5 좌표 변환의 행렬 표현
____5.5.1 평행이동
____5.5.2 회전
____5.5.3 스케일
____5.5.4 모델 변환
____5.5.5 기저 변환
____5.5.6 뷰 변환
____5.5.7 원근투영 변환
____5.5.8 직교투영 변환
____5.5.9 등각투영 변환
__5.6 유니티 예제 : 행렬에 의한 아핀 변환과 프로젝션 변환
____5.6.1 동작과 사양
____5.6.2 구현 코드

CHAPTER 6 사원수
__6.1 회전표현의 종류
____6.1.1 오일러각
____6.1.2 로드리게스 회전 공식
____6.1.3 짐벌락
____6.1.4 회전 행렬 문제
____6.1.5 사원수의 장점
__6.2 사원수의 정의
____6.2.1 복소수
____6.2.2 이원수
____6.2.3 사원수란 무엇인가
__6.3 사원수의 연산
____6.3.1 스칼라배
____6.3.2 공액
____6.3.3 크기
____6.3.4 곱셈
____6.3.5 단위 사원수
____6.3.6 내적
____6.3.7 역수
____6.3.8 행렬표현
__6.4 사원수를 이용한 3D 회전
____6.4.1 회전
____6.4.2 보간
__6.5 쌍대 사원수
____6.5.1 정의
____6.5.2 스키닝에 응용하기
____6.5.3 연산
____6.5.4 리지드바디 변환
__6.6 유니티 예제 : 사원수를 이용한 회전
____6.6.1 동작과 사양
____6.6.2 구현 코드

CHAPTER 7 곡선
__7.1 곡선을 둘러싼 개념
____7.1.1 보간과 근사
____7.1.2 매개변수 함수
____7.1.3 다항식
____7.1.4 곡선과 스플라인
____7.1.5 연속성과 미분
____7.1.6 이원수를 이용한 자동미분
__7.2 곡선 알고리즘
____7.2.1 베지어 곡선
____7.2.2 캣멀롬 스플라인
____7.2.3 B 스플라인
__7.3 유니티 예제 : 세 종류의 곡선
____7.3.1 동작과 사양
____7.3.2 구현 코드

CHAPTER 8 게임 앱 환경
__8.1 게임 엔진으로서의 유니티
____8.1.1 씬 그래프
____8.1.2 컴포넌트 지향
____8.1.3 샌드박스
____8.1.4 게임 루프
____8.1.5 CPU와 병렬성
____8.1.6 GPU 프런트엔드
__8.2 스마트폰 아키텍처
____8.2.1 그래픽 드라이버
____8.2.2 드로 콜 배칭
____8.2.3 GPU 아키텍처의 변천
____8.2.4 저수준 그래픽 API
____8.2.5 헤테로지니어스 아키텍처
__8.3 그래픽 파이프라인
____8.3.1 OpenGL ES 2.0
____8.3.2 CPU의 드로 콜 생성
____8.3.3 버텍스 셰이더
____8.3.4 프리미티브 어셈블리
____8.3.5 래스터화
____8.3.6 프래그먼트 셰이더
____8.3.7 ROP 처리
____8.3.8 OpenGL ES 3.0 이후
____8.3.9 디퍼드 셰이딩
____8.3.10 테셀레이션 셰이더
____8.3.11 지오메트리 셰이더
____8.3.12 컴퓨트 셰이더

CHAPTER 9 셰이더
__9.1 유니티의 셰이더
____9.1.1 ShaderLab
____9.1.2 셰이딩 언어
____9.1.3 GLSL
____9.1.4 에디터 설정
____9.1.5 셰이더의 기본
____9.1.6 외부 도구와 WebGL
__9.2 조명
____9.2.1 확산반사
____9.2.2 램버시안 반사 모델
____9.2.3 하프 램버트 확산
____9.2.4 퐁 반사 모델
____9.2.5 정점 단위 조명
____9.2.6 픽셀 단위 조명
____9.2.7 림 라이팅
__9.3 텍스처 처리
____9.3.1 텍스처 매핑
____9.3.2 법선 매핑
__9.4 물리 기반 렌더링
____9.4.1 BRDF
____9.4.2 쿡토런스 경면 반사

부록 A_ 유니티의 물리엔진
부록 B_ 코드 동작 환경

댓글