DirectX Graphics 레퍼런스 셰이더 레퍼런스 픽셀 셰이더 3_0 레지스터 - ps_3_0 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
픽셀 셰이더는, 정점 데이터를 취득해, 픽셀 데이터를 래스터라이저에 출력해, 계산중에 일시적인 결과를 저장 해, 텍스처 샘플링 스테이지를 식별하기 위해서, 레지스터를 사용한다. 레지스터에는 몇개의 종류가 있어, 종류 마다 고유의 기능이 있다. 여기에서는, 픽셀 셰이더 버전 3_0 이 처리 하는 입력 레지스터와 출력 레지스터에 대한 레퍼런스 정보를 기술한다.
이름 | 레지스터 타입 | 카운트 | 읽기 / 쓰기 | 읽기 포트수 | 1 명령 근처의 읽기수 | 넓이 | 상대 어드레스 | 디폴트 | DCL 의 요점 / 불요 |
---|---|---|---|---|---|---|---|---|---|
v# | 입력 레지스터 | 10 | R | 제한 없음 | 4 | aL 마셔 | Partial(0001) | 요점 | |
r# | 임시 레지스터 | 32 | R/W | 3 | 제한 없음 | 4 | 이루어 | 없음 | 불요 |
c# | 부동 소수점형 정수 레지스터 | 224 | R | 1 | 제한 없음 | 4 | 없음 | 0000 | 불요 |
i# | 정수형 정수 레지스터 | 16 | R | 1 | 1 | 4 | 없음 | 0000 | 불요 |
b# | 불형 정수 레지스터 | 16 | R | 1 | 1 | 1 | 없음 | FALSE | 불요 |
aL | 루프 카운터 레지스터 | 1 | U | 부적당용 | 제한 없음 | 1 | 부적당용 | 없음 | 불요 |
p0 | 프레디케이션 | 1 | R | 1 | 1 | 1 | 이루어 | 없음 | 요점 |
s# | 샘플링 스테이지 레지스터 | 16 | R | 1 | 1 | 4 | 없음 | 상황 의존* | 요점 |
vFace | 면레지스터 | 1 | R | 1 | 1 | 1 | 이루어 | 없음 | 요점 |
vPos | 위치 좌표 레지스터 | 1 | R | 1 | 1 | 4 | 이루어 | 없음 | 요점 |
여기서
mad r0, c0, c0, v0 mad r0, c2, t1, v0 mad r0, c3, c3, c3
그러나, 다음 예는 복수의 정수 레지스터를 사용하고 있기 위해서(때문에) 무효이다.
mad r0, c1, c2, v0
이름 | 레지스터 타입 | 카운트 | 읽기 / 쓰기 | 읽기 포트수 | 1 명령 근처의 읽기수 | 넓이 | 상대 어드레스 | 디폴트 | DCL 의 요점 / 불요 |
---|---|---|---|---|---|---|---|---|---|
oC# | 출력 컬러 레지스터 | 「멀티 엘리먼트 텍스처」참조 | W | 0 | 0 | 4 | 이루어 | 없음 | 불요 |
oDepth | 출력 깊이 레지스터 | 1 | W | 0 | 0 | 1 | 이루어 | 없음 | 불요 |
여기서
입력 레지스터는 현재, 완전한 부동 소수점형으로, 텍스처 레지스터와 통합되어 단일의 레지스터 타입이 되고 있다. 레지스터 선언은 의미들을 사용해, 특정의 입력 레지스터 (v#)에 저장 되고 있는 내용을 기술한다. 입력 레지스터가 (텍스처 좌표 등) 색으로서 정의되고 있는 경우, 제한은 더해지지 않는다.
픽셀 셰이더의 버전 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_sw | 2_x | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
입력 레지스터 | x | x |
면레지스터는, 새로운 부동 소수점형 스칼라-레지스터이다. 이 레지스터의 부호가 유효한 것은, ps_3_0 뿐이다. 값이 0 보다 작은 경우, 기본도형는 뒷면 (이 에리어는 부)이다. 면레지스터를 픽셀 셰이더내에서 사용해, 조명 테크닉 (양면 조명등)을 결정할 수가 있다. 이 레지스터에는 선언 (예를 들어, dcl vFace)이 필요하기 때문에, 사용법을 선언하지 않는다고 경고 플래그가 설정된다. 이 레지스터는, 라인 기본도형와 포인트 기본도형에 대해서는 정의되지 않다. 면레지스터는,setp 명령과 if comp 명령에서만 사용할 수 있다.
픽셀 셰이더의 버전 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_sw | 2_x | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
면레지스터 | x | x |
이 레지스터에는, 대응하는 채널의 현재의 픽셀 위치 좌표 (x, y)가 저장 된다. (z, w) 채널은 정의되지 않다. 이 레지스터는 선언할 필요가 있다 (예를 들어, dcl vPos.xy).
멀티 샘플링에서는, 위치 좌표에는 샘플 좌표는 아니고, 픽셀 좌표가 저장 된다 (멀티 샘플링은 픽셀 마다 1 회 실행된다). 드라이버가 슈퍼 샘플링을 실행해, 픽셀 셰이더가 픽셀 마다 여러 차례 실행되면 위치 좌표에는 해결 지음의 좌표가 저장 된다. 즉, 렌더링 타겟의 팽창 계수에 의해 정규화된다.
픽셀 셰이더의 버전 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_sw | 2_x | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
위치 좌표 레지스터 | x | x |