DirectX Graphics 레퍼런스 셰이더 레퍼런스 픽셀 셰이더 2_0 확장 명령 - ps_2_x [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
여기에서는, 픽셀 셰이더 버전 2_x 명령의 레퍼런스 정보를 기술한다.
다음 표에 나타나듯이 픽셀 셰이더 명령에는 몇개의 종류가 있다. 우측의 열의 의미는 다음과 같다.
이름 | 설명 | 명령 슬롯 | 셋업 | 산술 | 매크로 연산자 | 텍스처 | flow control | 신규 |
---|---|---|---|---|---|---|---|---|
abs | 절대치 | 1 | x | |||||
add | 2 개의 벡터의 덧셈 | 1 | x | |||||
break | loop ...endloop 또는 rep ...endrep 블록을 종료하는 | 1 | x | x | ||||
break_comp | 비교의 조건에 근거해,loop...endloop 또는 rep...endrep 블록을 종료하는 | 3 | x | x | ||||
break pred | 프레디케이션에 근거해,loop...endloop 또는 rep...endrep 블록을 종료하는 | 3 | x | x | ||||
call | 서브 루틴을 호출하는 | 2 | x | x | ||||
callnz | 불형 레지스터가 제로가 아닌 경우에 서브 루틴을 호출하는 | 3 | x | x | ||||
callnz pred | 프레디케이션이 제로가 아닌 경우에 서브 루틴을 호출하는 | 3 | x | x | ||||
cmp | 입력을 0 과 비교하는 | 1 | x | |||||
crs | 외 적 | 2 | x | |||||
dcl | 정점 요소의 타입을 입력 정점 레지스터에 맵핑 하는 | 0 | x | |||||
dcl_textureType | 샘플러의 텍스처의 넓이를 선언하는 | 0 | x | |||||
def | 정수의 정의 | 0 | x | |||||
dp2add | 2D 의 내적 및 덧셈 | 1 | x | |||||
dp3 | 3D 의 내적 | 1 | x | |||||
dp4 | 4D 의 내적 | 1 | x | |||||
dsx | x 방향의 변화 비율 | 2 | x | x | ||||
dsy | y 방향의 변화 비율 | 2 | x | x | ||||
else | else 블록의 시작 | 1 | x | x | ||||
endif | if ...else 블록의 종료 | 1 | x | x | ||||
endrep | repeat 블록의 종료 | 2 | x | x | ||||
exp | 완전 정밀도의 2x | 1 | x | x | ||||
frc | 소수부 | 1 | x | |||||
if | if 블록의 시작 | 3 | x | x | ||||
if comp | 비교에 근거해,if 블록을 시작 하는 | 3 | x | x | ||||
if pred | 프레디케이션에 근거해,if 블록을 시작 하는 | 3 | x | x | ||||
label | 라벨을 붙이는 | 0 | x | x | ||||
log | 완전 정밀도의 log2(x) | 1 | x | |||||
lrp | 선형 보간 | 2 | x | |||||
m3x2 | 3x2 행렬 곱셈 | 2 | x | |||||
m3x3 | 3x3 행렬 곱셈 | 3 | x | |||||
m3x4 | 3x4 행렬 곱셈 | 4 | x | |||||
m4x3 | 4x3 행렬 곱셈 | 3 | x | |||||
m4x4 | 4x4 행렬 곱셈 | 4 | x | |||||
mad | 적화 | 1 | x | |||||
max | 최대치 | 1 | x | |||||
min | 최소 값 | 1 | x | |||||
mov | 이동 | 1 | x | |||||
mul | 곱셈 | 1 | x | |||||
nop | 무동작 명령 (어떤 연산도 실행하지 않는다) | 1 | x | |||||
nrm | 정규화 | 3 | x | |||||
pow | 2x | 3 | x | |||||
ps | 버전 | 0 | x | |||||
rcp | 역수 | 1 | x | |||||
rep | 반복하는 | 3 | x | x | ||||
ret | 서브 루틴의 종료 | 1 | x | x | ||||
rsq | 역수 제곱근 | 1 | x | |||||
setp | 프레디케이션레지스터를 설정하는 | 1 | x | x | ||||
sincos | 정현과 코사인 | 8 | x | |||||
sub | 뺄셈 | 1 | x | |||||
texkill | 픽셀 렌더링을 종료시키는 | 2(tex) | x | |||||
texld | 텍스처의 샘플링 | 1 + 3CUBE | x | |||||
texldb | w 성분의 상세 레벨 (LOD)의 바이어스를 사용한 텍스처 샘플링 | 6(tex) | x | |||||
texldd | 사용자 지정의 그라데이션을 사용한 텍스처 샘플링 | 3 | x | x | ||||
texldp | w 성분에 의한 투영 나눗셈을 사용한 텍스처 샘플링 | 3 + 1CUBE | x |
여기서
셰이더에는, 최대 명령 카운트와 정적 및 동적인 flow control 명령의 네스트의 깊이에 관한 제한이 있다.
총명령 슬롯수 :최대 512 개
실행되는 명령의 최대수는,D3DCAPS9 의 MaxPShaderInstructionsExecuted 능력으로 지정되고 있는 수이다.
이 수에는, #define D3DINFINITEINSTRUCTIONS 를 설정할 수 있다. 이것은, 실행되는 명령의 실제의 수가 무제한한 것을 나타낸다.
실행되는 명령의 총수는, 장치 드라이버 D3DRS_MAXPIXELSHADERINST 에 제한되지 않으면 안 된다. 이 렌더링 스테이트로 유효한 값은, 2 의 거듭제곱의 수이다. 그 이외의 정수를 설정 하면, 다음의 가장 가까운 2 의 거듭제곱의 수로 보여진다. 이 렌더링 스테이트에는 디폴트로, D3DINFINITEINSTRUCTIONS 가 설정된다.
D3DCAPS9.D3DPSHADERCAPS2_0.DynamicFlowControlDepth 는, 동적 flow control 명령 if ,break , 및 break_comp 의 네스트의 깊이를 나타낸다. 이 값은,if_comp 블록의 네스트의 깊이와 동일하다. 이 능력의 값의 범위는 0 ~ 24 이다. 이 능력이 0 의 경우, 장치는 동적 flow control 명령을 지원 하지 않는다.
D3DCAPS9.D3DPSHADERCAPS2_0.StaticFlowControlDepth 는, 정적 flow control 명령loop /rep 및 call /callnz 의 네스트의 깊이를 나타낸다. 이 능력의 값의 범위는, 1 ~ 4 이다. loop/rep 는 같은 네스트의 깊이에 대해서 카운트 해,call/callnz 는 같은 네스트의 깊이에 대해서 카운트 한다. 이 능력이 0 의 경우, 장치는 정적 flow control 명령을 지원 하지 않는다.