들어가기

개발자로 살고 있지만 사실 컴퓨터 그래픽스를 다루게 될 줄은 꿈에도 몰랐다.

본격 하드코어 개발 커뮤니티인 ProjectBS에서 작년부터 WebGL을 접하게 되면서 자연스럽게 GPU Shader 프로그래밍과 컴퓨터 그래픽스를 야금야금 다뤄보게 되었다.

컴퓨터 그래픽스 쪽은 깊게 들어가면 엄청난 수학 내공이 필요한 분야라서 어렵기도 하지만, 초보 수준에서도 쉽게 진도를 나가기 어려운 이유 중의 하나는 같은 전산 바닥이면서도 생소한 용어가 많고, 일반적인 쓰임새에서 유추하기 어려운 경우가 많다는 점이다.

Fragment(프래그먼트)라는 용어는 완전히 동일한 단어는 아니지만 비슷하게 생긴 메모리 파편화(Memory Fragmentation)에 쓰이는 Fragmentation를 참고해서 뭔 쪼가리를 말하는 건가? 싶었는데 쪼가리와는 상당히 동떨어진 의미를 가지고 있다. 명확하게는 모르겠지만 그냥 픽셀과 비슷한 가보구나 하고 넘어갔었는데, 이 책은 Fragment를 다음과 같이 정확하게 짚어 준다.

Fragment(프래그먼트)는 컬러 버퍼에 저장된 픽셀을 수정하는데 필요한 데이터 모음을 말한다.

Culling(컬링)은 또 어떤가. 나름 3권의 원서를 번역했고 짬짬이 영문 문서를 번역한 경험이 있지만, Culling은 처음 봤다. 사전을 보면 고르기, 선택, 꽃따기 라는 뜻이라는데, 꽃따기를 전산에서 할 일은 없을 것 같고, 고르기와 선택이라면 CSS Selector에서 처럼 Select라는 익숙한 용어가 있지 않나. 이 책은 Culling이라는 생소한 용어를 카메라에 보이지 않는 부분을 제거하는 작업을 총칭한다.라는 아주 이해하기 쉬운 용어로 번역해줬다.

용어에 좀 적응을 하고 나면 더 큰 장벽이 기다리고 있다. 바로 수학이다. 졸업과 함께 영원히 빠이~ 라고 생각했던 그 수학, 그 중에서도 특히 어려웠던 공간 도형과 각종 변환이다.

이 책은 컴퓨터 그래픽스를 처음 접하는 사람들이 용어의 늪에서 허덕이는 시간을 획기적으로 줄여주며, 수학의 장벽에 기죽어 고개 숙인 개발자들에게 따스한 손길을 내밀어 주는 그런 책이다.

이래서 좋다

  • 용어를 명확하고 알기 쉽게 설명해준다.
  • 컴퓨터 그래픽스를 처음 접하는 사람에게 필요한 기초 지식인 GPU 렌더링 파이프도 명료하게 짚어준다.
  • 표지만 봐서는 99% 흑백 인쇄일 것처럼 생겼지만, 펼쳐보면 놀랍게도 컬러 그림이 꽤 많다.
  • 공간 도형을 그림 없이 이해할 수 있을까. 이해하는데 꼭 필요한, 그리고 적당히 친절하고 상세한 그림으로 구성되어 있다.
  • 구성 순서도 좋다. 폴리곤 메쉬로 시작해서 정점 처리, 래스터화, 프래그먼트 처리, 출력 병합 이라는 렌더링 파이프를 따라 이야기를 풀어가고, 그 다음에 조명, 텍스쳐, 매핑, 애니메이션, 물리 엔진과 같은 고급 그래픽스 이론을 다룬다.

이래서 아쉽다

  • 잔인하게도 연습 문제의 답이 없다.

나가기

국내에서는 아직 WebGL이 많은 개발자들의 큰 관심을 받고 있지는 못한 것 같다. UI에 관심이 있는 개발자라면 WebGL에 관심을 가져볼 것을 추천한다.

WebGL을 공부할 때 길잡이로서 MDN WebGL 자료를 참고하는 것도 좋을 것이다. MDN 이라고 쫄 것 없다. 필자 포함 여러 개발자들의 도움으로 한글화가 잘 되어 있다.

그래픽 라이브러리인 WebGL을 공부하려면 아무래도 컴퓨터 그래픽스 이론 전반에 대한 바탕이 필요하다. 이 책이 그 든든한 바탕이 되어줄 것이다.

컴퓨터 그래픽스와 관련된 수학에 중심을 두고 기초부터 차근차근 공부하고 싶다면 수학으로 시작하는 3D 게임 개발을 추천한다. 벡터와 행렬부터 시작해서 선형 변환, 아핀 변환, 4원수, 투영, 충돌 등을 자세한 그림, 설명과 함께 배울 수 있다.

마지막으로 필자도 참여하고 있는 ProjectBS에서 개발 중인 모바일 용 WebGL 라이브러리인 MoGL(Mobile WebGL)에도 관심을 가져보면 더할 나위 없겠다.


크리에이티브 커먼즈 라이선스hanmomhanda의 저작물인 이 저작물은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.