[Unity] URP 셰이더 프레넬 셰이더(Fresnel Shader)

2023. 7. 20. 15:46Unity

728x90
반응형

프레넬(Fresnel) 효과는 게임에서 배경과 캐릭터의 분리강조를 위해 또는 선택되었을 때 프레넬 효과를 과장하여 사용한다. 테두리를 강조하는 비슷한 효과인 림 라이트도 프레넬로 만든다.

 

 


 

 

Fresnel Shader 만들기

프레넬(Fresnel)은 물체가 기울어질수록 반사가 심해진다. 이 말은 내가 바라보는 방향(벡터)에 따라 노말 벡터와 계산으로 반사가 달라져야 한다는 것이고, 따라서 [Normal Vector]와 [View Direction]의 [Dot Product] 연산을 한다.

카메라를 바라보는 면이 밝고, 각도가 커질 수록 어둡게 보인다.

 

 


 

 

[One Minus] 노드를 이용해서 반전을 시켜보면,

 

 


 

 

하지만 아직 빛나는 부분의 면적이 넓으므로 일부만 빛나게 만들려면 어두운 부분은 완전히 어둡게, 밝은 부분은 급격하게 밝아지게 해야 한다. 방법은, [Pow] 노드 지수 함수를 사용하면 된다. 지수 함수의 모양이 X 축이 커질수록 Y 값이 급격하게 커지는 모양이기 때문이다.

프리뷰에서도 의도한 부분이 잘 나타난다!

 

 


 

 

Color와 프레넬 두께를 조절할 수 있게 프로퍼티에 추가하여 마음대로 바꿔볼 수 있다.

 

 


 

 

 

[Unity] URP 셰이더 그래프로 Lambert Light 만들기 (+Half Lambert)

간단한 Lambert Light [Normal Vector] 노드와 [CustomLight] 커스텀 노드를 [Dot Product]로 내적하여 Lambert Light를 표현할 수 있게 되었다. 하지만 여기서 -1부터 1까지 표현되는 그림자이기 때문에 추가 조명을

lightbakery.tistory.com

이전 글에서 만들었던 [Lambert] Subgraph를 가져와서 [Normal Vector]를 입력값으로 받고 프레넬과 [Add] 연산을 하면 Lambert 효과와 Fresnel 효과를 둘 다 볼 수 있다.

 

 


 

 

[Normal Vector]노드 대신 Normal Map을 넣으면 울퉁불퉁 디테일한 모습을 볼 수 있다.

 

 

여기서, [Transform] 노드의 Type을 Direction으로 바꿔야 한다.

 

 


 

 

유니티는 이미 [Fresnel Effect] 노드를 가지고 있다고 한다. 위는 원리에 대한 설명이고, 프레넬 효과를 위해서는 이미 만들어진 노드를 사용하면 될 것 같다.

 

 


참고자료

 

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

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

www.aladin.co.kr

728x90
반응형