2008-10-13 8 views
1

Direct3D에서 픽셀 쉐이더를 실행할 때, MaxTextureRepeat에 의해 부과 된 텍스처 좌표의 한계는 Tex2D()와 같은 텍스처 룩업 함수 호출시에만 문제가되거나, 텍스처 좌표가 쉐이더 내에서 액세스 될 때 항상 재생됩니다 ?언제 MaxTextureRepeat 제한이 적용됩니까?

MaxTextureRepeat 제한을 피하기 위해 texture lookup 함수에 전달하기 전에 텍스쳐 좌표에서 frac()과 같은 것을 호출하는 것이 가능한지 알고 싶습니다.

답변

0

텍스처 좌표는 네이티브 보간 정밀도입니다. 픽셀 쉐이더 2.0 가능 하드웨어에서 적어도 24 비트 부동 소수점 (또는 확실하지 않은 32 비트)이 있습니다. 내부적으로 픽셀 쉐이더의 계산은 최소 24 비트 부동 소수점이어야합니다. 대부분의 최신 GPU는 32 비트 부동 소수점 정밀도로 실행됩니다.

MaxTextureRepeat는 텍스처 샘플링 하드웨어의 기능입니다.

그렇기 때문에 부동 소수점 정밀도 제한을 사용하지 않으면 샘플링 전에 범위를 제한하는 것이 텍스처 반복 제한을 피하는 한 가지 방법입니다.

그러나 frac이 0에서 1로 바뀌면 큰 그라디언트가 발생하므로 GPU는 매우 낮은 해상도의 밉 레벨을 사용하려고합니다. 물론 상황에 따라 문제가 될 수는 없습니다. 그러나 그것은 잠재적 인 문제 (들)의 한 지점입니다.