목록전체 글 (56)
momodudu.zip
cpu에서 만든 데이터를 gpu로 로드하기 위해서, 메탈에서는 MTLBuffer를 쓴다. 처음에 나온 예제에서는 vertex(x,y,z) 이렇게 position float3 포맷으로 MTLBuffer를 만들었다. 그치만 좀 더 복잡한 렌더링으로 들어가면 이 정점 하나에 position외에도 노말이나 텍스쳐 좌표까지 하나의 정점에 매칭된다. 예를들면 하나의 v1 = [px, py, pz, nx, ny, u, v] 이렇게 여러개의 attribute들이 매칭된다. 그래서 gpu에서 이 버퍼를 해석할 수 있도록 도움을 줘야 하는데, 그게 바로 vertex description이다. // vertex descriptor 설정 let vertexDescriptor = MTLVertexDescriptor() vert..
끄적끄적 메탈 공부하기. Metal by tutorials란 책을 참고하고 차근차근 따라가보면서 포스팅해보기~ 모든 그래픽스 API가 그렇듯 삼각형 하나 출력하는데 설정할게 매우 많다... 과정을 일단 요약해보면, 1. Metal Rendering을 위한 초반 셋업 과정 1) MTLDevice 생성 - GPU랑 direct connection을 해주는 역할. GPU object를 이걸 통해서 만든다. 2) MTLBuffer 생성 - CPU에서 생성한 데이터를 GPU로 보내기 위한 버퍼 역할. 3) MTLRenderPipeline 생성 - shaders, color attachment 포맷 등 여러가지 렌더링 config를 지정한 파이프라인을 여기서 생성한다. 2. 프레임마다 실행될 렌더링 루프 작성 1)..
c++을 제대로 안쓴지가 넘 오래돼서 개념이 오락가락하기 시작한다;;; lamda에서 변수 캡쳐 과정에 대해서 다시한번 짚어보자.. 이걸 짚어보기전에, 스위프트랑 달라서 헷갈렸던 호출 방식 부터 훑어보자. call by reference 와 call by value. call by reference는 어떤 변수의 값을 참조, address로 받으면서 기존 variable이 그대로 넘겨진다. 여기서 "그대로"는 카피 없이, 즉 기존의 오브젝트 혹은 변수가 그대로 전달이 된다. 그래서 전달된 함수 scope내에서 이 변수를 수정하면, 수정이 가능하고 함수 스코프 밖으로 빠져나와도 이 변경사항이 반영이 된다. 반면 call by value는 말그대로 "value"를 전달한다. 내가 어떤 객체를 선언해서, 어떤..

사실 iOS에 국한되는 포스팅은 아니긴 하지만, 카테고리가 없고 swift예제를 쓸거기 때문에 일단 Swift 카테고리에... 디자인패턴은 사실 내가 제일 약한부분이다 (ㅠㅠ) 전회사에서나 학부생때나 이런거에 대해서 깊게 고민해본적이 없기도 하고.. 사실 어떻게 따져보면 방법론적인 이야기뿐이라 사실 나에게는 잘 와닿지 않는 이야기라서..? 어찌됐든 그래도 공부해야할건 공부해야되니까! 이 포스팅을 쓰면서도 MVC와 MVVM에 대해 개념적(?)으로는 와닿지만, 사실 실무에서 어떻게 쓰는지 코드를 직접 짠게 아니라서 확 와닿는건 아니다.. 틀린것도 있을 수 있고.... 이건 일단 공부해놓으면 나중에 접목시킬때가 오게 되겠지 뭐... 궁극적으로 말하고자 하는건 MVVM패턴이지만, MVVM패턴을 알려면 MVC도 ..