분류 전체보기
-
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..
-
[Issue] SwiftUI: Canvas 컴포넌트가 onAppear로 인한 @State 값 변경을 업데이트 하지 않음Apple🍎/SwiftUI 2025. 3. 24. 19:34
문제 상황최근 SwiftUI로 모래 시뮬레이션 앱을 개발하던 중 이상한 문제를 발견했습니다. 간단히 말해, Canvas를 사용해 그리드와 모래를 그리고 @State 변수를 통해 모래의 위치를 관리하는 상황이었습니다. struct ContentView: View { let columns = 40 let rows = 40 let cellSize: CGFloat = 10 // Grid의 각 cell의 상태 값 : 0 = empty, 1 = sand @State private var grid = Array(repeating: Array(repeating: 0, count: 40), count: 40) var body: some View { VStack ..
-
cellular automata(세포 자동자)는 뭘까?Apple🍎/Metal 2025. 3. 23. 21:21
정말 복잡해 보이는 현상도 사실은 아주 단순한 규칙들로 구성됩니다. 그리고 이를 아주 잘 보여주는 예시가 있는데요. 바로 세포자동자(celluar automata)입니다. 세포 자동자(Cellular Automata)란?세포 자동자(Cellular Automata, CA)는 간단한 규칙을 가지고 시간이 지남에 따라 변화하는 이산적인(discrete) 모델입니다.이름에서 알 수 있듯이 '세포(Cell)'라는 기본 단위로 구성되어 있으며, 각 세포는 유한한 상태값을 가질 수 있습니다.이 세포들은 격자(그리드) 형태로 배열되어 있고, 각 세포의 다음 상태는 현재 자신과 주변 세포들의 상태에 의해 결정됩니다.Cellular Automata는 다음 기본요소들로 구성됩니다. 1. 격자(Grid)격자는 세포들이 배열..
-
선형 변환 : 행렬은 함수다.Math♾️/Linear Algebra 2025. 3. 22. 22:50
선형 변환이란 무엇인가? 먼저 '변환(transformation)'라는 용어부터 이해해볼까요? 변환은 사실 함수(function)의 또 다른 표현일 뿐입니다. 함수는 입력 값과 출력 값간의 관계를 정의합니다. 따라서 임의의 입력 값이 주어졌을 때 정의된 관계에 따라 출력값이 결정됩니다. 선형 대수학에서는 특히 주어진 입력 값과 출력값이 '벡터'인 경우를 주로 다룹니다. 그렇다면 왜 함수 대신 변환이라는 용어를 사용하였을까요? 이는 입력 벡터와 출력 벡터간의 관계를 시각적으로 '움직임'으로써 이해하도록 유도하기 위함입니다. 즉, 입력 벡터가 출력 벡터로 '이동'한다고 생각하는 것이죠. 선형 변환의 조건 변환이 '선형'이 되기 위해서는 다음 조건을 만족해야합니다. 첫번째로, 모든 직선은 직선으로 유지되어야..
-
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을 대체하며 최신 그래픽 및 컴퓨팅 작업을 위한 핵심..
-
셰이더(shader)는 무엇인가?Apple🍎/Metal 2025. 3. 20. 22:27
다음은 애플 디벨로퍼 홈페이지에 있는 Metal 의 소개입니다. 일단 Metal 을 사용하면 GPU 프로그래밍을 가능하게 해준다고는 들었는데, 셰이딩 언어는 또 뭘까요? 사실 GPU(Graphics Processing Unit)는 그래픽 랜더링을 하기 위해 만들어진 만들어진 장치입니다.따라서 GPU 프로그래밍을 이해를 위해 그래픽 프로그래밍의 발전과정을 함께 셰이더라는 용어에 대해 알아보도록 하겠습니다. 고정 파이프라인 시대 (1990년대 초반)1990년대 초반, 3D 그래픽을 표현하는 방식은 지금과 매우 달랐습니다. 이 시기에는 '고정 파이프라인'이라는 방식으로 그래픽 렌더링이 이루어졌습니다. 이는 마치 조립 라인과 같이, 3D 그래픽을 처리하는 단계가 하드웨어 제조사에 의해 사전에 정의되고 고정되어..
-
Blender MCP : 내 컴퓨터 안에 도청장치가 있어요.Blender 🐵 2025. 3. 19. 20:18
챗 지피티를 선두로, 클로드, 잼미니, 그록 등 다양한 대규모 언어 모델(LLM)이 날이 갈수록 성능이 좋아지고 있는데요. 빠르게 발전하는 모델들에 비해 우리가 AI를 사용함으로써 얻는 생산성은 그리 드라마틱하게 변하지 않았습니다. AI가 아직 '덜' 발달해서 그런 것도 있지만 가장 크게 체감하는 부분은 내가 설명을 하는 능력이 떨어진다는 것입니다. 원하는 게 뭔지 알아도 이를 AI가 알아먹을 정도로 세세하게 설명해주는게 어렵단말이죠. 그리고 사실 우리가 업무를 할 때 단순한 정보들만으로 해결되는 문제들은 많이 없습니다.대부분의 문제들은 다양한 상황들과 복잡하게 얽혀 있어 같은 문제처럼 보여도 처한 상황에 따라 전혀 다른 해결책이 필요한 경우가 많습니다. 아 그냥 AI가 옆에서 보고 있는 것처럼 '알잘..
-
버텍스 노멀과 평균 노멀 : 빛을 어떻게 받는지 결정Apple🍎/Metal 2025. 3. 18. 14:16
노멀(Normal)이란 무엇인가?노멀 벡터는 표면에 수직으로 향하는 벡터로, 마치 땅에서 하늘을 가리키는 막대기와 같이 표면에서 바깥쪽으로 향합니다. 노멀 벡터의 중요성조명 계산빛이 표면에 어떻게 반사될지 결정하는 핵심 요소입니다.빛의 방향과 노멀 벡터 사이의 각도가 표면의 밝기를 결정합니다.빛의 방향과 노멀 벡터의 내적(dot product)이 표면의 밝기를 결정합니다.내적 값이 클수록 표면이 밝게 보입니다.이 각도가 작을수록(빛이 노멀과 같은 방향일수록) 표면이 밝게 보입니다.반대로 각도가 클수록 표면이 어둡게 보입니다.앞면/뒷면 결정 (Backface Culling)3D 모델에서 어떤 면이 보여야 하고 어떤 면이 숨겨져야 하는지 결정합니다.관찰자를 향하는 노멀을 가진 면은 "앞면"으로 간주되어 렌더..