web-graphic.md

๐Ÿก

์›น ๊ทธ๋ž˜ํ”ฝ์ด๋ž€? (WebGL, OpenGL, WebGPU)

| ๋ชฉํ‘œ | ์›น ๊ทธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด์ž. | | -------- | ------------------------------------------------ | | ํ•™์Šต๋‚ด์šฉ | ์›น ๊ทธ๋ž˜ํ”ฝ ๊ธฐ๋ณธ ๊ฐœ๋…, WebGL๊ณผ OpenGL, WebGPU ์†Œ๊ฐœ | | ๋‚œ์ด๋„ | ๐Ÿฅš |

๐Ÿ“Ž ๋ ˆํผ๋Ÿฐ์Šค

  1. ๋ธŒ๋ผ์šฐ์ €์˜ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†: https://learn.microsoft.com/en-us/troubleshoot/developer/browsers/core-features/gpu-hardware-acceleration
  2. WebGL ์ข‹์€ ๋ฌธ์„œ ๐Ÿ‘: https://webglfundamentals.org/webgl/lessons/ko/
    https://github.com/gfxfundamentals/webgl-fundamentals
  3. 100์ดˆ ๋งŒ์— WebGL ์•Œ์•„๋ณด๊ธฐ: https://www.youtube.com/watch?v=f-9LEoYYvE4
  4. OpenGL: https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/
  5. WebGPU: https://www.youtube.com/watch?v=m6T-Mq1BPXg
    https://developer.chrome.com/blog/webgpu-release/ > https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API
  6. WebGL & WebGPU ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    - spline https://spline.design/
    - Three.js https://threejs.org/
    - Babylon.js https://www.babylonjs.com/
    - (ML) Tensorflow https://www.tensorflow.org/js?hl=ko

1. ์›น ๊ทธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด์„œ ๐Ÿ–ผ

์›น ๊ทธ๋ž˜ํ”ฝ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์›น ํŽ˜์ด์ง€์˜ ๊ทธ๋ž˜ํ”ฝ ์š”์†Œ(์ด๋ฏธ์ง€, ๋™์˜์ƒ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ)์„ ํ™”๋ฉด์— ๋žœ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด GPU์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋“œ์›จ์–ด ๊ฐ€์† Hardware Acceleration ์ด๋ž€?

https://learn.microsoft.com/en-us/troubleshoot/developer/browsers/core-features/gpu-hardware-acceleration

ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์€ ๊ทธ๋ž˜ํ”ฝ๊ณผ ํ…์ŠคํŠธ ๋žœ๋”๋ง์„ CPU์—์„œ GPU๋กœ ์˜คํ”„๋กœ๋“œํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ทธ๋ž˜ํ”ฝ ์ž‘์—…์˜ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋˜๊ณ  ๋” ๋ณต์žกํ•œ ๊ทธ๋ž˜ํ”ฝ ํšจ๊ณผ์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์›ํ™œํ•˜๊ฒŒ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๊ณ , ๋™์‹œ์— CPU๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ 3D ๊ทธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ณต์žกํ•œ ์กฐ๋ช…, ํ…์Šค์ฒ˜, ๊ทธ๋ฆผ์ž, ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ๋งŽ์€ ๊ณ„์‚ฐ๊ณผ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š”๋ฐ, ์ด๋•Œ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์€ GPU์˜ ์„ฑ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์ž‘์—…์„ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์˜์ƒ ๋ฐ ์Œ์„ฑ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”, ์ธ๊ณต์ง€๋Šฅ ๋“ฑ ๋‹ค๋ฅธ ์˜์—ญ์—์„œ๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GPU, Graphics Proccessing Unit ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

์ปดํ“จํ„ฐ๊ฐ€ 60fps์—์„œ ๊ทธ๋ž˜ํ”ฝ์„ ๋žœ๋”๋งํ•˜๋ ค๋ฉด ์ˆ˜๋งŽ์€ linear algebra (์„ ํ˜• ๋Œ€์ˆ˜) ํ˜น์€ matrix multiplication (ํ–‰๋ ฌ ๊ณฑ์…‰) ๊ณ„์‚ฐ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ฑ

๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง์€ ๋งค์šฐ ๋งŽ์€ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ(๋ฒ„ํ…์Šค, ํ…์Šค์ฒ˜, ์กฐ๋ช… ์ •๋ณด ๋“ฑ)๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋ณต์žกํ•œ ๊ทธ๋ž˜ํ”ฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์™€ ๊ณ ์„ฑ๋Šฅ ๋ฒกํ„ฐ ์—ฐ์‚ฐ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

CPU๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”์–ด ์ˆ˜๊ฐ€ ์ œํ•œ๋˜์–ด ์žˆ๊ณ , ์ง๋ ฌ์ ์ธ ์ž‘์—…์— ๋” ์ ํ•ฉํ•œ ์„ค๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๊ทธ๋ž˜ํ”ฝ ๊ฐ€์†๊ธฐ์ธ GPU๋Š” ๋งŽ์€ ์ˆ˜์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์œ ๋‹›์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๋™์‹œ์— ๋งŽ์€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

| | ์ ํ•ฉํ•œ ์ž‘์—… | ํŠน์ง• | | --- | ------------- | -------------------------------------- | | CPU | ์ง๋ ฌ์ ์ธ ์ž‘์—… | ์ฝ”์–ด ์ˆ˜๊ฐ€ ์ œํ•œ๋˜์–ด ์žˆ์Œ | | GPU | ๋ณ‘๋ ฌ์ ์ธ ์ž‘์—… | ๋งŽ์€ ์ˆ˜์˜ ์ฝ”์–ด์™€ ๋ฒกํ„ฐ ์—ฐ์‚ฐ ์œ ๋‹›์„ ๊ฐ€์ง |

๋”ฐ๋ผ์„œ GPU๋Š” ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง ์ž‘์—…์— ํŠนํ™”๋œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜๋ฏ€๋กœ CPU๋ณด๋‹ค ๋” ๋†’์€ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


2. OpenGL & WebGL ๐ŸšŽ

WebGL์€ HTML5์™€ ํ•จ๊ป˜ ๋“ฑ์žฅํ•˜์˜€์œผ๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ์ฃผ์š” ์›น ๋ธŒ๋ผ์šฐ์ €(Chrome, Firefox, Safari, Edge ๋“ฑ)์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. OpenGL๊ณผ WebGL์€ ํฌ๋กœ๋…ธ์Šค ๊ทธ๋ฃน Khronos Group์—์„œ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

OpenGL, Open Graphic Library

1992๋…„๋ถ€ํ„ฐ ์‚ฌ์šฉํ•ด์˜จ OpenGL์€ 2D ๋ฐ 3D ๊ทธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ API์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ C ๋˜๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ์ปดํ“จํ„ฐ์˜ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ(GPU)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”ฝ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์›น ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์™ธ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

WebGL, Web Graphic Library

WebGL์ด๋ž€ ์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒํ•œ 2D ๋ฐ 3D ๋ฐฑํ„ฐ ๊ทธ๋ž˜ํ”ฝ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ API ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ GPU๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์™ธ๋ถ€ ํ”Œ๋Ÿฌ๊ทธ์ธ(ex ํ”Œ๋ž˜์‹œ) ์—†์ด ์ง์ ‘ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ canvas์— ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๊ทธ๋ž˜ํ”ฝ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ: 3D Web Design, Games(unity engine), Data Visualization, Physics simulations

| | OpenGL | WebGL | | -------------- | ----------------------------------------------- | ------------------------- | | ์‚ฌ์šฉ ์‹œ์ž‘ ์‹œ๊ธฐ | ์ดˆ๊ธฐ, 1992 | HTML5, 2011 | | ์ •์˜ | ๋„ค์ดํ‹ฐ๋ธŒ ๊ทธ๋ž˜ํ”ฝ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ | ์›น ํ‘œ์ค€ ๊ทธ๋ž˜ํ”ฝ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ | | ํ”Œ๋žซํผ | ํฌ๋กœ์Šค ํ”Œ๋žซํผ API, ๋ฐ์Šคํฌํ†ฑ ๋ฐ ๋ชจ๋ฐ”์ผ ์šด์˜ ์ฒด์ œ | ์›น ๋ธŒ๋ผ์šฐ์ € | | ์–ธ์–ด | C, C++ ๋“ฑ | JavaScript |


3. ๊ฐœ์„ ๋œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ทธ๋ž˜ํ”ฝ API ๐Ÿš„

