많은 텍스처 맵을 사용하는 것이 캐싱에 좋지 않습니까?


10

동일한 텍스처 단위에 바인딩 된 텍스처 (예 : 5 개 이상)가 많은 경우 텍스처가 2 개 또는 3 개만있는 경우보다 캐시에서 더 잘 작동합니까?

답변:


16

imallett의 답변 에 덧붙여서 , 셰이더에서 다른 텍스처 데이터에 대한 액세스 수를 늘리면 GPU 캐시에 대한 압력이 증가하지만 그 효과에 크게 영향을 줄 수있는 몇 가지 다른 요소가 있습니다. CPU 캐시와 같이 GPU에 여러 계층의 캐시가있을 수 있다는 사실로 인해 복잡 할 수도 있습니다. 텍스쳐 유닛 <= L0 <= L1 <= ..Memory

앨리어싱 방지-> MIP 맵 사용

텍스처 데이터를 최소화 한 장면이있는 경우, 원근감 또는 간단한 스케일링으로 인해 MIP 매핑을 사용하지 않는 경우 앨리어싱이 발생합니다. 이것은 단지 시각적 인공물을 생산하는 것이 아닙니다. 성능 문제 일 가능성이 큽니다.

앨리어싱을 가져 오면 텍스처에 대한 주소 액세스가 불일치하게되어 캐시를 스 래싱 할뿐만 아니라 많은 DRAM "페이지 나누기"(보다 정확하게는 행 나누기)가 발생하여 비용이 많이들 수 있습니다. MIP 매핑은 불일치를 줄입니다.

텍스처 압축

아마도 약간의 확실한 옵션이지만 8bpp에서 2bpp로 텍스처 압축 (예 : DXTn | ETC * | PVRTC * | etc)을 사용할 수 있다면 메모리 대역폭 / 캐시의 효율성을 크게 높일 수 있습니다. 4 배에서 16 배까지. 이제 모든 GPU에 대해 말할 수는 없지만 일부 텍스처 압축 체계 (예 : 위에 나열된 것)는 하드웨어에서 디코딩하기가 너무 간단하여 데이터 가 전체 캐시 계층 구조에서 압축 상태를 유지하고 텍스처 단위에서만 압축 해제 할 수 있습니다. 캐시의 크기를 효과적으로 곱합니다.

데이터 크기

분명히, 후속 렌더링에서 텍스쳐 데이터로 사용되는 렌더 타깃과 같은 일부 데이터는 텍스쳐 압축을 사용할 수 없습니다. 가능할 때마다 작업을 수행하는 가장 작은 픽셀 형식을 사용하십시오. 즉, 32 / 16bpp (A) RGB가 할 경우 4x32 부동 형식을 사용하지 마십시오!

스파 스 액세스

이것은 위의 앨리어싱 예제와 다소 관련이 있지만, 큰 렌더 타겟이 생성 된 다음 매우 드물게 샘플링되는 경우가 있습니다. 캐시 라인 (CPU 또는 GPU)은 상당히 길기 때문에 각 캐시 라인에서 하나의 픽셀 만 사용하면 전송이 낭비됩니다.

또한 WRT 압축 텍스처는 로컬 텍셀 영역간에 데이터를 효과적으로 공유하여 압축을 달성합니다. 일관성있는 액세스 권한이 없으면 메모리 풋 프린트 감소를 제외하고는 압축이 도움이되지 않습니다.

종속 텍스처 읽기

캐시 문제는 많지 않지만 (계산 된 액세스가 일관성이없는 경우가 아니라면) 정점과 함께 제공된 UV 좌표로 직접 정의되지 않은 텍스처 액세스는 직접 정의 된 것보다 느릴 수 있습니다.

Tiled / Morton VS Strided 텍스처

요즘 대부분의 텍스처는 바둑판 식 배열 또는 Morton과 같은 (일명 Twiddled / Swizzled) 순서 (또는 둘 다의 조합)로 저장 될 것으로 생각되지만 일부 텍스처 는 여전히 스캔 라인 순서 일 수 있습니다. 텍스처는 많은 수의 캐시 누락 / 페이지 나누기를 유발할 수 있습니다. 불행히도 특정 형식이 그런 식으로 배열되어 있는지 확인하는 방법을 모르겠습니다.

(배경 읽기의 경우 Blinn의 텍스처 매핑에 대한 진실 . FWIW를 시도 하십시오. 몇 단계 만 더 거치면 적어도 일부 초기 PC 하드웨어에서 Twiddled-order (즉, Morton order) 텍스처가 사용됩니다 ).


8

대답은 당신이 의미하는 바에 달려 있습니다. 현대 하드웨어 (예 : 바인드리스 텍스처)는 "바인딩 된"텍스처 수를 너무 신경 쓰지 않습니다. 실제 질문은 당신 이 얼마나 많이 사용하는지 입니다.

텍스처는 일반적으로 캐시에 친숙한 방식으로 데이터를 저장합니다 (Morton 곡선). 더 많은 텍스처를 사용하면 더 많은 캐시 누락이 발생합니다. 이제 텍스처가 공간을 위해 서로 경쟁하기 때문입니다.

이것은 실제로 잘 알려진 오래된 셰이더 프로그래밍 휴리스틱으로 귀착됩니다. 텍스처 탭이 느립니다. 너무 많이 사용하지 마십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.