* Texture ์์ถ์ด ํ์ํ ์ด์ ?
GPU ์์ 1Pixel ๋น 32Bit ๋ฅผ ์ฐจ์งํ๋ค.
ํํ ์์ถ๋ฐฉ์์ผ๋ก PNG๋ JPG๋ฅผ ์ธ๊ธํ๋๋ฐ PNG ๋ JPG ์ด๋ฏธ์ง 1MB ์ง๋ฆฌ๋ฅผ GPU์ ์ฌ๋ฆฌ๋ฉด 32 Bit ๋ผ์ 4MB ๋ก ์ฌ๋ผ๊ฐ๋ค.
-> 4๋ฐฐ๊ฐ ๋๋ ๊ฒ.
PNG ๋ JPG ๋ ๋์คํฌ ์ ์ฅ๊ณต๊ฐ์ ์๋ผ๊ธฐ ์ํ ์์ถ๋ฐฉ์์ด์ง GPU ๊ณต๊ฐ์ ์๋ผ๊ธฐ ์ํ ์์ถ๋ฐฉ์์ด ์๋๋ค. GPU ์์ ์ฌ์ฉํ๋ ์์ถ๋ฐฉ์์ ์ฌ์ฉํด์ผ GPU ์ฌ์ฉ๊ณต๊ฐ์ ์ ์ฝํ ์ ์๋๊ฑฐ๋ค.
์ฆ, ๋น ๋ฅธ ๋์ฝ๋ฉ, ๋๋ค ์ก์ธ์ค, ์ธ์ฝ๋ฉ ์ํ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌ, ์ฌ์ด์ฆ ์ ์ฝ(๋ฉ๋ชจ๋ฆฌ, ์ ์ฅ์ฅ์น) ๋ฑ์ ์ํด GPU๋ฅผ ์ํ Texture Compression์ด ํ์ํ๋ค.
* ๊ฐ๋ณ ๋น์จ ์์ถ vs ๊ณ ์ ๋น์จ ์์ถ
1. ๊ฐ๋ณ ๋น์จ ์ธ์ฝ๋ฉ //์์ถ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋ณ ๋น์จ์ด๋ค.
1) RLE(Run-Length Encoding, ์คํ ๊ธธ์ด ์ธ์ฝ๋ฉ)
AAAABBBBCCCDDAAAAFFF (20๊ธธ์ด์ ๋ฌธ์๋ฅผ)
-> 4A4B3C2D4A3F (12๊ธธ์ด๋ก ์์ถ)
2. ๊ณ ์ ๋น์จ ์ธ์ฝ๋ฉ //Texture์์๋ ๊ณ ์ ๋น์จ ์ธ์ฝ๋ฉ์ด ํ์ํ๋ค.
๋๋ค ์ก์ธ์ค๋ฅผ ์ํด 4:1 8:1 16:1 ๋ฑ ๊ณ ์ ๋น์จ ์์ถ
1) DXT(DirectX Texture): ๋ธ๋ญ ๊ธฐ๋ฐ ์์ถ ๋ฐฉ๋ฒ
ํ ์ฅ์ ์ฌ์ง์ 4x4 ํฝ์ ๋ก ๋๋
์ด ์ค์ ๋์ชฝ ๋ธ๋ญ ํ๋์์ Key Color 2๊ฐ ๊ฒ์์, ๋นจ๊ฐ์์ ๋ฝ์ ์ ์๋ค.
์ด Key Color 2๊ฐ๋ฅผ ์์ ๋ DxT1(64 ๋นํธ)์ฌ์ฉ.
DXT1์ 64 ๋นํธ๋ฅผ 4x4๋ก ๋๋๋ ๋ฐฉ๋ฒ์ด๋ค. 64 / 4x4 = 4bit (ํ ํฝ์ ์ฌ์ฉ์ 4bit ๋ฐ์ ์ฌ์ฉ ์ํจ)
=> Key Color 2๊ฐ๋ฅผ ๋ฝ์์ ์กฐํฉํด์ ๋ง๋๋ ๋ฐฉ๋ฒ์ด๋ผ ์ด๋ฏธ์ง๊ฐ ๋ณต์กํ๋ฉด ๋ง์ด ๊นจ์ง ์ ์๋ค.
=> DXT๋ฅผ BC๋ผ๋ ์ฉ์ด๋ก ์ฌ์ฉํจ
* ๋ชจ๋ฐ์ผ์ ์ํ Compression ๋ฐฉ์๋ค
1) PVRTC(PVR Texture Compression): iOS์์ ๋ง์ด ์(์์ฆ์ ASTC๋ฅผ iOS/Android ๊ณตํต์ผ๋ก ์ฐ๊ธด ํจ)
2) DXT์์ ์ฐจ์ด์ ์ ์ข ๋ ๋ธ๋ฌ ์ฒ๋ฆฌ ๋๋ค๋ ๊ฒ. -> ํ ๋๋ฆฌ๊ฐ ๋ญ๊ฐ์ ธ์ ๋์์ด๋๋ค์ด ์ข์ํ์ง๋ ์์ใ
3) ETC(Edison Texture Compression): Android ์์ ๋ง์ด ์
: ์ฌ๋์ ๋์ด ์ฑ๋๋ณํ์ ๋๊ฐํ๊ณ ๋ฐ๊ธฐ๋ณํ์ ๋ฏผ๊ฐํ ๊ฒ์ ์ฐฉ์ํด์ ์ฑ๋๋ ์ ํด์๋, ๋ฐ๊ธฐ๋ ๊ณ ํด์๋๋ก ์ ์ฅํ๋ ๊ฒ.
ex. ETC1(4bpp), ETC2(4, 8bpp) -> ETC2๊ฐ 8bpp ๋๊น ๋ ์ฑ๋ฅ์ด ์ข์.
: ETC ํฌ๋งท์ Unity ์์ Crunched ๋ชจ๋๊ฐ ์์. ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ์๋๊ณ ๋์คํฌ ์ ์ฝ์ ์ํด. ๋ก๋ฉ ๋ ์์ถํธ๋ ๊ณผ์ ์ด ํ๋ฒ ๋ ๋ค์ด๊ฐ.
3) ASTC(Aductive, Scalable Texture Compression): Android, iOS ๋ชจ๋ ์ง์. ํต์ผ !
: Block ์ฌ์ด์ฆ๋ฅผ ์ง์ ํ ์ ์์. ์์ ํฌ๋งท์ 4x4๋ก ๊ณ ์ ์.
: 4x4 -> 12x12๋ก ๊ฐ์๋ก ์ฑ๋ฅ์ ๋จ์ด์ง. ์ด๋ฏธ์ง๋ 4x4, ํํฐํด์ 12x12๋ก ์ ์ฐํ๊ฒ ์์ ๊ฐ๋ฅ.
ASTC 4x4๋ ์๋ณธ์ด๋ ๊ฑฐ์ ๋์ผํ ๊ฒ์ ํ์ธํ ์ ์์.
ETC์ ASTC 6x6์ด ์ฑ๋ฅ์ด ๋น์ทํ๋ฐ ์ฉ๋์ฐจ์ด๊ฐ ํฌ๊ฒ ๋๋ค.
์ง์๋๋ Google Paly ๊ธฐ๊ธฐ์ ๋น์จ 77%.
๋๋จ์๊น์ง ๊ฑฐ์ ์ปค๋ฒ๊ฐ๋ฅํ ์ ๋์ด๊ธฐ์ ์ ํฅ๊ตญ์ ํ๊ฒ์์ฅ์ ์ ์ธํ๊ณค ๋ค ASTC๋ฅผ ์ง์ํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
์ฑ๋ฅ ๋น๊ตํ ํ! ๋น์ทํ๊ฑธ๋ก ์ฉ๋ ๋น๊ตํด์ ์ฐ๋ฉด ๋๋ค.
* ์ฐธ๊ณ ์์
* Unity Documentation
https://docs.unity3d.com/kr/2023.2/Manual/class-TextureImporterOverride.html
* ์ ์ ๋ฆฌํด ๋์ Tistroy
'๐ฎ Unity Study > Unity' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Unity] ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ํ ์์ ๊ด๋ฆฌ (2) | 2023.04.17 |
---|---|
[Unity] IL2CPP, Mono, JIT (1) | 2023.04.17 |
[Unity] Scriptable Object ์ฌ์ฉ๋ฒ, ์ฅ์ (0) | 2023.04.12 |
[Unity] Editor Programming (0) | 2023.03.28 |
[Unity] Advanced InputField ์ฌ์ฉ๋ฒ (0) | 2023.02.01 |