[Unity] URP 셰이더 돌이 물에 젖고 마르는 셰이더 만들기

2023. 7. 17. 18:51Unity

728x90
반응형

물체가 물에 젖게 되면 표면에 정반사가 늘고, 난반사가 줄어들어 어두워지고, 표면의 색상은 물 층 내부에서 전반사로 전해진다. 빛이 물 층을 통과하여 표면까지 도달하는 빛의 양이 줄어들어 어둡게 보인다.

 

 

 

[Unity] URP 셰이더 Detail Map

Detail Map은 근접했을 때 흐려지는 텍스쳐의 디테일을 보완하고자 만든 기법이다. 책의 예제 돌 오브젝트와 텍스쳐 오브젝트를 보면, 일반적으로 셰이더를 적용했을 때는 물체에 가까이 갔을 때

lightbakery.tistory.com

이전 글의 셰이더에 이어진다.

 

 

Detail Map을 위해 Blend 되었던 Base Map을 [Multiply]로 곱하여 어둡게 했고, Smoothness를 0.8로 높였더니 어둡고 반사가 잘되는 젖어 보이는 돌처럼 보이게 하였다.

 

 


 

 

윗면만 젖게 하기 위해서 Vertex Color로 마스킹을 한다. 임시로 Vertex Color를 Base Color에 연결하고 Polybrush로 빨간 색으로 위쪽만 칠한다.

 

 

[Vertex Color]를 쓸 건데, 여기서 빨간색으로 칠한 부분만 쓸 예정이기 때문에 [Split]으로 R만 빼주고, 이 R 값이 진할 수록 [Lerp] 노드의 B인 [Multiply]를 거친 어두운 텍스쳐가 나와야 한다. R 값이 밝을수록 A에 연결된 기존 텍스쳐가 나올 것이다. 또한 이 R 값을 Smoothness와 연결하여 빨간색이 있는 부분은 Smoothness도 높게 전반사가 되게 연결하였다.

 

 

빨간색 칠한 곳만 젖어있어야 되는데 전체적으로 적용되었길래 봤더니 오브젝트의 아래쪽에는 검은색을 칠해주어야 했다.

 

 

윗쪽만 전반사로 젖어있는 것처럼 보인다.

 

 


 

 

float 슬라이드 프로퍼티 하나를 만들어서 R 값에 곱하여 값이 조절되게 하면 슬라이드를 이동하면서 물에 젖고 마르는 과정이 만들어진다.

 

 

 

 


 

 

슬라이드로 조절하는 것이 아닌, 시간의 흐름에 따라 젖고 마르는 것을 구현해보고 싶어졌다.

[Time] 노드와 이것저것 곱하여 Vertex Color와 연결했더니 몇 번의 시행착오를 거쳐 원하는 대로 되긴 했다.

 

 

가만히 놔두어도 알아서 반복한다. 나이스!

 

 


참고자료

 

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

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

www.aladin.co.kr

728x90
반응형