본문 바로가기
Unity/내용 정리&Tip

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

by 테크앤아트 2023. 7. 20.
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
반응형