본문 바로가기
vfxai 잡학지식 vfxai 잡학지식

텍스처 몇 장이면 VRAM이 찰까: 해상도·채널·밉맵으로 계산

vfx 잡학지식 읽는 시간 약 11분 조회 2

4K 텍스처 10장을 쓰면 VRAM을 얼마나 차지할까요? 화면에 해상도와 장수만 적혀 있어도, 채널 수와 비트 깊이, 밉맵 설정까지 알면 계산은 달라집니다.

아래 계산기에 가로·세로 해상도, 채널 수, 채널당 비트, 밉맵 여부와 같은 사양의 장수를 입력해 보세요. 계산기는 2D 비압축 텍스처의 기준값을 내며, 이미지 파일을 읽거나 서버로 보내지 않습니다.

기본값은 4K RGBA 8bit 텍스처 10장입니다. 결과를 확인한 뒤 각 항목이 실제 GPU에 올라가는 크기와 어떻게 다른지 살펴보겠습니다.

비압축 텍스처 메모리 계산기

같은 사양의 2D 텍스처가 차지하는 원시 메모리를 계산합니다. 기본값은 4K RGBA 8bit 텍스처 10장입니다.

밉맵 없는 기본 크기, 1장: 계산 중

밉맵 추가분, 1장: 계산 중

선택한 설정의 전체 장수 합계: 계산 중

입력값을 바꾸면 결과를 다시 계산합니다.

MiB는 1,048,576byte, GiB는 1,073,741,824byte입니다. 실제 GPU 메모리는 압축 포맷, 플랫폼 정렬, 밉맵 스트리밍, 렌더러가 쓰는 다른 자원에 따라 달라집니다.

1. 비압축 텍스처 메모리는 픽셀과 채널에서 시작합니다

한 픽셀을 저장하는 바이트 수는 채널 수와 채널당 비트 깊이로 구합니다. 같은 규격의 텍스처라면 장수를 곱하고, 규격이 다르면 그룹을 나눠 계산합니다.

기본 메모리(bytes) = 가로 × 세로 × 채널 수 × 채널당 바이트입니다. 채널당 바이트는 비트 깊이를 8로 나눈 값입니다.

채널당 형식채널당 크기RGBA 한 픽셀
8bit1 byte4 bytes
16bit half float2 bytes8 bytes
32bit float4 bytes16 bytes

여기서 16bit는 half float를 뜻합니다. 16bit 정수 텍스처의 포맷과 같다고 가정하지 않습니다.

4096×4096 RGBA 8bit 텍스처 한 장은 4096 × 4096 × 4 × 1 = 67,108,864 bytes입니다. 1 MiB를 1,048,576 bytes로 계산하면 밉맵 전 크기는 64 MiB입니다.

이 글과 계산기는 MiB = 1,048,576 bytes, GiB = 1,073,741,824 bytes를 사용합니다. PNG나 JPEG의 디스크 파일 크기를 GPU 메모리로 간주하지 않습니다.

2. 밉맵은 전체 체인에서 약 1/3을 더합니다

밉맵은 멀리 있는 표면에 쓸 수 있도록 원본을 점점 작은 해상도로 미리 저장한 단계입니다. 가로와 세로가 매번 절반이 되므로, 다음 단계 픽셀 수는 앞 단계의 1/4입니다.

1 + 1/4 + 1/16 + 1/64 + … ≈ 4/3입니다. 1×1까지 전체 밉맵을 포함하면 큰 정사각형 텍스처는 밉맵 없는 크기보다 약 1/3 커집니다. Unity 공식 문서도 밉맵이 메모리를 약 33% 늘린다고 안내합니다.

4096×4096 RGBA 8bit장당 메모리
밉맵 없음64 MiB
1×1까지 전체 밉맵약 85.33 MiB
전체 밉맵을 포함한 같은 규격 10장약 853.33 MiB, 약 0.83 GiB

표는 반올림한 값입니다. 이 계산은 전체 밉 체인을 보관한다고 가정합니다. 카메라를 뒤로 뺐을 때 보이는 경계선은 용량 계산과 다른 문제일 수 있으니, 패딩과 밉맵에서 텍스처 이음새를 확인하는 방법도 참고하세요.

3. 8K 텍스처는 채널과 비트에 따라 네 배씩 커집니다

4K에서 8K로 가면 가로와 세로가 각각 두 배가 됩니다. 픽셀 수는 네 배가 되므로 채널과 비트 깊이가 같을 때 메모리도 네 배가 됩니다.

해상도와 형식밉맵 없는 크기전체 밉맵 포함
4096×4096 RGBA 8bit64 MiB약 85.33 MiB
8192×8192 RGBA 8bit256 MiB약 341.33 MiB
8192×8192 RGBA 16bit half float512 MiB약 682.67 MiB
8192×8192 RGBA 32bit float1 GiB약 1.33 GiB

즉 8K RGBA 8bit 한 장은 전체 밉맵 기준 약 341.33 MiB이고, 16bit half float로 바꾸면 약 682.67 MiB입니다. 같은 해상도에서 32bit float는 한 장이 약 1.33 GiB입니다.

채널 수는 입력 이미지의 채널을 세는 값입니다. 다만 3채널 RGB라도 엔진이 GPU에서 RGBA로 확장할 수 있습니다. Unity 공식 포맷표에는 RGB 24bit 데이터가 GPU에서 RGBA 32bit로 변환되는 사례가 나와 있습니다.

텍스처가 흐린 문제는 해상도만 올려 해결되지 않을 때도 있습니다. UV 셸에 픽셀이 얼마나 배정됐는지는 UV 크기와 텍셀 밀도를 함께 확인해야 합니다.

