# Part 04 | 셰이더 그래프 만들기와 Property

## 01 오브젝트에 Material과 셰이더를 적용해 봅시다

씬 만들 때 Basic(URP): 카메라와 디렉셔널 라이트 1개가 있는 상태로 시작 Standard(URP): 카메라와 디렉셔널 라이트에 포스트 프로세스가 적용되어 있고, 포스트 프로세스에는 톤 매핑(Tone mapping)과 블룸(Bloom)이 적용된 HDR 씬 구조로 시작

오브젝트 확대 : 단축키 F 혹은 더블 클릭

셰이더 만들기 : Project 창 > Create > Shader Graph > URP > Unlit Shader Graph

셰이더 적용 방법

* 머테리얼에 셰이더 그래프 끌어다 적용시킨 후에 오브젝트에 머테리얼 끌어다 적용시키기
* 머테리얼 Inspector 상단에서 셰이더 변경 > 오브젝트 Mesh Renderer 컴포넌트 Materials > Element에 머테리얼 적용

## 02 셰이더 그래프를 열어서 경로를 바꿔 봅시다

셰이더의 '폴더'를 바꾸려면 셰이더 그래프에서 '폴더명과 경로'를 적어주어야 한다.

![](https://velog.velcdn.com/images/biomatrix117/post/3968c766-6fa1-4c8d-b4d3-7b7b45cea565/image.png)

셰이더 선택할 때 기본 경로는 'Shader Graphs'로 돼있는데, 여러 개 만들다보면 한 폴더에 전부 몰려서 정리가 안됨. Shader Graph 창 좌측 상단에서 셰이더 그래프 이름 아래에 있는 작은 글씨를 더블 클릭해서 경로를 바꿔주면 됨. 아예 지워버리면 루트에 노출됨. '/'를 사용해서 여러 디렉토리로 나눌 수도 있음.

셰이더 그래프 수정 후 Save Asset 또는 Ctrl+S로 저장하는거 잊지 말기

## 03 Blackboard와 Graph Inspector를 이용하여 셰이더 Properties를 만들어 봅시다

Properties : 셰이더의 UI를 담당. 오브젝트 선택했을 때 머테리얼에 나오는 셰이더 옵션 제어하는 부분. (Blackboard나 Graph Inspector가 안 보이면 우측 상단 버튼 눌러서 표시) 좌측 상단의 `+`를 눌러서 프로퍼티 만들 수 있다.

* Inspector에서 슬라이더로 조절 : Float 생성 > Graph Inspector > Node Settings > Mode > Slider
* 프로그래밍의 bool과 다르게, 여기서의 Boolean은 float 형식에서 0이나 1의 값만 넘어오는 것.
* Property가 많아지면 Category를 추가하여 정리해주자.

**Property 공통 파라미터**

Name : 이름. 한글도 가능. (버전 따라 실수로 한글 지원 안될수도) Refernece : 입력 받은 값에 접근할 때의 변수명.

* 앞에 `_` 를 붙여서 외부에서 들어온 값이라는 걸 알기 쉽게 하면 좋다.
* Name과 Reference는 통일하는게 좋다.\
  Default : 셰이더가 처음 생성될 때 갖게 될 초기값. Inspector에서 값 변경하면 이 값은 의미 없어짐. \
  Precision : 플랫폼에 따라 셰이더에서 사용되는 숫자의 정밀도를 조절하는 것. 이거 줄이는 것보다 텍스처나 한 장 줄이는게 더 효과적. \
  Exposed : Property가 Inspector에 노출되게 할건지 말건지 \
  Override Property Declaration : Property의 속성을 재선언. C 버퍼에서 어떻게 Reference 변수를 처리할지에 대한 부분. 큰 프로젝트에서 유용.

**Color Property**

Color Property를 만들고 Graph Inspector > Mode를 확인하면 HDR 옵션이 있다.

* Default : LDR, Low Dynamic Range, 0\~1까지의 범위로 이루어진 색상
* HDR : High Dynamic Range, 1 이상의 색도 선택할 수 있는 범위

Color는 float4 (Vector4)와 기본적으로 같지만, Color는 float4와 다르게 Linear가 아니라 sRGB로 취급된다는 차이가 있다 하지만 유니티 2D를 사용하면 완전히 똑같다. 이유는 나중에.

**Texture 2D Property**

평범한 2D 텍스쳐를 받을 수 있다. 매우 많이 사용한다. Mode : 이 프로퍼티에 텍스쳐 없을 때 기본 색깔. 일반적으로 White나 Black. 노말맵 텍스쳐 받는 Property는 NormalMap 사용. 텍스쳐 Tiling, Offset 조절 기능 : Node Settings > Use Tling and Offset

**Cubemap Property**

Cubemap : 스카이박스나 반사용 텍스쳐처럼, 주변을 360도로 감싸는 좌표를 가진 텍스쳐.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lazyartisan.gitbook.io/note/main-page/books/urp/part-04-or-property.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
