상세 컨텐츠

본문 제목

Metal. Ch 1. Hello, Metal!

TIL/Metal

by box-jeon 2020. 6. 7. 20:18

본문

이미지 필터가 돌려주는 텍스쳐를 MTKView에 뿌리는 방법을 찾느라 여기 저기서 코드를 복사해서 짜깁기하고 있었는데... 결국 기초부터 배워보자며 Metal 책을 한권 샀습니다.

store.raywenderlich.com/products/metal-by-tutorials

 

Metal by Tutorials

This book will introduce you to graphics programming in Metal — Apple’s framework for programming on the GPU. Build a complete game engine in Metal!

store.raywenderlich.com

 

What is rendering?

The processing of an outline image using color and shading to make it appear solid and three-dimensional.

보통 Blender나 Maya 같은 앱을 이용해 모델링을 먼저하고 그를 통해 3D 이미지를 rendering합니다. 모델은 3차원 공간 속 점들로 구성되고, 이들을 잇는 선들이 존재합니다. 3D renderer는 model loader code로부터 이 점들을 읽어들여 GPU에게 넘겨줍니다. GPU는 이를 이용해 최종적으로 이미지 혹은 텍스쳐를 생성하고 CPU에게 돌려줍니다. 읽어들인 모델로부터 최종 이미지를 생성해내는 이 과정을 rendering pipeline이라고 부릅니다.

 

What is a frame?

자연스러운 움직임을 보장하기 위해 GPU는 초당 60회 정도의 rendering을 해야하는데, 각 rendering의 결과 이미지를 프레임이라고 부릅니다.

 

Your first Metal app

PlaygroudSupport framework를 사용하면 Playgroud에서 View를 그려볼 수 있습니다. 코드를 봐도 MTKView가 대체 어떤 연결고리에 의해서 encoding된 결과값을 전달받는지 잘 그려지지가 않습니다. Rendering 과정에서 View가 연관되는 부분은 view.currentRenderPassDescriptor를 renderEncoder 생성 시 파라미터로 전달하는 부분 뿐입니다. 그리고 encoding이 끝나면 view.currentDrawable에 이미 결과가 반영되어 있다는 거겠죠. 익숙해지려면 시간이 좀 필요할 것 같습니다.

'TIL > Metal' 카테고리의 다른 글

Metal. Ch 2. 3D Models  (0) 2020.06.08

관련글 더보기

댓글 영역