Page 1


책1.indb 1

2017-03-07 오후 5:29:31


VI

목차

01 표준 셰이더의 이해

프로젝트 만들기..................................................................................................... 4 프로젝트 파일 임포트............................................................................................ 6 우주선 정비 씬을 로드하고 탐색하기................................................................... 7 주인공 머티리얼 만들기............................................................................................. 8 부속 장비에 사용할 머티리얼 설정...................................................................... 15 우주선 머티리얼 만들기.......................................................................................... 23 행성 머티리얼 만들기.............................................................................................. 28 스카이박스 설정........................................................................................................ 31 씬 조명 조정과 효과 추가........................................................................................ 34 정리........................................................................................................................ 37

프로젝트 열기....................................................................................................... 39

02 커스텀 셰이더 만들기

씬 열기......................................................................................................................... 39 첫 번째 커스텀 셰이더 만들기............................................................................... 40 셰이더의 작동 확인.................................................................................................. 43 셰이더에 텍스처 추가.............................................................................................. 45 셰이더가 씬 조명에 반응하게 만들기................................................................... 47 주인공 헬멧의 반투명 효과 개선. ....................................................................... 50 커스텀 투명 셰이더 만들기.................................................................................... 50 새로운 Glass 셰이더 편집...................................................................................... 52 헬멧의 내표면 만들기.............................................................................................. 55 행성의 대기 개선.................................................................................................. 61 커스텀 행성 셰이더 만들기.................................................................................... 62 행성 셰이더 적용....................................................................................................... 62 행성 셰이더 편집....................................................................................................... 64 정리........................................................................................................................ 68

책1.indb 6

2017-03-07 오후 5:29:39


목차

03

VII

씬 조명 설정 살펴보기......................................................................................... 71 머티리얼에 발광 특성 추가.................................................................................... 73 블룸 효과 추가........................................................................................................... 77

조명과 발광 표면 만들기

행성 표면 스캐너를 위한 와이어프레임 발광 머티리얼 만들기 ���������������������� 81 와이어프레임 발광 셰이더 사용............................................................................ 86 와이어프레임 셰이더의 두 번째 패스 추가........................................................ 88 정리........................................................................................................................ 93

04

씬 시작하기........................................................................................................... 96 동적 경고등 효과 만들기..................................................................................... 96 조명 애니메이션........................................................................................................ 98

코드와 셰이더를 이용한 표면 애니메이션

제어판의 조명 애니메이션................................................................................ 101 UV 좌표 애니메이션..............................................................................................107 행성 투사 디스플레이 애니메이션................................................................... 109 행성 표면에 목적지 애니메이션 만들기............................................................112 정리..................................................................................................................... 123

씬 시작하기........................................................................................................ 126

05

먼지 구름 머티리얼 만들기..................................................................................126 씬에 안개 추가.........................................................................................................130

투명 표면과 효과

먼지 구름의 투명도 애니메이션..........................................................................132 투명 유리 머티리얼 개선.................................................................................. 140 회오리 효과 설정............................................................................................... 145 정리..................................................................................................................... 149

책1.indb 7

2017-03-07 오후 5:29:39


VIII

목차

06

씬 시작하기........................................................................................................ 151 런타임에 상자의 보조 머티리얼 변경.................................................................152 보조 알베도 텍스처 적용.......................................................................................152

스페큘러와

상자의 커스텀 데칼 셰이더 만들기....................................................................155

메탈릭 표면

런타임에 데칼 텍스처 전환..................................................................................161 셰이더 조명 모델 찾기 및 수정........................................................................ 164 셰이더 조명 모델 수정...........................................................................................167 커스텀 조명 모델에 정반사 추가.........................................................................174 정리..................................................................................................................... 179

씬 시작하기........................................................................................................ 180

07 생체 표면을 위한 셰이더

피부의 복잡성 이해........................................................................................... 181 피부 셰이더 만들기........................................................................................... 182 피부 셰이더에 복잡성 추가..................................................................................187 커스텀 조명 모델 작성...........................................................................................191 안구 머티리얼 만들기....................................................................................... 201 커스텀 안구 셰이더 만들기..................................................................................205 머리카락 머티리얼 만들기................................................................................ 209 커스텀 머리카락 셰이더 만들기..........................................................................211 정리..................................................................................................................... 218

책1.indb 8

2017-03-07 오후 5:29:39


목차

08

IX

씬 시작하기........................................................................................................ 220 파티클 시스템 추가........................................................................................... 221 파티클 시스템의 매개변수 조정..........................................................................222

커스텀 파티클 셰이더: 연기, 증기, 액체

파티클 시스템의 새로운 머티리얼 설정............................................................227 파티클 셰이더 생성........................................................................................... 228 파티클 셰이더에 텍스처 추가...............................................................................233 증기 파티클 효과.....................................................................................................236 증기 파티클의 매개변수 조정...............................................................................237 점액 흘리기 효과.....................................................................................................242 정리..................................................................................................................... 252

씬 시작하기........................................................................................................ 254

09

모바일 장치를 위한 씬 빌드.................................................................................255 간단한 모바일 셰이더 작성.............................................................................. 261

모바일을 위한 셰이더 최적화

씬 머티리얼의 셰이더 바꾸기...............................................................................266 고급 모바일 셰이더 작성.................................................................................. 269 정리..................................................................................................................... 273

책1.indb 9

2017-03-07 오후 5:29:39