2014๋…„๋ถ€ํ„ฐ 2016๋…„ ์‚ฌ์ด์—๋Š” ์ ์  ๋†’์•„์ง€๋Š” ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง ์ˆ˜์ค€๊ณผ, ๋จธ์‹  ๋Ÿฌ๋‹ ๋ฐ ์ƒˆ๋กœ์šด ๋ Œ๋”๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋„ค์ดํ‹ฐ๋ธŒ GPU API ๋“ค์ด ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๊ฐ„์— ๋ฆด๋ฆฌ์ฆˆ๋œ GPU API๋กœ๋Š” ํฌ๋กœ๋…ธ์Šค ๊ทธ๋ฃน(Khronos Group)์ด ๊ฐœ๋ฐœํ•œ Vulkan๊ณผ OpenGL ๋ฐ WebGL์„ ๋Œ€์ฒดํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์• ํ”Œ์˜ Metal, ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ Direct3D 12๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

| Vulkan | Metal | Direct3D12 | | ------------------------------------ | ----------------------------- | --------------------------- | | Khronos Group | Apple | Microsoft | | ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ทธ๋ž˜ํ”ฝ ๋ฐ ์ปดํ“จํŒ… API | ์• ํ”Œ์˜ ์ž์ฒด ๊ทธ๋ž˜ํ”ฝ API | ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ๊ทธ๋ž˜ํ”ฝ API | | ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ (Windows, macOS ๋“ฑ) | macOS, iOS | Windows, Xbox | | C, C++, Vulkan API | Objective-C, Swift, Metal API | C++, C#, Direct3D API |

Vulkan์€ ํฌ๋กœ๋…ธ์Šค ๊ทธ๋ฃน์ด ๊ฐœ๋ฐœํ•œ ์ €๋ ˆ๋ฒจ GPU API๋กœ, ๋†’์€ ์„ฑ๋Šฅ๊ณผ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ์˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ง€์›์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Vulkan์€ ๋ Œ๋”๋ง, ์ปดํ“จํŒ… ๋ฐ ๊ฐ€์†ํ™”๋œ ๊ทธ๋ž˜ํ”ฝ ์ž‘์—…์„ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์ €์ˆ˜์ค€ API์ž…๋‹ˆ๋‹ค.

Metal์€ ์• ํ”Œ์ด macOS ๋ฐ iOS์—์„œ OpenGL์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…ํ•œ ์ž์ฒด ๊ทธ๋ž˜ํ”ฝ API์ž…๋‹ˆ๋‹ค. Metal์€ ๋น ๋ฅธ ์„ฑ๋Šฅ๊ณผ ์ €์ „๋ ฅ ์†Œ๋ชจ, ๋‚ฎ์€ ์˜ค๋ฒ„ํ—ค๋“œ ๋“ฑ์„ ํŠน์ง•์œผ๋กœ ํ•˜๋ฉฐ, ์• ํ”Œ์˜ ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ํ†ตํ•ฉ์— ์ตœ์ ํ™”๋œ ์„ค๊ณ„๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Direct3D 12๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ Windows ์šด์˜ ์ฒด์ œ์šฉ์œผ๋กœ ๊ฐœ๋ฐœํ•œ ์ €์ˆ˜์ค€ GPU API์ž…๋‹ˆ๋‹ค. Direct3D 12๋Š” ๋‹ค์ค‘ ์Šค๋ ˆ๋”ฉ ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•˜์—ฌ CPU ๋ฐ GPU ๊ฐ„์˜ ํšจ์œจ์ ์ธ ์ž‘์—… ๋ถ„๋ฐฐ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋†’์€ ์„ฑ๋Šฅ๊ณผ ์ตœ์ ํ™”๋œ ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด GPU API๋Š” ๋” ๋‚˜์€ ์„ฑ๋Šฅ๊ณผ ์ œ์–ด๋ ฅ์„ ์ œ๊ณตํ•˜์—ฌ ๋” ๋ณต์žกํ•˜๊ณ  ํ˜„์‹ค๊ฐ ์žˆ๋Š” ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด๋Ÿฌํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋†’์€ ์ˆ˜์ค€์˜ ๊ทธ๋ž˜ํ”ฝ ํ’ˆ์งˆ๊ณผ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•˜๋ฉฐ, ๋จธ์‹  ๋Ÿฌ๋‹ ๋ฐ ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•œ ํ˜์‹ ์ ์ธ ๊ทธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์ˆ˜์ค€ GPU API & ๊ณ ์ˆ˜์ค€ GPU API

