ps_3_0 레지스터

픽셀 셰이더는 꼭짓점 데이터를 가져오고, 픽셀 데이터를 출력하고, 계산 중에 임시 결과를 유지하고, 텍스처 샘플링 단계를 식별하기 위해 레지스터에 의존합니다. 각각 고유한 기능을 가진 여러 형식의 레지스터가 있습니다. 이 섹션에는 픽셀 셰이더 버전 3_0에 의해 구현된 입출력 레지스터에 대한 참조 정보가 포함되어 있습니다.

새 레지스터

입력 레지스터

입력 레지스터(v#)는 이제 완전히 부동 소수점이며 텍스처 좌표 레지스터(t#)가 여기에 통합되었습니다. 셰이더 상단의 dcl_semantics(sm3 - ps asm)는 특정 Input_Register에 포함된 내용을 설명하는 데 사용됩니다. 이 모델에는 픽셀 형식에 대한 의미 체계가 도입되었습니다(꼭짓점 쪽과 유사). 입력 레지스터가 텍스처 좌표와 같은 색상으로 정의되면 클램핑이 수행되지 않습니다. 색상으로 정의된 레지스터의 평가는 멀티샘플링 시 텍스처 좌표와 다릅니다.

얼굴 레지스터

얼굴 레지스터(vFace)는 이 모델의 새로운 기능입니다. 이는 결국 기본 형식 영역을 포함하게 될 부동 소수점 스칼라 레지스터입니다. 그러나 ps_3_0에서는 이 레지스터의 부호만 유효합니다. 따라서 값이 0보다 작으면(부호 비트가 음수로 설정됨) 기본 형식은 후면입니다(영역은 음수, 시계 반대 방향). 따라서 ps_3_0에서는 이 레지스터를 0(> 0 또는 < 0)과 비교하는 것이 의미가 있습니다. 픽셀 셰이더 내에서 애플리케이션은 사용할 조명 기술을 결정할 수 있습니다. 이 방법으로 양면 조명을 얻을 수 있습니다. 이 레지스터에는 선언이 필요하므로 선언되지 않은 사용은 오류로 표시됩니다. 줄 및 점 기본 형식의 경우 이 레지스터는 정의되지 않습니다. 얼굴 레지스터는 다음 명령과 함께 조건으로만 사용할 수 있습니다. setp_comp - ps, if_comp - ps 또는 break_comp - ps.

루프 카운터 레지스터

루프 카운터 레지스터(aL)는 이 모델의 새로운 기능입니다. loop - ps/endloop - ps 블록을 실행할 때마다 자동으로 증가합니다. 필요한 경우 상대 주소 지정을 위해 블록에서 사용할 수 있습니다. 루프 외부에서 루프 카운터 레지스터를 사용하는 것은 유효하지 않습니다.

위치 레지스터

위치 레지스터(vPos)는 이 모델의 새로운 기능입니다. 해당 채널의 현재 픽셀(x, y)을 포함합니다. (z, w) 채널은 정의되지 않습니다. 이 레지스터에는 선언이 필요하므로 선언되지 않은 사용은 오류로 표시됩니다. 선언될 때 이 레지스터는 .x, .y, .xy 마스크 중 정확히 하나를 가져야 합니다.

입력 레지스터 형식

등록 속성 개수 R/W # 읽기 포트 # 읽기/inst 차원 RelAddr 기본값 DCL 필요
v# 입력 레지스터 10 R 1 제한 없음 4 aL None Yes
r# 임시 등록 32 R/W 3 제한 없음 4 None No
C# 상수 Float 레지스터 224 R 1 제한 없음 4 0000 No
i# 상수 정수 레지스터 16 R 1 1 4 0000 No
b# 상수 부울 레지스터 16 R 1 1 1 FALSE
p0 조건자 레지스터 1 R 1 1 1 None No
s# 샘플러(Direct3D 9 asm-ps) 16 R 1 1 4 참고 1 참조 Yes
vFace Face_Register 1 R 1 제한 없음 1 None Yes
vPos Position_Register 1 R 1 제한 없음 4 None Yes
aL Loop_Counter_Register 1 R 1 제한 없음 1 해당 없음 없음 No

 

참고:

  • 샘플러 조회에 대한 기본값이 있지만 값은 텍스처 형식에 따라 다릅니다.

읽기 포트 수는 단일 명령에서 읽을 수 있는 서로 다른 레지스터(레지스터 형식별)의 수입니다.

출력 레지스터 형식

등록 속성 개수 R/W 차원 RelAddr 기본값 DCL 필요
oC# 출력 색상 레지스터 다중 요소 텍스처(Direct3D 9)를 참조하세요. W 4 None No
oDepth 출력 깊이 레지스터 1 W 1 None 아니요

 

레지스터