유니티 셰이더 그래프 예제 10, 물 효과 구현, Unity ShaderGraph water
유니티 셰이더 그래프를 통해 간단한 물 효과를 구현해 보겠습니다.
Lit Shader Graph를 하나 생성합니다.
Graph Inspector 설정
surface 를 transparent로 변경합니다.
물이라면 아래가 비치는 게 좋겠죠.
먼저 물이 너울거리는 것을 표현해 봅시다.
실제 vertex의 위치를 변경시켜 물을 너울거림을 표현할 예정입니다.
시간 값을 가져와서 적당히 변화량을 만들어 줍니다. 이걸 tiling and offset에 연결하고
Gradient noise에 연결하여 움직임을 만듭니다.
그 결과와 normal vector를 곱해서 Position에 더하여, 다시 Vertex의 position의 결과에 넣어줍니다.
이때 모두 Space는 object 기준이어야 합니다.(중요)
초기 가져오면 아마 world로 세팅되어 있을거에요 꼭 object로 변경해주세요.
현재까지의 결과, 중간에 wireframe로 추가 확인 가능
오브젝트가 너울거리고 있음이 보입니다.
칼라값 생성 셰이더
보로노이의 uv를 radial shear를 이용해 볼록하게 보이게 합니다.(있어 보이게 하려고, 안 해도 되긴 함
보로노이의 angle offect은 time을 이용해 변화량을 꾸준히 줘서 움직임을 만들어 줍니다.
보로노이의 결괏값을 제곱시켜서 흰색과 검은색의 강한 대죠를 만들어 바다 색에 곱합니다.
그 결과를 바다색과 합을 하여 baseColor로 출력합니다.
fragment의 alpha를 적당히 조절해 바닥을 비치게 만듭니다.
최종결과
최종 결과 노드
간단한 물 셰이더까지 제작해 보았습니다.
감사합니다.
댓글