서브메뉴

본문

DirectX 12를 이용한 3D 게임 프로그래밍 입문
DirectX 12를 이용한 3D 게임 프로그래밍 입문
저자 : 프랭크 D. 루나
출판사 : 한빛미디어
출판년 : 2017
ISBN : 9788968487798

책소개

3D 그래픽 프로그래밍의 기초부터 최신 기법까지

『DirectX 12를 이용한 3D 게임 프로그래밍 입문』은 DirectX 12로 게임을 개발해가며 대화식 컴퓨터 그래픽 프로그래밍을 익히는 입문서다. 1부는 기본적인 수학적 도구들을, 2부는 Direct3D의 기본 과제들을 수행하는 방법을, 그리고 3부는 여러 응용 기법과 특수 효과를 설명한다. 그 과정에서 명령 목록, 파이프라인 상태 객체, 서술자 힙과 테이블, CPU 추가부담 감소 및 다중 CPU 코어를 효율적으로 사용하기 위한 명시적 자원 관리 같은 DirectX 12의 새 기능을 활용하는 방법을 보여준다. 하드웨어 테셀레이션, 계산 셰이더, 주변광 차폐, 실시간 반사, 법선 매핑과 변위 매핑, 그림자 렌더링, 캐릭터 애니메이션 같은 현대적인 특수 효과와 기법도 이 책으로 배울 수 있다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

★ 게임 개발 중심으로 익히는 대화식 컴퓨터 그래픽 프로그래밍

상용 엔진이 게임 업계를 호령하는 시기에 저수준 그래픽스 API 계에 오랜만에 혁신이 찾아왔다. 개발자가 GPU에 더 가까이 접근하고 통제하도록 하여 그래픽 드라이버의 부하를 줄이고 CPU를 제대로 활용하도록 근본적인 변화를 도입한 것이다. 그 결과 API 교체만으로 게임 성능이 수십 퍼센트 개선되기도 한다. 이러한 혁신을 담은 주인공이 바로 DirectX 12다.



물론 이 책은 DirectX 12의 신기능과 깊은 이해보다는 3D 그래픽 프로그래밍에 집중한다. 그 과정을 DirectX 12를 이용해 보여주는 것이다. 게임 개발만을 목표로 한다면 조금 지루한 학습 방식일 수도 있으나, 3D 그래픽이 꼭 게임에 국한된 것은 아니다. 각종 그래픽 도구 구현과 가속, 영화와 애니메이션의 특수 효과, 심지어 2D로 이뤄진 GUI 시스템에도 쓰인다. 또한 여러 오픈소스 혹은 상용 엔진의 소스 코드를 분석하거나 개발에 참여해보고 싶다면 이 책이 큰 도움이 될 것이다.



★ 주요 내용

● 필수 수학과 조명, 텍스처, 혼합, 스텐실 같은 3차원 그래픽 렌더링의 기초

● 널리 쓰이는 실시간 게임 효과에 대한 상세한 설명

● 주변광 차폐, 실시간 반사, 법선 매핑과 변위 매핑, 그림자 렌더링, 기하 셰이더 프로그래밍, 캐릭터 애니메이션 같은 고급 렌더링 기법

● CPU 부하를 줄이고 다중 코어를 제대로 활용하는 DirectX 12의 새 기능

● 이해한 내용을 점검하고 DirectX 12 프로그래밍을 직접 체험할 수 있는 다양한 연습문제 수록
[알라딘에서 제공한 정보입니다.]

목차정보

PART I 기초 필수 수학



1장 벡터 대수

1.1 벡터

1.2 길이와 단위벡터

1.3 내적

1.4 외적

1.5 점

1.6 DirectXMath 라이브러리의 벡터

1.7 요약

1.8 연습문제



2장 행렬 대수

2.1 정의

2.2 행렬 곱셈

2.3 전치행렬

2.4 단위행렬

2.5 행렬식

2.6 딸림행렬

2.7 역행렬

2.8 DirectXMath의 행렬

2.9 요약

2.10 연습문제



3장 변환

3.1 선형변환

3.2 아핀변환

3.3 변환들의 합성

3.4 좌표 변경 변환

3.5 변환 행렬 대 좌표 변경 행렬

3.6 DirectXMath 라이브러리의 변환 관련 함수들

3.7 요약

3.8 연습문제



PART II Direct3D의 기초



4장 Direct3D의 초기화

4.1 기본 지식

4.2 CPU와 GPU의 상호작용

4.3 Direct3D의 초기화

4.4 시간 측정과 애니메이션

4.5 예제 응용 프로그램 프레임워크

4.6 Direct3D 응용 프로그램의 디버깅

4.7 요약



5장 렌더링 파이프라인

5.1 3차원의 환상

5.2 모형의 표현

5.3 컴퓨터 색상의 기본 개념

5.4 렌더링 파이프라인의 개요

5.5 입력 조립기 단계

5.6 정점 셰이더 단계

5.7 테셀레이션 단계들

5.8 기하 셰이더 단계

5.9 절단

5.10 래스터화 단계

5.11 픽셀 셰이더 단계

5.12 출력 병합기 단계

5.13 요약

5.14 연습문제



6장 Direct3D의 그리기 연산

6.1 정점과 입력 배치

6.2 정점 버퍼

6.3 색인과 색인 버퍼

6.4 예제 정점 셰이더

6.5 예제 픽셀 셰이더

6.6 상수 버퍼

6.7 셰이더의 컴파일

6.8 래스터화기 상태

6.9 파이프라인 상태 객체

6.10 기하구조 보조 구조체

6.11 상자 예제

6.12 요약

6.13 연습문제



7장 Direct3D의 그리기 연산 제2부

7.1 프레임 자원

7.2 렌더 항목

