프로그래밍/Unity

[Unity] Shader Graph Swizzle Node란 ?

musiklo 2023. 12. 13. 21:37

유니티 Shader Graph 내에는 Swizzle이라는 노드가 있습니다. 예제들을 하나씩 따라서 구현해보는데 해당 노드가 어떤 역할을 해주는지 정확하게 알아보고 싶어 찾아보았습니다.

아래는 유니티 Docs 공식 설명입니다. 

입력 벡터의 재정렬된 요소에서 새 벡터를 만듭니다. 이것을 스위즐링이라고 합니다.
입력 요소를 혼합하는 방법을 지정하려면 입력 마스크에 형식 지정 문자열을 입력하세요. 예를 들어 입력 요소의 순서를 바꾸려면 "wzyx" 또는 "abgr" 문자열을 사용합니다.
입력 마스크의 길이에 따라 출력 벡터의 크기가 결정됩니다. "잘못된 마스크" 오류는 입력 벡터에 존재하지 않는 하나 이상의 채널을 포함하는 입력 마스크 값을 나타냅니다.
예를 들어 입력 벡터의 x, y 및 z 요소를 사용하여 벡터3을 출력하려면 입력 마스크 "xyz" 또는 "rgb"를 사용합니다.

처음에 따라서 구현할때는 위 사진의 Mask 부분이 정확히는 이해되지 않았었지만, 유니티 Docs의 설명을 보고 나니 이해가 되었습니다.

아래 사진을 예시로 들어 설명하자면 Screen Position 노드를 통해 float4 값을 받아와서 그 중 xy값만 사용하는 새 벡터를 반환하는데 사용합니다. 반환 받는 값 또한 yx, yz 등 순서를 바꾸어 반환 받을 수 있는데, 이를 스위즐링이라고 합니다.


참고

https://docs.unity.cn/Packages/com.unity.shadergraph@10.3/manual/Swizzle-Node.html