Top

HLSL 프로그래밍 [고급 셰이더 언어와 DirectX 11로 구현하는 3D 렌더링]

  • 원서명HLSL Development Cookbook (ISBN 9781849694209)
  • 지은이도론 파인스타인(Doron Feinstein)
  • 옮긴이김세중, 전성빈
  • ISBN : 9788960778252
  • 25,000원
  • 2016년 02월 05일 펴냄
  • 페이퍼백 | 288쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

하드웨어의 발전으로 3D 그래픽은 점점 현실적이고 복잡한 표현이 가능해지고 있다. 고급 셰이더 언어(HLSL)는 이전까지 보지 못했던 3D 렌더링의 세계로 우리를 이끈다. 이 책은 이러한 HLSL의 기능을 실용적인 예제와 함께 쉽게 이해할 수 있도록 쓰여졌다. 널리 쓰이는 라이팅 기법부터 블룸 및 톤 매핑 등 전문적인 포스트프로세싱 구현까지 광범위한 내용을 배울 수 있다.

이 책에서 다루는 내용

포워드, 디퍼드 라이팅 등 다양한 상황의 광원 구현 방법

셰도우 맵 기능을 활용한 다이내믹 라이팅 표현

블룸, 톤 매핑 등 다양한 종류의 포스트프로세싱 기법

데칼, 강우 등의 3D 엘리먼트 표현

다양한 화면 공간 기법을 통한 시각 효과 향상

이 책의 대상 독자

이 책은 Direct3D에 대한 기본적인 지식이 있고, 고급 기법을 통해 추가로 시각적인 효과를 구현하기 원하는 사람들을 대상으로 한다. 또한 HLSL의 고급 사용자 중 DirectX 9에서 DirectX 11로 옮겨가고 싶어 하는 독자에게도 매우 유용한 지식을 제공할 것이다.

이 책의 구성

1장, '포워드 라이팅'에서는 조명 공식을 살펴보고, 포워드 라이팅(Forward Lighting) 기법을 통해 주요 광원을 구현하는 방법을 알아본다.

2장, '디퍼드 셰이딩'에서는 1장에서 배운 광원 계산을 복잡한 씬(scene) 구현과 분리해 최적화하는 방법을 알아본다.

3장, '셰도우 매핑'에서는 앞에서 살펴본 광원 계산에 그림자 구현을 더해 좀더 사실적으로 만드는 방법을 알아본다.

4장, '포스트프로세싱'에서는 여러 가지 2D 필터링 기법을 통해 광원의 품질을 향상시키는 기법을 알아본다.

5장, '화면 공간 효과'에서는 2장의 ‘디퍼드 셰이딩’에 추가적인 효과를 화면 공간 계산으로써 구현하고, 이를 통해 광원 계산을 확장하는 방법을 알아본다.

6장, '환경 효과'에서는 렌더링한 씬에 날씨 등 상호작용 효과를 추가해서 최종적으로 사실성을 부여하는 기법을 알아본다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.

저자/역자 소개

지은이의 말

DirectX 11이 나온 지 상당히 시간이 흘렀음에도 3D 개발자들에게 그다지 많은 관심을 받지 못하는 점은 안타깝다. 게임 산업에서 PC라는 플랫폼의 비중이 나날이 높아지고, 3세대 Xbox 게임 콘솔이 발매된 현재, DirectX 11로의 완전한 전환은 시간문제인 것으로 보인다.

이 책에서는 DirectX 11이 제공하는 유용하면서도 새로운 3D 기법들을 설명한다. 기본적인 라이팅(lighting)에서부터 화면 공간 효과까지 아우르는 예제들을 통해 컴퓨트 셰이더(Compute Shaders), UAV, 테셀레이션(Tessellation) 등 새로운 DirectX 11 기능들을 익힐 수 있다.

HLSL 프로그래밍과 함께라면 게임과 시뮬레이션에서 사용되는 다양한 DirectX 11 API 렌더링 기법들을 살펴볼 수 있다.

지은이 소개

도론 파인스타인(Doron Feinstein)

지난 10년간 다양한 분야에서 그래픽 프로그래머로 일해 왔다. 소프트웨어 엔지니어링으로 학위를 받은 직후 국방 및 의료에 필요한 3D 시뮬레이션을 개발하는 일을 맡았다. 어릴 적부터 게임 업계에서 일하길 꿈꿔왔으며, 스코틀랜드의 리얼타임 월드(Realtime World)에서 그 꿈을 이룰 수 있었다. 현재 락스타게임즈(Rockstar Games)에서 시니어 그래픽 프로그래머(Senior Graphic Programmer)로 일하며, 회사의 차기작을 Xbox 360, PS3, PC로 개발 중이다.

옮긴이의 말

