[Unity] URP 셰이더 커스텀 노드로 Light Vector 노드 만들기

2023. 7. 18. 17:09Unity

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가 출력된다.

 

 


참고자료

 

대마왕의 유니티 URP 셰이더 그래프 스타트업

셰이더의 기본 개념에서부터 셰이더 그래프(노드)의 기본 활용법까지 소개하여, 다양하고 재미있는 셰이더를 만드는 방법을 알려준다. 또한, 자신이 원하는 효과를 만들기 위해 노드를 어떤 방

www.aladin.co.kr

728x90
반응형