์ €์ˆ˜์ค€ GPU API๋Š” ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ API๋กœ, ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•˜๋“œ์›จ์–ด์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ณ ์ˆ˜์ค€ ๊ทธ๋ž˜ํ”ฝ API๋ณด๋‹ค ๋” ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋” ๋งŽ์€ ์ œ์–ด์™€ ์ตœ์ ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์ˆ˜์ค€ GPU API(์˜ˆ: OpenGL, DirectX 11)๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ทธ๋ž˜ํ”ฝ ์ž‘์—…์„ ์ถ”์ƒํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ API๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ทธ๋ž˜ํ”ฝ ์ž‘์—…์„ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์ง€๋งŒ, ํ•˜๋“œ์›จ์–ด์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด๋‚˜ ์ตœ์ ํ™” ์˜ต์…˜์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ์ ‘๊ทผ์€ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.

| | ์ €์ˆ˜์ค€ GPU API | ๊ณ ์ˆ˜์ค€ ๊ทธ๋ž˜ํ”ฝ API | | ---------------------- | ---------------------------- | ---------------------------- | | ์ถ”์ƒํ™” ์ˆ˜์ค€ | ๋‚ฎ์Œ | ๋†’์Œ | | ํ•˜๋“œ์›จ์–ด ์ ‘๊ทผ | ์ง์ ‘์  | ์ œํ•œ์  | | ๊ฐœ๋ฐœ์ž ์š”๊ตฌ ์‚ฌํ•ญ | ๊ณ ์„ฑ๋Šฅ ๋ Œ๋”๋ง ๋ฐ ์ตœ์ ํ™” | ๊ทธ๋ž˜ํ”ฝ ์ž‘์—… | | ์œ ์—ฐ์„ฑ | ๋†’์Œ | ์ œํ•œ์  | | ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” API ์ข…๋ฅ˜ | Vulkan, Metal, DirectX 12 ๋“ฑ | OpenGL, DirectX 11, WebGL ๋“ฑ |


4. WebGPU ๐Ÿ—

Chrome ships WebGPU - Chrome Developers

WebGPU๋Š” ์•ž์„œ ์„ค๋ช…ํ•œ ์ƒˆ๋กœ์šด GPU API๋ฅผ ์›น ํ™˜๊ฒฝ ๊ธฐ๋ฐ˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด ์›น ๊ทธ๋ž˜ํ”ฝ API์ž…๋‹ˆ๋‹ค. W3C์˜ โ€œGPU for the Webโ€๊ณผ ํ•จ๊ป˜ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, Apple, Google, Mozilla, Microsoft, Intel ๋“ฑ ๋งŽ์€ ํšŒ์‚ฌ์™€ ํ˜‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

2023๋…„ ํ˜„์žฌ Goolge Chrome 113์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!

WebGL์„ ๊ณ„์Šนํ•˜์—ฌ, ์›น์—์„œ Vulkan, Metal, DirectX 12์™€ ๊ฐ™์€ ๋ชจ๋˜ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฏ€๋กœ, ์›น์‚ฌ์ดํŠธ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์˜ WebGL์ด ์•„๋‹Œ, ์œ ์ €์˜ GPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๊ทธ๋ž˜ํ”ฝ ๋žœ๋”๋ง ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋จธ์‹  ๋Ÿฌ๋‹์—๋„ ๋งŽ์€ ๋ณ€ํ™”์ ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด ๋ธŒ๋ผ์šฐ์ € ์ž์ฒด์—์„œ AI ๋ชจ๋ธ์„ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.)

๋˜ํ•œ Javascript์—๋งŒ ๊ตญํ•œ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, Rust์˜ wgpu์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  WebAssembly๋กœ ์ปดํŒŒ์ผํ•˜์—ฌ ์œ ์ € ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์™ธ์˜ ์ž์„ธํ•œ ์ถ”๊ฐ€ ๋ฐ ๋ณ€ํ™” ๋‚ด์šฉ์€ Google Chrome Developers ๋กœ!

  • 2023 ecosystem
  • WebGPU ์ƒ˜ํ”Œ ํ™•์ธํ•˜๊ธฐ https://webgpu.github.io/webgpu-samples/samples/helloTriangle