3D 궁극적으로 지향해야 하는 목표는 언제나 한결같았다. 3D 프로그램으로 현실과의 차이가 최대한 적도록 시뮬레이션하는 것이다. 과거 고정 파이프라인을 쓰던 시절에는 현실적인 한계를 뛰어넘기가 불가능에 가까웠으나, 셰이더란 개념이 등장한 이후 어느 정도 의도한 바를 구현할 수 있다. 즉, 3D 프로그래머의 목표는 이러한 기술을 활용해 가능한 자원 내에서 최대한 아름다우며 현실적인 그래픽을 뽑아내는 것이다.

존 카멕부터 시작된 응용 3D 프로그램의 영역은 해가 지나며 급격히 발전해왔다. 계속해서 성능이 곱절로 뛰는 그래픽 카드가 나왔고, 기능 또한 풍부해져 게이머들은 나날이 향상되는 그래픽에 환호성을 보냈다.

그때에 비하면 최근의 그래픽 하드웨어는 기술적 정체를 겪고 있다. 게다가 그래픽이 좋은 게임에 대한 게이머들의 눈높이도 높아져 현실적인 그래픽을 추구하는 게임은 높은 개발비로 인해 점점 줄어들고 있는 실정이다. 이런 답보 상태를 넘어서기 위해 아예 버텍스, 지모에트리, 프래그먼트 셰이더 구조를 프로그래머블하게 만들려는 시도가 있기는 하지만, 전망은 매우 불투명하다.

그런데 이를 바꿔 말하면 중소규모의 게임을 만들기 위해서는 하드웨어의 성능을 전부 끌어다 쓸 필요가 없다는 뜻이다. 즉 현실적으로 우리는 주어진 한도 내에서 최대한 완벽한 화면을 구현하는 것을 목표로 삼으면 된다. 이 책이 도움을 줄 수 있다면 바로 이 부분이다.

이 책은 독자들이 DirectX에 대한 기본적인 지식은 갖고 있다고 가정한다. 즉 모델과 텍스처를 불러와 그래픽 카드에 밀어 넣는 방법을 알고 있는 중급 이상의 프로그래머들을 대상으로 쓰여졌다. 초심자에게는 HLSL 기초 서적을 참고한 후 읽어보는 것을 추천한다. 아예 경험이 없다면 상용 3D 엔진을 사용할 것을 추천한다. 자체 엔진을 개발해 사용하는 경우가 점점 줄어들고 있기 때문이다. 그러나 이 책에서 설명하는 내용이 불필요하다는 것은 아니다. 다른 3D 엔진을 통해 개발할 경우 HLSL보다 더 쉽게 개념을 적용해볼 수 있다는 뜻이다.

이 책이 HLSL을 사용함에 있어 고급 단계로 진입하고자 하는 독자들에게 도움이 되기를 바란다.

옮긴이 소개

김세중

연세대학교 컴퓨터과학과를 졸업했다. YNK 코리아(현 플레이위드)에서 3D 온라인 MORPG를 개발하고, 컴퍼니원헌드레드에서 유니티 3D를 이용해 3D 모바일 MORPG ‘메탈브레이커’를 개발했다. 개인적으로 개발한 2D 퍼즐 게임 ‘No2g: 노노그램’을 운영 중이며, 현재 산호세에 있는 콩 스튜디오스(Kong Studios) 사에서 모바일 RPG를 개발 중이다.

전성빈

연세대학교 기계공학과를 졸업하고, 동 대학원에서 이미지 프로세싱을 주제로 박사 과정을 수행 중이다. 웹 프로그래밍을 이용한 지식의 구조화에 꾸준한 관심을 갖고 있다.

목차

목차
  • 1 포워드 라이팅
    • 소개
    • 반구형 앰비언트 라이트
    • 디렉셔널 라이트
    • 포인트 라이트
    • 스포트라이트
    • 캡슐 라이트
    • 투영 텍스처: 포인트 라이트
    • 투영 텍스처: 스포트라이트
    • 싱글 패스에서 여러 개의 광원 사용

  • 2 디퍼드 셰이딩
    • 소개
    • GBuffer 생성
    • GBuffer 언패킹
    • 디렉셔널 라이트
    • 포인트 라이트
    • 캡슐 라이트
    • 스포트

  • 3 셰도우 매핑
    • 소개
    • 스포트라이트 PCF 셰도우
    • 포인트 라이트 PCF 셰도우
    • 중첩된 셰도우 맵
    • 가변 반그림자 PCF
    • 셰도우 맵 시각화

  • 4 포스트프로세싱
    • 소개
    • HDR 렌더링
    • 적응
    • 블룸
    • 거리 심도
    • 보케
  • 5 화면 공간 효과
    • 소개
    • 화면 공간 앰비언트 오클루션
    • 렌즈 플레어
    • 화면 공간 반사
    • 화면 공간 태양광

  • 6 환경 효과
    • 소개
    • 다이내믹 데칼
    • 거리/깊이 기반 안개

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.26 : 코드]
엠비언트 값 계산

[p.41 : 마지막 행 추가]