X

서문

유니티는 게임 프로젝트를 구축하는 데 필요한 광범위한 툴을 제공한다. 특히 유니티 5 버전에 서는 셰이더가 실제 표면의 물리적 특징을 표현하도록 손쉽게 설정할 수 있는 표준 셰이더로 대체되면서 이전에 비해 크게 업그레이드됐다. 이 책에서는 이러한 새로운 셰이더 덕분에 가능해진 옵션들을 살펴보고 이를 통해 게임 씬의 조명이나 효과와 상호작용해 고품질의 결과를 얻는 방법을 알아본다. 오늘날 최신 게임에서 맛볼 수 있는 수준의 현실감을 실현하는 데는 아주 오랜 시간이 걸렸다. 가장 오랫동안 문제가 된 것은 실시간 조명을 처리하는 오버헤드였다. 현실감을 구현하는 부 담은 캐릭터나 물체의 텍스처로 정적 표면 효과를 베이킹해야 하는 텍스처 아티스트의 어깨도 똑같이 무겁게 했다. 이러한 노력에도 불구하고 게임 캐릭터와 같이 동적인 게임 오브젝트를 표현하는 데는 실망스 러운 결과가 나오는 경우가 많았는데, 캐릭터가 어둡거나 밝은 지역으로 이동하면 캐릭터가 빛 을 받은 효과에서 부족한 현실감이 그대로 드러났기 때문이다. 그래픽의 발전, 그중에서도 특히 그래픽 카드의 빠른 발전 덕분에 이제 실시간 조명 기법을 더 효율적으로 구현할 수 있게 됐다. 즉, 게임 씬의 동적인 조명에 반응하는 현실적인 표면을 실현해 게임에 대한 플레이어의 기대 를 충족할 수 있게 된 것이다. 이 책에서는 인기 있는 장르인 SF 호러 게임을 제작하는 과정을 통해 이러한 셰이더와 조명의 개념을 배우고 다양한 조명과 표면 효과를 직접 만들어본다.

책1.indb 10

2017-03-07 오후 5:29:39


이 책의 구성

XI

이 책의 각 장에서는 각기 다른 씬 파일을 이용해 셰이더의 주요 기능과 효과의 개념을 단계적 으로 살펴본다. 1장 표준 셰이더의 이해에서는 SF 호러 테마 게임에서 우주선의 함교 씬을 위한 머티리얼을 준비하는 과정을 진행하면서 유니티 표준 셰이더의 기능과 한계를 확인한다. 2장 커스텀 셰이더 만들기에서는 우주선 정비 씬을 제작하면서 커스텀 셰이더로 게임 씬의 품 질을 높이는 방법을 배운다. 첫 번째 커스텀 셰이더를 새로 만들고, 이 코드를 바탕으로 헬멧의 투명도와 행성의 대기에 적용할 복잡한 효과를 만든다. 3장 조명과 발광 표면 만들기에서는 씬 조명과 발광 표면 간의 관계를 집중적으로 살펴보면서 우주선 조종석의 애니메이션 홀로그래프 디스플레이를 제작한다. 4장 코드와 셰이더를 이용한 표면 애니메이션에서는 셰이더 워크플로에서 애니메이션을 구현 하는 여러 기법을 살펴본다. 커스텀 셰이더로 더 복잡한 애니메이션을 구현하는 방법을 배우기 전에 C#을 이용해 텍스처 배열을 순환하고 UV 스크롤링을 구현해 애니메이션 홀로그래프 디 스플레이를 완성한다. 5장 투명 표면과 효과에서는 행성 표면 씬에 다양한 투명 효과를 적용하는 과정을 통해 특정 용도를 위해 제작한 셰이더와 기존 셰이더를 이용해 다양한 머티리얼을 설정하는 방법을 배 운다. 6장 스페큘러와 메탈릭 표면에서는 유니티 5 표준 셰이더의 스페큘러와 메탈릭 워크플로 간의 차이를 집중적으로 살펴보고 이러한 두 유형의 커스텀 셰이더를 직접 작성하고 몇 가지 게임 의 특수 효과를 만들어본다.

책1.indb 11

2017-03-07 오후 5:29:39


XII

이 책의 구성

7장 생체 표면을 위한 셰이더에서는 실내 씬의 캐릭터에 적용할 고유한 피부와 머리카락 셰이 더를 만든다. 첫 번째 셰이더로는 주인공 캐릭터의 피부와 같이 부분적으로 투명한 머티리얼을 위한 표면하 산란 효과subsurface scattering effect를 표현하는 방법을 살펴보고 이어서 PBR 호환 머리 카락과 안구 셰이더를 만든다. 8장 커스텀 파티클 셰이더: 연기, 증기, 액체에서는 연기, 증기, 불과 같은 파티클 효과를 사용 하는 셰이더를 만드는 방법을 다룬다. 이전과 마찬가지로, SF 호러 테마의 우주선 통로를 표현 하는 데 적합한 고급 시네마틱 효과를 만들기 위해 이번에도 유니티의 기본 셰이더에서 벗어 난 고급 기법을 다룬다. 9장 모바일을 위한 셰이더 최적화에서는 안드로이드나 iOS 같은 모바일 플랫폼에 맞게 커스텀 셰이더를 작성하고 테스트하는 방법을 배운다.

책1.indb 12

2017-03-07 오후 5:29:40


이 책의 구성

XIII

