그래픽(기타)

유니티 SRP 셰이더 그래프 - 12

에페아 2020. 2. 7. 21:41

오늘은 버텍스 셰이더를 합니다 와악

 

1. 버텍스 포지션

2. 마스킹 추가해보기

3. 노말 벡터 사용하기

 

1. 버텍스 포지션

지금까지 우리가 만졌던 셰이더는 픽셀셰이더로, 각 픽셀을 어떻게 그릴지를 컨트롤하는 셰이더였습니다

오늘 만지는 건 버텍스를 수정하는 버텍스 셰이더죠

 

여기있는 저 3개가 버텍스셰이더 관련 노드입니다

오늘은 저 3개중에서 Position을 만져봅시다

버텍스의 포지션 값은 일단 Position 노드를 통해 빼내올 수 있습니다

여기서 좌표계를 Object로 설정하면 Vertex Position에 기본적으로 꽂혀있는 값이 나옵니다

 

이걸 Vertex Position에 그냥 꽂으면 아무 변화가 없죠

하지만 저 값에다가 y를 1 더하면 어떻게될까요?

오브젝트의 위치는 그대로인데 그려지는 위치가 달라졌죠

y값에 1을 더해서 1만큼 위에 그려지는것을 볼 수 있습니다

여기에 타임을 넣어서 근방을 돌아다니는 애니메이션을 만들 수도 있죠

 

2. 마스킹 추가해보기

버텍스컬러를 사용해서 우리가 원하는 부분의 버텍스만 움직이게 해봅시다

버텍스컬러를 이런식으로 칠한 후에

이런식으로 버텍스컬러와 곱하면 빨간색을 칠한 부분만 x가 0.1만큼 더해지게 됩니다

변화를 좀 더 잘 보기위해 변화폭을 0.2로 줬는데 잘 변하는 것을 볼 수 있습니다

 

더 응용해보면

이런식으로 g 값을 칠해준 다음

노드에서 g값을 오프셋 용으로 사용하는겁니다

sin의 입력값을 time+g값을 사용하면

대충 이런 곡선이 나옵니다

보라색 곡선이 초록색(g값)을 칠했을 때 나오는 곡선이죠

 

그래서 적용된 결과를 보면

이런식으로 g값이 들어간 부분이 더 앞서가는걸 볼 수 있습니다

 

3. 노말 벡터 사용하기

노말 벡터를 사용하여 연산을 하면 오브젝트의 크기를 키울 수도 있습니다

이런식으로 오브젝트의 노말 벡터를 늘려주고 싶은 크기만큼 곱한 다음,

버텍스 포지션에다가 더해주는겁니다

그럼 기존의 버텍스 위치에서 버텍스의 노말방향*상수 만큼 이동을 하겠죠

그래서 그 상수를 한 0.02정도로 뒀을 때 결과물을 보면

이런식으로 크기가 커진 걸 볼 수 있습니다

가까이서 보면 더 정확히 볼 수 있습니다

노말 방향따라서 크기가 커진걸 볼 수 있습니다

 

크기가 커진다는게 그냥 버텍스 사이의 간격이 넓어져서 그만큼 그려지는 영역이 넓어지는 것이고,

우리는 각 노말방향대로 버텍스를 이동시켰으니 커진것과 같은 효과가 나타난 것이죠

반응형