명령 토큰

명령 토큰은 드라이버에 수행할 특정 작업을 알리고 다음 비트로 구성됩니다.

비트

[15:00] 비트 0~15는 작업 코드를 나타냅니다. D3DSIO_*는 작업 코드의 예입니다. 여기서 *는 명령을 나타냅니다. 예를 들어 다음 코드 조각에는 ADD 명령이 나와 있습니다.

// D3DSIO_ADD d, s1, s2

[23:16] 비트 16~23은 작업 코드와 관련된 특정 컨트롤을 나타냅니다.

[27:24] 2_0 이전의 픽셀 및 꼭짓점 셰이더 버전의 경우 비트 24~27이 예약되고 0x0 설정됩니다.

픽셀 및 꼭짓점 셰이더 버전 2_0 이상의 경우 비트 24~27은 명령 토큰 자체를 제외한 명령의 DWORD 크기를 지정합니다(즉, 명령 토큰을 제외한 명령을 구성하는 토큰 수).

[28] 2 _0 이전의 픽셀 및 꼭짓점 셰이더 버전의 경우 비트 28이 예약되어 0x0.

픽셀 및 꼭짓점 셰이더 버전 2_0 이상의 경우 비트 28은 명령이 조건자인지 여부를 나타냅니다(즉, 셰이더 코드의 끝에 추가 조건자 소스 토큰이 포함됨). 이 비트가 0x1 설정되면 명령이 조건자입니다.

[29] 예약되었습니다. 이 값은 0x0.

[30] 2_0 이전의 픽셀 셰이더 버전의 경우 비트 30이 공동 문제 비트입니다. 1로 설정하면 이전 지침과 함께 이 명령을 실행합니다. 그렇지 않으면 별도로 실행합니다.

픽셀 셰이더 버전 2_0 이상 및 모든 꼭짓점 셰이더 버전의 경우 비트 30이 예약되어 0x0.

[31] 비트 31이 0(0x0)입니다.

코멘트

명령 토큰의 비트 0에서 15로 지정할 수 있는 작업에 대한 자세한 내용은 최신 DirectX SDK 설명서의 픽셀 셰이더 참조 및 꼭짓점 셰이더 참조를 참조하세요.

DirectX3D 런타임이 애플리케이션에서 셰이더 코드를 받은 후 런타임은 코드를 드라이버에 전달하기 전에 코드의 유효성을 검사합니다. 일반적으로 런타임은 "D3DSIO_"가 포함된 어셈블러 지침을 접두사로 사용하여 작업 코드를 만듭니다. 예를 들어 다음 어셈블러 지침은 커널 모드 작업에 해당합니다.

어셈블러 명령 커널 모드 작업

add

D3DSIO_ADD

mov

D3DSIO_MOV

sub

D3DSIO_SUB

tex

D3DSIO_TEX

texcoord

D3DSIO_TEXCOORD

모든 꼭짓점 셰이더 버전에서 하위 어셈블러 명령은 두 번째 소스의 소스 한정자(비트 27:24)를 사용하여 D3DSIO_ADD 작업으로 구현됩니다(0x1).

textexcoord 지침은 픽셀 셰이더 버전 1_0~1_3에 적용됩니다. 각 명령에는 연결된 하나의 대상 매개 변수가 있습니다.

texldtexcrd 지침은 픽셀 셰이더 버전 1_4 이상에 새로 추가되었습니다. 각 명령에는 대상 및 원본 매개 변수가 모두 연결되어 있습니다.

런타임은 tex 및 texld 어셈 블러 명령을 D3DSIO_TEX 커널 모드 작업으로 변환합니다. 런타임은 texcoordtexcrd 어셈블러 명령을 D3DSIO_TEXCOORD 커널 모드 작업으로 변환합니다. 드라이버는 먼저 셰이더 코드의 픽셀 셰이더 버전을 확인한 다음 그에 따라 지침을 처리합니다. 예를 들어 드라이버가 D3DSIO_TEX 작업으로 버전 1_4 픽셀 셰이더 코드를 수신했는지 확인하면 드라이버가 명령 토큰을 따르는 대상 및 원본 매개 변수를 결정합니다.

요구 사항

Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.