DirectX Graphics 레퍼런스 셰이더 레퍼런스 픽셀 셰이더 1_X 명령 수식자 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
명령 수식자를 사용해, 명령의 출력을 변경한다. 예를 들어, 결과를 2 로 곱셈과 나눗셈 헤아리거나 결과를 0 ~ 1 에 제한하거나 하기 위해서, 명령 수식자를 사용한다. 명령 수식자가 적용되는 것은, 명령을 실행한 후, 결과를 출력 레지스터에 기입하기 전이다.
수식자의 일람을 다음에 나타낸다.
수식자 | 설명 | 구문 | 버전 | |||||
---|---|---|---|---|---|---|---|---|
1_1 | 1_2 | 1_3 | 1_4 | |||||
_x2 | 2 를 건다. | register_x2 | X | X | X | X | ||
_x4 | 4 를 건다. | register_x4 | X | X | X | X | ||
_x8 | 8 을 건다. | register_x8 | X | |||||
_d2 | 2 로 나눈다. | register_d2 | X | X | X | X | ||
_d4 | 4 로 나눈다. | register_d4 | X | |||||
_d8 | 8 으로 나눈다. | register_d8 | X | |||||
_sat | 포화 (0 ~ 1 에 고정)한다. | register_sat | X | X | X | X |
산술 명령에는, 명령 수식자를 사용할 수 있다. 텍스처어드레싱 명령에는 사용할 수 없다.
곱셈 수식자
다음의 예에서는, 소스 오퍼랜드 (src0 와 src1)의 2 개의 색을 더한 것을 출력 레지스터 (dest)에 로드해, 결과에 2 를 곱하고 있다.
add_x2 dest, src0, src1
다음의 예에서는, 2 개의 명령 수식자를 조합하고 있다. 최초로, 소스 오퍼랜드 (src0 와 src1) 내의 2 개의 색이 더해진다. 더한 결과에 이번은 2 를 걸어 각 성분에 대해 0.0 ~ 1.0 의 범위에 고정한다. 결과는 출력 레지스터에 보존된다.
add_x2_sat dest, src0, src1
나눗셈 수식자
다음의 예에서는, 소스 오퍼랜드 (src0 와 src1)의 2 개의 색을 더한 것을 출력 레지스터 (dest)에 로드해, 결과를 2 로 나누고 있다.
add_d2 dest, src0, src1
포화 수식자
산술 명령의 경우, 포화 수식자는, 이 명령의 결과를 각 성분에 대해 0.0 ~ 1.0 의 범위에 고정한다. 다음 예는 이 명령 수식자의 사용법을 나타내고 있다.
dp3_sat r0, t0_bx2, v0_bx2 ; t0 is bump, v0 is light direction
이 처리는, 곱셈 또는 나눗셈의 명령 수식자의 다음에 실행된다. _sat 는, 보통, 내적의 결과를 제한하기 위해서 사용된다. 다만, frame buffer가 항상 0 ~ 1 의 범위에 있는 멀티 패스 메서드와 포화가 각 스테이지에서 행해지도록(듯이) 정의되고 있는 Microsoft® DirectX® 6.0 및 7.0 의 멀티 텍스처 구문으로, 일관성이 있는 에뮬레이션을 실행할 수 있다.
다음의 예에서는, 소스 오퍼랜드 (src0 와 src1)의 2 개의 색을 더한 것을 출력 레지스터 (dest)에 로드해, 각 성분에 대해 결과를 0.0 ~ 1.0 의 범위에 제한하고 있다.
add_sat dest, src0, src1
다음의 예에서는, 2 개의 명령 수식자를 조합하고 있다. 최초로, 소스 오퍼랜드 (src0 와 src1) 내의 2 개의 색이 더해진다. 더한 결과에 2 를 곱해 각 성분에 대해 0.0 ~ 1.0 의 범위에 제한한다. 결과는 출력 레지스터에 보존된다.
add_x2_sat dest, src0, src1