2023. 7. 20. 15:46ㆍUnity
프레넬(Fresnel) 효과는 게임에서 배경과 캐릭터의 분리나 강조를 위해 또는 선택되었을 때 프레넬 효과를 과장하여 사용한다. 테두리를 강조하는 비슷한 효과인 림 라이트도 프레넬로 만든다.
Fresnel Shader 만들기
프레넬(Fresnel)은 물체가 기울어질수록 반사가 심해진다. 이 말은 내가 바라보는 방향(벡터)에 따라 노말 벡터와 계산으로 반사가 달라져야 한다는 것이고, 따라서 [Normal Vector]와 [View Direction]의 [Dot Product] 연산을 한다.
카메라를 바라보는 면이 밝고, 각도가 커질 수록 어둡게 보인다.
[One Minus] 노드를 이용해서 반전을 시켜보면,
하지만 아직 빛나는 부분의 면적이 넓으므로 일부만 빛나게 만들려면 어두운 부분은 완전히 어둡게, 밝은 부분은 급격하게 밝아지게 해야 한다. 방법은, [Pow] 노드 지수 함수를 사용하면 된다. 지수 함수의 모양이 X 축이 커질수록 Y 값이 급격하게 커지는 모양이기 때문이다.
Color와 프레넬 두께를 조절할 수 있게 프로퍼티에 추가하여 마음대로 바꿔볼 수 있다.
이전 글에서 만들었던 [Lambert] Subgraph를 가져와서 [Normal Vector]를 입력값으로 받고 프레넬과 [Add] 연산을 하면 Lambert 효과와 Fresnel 효과를 둘 다 볼 수 있다.
[Normal Vector]노드 대신 Normal Map을 넣으면 울퉁불퉁 디테일한 모습을 볼 수 있다.
여기서, [Transform] 노드의 Type을 Direction으로 바꿔야 한다.
유니티는 이미 [Fresnel Effect] 노드를 가지고 있다고 한다. 위는 원리에 대한 설명이고, 프레넬 효과를 위해서는 이미 만들어진 노드를 사용하면 될 것 같다.
참고자료
'Unity' 카테고리의 다른 글
[Unity] URP 프레넬 셰이더(Fresnel Shader) 응용 2 (홀로그램 만들기) (0) | 2023.07.20 |
---|---|
[Unity] URP 프레넬 셰이더(Fresnel Shader) 응용 (조명 효과, 깜빡이는 조명 만들기) (0) | 2023.07.20 |
[Unity] URP 셰이더 그래프로 Lambert Light 만들기 (+Half Lambert) (0) | 2023.07.18 |
[Unity] URP 셰이더 커스텀 노드로 Light Vector 노드 만들기 (0) | 2023.07.18 |
[Unity] URP 셰이더 Normal Vector 정리 (0) | 2023.07.18 |