4. GPU 압축 포맷은 비압축 계산값을 바꿉니다

이 도구는 비압축 채널 값으로 계산합니다. 실제 엔진은 BC 같은 GPU 압축 포맷을 쓸 수 있어, 최종 텍스처 크기가 계산값보다 작아질 수 있습니다.

GPU 포맷 예시픽셀당 비트픽셀당 바이트
BC14 bit0.5 byte
BC78 bit1 byte
RGBA Half64 bit8 bytes

Unity 6000.3 포맷표에서 BC1은 4bit/pixel, BC7은 8bit/pixel, RGBA Half는 64bit/pixel로 제시됩니다. Unreal Engine 문서는 BC6H가 비압축 RGBA16F보다 GPU 메모리에서 8배 작다고 설명합니다.

다만 이 숫자를 모든 프로젝트에 그대로 적용하면 안 됩니다. 플랫폼에서 압축 포맷을 지원하지 않으면 텍스처가 다른 형식으로 변환될 수 있고, 블록 크기와 메모리 정렬도 실제 크기에 영향을 줍니다. 그래서 계산기 값에 BC 압축률을 곱해 최종 VRAM 사용량이라고 부르지 않습니다.

5. 전체 밉맵 합계와 현재 VRAM 사용량은 다를 수 있습니다

Unity와 Unreal Engine의 텍스처 스트리밍은 카메라와 메모리 예산에 따라 필요한 해상도의 밉만 올릴 수 있습니다. 따라서 전체 밉맵 체인 크기와 현재 GPU에 상주한 텍스처 크기는 다를 수 있습니다.

Unreal Engine에서는 Texture Asset Editor의 Resource Size, Format, 밉 수와 대상 플랫폼별 포맷·크기를 확인할 수 있습니다. Resource Size는 정렬 전 원시 텍스처 데이터 기준이며, 실제 플랫폼별 크기는 포맷·밉·정렬에 따라 달라질 수 있습니다.

Unity에서는 대상 플랫폼의 GPU 텍스처 포맷과 mipmap streaming 설정을 함께 확인하세요. 원본 PNG의 크기만으로 GPU 상주량을 판단하기 어렵습니다.

Redshift는 실제로 남은 GPU 메모리를 광선, 지오메트리, 텍스처 캐시 등으로 나눠 씁니다. 공식 Memory 문서는 텍스처 캐시를 재활용하고 필요한 밉의 타일만 GPU로 보내므로, 원본 텍스처 전체 용량과 현재 VRAM 상주량이 같지 않을 수 있다고 설명합니다.

OctaneRender의 공식 Out-of-Core 문서는 씬 데이터가 VRAM에 맞지 않을 때 시스템 RAM을 사용할 수 있지만 성능이 떨어질 수 있다고 설명합니다. 이는 렌더러별 기능이므로 모든 엔진에 일반화하지 않습니다.

그래픽카드 메모리 전체 용량이 텍스처 전용 예산은 아닙니다. 렌더러마다 VRAM 부족을 처리하는 방식과 남은 메모리를 확인한 뒤 계산값을 비교하세요.

6. 텍스처는 몇 장까지 버틸까?

이제 장수를 계산할 수 있습니다. 다만 아래 예시는 텍스처에 실제로 할당 가능한 잔여 메모리가 12 GiB라고 가정한 산수입니다. 그래픽카드 전체 VRAM이 12 GiB라는 뜻이 아닙니다.

전체 밉맵 기준 규격장당 메모리12 GiB 텍스처 예산의 이론상 장수
4K RGBA 8bit약 85.33 MiB144장
8K RGBA 8bit약 341.33 MiB36장
8K RGBA 16bit half float약 682.67 MiB18장

장수만으로는 VRAM 사용량을 알 수 없습니다. 각 규격을 따로 계산해 합산하고, 그 합을 렌더러에 실제 남은 텍스처 예산과 비교해야 합니다.

서로 다른 규격은 그룹별로 더하세요. 예를 들어 4K RGBA 8bit 10장은 약 853.33 MiB이고, 8K RGBA 8bit 2장은 약 682.67 MiB입니다. 두 그룹의 합은 약 1,536 MiB, 즉 1.5 GiB입니다.

GPU 메모리 용량으로 그래픽카드를 고를 때는 RTX 5090과 RTX PRO 6000의 VRAM 차이를 고르는 기준도 참고하세요. 카드의 용량과 특정 씬에서 텍스처에 쓸 수 있는 양은 같은 숫자가 아닙니다.

계산 결과를 실제 작업에 적용하는 순서

  • 해상도와 채널 형식이 같은 텍스처를 묶습니다.
  • 각 그룹의 비트 깊이와 전체 밉맵 포함 여부를 계산기에 넣습니다.
  • 그룹별 장수를 입력하고 결과를 모두 더합니다.
  • 엔진의 대상 플랫폼 포맷과 스트리밍 상태를 확인합니다.
  • 렌더러 로그나 엔진 통계에서 실제 남은 텍스처 메모리와 비교합니다.

밉맵과 압축은 기억하되, 실제 장면의 사용량은 측정값으로 확인하세요. 그래야 비압축 계산을 실제 VRAM 숫자로 오해하지 않습니다.

한 줄 정리

텍스처가 몇 장인지보다, 해상도·채널·비트 깊이·밉맵을 반영한 용량의 합이 VRAM 계산의 출발점입니다.

공식 자료

계산의 비압축 기준과 각 엔진의 실제 텍스처 형식·밉맵 동작은 아래 공식 문서에서 확인할 수 있습니다.

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.