2023. 7. 20. 16:30ㆍUnity
HDR과 Bloom 효과는 저사양의 모바일 게임에서 사용하거나 레트로한 느낌을 주기 힘들기 때문에 프레넬 효과를 이용하여 만들어 볼 것이다.
조명 효과
책의 예제와 같이, 무료 가로등 에셋을 받아서 프레넬 효과를 적용해 줄 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]을 연결하니 주기가 빨라진 것을 볼 수 있다.
참고자료
'Unity' 카테고리의 다른 글
[Unity] 유니티 함수의 종류 (제작 함수, 이벤트 함수, 제공 함수) (0) | 2023.08.07 |
---|---|
[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 |