멘탈 모델 정리: WebGL이란 무엇인가?

462025년 08월 25일4

WebGL 2.0의 개발이 한창 진행되던 어느 날, 블라디미르는 모질라의 신입 엔지니어들을 대상으로 한 기술 강연에 서게 되었다. 그의 강연 주제는 단순했다. "그래서, WebGL이란 대체 무엇인가?"

그는 화려한 데모나 복잡한 코드 대신, 지난 몇 년간의 여정을 통해 자신이 정립한 WebGL의 핵심적인 ‘멘탈 모델(Mental Model)’을 설명하기 시작했다. 이것은 기술의 세부 사항을 넘어, 그 본질을 어떻게 이해하고 접근해야 하는지에 대한 이야기였다.

“여러분, WebGL을 배울 때 수많은 API 함수 이름에 겁먹지 마십시오. 가장 먼저 이해해야 할 것은 WebGL이 해결하고자 했던 근본적인 문제입니다.”

그는 화이트보드에 두 개의 상자를 그렸다. 하나는 ‘자바스크립트 (CPU)’, 다른 하나는 ‘GPU’.

  1. WebGL은 ‘통역사’다.
    “이 두 세계는 서로 다른 언어를 씁니다. 자바스크립트는 동적이고 유연하지만, GPU는 엄격하고 병렬적인 연산만 이해합니다. WebGL은 이 둘 사이를 이어주는 통역 API입니다. 자바스크립트라는 언어로 GPU에게 ‘그림을 그려달라’고 명령할 수 있게 해주는 약속된 규칙의 집합, 그것이 바로 WebGL API의 본질입니다.”

  2. WebGL은 ‘안전한 감옥’ 안에서 동작한다.
    “하지만 이 통역은 아무 곳에서나 이루어지지 않습니다. 브라우저의 샌드박스라는, 철저하게 통제된 환경 안에서만 가능합니다. 웹페이지가 절대로 시스템의 다른 부분을 건드릴 수 없도록 보장하기 위함이죠. WebGL의 모든 명령은 이 감옥의 간수(브라우저)에 의해 철저히 검열된 후에야 GPU에게 전달됩니다. 이것이 WebGL이 플러그인보다 본질적으로 안전한 이유입니다.”

  3. 데이터는 ‘컨테이너’에 담아 옮긴다.
    “CPU에서 GPU로 데이터를 옮기는 것은 비용이 비쌉니다. 그래서 우리는 버퍼(Buffer)와 텍스처(Texture)라는 특별한 컨테이너를 사용합니다. 데이터를 이 컨테이너에 미리 담아 GPU의 창고에 옮겨두고, 필요할 때마다 재사용하는 방식입니다. 이 컨테이너를 이해하는 것이 WebGL 성능 최적화의 첫걸음입니다.”

  4. 실질적인 작업은 ‘작은 프로그램’이 수행한다.
    “WebGL의 진짜 마법은 셰이더(Shader)에서 일어납니다. 정점 셰이더와 프래그먼트 셰이더라는 두 개의 작은 프로그램을 우리가 직접 작성해서 GPU에 업로드합니다. GPU는 이 프로그램들을 수천, 수백만 번 병렬로 실행하며 실제 그림을 그립니다. WebGL API는 이 셰이더 프로그램에 데이터를 전달하고, 실행을 명령하는 역할에 집중합니다.”

  5. 모든 것은 ‘상태 기계’ 위에서 돌아간다.
    “마지막으로, WebGL은 상태 기계(State Machine)처럼 동작한다는 것을 기억해야 합니다.”
    블라디미르는 이 부분을 특히 강조했다. “WebGL에는 수많은 상태 값(현재 바인딩된 버퍼, 활성화된 텍스처 유닛, 깊이 테스트 활성화 여부 등)이 있습니다. gl.bindBuffergl.enable 같은 함수들은 직접 무언가를 그리는 것이 아니라, 이 내부 상태를 바꾸는 역할을 합니다. 그리고 gl.drawArrays가 호출되는 순간, GPU는 바로 그 순간의 전체 상태를 바탕으로 최종 그림을 그려냅니다. 어떤 함수가 상태를 바꾸는 함수이고, 어떤 함수가 실제 행동을 하는 함수인지를 구분하는 것이 디버깅의 핵심입니다.”

그의 설명이 끝나자, 신입 엔지니어들의 표정이 한결 편안해진 것을 볼 수 있었다. 복잡하게만 보였던 수많은 함수들이 ‘통역’, ‘보안’, ‘데이터 전달’, ‘프로그램 실행’, ‘상태 변경’이라는 몇 가지 핵심 개념 아래 체계적으로 정리되었기 때문이다.

“WebGL은 어려운 기술이 맞습니다.”
블라디미르가 강연을 마무리했다.
“하지만 올바른 멘탈 모델을 가지고 접근하면, 그 복잡함 속에서 명확한 구조를 발견할 수 있습니다. 여러분은 이제 GPU와 대화하는 새로운 언어를 배운 셈입니다. 이 언어로 어떤 멋진 이야기를 써 내려갈지는 이제 여러분의 상상력에 달려 있습니다.”

그의 강연은 WebGL이 단순한 기술 명세서를 넘어, 어떻게 생각하고 접근해야 하는지에 대한 철학적 가이드가 되었다. 이 멘탈 모델은 이후 수많은 튜토리얼과 책에서 인용되며, 새로운 세대의 WebGL 개발자들이 길을 잃지 않도록 도와주는 등대가 되어주었다.