기본이 만들어졌으니 버텍스 스트림에 대해 얘기해 보죠.
버텍스 스트림은 vertex shader 흐름 단계에 개입해서 값을 집어 넣는 방식이므로, 버텍스 값에 접근할 수 있어야 합니다.
그중 대표적인 데이터는 texcoord.
texture coordinate (텍스쳐 좌표) 라고 불리고 texcoord 라는 약어로 불리고 있으며, 아티스트들에게는 UV라는 이름이 더 익숙한 그것 말이죠.
근데 사실 texcoord 는 꽤 여러 개를 쓸 수 있고, Vector4 데이터라서 UV 말고도 꽤 이곳저곳에 쓰이기도 합니다. 사실상 만능 그릇 ...
그래서 이 texcoord를 커스텀 데이터로 사용하는거죠
기본적으로는 이렇게 셋팅되어 있다고 생각하면 편합니다
texcoord0 -> (uv1.x , uv1.y , 0 , 0 ) 1
그리고 커스텀 데이터는 texcoord1 , texcoord2를 사용합니다. 2
그래서 버텍스 스트림을 받을 수 있도록 커스텀 데이터를 개조하려면 이렇게 해야 합니다.
슈리켄의 렌더러 항목에서 커스텀 버텍스 스트림을 가동시키고,
아래 스트림 항목을 맞춰줘야 합니다.
일단 UV2 를 만들어서 texccord0 번의 zw를 강제로 채워줘야 하고,
그 다음에 커스텀 데이터 vector4를 두 개 쓸 수 있습니다.
즉 위 그림에 따르면 이렇게 배열된거죠
texcoord0 -> (uv1.x , uv1.y , uv2.x , uv2.y )
texcoord1 -> Custom1(x , y , z , w)
texcoord2 -> Custom2(x , y , z , w)
즉 위 그림에 따르면 이렇게 배열된거죠
저걸 저렇게 셋팅해 주고 나면,
커스텀 데이터를 켜 주도록 합시다. 초기값으로 모두 0이 들어가 있음을 집중하시고.
그럼 왠 에러 메세지가 떠 있을 겁니다.
뭐 읽어보면 '버텍스 스트림 셋팅한거랑 셰이더랑 안맞는데?!?' 라는 말입니다.
즉 셰이더에서 맞춰달란 말이죠
뭐 맞춰달라니 이제 맞춰주면 됩니다.
이전에 만든 셰이더에서 아래처럼 추가로 꺼내오면 돼요
아 진짜 ... 여기서 말하는 UV1 은 texcoord1 을 의미하고
UV2는 texcoord2를 의미합니다. 제발 이름좀 맞춰달라고 ... 3
자 이걸 만든다고 에러가 해결되는건 아닙니다. 하나라도 연결되어야 해결되지요
이제부터는 솔직히 어디에 연결하느냐에 따라 달라서 더 설명할 필요도 없긴 한데요. 셰이더를 다룰 줄 아시면 이제 이 데이터를 어디에 넣느냐에 따라 맘대로 처리할 수 있습니다.
보통의 저라면 이렇게 안하겠지만, 예시로 한 번 만들어 보았습니다.
Custom1.x 는 전체 밝기에 곱해줘서 밝기를 조절할 수 있게 만들었고요. 기본값은 1이어야 할듯
Custom1.yz 는 Tiling에 연결해서 타일을 조절할 수 있게 만들었습니다. 기본값이 1이어야 겠네요
Custom2.xy 는 Offset 에 연결해서 텍스쳐의 좌우 이동을 제어할 수 있게 만들었습니다. 기본값은 0이어야 할듯요
물론 이것 말고도 원하는 어디에다가라도 연결할 수 있습니다.
제어를 직접 파티클에서 할 수 있기 때문에, 그래프나 렌덤값등을 나오게 할 수도 있고요. 매우 무궁무진한 응용이 기다리고 있습니다.
'Shader ' 카테고리의 다른 글
유니티 셰이더 그래프(Unity shadergraph) view vector는 normalize 하세요 (0) | 2020.01.10 |
---|---|
유니티 셰이더 그래프(Unity shadergraph) 이해할 수 없는 셰이더 그래프의 뒤통수 (2) | 2020.01.01 |
유니티 셰이더 그래프(Unity shadergraph) 에서 버텍스 스트림 셰이더 (vertex stream shader) 가 적용된 이펙트 셰이더 만들기 1 (0) | 2019.12.31 |
유니티 셰이더 그래프(Unity shadergraph) Constant 노드 (0) | 2019.12.29 |
유니티 셰이더 그래프(Unity shadergraph) 칼라 덧셈과 곱셈의 이상한 결과물♥ (0) | 2019.12.28 |
댓글