비트 크기가 동일한 렌더링 대상을 갖는 것이 왜 중요합니까?


10

현재 지연 쉐이딩에 필요한 GBuffer 유형에 대해 생각하고 있으므로 가장 일반적인 것들과 형식에 대해 온라인으로 문서화하려고했습니다.

내가 본 대부분의 GBuffer는 각 렌더 타겟에 대해 동일한 비트 크기를 사용하여 종종 사용되지 않는 채널로 이어졌습니다. 그러나 GBuffer에 대한 첫 번째 추측으로 종이에는 두 개의 24 비트 대상과 두 개의 32 비트 대상 또는 3 개의 24 및 32가 필요합니다.

각 첨부 파일이 동일한 "크기"를 가지면 더 잘 정렬 될 수 있지만 실제로 채널을 낭비하거나 나중에 사용할 수 있도록 예약하는 것이 더 좋거나 같은 크기의 모든 RT를 사용하는 것이 더 좋습니까? 전자의 경우, 왜 그런 이점이 있습니까? 어쨌든 24 비트 비트는 32로 채워질까요?

답변:


9

각 첨부 파일이 동일한 "크기"를 가지면 더 잘 정렬 될 수 있지만 실제로 채널을 낭비하거나 나중에 사용할 수 있도록 예약하는 것이 더 좋거나 같은 크기의 모든 RT를 사용하는 것이 더 좋습니까?

통합 된 32 비트 정렬 렌더 타겟을 사용하면 일부 메모리를 "낭비"하는 경우에도 더 좋습니다 . 이것은 32 비트가 아닌 정렬 메모리보다 훨씬 빠릅니다. 또한 여러 유형의 버퍼를 지원하는 데 어려움이 없으며 여러 유형 사이에서 변환 할 필요가 없으므로 버퍼 복사 및 결합이 더 쉽습니다.

32 비트는 GPU와 CPU에 기본으로 사용되므로 메모리를 읽는 데 필요한주기 수가 줄어 듭니다. GPU는 자연스럽게 32 비트를 읽으려고합니다. 24 비트와 같이 정렬되지 않은 메모리 주소를 읽으려고하면 GPU가 32 비트를 읽은 다음 원치 않는 바이트를 제거합니다.

다음은 메모리 정렬이 중요한 이유에 대한 자세한 기사 입니다 (고급 개념이 여전히 적용되는 GPU가 아닌 CPU에 대해 이야기하지만).

어쨌든 24 비트 비트는 32로 채워 집니까?

일부 GPU는 패딩하지만 보장 할 수 없으므로 드라이버 / GPU 구현 영역에 있습니다. 따라서 결과를 프로파일 링하고 확인해야합니다.

PS : 아키텍처에 따라 32 비트 또는 64 비트.


5
그리고 그것들이 모두 같은 비트 크기라면 변환 할 필요없이 그것들을 깨뜨릴 수 있습니다
ratchet freak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.