준비물 이 책의 각 단원을 제대로 이해하려면 3D 그래픽의 주요 개념을 이해할 필요가 있다. 이 밖에 도 다음과 같은 항목이 필요하다. ■■ 시스템(윈도우

또는 맥 OS)에 유니티 5를 설치해야 한다. 이 책에서 소개하는 프로젝트를 진행하

는 데는 무료 개인 버전으로도 충분하다. 유니티는 유니티 웹페이지에서 다운로드할 수 있다. ■■ 유니티

스크립트나 C#을 이해할 수 있으면 프로젝트를 진행하는 데 도움이 되지만, 책에서 소개

하는 코드에 대해서는 자세한 설명이 함께 제공된다.

대상 독자 이 책은 유니티와 C#에 대한 경험이 있고 셰이더와 특수 효과를 활용한 차세대 게임을 개발하 려는 중급 게임 개발자에게 맞게 구성돼 있다. 따라서 게임 개발과 아트에 대한 기본 지식을 갖 추고 있다고 가정한다.

편집 규약 정보의 종류를 구분하기 위해 여러 가지 편집 규약을 사용했다. 각 사용 예와 의미는 다음과 같다. 본문에서 코드, 데이터베이스 테이블 이름, 폴더 이름, 파일 이름, 파일 확장자, 경로 이름, 더미 URL, 사용자 입력, 트위터 계정명은 다음과 같이 고정폭 코드 서체로 표시한다. “프로젝트의 이름을 적절하게 지정하고(예: Shaders and Effects) 컴퓨터의 하드디스크에서 쉽게 이용할 수 있는 위치를 할당한다.”

책1.indb 13

2017-03-07 오후 5:29:40


XIV

이 책의 구성

코드 블록은 다음과 같이 표시한다. Properties { _Color ("Color", Color) = (0,0,0,0)

Getting to Grips with Standard Shaders

_EdgeColor ("Edge Color", Color) = (0,1,0,1)

differentfloat) parts of the model such as the face and fabric currently respond _WidthThe ("Width", = 0.1 }

to the scene's lighting in the same way.

The metallicity and smoothness are uniform as these values are currently defined by value sliders in the Astronaut material. 새로운 용어와 중요한 단어는 굵게 표시한다. 화면에서 볼 수 있는 단어, 즉 메뉴나 대화상자에 the Assets locate astronaut_metal and drag this into the Metallic slot 13. In단어는 표시되는 다음과panel, 같이 표시한다. in the Inspector.

“기존 프로젝트를 열거나 새로운 프로젝트를 만들라는 메시지가 표시되면 Create New Chapter 1 The astronaut's appearance will change again in the Scene view. Project를 선택한다.” thethe metallicity or metalness is definedyou in the Unity will takeInametallic momentmaps, to copy appropriate files. Whenvalue it is finished, willred have a channel an RBGA new blank space in theofScene view.texture file. Surfaces that are more metallic have a higher red value. Other channels, such as green and blue, are ignored. The next step 경고나 is to import the project files이와 needed for the chapters. file into the material, 중요한 노트는 박스 안에 표시한다. astronaut_metal Note that when we dragged the같이 the smoothness slider disappeared. Downloading the example code Smoothness is defined in the alpha channel of the metallic texture. When Detailed steps to download the code bundle are mentioned in the Preface this is not present, the material is assigned full smoothness. of this book. Please have a look. 팁과 요령은 박스 안에 이와 같이 표시한다. ps:Normal //githuMap b The code bundle for the book is also hosted on at htottthe 14. In the astronaut_normal andGitHub drag this Assets panel, locate m/PInspector. acktPublishing/Mastering-Unity-Shaders-And-Effects. We slot .incothe also have other code bundles from our rich catalog of books and videos available httpoverrides s://giththe ub.surface com/Pacnormals ktPubliof shain g/. Check themthe out! A NormalatMap model defining direction in which it will reflect light. This technique is commonly used to fake high-resolution detail on a model's surface. The Normal Map slot uses an RGB map, with each of the channels used to define a direction of the normal's surface. The project files for this book have been saved as a Unity assets package that contains all the 15. Locate astronaut_suit_ao and drag this to the Occlusion slot in the Inspector. models and textures needed to follow the tasks in the chapters. Follow these steps to import the project files: Occlusion or ambient occlusion is a lighting effect in which recessed parts

Importing the project files

modelbar such and folds in clothing that receive 1. On of theamenu in as thecavities main Unity interface, click on thenever Assets tab. full light are made to appear darker. Used together with other maps, such as 2. Choose Import Package | Custom Package… from the list that appears. Normal and Metallic, this will help a complex model to have a more 3. In the window that appears, navigate to the location where uses you saved and realistic appearance. In the Standard Shader, Occlusion a grayscale unzipped the PACKT_SAE zip file. RGB map. Within the folder, there will be a PACKT_SAE.unitypackage file. 4. Select it. Unity will take a moment or two to decompress the package.

책1.indb 14

2017-03-07 오후 5:29:41


이 책의 구성

XV

독자 의견 독자의 피드백은 항상 환영한다. 이 책의 무엇이 좋았는지 또는 좋지 않았는지 소감을 알려주 기 바란다. 독자 피드백은 독자에게 필요한 주제를 개발하는 데 매우 중요하다. 일반적인 피드 백을 보낼 때는 간단하게 wikibook@wikibook.co.kr로 이메일을 보내면 되고, 메시지의 제목 에 책 이름을 적으면 된다.

