Neural Texture Compression
신경망 텍스처 압축은 텍스처를 학습된 특징으로 저장하고 필요할 때 재구성하여, 세밀한 디테일을 보존하면서 그래픽 메모리 사용량을 줄입니다.
신경망 텍스처 압축(NTC)은 재질 텍스처를 압축된 학습 특징과 소형 신경 디코더로 저장하는 손실 압축 기술입니다. 렌더러가 필요로 할 때 디코더가 텍스처 값을 재구성합니다. 쉽게 말해, 표면 디테일 이미지의 대규모 모음을 더 작은 학습 기반 표현으로 대체하여 세밀한 시각적 디테일을 유지하면서 스토리지와 그래픽 메모리 요구량을 줄입니다.
NVIDIA의 Karthik Vaidyanathan, Marco Salvi, Bartlomiej Wronski, Tomas Akenine-Möller, Pontus Ebelin, Aaron Lefohn은 2023년 재질 텍스처의 랜덤 액세스 신경망 압축을 통해 영향력 있는 랜덤 액세스 NTC 방식을 소개했습니다. 이 방식은 재질의 텍스처와 밉맵을 함께 압축합니다. 밉맵은 표면이 더 멀리 보일 때 사용하는 점점 더 작은 텍스처 버전입니다.
신경망 텍스처 압축의 작동 방식#
물리 기반 렌더링 재질은 서로 정렬된 여러 텍스처 맵을 사용합니다. 기본 색상 맵은 표면 색상을 나타내고, 노멀 맵은 표면 방향의 미세한 변화를 표현하며, 거칠기 맵은 하이라이트의 선명도를 조절합니다. 이러한 맵에는 공통된 구조가 있습니다. 예를 들어 한 긁힘 자국이 같은 위치의 여러 채널에 영향을 줄 수 있습니다. NTC는 맵을 공유 잠재 공간에 함께 표현하고 공간 그리드에 압축된 특징 벡터를 배치하여 이러한 상관관계를 활용합니다. 일반적으로 다층 퍼셉트론인 소형 신경망이 특징을 디코딩해 재질 값으로 변환합니다.
압축 과정에서는 재질에 맞춰 특징 그리드와 디코더의 모델 가중치를 최적화합니다. 재구성 손실 함수는 원본 텍스처와의 차이를 측정하고, 역전파를 통해 최적화에 필요한 그래디언트를 계산합니다. 원래 방식은 Adam 옵티마이저를 사용하며, 샘플링된 특징과 위치 정보 및 요청된 밉 레벨을 결합합니다. 렌더링 시 좌표를 쿼리하면 해당 텍셀, 즉 텍스처에서 픽셀에 해당하는 값이 재구성됩니다.
이 하이브리드 구조는 신호를 학습된 좌표 종속 함수로 표현하는 암시적 신경 표현과 NTC를 연결합니다. NTC의 핵심적인 그래픽 기능은 랜덤 액세스입니다. 렌더러는 요청된 텍스처 위치를 필요할 때 재구성하므로 셰이딩 중 실시간 추론을 지원합니다.
메모리 절감과 렌더링 간의 절충#
NTC는 텍스처 메모리를 GPU 디코더 연산으로 대체합니다. 두 가지 배포 모드에서 이러한 절충이 특히 명확하게 드러납니다.
- 로드 시 추론: 에셋을 로드할 때 텍스처를 디코딩하여 일반적인 BCn 블록 압축 텍스처로 변환할 수 있습니다. 이렇게 하면 에셋의 저장 공간과 전송 크기를 줄이면서 대상 형식의 상주 메모리 사용량은 유지합니다.
- 샘플링 중 추론: 셰이더는 렌더링 중 요청된 텍셀을 디코딩하므로, 신경망 표현이 그래픽 메모리에 유지되고 텍스처 샘플링에 디코더 작업이 추가됩니다.
세 번째 모드인 피드백 기반 추론은 요청된 텍스처 타일을 희소 텍스처 캐시로 디코딩합니다. 이러한 선택에 따라 압축으로 절감한 용량이 유지되는 위치와 압축 해제 작업이 수행되는 위치가 결정됩니다.
원래 잉크병 시연에서는 4096 x 4096 NTC 텍스처와 1024 x 1024 블록 압축 텍스처를 비교했습니다. 텍셀 수는 16배 많지만 텍스처 메모리는 30% 적습니다. 이 비교는 더 적은 텍스처 할당량으로 더 높은 해상도의 표면 디테일을 보존할 수 있음을 보여줍니다.
응용 분야 및 관련 개념#
인터랙티브 3D 렌더링은 직접적인 응용 분야입니다. 개발자는 콘텐츠 준비 단계에서 머티리얼 에셋을 압축하고 디코딩을 렌더러에 통합합니다. NVIDIA RTX Neural Texture Compression SDK를 사용하면 ntc-cli로 텍스처 세트를 압축하고, NTC Explorer로 설정을 비교하며, 샘플 렌더러로 glTF 에셋을 표시할 수 있습니다. 번들에 포함된 FlightHelmet 모델에는 렌더링 모드 테스트용으로 사전 압축된 머티리얼이 포함되어 있습니다.
신경 렌더링은 이미지 합성에 학습된 구성 요소를 사용하는 더 광범위한 개념입니다. NTC는 저장된 머티리얼 텍스처를 재구성하며, 초해상도는 저해상도 입력에서 더 높은 해상도의 이미지를 재구성합니다. 이러한 기법은 그래픽 파이프라인의 서로 다른 단계에서 작동합니다.
모델 양자화는 네트워크 파라미터와 활성화의 수치 정밀도를 낮춥니다. Ultralytics YOLO는 관련 저정밀도 기법을 TensorRT 내보내기를 통해 적용하여 INT8 YOLO26 엔진을 생성합니다. 이 엔진은 모델 메모리 요구량을 줄이고 지원되는 추론 워크로드를 가속합니다.
재구성 품질 및 아티팩트#
NTC 품질은 비트 예산과 머티리얼 복잡성에 따라 달라집니다. 텍셀당 비트 수가 많을수록 디테일을 재구성할 용량이 커지며, 고정된 비트 예산에서 채널을 추가하면 압축 부담이 커집니다. 데시벨 단위로 측정되는 피크 신호 대 잡음비(PSNR)는 재구성 충실도를 정량화하며, 값이 높을수록 오차가 낮음을 나타냅니다. 디코딩을 공유하면 채널 간에 특징이 누출되어 재구성된 머티리얼 속성이 달라질 수도 있습니다. NVIDIA 구현에서는 명시적으로 지정된 알파 마스크 채널을 특별히 처리하여 0과 1에 가까운 값을 더 정확하게 보존합니다.










