texbeml - ps
광도 보정으로 가짜 범프 환경 맵 변환을 적용합니다. 이는 주소 교란 데이터(du,dv), 2D 범프 환경 행렬 및 광도를 사용하여 대상 레지스터의 텍스처 주소 데이터를 수정하여 수행됩니다.
Syntax
texbeml dst, src |
---|
라는 설치 관리자 실행 파일에 포함됩니다. 여기서
- dst는 대상 레지스터입니다.
- src는 원본 레지스터입니다.
설명
픽셀 셰이더 버전 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texbeml | x | x | x |
src 레지스터의 빨간색 및 녹색 색상 데이터는 교란 데이터(du,dv)로 해석됩니다. src 레지스터의 파란색 데이터는 광도 데이터로 해석됩니다.
이 명령은 2D 범프 환경 매핑 행렬을 사용하여 원본 레지스터의 빨간색 및 녹색 성분을 변환합니다. 결과는 대상 레지스터 번호에 해당하는 텍스처 좌표 집합에 추가됩니다. 광도 값과 바이어스 텍스처 단계 값을 사용하여 광도 보정이 적용됩니다. 결과는 현재 텍스처 단계를 샘플링하는 데 사용됩니다.
이는 가짜 픽셀당 환경 매핑과 같은 주소 변동에 기반한 다양한 기술에 사용할 수 있습니다.
이 작업은 항상 du 및 dv를 부호 있는 수량으로 해석합니다. 버전 1_0 및 1_1의 경우 원본 레지스터 부호 있는 스케일링 입력 한정자(_bx2)가 입력 인수에서 허용되지 않습니다.
이 명령은 입력 텍스처에 혼합 형식 데이터가 포함된 경우 정의된 결과를 생성합니다. 표면 형식에 대한 자세한 내용은 D3DFORMAT을 참조하세요.
// When using this instruction, texture registers must follow
// the following sequence:
// The texture assigned to stage tn contains the (du,dv) data
// The texture assigned to stage t(m) is sampled
tex t(n)
texbeml t(m), t(n) where m > n
이 예는 명령 내에서 수행되는 계산을 보여 줍니다.
// 1. New values for texture addresses (u',v') are calculated
// 2. Sample the texture using (u',v')
// 3. Luminance correction is applied
u' = TextureCoordinates(stage m)u +
D3DTSS_BUMPENVMAT00(stage m)*t(n)R +
D3DTSS_BUMPENVMAT10(stage m)*t(n)G
v' = TextureCoordinates(stage m)v +
D3DTSS_BUMPENVMAT01(stage m)*t(n)R +
D3DTSS_BUMPENVMAT11(stage m)*t(n)G
t(m)RGBA = (u',v')를 좌표로 사용하는 TextureSample(stage m)
t(m)RGBA = t(m)RGBA *
[(t(n)B * D3DTSS_BUMPENVLSCALE(stage m)) +
D3DTSS_BUMPENVLOFFSET(단계 m)]
texbem 또는 texbeml 명령으로 읽은 레지스터 데이터는 다른 texbem 또는 texbeml을 제외하고 나중에 읽을 수 없습니다.
// This example demonstrates the validation error caused by
// t0 being reread
ps_1_1
tex t0
texbem t1, t0
add r0, t1, t0
(Instruction Error) (Statement 4) Register data that has been read by
texbem or texbeml instruction cannot be read by other instructions
예제
다음은 식별된 텍스처 맵과 식별된 텍스처 단계가 있는 예 셰이더입니다.
ps_1_1
tex t0 ; Define t0 to get a 2-tuple DuDv
texbeml t1, t0 ; Compute (u',v')
; Apply luminance correction
; Sample t1 using (u',v')
mov r0, t1 ; Output result
이 예에서는 다음 텍스처 단계에서 다음 텍스처가 필요합니다.
- 단계 0에는(du, dv) 교란 데이터가 있는 범프 맵이 할당됩니다.
- 1단계에는 색상 데이터가 있는 텍스처 맵이 할당됩니다.
- texbeml은 샘플링되는 텍스처 단계에서 행렬 데이터를 설정합니다. 이는 교란 데이터와 행렬이 동일한 텍스처 단계를 차지하는 고정 함수 파이프라인의 기능과 다릅니다.
관련 항목