[Unity] URP 프레넬 셰이더(Fresnel Shader) 응용 (조명 효과, 깜빡이는 조명 만들기)

2023. 7. 20. 16:30Unity

728x90
반응형

HDR과 Bloom 효과는 저사양의 모바일 게임에서 사용하거나 레트로한 느낌을 주기 힘들기 때문에 프레넬 효과를 이용하여 만들어 볼 것이다.

 

 


 

 

조명 효과

 

Street Light 3D Model Free Download | 3DModelsCC0

Free Street Light 3D Model. Public Domain License. No credit or attribution required.

www.3dmodelscc0.com

책의 예제와 같이, 무료 가로등 에셋을 받아서 프레넬 효과를 적용해 줄 Sphere 하나를 가로등에 씌워준다.

 

 

 

 

조명 효과를 줄 것이기 때문에 [Surface Type] - [Transparent], [Blending Mode] - [Additive]를 적용시켜 준다.

 

 

[Fresnel Effect] 노드 안에 [One Minus]가 들어 있는 것은 이전 글에서 직접 프레넬 효과 셰이더를 만들 때 봤었는데, 여기서 다시 [One Minus]를 연산하기 때문에 주변이 밝아지는 것이 아닌 가운데가 밝아지는 효과가 나온다. 색상과 두께를 조절할 수 있다.

 

 


 

 

조명이 깜빡이는 효과

이전 셰이더에 [Time]과 [Sine] 노드만 추가해서 [Multiply] 연산을 하면 사인 그래프대로 시간이 흐르면서 -1부터 1 사이를 움직이게 된다. 즉, 깜빡이는 효과를 볼 수 있는데 문제는 음수로 가면서 이상하게 보이는 부분이 생긴다는 것이다. 이를 해결하기 위해서는,

  • [Saturate] 노드로 0~1 사이로 값을 제한한다. -> 음수로 갔다가 돌아오는 시간 텀이 길 수 있음.

  • Half Lambert 방법을 사용하여 0~1 사이에서 부드럽게 사인 그래프를 그린다.

  • [Absolute] 노드로 음수 부분을 절댓값으로 양수로 만든다. -> 부드럽지 않고 금방 다시 밝아지는 통통 튀는 모습의 조명이 나옴.

 

 


 

 

***여기서 [Time] 노드에서 Sine Time을 사용하지 않고 그냥 Time에 [Sine] 노드를 연결한 이유는 Sine Time을 사용하면 깜빡이는 속도를 조절할 수 없기 때문이라고 한다. 따로 쓰는 게 응용하기 좋다고 한다. 이전에 비에 젖고 마르는 돌 셰이더를 만들었을 때 주기를 어떻게 하면 짧게 할 수 있을지 고민했었지만 Sine Time을 그냥 사용하고 넘어갔었다.

[Time]에 10을 먼저 곱하고 [Sine]을 연결하니 주기가 빨라진 것을 볼 수 있다.

 

 


참고자료

 

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

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

www.aladin.co.kr

728x90
반응형