역자의 말.
최근까지 CGI 회사의 언리얼 엔진 부분 컨설팅을 하다가 또 다른 게임회사의 신규 프로젝트 최적화 부분 카운셀링을 맡게 되었습니다.
단순히 시각화 처리 부분등에 관련 된 렌더링 프레임웍에 관련 된 일을 주로 하다가 오랫만에 게임콘텐트의 전방위적 CPU 와 GPU 프로파일링, 메모리 버젯 관리 부터 상세한 cost 들을 찾아내고 줄여나가는 일을 하게 되었네요.
게임회사의 테크아트 부서마다 집중하는 일들이 다들 다를텐데요... 넷이즈 엔진 센터에서 근무 할 때는 프로파일링도 자주 했었지만 그 외의 게임사에서는 주로 미술팀의 요청에 근거한 시각화 처리 였거든요. 아무튼... 텍스처 케시 미스를 줄이는 방법은 여러가지가 존재하겠습니다만...
아티스트분들이 조금이나마 왜 텍스처 패킹 전략을 잘 수립하고 렌더링 단계에서 어떻게 Trade-off 할 것인지 유연하게 받아들였으면 해서... 짧지만... 간단한 내용을 포스팅 해 봅니다.
원문링크.
Memory Statistics - Texture
NVIDIA® Nsight™ Development Platform, Visual Studio Edition 4.7 User Guide
Overview
텍스처 메모리는 읽기 전용 장치 메모리이며, Texture Functions에서 설명된 장치 함수를 사용하여 액세스할 수 있습니다. 이러한 함수 중 하나를 사용하여 텍스처를 읽는 것을 텍스처 가져오기라고 합니다. 텍스처 메모리 트래픽은 텍스처 캐시(이 L1 데이터 캐시와 독립적입니다)와 L2 캐시를 통해 라우팅됩니다. 텍스처 메모리 시스템은 2D 배열에서 공간적으로 지역화된 액세스에 효율적으로 설계되었습니다. GPU의 텍스처 지원은 일반적인 메모리 시스템을 넘어 사용자 정의 동작(범위를 벗어난 읽기 시) 및 배열 요소 사이의 좌표에서 읽을 때 필터링된 보간과 같은 기능을 제공합니다. 텍스처 메모리는 일정한 지연 시간을 가지고 연속적인 가져오기에 대해 설계되었으며, 텍스처 캐시 히트는 장치 메모리 대역폭 사용량을 줄이지만 가져오기 지연 시간은 줄이지 않습니다.
Chart
각 워프가 텍스처 메모리에서 읽기를 수행할 때마다 이는 단일 페치로 계산됩니다. 텍스처 차트는 페치의 수와 페치 속도를 보여줍니다. 텍스처 페치는 메모리 요청이며, 이로 인해 텍스처 캐시에서 트랜잭션이 발생합니다. 텍스처 캐시로부터의 트랜잭션은 32바이트 단위입니다.
Analysis
- 텍스처 캐시 히트율이 낮으면 ...
- ... 액세스 패턴이 2D 공간 지역성에 대한 텍스처 캐시의 최적화와 일치하지 않습니다. 공간적으로 일치하는 동일한 읽기 작업을 더 가까이 모으도록 액세스 패턴을 수정해보세요. 또는 1D 선형 액세스 패턴에서는 글로벌 메모리가 텍스처 메모리보다 효율적일 수 있습니다.
- 텍스처 메모리 대역폭이 성능 병목 지점이면 ...
- ... 더 간단한 텍스처 필터링 모드를 사용하거나 낮은 해상도의 텍스처를 사용하는 것을 고려하세요.
역자 각주
배열 텍스처에 대해서 좀 더 알고 싶다면~
배열 텍스처 - OpenGL Wiki (khronos.org)
'TECH.ART.FLOW.IO' 카테고리의 다른 글
[번역]Use Runtime Virtual Textures to Improve Landscape Performance in Unreal Engi (0) | 2023.09.21 |
---|---|
[번역] Matcap 왜곡 보정 정보 (2) | 2023.09.20 |
PBR WORKFLOW TEMPLATE by 이종석 TA님 (0) | 2023.09.19 |
[번역]Brief Analysis of UE5 Rendering Pipeline (0) | 2023.09.19 |
[번역]물리적 기반 렌더링 알고리즘 (0) | 2023.09.17 |