Game Dev/Unity Shader

01. Shader 란? - 다니엘 릿 쉐이더 프로젝트

Septentrions 2025. 3. 30. 01:52

Shader를 알기 위해서는.. 기초적인 그래픽스 지식과 수학이 필요하다.

우선, 필요한 지식들을 먼저 이해해보자.

 

Renderer

Renderering은 일종의 데이터 처리를 아래 처럼, 순차적으로 하는 단계라고 한다. 

 

Render Process

1. Raw Vertext Data

2. Vertext Shader

3. Geometry & Tessellation

4. Rasterization

5. Fragment Shader

6. Per-fragment Operations.

 

Shader 는 Render Process 단계에서, 해당 단계에서 원하는 대로 처리할 수 있도록 하는 일종의 프로그램이라고 한다.

 

- Vertex Shader

Vertext 정보는 Mesh나 기하학적인 오브젝트에 의해서 받아 올 수 있는데.

화면에 오브젝트가 어떻게 위치할 것인지에 대해서, Shader를 통해서 조정할 수 있다.

Animating (예시 : 물결치는 오브젝트)은 해당 프로세스에서 구현 할 수 있다.

 

- Tessellation Shader

Tessellation 이란 단어는 좀 생소한데.. 타일화라고 이해하면 될 것 같다.

빈 공간을 특정 타일, 폴리곤 등으로 채우는 것을 Tessellation이라고 하는데

텅 빈 공간을 벡터로 표현할 수 있게 되는.. 쉽게 픽셀화라고 이해하면 될 것이다.

Vertext랑 같이 쓰며 offset을 변경하는 식으로 Shader를 이용 할 수 있다고 한다.

이건.. 실제로 실습해보지 않으면 감이 잘 안올 것 같다.

 

- Geometry Shader

Geometry Shader는 오브젝트에 새로운 형태 (Shape) 를 만들어 줄 때, 쓰인다고 한다.

성능에 큰 영향을 주지만. 다른 셰이더에서 할 수 없는 것을 할 수 있다고 한다.

 

- Fragment Shader

각 픽셀의 Color 같은 것을 다룰 때 쓰인다. Texture / Lighting 같은 물리 효과를 다룰 때 쓰인다.

가장 흔히 다루어지는 Shader 이다.

 

유니티 쉐이더에서는 주로 Vertex Shader / Fragment Shader를 위주로 렌더링에 관여한다.

여러 쉐이더들은 책 중반에 소개해준다고 하니.. 어금니 악 물고 넘어가자.

 


 

Game Data

Render Process에서 1번의 Raw Vertext Data는 여러 종류의 오브젝트들을 통해서 얻을 수 있다.

대표적으로 Mesh / Sprite / UI 정도가 있다.

 

Rasterization

 

실제 공간과 달리, 그래픽 렌더링은 픽셀을 통해서 보여진다.

Vertex Shader 와 Fragment Shader 사이에는 Rasterization 프로세스가 존재한다.

 

쓰면서 좀 귀찮아진 감이 있는데..

그래픽스 책을 한번이라도 펼쳐봤으면 꼭 나오는 파이프라인 관련 이야기라고 생각하자..


Unity Render Pipeline

 

유니티는 과거에는 싱글 렌더 파이프라인으로 되어 있었고.. 렌더링 코드들도 블랙 박스 형식으로 되어 있었기 때문에 다루기 힘들었었다.

이후에 Scriptable Render Pipeline (SRP)를 도입하면서, 개발자들이 파이프라인에 따라 커스터마이징 하면 되는 방식으로 변경되었다.

 

현대 시대에 어느 누가 스크래치 단계부터 이런 파이프라인을 구축할까?

유니티는 2개의 Pipeline Template를 제공한다.

그게 바로 URP / HDRP 이다.

 

참고로 이제는 안쓰이는거나 마찬가지인 Legacy 파이프라인은 Built-in Render Pipeline이다.

유니티 6.0 부터는 URP가 아예 기초가 되었고, 추후에는 URP / HDRP가 통합될 가능성도 있다고 한다.

 


Shader Graph

 

그래픽스를 공부할 시간이 없는 개발자나 코딩의 코자도 모를 아트 분야의 사람들에게는 단비와 같은 시스템이 Shader Graph이다.  노드 (node)로 이루어진 그래프들을 딸깍, 딸깍 연결하고 추가하며 원하는 효과를 얻을 수 있으니 말이다.

 

참고로 내가 리뷰하고 있는 다니엘 릿의 책은 Shader Graph가 아니라 HLSL 쪽에 더 치중되어 있다.

아트보다는 개발자가 읽기에 적합하단 뜻이다.

 

생각해보니, 아주 기초적인걸 아주 대충 설명한 포스팅이 되버렸다..

그래도 위에 내용들은 인터넷이나 지피티 딸깍만 해도 볼 수 있는 내용이니

알아서 공부하자.

 

다음 포스팅으로..