(번역) 크롬은 WebGPU API를 기본값으로 제공할 것이며, 이것이 중요한 이유는 다음과 같습니다.

sehyun hwang·2023년 5월 1일
19

FE 번역글

목록 보기
19/36
post-thumbnail

차세대 웹 그래픽 API는 WebGL의 단점을 해결하는 것을 목표로 합니다.

원문 : https://arstechnica.com/gadgets/2023/04/chrome-113-will-enable-webgpu-a-modern-low-overhead-graphics-api-for-the-web/

구글은 현재 베타 상태에 있는 크롬 113 버전부터 WebGPU를 기본으로 지원한다고 오늘(2023년 4월 8일 기준) 발표했습니다. 2017년부터 개발 중인 WebGPU는 마이크로소프트의 Direct3D 12, 애플의 Metal, 그리고 Vulkan과 같이 오버헤드가 적은 API의 이점을 웹 브라우저 및 기타 앱에 제공하는 것을 목표로 하는 차세대 그래픽 API입니다.

WebGPU는 한동안 크롬에서 사용할 수 있었지만, 현재는 기본 설정값이 꺼진 상태입니다. 왜냐하면 아직 API가 마무리되지 않았으며 업데이트가 계속되면서 많은 변경이 발생할 수 있기 때문입니다. 구글은 모질라와 애플이 결국에는 파이어폭스와 사파리에서 WebGPU를 지원할 것이라고 했습니다. 그리고 마이크로소프트 엣지 및 오페라 같은 크로미움 엔진 기반의 브라우저도 마찬가지로 이 기능을 활성화하도록 선택할 수 있을 것이라고 했습니다.

크롬 113은 우선 Windows, MacOS, ChromeOS에서 WebGPU를 지원하며 Linux 및 Android와 같은 "다른 플랫폼에 대한 지원"은 "올해 말에 지원될 예정"이라고 합니다. 크롬 113 버전은 5월 중 모든 크롬 사용자에게 배포될 예정입니다.

새롭거나 업데이트된 API, 이미지 형식 또는 비디오 코덱에 관계없이 크롬의 지원은 새로운 표준을 형성하는 데 큰 도움이 됩니다. StatCounter 데이터에 따르면 크롬은 전 세계 브라우저 시장의 대략 3분의 2를 차지하고 있으며, 다른 크로미움 기반의 브라우저까지 포함하면 브라우저 시장 점유율이 약 80%에 달합니다. 만약 사파리와 파이어폭스에도 지원이 추가되면 사실상 모든 웹 브라우저에서 WebGPU 코드를 실행할 수 있습니다. 따라서 WebGPU가 무엇이며 왜 존재하는지 충분히 알아볼 가치가 있습니다.

WebGPU가 무엇인가요?

WebGPU는 WebGL의 후속 버전입니다. WebGL은 훨씬 오래된 API로, 어도비 플래시와 같은 서드파티 플러그인 없이 브라우저에서 OpenGL 기반의 그래픽을 렌더링할 수 있도록 해줍니다. 2009년 출시될 당시에 획기적이었지만, 오늘날의 WebGL은 현재 GPU의 모든 기능을 활용하지 못하고, 드라이버 오버헤드로 성능이 저하될 수 있으며, GPU 컴퓨팅 워크로드에 대해 제한적으로 지원하는 등 OpenGL이 겪었던 문제를 동일하게 겪고 있습니다.

"WebGL은 주로 이미지를 그리는 데 사용되지만 큰 노력을 기울여 다른 종류의 계산을 수행하도록 용도를 변경할 수 있습니다. 반면 WebGPU는 GPU에서 일반적인 계산을 수행하는 데 최고 수준의 지원을 제공합니다." 라고 초안 문서에서 WebGPU의 존재 이유를 설명합니다. 즉, 새로운 API를 통해 Babylon.js와 같은 프레임워크, 그리고 Unity와 같은 게임 엔진에서 향상된 그래픽을 구현할 수 있습니다. 또한 머신 러닝과 AI에 사용되는 것과 같은 GPU 가속 워크로드를 지원하며, 웹 기반의 사진과 비디오 앱에서 네이티브 앱의 장점인 GPU 가속을 보다 쉽게 사용할 수 있습니다.

