[Unity] URP 셰이더 커스텀 노드로 Light Vector 노드 만들기
2023. 7. 18. 17:09ㆍUnity
728x90
반응형
먼저, [Custom Function] 노드의 Graph Inspector를 정리하면,
- Precision: 값의 정밀도이다.
- Inherit: 이전 노드에서 상속받는 정밀도
- Single: Float과 같으며 32bit 정밀도이다. 높은 품질과 정밀도를 가진다.
- Half: 16bit 정밀도로 Single보다는 조금 떨어진다.
- Use Graph Precision: Graph Setting에서 결정한 정밀도를 사용하는 옵션이다. HLSL 함수 이름이 Precision에 맞춰서 자동으로 접미어가 붙기 때문에 출력 변수의 단위가 이 Precision에 맞지 않으면 에러가 난다.
- Preview: 2D/3D 어떤 것으로 볼지를 결정한다.
- Inputs/Outputs: 다른 노드의 Input과 Output처럼 입력과 출력값이다.
- Type
- File: 외부 HLSL 파일을 연결해서 사용할 수 있다.
- String: HLSL 코드를 직접 작성할 수 있다.
CustomLight 커스텀 노드 만들기
Light Vector라는 노드는 따로 없기 때문에 책의 예제와 똑같이 [Custom Function] 노드를 이용하여 간단한 HLSL 코드로 만들었다.
#ifdef SHADERGRAPH_PREVIEW
Direction = float3(1,1,1);
#ifdef는 전처리기이며 처음부터 해당 사항이 아닐 때는 컴파일이 되지 않는다. 노드에서 미리보기를 할 때 float3(1,1,1)을 Direction으로 출력한다는 뜻이며 분홍색으로 미리보기가 나오지 않게 하기 위한 목적이다. 연산과는 상관없다.
Output인 Direction을 Base Color에 연결하였기 때문에 Directional Light의 방향을 바꾸면 각도에 따라 색이 바뀌는 것을 볼 수 있다. Direction에 Light Vector가 출력된다.
참고자료
728x90
반응형
'Unity' 카테고리의 다른 글
[Unity] URP 셰이더 프레넬 셰이더(Fresnel Shader) (0) | 2023.07.20 |
---|---|
[Unity] URP 셰이더 그래프로 Lambert Light 만들기 (+Half Lambert) (0) | 2023.07.18 |
[Unity] URP 셰이더 Normal Vector 정리 (0) | 2023.07.18 |
[Unity] URP 셰이더 돌이 물에 젖고 마르는 셰이더 만들기 (0) | 2023.07.17 |
[Unity] URP 셰이더 Detail Map (0) | 2023.07.17 |