vs_3_0

프로그래밍 가능한 꼭짓점 셰이더는 꼭짓점 데이터에서 작동하는 명령 집합으로 구성됩니다. 레지스터는 ALU 내/외부로 데이터를 전송합니다. 명령, 결과 또는 기록되는 데이터를 수정하기 위해 추가 컨트롤을 적용할 수 있습니다.

꼭짓점 셰이더 버전 vs_3_0는 vs_2_x에서 지원하는 기능 집합을 확장합니다. vs_2_X에서 최대값을 설정해야 하는 각 기능을 vs_3_0에서는 최대값 없이 사용할 수 있습니다.

새로운 기능

꼭짓점 셰이더 버전 vs_3_0의 새로운 기능은 다음 섹션에서 설명합니다.

레지스터 인덱싱

이전 셰이더 모델에서는 상수 레지스터 뱅크만 인덱싱할 수 있습니다. 이번 모델에서는 루프 카운터 레지스터(aL)를 사용하여 다음 레지스터 뱅크를 인덱싱할 수 있습니다.

  • 입력 레지스터(v#)
  • 출력 레지스터(o#)

꼭짓점 텍스처

이 셰이더 모델은 texldl을 사용하여 꼭짓점 셰이더에서 텍스처 조회를 지원합니다. 꼭짓점 엔진에는 해당 단계에서 설정된 텍스처를 샘플링하는 데 사용할 수 있는 4개의 텍스처 샘플러 단계(변위 맵 샘플러 및 픽셀 엔진의 텍스처 샘플러와 구별됨)가 있습니다. vs_3_0 꼭짓점 텍스처(DirectX HLSL)를 참조하세요.

꼭짓점 스트림 빈도

이 기능을 사용하면 입력 레지스터의 하위 집합을 꼭짓점당 한 번이 아닌 다른 속도로 초기화할 수 있습니다. 인덱싱되지 않은 기하 도형 그리기를 참조하세요.

셰이더 출력

vs_2_0와 마찬가지로 셰이더 출력은 정적 흐름 제어에 따라 달라질 수 있습니다. 동적 분기는 셰이더 출력이 꼭짓점마다 달라질 수 있으므로 주의해야 합니다. 다른 하드웨어에서 예측할 수 없는 결과가 생성됩니다.

동적 흐름 제어

모든 동적 흐름 제어 명령이 지원됩니다. 허용되는 최대 중첩 깊이 값은 24입니다. (자세한 내용은 흐름 제어 중첩 제한을 참조하세요.)

임시 레지스터

총 32개의 임시 레지스터(r#)가 지원됩니다.

정적 흐름 제어

loop - vs/rep - vs의 최대 중첩 깊이는 4입니다. call - vs/callnz bool - vs/callnz pred - vs의 최대 중첩 깊이는 4입니다. if bool - vs의 허용되는 최대 중첩 깊이 값은 24입니다. (자세한 내용은 흐름 제어 중첩 제한을 참조하세요.)

술어

명령 술어가 지원됩니다. setp_comp - vs를 사용하여 조건자 레지스터를 설정합니다.

명령 수

각 꼭짓점 셰이더는 512부터 D3DCAPS9의 MaxVertexShader30InstructionSlots 슬롯 수까지 허용됩니다. loop/rep 지원으로 인해 실행되는 명령 수가 훨씬 더 많을 수 있지만 최소 0xFFFF여야 하는 D3DCAPS9의 MaxVShaderInstructionsExecuted로 제한됩니다.

디바이스 최대값

꼭짓점 셰이더 3_0이 지원되는 경우 하드웨어에서 다음 최대값이 지원됩니다(최소한).

최대값 기능
셰이더 최대값
  • DynamicFlowControlDepth: 24
  • NumTemps: 32
  • StaticFlowControlDepth: 4
  • 조건자 지원됨
GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom 8K
VertexShaderVersion 3_0
MaxVertexShaderConst 256
MaxVertexShader30InstructionSlots 512
Fog 지원 D3DPRASTERCAPS_FOGVERTEX
VertexTextureFilterCaps
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET 꼭짓점 선언의 꼭짓점 요소는 동일한 스트림 오프셋을 공유할 수 있음
꼭짓점 형식
  • D3DDECLTYPE_UBYTE4
  • D3DDECLTYPE_UBYTE4N
  • D3DDECLTYPE_SHORT2N
  • D3DDECLTYPE_SHORT4N
  • D3DDECLTYPE_FLOAT16_2
  • D3DDECLTYPE_FLOAT16_4

 

꼭짓점 셰이더