유니티 엔진 (Unity Engine)

셰이더 입문서 추천 "아티스트를 위한 유니티 URP 셰이더 입문"

원소랑 2022. 3. 29. 12:04

게임 개발, 그래픽 관련 정보를 탐색하시던 분들은 핑속(이상원)님 닉네임이 익숙하실 것 같습니다. 지식 공유 활동도 많이 하시고 캐릭터 셋업 테크닉 책도 쓰셨었죠.

 
 

지금은 청강문화산업대학교에서 후학을 양성하고 계시는 핑속님이 유니티 2021 최신 버전 기반의 셰이더 입문서를 쓰셨습니다. "아티스트를 위한 유니티 URP 셰이더 입문".

 
빠르게 훑어보다가도 중간중간 멈춰 탐독할 정도로 너무 유익하게 읽게 되는 책이지만, 좋은 책 빨리 소개하고자 전체적으로 최대한 훑어보고 리뷰 해봅니다.

비엘북스에서 5년만에 출판한 유니티 셰이더 입문책. 비엘북스에서 유명한 셰이더 입문책은 5년 전에 대마왕 정종필님께서 쓴 "유니티 쉐이더 스타트업"이 있었죠. 비엘북스가 국내 셰이더 기술 발전에 얼마나 진심인지 알 것 같습니다.

입문책들은 상호 보완적인 성격이 있어서 여러 권 읽을수록 몰랐던 기본기나 비어있던 부분을 채워서 더 탄탄하게 다져지는데, 또 훌륭한 셰이더 입문책이 나와서 기쁜 마음으로 읽어봤습니다.

저자의 말에서 분명히 이야기 하고 있습니다. "셰이더를 위한 최소한의 것들만 아티스트의 관점에서 다루었다".

보통 "~입문서" 라고 하면 해당 기술에 대한 기초만 담백하게 알려줄 것이라 생각하기 쉽습니다. 하지만 "셰이더 입문"은 그렇게 간단하지 않습니다. 셰이더를 (입문하기) 위한 최소한의 것들이 있습니다. 이런 것들을 다루지 않고 셰이더 입문을 말하는 것은, 산속에 떨어진 돌맹이만 보여주며 산을 논하는 것과 같을 것입니다.

 
 
 
 

목차 구성에서 셰이더 입문을 위해 어떤 것들이 필요하고, 이 책에서 어떤 것들의 기초를 다룰 것인지 명확하게 보여주고 있습니다. 모두 셰이더 개발 입문을 위해 필요한 것들이고, 저자의 말에 다루었듯이 최소한의 것들만 다루기 위해 애쓰신 점이 느껴집니다.

큰 틀을 정리하면 이렇습니다.

1. 셰이더 개념

2. 빛에 대한 이해

3. 셰이더 그래프로 빠른 실습

4. 셰이더 코드를 통한 심화 학습

5. 셰이더 활용을 위한 수학들

6. 다양한 반사 효과들

셰이더는 빛과 그림자를 다루는 기술이기 때문에 빛과 그 빛을 제어하기 위한 기반 지식들이 필수적입니다. 그래서 이 셰이더 입문 책에서도 "셰이더" 자체 실습 내용만큼 기반 개념과 수학에 관련된 내용을 큰 비중으로 다루고 있습니다만, 최소한의 것들만 최대한 쉽게 설명하기 위해 노력한 부분들이 책 곳곳에서 느껴집니다.

 
 
 
 

위에서 정리한 큰 틀의 순서에 맞게 살펴보면, 먼저 이 책으로 셰이더 입문을 위한 기본적인 유니티 지식들과 렌더링 파이프라인, 셰이더에 대한 기본 개념들을 다룹니다. 처음 셰이더를 공부하게 되면 수많은 낯선 용어들 때문에 혼란스러울 수 있는데, 그런 부분들을 모두 겪어오신 경험치 덕분인지 시원하게 긁어주는 구성입니다. 특히, 픽셀 셰이더(Pixel Shader)와 프래그먼트 셰이더(Fragment Shader) 용어에 대한 부분은 확실히 짚어주는 부분이 맘에 들었습니다.

 
 

빛과 HDR 챕터에서는 빛에 대한 기본 개념과 성질에 대해 30페이지 정도를 할애하여 상세히 설명하고 있습니다. 빛에 대한 내용은 셰이더를 다루지 않더라도 그래픽스 분야에서는 필수 지식에 들어갈 정도로 중요한데, 이 부분 역시 셰이더에 필요한 최소한의 하지만 중요한 부분만 잘 정리해둔 것 같습니다.

셰이더 개념과 빛에 대한 개념을 넘어가면, 곧바로 셰이더 그래프 챕터로 이어집니다. 셰이더 그래프는 코딩 없이 노드를 연결하여 셰이더 결과물을 만들어낼 수 있는 GUI 에디터로 보다 직관적으로 실습할 수 있는 도구입니다. 사실 유니티 셰이더 그래프에 대한 온라인 도큐먼트가 나름 잘 제공되고 있긴 하지만, 한글 번역 문서는 지원하지 않고 있습니다. 그래서 이 책을 따라 셰이더 그래프를 실습 해보는 것이 좀 더 접근성은 훌륭할 거라 생각합니다.

