본문 바로가기

Swift

[iOS] Metal - 0

 

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