2023. 7. 17. 18:51ㆍUnity
물체가 물에 젖게 되면 표면에 정반사가 늘고, 난반사가 줄어들어 어두워지고, 표면의 색상은 물 층 내부에서 전반사로 전해진다. 빛이 물 층을 통과하여 표면까지 도달하는 빛의 양이 줄어들어 어둡게 보인다.
이전 글의 셰이더에 이어진다.
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와 연결했더니 몇 번의 시행착오를 거쳐 원하는 대로 되긴 했다.
가만히 놔두어도 알아서 반복한다. 나이스!
참고자료
'Unity' 카테고리의 다른 글
[Unity] URP 셰이더 커스텀 노드로 Light Vector 노드 만들기 (0) | 2023.07.18 |
---|---|
[Unity] URP 셰이더 Normal Vector 정리 (0) | 2023.07.18 |
[Unity] URP 셰이더 Detail Map (0) | 2023.07.17 |
[Unity] URP 셰이더 Height Map(Parallax Mapping) (0) | 2023.07.17 |
[Unity] URP 셰이더 픽셀 셰이더 5.0 샘플러 오류 해결법 (Sampler State 노드) (0) | 2023.07.14 |