7.3 패스별 상수 버퍼

7.4 도형 기하구조

7.5 도형 예제

7.6 루트 서명 추가 설명

7.7 지형과 파도 예제

7.8 요약

7.9 연습문제



8장 조명

8.1 빛과 재질의 상호작용

8.2 법선 벡터

8.3 조명의 주요 벡터

8.4 람베르트 코사인 법칙

8.5 분산 조명

8.6 주변 조명

8.7 반영 조명

8.8 조명 모형 정리

8.9 재질의 구현

8.10 평행광

8.11 점광

8.12 점적광

8.13 조명 구현

8.14 파도 조명 예제

8.15 요약

8.16 연습문제



9장 텍스처 적용

9.1 텍스처와 자원의 개괄

9.2 텍스처 좌표

9.3 텍스처 자료 원본

9.4 텍스처 생성 및 활성화

9.5 필터

9.6 텍스처 좌표 지정 모드

9.7 표본추출기 객체

9.8 셰이더에서 텍스처 표본 추출

9.9 나무 상자 예제

9.10 텍스처 변환

9.11 텍스처 입힌 언덕과 파도 예제

9.12 요약

9.13 연습문제



10장 혼합

10.1 혼합 공식

10.2 혼합 연산

10.3 혼합 계수

10.4 혼합 상태

10.5 예제

10.6 알파 채널

10.7 픽셀 잘라내기

10.8 안개

10.9 요약

10.10 연습문제



11장 스텐실 적용

11.1 깊이·스텐실 버퍼의 자료 형식과 버퍼 지우기

11.2 스텐실 판정

11.3 깊이·스텐실 상태의 서술

11.4 평면거울 구현

11.5 평면 그림자의 구현

11.6 요약

11.7 연습문제



12장 기하 셰이더

12.1 기하 셰이더 프로그래밍

12.2 나무 빌보드 예제

12.3 텍스처 배열

12.4 알파-포괄도 변환

12.5 요약

12.6 연습문제



13장 계산 셰이더

13.1 스레드와 스레드 그룹

13.2 간단한 계산 셰이더 예제

13.3 자료 입력 자원과 출력 자원

13.4 스레드 식별 시스템 값

13.5 추가 버퍼와 소비 버퍼

13.6 공유 메모리와 동기화

13.7 흐리기 예제

13.8 더 읽을거리

13.9 요약

13.10 연습문제



14장 테셀레이션 단계들

14.1 테셀레이션 기본도형 위상구조

14.2 덮개 셰이더

14.3 테셀레이터 단계

14.4 영역 셰이더

14.5 사각형 하나의 테셀레이션

14.6 삼차 베지에 사각형 패치

14.7 요약

14.8 연습문제



PART III 응용



15장 1인칭 카메라 구축과 동적 색인화

15.1 시야 변환 개괄

15.2 카메라를 대표하는 Camera 클래스

15.3 주요 메서드 구현

15.4 카메라 예제 해설

15.5 동적 색인화

15.6 요약

15.7 연습문제



16장 인스턴싱과 절두체 선별

16.1 하드웨어 인스턴싱

16.2 경계입체와 절두체

16.3 절두체 선별

16.4 요약

16.5 연습문제



17장 3차원 물체의 선택

17.1 화면에서 투영 창으로의 변환

17.2 세계 공간과 국소 공간의 선택 반직선

17.3 반직선 대 메시 교차 판정

17.4 예제 응용 프로그램

17.5 요약

17.6 연습문제



18장 입방체 매핑

18.1 입방체 매핑

18.2 환경 매핑

18.3 하늘에 텍스처 입히기

18.4 물체의 주변 환경 반사

18.5 동적 입방체 맵

18.6 기하 셰이더를 이용한 동적 입방체 매핑

18.7 요약

18.8 연습문제



19장 법선 매핑

19.1 동기

19.2 법선 맵

19.3 텍스처 공간 또는 접공간

19.4 정점 접공간

19.5 접공간과 물체 공간 사이의 변환

19.6 법선 매핑 셰이더 코드

19.7 요약

19.8 연습문제



20장 그림자 매핑

20.1 장면 깊이의 렌더링

20.2 직교투영

20.3 투영 텍스처 좌표

20.4 그림자 매핑

20.5 큰 PCF 핵

20.6 요약

20.7 연습문제



21장 주변광 차폐

21.1 반직선 투사를 통한 주변광 차폐

21.2 화면 공간 주변광 차폐(SSAO)

21.3 요약

21.4 연습문제



22장 사원수

22.1 복소수 개괄

22.2 사원수 대수학

22.3 단위 사원수와 회전

22.4 사원수 보간

22.5 DirectXMath 라이브러리의 사원수 함수들

22.6 사원수 회전 예제

22.7 요약

22.8 연습문제



23장 캐릭터 애니메이션

23.1 뼈대 좌표계들의 계통구조

23.2 메시 스키닝

23.3 정점 혼합

23.4 파일에서 애니메이션 자료 적재

23.5 캐릭터 애니메이션 예제

23.6 요약

23.7 연습문제



부록 A Windows 프로그래밍 입문

A.1 개요

A.2 기본적인 Windows 응용 프로그램

A.3 기본 Windows 응용 프로그램 설명

A.4 더 나은 메시지 루프

A.5 요약

A.6 연습문제



부록 B HLSL 레퍼런스

B.1 변수 형식

B.2 키워드와 연산자

B.3 프로그램의 흐름

B.4 함수



부록 C 해석기하학 주제 몇 가지

C.1 반직선, 선, 선분

C.2 평행사변형

C.3 삼각형

C.4 평면

C.5 연습문제



부록 D 연습문제 해답 모음



부록 E 참고문헌 및 더 읽을 거리
[알라딘에서 제공한 정보입니다.]