1. BMP
BMP 파일 포맷은 비트맵 디지털 그림을 저장하는 데 쓰이는 그림 파일 포맷이다 BMP는 말그대로 Bit 들의 Map이고, 오래된 이미지 포맷이다. 압축을 전혀 하지 않기 때문에 BMP로 저장하면 매우 큰 사이즈로 저장이 된다.
BMP는 Indexed color, Direct color 속성을 가지고 있다. 그러나 파일 사이즈가 불필요하게 커서 이 포맷은 많이 사용되지 않지만 디코딩 할 것이 별로 없어 속도가 빠르다는 장점이 있다.
기본적으로 1~24비트의 색을 표현할 수 있다. 1비트는 2가지 색이며 24비트는 16777216가지 색이다. 알파 채널을 포함한 32비트 포맷이 윈도 XP에서 발표되었다. 일반적으로 데이터를 압축하지 않고 사용되지만, RLE 압축 방식도 지원한다.
장점 : 처리 속도가 빠르다.
단점 : 용량이 매우 크다
2. PNG 압축
손실 압축의 대표적인 포맷이 jpg라면 비손실 압축 방법의 대표적인 예는 png 가있다.
무손실 압축으로 이미지 디테일 손실이 전혀없고 고품질 이미지를 생성하지만 파일 크기는 상대적으로 다른 포맷보다 커진다.
PNG 는 트루 컬러(8비트)를 지원하기 때문에 R,G,B 각각 8비트(1바이트)씩 할당하게 된다. 이러한 RGB를 배합해 1픽셀을 갖게된다. 즉, R(2^8) * G(2^8) * B(2^8) = 2^24(16,777,216)개의 색을 지원한다.
PNG에서는 이러한 개념을 바탕으로 PNG-8(256색)과 PNG-24(16,777,216색), PNG-32(16,777,216색)로 나뉘는데 PNG-8에서는 256개의 칸을가진 색 팔레트를 이용한 것으로 256색까지만 표현이 가능하다. png-32 = 2의 24승 대략 1670만 컬러 (트루컬러) + alpha(8bit)가 할당이 된다.
이러한 비손실의 특성 때문에 PNG 파일은 배경이 투명해 없을 수 있지만 JPG는 배경이 투명 할 수 없다.
장점 : 투명도 사용 가능, 비손실 압축.
단점 : jpg에 비해 상대적으로 느린 압축속도, 조금 더 큰 용량.
3. JPG
사실 jpg와 jpeg는 같은 의미이다.
jpg는 3글자, jpeg는 4글자인데 도스(DOS)에서는 확장자를 4자리 이상 지정할 수 없었기 때문에 jpeg라는 글자를 jpg로 줄여 사용하게 되었다. 이러한 jpg는 손실 압축방법의 대표적인 예이다.
jpg는 데이터가 손실되지만 용량이 작아 웹에서 널리 쓰인다. 하지만 JPG는 RGB색상 공간을 사용하기때문에 투명도(Apaque)를 사용할 수 없다.
장점 : 빠른 압축속도.
단점 : 투명도 사용 불가능, 손실 압축.
JPG와 PNG로 압축된 텍스쳐를 그래픽카드에 올릴때는 다시 압축되지 않은 상태로 원복되어 올라가지 때문에 압축이 무의미. JPG와 PNG의 압축방식은 디스크에 저장되는 용량을 줄이기위한 압축. 메모리 효율과는 무관하다.
그래픽카드의 메모리에 올라가서 렌더링에 사용되는 것을 텍스쳐라 부르고 텍스쳐의 값은 UV좌표계를 통해 색깔값에 접근하게 된다. 이때 텍스쳐의 색깔값에 엄청난 횟수로 접근하게 되기때문에 UV를 통한 텍스쳐의 색깔값 접근에는 굉장히 빠른 속도를 요구하게된다.
텍스쳐 압축의 필수조건
- 빠른 디코딩: 메모리에는 압축된상태로 텍스쳐가 올라가기 때문에 빠른 압축해제가 가능해야한다.
- 랜덤 액세스: UV를 통한 텍스쳐 색깔값의 접근은 순차적으로 일어나지않고 UV의 값에 따라 랜덤하게 일어난다고 볼 수 있다. 그래서 이런 접근이 용이해야한다.
- 인코딩 상태로 메모리에 존재: 텍스쳐는 압축된 상태로 메모리에 존재한다.
- 사이즈 절약(메모리, 저장장치): 압축된 형태의 텍스쳐는 사이즈 절약이 가능해야한다.
텍스쳐 압축의 이런 조건들 때문에 텍스쳐 압축 전용 포맷이 존재한다.
1. RLE
: 가장 기본적인 압축방식. DXT가 가장 대표적인 텍스쳐포맷.
RLE (Run-Length Encoding)은 데이터를 압축하는 데 사용되는 간단한 압축 알고리즘 중 하나. 이 알고리즘은 연속되는 동일한 데이터 값들을 그룹화하여 저장하는 방식으로 작동한다. RLE 압축은 주로 이미지나 텍스트와 같은 데이터를 압축하는 데 사용된다.
RLE 압축은 다음과 같은 원리로 작동한다
1) 데이터를 왼쪽에서 오른쪽으로 스캔합니다.
2) 연속된 동일한 값들을 찾습니다.
3) 동일한 값들의 연속된 런(런 길이)을 카운트합니다.
4) 런의 길이와 해당 값으로 대체합니다. 예를 들어, "AAAAABBBCCDAA"는
5) "5A3B2C1D2A"로 압축될 수 있습니다.
RLE의 간단한 구조 때문에 데이터에 연속적인 패턴이 많을 때 효과적으로 압축된다. 그러나 무작위 데이터나 빈번한 값의 변화가 있는 데이터에는 효과적이지 않을 수 있다. 또한, RLE은 압축된 데이터의 크기를 줄이는 데 중복 데이터가 많이 있을 때 가장 효과적이다.
예를 들어, 단일 문자열에서 반복되는 문자가 많을 경우 RLE 압축은 원래 데이터보다 훨씬 작은 저장 공간을 요구할 수 있다. 그러나 무작위한 문자열이나 압축이 거의 이루어지지 않는 데이터의 경우 압축 효과가 미미할 수 있다.
RLE은 간단하고 빠르게 구현할 수 있으며, 몇 가지 특수한 경우에 유용하게 사용된다. 그러나 고급 데이터 압축 알고리즘에 비하면 압축률이 낮기 때문에 데이터의 특성을 고려하여 적절한 압축 알고리즘을 선택하는 것이 중요.
2. DXT 혹은 BC1
DXT 압축은 그래픽 데이터를 효율적으로 압축하기 위한 텍스처 압축 형식 중 하나. 주로 게임 엔진 및 3D 그래픽 애플리케이션에서 사용되며, GPU에서 빠르게 해독될 수 있는 형식. DXT 압축은 여러 가지 버전이 있으며, 주로 DXT1, DXT3, DXT5와 같은 다양한 형식이 사용된다. 이러한 형식은 텍스처 이미지의 품질과 파일 크기 간의 트레이드오프를 조절하기 위해 선택된다.
DXT 압축의 주요 특징
1)블록 압축: DXT는 이미지를 4x4 픽셀 블록으로 나누고 각 블록을 독립적으로 처리합니다. 이것은 병렬 처리 및 GPU에서 빠르게 처리할 수 있는 이점을 제공합니다.
2)색상 압축: DXT는 RGB 색상 데이터를 압축하기 위해 사용됩니다. DXT1 형식은 압축된 이미지에서 투명도(알파 채널)를 지원하지 않고, DXT3 및 DXT5는 투명도를 처리하는 데 사용됩니다.
3)손실 압축: DXT는 손실 압축 형식입니다. 이것은 원본 이미지와 DXT로 압축된 이미지 간의 일부 세부 정보가 손실될 수 있다는 것을 의미합니다. 그러나 대부분의 경우 시각적으로 미미한 손실만 발생하며, 파일 크기를 크게 줄일 수 있습니다.
4)텍스처 압축: 주로 3D 모델의 텍스처 데이터를 압축하는 데 사용됩니다. 특히 게임 개발에서 공간과 성능을 절약하는 데 중요한 역할을 합니다.
DXT 형식은 주로 게임 개발에서 사용되며, GPU 하드웨어에서 하드웨어 가속을 받을 수 있어서 렌더링 성능을 향상시킬 수 있다. 그러나 이미지의 세부 정보가 중요한 경우에는 손실 압축이기 때문에 이미지 품질에 영향을 미칠 수 있다. 이러한 이유로 DXT 압축은 주로 텍스처와 같이 세부 정보가 상대적으로 중요하지 않은 그래픽 데이터에 사용된다.
DXT 압축은 텍스처 이미지를 압축하기 위한 절차
1) 텍스처 이미지 분할: 먼저 텍스처 이미지를 작은 블록으로 나눕니다. 일반적으로 4x4 픽셀 크기의 블록으로 이미지를 분할합니다. 이것은 압축을 적용할 작은 단위를 생성하는 첫 번째 단계입니다.
2) 색상 팔레트 생성: 각 블록 내에서 사용된 색상을 분석하여 색상 팔레트를 생성합니다. 이 팔레트에는 최대 4개의 색상이 포함됩니다. 팔레트에 색상을 저장할 때, 각 색상은 RGB 또는 RGBA 형식으로 저장됩니다.
3) 블록 내 차이 색상 인코딩: 이제 각 픽셀의 실제 색상 값을 팔레트에 가장 가까운 색상으로 대체하고, 각 픽셀의 차이를 계산합니다. 이 차이는 블록 내의 각 픽셀마다 저장됩니다. 차이는 원래 색상과 대체된 색상 사이의 차이를 나타냅니다.
4) 압축된 블록 생성: 각 블록에서 생성된 색상 팔레트와 차이 색상 데이터를 사용하여 DXT 형식의 압축된 블록을 생성합니다. 이 압축된 블록은 일련의 비트로 저장되며, 각 비트는 색상 팔레트 및 차이 정보를 나타냅니다. DXT1, DXT3, DXT5 등의 서로 다른 DXT 형식이 있으며, 어떤 형식을 사용할지는 투명도 및 디테일 수준에 따라 다릅니다.
5) 압축된 블록 저장: 압축된 블록은 파일에 저장되거나 메모리에 유지됩니다. 이 단계에서 여러 블록을 모두 압축하여 전체 텍스처를 생성합니다.
6)런타임에서 디코딩: 런타임 시에 GPU 또는 그래픽 하드웨어에서 텍스처를 렌더링하기 전에 압축된 블록을 디코딩합니다. 디코딩 프로세스에서는 색상 팔레트와 차이 데이터를 사용하여 원래의 색상 값을 재구성합니다.
이런 식으로 DXT 압축은 텍스처 이미지를 작은 블록으로 나누고, 각 블록 내에서 색상 팔레트와 차이 색상 데이터를 사용하여 압축을 수행하며, 이것은 3D 그래픽 애플리케이션에서 빠르고 효율적인 렌더링을 지원한다.
BC1 압축은 DXT1 압축과 동일한 것을 나타내는 용어. BC1과 DXT1은 실제로 같은 그래픽 텍스처 압축 형식을 가리킨다. BC1은 "Block Compression 1"의 약자이며, DXT1은 Microsoft DirectX에서 처음 도입된 이름. BC1/DXT1는 텍스처 이미지를 블록 기반으로 압축하는 형식으로, RGB 색상 데이터와 1비트의 알파 채널을 지원하는 손실 압축 형식.
따라서 BC1 압축과 DXT1 압축은 동일한 알고리즘을 사용하며, 두 용어는 대체로 상호 교환 가능. 주로 플랫폼이나 그래픽 엔진에서 사용하는 용어의 차이일 뿐이다. DirectX를 사용하는 경우 DXT1이라는 용어가 더 일반적이지만, OpenGL 및 Vulkan과 같은 다른 그래픽 API에서는 BC1이라는 용어를 사용할 수 있다. 기술적으로 둘 다 같은 형식을 가리킨다.
3. PVRTC
아이폰에서의 텍스쳐 압축.
PVRTC (PowerVR Texture Compression)는 Imagination Technologies에서 개발한 그래픽 텍스처 압축 형식. PVRTC 압축은 모바일 기기와 임베디드 시스템에서 주로 사용되며, PowerVR 그래픽 칩셋을 기반으로 한 장치에서 효율적으로 렌더링되도록 설계.
PVRTC 압축에 관한 주요 특징과 원리
1) 블록 기반 압축: PVRTC는 텍스처 이미지를 작은 블록으로 분할하고 각 블록을 개별적으로 압축합니다. 이러한 블록은 크기와 압축 형식에 따라 다양한 PVRTC 버전으로 구분됩니다.
2) 색상 및 알파 채널 압축: PVRTC는 색상 데이터와 선택적으로 알파 채널 데이터를 모두 압축합니다. 이것은 텍스처 이미지의 색상 정보뿐만 아니라 투명도 정보도 효율적으로 저장할 수 있음을 의미합니다.
3) 2비트 또는 4비트 압축: PVRTC는 2비트 또는 4비트 두 가지 주요 버전이 있습니다. 2비트 PVRTC는 높은 압축률을 제공하지만 상대적으로 낮은 품질의 결과물을 생성하며, 4비트 PVRTC는 높은 품질을 유지하면서 압축률을 조절할 수 있습니다.
4) 텍스처 크기와 압축률의 트레이드오프: PVRTC에서는 텍스처 크기와 압축률 사이에 트레이드오프가 존재합니다. 높은 압축률을 원할 경우 텍스처의 해상도를 낮추는 것이 필요할 수 있습니다.
5) 모바일 및 임베디드 환경에 최적화: PVRTC는 모바일 기기와 임베디드 시스템에서 사용하기 위해 최적화되어 있으며, PowerVR 그래픽 하드웨어와 원활하게 통합됩니다. 이로 인해 PVRTC로 압축된 텍스처는 효율적으로 렌더링되어 그래픽 성능을 향상시킬 수 있습니다.
PVRTC 압축은 특히 모바일 게임 개발자와 모바일 그래픽스 애플리케이션 개발자에게 중요한 옵션 중 하나이며, 모바일 플랫폼에서의 성능 및 메모리 효율성을 향상시키는 데 도움을 준다.
PVRTC 압축의 주요 단계와 압축 순서
1) 텍스처 분할: PVRTC는 텍스처 이미지를 블록으로 분할합니다. 일반적으로 4x4 픽셀 크기의 블록으로 이미지가 분할됩니다.
2) 색상 블록 압축: a. 색상 클러스터링: 각 블록 내에서 사용된 색상을 분석하고 비슷한 색상을 클러스터링합니다. 이 클러스터링된 색상들을 대표 색상으로 선택합니다. b. 색상 인코딩: 클러스터링된 대표 색상 중에서 최대 4개의 색상을 선택하고, 이를 기반으로 각 픽셀의 색상 값을 표현합니다. 이 색상 정보를 이용해 텍스처의 색상을 대체하고 압축합니다.
3) 알파 채널 압축: a. 알파 클러스터링: 투명도(알파 채널) 정보를 블록 내에서 분석하고 클러스터링하여 비슷한 투명도 값을 그룹화합니다. b. 알파 인코딩: 클러스터링된 투명도 값을 기반으로 각 픽셀의 투명도 정보를 표현합니다.
4) 블록 압축: 각 블록에서 생성된 색상 정보와 알파 정보를 사용하여 PVRTC 형식의 압축된 블록을 생성합니다. 이 압축된 블록은 일련의 비트로 저장됩니다.
5) 텍스처 크기 및 압축률 조정: PVRTC에서는 텍스처 크기와 압축률 사이의 트레이드오프를 조절할 수 있습니다. 높은 압축률을 원할 경우 텍스처 해상도를 낮추는 등의 조치가 필요할 수 있습니다.
6) 압축된 블록 저장: 압축된 블록은 텍스처 파일에 저장되거나 메모리에 유지됩니다.
7) 런타임에서 디코딩: 런타임 시에 GPU 또는 그래픽 하드웨어에서 PVRTC로 압축된 텍스처를 디코딩하여 원래의 색상과 투명도를 재구성하고, 화면에 표시할 때 사용됩니다.
PVRTC 압축은 모바일 기기 및 임베디드 시스템에서 사용되며, 그래픽 텍스처의 압축 및 렌더링 성능을 향상시키기 위한 중요한 기술 중 하나.
DXT1과 PVRTC의 차이점
DXT1 압축과 PVRTC (PowerVR Texture Compression) 압축은 둘 다 그래픽 텍스처를 압축하기 위한 형식이지만, 서로 다른 알고리즘과 특성을 가지고 있으며 다른 하드웨어 및 플랫폼에서 주로 사용된다.
1. **개발자 및 하드웨어**:
- DXT1 압축은 Microsoft DirectX 플랫폼 및 DirectX 호환 그래픽 하드웨어에서 주로 사용됩니다.
- PVRTC 압축은 Imagination Technologies의 PowerVR 그래픽 하드웨어 및 iOS 기기와 일부 Android 기기에서 주로 사용됩니다.
2. **색상 및 알파 처리**:
- DXT1은 색상 정보만을 압축하고 투명도(알파 채널) 정보를 처리하지 않습니다. 따라서 DXT1로 압축된 텍스처는 투명도가 있는 이미지에는 적합하지 않을 수 있습니다.
- PVRTC는 색상과 투명도 데이터를 동시에 압축할 수 있습니다. 이로써 투명도가 있는 이미지도 효과적으로 압축할 수 있습니다.
3. **비트 수**:
- DXT1은 색상 정보를 565 비트 포맷으로 압축합니다. 따라서 색상 품질이 높은 경우에도 일부 색상 세부 정보를 잃을 수 있습니다.
- PVRTC는 두 가지 주요 버전, 2비트 및 4비트,를 제공하며 더 높은 비트 수를 사용하여 품질을 높일 수 있습니다.
4. **하드웨어 성능 및 최적화**:
- DXT1 압축은 DirectX 호환 하드웨어에서 효율적으로 처리됩니다.
- PVRTC는 PowerVR 그래픽 하드웨어에서 최적화되어 있으며 iOS 기기와 함께 작동할 때 최상의 성능을 제공합니다.
5. **해상도 및 압축률 조정**:
- DXT1 및 PVRTC 모두 텍스처 해상도와 압축률 사이에 트레이드오프를 조절할 수 있습니다. 높은 압축률을 원할 경우 텍스처 해상도를 줄일 수 있습니다.
6. **지원 플랫폼**:
- DXT1은 Windows 및 Xbox와 같은 Microsoft 플랫폼에서 널리 사용됩니다.
- PVRTC는 iOS 기기 및 PowerVR 그래픽 하드웨어를 지원하는 Android 기기에서 주로 사용됩니다.
따라서 DXT1과 PVRTC는 주로 사용되는 플랫폼 및 하드웨어에 따라 선택해야 하는 서로 다른 압축 형식. 선택은 개발 대상 플랫폼과 성능, 이미지 품질 요구 사항에 따라 달라진다.
4. ETC
사람의 인지가 밝기변화에는 민감하고 채도변화에는 둔감한 점을 이용한 방식. 기본 생상은 저해상도로 저장하고 밝기변화만 고해상도로 저장.
ETC (Ericsson Texture Compression)는 모바일 기기 및 임베디드 시스템에서 사용하기 위해 에릭슨 (Ericsson)에서 개발한 그래픽 텍스처 압축 형식. ETC는 주로 Android 플랫폼에서 사용되며, 그래픽 텍스처의 압축과 전송을 효율적으로 처리하는 데 도움을 준다.
ETC 압축의 주요 특징과 원리
1) 블록 기반 압축: ETC는 텍스처 이미지를 작은 블록으로 분할하고, 각 블록을 개별적으로 처리하여 압축합니다. 일반적으로 4x4 픽셀 크기의 블록을 사용합니다.
2) 색상 압축: ETC는 주로 색상 데이터를 압축하기 위한 형식입니다. 각 블록 내에서 사용된 색상을 분석하고, 색상 클러스터링과 색상 인코딩을 통해 색상 정보를 효율적으로 표현합니다.
3) 색상 클러스터링: 각 블록 내에서 사용된 색상을 클러스터링하여 비슷한 색상을 그룹화하고 대표 색상을 선택합니다. 이렇게 생성된 대표 색상을 사용하여 텍스처의 색상을 나타냅니다.
4) 색상 인코딩: 대표 색상을 기반으로 각 픽셀의 색상 값을 표현합니다. 이 과정에서 원래 색상과의 차이를 저장하며, 이것이 압축된 데이터로 저장됩니다.
5) 압축된 블록 저장: 각 블록은 압축된 형태로 파일에 저장되거나 메모리에 유지됩니다.
6) 트레이드오프: ETC에서는 텍스처 크기와 압축률 사이의 트레이드오프를 조절할 수 있습니다. 높은 압축률을 원할 경우 텍스처 해상도를 낮추는 등의 조치가 필요할 수 있습니다.
7) 런타임에서 디코딩: 런타임 시에 GPU 또는 그래픽 하드웨어에서 ETC로 압축된 텍스처를 디코딩하여 원래의 색상 정보를 복원하고, 화면에 표시할 때 사용됩니다.
ETC 압축은 주로 Android 기반 모바일 기기에서 사용되며, 효율적인 메모리 사용과 렌더링 성능을 위해 그래픽 텍스처를 압축하는 데 사용된다.
5. ASTC
대표 컬러를 사용해서 가중치를 적용하여 압축하는 방식은 DXT나 ETC와 동일. 블럭마다 모드를 다르게 적용이 가능. 가장 효율이 좋고 추천되는 방식. 최신 기기에서는 대부분 지원한다.
ASTC압축은 내부에서 블록의 형태를 패턴화하여 저장한다.
패턴화되어 저장된 각 블록의 모습
ASTC (Adaptive Scalable Texture Compression)는 모바일 기기와 게임 콘솔에서 사용하기 위한 혁신적인 그래픽 텍스처 압축 형식. ASTC는 여러 플랫폼에서 높은 압축률, 뛰어난 이미지 품질, 그리고 다양한 해상도에 대한 지원을 제공하는 주요 텍스처 압축 기술 중 하나.
ASTC 압축의 주요 특징과 원리
1) 컨텍스트 적응성: ASTC는 "Adaptive"이라는 단어에서 알 수 있듯이, 텍스처의 컨텍스트에 따라 압축 알고리즘을 조정하는 기술입니다. 이는 텍스처의 세부 내용과 요구 사항에 따라 최적의 압축 품질과 압축률을 유지하도록 선택적으로 조절됩니다.
2) 다양한 비트 속성: ASTC는 다양한 비트 속성(예: 4비트, 5비트, 6비트 등)을 지원하며, 이를 통해 압축률과 품질을 미세하게 조절할 수 있습니다. 이것은 텍스처의 특성에 따라 최적의 설정을 선택할 수 있음을 의미합니다.
3) 다중 해상도 지원: ASTC는 서로 다른 해상도의 텍스처에 대한 지원을 제공합니다. 이는 하나의 텍스처 형식을 사용하여 다양한 디스플레이 해상도에 대응할 수 있음을 의미하며, 게임 또는 애플리케이션의 다양한 환경에서 더 효율적인 자원 사용을 가능하게 합니다.
4) 알파 채널 지원: ASTC는 색상 정보 뿐만 아니라 알파 채널(투명도 정보)을 효과적으로 압축할 수 있습니다. 따라서 반투명 및 투명한 이미지를 다룰 때도 품질과 압축률 면에서 뛰어난 성능을 제공합니다.
5) 품질과 성능 균형: ASTC는 압축률을 높이면서도 높은 이미지 품질을 유지할 수 있습니다. 이는 모바일 기기 및 게임 콘솔에서 성능과 메모리 효율성을 향상시키는 데 도움이 됩니다.
6) 국제 표준: ASTC는 Khronos 그룹이 제정한 국제 표준으로, 여러 그래픽 하드웨어 및 플랫폼에서 널리 지원됩니다.
ASTC는 모바일 게임 개발 및 모바일 그래픽 애플리케이션에서 텍스처 압축과 렌더링 성능을 향상시키는 데 중요한 역할을 한다. 압축률과 이미지 품질을 최적화하여 사용자 경험을 향상시키고 메모리 사용을 최소화하는 데 도움을 준다.
STC 압축의 주요 단계와 과정
1) 텍스처 분할:
- 먼저 텍스처 이미지는 작은 블록으로 분할됩니다. 일반적으로 4x4 픽셀 크기의 블록이 사용됩니다.
- 텍스처가 더 큰 경우, 블록은 더 많은 수로 분할됩니다.
2) 블록 내부 픽셀 분석:
- 각 블록 내부에서 사용된 색상 및 알파 (투명도) 데이터를 분석합니다.
3) 색상 정보의 클러스터링:
- 각 블록 내에서 사용된 색상을 그룹화하고 유사한 색상을 클러스터로 만듭니다.
- 클러스터링은 색상 다양성을 줄이고 압축률을 높이는 데 도움을 줍니다.
- 클러스터에는 대표 색상과 해당 클러스터의 픽셀이 포함됩니다.
4) 색상 인코딩:
- 대표 색상을 선택하고, 각 픽셀은 해당 대표 색상과의 차이를 나타내는 비트로 표현됩니다.
- 이 비트 정보는 텍스처에서 해당 픽셀의 색상을 복원하는 데 사용됩니다.
5) 압축된 블록 생성:
- 색상 정보 및 알파 정보를 포함한 각 블록은 ASTC 압축 형식으로 압축됩니다.
- ASTC는 다양한 비트 수 및 설정을 지원하며, 압축률과 품질 사이의 트레이드오프를 조절할 수 있습니다.
6) 압축된 블록 저장:
- 압축된 블록은 텍스처 파일에 저장되거나 메모리에 유지됩니다.
7) 런타임에서 디코딩:
- 런타임 시에 GPU 또는 그래픽 하드웨어에서 ASTC로 압축된 텍스처를 디코딩합니다.
- 디코딩 프로세스에서 색상 정보와 알파 정보가 다시 복원되고, 화면에 텍스처를 렌더링할 때 사용됩니다.
'3D Rendering' 카테고리의 다른 글
알베도 텍스쳐 (0) | 2023.10.04 |
---|---|
텍스쳐 포맷과 픽셀 포맷 (0) | 2023.10.04 |
메모리 (0) | 2023.09.29 |
Drawcall (1) | 2023.09.29 |
Light map (0) | 2023.09.29 |