FEInterview Prep

FEConf · FEConf 2025 2025

WebGL2를 활용한 GPGPU의 세계로

WebGL2를 범용 GPU 연산(GPGPU)에 활용해 브라우저에서 대규모 병렬 연산을 처리하는 방법을 소개합니다.

WebGL2GPGPUGPU 연산Three.js병렬 처리

요약

핵심 토픽

WebGL2 GPGPUFragment ShaderPing-Pong TechniqueGPUComputationRendererWebGPU

학습 포인트

1. 왜 GPU로 연산하는가

CPU는 소수의 강력한 코어로 복잡한 순차 연산에 최적화. GPU는 수천 개의 소형 코어로 단순한 연산을 대규모 병렬 처리에 최적화. 100만 개 파티클의 위치를 매 프레임 업데이트하려면 CPU 루프로는 16ms(60fps) 안에 처리 불가. GPU shader는 각 파티클을 동시에 처리해 수천 배 빠릅니다.

핵심 용어

병렬 처리GPU 코어Fragment Shader파티클 시스템

2. Ping-Pong Technique

GPGPU의 핵심 패턴입니다. GPU는 같은 텍스처를 읽으면서 동시에 쓸 수 없습니다. 두 개의 Framebuffer를 번갈아 사용합니다: A를 읽어 B에 쓰고, 다음 프레임에서 B를 읽어 A에 씁니다. 이렇게 하면 이전 프레임 데이터를 읽으면서 현재 프레임 데이터를 계산할 수 있습니다.

핵심 용어

Ping-PongFramebufferRead-Write 분리더블 버퍼링

3. WebGL2 vs WebGPU

WebGL2: 현재 주요 브라우저에서 지원, OpenGL ES 3.0 기반, GPGPU는 렌더링 파이프라인 우회로 구현해 복잡. WebGPU: 현대적 GPU API(Vulkan/Metal/DX12 기반), Compute Shader로 GPGPU를 직접 지원, 2024년 주요 브라우저 지원 시작. WebGPU는 WebGL2보다 훨씬 직관적인 GPGPU 코드 작성이 가능합니다.

핵심 용어

WebGPUCompute ShaderWebGL2 GPGPU브라우저 지원

면접 질문

중급

Q1. 브라우저에서 GPGPU를 사용해야 하는 상황을 예시와 함께 설명해주세요.

힌트

[감점 답변] 정의만 반복하거나 "브라우저에서 GPGPU를 사용해야 하는 상황을 예시와 함께 설명해주세요."에 대해 장단점 없이 단편적으로 답하면 감점 포인트입니다. 면접관은 실무 적용 경험이 부족하다고 판단합니다. [좋은 답변] 적합한 케이스: 수만 개 이상의 파티클/물리 시뮬레이션, 이미지/비디오 필터 실시간 처리, 머신러닝 추론(TensorFlow.js가 WebGL/WebGPU 백엔드 사용), 유체/연기 시뮬레이션. 부적합한 케이스: 순차적 의존성이 강한 연산, GPU-CPU 데이터 전송이 빈번한 경우(전송 비용이 연산 이득을 상쇄).

고급

Q2. WebGL의 Ping-Pong Technique이란 무엇이고 왜 필요한가요?

힌트

[감점 답변] 정의만 반복하거나 "WebGL의 Ping-Pong Technique이란 무엇이고 왜 필요한가요?"에 대해 장단점 없이 단편적으로 답하면 감점 포인트입니다. 면접관은 실무 적용 경험이 부족하다고 판단합니다. [좋은 답변] GPU는 동일 텍스처를 동시에 읽고 쓸 수 없습니다(feedback loop 금지). 두 텍스처(A, B)를 번갈아 사용해 이 제약을 우회합니다: 홀수 프레임은 A→B, 짝수 프레임은 B→A. 파티클 시뮬레이션에서 이전 위치를 읽어 새 위치를 계산할 때 이 패턴이 필수입니다.

중급

Q3. WebGPU가 WebGL보다 GPGPU에 적합한 이유는 무엇인가요?

힌트

[감점 답변] 정의만 반복하거나 "WebGPU가 WebGL보다 GPGPU에 적합한 이유는 무엇인가요?"에 대해 장단점 없이 단편적으로 답하면 감점 포인트입니다. 면접관은 실무 적용 경험이 부족하다고 판단합니다. [좋은 답변] WebGL은 렌더링을 위한 API라 GPGPU는 렌더링 파이프라인을 우회하는 꼼수가 필요합니다(텍스처를 데이터 버퍼로 사용). WebGPU는 Compute Shader를 1등 시민으로 지원해 렌더링 없이 순수 연산만 수행할 수 있습니다. CPU-GPU 메모리 접근도 더 효율적이고, 에러 메시지도 훨씬 명확합니다.

선행 학습

  • JavaScript 기본
  • 기초 선형대수(벡터, 행렬)
  • Canvas API 또는 WebGL 기초

핵심 타임스탬프

WebGL2 GPGPU 핵심 구간00:00 - 03:00
Fragment Shader 핵심 구간03:00 - 07:00
Ping-Pong Technique 핵심 구간07:00 - 12:00
GPUComputationRenderer 핵심 구간12:00 - 17:00

학습 방법

1단계: Three.js의 공식 예제에서 GPUComputationRenderer를 사용한 파티클 예제를 실행하고 코드를 읽어보세요. 수만 개의 파티클이 60fps로 움직이는 것을 확인하면 동기부여가 됩니다. 2단계: WebGL Fundamentals 사이트에서 텍스처를 데이터로 사용하는 챕터를 학습하고 간단한 이미지 처리 shader를 직접 작성해보세요. 3단계: WebGPU 지원 브라우저에서 WebGPU Compute Shader로 같은 연산을 구현하고 코드 복잡도 차이를 비교해보세요. 4단계: 동료에게 "WebGL2 GPGPU"의 핵심을 5분 안에 설명해보세요. 막히는 부분이 아직 구조적으로 이해되지 않은 지점입니다.