도서 소개
이 책은 C++과 OpenGL을 이용하여 3D 렌더링의 원리를 배우고 실습해보는 책이다.
폴리곤이 화면에 출력되는 원리, 게임 수학, 셰이더 프로그래밍 그리고 스플라인 기법을 배우면서
3D 렌더링이 어떤 요소들로 구성되어 있는지 파악할 수 있다.
유니티나 언리얼과 같은 게임 엔진은 모두 OpenGL이나 DirectX같은 그래픽스 API를 사용하여 3D 폴리곤을 렌더링 한다.
단순히 엔진만 사용하게 되면 이런 숨겨진 과정은 존재하는지조차 모를 수 있다.
하지만 이런 기초 원리를 이해하고 나면 게임 엔진을 더 자유롭게 활용할 수 있게 된다.
더 나아가 게임 엔진의 소스코드를 분석할 때도 훨씬 더 깊은 이해도를 갖게 될 수 있을 것이다.
출판사 리뷰
실무에서 3D 게임 클라이언트 프로그래밍을 하다 보면 유니티나 언리얼 같은 게임 엔진을 주로 사용하여 게임을 만들게 됩니다. 이런 엔진을 잘 다루는 것도 중요하지만, 결국 엔진을 구성하는 원리를 확실히 이해하는 것이 엔진을 더 잘 사용할 수 있는 길입니다.
이 책은 화려한 엔진 내부에 감추어져 있는 3D 렌더링의 원리를 C++과 OpenGL만을 이용하여 재구성해 보는 책입니다. 바이브코딩으로 원하는 소프트웨어를 만들어내는 요즘 시대에 비추어 보면 조금은 불편하고 느린 방법일 수 있지만 기초 과학의 중요성은 엔지니어라면 그 누구도 부정하지 못할 것입니다.
이 책의 장점은 쉽다는 것입니다. 전문적인 3D 배경 지식이 없다 하더라도 C++문법만 알고 있다면 책의 내용을 따라가는데 큰 무리가 없습니다.
또한 복잡해 보였던 벡터, 행렬 같은 게임 수학도 아주 단순한 원리부터 시작해 실제 활용되는 부분까지 단계적으로 설명해 나갑니다. 이 과정을 거치면서 지루하고 재미없던 게임 수학에 대해 나도 한 번 해볼 수 있겠다는 자신감이 생깁니다.
마지막으로 셰이더 프로그래밍과 스플라인 기법을 배우면서 3D 프로그래밍의 고급 기술까지 맛볼 수 있습니다. 비록 아주 깊은 부분까지 들어가지는 않지만 어렵고 생소한 분야에 자연스럽게 발을 들여놓게 해줍니다.
그동안 복잡하고 수식이 가득한 3D 게임 프로그래밍 서적에 지치신 분들에게 이 책을 추천합니다.
수많은 버텍스의 행렬 곱셈 연산은 CPU보다는 그래픽 카드에 존재하는 GPU에서 병렬 처리하여 수행하는 것이 더 좋은 성능을 가져옵니다. 따라서 GPU가 해석할 수 있는 형태로 프로그램을 작성해야 할 필요성이 생깁니다.
이번에도 3.14가 나왔습니다. 원은 크기가 크든 작든 모두 닮은 도형이기 때문에 지름과 둘레의 비율은 항상 같은 값이 나옵니다. 이 비율을 좀 어려운 말로 원주율이라고 부르며 파이(π)라고 표시합니다. 이 원주율은 원의 크기에 상관없이 항상 일정하다는 것을 알 수 있습니다. 주변에 있는 동그란 물체의 지름과 둘레를 재 본다면 어떤 크기의 물체이던지 그 비율은 항상 3.14가 나올 것입니다.
이렇게 t를 0부터 1까지 적절히 증가시키며 반복 계산한다면 곡선을 만들기 위한 전체 좌표를 얻을 수 있게 될 것입니다. t의 증가 범위가 작을수록 계산된 점의 개수도 많아져 더 정밀한 곡선이 그려지게 됩니다.
작가 소개
지은이 : 이석현
현 프리랜서 게임 프로그래머전 엔씨소프트 블레이드앤소울 서버 프로그래머전 리젠소프트 게임 프로그래머
목차
Part 1. 3D 렌더링 기초 지식
CHAPTER 1. OpenGL 준비하기
OpenGL이란?
왜 OpenGL을 사용하는가?
개발 환경 구성
윈도우 만들기
정리
CHAPTER 2. 삼각형 그리기
기본 지식
버텍스 버퍼
인덱스 버퍼
정리
CHAPTER 3. 색상, 텍스쳐 매핑
폴리곤 색상 변경하기
텍스쳐 매핑
텍스쳐 합성
정리
Part 2. 3D 렌더링 원리
CHAPTER 4. 변환
이동, 스케일, 회전 행렬
셰이더 프로그래밍 기초
공간
정리
CHAPTER 5. 기초 수학
벡터
벡터의 덧셈, 뺄셈, 곱셈, 내적, 외적
삼각함수
탄젠트, 사인, 코사인
원과 삼각함수
파이, 라디안
정리
CHAPTER 6. 렌더링 라이브러리 제작
클래스 구조
게임 오브젝트
카메라
라이트
씬
메시, 머티리얼, 셰이더
OBJ 파일 로드하기
3D 씬 만들기
정리
Part 3. 셰이더 프로그래밍과 곡선
CHAPTER 7. 셰이더 프로그래밍
단색 셰이더
조명 기법
림 라이팅
외곽선 만들기
체형 조절하기
정리
CHAPTER 8. 스플라인
베지에 스플라인
허밋 스플라인
캣멀-롬 스플라인
정리
마치며
참고자료