고객 지원 이 책의 구매자가 된 독자에게 도움이 되는 몇 가지를 제공하고자 한다.

예제 코드 다운로드 이 책의 예제 코드 파일은 wikibook.co.kr에서 내려받을 수 있다. 원서 출판사에서 코드를 내려받으려면 다음과 같이 한다. 1. 팩트 출판사 웹 사이트(http://www.packtpub.com)에서 이메일 주소와 암호를 이용해 로그인 하거나 계정을 등록한다. 2. 맨 위에 있는 SUPPORT 탭으로 마우스 포인터를 이동한다. 3. Code Downloads & Errata 항목을 클릭한다. 4. Search 입력란에 책 이름을 입력한다. 5. 코드 파일을 내려받을 책을 선택한다. 6. 드롭다운 메뉴에서 이 책을 구매한 위치를 선택한다. 7. Code Download 항목을 클릭한다.

책1.indb 15

2017-03-07 오후 5:29:41


XVI

이 책의 구성

파일을 내려받은 후에는 다음과 같은 압축 프로그램을 이용해 파일의 압축을 해제한다. ■■ 윈도우 ■■ 맥

- WinRAR, 7-Zip

- Zipeg, iZip, UnRarX

■■ 리눅스

- 7-Zip, PeaZip

정오표 내용을 정확하게 전달하기 위해 최선을 다했지만, 실수가 있을 수 있다. 책에서 코드나 텍스 트상의 문제를 발견해서 알려준다면 매우 감사하게 생각할 것이다. 그런 참여를 통해 다른 독 자에게 도움을 주고, 다음 버전에서 책을 더 완성도 있게 만들 수 있다. 오자를 발견한다면 wikibook@wikibook.co.kr로 오류 정보를 알려주기 바란다. 보내준 내용이 확인되면 웹사이 트에 그 내용이 올라가거나, 해당 서적의 정오표 섹션에 그 내용이 추가될 것이다.

책1.indb 16

2017-03-07 오후 5:29:41


이 책의 구성

XVII

저작권 침해 저작권 침해는 모든 인터넷 매체에서 벌어지고 있는 심각한 문제다. 팩트출판사에서는 저작권 과 라이선스 문제를 아주 심각하게 인식하고 있다. 어떤 형태로든 팩트출판사 서적의 불법 복 제물을 인터넷에서 발견했다면 적절한 조취를 취할 수 있게 해당 주소나 사이트명을 즉시 알 려주길 부탁한다. 의심되는 불법 복제물의 링크를 copyright@packtpub.com으로 보내주기 바란다. 번역서의 경우에는 wikibook@wikibook.co.kr로 보내주기 바란다.

질문 이 책과 관련된 질문이 있다면 questions@packtpub.com을 통해 문의하기 바란다. 최선을 다해 질문에 답해 드리겠다. 한국어판에 관한 질문은 위키북스 편집팀(wikibook@wikibook. co.kr)으로 문의해주길 바란다.

책1.indb 17

2017-03-07 오후 5:29:41


01 표준 셰이더의 이해

1장에서는 첫 번째 씬에 적용할 머티리얼을 만들면서 유니티의 표준 셰이더Standard Shader에 대 해 알아보자. 표준 셰이더는 물리 기반 렌더링을 활용하는 셰이더로서 유니티 버전 5에 처음 도입됐다. 표준 셰이더가 도입되기 전까지는 투명, 반사, 메탈릭 머티리얼을 만들려면 특수한 셰이더를 사용해야 했다. 따라서 한 게임 씬에 여러 다른 표면을 포함하는 경우 문제가 됐다. 각 셰이더 는 실행해야 하는 하나의 작은 프로그램이기 때문에 성능에 부정적인 영향을 미쳤다. 표준 셰이더는 보편적인 접근 방식으로서 반사나 투명 또는 메탈릭 효과로 사용하거나 이러 한 효과를 모두 포함할 수 있다. 사용되지 않은 맵 채널은 런타임에 모두 폐기되므로 셰이더 의 효율과 실행 성능을 높이는 데 도움을 준다. 표준 셰이더는 유니티의 유연한 인라이튼Enlighten 조명 시스템과 함께 게임 씬에서 더 현실적 인 표면을 만들기 위한 핵심적인 기능이다. 먼저 메탈릭과 스페큘러 표준 셰이더의 워크플로를 비교하고 우리 게임에서 이 두 가지 셰이 더가 적용되는 부분을 확인해보자.

책1.indb 2

2017-03-07 오후 5:29:41


01 _ 표준 셰이더의 이해

3

[그림 1.1] 모든 모델에 표준 셰이더를 사용한 렌더링 씬(출처: www.unity3d.com)

1장에서는 다음과 같은 주제를 다룬다. ■■ 프로젝트 ■■ 다양한

설정과 커스텀 에셋 패키지 임포트

표면을 나타내기 위한 복잡한 머티리얼 만들기

■■ 슬라이더와 ■■ 임포트한 ■■ 표면을

모델에서 머티리얼 그룹 활용

투명하게 만들기

■■ 머티리얼 ■■ 표준

레이어링

메탈릭과 표준 스페큘러 워크플로 간의 차이점 확인

■■ 스카이박스 ■■ 씬의

텍스처 맵을 이용한 스페큘러와 메탈릭 값 정의

에셋 만들기

기본적인 조명 설정

이 책에서는 차세대 SF 호러 게임이라는 테마를 활용해 셰이더와 효과에 대한 이해 수준을 높 일 것이다. 이 게임에서 플레이어는 의문의 사고로 행방불명된 연구팀을 찾기 위해 리들리 VI라는 먼 행 성으로 여행을 떠난다. 이 게임의 테마에는 여러 가지 셰이더와 효과를 적용해볼 기회가 많이 포함돼 있다. 이제 본격적으로 시작해보자!

책1.indb 3

2017-03-07 오후 5:29:41


4

Mastering Unity Shaders and Effects

프로젝트 만들기 프로젝트는 씬, 모델, 머티리얼, 셰이더, 텍스처, 기타 에셋을 모두 담는다. 먼저 프로젝트를 만들고 이 책의 예제를 따라 하는 데 필요한 프로젝트 파일을 임포트해보자. 01. 유니티를 시작한다. 02. 기존 프로젝트를 열거나 새로운 프로젝트를 만들라는 메시지가 표시되면 New Project를 선택한다. 03. 프로젝트의 이름을 적절하게 지정하고(예: Shaders and Effects) 프로젝트를 저장할 경로를 지정 한다.

[그림 1.2] 프로젝트 생성

04. 기본 3D 옵션을 그대로 둔다. 05. Add Asset Package 버튼을 클릭한 다음 Effects 에셋 패키지를 추가하고 Done 버튼을 클릭한다.

책1.indb 4

2017-03-07 오후 5:29:43


01 _ 표준 셰이더의 이해

5

[그림 1.3] Effects 에셋 패키지 추가

06. Create project 버튼을 클릭한다.

유니티가 필요한 파일을 복사하는 데 잠시 시간이 소요된다. 작업이 완료되면 Scene 뷰에 새로운 빈 공간이 표시되며, Project 뷰에서는 프로젝트를 생성할 때 추가한 Effects 에셋을 볼 수 있다.

[그림 1.4] 새로 생성한 유니티 프로젝트

책1.indb 5

2017-03-07 오후 5:29:49


6

Mastering Unity Shaders and Effects Chapter 1

Unity will take a moment to copy the appropriate files. When it is finished, you will have a new blank space in the Scene view. The다음은 next step is to import the project files파일을 needed임포트할 for the chapters. 프로젝트에 사용할 프로젝트 차례다. Downloading the example code Detailed steps to download the code bundle are mentioned in the Preface 예제 코드 다운로드 of this book. Please have a look. ps참고하자. ://github The코드를 code bundle the대해서는 book is 이 also hosted on설명했다. GitHub필요할 at htt때 예제 내려받는for 단계에 책의 서문에서 .com/PacktPublishing/Mastering-Unity-Shaders-And-Effects. We 이 책의 예제 코드는 위키북스 홈페이지 http://wikibook.co.kr/에서 내려받을 수 있다. also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!

프로젝트 파일 임포트 Importing the project files

The이 project for this book 예제를 have been saved package that모두 contains all the유니티 책의 files 프로젝트 파일은 따라 하는as데a Unity 필요한assets 모델과 텍스처를 포함하는 models and textures needed to follow the tasks in the chapters. Follow these steps to import the 에셋 project files: 저장돼 있다. 다음 단계에 따라 프로젝트 파일을 임포트한다. 패키지로 1. On the menu bar in the main Unity interface, click on the Assets tab. 유니티 인터페이스의 주 메뉴에서 Assets - Import from Package - Custom Package...를 선택한다. 01. 2. Choose Import Package | Custom Package… the list that appears. 3. In the window that appears, navigate to the location where you saved and 02. 창이 열리면 PACKT_SAE ZIP 파일의 압축을 해제한 위치로 이동한다. unzipped the PACKT_SAE zip file. 03. PACKT_SAE.unitypackage 파일을 선택한다. Within the folder, there will be a PACKT_SAE.unitypackage file. 유니티가 유니티 패키지 압축을 해제하고 나면 패키지에 포함된 파일이 Import Unity Package 대화 4. Select it. 상자에 표시된다. Unity will take a moment or two to decompress the package.

[9]

[그림 1.5] 유니티 패키지 임포트

책1.indb 6

2017-03-07 오후 5:29:50


01 _ 표준 셰이더의 이해

7

기본적으로 모든 에셋이 선택된다.

04. Import 버튼을 클릭한다.

임포트가 완료되면 Project 뷰에 여러 프로젝트 폴더가 추가된 모습을 볼 수 있다.

[그림 1.6] 프로젝트 뷰에 추가된 여러 프로젝트 폴더

다음은 첫 번째 씬을 로드할 차례다.

우주선 정비 씬을 로드하고 탐색하기 첫 번째 씬은 리들리 VI 행성과 가까운 우주 공간이며, 주인공이 행성을 탐사하기 전에 우주 선을 수리하기 위해 잠시 대기하는 상황이다. 여기서는 유니티의 표준 셰이더에 익숙해질 때까지 씬의 여러 표면의 고유한 특징을 나타내 는 특수한 머티리얼을 설정한다. 01. Project 뷰에서 PACKT_Scenes 폴더 아래에 있는 Chapter1_Start 씬을 찾는다. 02. Chapter1_Start를 더블클릭해 씬을 연다.

책1.indb 7

2017-03-07 오후 5:29:51


8

Mastering Unity Shaders and Effects

Scene 뷰에 씬이 표시된다.

[그림 1.7] 씬의 처음 상태

씬은 우주선과 주인공, 행성과 위성으로 이뤄져 있으며, 현재는 모든 모델에 기본 머티리얼이 적용돼 있다. 씬에는 유니티의 기본 씬 조명이 있으므로 표준 셰이더를 설정하면서 여러 머티리얼이 빛에 반응하는 방식을 비교할 수 있다. 먼저 주인공의 머티리얼을 설정해보자.

주인공 머티리얼 만들기 주인공 모델은 캐릭터의 얼굴, 유리 헬멧, 금속과 섬유로 이뤄진 우주복을 비롯한 여러 표면 으로 구성돼 있다. 유니티의 표준 셰이더를 이용하면 금속이나 반짝이는 표면을 제어하는 텍 스처 값이나 슬라이더를 조정해 이러한 차이를 나타낼 수 있다.

책1.indb 8

2017-03-07 오후 5:29:51


01 _ 표준 셰이더의 이해

9

먼저 머티리얼 에셋을 만들어야 한다. 01. Project 뷰에서 PACKT_Materials 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 Create - Material 을 선택한다. 02. 생성된 머티리얼의 이름을 Astronaut로 변경한다.

유니티 5에서는 메탈릭 워크플로를 사용하는 표준 셰이더를 사용해 새로운 머티리얼을 생성한다.

표준 셰이더는 다양한 표면에 사용할 수 있는 유연한 셰이더다.

03. Project 뷰에서 Astronaut 머티리얼을 선택하면 Inspector 뷰에서 Astronaut 머티리얼의 프로퍼티 (프로퍼티)를 설정할 수 있다.

[그림 1.8] 기본 머티리얼 설정

책1.indb 9

2017-03-07 오후 5:29:52


10

Mastering Unity Shaders and Effects

기본 상태의 Astronaut 머티리얼은 흰색 Albedo 색상과 약간의 Smoothness를 가지고 있어 표면 이 약간 반짝인다. 04. Inspector 뷰에서 Albedo 프로퍼티 옆에 있는 컬러 피커(흰색 사각형)를 클릭하고 흰색이 아닌 다른 색을 선택한다.

색을 설정하면 텍스처 맵을 적용하기 전에 씬에서 머티리얼을 사용한 부분을 볼 수 있다.

05. 세 가지 카메라 조종법(회전: Alt + 마우스 왼쪽 버튼, 팬: Alt + 마우스 가운데 버튼, 확대/축소: Alt + 마우스 오른쪽 버튼)을 이용해 주인공 캐릭터에 초점을 맞춘다. 06. Project 뷰의 Astronaut 머티리얼을 Scene 뷰의 Astronaut 모델로 드래그한다. Astronaut 머티리 얼이 적용되면서 모델의 색이 바뀌는 모습을 볼 수 있다.

[그림 1.9] Astronaut 머티리얼을 적용한 주인공

이제 Scene 뷰에서 모델의 머티리얼에 적용한 변경 사항을 볼 수 있다.

07. Project 뷰에서 PACKT_Textures 폴더에 있는 astronaut_suit 폴더를 찾는다.

이 폴더에 주인공 모델에서 사용하는 모든 텍스처가 있다.

08. astronaut_suit 폴더에서 astronaut_suit_albedo 텍스처를 찾아서 이 항목을 Inspector 뷰의 Albedo 슬롯으로 드래그한다.

책1.indb 10

2017-03-07 오후 5:29:52


01 _ 표준 셰이더의 이해

11

이때, Project 뷰에서 astronaut_albedo 텍스처를 선택하면 안되고, 앞서 만든 Astronaut 머티리얼 이 선택된 상태여야 한다.

이 텍스처는 주인공의 평면 색상 정보를 포함하고 있으며 알파 채널이 없는 TGA 파일이다.

[그림 1.10] Astronaut 머티리얼에 astronaut_suit_albedo 알베도 텍스처 적용

책1.indb 11

2017-03-07 오후 5:29:53


12

Mastering Unity Shaders and Effects

09. Albedo 슬롯 오른쪽에 있는 컬러 피커를 클릭하고 흰색을 선택해 알베도 색상을 흰색으로 되돌린다.

Getting to Grips with Standard Shaders

[그림 1.11] 알베도 텍스처를 적용한 주인공

The different parts of the model such as the face and fabric currently respond to the scene's lighting in the same way. 현재는 모델의 다른 부분(예: 얼굴과 옷감)이 씬의 조명에 동일하게 반응한다. The metallicity and smoothness are uniform as these values are currently Astronaut material. defined by value sliders theAstronaut Metallicity와 Smoothness 값은in현재 머티리얼의 값을 통해 정의되므로 균일하다.

the Assets panel, locate astronaut_metal and drag this into the Metallic slot 13. In 10. Project 뷰의 astronaut_suit 폴더에서 astronaut_suit_metallic 텍스처를 찾아서 Inspector in the Inspector. 뷰의 Metallic 슬롯으로 드래그한다. The astronaut's appearance will change again in the Scene view. metallicity 또는 metalness 값은or RBGA 텍스처 파일의 채널에 정의된다. 금속에 가까운 표 금속 맵에서 금속성 In metallic maps, the metallicity metalness value빨강 is defined in the red

channel of an RBGA texture file. Surfaces that are more metallic have a higher red value. Other channels, such as green and blue, are ignored. 일을 드래그하면 Smoothness 슬라이더가 없어지는file 것을 알수 있다. into the material, Note머티리얼로 that when we dragged the astronaut_metal the smoothness slider disappeared. smoothness 평활도 는 금속 텍스처의 알파 채널에 정의되며, 정의된 값이 없으면 최대 평활도가 머티리얼에 Smoothness is defined in the alpha channel of the metallic texture. When 할당된다. this is not present, the material is assigned full smoothness.

면일수록 빨강 값이 높고 초록이나 파랑과 같은 다른 채널은 무시된다. astronaut_suit_metallic 파

14. In the Assets panel, locate astronaut_normal and drag this to the Normal Map astronaut_suit 폴더에서 astronaut_suit_normal 텍스처를 찾아서 Inspector 뷰 Project 뷰의 11. slot in the Inspector.

의 Normal Map 슬롯으로 드래그한다. A Normal Map overrides the surface normals of a model defining the direction in which it will reflect light. This technique is commonly used to fake high-resolution detail on a model's surface. The Normal Map slot uses an RGB map, with each of the channels used to define a direction of the normal's surface. 15. Locate astronaut_suit_ao and drag this to the Occlusion slot in the Inspector. Occlusion or ambient occlusion is a lighting effect in which recessed parts of a model such as cavities and folds in clothing that never receive full light are made to appear darker. Used together with other maps, such as Normal and Metallic, this will help a complex model to have a more realistic appearance. In the Standard Shader, Occlusion uses a grayscale RGB map. 책1.indb 12

2017-03-07 오후 5:29:54


The different parts of the model such as the face and fabric currently respond to the scene's lighting in the same way. The metallicity and smoothness are uniform as these values are currently defined by value sliders in the Astronaut material. 13. In the Assets panel, locate astronaut_metal and drag this into the slot 이해 01 Metallic _ 표준 셰이더의 in the Inspector.

13

Getting to Grips with Shadersappearance will change again in the Scene view. TheStandard astronaut's

In metallic maps, the or metalness value defined in the red The different parts ofmetallicity the model such as the face andisfabric currently respond channel ofMap an RBGA texture file. Surfaces that are moresurface metallic have a Normal normal to the scene's lighting in the same way. 노멀 맵 은 모델에서 빛을 반사하는 방향을 정의하는 면법선 을 재정의한다. 이 기법은 모 higher red value. Other channels, such as green and blue, are ignored. 델 표면에서 가짜 고해상도 디테일을 묘사하는 데 자주 사용된다. Normal Map 슬롯은 RGB 맵을 사용 The metallicity anddragged smoothness are uniform as these values arematerial, currently astronaut_metal file into the Note that when we the defined by value sliders in the Astronaut material. the smoothness slider disappeared. 하며, 각 채널이 법선 표면의 방향을 정의한다. Smoothness is defined in the alpha channel of the metallic texture. When locate 13. In the astronaut_metal drag this into the Metallic slot thisAssets is not panel, present, the material is assigned and full smoothness. in the Inspector. 12. Project 뷰의 astronaut_suit 폴더에서 astronaut_suit_ao 텍스처를 찾아서 Inspector 뷰의 14. In the Assets panel, locate astronaut_normal and drag this to the Normal Map The astronaut's appearance will change again in the Scene view. Occlusion 슬롯으로 드래그한다. slot in the Inspector. In Normal metallic Map maps,overrides the metallicity or metalness value is defined in the A the surface normals of a model defining thered direction in which it will reflect light. This technique is commonly used to higher red value. channels, such assurface. green and are Map ignored. 어둡게 보이는 부분에 Other 적용할 조명on효과다. 이 맵은 노멀Normal 이나blue, 금속Metallic 등의 다른 fake high-resolution detail a model's The Normal slot 맵과 함께 복잡한 astronaut_metal file into the material, Note that when we dragged the uses an RGB map,표현하는 with each of the channels used to define a direction of RGB 맵이 사 모델을 더 현실적으로 데 사용된다. 표준 셰이더에서 오클루전에는 그레이스케일 the normal's smoothness slider disappeared. the surface. Smoothness is defined in the alpha channel of the metallic texture. When 용된다. 15. Locate and drag this to the slot in the Inspector. thisastronaut_suit_ao is not present, the material is assigned fullOcclusion smoothness.

occlusion ambient occlusion 오클루전 이나 주변 오클루전 은 옷의 접힌 홈과 같이have 빛이 완전히 들지 않아서 channel of an RBGA texture file. Surfaces that are부분이나 more metallic a

14. astronaut_normal and drag to현재 the Normal Map the Assets panel, locate In 기본적으로 머티리얼은 맵이 적용될 때 최대 오클루전을 사용한다. 조명 설정에는 효과가 약 Occlusion or ambient occlusion is 주변 a lighting effect in this which recessed parts slot of in athe Inspector. model such as cavities and folds in clothing that never receive full 간 강하기 때문에 값을 조금 줄여야 한다. light are made to appear darker. Used together with other maps, such as A Normal Map overrides a model defining the Normal and Metallic, thisthe willsurface help a normals complexof model to have a more 0.5a로 뷰에서 Occlusion 오른쪽에 있는 숫자 필드is값을 설정한다. 13. Inspector direction in which it will reflect light.Shader, This technique commonly used to realistic appearance. In 프로퍼티 the Standard Occlusion uses grayscale fake detail on a model's surface. The Normal Map slot RGB high-resolution map. Occlusion 프로퍼티의 값을 줄이면 오클루전 효과가 약간 약해진다. 이제 씬 뷰를 보면 주인공의 표 uses an RGB map, with each of the channels used to define a direction of normal's surface. 면이the 더 현실적으로 보이는 것을 알 수 있다. 15. Locate astronaut_suit_ao and drag this to the Occlusion slot in the Inspector. Occlusion or ambient occlusion is a lighting effect in which recessed parts of a model such as cavities and folds in clothing that never receive full light are made to appear darker. Used together with other maps, such as Normal and Metallic, this will[ 16 help a complex model to have a more ] realistic appearance. In the Standard Shader, Occlusion uses a grayscale RGB map.

[ 16 ]

[그림 1.12] Astronaut 머티리얼에 텍스처 맵을 적용한 주인공 캐릭터

책1.indb 13

2017-03-07 오후 5:29:55


14

Mastering Unity Shaders and Effects

캐릭터에는 아직 기본 머티리얼을 사용하는 부분이 있는데, 이런 부분은 다른 머티리얼 집합 을 사용하도록 구성됐거나 다른 하위 모델에 속하기 때문이다. 캐릭터의 안구는 주 캐릭터 메시와 별도로 애니메이션을 적용하기 위해 별도의 모델로 만드 는 경우가 많다. 이 모델의 안구는 주 캐릭터 모델과 동일한 머티리얼을 공유한다. 다음은 Astronaut 머티리얼을 안구 모델에 할당할 차례다. 01. Hierarchy 뷰에서 astronaut 게임오브젝트 왼쪽에 있는 삼각형을 클릭하면 주인공에 포함된 자식 게임오브젝트를 볼 수 있다. 02. Astronaut 머티리얼을 eye_L 오브젝트와 eye_R 오브젝트에 차례로 드래그해 적용한다.

[그림 1.13] 주인공의 안구에 적용한 Astronaut 머티리얼

주인공의 보조 장비에는 추가 머티리얼 그룹이 할당돼 있다. 여기에도 자체 텍스처 집합이 있다. 캐릭터와 같은 복잡한 모델은 머티리얼 그룹을 두 개 이상 사용하는 경우가 많다. 이렇게 하 면 한 모델의 다른 표면에 서로 다른 머티리얼을 적용해 빛에 다르게 반응하게 만들 수 있다. 다음 단계에서는 부속 장비에 사용할 머티리얼을 설정해보자.

책1.indb 14

2017-03-07 오후 5:29:55


01 _ 표준 셰이더의 이해

15

부속 장비에 사용할 머티리얼 설정 이제 주인공의 부속 장비에 사용할 보조 머티리얼을 만들어야 한다. 주인공 머티리얼과 같은 방법으로 새로운 머티리얼을 만들어보자. 01. Project 뷰에서 PACKT_Materials 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 Create - Material 을 선택한다. 02. 생성된 머티리얼의 이름을 Astronaut_equipment로 변경한다. 03. Hierarchy 뷰에서 astronaut 게임오브젝트를 선택하면 이 게임오브젝트의 컴포넌트가 Inspector 뷰에 표시된다. 04. Inspector 뷰에 게임오브젝트의 Mesh Renderer 컴포넌트가 나올 때까지 아래로 스크롤한다.

Mesh Renderer 컴포넌트의 Materials 섹션을 보면 머티리얼 요소 3개로 구성된 배열이 있다.

[그림 1.14] astronaut 게임오브젝트의 Mesh Renderer

05. Project 뷰에서 Astronaut_equipment 머티리얼을 찾아서 Element 1의 위치로 드래그한다. 이렇게 하면 배열의 기본 머티리얼이 바뀌고 Scene 뷰에서 확인해 보면 주인공의 장비에 다른 머티리 얼이 적용된다.

지금까지 머티리얼을 할당했다. 이어서 올바른 텍스처 맵을 추가해보자.

06. Inspector 뷰에서 Astronaut_equipment 머티리얼 왼쪽에 있는 삼각형을 클릭해 확장하면 맵 입력 과 슬라이더가 표시된다. 07. Project 뷰에서 PACKT_Textures 폴더에 있는 astronaut_suit 폴더를 찾는다.

책1.indb 15

2017-03-07 오후 5:29:56


16

Mastering Unity Shaders and Effects

08. astronaut_suit 폴더에서 equipment_albedo 텍스처를 찾아서 이 항목을 Inspector 뷰의 Albedo 슬롯으로 드래그한다.

Scene 뷰에서 주인공의 장비 색상이 바뀌며 텍스처 맵이 머티리얼에 적용된 것을 알 수 있다.

[그림 1.15] 주인공의 장비에 알베도 텍스처 적용

책1.indb 16

2017-03-07 오후 5:29:56


따라 하면서 배우는 유니티5 셰이더와 이펙트 입문 : 유니티5를 이용한 차세대 게임용 셰이더 제작과 이펙트 구현  

제이미 딘 지음 | 최민석 옮김 | 게임 개발 시리즈_020 | ISBN: 9791158390570 | 27,000원 | 2017년 03월 16일 발행 | 292쪽 | Effect, Shader, 셰이더, 유니티, 유니티5, 이펙트

Read more
Read more
Similar to
Popular now
Just for you