셰이더라는 말을 들으면 프로그래머의 영역처럼 느껴지지만, 요즘 게임 아티스트에게 셰이더는 매일 쓰는 도구입니다. 셰이더는 화면의 각 점이 어떤 색으로 보일지 계산하는 작은 프로그램입니다. 텍스처가 재료라면 셰이더는 그 재료로 요리하는 조리법이라고 생각하면 이해하기 쉽습니다. 이 글에서는 코드 없이 셰이더의 개념과 쓰임을 설명합니다.
셰이더, 머티리얼, 텍스처의 관계
| 용어 | 역할 | 비유 |
|---|---|---|
| 텍스처 | 색, 거칠기, 굴곡 같은 정보를 담은 이미지 | 재료 |
| 셰이더 | 텍스처와 빛 정보를 받아 최종 색을 계산하는 규칙 | 조리법 |
| 머티리얼 | 셰이더에 실제 텍스처와 값을 넣어 만든 하나의 재질 | 완성된 요리 |
같은 셰이더로 텍스처와 값만 바꿔 여러 머티리얼을 만들 수 있습니다. 예를 들어 하나의 돌 셰이더로 이끼 낀 돌, 젖은 돌, 마른 돌 머티리얼을 만드는 식입니다. 아티스트는 보통 머티리얼 값을 조절하는 일부터 시작해 점차 셰이더 자체를 만드는 단계로 넘어갑니다.
셰이더는 어떤 일을 하는가
셰이더는 크게 두 가지 일을 합니다. 하나는 모델의 꼭짓점 위치를 바꾸는 일이고, 다른 하나는 화면의 각 픽셀 색을 정하는 일입니다. 앞의 것을 버텍스 셰이더, 뒤의 것을 픽셀(프래그먼트) 셰이더라고 부릅니다.
- 버텍스 셰이더 예시: 바람에 흔들리는 풀, 출렁이는 물 표면, 숨 쉬듯 부풀었다 줄어드는 몬스터
- 픽셀 셰이더 예시: 금속의 반사, 흐르는 용암 무늬, 서서히 타 없어지는 효과, 외곽선 빛남
이 계산은 그래픽 카드가 아주 빠르게 처리하기 때문에 수많은 픽셀에 동시에 적용됩니다. 그래서 셰이더로 만든 효과는 텍스처를 여러 장 그리는 것보다 훨씬 유연하게 움직이고 바뀔 수 있습니다.
노드 기반 셰이더 편집
Unity의 Shader Graph, Unreal Engine의 머티리얼 에디터처럼 요즘 엔진은 코드 대신 상자(노드)를 선으로 연결해 셰이더를 만드는 도구를 제공합니다. 각 노드는 텍스처 불러오기, 색 곱하기, 시간에 따라 움직이기 같은 작은 기능을 하나씩 맡습니다.
- 텍스처 노드로 이미지를 불러옵니다.
- 색 노드와 곱해서 색조를 바꿉니다.
- 시간 노드를 UV 좌표에 더해 텍스처가 흐르게 만듭니다.
- 결과를 최종 출력의 베이스 컬러나 이미시브(발광)에 연결합니다.
노드 편집은 결과를 바로 미리 보며 조절할 수 있어 아티스트에게 친숙합니다. 포토샵의 레이어를 곱하기나 더하기로 섞어 본 경험이 있다면 많은 개념이 비슷하게 느껴질 것입니다.
아티스트가 알아 두면 좋은 기본 개념
- UV 이동과 회전: 텍스처 좌표를 시간에 따라 움직여 흐르는 물, 구름, 에너지 효과를 만듭니다.
- 마스크: 흑백 이미지로 효과가 적용될 영역을 정합니다. 흰 곳에만 효과가 나타나는 식입니다.
- 노이즈: 불규칙한 무늬로 자연스러운 흔들림과 변화를 줍니다.
- 프레넬: 표면을 비스듬히 볼수록 밝아지는 효과로, 외곽을 빛나게 하거나 보호막을 표현할 때 씁니다.
- 디졸브: 노이즈와 기준값을 비교해 표면이 서서히 사라지거나 타들어 가는 효과를 만듭니다.
- 값 0과 1 사이의 계산: 대부분의 셰이더 계산은 0에서 1 사이 숫자로 색과 투명도를 다룹니다.
성능도 셰이더 아티스트의 몫
셰이더는 화면의 수많은 픽셀마다 계산되므로, 노드를 많이 쌓을수록 무거워집니다. 특히 화면을 크게 덮는 반투명 이펙트에 복잡한 셰이더를 쓰면 성능이 크게 떨어질 수 있습니다. 그래서 텍스처 몇 장을 미리 합쳐 두거나, 계산을 버텍스 단계로 옮기거나, 필요 없는 노드를 정리하는 최적화가 필요합니다.
엔진에는 셰이더가 얼마나 무거운지 보여주는 도구가 있으니 작업 중간에 확인하는 습관을 들이면 좋습니다. 보기 좋으면서 가벼운 셰이더를 만드는 사람은 어느 팀에서나 귀하게 여겨집니다.
셰이더를 배우기 시작하는 방법
처음에는 흐르는 텍스처, 색이 바뀌는 깜빡임, 외곽 빛남처럼 단순한 효과를 따라 만들어 보며 노드에 익숙해지는 것이 좋습니다. 그다음 디졸브나 왜곡 같은 이펙트용 셰이더로 넓혀 갑니다. 3D 이펙트(VFX) 과정에서는 Unity 엔진을 통해 이펙트의 적용 단계를 학습하며, 환경 이펙트에서 캐릭터 스킬 이펙트까지 실습하는 과정에서 셰이더를 활용하게 됩니다.
자주 묻는 질문
셰이더를 배우려면 수학을 잘해야 하나요?
노드 기반 도구로 시작하면 깊은 수학 없이도 많은 효과를 만들 수 있습니다. 더하기, 곱하기, 0에서 1 사이 값의 의미 정도만 이해해도 충분히 출발할 수 있습니다.
셰이더는 이펙트 아티스트만 쓰나요?
배경, 캐릭터, UI 아티스트도 씁니다. 물과 풀, 피부와 머리카락, 화면 전환 효과까지 셰이더가 쓰이는 곳은 매우 넓습니다.
