Apple🍎/Metal
-
Metal-Cpp : C++ 개발자를 위한 Apple의 GPU 사용법Apple🍎/Metal 2025. 4. 3. 23:03
Metal 둘러보기셰이더(shader)는 무엇인가?다음은 애플 디벨로퍼 홈페이지에 있는 Metal 의 소개입니다. 일단 Metal 을 사용하면 GPU 프로그래밍을 가능하게 해준다고는 들었는데, 셰이딩 언어는 또 뭘까요? 사실 GPpeople-analysis.tistory.comMetal 소개: Apple 플랫폼의 그래픽 및 컴퓨팅 프레임워크Metal은 Apple이 개발한 저수준 그래픽 및 컴퓨팅 API로, iOS, macOS, tvOS 등 Apple 플랫폼에서 GPU의 강력한 성능을 활용할 수 있게 해줍니다. 2014년에 처음 소개된 Metal은 OpenGL보다 더 낮은 오버헤드와 더 높은 성능을 제공하기 위해 설계되었습니다.Metal의 주요 특징은 다음과 같습니다. 그래픽 렌더링 및 일반 컴퓨팅(GPG..
-
[Particle Simulator] Compute Shader 사용해 gpu 연산하기Apple🍎/Metal 2025. 4. 1. 22:45
[Particle Simulator] cpu 연산 - gpu 랜더링 방법1. Metal Setup 과정 GPU 자원 초기화 : 시스템의 GPU에 접근하기 위한 기본 자원을 설정, MTLCreateSystemDefaultDevice( )를 호출하여 기기의 GPU를 가리키는 참조를 얻습니다. 화면 표시 영역 준비 : GPU가 렌people-analysis.tistory.com기존 CPU 기반 구현의 한계지난 글에서는 입자 시뮬레이션을 위해 프레임마다 각 입자에 대한 계산을 cpu에서 실행하고 그 결과를 gpu를 통해 렌더링하는 방식을 사용했습니다. private func updateSandSimulation() { // 아래에서 위로 순회 (중력 방향을 고려) for y in (0..= gridH..
-
[Particle Simulator] cpu 연산 - gpu 랜더링 방법Apple🍎/Metal 2025. 3. 30. 22:47
1. Metal Setup 과정 GPU 자원 초기화 : 시스템의 GPU에 접근하기 위한 기본 자원을 설정, MTLCreateSystemDefaultDevice( )를 호출하여 기기의 GPU를 가리키는 참조를 얻습니다. 화면 표시 영역 준비 : GPU가 렌더링한 내용을 표시할 특수한 뷰(MTKView)를 생성, 해당 뷰는 앱의 기존 UI 계층 구조 내에 배치되어, GPU 렌더링 결과가 나타날 화면 영역을 정의렌더링 루프 설정 : 대리자 설정을 통해 렌더링 루프를 구성합니다. 이를 통해 화면이 새로고침될때마다 대리자 클래스의 draw( ) 메서드가 자동으로 호출하여 연속적인 프레임 렌더링이 가능해집니다. 렌더링 옵션 구성: framebufferOnly = false 와 같은 설정으로 렌더링 방식을 조정합니다..
-
Metal 렌더링 파이프라인Apple🍎/Metal 2025. 3. 29. 21:11
Metal 렌더링 파이프라인은 3D 그래픽을 2D 화면에 체계적으로 그리는 과정을 말합니다. 이 과정을 단계별로 자세히 알아보도록 합시다. 💡 글 이해를 위해 필요한 개념들 정점(Vertext) : 3D 공간상의 점으로, 3D 모델이나 그래픽을 구성하는 가장 기본적인 요소이며 다음과 같은 정보를 포합합니다. 위치(position): x, y, z 좌표로 3D 공간에서의 위치를 나타냅니다. 색상(Color) : 정점의 색상 정보입니다. 텍스쳐 좌표(texture coordinates): UV 좌표라고도 하며, 텍스쳐 이미지의 어느 부분이 해당 정점에 매핑될지를 결정합니다. 법선 벡터(normal vectors) : 정점에서의 표면 방향을 나타내느 벡터로, 조명 계산에 사용됩니다. 텍스쳐(Texture)..
-
CPU와 GPU 비교와 GPGPU 프로그래밍의 이해Apple🍎/Metal 2025. 3. 27. 21:33
CPU와 GPU의 기본 구조와 연산 방식CPU (중앙처리장치)의 구조와 작동 원리CPU는 컴퓨터의 '두뇌'로 불리며, 몇 개의 강력한 코어로 구성되어 있습니다. 전통적인 CPU는 4~16개 정도의 코어를 가지고 있으며, 각 코어는 복잡한 명령어를 처리할 수 있는 고성능 연산 유닛입니다.CPU의 주요 특징직렬 처리(Serial Processing): 하나의 코어는 기본적으로 한 번에 하나의 작업을 순차적으로 처리합니다.복잡한 제어 로직: 분기 예측(Branch Prediction), 명령어 파이프라이닝(Instruction Pipelining), 비순차적 실행(Out-of-Order Execution) 등 복잡한 제어 로직을 갖추고 있습니다.대용량 캐시 메모리: L1, L2, L3 등 여러 계층의 캐시를 ..
-
cellular automata: 간단한 모래 시뮬레이터 만들기Apple🍎/Metal 2025. 3. 24. 21:18
지난 시간에는 간단한 규칙으로 복잡한 시스템을 모델링하는 cellular automata가 뭔지에 대해서 알아보았는데요. 이번에는 이러한 cellular automata 개념을 사용해 간단한 모래 시뮬레이터를 만들어보도록 하겠습니다. 1. 격자 그리기 일단 시뮬레이션할 모래의 무대가 될 격자를 먼저 그려보도록 하겠습니다. SwiftUI의 Canvas를 사용해서 각각의 픽셀이 10 * 10 사이즈인 40 * 40 크기의 격자를 만들어보겠습니다. 코드 더보기import SwiftUIstruct ContentView: View { /// Celluar automata를 구성하는 격자의 속성(수, 크기)를 상수로 정의 let columns = 40 let rows = 40 let cellS..
-
cellular automata(세포 자동자)는 뭘까?Apple🍎/Metal 2025. 3. 23. 21:21
정말 복잡해 보이는 현상도 사실은 아주 단순한 규칙들로 구성됩니다. 그리고 이를 아주 잘 보여주는 예시가 있는데요. 바로 세포자동자(celluar automata)입니다. 세포 자동자(Cellular Automata)란?세포 자동자(Cellular Automata, CA)는 간단한 규칙을 가지고 시간이 지남에 따라 변화하는 이산적인(discrete) 모델입니다.이름에서 알 수 있듯이 '세포(Cell)'라는 기본 단위로 구성되어 있으며, 각 세포는 유한한 상태값을 가질 수 있습니다.이 세포들은 격자(그리드) 형태로 배열되어 있고, 각 세포의 다음 상태는 현재 자신과 주변 세포들의 상태에 의해 결정됩니다.Cellular Automata는 다음 기본요소들로 구성됩니다. 1. 격자(Grid)격자는 세포들이 배열..
-
Metal 둘러보기Apple🍎/Metal 2025. 3. 21. 22:37
셰이더(shader)는 무엇인가?다음은 애플 디벨로퍼 홈페이지에 있는 Metal 의 소개입니다. 일단 Metal 을 사용하면 GPU 프로그래밍을 가능하게 해준다고는 들었는데, 셰이딩 언어는 또 뭘까요? 사실 GPU(Graphics Processing Unit)는 그people-analysis.tistory.comMetal에 대해 알아보기전에 그래픽 렌더링과 GPU의 발전 역사를 먼저 살펴보시면 다음에 나올 용어들에 익숙해져 내용 이해에 도움이 됩니다. 소개애플의 Metal 프레임워크는 iOS, macOS, tvOS 기기에서 GPU를 직접 제어할 수 있는 저수준 그래픽 API입니다. 2014년에 처음 소개된 이후, Metal은 애플 플랫폼에서 OpenGL을 대체하며 최신 그래픽 및 컴퓨팅 작업을 위한 핵심..