iOS ์•ฑ ๊ฐœ๋ฐœ์˜ ๋งฅ๋ฝ์—์„œ Metal์€ ๊ฐœ๋ฐœ์ž๊ฐ€ GPU๋ฅผ ํฌํ•จํ•œ ์ตœ์‹  Apple ํ•˜๋“œ์›จ์–ด์˜ ์ž ์žฌ๋ ฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๊ณ ์„ฑ๋Šฅ, ํ•˜์œ„ ์ˆ˜์ค€ ๊ทธ๋ž˜ํ”ฝ ๋ฐ ๋ณ‘๋ ฌ ๊ณ„์‚ฐ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ GPU ํ•˜๋“œ์›จ์–ด์— ๋†€๋ผ์šธ ์ •๋„๋กœ ๊ฐ€๊นŒ์›Œ์งˆ ์ˆ˜ ์žˆ๋„๋ก ๊ฐ„์†Œํ™”๋˜๊ณ  ํšจ์œจ์ ์ธ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 2014๋…„ Apple์ด ๋„์ž…ํ•œ Metal ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ฒ˜์Œ์—๋Š” iOS ์žฅ์น˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ–ˆ์ง€๋งŒ ๋‚˜์ค‘์— macOS, watchOS ๋ฐ tvOS ์žฅ์น˜๋กœ ์ง€์›์„ ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. Metal์˜ ํš๊ธฐ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” 2D ๋ฐ 3D ๊ฒŒ์ž„, ์‹œ๊ฐํ™” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๊ธฐํƒ€ ์„ฑ๋Šฅ ์ง‘์•ฝ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์œ„ํ•œ ์ „๋ ฅ ํšจ์œจ์ ์ธ ๊ณ ํ’ˆ์งˆ ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž์™€ ์ตœ์ข… ์‚ฌ์šฉ์ž ๋ชจ๋‘์—๊ฒŒ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Metal์€ ์ด๊ธฐ์ข… ์ปดํ“จํŒ…์ด๋ผ๋Š” ๊ฐœ๋…์ธ CPU์™€ GPU์˜ ๊ณ„์‚ฐ ๋Šฅ๋ ฅ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ๋”์šฑ ๊ฐ€์†ํ™”ํ•ฉ๋‹ˆ๋‹ค. Metal์˜ ์ฃผ์š” ๊ฐ•์ ์€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋‚ฎ์•„ ์ž‘์—… ๋ถ€ํ•˜๋ฅผ GPU๋กœ ์ „์†กํ•˜๊ธฐ ์ „์— CPU๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…๋Ÿ‰์„ ์ค„์—ฌ์ค€๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ Metal์€ ๋ Œ๋”๋ง, ์ฒ˜๋ฆฌ ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์˜ ๋ฐœ์ „์„ ํ†ตํ•ด ๋ชจ๋“  Apple ํ”Œ๋žซํผ์—์„œ ๊ณ ๋„๋กœ ์ตœ์ ํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ๊ณผ ์‘๋‹ต์„ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

Metal ์„ฑ๋Šฅ์˜ ์ฃผ์š” ํ˜์‹ ์€ ๋“œ๋ผ์ด๋ฒ„ ์˜ค๋ฒ„ํ—ค๋“œ์˜ ํšจ๊ณผ์ ์ธ ๊ฐ์†Œ์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด OpenGL ๋ฐ OpenGL ES ๊ธฐ์ˆ ์—์„œ๋Š” ๋†’์€ ๋“œ๋ผ์ด๋ฒ„ ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์ธํ•ด ์ž ์žฌ์ ์ธ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์—ฌ ๊ทธ๋ž˜ํ”ฝ ์ง‘์•ฝ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค. Metal์€ ๊ฐœ๋ฐœ์ž์˜ ์ฝ”๋“œ์™€ GPU ์‚ฌ์ด์— ์ง์ ‘์ ์œผ๋กœ ๋กœ์šฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ์ •๋ฉด์œผ๋กœ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด ์ตœ์ ํ™”๋œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•ด Metal์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‘๋‹ต์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  GPU ๋ฆฌ์†Œ์Šค๋ฅผ ์Šค๋งˆํŠธํ•˜๊ฒŒ ํ• ๋‹นํ•˜์—ฌ ๊ทธ๋ž˜ํ”ฝ ๋ฐ ์ปดํ“จํŒ… ๊ธฐ๋ฐ˜ ์ž‘์—…์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

AppMaster ์—์„œ๋Š” ๊ณ ๊ฐ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ณ ํ’ˆ์งˆ์˜ ํšจ์œจ์ ์ธ ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง์„ ์ œ๊ณตํ•˜๋Š” Metal์˜ ์ž ์žฌ๋ ฅ์„ ์ธ์‹ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Metal์ด ์ œ๊ณตํ•˜๋Š” ์ด์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด Android์šฉ Kotlin ๋ฐ Jetpack Compose ์™€ iOS์šฉ SwiftUI ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ AppMaster ์˜ ๊ฐ•๋ ฅํ•œ ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด ๊ณ ๊ฐ์€ ์›ํ™œํ•˜๊ณ  ์„ฑ๋Šฅ ์ค‘์‹ฌ์˜ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Metal์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•จ์œผ๋กœ์จ AppMaster ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ์‹œ๊ฐ์ ์œผ๋กœ ๋†€๋ผ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