WebGPU는 구글, 마이크로소프트, 애플, 모질라, 인텔 그리고 다른 많은 회사의 구성원으로 이뤄진 실무단에서 개발하고 있으며, 그 결과로 넓은 호환성을 유지하도록 고안되었습니다. WebGPU는 기존 그래픽 API의 직접적인 구현체이기 보다는, Direct3D 12, Metal, 그리고 Vulkan의 위에서 인터페이스로 연결된 자체 API입니다. Shopify의 엔지니어이자 전직 구글러인 Surma는 이 글에서는 이를 잘 요약하고 있습니다.

WebGL이 OpenGL을 가볍에 감싸는 것에 불과했다면, WebGPU는 다른 방식을 채택했습니다. 자체적인 추상화를 도입하고, 네이티브 API를 직접적으로 미러링하지 않습니다. 이는 부분적으로는 모든 시스템에서 단일 API를 사용할 수 없기 때문도 있지만, 극히 저수준의 메모리 관리와 같은 많은 개념이 웹용 API에 적합하지 않기 때문이기도 합니다. 대신 WebGPU는 "웹스럽고", "네이티브 그래픽 API의 특이점을 추상화하며 동시에 이를 위에서 편하게 사용할 수 있도록" 설계되었습니다. 모든 주요 브라우저 벤더가 참석하는 W3C에서 표준화되고 있습니다.

WebGPU 코드는 이식성이 매우 뛰어나다는 장점이 있습니다. WebGPU 코드를 작성하고 사용자가 하드웨어와 WebGPU를 지원하는 브라우저만 있다면, Direct3D를 구동하는 Windows에서나 Vulkan을 구동하는 Android 폰에서 동일한 결과를 얻을 수 있습니다. 또한 WebGL을 계속 실행시키는 몇 가지 해킹을 방지할 수 있습니다. 예를 들어, Windows와 Mac에서의 WebGL은 OpenGL을 직접적으로 사용하지 않고 ANGLE이라는 번역기를 사용하여 OpenGL API 호출을 Direct3D 및 Metal API 호출로 변환합니다. WebGPU를 사용하면 느리거나 유지 보수가 제대로 되지 않는 OpenGL 구현을 기반으로 코드를 작성하기 위해 별도의 프로젝트를 시작할 필요가 없습니다.

또한 WebGPU 자체적인 셰이더 언어(WGSL)를 갖고 있습니다. 크롬 팀은 이를 지원하기 위해 아직 작업 중입니다. 오늘(2023년 4월 8일 기준) 발표에서 구글은 추후 릴리즈에는 WGSL를 통해 "셰이더 코어에 더 깊은 접근을 제공할 계획이다." 라고 발표했습니다. 다른 WebGPU API처럼 WGSL 역시 플랫폼에 국한되지 않고 어떤 운영 체제를 사용하든지 관계없이 쉽게 선호하는 셰이더 언어로 변환할 수 있도록 설계되었습니다.

마지막으로 WebGPU는 이름에 "web"이 들어가 있지만 브라우저에 국한되지 않습니다. wgpu 프로젝트는 웹 브라우저 외부에 WebGPU앱을 작성하고 실행할 수 있는 Rust용 WebGPU 버전입니다.

WebGPU를 테스트해보고 싶다면 여기에서 크롬 113 베타를 사용해보실 수 있습니다. 여기에서 코드 샘플에 대한 깃헙 레포를 확인할 수 있고, WebGPUWGSL의 공식 문서도 있습니다.

2개의 댓글

comment-user-thumbnail
2023년 5월 4일

아싸 첫댓글! 좋은글 감사합니다ㅎㅎ

답글 달기
comment-user-thumbnail
2023년 5월 4일

항상 좋은 번역글 잘 읽고 있어요. 감사합니다!

답글 달기