dmovc(sm5-asm)
성분 단위 조건부 이동입니다.
dmovc[_sat] dest[.mask], src0[.swizzle], [-]src1[_abs][.swizzle], [-]src2[_abs][.swizzle], |
---|
항목 | 설명 |
---|---|
dest |
[in] 이동 대상입니다. If src0, then dest = src1 else dest = src2. |
src0 |
[in] 조건을 테스트할 성분입니다. |
src1 |
[in] 조건이 true이면 이동할 성분입니다. |
src2 |
[in] 조건이 false이면 이동할 성분입니다. |
설명
다음 예에서는 이 명령을 사용하는 방법을 보여 줍니다.
if(the dest mask contains .xy)
{
if(the first 32-bit component of src0, post-swizzle,
has any bit set)
{
copy the first double from src1 (post swizzle)
into dest.xy
}
else
{
copy the first double from src2 (post swizzle)
into dest.xy
}
}
if(the dest mask contains .zw)
{
if(the second 32-bit component of src0, post-swizzle,
has any bit set)
{
copy the second double from src1 (post swizzle)
into dest.zw
}
else
{
copy the second double from src2 (post swizzle)
into dest.zw
}
}
dest의 유효한 마스크는 .xy, .zw, .xyzw입니다.
src0의 유효한 swizzle은 무엇이든 가능합니다. swizzle 후 처음 두 성분은 두 개의 32비트 조건 값을 식별하는 데 사용됩니다.
double을 포함하는 src1 및 src2에 대한 유효한 swizzle은 .xyzw, .xyxy, .zwxy, .zwzw입니다. .xy, .zw 및 .xyzw입니다.
아래의 다음 src 매핑은 post-swizzle입니다.
- dest는(x 32LSB, y 32MSB) 및(z 32LSB, w 32MSB)에 걸친 이중 vec2입니다.
- src0은 x와 y에 걸친 32비트/성분 vec2입니다(zw는 무시됨).
- src1은(x 32LSB, y 32MSB) 및(z 32LSB, w 32MSB)에 걸친 이중 vec2입니다.
- src2는 (x 32LSB, y 32MSB) 및 (z 32LSB, w 32MSB)에 걸친 이중 vec2입니다.
swizzle을 제외한 src1 및 src2의 한정자는 데이터가 두 배라고 가정합니다. 한정자가 없으면 비트를 변경하지 않고 데이터를 이동합니다.
이 명령은 다음 셰이더 단계에 적용됩니다.
꼭짓점 | Hull | 도메인 | 기하 도형 | 픽셀 | 컴퓨팅 |
---|---|---|---|---|---|
X | X | X | X | X | X |
최소 셰이더 모델
이 명령은 다음 셰이더 모델에서 지원됩니다.
셰이더 모델 | 지원 여부 |
---|---|
셰이더 모델 5 | 예 |
셰이더 모델 4.1 | 아니요 |
셰이더 모델 4 | 아니요 |
셰이더 모델 3(DirectX HLSL) | 아니요 |
셰이더 모델 2(DirectX HLSL) | 아니요 |
셰이더 모델 1(DirectX HLSL) | 아니요 |