1. Lerp
2. 버텍스 칼라 응용
1. Lerp
이녀석입니다
안을 살펴봐도 그냥 함수 쓰고 땡인 노드라서 막 길게 설명할 건 없어요
A와 B를 T값에 따라 섞어주는 함수입니다
규칙
1. A와 B는 같은 자료여야 한다(A가 float면 B도 float, A가 Vector3면 B도 Vector3)
2. T는 0 ~ 1 사이의 float값이 들어가야 한다(0에 가까울 수록 결과값이 A에 가까워지고, 1에 가까울 수록 결과값이 B에 가까워집니다.)
A와 B에 이렇게 둘다 Vector4(rgba)를 넣어주고 T에 0을 넣었더니 A에 넣었던 회색 텍스쳐가 나오는 걸 볼 수 있습니다
반대로 T에 1을 넣으면 B에 넣었던 불 텍스쳐가 나오겠죠
이런식으로요
한번 이걸로 저 회색 위에 불이 얹혀진 텍스쳐를 만들어봅시다
불 텍스쳐에 알파가 들어있어서 굉장히 간단하게 만들 수 있습니다
알파를 보면 불이 그려지는 영역은 하얀색이니까 1이고, 안그려지는 영역은 검은색이니까 0이겠죠
그리고 Lerp에서 T가 0일땐 A값을 출력하고, 1일땐 B값을 출력하고요
그럼 이 알파값을 T에 넣으면 어떻게될까요
이런식으로, 불이 그려진 곳의 알파는 1이니까 B에 꽂아놓은 불이 그려지고, 안그려진 곳의 알파는 0이니까 A에 꽂아놓은 저 회색 텍스쳐가 그려집니다.
여기서 만약 불 텍스쳐를 A에 꽂고, 회색 텍스쳐를 B에 꽂았다면 알파값이 1인 곳에 회색 텍스쳐가 그려지고, 알파값이 0인 곳에 불 텍스쳐가 그려지겠죠
이런 식으로요
여기에서 저번 시간에 만들었던 걸 합치면
움직이는 불로 만들어서 합칠 수도 있겠죠
2. 버텍스 칼라 응용
위의 Lerp와 이어지는 내용인데,
위에서는 불의 알파값을 따와서 Lerp의 T값에 넣어줬었죠
굳이 알파값이 아니더라도 Vector1이면 넣을 수가 있습니다. R이나 G나 B도 알파 넣듯이 똑같이 넣을 수 있다는 거죠
만약에 위에 있는 풀 텍스쳐에 아래에 있는 돌 텍스쳐로 길을 만들고싶다면 어떻게 만들어야 할까요
일단 둘이 합칠거니까 Lerp로 A에는 풀 텍스쳐를, B에는 돌 텍스쳐를 잇습니다.
그럼 이제 T가 남았죠 위에선 알파값을 넣었는데 이번엔 어떤 값을 넣을 것이냐
여기서 이제 버텍스 칼라를 사용하는겁니다
(저는 설명을 위해 임시로 버텍스칼라 노드를 연결시켜놔서 칼라가 보이도록 했습니다)
대충 이렇게 바탕을 검은색으로 다 칠하고, 돌 텍스쳐를 깔고 싶은 곳을 빨간색으로 칠하는겁니다
그리고 이제 그래프로 돌아와서
이런식으로 버텍스칼라를 Split해서 R값만 떼오면 방금 위에서 빨간칠 했던 부분은 1이고, 칠하지 않은 부분은 0이겠죠?
이 R값을 위에 Lerp 설명했을 때 알파값 이용했던 것 처럼 Lerp의 T값에 넣어줍니다
이런식으로 A에는 기본으로 깔아놓을 풀 텍스쳐를 넣고, B에는 방금 우리가 빨간색으로 칠한 영역에 넣을 돌 텍스쳐를 넣습니다
그리고 버텍스칼라의 R값을 불러와서 T에 꽂은 후, 출력값을 마스터노드에 끼우면
이런 결과가 나오게 됩니다
아까 우리가 빨간색으로 칠했던 부분에 B에다가 넣었던 텍스쳐가 입혀지는 걸 볼 수 있죠
그리고 이 작업을 계속 반복해서 G값, B값, 알파값까지 같이 쓰게 된다면
이렇게 여러 텍스쳐를 그리는 것도 가능하게 됩니다
저기에 그릴 텍스쳐는 블랙보드로 빼놓으면 더 좋겠죠
'그래픽(기타)' 카테고리의 다른 글
유니티 SRP 셰이더 그래프 - 7 (0) | 2020.01.19 |
---|---|
유니티 SRP 셰이더 그래프 - 6 (0) | 2020.01.13 |
유니티 SRP 셰이더 그래프 - 4 (0) | 2020.01.09 |
(SRP)쉐이더 서브그래프 제작 - SimpleRaderMask (0) | 2020.01.06 |
유니티 SRP 셰이더 그래프 - 3 (0) | 2020.01.05 |