언리얼에서 머티리얼 제작은 결과를 시각적으로 확인할 수 있어서 이를 이론적인 설명이나 각 노드 설명만 보는 것으로는 지루해서 학습을 쉽게 포기하게 된다. 그래서 이 책에서는 입문자가 따라 하면서 배울 수 있도록 내용을 구성했다. 예제를 따라 해보면 언리얼에서 머터리얼 제작을 하는 방법과 제작한 머터리얼을 활용하는 방법에 관한 기초 지식을 얻을 수 있으며, 더 깊이 있는 탐험을 할 수 있는 원동력이 돼줄 것이다.
브라이스 브렌라 라모스 (지은이)의 말
언리얼 엔진 4를 사용해 게임 창작과 발견의 여정으로 개발자들을 이끌고자 집필했다. 게임과 앱의 시각적 요소에 영향을 주는 조작을 수행해보며 언리얼 엔진의 구석구석을 탐험할 것이다. 꼭 알고 있어야 하는 기본적인 주제를 시작으로 특정 주제를 하나씩 살펴본다. 각 장은 그 기본 내용을 확장해 나간다. 대부분의 개발자가 내용을 따라 갈 수 있도록 완만한 학습 곡선을 갖도록 구성했다. 만약 관련 내용을 잘 안다면 실습을 건너뛰고 다른 장이나 실습을 진행해도 상관없다.
우선 언리얼 엔진에서 물리 기반 렌더링(physically based rendering)을 다루는 방법이나 포스트 프로세싱 이펙트(post-processing effects)와 같은 엔진의 렌더링 파이프라인(rendering pipeline) 아래 핵심 개념부터 책을 시작한다. 두 주제에 관한 견고한 기반 지식을 갖고 그 지식을 확장해 불투명, 투명, 서브서피스(subsurface) 머티리얼과 또 다른 셰이딩 모델(shading model) 같은 좀 더 많은 내용을 알아볼 것이다. 또 향상된 여러 가지 머티리얼 생성 기술과 기법을 살펴볼 것이다. 이 기술들은 머티리얼과 블루프린트(blueprint)를 함께 사용하는 것부터 머티리얼을 인스턴싱(instancing)하고 최적화하는 등의 다양한 효과를 만드는 데 이용할 수 있다.
이 책을 다 마치고 나면 다양한 머티리얼의 개념과 기법에 관한 지식과 실무를 모두 탄탄히 다지게 될 것이다. 개발자가 하고자 하는 것이 게임 개발이든 앱 개발이든 혹은 개인적인 프로젝트든 간에 이 책을 통해 새롭게 배운 개념을 정확하게 이해하고 있다는 확신을 갖고 사용하게 될 것이다. 이제 시작해보자!
역자후기
2001년 2월 엔비디아(NVIDIA)에서 지포스 3 그래픽 카드를 출시하면서 셰이더의 세계가 눈 앞에 펼쳐졌다. 나도 당시 큰돈을 들여 지포스 3를 구입해 어셈블리로 셰이더 프로그래밍을 배우면서 고정 파이프라인에 자유를 제공하는 일이 실력이나 상상력의 차이를 만들거라 믿었다. 실제로 실시간 3D 그래픽스에서 품질 차이는 극명해지기 시작했다.
하지만 초창기 셰이더는 어셈블리로 작성해야 했다. 제약 사항도 많아 실제로 3D 아티스트가 다룰 수 있는 물건이 아니었다. 물론 시간이 지나면서 셰이더도 HLSL과 같은 고급 프로그래밍 언어 형태로 프로그래밍이 가능해지고 접근성이 점점 더 나아졌지만 여전히 3D 아티스트에겐 어려운 영역이다.
시간이 지나면서 셰이더를 노드 그래프 형식으로 제작할 수 있는 툴이 생겨나기 시작했다. 이러한 변화는 어려운 셰이더 프로그래밍을 좀 더 쉽게 만들어줄 거라는 착각을 일으켰다. 물론 글자보다 노드 그래프로 보는 것이 시각적으로 더 쉽고 편하게 느껴진다. 그렇다고 해서 그래픽스 이론과 선형대수를 몰라도 셰이더를 만들 수 있도록 해주는 것이 아니다. 실제로 국내 3D 아티스트나 테크니컬 아티스트 중에 셰이더를 만들 수 있는 이가 극히 드물다는 사실이 이러한 변화가 아무런 어려움도 줄여주지 못했다는 점을 반영한다고 생각한다.
3D 아티스트가 표현하고 싶어하는 요구 사항을 프로그래머가 셰이더로 작성하기 때문에 서로 소통하는 데 비용이 많이 들고 원하는 바를 정확하게 표현하지 못하는 결과를 낳는다고 본다.
결국 3D 아티스트가 직접 셰이더를 작성할 수 있어야 더 좋은 그래픽을 빠르게 표현할 수 있다. 그 힘든 여정을 출발하는 데 미적분, 선형대수 같은 과목을 공부하고 그래픽스 이론을 공부하듯이, 정공법으로 가는 길보다 실습으로 이미 만들어진 셰이더를 따라 해보면서 우선 익숙해지는 과정을 갖는 방법이 조금 더 낫다.
만약 언리얼 엔진을 사용하거나 사용해보고 싶고 언리얼 엔진에서 머티리얼(언리얼에서 머티리얼은 큰 셰이더 템플릿 코드에서 특정 부분을 채워주는 셰이더 코드 조각)을 만들어보고 싶다면 이 책이 입문용으로 가장 적절하다. 예제를 쉽게 따라 해보고 결과를 보면서 만족감과 성취감을 느낄 수 있음과 동시에 학습의 원동력이 돼 줄 것이다. 아울러 전반적인 원리를 설명하고 있고 더 깊이 있는 내용을 찾아볼 수 있는 이정표가 돼 줄 것이다.
원서 정오표에 올라온 내용은 없었지만 번역을 진행하면서 발견한 오타와 오류를 수정했다. 때로는 주석으로 설명을 덧붙이기도 했다. 실습을 진행하는 데 혼동되지 않도록 언리얼 에디터에서 영문으로 표기한 메뉴는 이 책에서도 영문으로 표기했다. 모든 예제는 언리얼 엔진 4.20에서 4.24까지 확인했으며 문제는 없었다. 이 글을 쓰고 있는 시점에서 가장 최신 버전은 4.25.1이지만 예제가 문제없이 동작할 거라고 믿는다.
이 책은 언리얼 엔진에서 머티리얼을 제작하는 데 출발점이 돼 줄 수 있을 뿐이다. 필요한 머티리얼을 척척 만들고자 한다면 걸어야 할 여정은 정말 멀고 험하다. 그래도 멈추지 않고 원하는 바를 얻는 길로 나아가길 바란다.