텍스처는 임포트할 때 압축이 된다. 기본적으로 언제나 압축이 된다. 압축은 플랫폼마다 달라진다.\ 옛날 이름인 BC와 DXTC는 PC의 DirectX에서 쓰인다. BC는 블록압축이라는 뜻이고 DXTC는 DirectX 텍스처 압축이란 뜻이다. 가끔 C가 없이 DXT라고만 할 때도 있는데 둘 다 같은 것이다. 이건 표준 포맷으로 PC에서 DirectX를 사용한다. 압축명에는 숫자가 따라붙어 압축 유형을 구분한다. 각각의 포맷에는 수많은 유형의 압축들이 포함되어 있다. BC1, BC3, BC5, BC7 등을 쉽게 볼 수 있다. 숫자는 BC 압축 유형을 구분해 준다. DXTC도 비슷하다. 주로 DXTC1, 3, 5를 쉽게 볼 수 있다. 필요하다면 압축을 일시적 또는 영구적으로 비활성화할 수 있다.
Textures are compressed on import
Compression differs per platform. BC (DXTC by its old name) is used for DirectX on PC.
The compression name is followed by a number to identify compression type - BC1 BC3 BC5 BC7 or DXTC1, 3, 5
Can be disabled if needed, temporarily or permanently
텍스처 에디터
Defer Compression: 머티리얼 저장 시점까지 압축을 연기해두는 옵션. 그럼 에디터로의 임포트가 빨라진다. 그 이유는 텍스처를 임포트할 때 텍스처를 임포트하는 동시에 자동으로 압축도 이루어지기 때문이다. 하지만 압축 작업 그 자체가 특히 초대형 텍스처의 경우 예컨대 8192짜리 텍스처가 있다고 치면 압축이 굉장히 오래 걸려서 작업이 굉장히 짜증나고 힘들어질 수 있다. 압축이 다 끝날 때까지 기다려야 하기 때문이다. ‘Defer Compression’을 활성화한다면 임포트할 때 다른 압축을 비활성화하고 저장을 할 때만 압축을 해서 작업에 도움이 될 수 있다.
BC의 다양하고 수많은 압축 세팅은 언리얼 엔진에 노출되지 않는다.
BC3은 알파가 있는 텍스처이고 BC1은 알파가 없는 텍스처이며 이는 DXTC에도 마찬가지이다.
BC has many different compression settings not exposed by UE
BC3 (DXTC5) = Textures with alpha - BC1 (DXTC1) = Textures without alpha
텍스처의 알파 채널이 있으면 압축은 강제로 DXTC5가 된다. 여기서 차이점이 나타난다. 그 역할은 굉장히 흥미롭게 눈여겨볼 부분인데 그 이유는 알파 채널이 거의 미압축이기 때문이다. DXTC5는 빨강, 초록, 파랑을 압축하고 알파는 포함하되 압축은 하지 않는다. 그 알파의 파일 용량은 다른 채널들이 압축된 것과 동일하다.
대부분의 압축 설정은 BC1이나 3 또는 DXTC1이나 5가 된다.
노멀 맵은 특이한 경우로 항상 주의해야 한다. 노멀맵이 제대로 설정되었는지 확인하는 건 아주 중요하다. 노멀 맵 텍스처는 미압축으로 임포트할 수 없으며 설정도 전혀 바꿀 수 없이 그대로 임포트해야 한다 안 그러면 제대로 작동하지 않기 때문이다. 작동하는 것처럼 보여도 실제로는 그렇지 않다. 노멀 맵은 특수한 BC5 압축을 사용한다. BC와 DXTC에서 공통적으로 나타나는 문제점은 노멀 맵만큼 색 조합을 정확하게 하지 못한다는 것이다. 그래서 노멀 맵이 블렌딩하는 다양한 색을 압축하는게 어렵다. 시스템 상의 약점이다. 노멀 맵은 일반적인 BC나 DXTC로 압축할 수 없기에 노멀 맵의 색 유형 처리에 특화된 새로운 유형을 설계했다. 다음으로 살펴볼게 정말 중요하면서 재미있는 부분인데 노멀 맵에는 사실 파란색이 전혀 없다는 것이다.
Normal maps use the special BC5 which saves only Red/Green
압축을 하는 이유
Limited memory and bandwidth - thus we must compress
Texture resolution affects memory and bandwidth, not rendering performance.
Problems caused by exceeding the available bandwidth or memory may cause lag, freezes and hitches, but not framerate drops
에디터의 통계 브라우저를 보면 에디터와 프로젝트에 소모된 메모리와 게임 속 통계 메모리를 보여준다. 여기서 몇 가지 툴을 사용해 실제 메모리 사용량을 확인할 수도 있다. 메모리를 그다지 많이 사용하고 있지 않다면 그냥 프로젝트의 텍스처를 전부 미압축으로 나둬도 된다. 특히 게임이 아니라면 더더욱 상관 없다.
The statistics browser and Stat Memory show the amount taken up in the editor or the project
Stat memory shows in-game
Statistics Browser에서 Texture Stats를 선택하여 텍스처를 관리할 수 있다.
Cooker Stats가 최종 빌드 파일에서 사용하는 텍스처 목록을 가져오기 때문에 더 정확하다.