비엘북스의 신간이 모두 지원하는 편의성인지는 모르겠지만, 아티스트를 위한 유니티 URP 셰이더 입문 책에서는 이렇게 부가 설명을 위한 QR 코드를 제공합니다. 스마트폰으로 촬영하여 링크를 타고 이동하고 즉시 움짤을 보고 이해를 돕는다거나, 동영상 강좌, 참고 이미지 등을 확인할 수 있습니다. 즉시 움짤로 셰이더 결과를 확인할 수 있는 부분들은 이해를 돕는데 매우 도움이 되었습니다. 그래서 책 뒤로 갈 수록 어디 QR 코드 또 없나 찾게 될 정도.

셰이더 그래프의 전체적인 모습을 보여주기 위해 가로 방향 페이지도 일부 제공하고 있습니다. 그래프를 도면 보듯이 보며 따라 만들다 보면 확실히 연습이 될 수밖에 없어보입니다. 예제 파일들도 GitHub 를 통해 제공하고 있지만, 내용이 내용인 만큼 직접 만들어보는 것 만큼 좋은 학습은 없으니까요.

물체의 그림자 표현을 다루는 램버트 라이팅을 셰이더 그래프로 직접 만들어보며 학습할 수 있는 파트도 있습니다. 뒤에서는 이 램버트 라이팅을 직접 셰이더 코드로도 다뤄보기 때문에 순서대로 학습할 수 있게 잘 구성된 책입니다.

 
 
 
 

개념이 어렵거나 중요한 부분들은 따로 챕터를 할애해서 분명하게 짚고 넘어가고 있습니다. Z Buffer, 반투명 처리, 감마 보정과 감마 워크플로우, 리니어 워크플로우 등이 그렇습니다. 챕터를 따로 분리해서 다룰 정도로 명확하게 설명하면서 중요한 개념이라는 것을 강조하는 책 구성에 또 한 번 감동.

 
 

셰이더 개발의 메인디쉬인 셰이더 코딩 챕터입니다. 주제가 주제인 만큼 큰 분량을 할애해서 책을 채우고 있어야 할 것 같은데, 셰이더 입문책이라는 방향성을 분명히 하면서 이 역시 필요한 만큼만 기초를 학습할 수 있도록 천천히 쉽게 하나하나 필요한 부분만 전달하고 있습니다.

실제로 셰이더 코드 챕터는 이 책의 20~25% 분량만 차지하고 있지만 그만큼 꼭 필요한 부분과 실습 요소만 다루고 있는 것 같습니다. 셰이더 그래프 챕터에서 다루었던 램버트 셰이더 코드도 다시 한 번 다루면서 직접 빛이 물체에 닿아 그림자가 지는 셰이더를 짜보고 분석해볼 수 있도록 가이드 합니다.

 
 
 
 
 
 

빛을 다루기 위해 필수불가결한 수학 챕터입니다. 적지 않은 분들이 수학이라면 겁부터 먹고 시작하기 때문에 최대한 쉽게 설명하기 위해 기초 개념부터 하나하나 쌓아가듯 설명하고 있습니다. 조금 어려워지는 내용이 나올 때 즈음 다시 셰이더 활용으로 넘어가면서 자연스럽게(?) 필요한 부분만 짚고 넘어가고 있습니다.

 
 

기초 수학 개념을 가지고, 흔히 카툰 렌더링이라 말하는 스타일의 외곽선, 아웃라인 효과를 만드는 방법으로 실습을 유도합니다. 3DS MAX 툴에서 원리를 설명하고, 유니티 셰이더로 옮겨와 개발해보는 구성입니다.

 
 

마지막 챕터는 여러 BDRF 를 다루면서 마무리 하고 있습니다. 기본적인 램버트 BDRF 부터 하프 램버트, 전반사, 퐁, 프레넬 등.

 
 
 
 
 
 

다양하게 빛이 어떻게 반사할 것인지를 다루는 예제와 코드들을 실습해보면서 활용도를 높일 수 있는 구성입니다. 버텍스 셰이더에서 가볍게 라이팅을 구현해보는 방법과 유의사항도 짚어주면서 본문이 마무리 됩니다.

"아티스트를 위한 유니티 URP 셰이더 입문" 꼼꼼하게 훑어보면서 세심한 배려를 느낄 수 있었습니다. "셰이더"가 여러 기반 지식들이 필요한 어려운 분야인 만큼, 그 여러 기반 지식들에서 필요한 부분만 잘 골라내고 덜어내고 하면서 엮어낸 책이라는 인상입니다.

동시에 저자분의 답답함 또한 느껴집니다. 더 설명하고 더 이야기 해주고싶은 것들이 많으실 것 같은데, "입문"서적이라는 레벨을 지키기 위해 많이 참으셨다는 인상입니다. 그만큼 입문자 분들 입장에서 이해하기 쉽도록 신경쓴 책이니, 셰이더 입문 계획이나 욕심이 있으신 분들께 이 책을 강력히 권해드립니다.

 

728x90
반응형