07/31 Shader 기초 - 기초 개념, Shader Graph

댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.

댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
Shader: 표면을 그리는 규칙(프로그램). Material의 뿌리.
Lit: 조명과 그림자의 영향을 받아 물체를 입체적이고 현실적으로 표현하는 셰이더입니다.
Unlit: 조명의 영향을 받지 않고 텍스처나 색상을 그대로 표현하는 셰이더입니다.
파이프라인 불일치: 셰이더가 현재 렌더 파이프라인(Built-in, URP, HDRP)과 호환되지 않아 재질이 분홍색으로 표시되거나 정상 출력되지 않는 현상입니다.
Shader Graph :Node 연결 방식을 이용하여, 코드 없이도 쉽게 쉐이더를 다룰 수 있도록 한다.
Shader Graph와 Material의 프로퍼티 수정 차이
Shader Graph와 Material에서는 같은 프로퍼티를 수정할 수 있지만, 수정 대상과 적용 범위가 다르다.
Shader Graph의 Blackboard에서 프로퍼티를 수정하는 것은 셰이더가 사용할 값의 종류와 기본 구조를 설계하는 것이다. 프로퍼티의 이름, 자료형, 기본값, 범위, 외부 노출 여부 등을 설정하며, 해당 프로퍼티가 그래프 안에서 어떤 계산에 사용되는지도 결정한다. Blackboard에서 Exposed가 활성화된 프로퍼티는 Material의 Inspector에 표시된다.
반면 Material에서 프로퍼티를 수정하는 것은 Shader Graph가 만들어 놓은 구조를 변경하지 않고, 특정 머티리얼에 저장된 실제 값만 변경하는 것이다. Material에서 변경한 색상, 텍스처, 속도 등의 값은 해당 Material Asset에 저장되므로, 같은 Shader Graph를 사용하는 머티리얼이라도 서로 다른 모습을 가질 수 있다.
| 구분 | Shader Graph에서 수정 | Material에서 수정 |
|---|---|---|
| 주요 역할 | 셰이더의 구조와 계산 방식 설계 | 특정 머티리얼의 값 조절 |
| 수정 대상 | Blackboard 프로퍼티와 노드 연결 | Inspector에 노출된 프로퍼티 값 |
| 적용 범위 | 해당 그래프를 사용하는 전체 머티리얼에 영향 가능 | 선택한 Material Asset에만 적용 |
| 수정 예시 | 프로퍼티 추가, 타입 변경, 노드 연결 | 색상, 텍스처, 수치 변경 |
| 적합한 상황 | 새로운 기능이나 효과를 만들 때 | 오브젝트마다 모양만 다르게 할 때 |
물 셰이더를 만든다고 가정하면 Shader Graph에서는 Water Color, Wave Speed, Wave Strength 프로퍼티를 만들고, 각각을 색상 계산이나 정점 이동 노드에 연결한다.
그다음 같은 Shader Graph를 사용하는 여러 Material을 만든 뒤 다음과 같이 값을 다르게 설정할 수 있다.
이 경우 세 Material은 동일한 Shader Graph의 계산 구조를 공유하지만, 각 Material에 저장된 프로퍼티 값이 달라 서로 다른 모습으로 출력된다.
핵심 정리:
Shader Graph는 효과의 작동 원리와 조절 가능한 항목을 만드는 곳이고, Material은 만들어진 항목의 실제 값을 오브젝트별로 설정하는 곳이다.
Shader Graph 알아보기

| 구분 | 의미 | 처리 대상 | 주요 역할 | 활용 예시 |
|---|---|---|---|---|
| Vertex | 모델을 구성하는 정점을 계산하는 단계 | 메시의 각 정점 | 정점의 위치, 방향 등을 변경하여 오브젝트의 형태를 움직임 | 물결, 바람에 흔들리는 풀, 오브젝트 팽창 |
| Fragment | 화면에 출력될 픽셀의 모습을 계산하는 단계 | 화면에 표시되는 픽셀 | 색상, 텍스처, 투명도, 발광, 표면 질감 등을 결정 | 색상 변경, 디졸브, 홀로그램, 발광 효과 |
| Node | Shader Graph에서 하나의 계산이나 기능을 나타내는 요소 | 입력된 숫자, 색상, 벡터, 텍스처 등의 데이터 | 값을 생성하거나 계산한 뒤 다른 노드로 전달 | Multiply, Lerp, Time, Noise, Sample Texture 2D |
노드와 연결 예시

| 노드 이름 | 설명 |
|---|---|
| Time | 실행 후 흐른 시간을 출력한다. 움직임이나 반복 효과에 사용한다. |
| Color | 지정한 색상값을 출력한다. 기본 색상이나 발광 색상에 사용한다. |
| Float | 하나의 숫자값을 출력한다. 속도, 밝기, 크기 등을 조절한다. |
| Texture 2D | 셰이더에서 사용할 텍스처를 입력받는다. |
| Sample Texture 2D | 텍스처와 UV를 이용해 실제 색상값을 읽는다. |
| Multiply | 두 값을 곱한다. 색상 밝기나 애니메이션 속도를 조절할 때 사용한다. |
| Add | 두 값을 더한다. 위치나 UV를 이동할 때 사용한다. |
| Lerp | A와 B 값을 T에 따라 혼합한다. 색상 전환이나 디졸브에 사용한다. |
| One Minus | 입력값을 반전한다. 흑백 마스크의 적용 영역을 뒤집을 때 사용한다. |
| Step | 기준값에 따라 0 또는 1을 출력한다. 선명한 경계를 만들 때 사용한다. |
| Sine | -1부터 1 사이의 반복값을 출력한다. 파도나 흔들림 효과에 사용한다. |
| Tiling And Offset | UV의 크기와 위치를 변경한다. 텍스처 반복과 이동에 사용한다. |
| UV | 모델의 텍스처 좌표를 가져온다. |
| Simple Noise | 불규칙한 무늬를 만든다. 불꽃, 연기, 물결 등에 사용한다. |
| Fresnel Effect | 카메라 각도에 따라 오브젝트 가장자리를 강조한다. |
텍스처 표시
Texture 2D → Sample Texture 2D → Base Color
텍스처 색상 변경
Sample Texture 2D + Color → Multiply → Base Color
움직이는 텍스처
Time → Multiply → Tiling And OffsetUV → Tiling And Offset → Sample Texture 2D → Base Color
핵심 정리:
값을 만드는 노드에서 시작해 계산 노드로 가공한 뒤, 결과를 Base Color, Position, Emission, Alpha 등에 연결한다.

우리들의 게임 발매 이야기

안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다


안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다
