시작

WebGL

작성일 2026.07.02 수정일 2026.07.02 조회 12

기본 정보

  • 명칭: WebGL
  • 영문명: Web Graphics Library
  • 분류: 웹 그래픽 API
  • 개발 기관: Khronos Group
  • 최초 공개: 2011년
  • 기반 기술: OpenGL ES 2.0 / OpenGL ES 3.0(WebGL 2)
  • 주요 용도: 브라우저에서 GPU를 이용한 2D·3D 그래픽 렌더링
  • 관련 기술: JavaScript, HTML, Canvas, OpenGL, Three.js

개요

WebGL(Web Graphics Library)은 웹 브라우저에서 플러그인 없이 GPU(Graphics Processing Unit)를 활용하여 2D 및 3D 그래픽을 렌더링할 수 있는 JavaScript API이다.

HTML의 <canvas> 요소 위에서 동작하며, 복잡한 3D 모델, 게임, 데이터 시각화, CAD, VR 콘텐츠 등을 웹에서 실행할 수 있게 해준다.

WebGL은 OpenGL ES를 기반으로 하며, 대부분의 최신 브라우저에서 기본 지원된다.


WebGL 구조

사용자

↓

JavaScript

↓

WebGL API

↓

GPU Driver

↓

GPU

↓

화면 출력

동작 과정

Canvas 생성

↓

WebGL Context 획득

↓

Shader 생성

↓

Vertex Buffer 생성

↓

GPU 렌더링

↓

화면 출력

핵심 구성 요소

Canvas

WebGL은 HTML Canvas 위에서 동작한다.

<canvas id="canvas"></canvas>

WebGL Context

Canvas에서 WebGL을 사용할 수 있도록 Context를 생성한다.

const canvas = document.getElementById("canvas");

const gl = canvas.getContext("webgl");

WebGL 2 사용

const gl = canvas.getContext("webgl2");

Shader

Shader는 GPU에서 실행되는 프로그램이다.

종류

  • Vertex Shader
  • Fragment Shader
Vertex

↓

Rasterizer

↓

Fragment

↓

Pixel

Vertex

3D 모델을 구성하는 점(Vertex)이다.

Triangle

A ●

 / \

●---●

B   C

Buffer

GPU 메모리에 데이터를 저장한다.

대표 종류

  • Vertex Buffer
  • Index Buffer
  • Uniform Buffer(WebGL2)

Texture

이미지를 GPU에서 사용하는 방식이다.

이미지

↓

Texture

↓

3D 모델

렌더링 과정

Vertex Data

↓

Vertex Shader

↓

Primitive Assembly

↓

Rasterization

↓

Fragment Shader

↓

Framebuffer

↓

Monitor

삼각형 출력 예제

const canvas = document.getElementById("canvas");

const gl = canvas.getContext("webgl");

gl.clearColor(0, 0, 0, 1);

gl.clear(gl.COLOR_BUFFER_BIT);

위 코드는 화면을 검은색으로 초기화한다.


HTML 예제

<canvas id="canvas" width="800" height="600"></canvas>

WebGL 1과 WebGL 2 비교

WebGL 1WebGL 2
OpenGL ES 2.0 기반OpenGL ES 3.0 기반
기본 기능 제공성능 및 기능 향상
오래된 브라우저 지원최신 브라우저 중심
제한된 기능MRT, UBO 등 지원

WebGL과 Canvas 2D 비교

WebGLCanvas 2D
GPU 사용CPU 중심
3D 지원2D 전용
고성능비교적 단순
게임 개발UI, 차트

WebGL과 Three.js

WebGLThree.js
저수준 API고수준 라이브러리
직접 Shader 작성대부분 자동 처리
난이도 높음배우기 쉬움
성능 최적화 가능생산성 높음

Three.js는 내부적으로 WebGL을 사용한다.


WebGL과 Unity WebGL

Unity 프로젝트

↓

WebGL Build

↓

HTML

JavaScript

↓

Browser 실행

Unity는 WebGL 플랫폼으로 빌드하여 브라우저에서 실행할 수 있다.


대표 활용 분야

  • 웹 게임
  • 3D 지도
  • CAD
  • 제품 미리보기
  • 데이터 시각화
  • VR
  • AR
  • 의료 영상
  • 건축 시뮬레이션
  • 디지털 트윈

대표 라이브러리

  • Three.js
  • Babylon.js
  • PlayCanvas
  • PixiJS(2D)
  • regl

장점

  • 플러그인 없이 실행 가능
  • GPU 가속 지원
  • 높은 렌더링 성능
  • 대부분의 브라우저 지원
  • JavaScript와 연동 가능
  • 모바일 브라우저 지원

단점

  • 학습 난이도가 높음
  • Shader 이해 필요
  • 디버깅이 어려움
  • 브라우저별 성능 차이
  • 저수준 API라 코드가 복잡함

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • 복잡한 프로젝트는 Three.js 활용
  • Shader 최소화 및 최적화
  • Draw Call 수 감소
  • Texture 크기 최적화
  • GPU 메모리 관리
  • WebGL Context 손실 처리
  • 모바일 성능 테스트
  • WebGL2 지원 여부 확인
  • FPS 모니터링
  • Unity WebGL 빌드 시 압축 및 로딩 최적화

WebGL과 함께 사용하는 기술


대표 활용 사례

  • Unity WebGL 게임
  • Google Maps 3D
  • 온라인 CAD
  • 제품 360도 뷰어
  • 3D 데이터 시각화
  • 브라우저 게임
  • 디지털 트윈 플랫폼
  • 의료 영상 뷰어

관련 문서


출처

  • Khronos Group WebGL 공식 문서
  • MDN Web Docs - WebGL API
  • WebGL Specification