Swizzling은 모든 원본 레지스터 구성 요소를 임시 레지스터 구성 요소에 복사하는 기능을 나타냅니다. 스위즐링은 원본 레지스터 데이터에 영향을 주지 않습니다. 명령이 실행되기 전에 원본 레지스터의 데이터가 임시 레지스터에 복사됩니다.
소스 스위즐링
원본 스위즐을 사용하면 계산을 위해 레지스터를 읽기 전에 원본 레지스터의 개별 구성 요소가 동일한 소스 레지스터의 4개 구성 요소 값을 사용할 수 있습니다.
예를 들어 .zxxy 스위즐은 다음을 의미합니다.
- .x 구성 요소는 .z 구성 요소의 값을 사용합니다.
- .y 구성 요소는 .x 구성 요소의 값을 사용합니다.
- .z 구성 요소는 .x 구성 요소의 값을 사용합니다.
- .w 구성 요소는 .y 구성 요소의 값을 사용합니다.
구성 요소는 순서에 따라 표시할 수 있습니다. 4개 미만의 구성 요소를 지정하면 마지막 구성 요소가 반복됩니다. 예를 들어:
.xy = .xyyy
.wzx = .wzxx
.z = .zzzz
구성 요소를 지정하지 않으면 스위즐링이 적용되지 않습니다.
일부 지침에는 원본 스위즐에 대한 제한이 있습니다. 관련 명령 참조 페이지에 나열됩니다.
픽셀 셰이더 버전 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
.x | x | x | x | x | x | x | |||
.y | x | x | x | x | x | x | |||
.z | x* | x* | x* | x | x | x | x | x | x |
.w | x | x | x | x | x | x | x | x | x |
.xyzw(기본값) | x | x | x | x | x | x | x | x | x |
.yzxw | x | x | x | x | x | ||||
.zxyw | x | x | x | x | x | ||||
.wzyx | x | x | x | x | x | ||||
임의 스위즐 | x | x | x | x |
* 대상 쓰기 마스크가 .w(.a)인 경우에만 사용할 수 있습니다.
임의 스위즐
스위즐은 임의의 순서로 소스 레지스터에 적용할 수 있습니다. 즉, 모든 소스 레지스터는 모든 구성 요소 마스크를 순서대로 사용할 수 있습니다.
Swizzle 복제
한 구성 요소를 다른 구성 요소에 복제합니다. 즉, 정확히 .x, .y, .z, .w 스위즐 구성 요소(또는 .r, .g, .b, .a 등가물) 중 하나를 지정해야 합니다.
관련 항목