1. 프로크리에이트와 굿노트는 어떻게 만드는거야?

그래픽 어플리케이션이 만들어지는 과정

by MT

포토샵, 일러스트레이터같은 PC 프로그램부터 프로크리에이트, 굿노트 같은 아이패드 앱까지. 그래픽 어플리케이션은 창작자들에겐 너무도 친숙한 도구죠. 그런데 자세히 보면 상당히 달라요. 필기앱에선 프로크리에이트처럼 정밀한 그림을 그릴 수 없는데, 공부할 때는 굿노트만한 앱이 없죠. 블렌더에서 만든 3D 모델을 그림앱에는 2D 이미지로 불러올 수 밖에 없어요. 그 뿐인가요? 어플마다 그려지는 느낌도 다르고, 같은 이미지를 처리할 때 속도도 다르죠. 대부분 이미 벡터앱, 래스터앱이나 게임 엔진 같은 개념은 잘 알거나 들어보셨을 거에요. 하지만, 왜 그런 차이가 생기는 걸가요? 그래픽 어플리케이션은 어떻게 만들어 지는 걸까요?


그래픽 어플리케이션은 디지털 세상에서 창작을 가능하게 하는 모든 플랫폼의 초석입니다. Adobe illustrator와 같은 정교한 드로잉 앱이든, Procreate같은 캐주얼 드로잉 앱이든 그래픽 어플리케이션은 선과 색상을 예쁜 작품으로 변환하게 됩니다. 이걸 만드려면 무엇이 필요할까요?

Fs4KGNYS3ibpWgAQANJ6r3.png 일러스트레이터, 포토샵, 프로크리에이트, 굿노트, 스케치, 피그마, etc....

본질적으로 그래픽 어플리케이션은 컴퓨터 프로그래밍으로 알고리즘 및 고급 그래픽 디자인을 조합해서 그래픽을 만들어요. 말이 어렵지만, 결국 사용자 입력(마우스 클릭이나 디지털 펜의 이동)을 화면에 표시되는 시각적 출력으로 변환하는 과정을 말하는 거에요. 간단하죠? 물론 이 간단한 개념 뒤에는 디지털 창작을 가능하게 하기 위해 끊임없이 돌아가는 복잡한 프로세스의 미로가 있답니다. 이 프로세스를 그냥 '알고리즘'이라고 부를게요.


그래픽 어플리케이션을 개발하는 방법은 여러가지가 있어요. 직접 복잡한 프로세스를 처리할 수 있는 알고리즘을 하나하나 구현할 수도 있지만, 보통은 이미 알고리즘을 잘 만들어 놓은 라이브러리나 프레임워크를 사용하죠. 다양한 기반 도구와 기능을 제공해서 프로세스를 크게 단순화할 수 있거든요. 예를 들어 OpenGL(개방형 그래픽 라이브러리), DirectX나 WebGL 같은 기술이 있죠.

20b0df80-961a-11ea-91f1-a39c510d0da9 셰이더 프로그래밍, 렌더링 등을 담당하게 되는 그래픽 라이브러리

이러한 라이브러리는 기본적인 그리기 작업에서 음영 처리, 텍스처 매핑, 3D 변환과 같은 복잡한 작업에 이르기까지 다양한 작업을 처리하는 알고리즘을 제공합니다. 하지만 모든 어플리케이션에 적용할 수 있는 솔루션은 아니에요. 서로 다른 요구 사항을 가진 서로 다른 프로그램에는 서로 다른 기술이 필요할 수 있거든요. 예를 들어, 실시간 3D게임에는 아이패드 그림앱과는 다른 알고리즘이 필요할거고, 스티커를 ‘그려’내는 앱에서 디지털 다꾸를 할 수 있게 하는 것은 쉽지 않은 일이에요.

img.jpg 동시에 구현하기 힘든 벡터앱과 래스터앱의 사용성

그래픽 어플리케이션은 이러한 라이브러리, 또는 직접 설계한 알고리즘으로 구성한 프레임워크를 이용해 사용자의 마우스 클릭, 디지털 펜의 이동을 화면에 표시하는 방법을 정의해 놓은 프로그램이에요. 그림앱에는 그림앱에 맞는, 필기앱에는 필기앱에 맞는 알고리즘들을 모아놨기 때문에 우리는 같은 행동을 하더라도 프로크리에이트와 굿노트에서 다른 결과를 확인하게 되죠.


체리픽은 "창작에 보상 받는 가장 쉬운 방법"이 되고자 하는 디지털 펜 SNS입니다. 목표를 이루기 위해선 사용자의 상상력을 최대로 발휘할 수 있는 멋진 그래픽 도구를 먼저 만들어야 해요. 창작에 쉽게 보상 받을 수 있는 환경을 만들려면 어떤 도구가 필요할까요? 우리는 사용자가 하나의 캔버스 내에서 디지털 펜으로 벡터, 래스터, 3D와 영상까지 편집할 수 있는 환경을 제공하고 싶었어요. 그래서 기존 그래픽 라이브러리를 이용하지 않고 Vulkan과 Metal같은 그래픽 API로 자체 그래픽 프레임워크를 개발하기로 했죠. 물론, 이런 결정은 가볍게 내려진 게 아니에요.


그래서 우리는 체리픽에서 그래픽 어플리케이션을 개발하는 여정을 공유해보려 해요. 다음에는 그래픽 API와 라이브러리가 뭔지, 그리고 우리가 자체 그래픽 프레임워크를 개발하는 이유가 뭔지에 대해 이야기해보려 해요. 상상만 하던 디지털 창작 생태계를 만들기 위한 디지털 펜 SNS 플랫폼의 도전을 계속 지켜봐주세요!