반응형
출처 : [유니티 TIPS] 알쓸유잡 | 효율적인 텍스처 압축 이해하기& 꿀팁 (youtube.com)
Unity에서 알려주는 텍스처 압축 강의를 보고 내용 정리를 진행했다
1. 이미지 파일 형식 및 압축 설명
- 텍스처는 RGB 알파 채널에서 채널당 8비트에서 4 파일을 합쳐 32비트의 이미지를 보여준다.
- 이미지를 GPU 용량을 사용하여 그래픽스 렌더링 하려면 PNG와 JPG 이미지를 사용할 수 있으며, 두 형식은 손실 압축과 약 손실 압축의 차이가 있다고 한다.
** 잠깐 PNG와 JPG 이미지의 차이점을 간단하게 알아보자 **
비교
특징 | PNG | JPEG |
압축 방식 | 무손실 압축 | 손실 압축 |
알파 채널 | 지원 | 지원하지 않음 |
컬러 깊이 | 최대 32비트 (24비트 컬러 + 8비트 알파) | 24비트 컬러 |
파일 크기 | 상대적으로 큼 | 상대적으로 작음 |
용도 | 고품질 그래픽, 투명 텍스처 | 사진, 일반 이미지 |
선택 가이드
- 투명도나 고품질이 중요한 텍스처의 경우 PNG를 사용하는 것을 추천!
- 파일 크기를 줄이고자 하거나 투명도가 필요 없는 경우 JPEG를 사용하는 것을 추천!
Unity에서의 사용 예시
- PNG: 게임 내 아이콘, UI 요소, 투명 텍스처 (예: 캐릭터의 그림자, 반투명 물체 등)
- JPEG: 게임 내 배경 이미지, 큰 사진, 디테일이 필요한 이미지가 아닌 일반 텍스처
2. 가변 비율 압축 vs 고정 비율 압축
- 고정 비율 압축
고정 비율 압축은 모든 텍스처 데이터를 일정한 비율로 압축하는 방식입니다. 대표적인 예로는 DXT (DirectX Texture Compression) 또는 S3TC (S3 Texture Compression)와 같은 압축 방식
장점
- 일관된 메모리 사용량: 압축된 텍스처의 크기가 일정하므로, 메모리 사용량을 예측하기 쉽다.
- 빠른 압축 및 해제: 고정된 비율로 압축되므로, 압축 및 해제 속도가 빠르다.
- 광범위한 하드웨어 지원: 대부분의 GPU에서 지원되므로 호환성이 높다.
단점
- 품질 저하: 모든 부분에 동일한 비율로 압축을 적용하므로, 특정 부분의 품질이 크게 저하될 수 있다.
- 효율성 부족: 텍스처의 복잡도에 관계없이 동일한 비율로 압축되므로, 단순한 부분에서도 불필요하게 메모리를 많이 사용할 수 있다.
- 가변 비율 압축
가변 비율 압축은 텍스처의 각 부분을 다르게 압축하는 방식입니다. 텍스처의 세부 사항이나 중요도에 따라 압축 비율이 달라질 수 있습니다. 대표적인 예로는 ASTC (Adaptive Scalable Texture Compression)와 같은 방식이 있습니다.
장점
- 품질 유지: 중요한 세부 사항이나 복잡한 부분은 더 낮은 압축 비율을 적용하여 품질을 유지할 수 있다.
- 효율적 메모리 사용: 단순한 부분은 더 높은 압축 비율을 적용하여 메모리를 절약할 수 있다.
- 유연성: 다양한 비율로 압축을 적용할 수 있어, 텍스처의 특성에 따라 최적의 압축 비율을 선택할 수 있다.
단점
- 복잡한 알고리즘: 압축 및 해제 알고리즘이 더 복잡하여 처리 속도가 느려질 수 있다.
- 예측 불가능한 메모리 사용량: 압축된 텍스처의 크기가 일정하지 않으므로, 메모리 사용량을 예측하기 어렵다.
- 제한된 하드웨어 지원: 일부 구형 GPU에서는 지원하지 않을 수 있다.
결과적으로 내용을 요약해보자면!!!!
- 고정 비율 압축: 일관된 크기, 빠른 처리 속도, 광범위한 호환성을 제공하지만, 품질 저하와 비효율적인 메모리 사용의 단점이 있다.
- 가변 비율 압축: 더 나은 품질과 효율적인 메모리 사용을 제공하지만, 복잡한 처리 알고리즘과 예측 불가능한 메모리 사용량의 단점이 있다.
그렇다면 텍스쳐를 설정하는 방법?? 설정된 것을 확인할 수 있는 방법은 아래와 같다!!
포맷 형식을 눌러 각기 다르게 설정할 수 있고 또 확인할 수 있다!
가변인 ASTC로 했을 경우 차이점은 아래와 같다! (강의 중 이미지 캡쳐)
숫자가 작을수록 더 높은 품질(낮은 압축 비율)을 의미
결과적으로 기존 시스템에서는 DXT와 ETC가 여전히 중요한 역할을 하고 있지만!!
모바일, PC 및 콘솔, 최신 그래픽 응용 등 요즘 널리 사용되고 있는 포맷 방식은 ASTC 이다!
반응형
'Unity 개발 > 기술 향상' 카테고리의 다른 글
[WebGL] Google STT(Speech-to-Text) Unity WebGL에 적용하기 (3) | 2024.09.09 |
---|---|
[Unity] Google TTS (Text-To-Speechs) 적용 해보기 (1) | 2024.08.11 |
[Unity] 오클루전 컬링(Occlusion Culling) 이란? (0) | 2023.01.26 |
[Unity] 게임수학 - 삼각함수을 이용한 터치한 방향으로 공 팅기기 (0) | 2022.12.14 |
[Unity] 게임수학 - 삼각함수을 이용한 터치한 방향 바라보기 (0) | 2022.12.14 |