iOS ์•ฑ ๊ฐœ๋ฐœ์— ์ ํ•ฉํ•œ Metal์˜ ์ฃผ๋ชฉํ• ๋งŒํ•œ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ํ†ตํ•ฉ ๊ทธ๋ž˜ํ”ฝ ๋ฐ ์ปดํ“จํŒ… ์…ฐ์ด๋”ฉ ์–ธ์–ด: MSL(Metal Shading Language)์€ ๊ทธ๋ž˜ํ”ฝ ๋ฐ ์ปดํ“จํŒ… ์›Œํฌ๋กœ๋“œ ๋ชจ๋‘์— ๋Œ€ํ•ด ์…ฐ์ด๋”๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” C++11 ๊ธฐ๋ฐ˜ ๋‹จ์ผ ์†Œ์Šค ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ด ํ†ตํ•ฉ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ๊ณ ์„ฑ๋Šฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ์˜ ๋ณต์žก์„ฑ์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

2. ํšจ์œจ์ ์ธ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ: Metal์˜ API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋Œ€๊ธฐ์—ด์—์„œ ๋…๋ฆฝ์ ์ธ ์ž‘์—…์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ œ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๋ช…๋ น ๋ฒ„ํผ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํšจ์œจ์ ์ธ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ GPU์˜ ์ž ์žฌ๋ ฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

3. GPU ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง: Metal์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ Œ๋”๋ง ์ž‘์—…์— ๋Œ€ํ•œ ์„ธ๋ฐ€ํ•œ ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ICB(๊ฐ„์ ‘ ๋ช…๋ น ๋ฒ„ํผ)๋กœ ์•Œ๋ ค์ง„ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด GPU๊ฐ€ ๋ Œ๋”๋ง ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ CPU ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ค„์–ด๋“ค๊ณ  ์ „๋ฐ˜์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

4. ์„ธ๋ถ„ํ™”๋œ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ: Metal์€ ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Resource Heaps ๋ฐ Fences๋ผ๋Š” ์ƒˆ๋กœ์šด ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋„์ž…ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ ์„ฑ๋Šฅ์— ๋งž๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ASTC(Adaptive Scalable Texture Compression): ASTC๋Š” ๋กœ์—ดํ‹ฐ๊ฐ€ ์—†๊ณ  ๊ด‘๋ฒ”์œ„ํ•œ ํ’ˆ์งˆ ๋ฐ ๋น„ํŠธ ์ „์†ก๋ฅ  ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ๊ณ ๊ธ‰ ๋ธ”๋ก ๊ธฐ๋ฐ˜ ํ…์Šค์ฒ˜ ์••์ถ• ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. Metal์€ ASTC๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•˜๋ฏ€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ๊ฐ์†Œ, ์—๋„ˆ์ง€ ํšจ์œจ์„ฑ ๋ฐ ๋” ๋‚˜์€ ํ…์Šค์ฒ˜ ํ’ˆ์งˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Metal ์ธ์•ฑ ๊ฐœ๋ฐœ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” Apple ํ•˜๋“œ์›จ์–ด์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค์–‘ํ•œ Apple ํ”Œ๋žซํผ์—์„œ ์ตœ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Metal์„ AppMasterno-code ํ”Œ๋žซํผ์— ํ†ตํ•ฉํ•จ์œผ๋กœ์จ ์šฐ๋ฆฌ๋Š” ๊ณ ๊ฐ์—๊ฒŒ ์‹œ๊ฐ์ ์œผ๋กœ ๋งค๋ ฅ์ ์ด๊ณ  ๋น ๋ฅด๋ฉฐ ์ตœ๊ณ  ํ’ˆ์งˆ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋”์šฑ ๋งค๋ ฅ์ ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹ ๋ขฐ์„ฑ์ด ๋งค์šฐ ๋†’์œผ๋ฉฐ ๊ธฐ์—… ๋˜๋Š” ๊ณ ๋ถ€ํ•˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ณ ์„ฑ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ๊ณผ์ค‘ํ•œ ์ž‘์—… ๋ถ€ํ•˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

AppMaster ์˜ ๊ณ ์œ ํ•˜๊ฒŒ ์„ค๊ณ„๋œ ํ”Œ๋žซํผ๊ณผ Metal์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋‘ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํšจ์œจ์„ฑ์„ ๊ฒฐํ•ฉํ•˜๊ณ  ๊ถ๊ทน์ ์œผ๋กœ ์ „๋ฐ˜์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด ๋” ๋น ๋ฅด๊ณ , ๋” ๋น„์šฉ ํšจ์œจ์ ์ด๋ฉฐ, ํšจ์œจ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ๋ฏธ๋ž˜๋ฅผ ํ–ฅํ•ด ์›ํ™œํ•˜๊ฒŒ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .