새로운 지평선, 레이 트레이싱

752025년 09월 09일5

메모리 단편화 문제를 해결하기 위한 Dawn의 내부 재설계가 한창 진행되던 어느 날, 드미트리는 W3C의 메일링 리스트에서 시작된, 작지만 의미심장한 논쟁을 발견했다.

논쟁의 발단은 한 픽사(Pixar)의 렌더링 연구원이 올린 글이었다.
“WebGPU는 실시간 래스터라이제이션(Rasterization) 분야에서 놀라운 발전을 이루었습니다. 하지만 그래픽의 다음 지평선, 즉 사실적인 빛과 그림자를 표현하는 레이 트레이싱(Ray Tracing)에 대한 논의는 언제쯤 시작될 수 있을까요? 웹에서도 영화와 같은 품질의 이미지를 실시간으로 볼 수 있는 날을 꿈꿔봅니다.”

그의 글은 커뮤니티에 잔잔한 파문을 일으켰다.
즉각적으로 현실적인 반론들이 제기되었다.
“레이 트레이싱은 너무 무겁습니다. 최신 고성능 GPU에서만 간신히 실시간으로 동작하는 기술을 웹 표준으로 논하기엔 시기상조입니다.”
“하드웨어 제조사마다 레이 트레이싱을 가속하는 방식(RT 코어, 레이 엔진 등)이 모두 다릅니다. 이걸 어떻게 하나의 API로 추상화하죠?”

모두 맞는 말이었다. 레이 트레이싱은 WebGPU 1.0이나 메시 셰이더와는 비교도 할 수 없는, 기술적 복잡성과 하드웨어 의존성을 가진 거대한 괴물이었다.

하지만 드미트리는 그 글에서, 과거 메시 셰이더 논의가 처음 시작되었을 때와 같은 종류의 ‘미래를 향한 갈증’을 느꼈다. 그는 이 논의의 불씨를 꺼뜨리고 싶지 않았다.

W3C 회의.
드미트리는 이 주제를 조심스럽게 꺼내 들었다.
“여러분, 당장 레이 트레이싱을 표준으로 만들자는 것이 아닙니다. 하지만 우리는 이제, ‘만약 웹에서 레이 트레이싱을 지원한다면, 그것은 어떤 모습이어야 할까?’에 대한 상상과 설계를 시작해볼 수는 있지 않을까요?”

그는 이것이 단순한 그래픽 품질의 문제가 아님을 역설했다.
“이것은 건축가들이 건물의 최종 렌더링을 보기 위해 더 이상 값비싼 소프트웨어를 쓸 필요가 없어지는 미래에 대한 이야기입니다. 제품 디자이너들이 브라우저 안에서 실제와 같은 재질의 프로토타입을 돌려보는 미래에 대한 이야기입니다. 웹이 단순한 정보 전달의 도구를 넘어, ‘사실적인 시뮬레이션’ 플랫폼이 되는 것에 대한 이야기입니다.”

그의 설득에, 회의의 분위기는 반대에서 신중한 탐색으로 바뀌기 시작했다.

그들은 레이 트레이싱을 WebGPU에 통합하기 위한 첫 번째 개념 설계를 시작했다.
그 과정은 거대한 산맥을 넘는 것과 같았다.

첫 번째 난관은 ‘가속 구조(Acceleration Structure)’였다.
레이 트레이싱의 핵심은, 광선이 씬(Scene)의 어떤 삼각형과 가장 먼저 부딪히는지를 빠르게 찾아내는 것이다. 수억 개의 삼각형을 일일이 검사하는 것은 불가능하다. 이를 위해, 씬의 지오메트리 정보를 계층적인 트리 구조(BVH, Bounding Volume Hierarchy)로 미리 처리해두는데, 이것이 바로 가속 구조다.

“이 가속 구조를 어떻게 생성하고 업데이트할 것인가? 이것 자체를 GPUBuffer와 같은 새로운 종류의 GPU 자원으로 취급해야 할까?”
“동적인 오브젝트가 많은 씬에서는, 매 프레임마다 이 거대한 구조를 다시 빌드해야 하는데, 그 비용을 어떻게 감당할 것인가?”

두 번째 난관은 새로운 셰이더 타입이었다.
레이 트레이싱 파이프라인은 기존의 렌더, 컴퓨트, 메시 파이프라인과는 완전히 다른 종류의 셰이더들을 필요로 했다.

  • Ray Generation Shader: 어떤 픽셀에서 어떤 방향으로 광선을 쏠지를 결정하는, 모든 것의 시작.
  • Intersection Shader: 광선이 삼각형이 아닌, 구나 복잡한 곡면 같은 절차적 지오메트리와 어떻게 교차하는지를 정의.
  • Any-Hit / Closest-Hit Shader: 광선이 물체에 부딪혔을 때 어떤 일이 일어나는지를 결정. 재질의 색상을 계산하거나, 그림자를 만들기 위해 또 다른 광선을 쏘거나.
  • Miss Shader: 광선이 아무것에도 부딪히지 않았을 때, 예를 들어 하늘의 색상을 결정.

이 수많은 새로운 셰이더들을 WGSL에 어떻게 통합할 것인가? 기존의 파이프라인과 어떻게 상호작용하게 할 것인가?

논의는 몇 달간 이어졌다. 명확한 결론은 나오지 않았다. 너무나도 거대하고 복잡한 문제였기에, 누구도 섣불리 정답을 제시할 수 없었다.

하지만 중요한 것은, 그들이 ‘시작했다’는 사실이었다.
그들은 당장의 구현을 목표로 하지 않았다. 대신, 미래에 대한 공동의 청사진을 그리기 시작했다. 그들은 Vulkan Ray Tracing, DirectX Raytracing (DXR), Metal Ray Tracing의 사양을 함께 연구하며, 그들의 공통점과 차이점을 분석하고, 웹에 가장 적합한 추상화 모델에 대한 아이디어를 교환했다.

드미트리는 이 과정이, 10여 년 전 WebGPU의 첫걸음과 놀랍도록 닮아있음을 느꼈다.
그때도 그들은 WebGL의 한계라는 명확한 문제 앞에서, Vulkan, Metal, DirectX 12라는 세 개의 다른 세계를 어떻게 하나로 묶을지 고민했었다.

이제 그들은 래스터라이제이션의 한계라는 새로운 문제 앞에서, 세 개의 다른 레이 트레이싱 구현체를 어떻게 하나로 묶을지 고민하고 있었다.

그는 깨달았다.
기술의 진보는 하나의 정상을 정복하고 끝나는 것이 아니라는 것을.
그것은 하나의 지평선을 넘으면, 그 너머에 또 다른 새로운 지평선이 나타나는, 끝없는 항해와도 같다는 것을.

비록 지금 그들의 배는 짙은 안갯속에 있지만, 그들은 함께 노를 젓기 시작했다. 언젠가 안개가 걷히고, 웹에서 실시간 레이 트레이싱이라는 새로운 대륙이 모습을 드러낼 그날을 향하여. 드미트리는 그 항해의 끝을 보지 못할 수도 있었다. 하지만 그는 기꺼이, 다음 세대를 위한 길을 여는 첫 번째 파도를 가르는 역할을 맡기로 했다.