Metal?
- Apple에서 만든 고성능 그래픽 & 계산용 API
- iOS, macOS, tvOS에서 GPU를 직접 제어할 수 있도록 해줌
- 그래픽 렌더링뿐만 아니라, 머신러닝, 영상 처리 등에도 활용 가능
왜 Metal을 쓰나?
- OpenGL보다 훨씬 저수준의 접근 가능 → 더 빠르고 최적화된 렌더링
- iOS12 부터 OpenGL ES 권장 X
- macOS에서는 아예 deprecated 처리
- Apple 에서는 Metal이 그래픽 개발의 표준이 됨
- Shader 프로그래밍(Metal Shading Language)을 통해 실시간 효과 구현 가능
- Swift, Objective-C에서 손쉽게 사용 가능 (애플 생태계 최적화)
저수준(Low-level)?
저수준 API
- 시스템이나 하드웨어(GPU 등)에 더 직접적이고 세세하게 접근할 수 있는 인터페이스
ex)
고수준 API(OpenGL): 어느정도 추상화된 구조 → xxx 해줘~
저수준 API(Metal): 개발자가 GPU 명령을 더 세밀하게 제어 가능 → 이 텍스쳐를 이 명령 버퍼에 이렇게 처리하고 저렇게 처리하고, 어떻게 렌더링해.......
→ "딸깍" 이 불가능하지만 좀 더 세밀한 제어가 가능
근본적으론..
렌더링, 영상처리 등을 효율적으로 처리하기 위해(CPU에서 작업하지 않도록 하기 위해) GPU를 사용하려고 하는데
그 GPU를 활용하는 방법으로 애플이 내놓은 방법이 Metal이라는 프레임워크인 것이다~
암튼 저는 이를 통해 카메라 필터 기능을 개발해보려고 합니다..!
CPU & GPU 간단 정리
위의 그림에서 파란놈이 ALU코어 - 산술 논리 장치인데, 이 놈이 이제 연산 쫘라랄락 합니다.
구조만 봐도 GPU가 연산하는 놈이 훨씬 많죠?
실제로 CPU는 4~8개의 코어, GPU는 수백 개에서 수천 개의 코어를 가지고 있다고 합니다.
그렇기 때문에 각각의 코어에서 작업의 병렬 처리가 이루어지고, GPU가 CPU보다 훨씬 빠른 속도로 작업을 할 수 있는 것이죠
'Swift' 카테고리의 다른 글
[iOS] Metal - 1 (0) | 2025.02.22 |
---|---|
[iOS] SKIP.tools 사용기 (2) | 2025.02.05 |
[iOS] SKIP.tools? (0) | 2025.01.28 |
[iOS] About Swift Concurrency (0) | 2025.01.04 |
[iOS] About Kingfisher (1) | 2024.11.27 |