본문 바로가기
유니티

유니티 셰이더 그래프 예제 10, 물 효과 구현, Unity ShaderGraph water

by NGVI 2021. 4. 21.

유니티 셰이더 그래프 예제 10, 물 효과 구현, Unity ShaderGraph water

유니티 셰이더 그래프를 통해 간단한 물 효과를 구현해 보겠습니다.

 

Lit Shader Graph를 하나 생성합니다.

 

Graph Inspector 설정

Graph Inspector 설정

surface  를 transparent로 변경합니다.

물이라면 아래가 비치는 게 좋겠죠.

 

먼저 물이 너울거리는 것을 표현해 봅시다.

물을 너울거림을 표현

실제 vertex의 위치를 변경시켜 물을 너울거림을 표현할 예정입니다.

 

시간 값을 가져와서 적당히 변화량을 만들어 줍니다. 이걸 tiling and offset에 연결하고

Gradient noise에 연결하여 움직임을 만듭니다.

 

그 결과와 normal vector를 곱해서 Position에 더하여, 다시 Vertex의 position의 결과에 넣어줍니다.

이때 모두 Space는 object 기준이어야 합니다.(중요)

초기 가져오면 아마 world로 세팅되어 있을거에요 꼭 object로 변경해주세요.

 

현재까지의 결과, 중간에 wireframe로 추가 확인 가능

현재까지의 결과, 중간에 wireframe로 추가 확인가능

오브젝트가 너울거리고 있음이 보입니다.

 

칼라값 생성 셰이더

칼라값 생성 셰이더

보로노이의 uv를 radial shear를 이용해 볼록하게 보이게 합니다.(있어 보이게 하려고, 안 해도 되긴 함

 

보로노이의 angle offect은 time을 이용해 변화량을 꾸준히 줘서 움직임을 만들어 줍니다.

 

보로노이의 결괏값을 제곱시켜서 흰색과 검은색의 강한 대죠를 만들어 바다 색에 곱합니다.

 

그 결과를 바다색과 합을 하여 baseColor로 출력합니다.

 

fragment의 alpha를 적당히 조절해 바닥을 비치게 만듭니다.

 

최종결과

결과물

 

최종 결과 노드

최종 결과 노드

간단한 물 셰이더까지 제작해 보았습니다.

 

감사합니다.

댓글