임시 레지스터(HLSL VS 참조)
꼭짓점 셰이더 임시 레지스터는 중간 결과를 저장하는 데 사용됩니다.
임시 레지스터는 사용하기 전에 초기화해야 합니다. 각 임시 레지스터에는 단일 쓰기 및 삼중 읽기 권한이 있습니다. 이는 단일 셰이더 명령이 최대 3개의 임시 레지스터를 입력으로 사용할 수 있음을 의미합니다.
꼭짓점 셰이더의 이전 호출에서 남아 있는 임시 레지스터의 값은 사용할 수 없습니다.
레지스터는 각 레지스터의 동작 방식을 결정하는 속성으로 구성됩니다.
속성 | Description |
---|---|
속성 | r[n]. n은 선택적 레지스터 번호입니다. 기본값은 0이며 값이 지정되지 않은 경우 사용되는 값입니다. |
개수 | 최대 12개의 레지스터입니다. |
I/O 권한 | 읽기/쓰기입니다. 이 레지스터는 API 또는 셰이더에서 읽거나 쓸 수 있습니다. |
읽기 포트 | 단일 명령 내에서 레지스터를 읽을 수 있는 횟수는 3입니다. 임시 레지스터는 단일 명령에서 두 번 이상 읽고 쓸 수 있는 유일한 레지스터입니다. |
각 임시 레지스터에는 단일 쓰기 및 삼중 읽기 권한이 있습니다. 따라서 명령은 입력 원본 피연산자 집합에 최대 3개의 임시 레지스터를 가질 수 있습니다.
꼭짓점 셰이더의 이전 호출에서 남아 있는 임시 레지스터의 값은 사용할 수 없습니다. 쓰기 전에 임시 레지스터에서 값을 읽는 꼭짓점 셰이더는 꼭짓점 셰이더를 만들기 위한 Direct3D API 호출에 실패합니다.
예
다음은 임시 레지스터를 사용하는 예입니다.
def c4, 0,0,0,1
...
// Decompress position
mov r0.x, v0.x
mov r0.y, c4.w // 1
mov r0.z, v0.y
mov r0.w, c4.w // 1
// Compute theta from distance and time
mov r4.xz, r0 // xz
꼭짓점 셰이더 버전 | 1_1 | 2_0 | 2_sw | 2_x | 3_0 | 3_sw |
---|---|---|---|---|---|---|
임시 등록 | x | x | x | x | x | x |
관련 항목