본문 바로가기
유니티/shaderGraph

유니티 셰이더 그래프 예제 12 메인라이트 가져와서 조명모델 & 카툰셰이딩 만들기, Unity 2021 ShaderGraph Get MainLight make new LightModel and CartoonShader

by NGVI 2021. 4. 23.

유니티 셰이더 그래프 예제 12 메인라이트 가져와서 조명모델 & 카툰셰이딩 만들기, Unity 2021 ShaderGraph Get MainLight make new LightModel and CartoonShader

이번에는 라이트 정보를 가져와서, 간단한 NdL 모델을 하나 만들어 보고,또 그 라이트를 이용해서 간단하게 카튠 셰이딩도 하나 해보도록 하자.

 

조명 모델을 만들어 넣을 거니까, 기존 조명을 참조하는 시스템을 쓰지 않는다.

그러니까

 

Unlit Shader Graph를 하나 생성한다. 이름은 정당히 원하는 것으로 하고,

Unlit Shader Graph 생성

MainLight 정보를 참조하기 위한 ShaderGraph 노드는 없다.

 

그래서 우리는 Custom Function Node라는 우리가 직접 코딩을 해야 하는 노드를 써야 한다.

 

custom function 노드

custom 펑션 노드는 2019부터 추가가 된 노드인데

변화가 많았다. 내부 코딩규약도 달려졌고 해서 특정 코딩을 해뒀는데, 상위 버전에서 100% 호환을 보장하지 않는다.

코드니까....

 

여기에서 유니티 버전을 명시해두겠다.

해당 버전에서 동작함을 보장한다.

 

21.1 버전에서 작업한 내용

일단 만들어 보자. Custum Function

만들어 보면 뭐 아무것도 안됨

해당 노드는 노드를 직접 만질게 아니고, Graph Inspector의 Node setting에서 손봐야 한다.

 

다른 버전에서는 톱니바퀴가 뜨고 뭐 이러는데, 그건 설명안함, 2021에서는 이러면 된다.

 

여기서 세팅해야함

다음과 같이 세팅하라

메인 라이트를 가져오게 한다.

GetMainLight 를 통해 유니티에서 라이트를 가져와서

 

우리가 준비해둔 Direction, Color에 정보를 넣는다. Outputs로 그럼 우리가 사용할 수 있다.

#if defined(SHADERGRAPH_PREVIEW)
	Direction = half3(0.5, 0.5, 0);
	Color = 1;
#else
	Light light = GetMainLight();
	Direction = light.direction;
	Color = light.color;
#endif

코드는 따로 빼둔다.

 

이전 버전에서는 SHADERGRAPH_PREVIEW 체크를 아래와 같으 하는데,

#if SHADERGRAPH_PREVIEW 

2021에서는

#if defined(SHADERGRAPH_PREVIEW)

코드로 해야한다.

 

요기까지 하면 다음과 같은 노드가 생긴다.

우리가 만든 광원 노드

모델의 노말 백터와 내적 하여 칼라 출력을 해보도록 하자.

노드 구성

노드구성

N dot L을 하고 결과를 라이트 칼라와 곱해 base Color로 출력하는 단순한 구성

 

결과 화면

결과화면

적당히 되어 보인다.

 

적당히 커스텀 평션을 어떻게 사용하나 알아보았다.

...

 

요기까지만 하면 아쉬우니까 하나 더 해보도록 하자.

 

간단한 카튠 셰이딩의 구현

노드 구성

카튠 셰이딩의 노드 구성

NdL은 사용한다.

해당 값을 -1~1 범위를 remap으로 0~1로 변경

 

그 값을 sample gradient 하여 라이트 칼라와 곱하여 출력하면

카튠 셰이딩에서 보이는 라이트 대비하여 딱딱 떨어지는 효과를 볼 수 있다.

 

참고로 그라디언트를 구성할 때 꼭

그라디언트 칼라구성

Fixed로 구성하여 딱 끊어지는 효과를 주도록 하자.

 

추가로 왼쪽이 어두운 부분 임도 알자.

 

실행결과

실행결과

Custom function 알아둡시다.

 

참고자료

blogs.unity3d.com/kr/2019/07/31/custom-lighting-in-shader-graph-expanding-your-graphs-in-2019/

 

Custom Lighting in Shader Graph: Expanding your graphs in 2019셰이더 그래프의 커스텀 조명: 2019 버전 그래프 확

With the release of Unity Editor 2019.1, the Shader Graph package officially came out of preview! Now, in 2019.2, we’re bringing even more features and functionality to Shader Graph.  What’s Changed in 2019? Custom Function and Sub Graph Upgrades To m

blogs.unity3d.com

봐주셔서 감사합니다.

댓글