์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ณ ์ฑ๋ฅ๊ณผ ์ง์ ์ ์ธ ํ๋์จ์ด ์ ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ ์์ค ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ์ ์ํ WebGL Vulkan ์คํ์ผ API์ ์๋ก์ด ์งํ์ ํ์ํด ๋ณด์ธ์.
WebGL Vulkan ์คํ์ผ API: ์ ์์ค ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ
์น ๊ทธ๋ํฝ์ค ์ธ๊ณ๋ ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ๊ธฐ์กด WebGL์ GPU์ ์ํธ ์์ฉํ๊ธฐ ์ํ ๋น๊ต์ ๋์ ์์ค์ ์ถ์ํ๋ฅผ ์ ๊ณตํ์ง๋ง, ๋ ์ง์ ์ ์ธ ์ ์ด์ ๋ ๋์ ์ฑ๋ฅ์ ๋ํ ์๊ตฌ๊ฐ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์๊ตฌ๋ WebGL Vulkan ์คํ์ผ API์ ๊ฐ๋ฐ์ ์ฃผ๋ํ๊ณ ์์ผ๋ฉฐ, ์ด๋ ์น ๊ฐ๋ฐ์๋ค์๊ฒ ์ด์ ์๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ง ๊ฐ๋ฅํ๋ ์ ์์ค ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ธ์์๋ ์ด ํฅ๋ฏธ๋ก์ด ํธ๋ ๋์ ๋๊ธฐ, ๊ฐ๋ , ๊ทธ๋ฆฌ๊ณ ๊ณผ์ ์ ๋ํด ํ๊ตฌํฉ๋๋ค.
์ ์ ์์ค ์น ๊ทธ๋ํฝ์ค๊ฐ ํ์ํ๊ฐ?
OpenGL ES๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ธฐ์กด WebGL์ GPU์ ์ง์ ์ํธ ์์ฉํ๋ ๋ง์ ๋ณต์ก์ฑ์ ์ถ์ํํฉ๋๋ค. ์ด๋ ๋ง์ ์ฌ์ฉ ์ฌ๋ก์์ ๊ฐ๋ฐ์ ๋จ์ํํ์ง๋ง, ๋ค์๊ณผ ๊ฐ์ด ์ต๋ ์ฑ๋ฅ๊ณผ ์ธ๋ฐํ ์ ์ด๊ฐ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ํ๊ณ๋ฅผ ์ด๋ํฉ๋๋ค:
- ๊ณ ์ฑ๋ฅ ๊ฒ์: ๋ณต์กํ 3D ๊ฒ์์ ์ข ์ข WebGL์ ํ๊ณ๋ฅผ ์ํํฉ๋๋ค. ๋ ๋ฎ์ ์์ค์ API๋ ๋ ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ, ๋ณ๋ ฌํ, ์ ฐ์ด๋ ์ต์ ํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ๋ ๋ถ๋๋ฌ์ด ํ๋ ์ ์๋์ ํ๋ถํ ์๊ฐ ํจ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๊ณ ๊ธ ์๊ฐํ: ๊ณผํ์ ์๊ฐํ, ์๋ฃ ์์, ๋ฐ์ดํฐ ๋ถ์ ๋ฑ์ ์ข ์ข ๋ฐฉ๋ํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ ๋๋งํด์ผ ํฉ๋๋ค. ์ ์์ค ์ ์ด๋ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ปดํจํธ ์ ฐ์ด๋์ ํน์ ๋ฐ์ดํฐ ํน์ฑ์ ๋ง๋ ๋ง์ถคํ ๋ ๋๋ง ํ์ดํ๋ผ์ธ ๊ฐ์ ๊ธฐ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ ๋ฌธ ๊ทธ๋ํฝ์ค ์ ํ๋ฆฌ์ผ์ด์ : CAD/CAM ์ํํธ์จ์ด, ๊ฑด์ถ ์ค๊ณ ๋๊ตฌ ๋ฐ ๊ธฐํ ์ ๋ฌธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ ์ ๋ฐ๋์ ์ฑ๋ฅ์ ์๊ตฌํฉ๋๋ค. ์ ์์ค GPU ๊ธฐ๋ฅ์ ์ ๊ทผํ๋ฉด ๊ณ ๊ธ ๋ ๋๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ ํํ ์ ์์ต๋๋ค.
- ๋จธ์ ๋ฌ๋ ๋ฐ AI: ๋ธ๋ผ์ฐ์ ์์ ๋ฒ์ฉ ์ปดํจํ (GPGPU)์ ์ํด GPU๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ด ๋ฉ๋๋ค. ์ปดํจํธ ์ ฐ์ด๋๋ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ณ๋ ฌ ์คํ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ์ด๋ฏธ์ง ์ธ์ ๋ฐ ๋ฐ์ดํฐ ๋ถ์๊ณผ ๊ฐ์ ์์ ์ ๊ฐ์ํํฉ๋๋ค.
Vulkan ์คํ์ผ API์ ๊ฐ๋ฅ์ฑ
Vulkan์ GPU์ ๋ํ ๋ช ์์ ์ ์ด๋ฅผ ์ํด ์ค๊ณ๋ ํ๋์ ์ด๊ณ ์ค๋ฒํค๋๊ฐ ์ ์ ๊ทธ๋ํฝ์ค API์ ๋๋ค. OpenGL์ ๋นํด ํจ์ฌ ๊ฐ๊ฒฐํ ์ถ์ํ ๊ณ์ธต์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ฆฌ์์ค ์ฌ์ฉ์ ์ต์ ํํ๊ณ , ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๊ด๋ฆฌํ๋ฉฐ, ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ๋ ์ ๋ฐํ๊ฒ ์ ์ดํ ์ ์๋๋ก ํฉ๋๋ค.
WebGL Vulkan ์คํ์ผ API๋ ์ด๋ฌํ ์ฅ์ ๋ค์ ์น ํ๋ซํผ์ ๋์ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ๋ณด์ ๋ฐ ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฌธ์ ๋ก ์ธํด Vulkan์ WebGL๋ก ์ง์ ํฌํ ํ๋ ๊ฒ์ ๋นํ์ค์ ์ด์ง๋ง, ์ด๋ฌํ API๋ค์ Vulkan์ ํต์ฌ ์์น์ ๋ชจ๋ฐฉํ๊ณ ์ ํฉ๋๋ค:
- ๋ช ์์ ์ ์ด: ๊ฐ๋ฐ์๋ ๋ฆฌ์์ค ์์ฑ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ์ปค๋งจ๋ ๋ฒํผ ์คํ์ ๋ํด ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.
- ๋ฎ์ ์ค๋ฒํค๋: API๋ ๋๋ผ์ด๋ฒ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ์ฌ ๋ ํจ์จ์ ์ธ GPU ํ์ฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๋ณ๋ ฌ์ฑ: Vulkan์ ์ํคํ ์ฒ๋ ๋ ๋๋ง ์์ ์ ๋ณ๋ ฌ ์คํ์ ์ฅ๋ คํ์ฌ GPU ์ฒ๋ฆฌ๋์ ๊ทน๋ํํฉ๋๋ค.
- ์ด์์ฑ: ์ง์ ์ ์ธ ํฌํธ๋ ์๋์ง๋ง, Vulkan๊ณผ ์ ์ฌํ ๊ฐ๋ ๋ฐ ์ค๊ณ ์์น์ ๊ณต์ ํ๋ API๋ฅผ ๋ง๋ค์ด ์ฝ๋ ์ฌ์ฌ์ฉ ๋ฐ ์ง์ ์ด์ ์ ์ฉ์ดํ๊ฒ ํ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค.
Vulkan ์คํ์ผ API์ ํต์ฌ ๊ฐ๋
Vulkan์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๋ ๊ฒ์ WebGL Vulkan ์คํ์ผ API๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ํต์ฌ ์์์ ๋๋ค:
์ธ์คํด์ค์ ๋๋ฐ์ด์ค
์ธ์คํด์ค(Instance)๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ Vulkan ์์คํ ๊ฐ์ ์ฐ๊ฒฐ์ ๋ํ๋ ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฌผ๋ฆฌ์ ๋๋ฐ์ด์ค(GPU)๋ฅผ ์ด๊ฑฐํ๊ณ ์ ์ญ Vulkan ํจ์์ ๋ํ ์ ๊ทผ์ ์ ๊ณตํฉ๋๋ค. ๋๋ฐ์ด์ค(Device)๋ ํน์ ๋ฌผ๋ฆฌ์ ๋๋ฐ์ด์ค์ ๋ํ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ ๋ํ๋ ๋๋ค. ๋ฆฌ์์ค, ์ปค๋งจ๋ ๋ฒํผ ๋ฐ ๋ ๋๋ง์ ํ์ํ ๊ธฐํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
WebGL ์ปจํ ์คํธ์์ "๋ฌผ๋ฆฌ์ ๋๋ฐ์ด์ค"๋ ๋ ๋ฎ์ ์์ค์ ๊ธฐ๋ฅ์ ๋ ธ์ถํ๋ ํน์ WebGL ๊ตฌํ์ผ ์๋ ์๊ณ , Vulkan ์คํ์ผ ๋ช ๋ น์ ๊ธฐ๋ณธ WebGL ํธ์ถ๋ก ๋ณํํ๋ ๊ณ์ธต์ผ ์๋ ์์ต๋๋ค.
ํ์ ์ปค๋งจ๋ ๋ฒํผ
ํ(Queue)๋ ์คํ์ ์ํด GPU์ ๋ช ๋ น์ ์ ์ถํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ค๋ฅธ ํ๋ ๊ทธ๋ํฝ์ค ๋ ๋๋ง, ์ปดํจํธ ์ฐ์ฐ, ์ ์ก ์ฐ์ฐ๊ณผ ๊ฐ์ ๋ค์ํ ์ ํ์ ๋ช ๋ น์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ปค๋งจ๋ ๋ฒํผ(Command Buffer)๋ ํ์ ์ ์ถ๋๋ ์ผ๋ จ์ ๋ช ๋ น์ ๊ธฐ๋กํ ๊ฒ์ ๋๋ค. ์ปค๋งจ๋ ๋ฒํผ๋ฅผ ๋ง๋๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก CPU ์ธก ์์ ์ธ ๋ฐ๋ฉด, ์ด๋ฅผ ์คํํ๋ ๊ฒ์ GPU ์ธก ์์ ์ ๋๋ค.
์ด๋ฌํ ๋ถ๋ฆฌ๋ ํจ์จ์ ์ธ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ฌ, GPU๊ฐ ์ด์ ๋ช ๋ น์ ์คํํ๋ ๋์ CPU๊ฐ ์ปค๋งจ๋ ๋ฒํผ๋ฅผ ์ค๋นํ ์ ์๋๋ก ํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
Vulkan ์คํ์ผ API๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ๊ด๋ฆฌ์ ๋ํ ๋ช ์์ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋ฐ์๋ ํ ์ค์ฒ, ๋ฒํผ, ์ด๋ฏธ์ง์ ๊ฐ์ ๋ฆฌ์์ค์ ๋ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ๊ทธ ์๋ช ์ ๊ด๋ฆฌํ ์ฑ ์์ด ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ ํํ๊ณ ๋ถํ์ํ ํ ๋น ๋ฐ ํด์ ๋ฅผ ๋ฐฉ์งํ ์ ์์ด ์ฑ๋ฅ์ ๋ฏผ๊ฐํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๋์คํฌ๋ฆฝํฐ์ ๋์คํฌ๋ฆฝํฐ ์
๋์คํฌ๋ฆฝํฐ(Descriptor)๋ ์ ฐ์ด๋ ํ๋ก๊ทธ๋จ์ด ํ ์ค์ฒ๋ ๋ฒํผ์ ๊ฐ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ๋ฆฌ์์ค ์ ํ, ๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์ ๋ฐ ๊ธฐํ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ์ํฉ๋๋ค. ๋์คํฌ๋ฆฝํฐ ์ (Descriptor Set)์ ๋ ๋๋ง ์ ์ ํ์ดํ๋ผ์ธ์ ๋ฐ์ธ๋ฉ๋๋ ๋์คํฌ๋ฆฝํฐ์ ๋ชจ์์ ๋๋ค. ์ด๋ฅผ ํตํด ์ ฐ์ด๋๋ ๊ณ์ฐ์ ํ์ํ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์์ต๋๋ค.
๋ ๋ ํจ์ค์ ํ๋ ์๋ฒํผ
๋ ๋ ํจ์ค(Render Pass)๋ ํ๋ฉด ์ง์ฐ๊ธฐ, ๊ฐ์ฒด ๊ทธ๋ฆฌ๊ธฐ, ํ๋ ์๋ฒํผ์ ์ฐ๊ธฐ ๋ฑ ๋ ๋๋ง ์ค์ ์ํ๋๋ ์์ ์ ์์๋ฅผ ์ ์ํฉ๋๋ค. ํ๋ ์๋ฒํผ(Framebuffer)๋ ์ปฌ๋ฌ ๋ฒํผ, ๋์ค ๋ฒํผ, ์คํ ์ค ๋ฒํผ์ ๊ฐ์ด ๋ ๋๋ง ์์ ์ ๋์์ผ๋ก ์ฌ์ฉ๋๋ ์ฒจ๋ถ ํ์ผ์ ๋ชจ์์ ๋๋ค.
ํ์ดํ๋ผ์ธ
ํ์ดํ๋ผ์ธ(Pipeline)์ ์ ์ ์ ๋ ฅ์์ ํ๋๊ทธ๋จผํธ ์ถ๋ ฅ๊น์ง ์ ์ฒด ๋ ๋๋ง ํ๋ก์ธ์ค๋ฅผ ์ ์ํฉ๋๋ค. ์ ฐ์ด๋, ์ ์ ์ ๋ ฅ ์์ฑ, ๋์คํฐํ ์ํ ๋ฐ ๊ธฐํ ๊ด๋ จ ๋งค๊ฐ๋ณ์๋ฅผ ์บก์ํํฉ๋๋ค. ํ์ดํ๋ผ์ธ์ ๋ฏธ๋ฆฌ ์์ฑ๋๋ฉฐ ์ฌ๋ฌ ๋ ๋๋ง ์์ ์ ์ฌ์ฌ์ฉ๋ ์ ์์ด ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
ํน์ WebGL Vulkan ์คํ์ผ API๊ฐ ์์ง ๊ฐ๋ฐ ์ค์ด๋ผ๋ ์ ์ ๊ฐ์ํ์ฌ ๊ฐ๋ ์ ์ธ ์์๋ฅผ ๋ค์ด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์์ 1: ์ปดํจํธ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํ ๋ง์ถคํ ํ ์ค์ฒ ๋ก๋ฉ
์งํ ๋ ๋๋ง ์์ง์ ๊ตฌ์ถํ๋ค๊ณ ์์ํด ๋ด ์๋ค. ๋ฏธ๋ฆฌ ์ฒ๋ฆฌ๋ ํ ์ค์ฒ๋ฅผ ๋ก๋ํ๋ ๋์ ์ปดํจํธ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ผ๋ก ์์ฑํ๊ณ ์ถ์ ์ ์์ต๋๋ค. Vulkan ์คํ์ผ API๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค:
- ์ํ๋ ์ฐจ์๊ณผ ํ์์ผ๋ก ํ ์ค์ฒ ๋ฆฌ์์ค๋ฅผ ํ ๋นํฉ๋๋ค.
- ์ด๊ธฐ ํ ์ค์ฒ ๋ฐ์ดํฐ(์: ๋์ด ๋งต ๊ฐ)๋ฅผ ์ ์ฅํ ๋ฒํผ๋ฅผ ํ ๋นํฉ๋๋ค.
- ๋์ด ๋งต์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ค์ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ์ปดํจํธ ์ ฐ์ด๋๋ฅผ ๋ง๋ญ๋๋ค.
- ์ปดํจํธ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํ๋ ํ์ดํ๋ผ์ธ์ ๋ง๋ญ๋๋ค.
- ์ปดํจํธ ์ ฐ์ด๋๋ฅผ ๋์คํจ์นํ์ฌ ๋์ด ๋งต์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ ์ค์ฒ์ ์ฐ๋๋ก ํ๋ ์ปค๋งจ๋ ๋ฒํผ๋ฅผ ๋ง๋ญ๋๋ค.
- ์ปค๋งจ๋ ๋ฒํผ๋ฅผ ์ปดํจํธ ํ์ ์ ์ถํฉ๋๋ค.
- ์ดํ ๋ ๋๋ง ํจ์ค์์ ์์ฑ๋ ํ ์ค์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์งํ์ ๋ ๋๋งํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฐ์ดํฐ ์์ถ, ์คํธ๋ฆฌ๋ฐ ๋๋ ์ ์ฐจ์ ์์ฑ์ด ๊ฐ๋ฅํ๋ค๋ ์ฌ๋ฌ ์ฅ์ ์ ์ ๊ณตํฉ๋๋ค.
์์ 2: ํจ์จ์ ์ธ ํํฐํด ์์คํ ๋ ๋๋ง
์๋ง์ ํํฐํด์ ํจ์จ์ ์ผ๋ก ๋ ๋๋งํ๋ ค๋ฉด ์ ์คํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. Vulkan ์คํ์ผ API๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค:
- ํํฐํด ๋ฐ์ดํฐ(์์น, ์๋, ์์ ๋ฑ)๋ฅผ ์ ์ฅํ ๋ฒํผ๋ฅผ ํ ๋นํฉ๋๋ค.
- ์ปดํจํธ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฎฌ๋ ์ด์ ๊ท์น์ ๋ฐ๋ผ ํํฐํด ์์น์ ์๋๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ ์ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ํํฐํด ์์น๋ฅผ ํ๋ฉด ๊ณต๊ฐ์ผ๋ก ๋ณํํฉ๋๋ค.
- ์ธ์คํด์ค ๋ ๋๋ง ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋จ์ผ ๋๋ก์ฐ ์ฝ๋ก ์ฌ๋ฌ ํํฐํด์ ๊ทธ๋ฆฝ๋๋ค.
- ํ๋๊ทธ๋จผํธ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ํํฐํด์ ์์ ์ ํ๋๋ค.
์ปดํจํธ ์ ฐ์ด๋๋ GPU์์ ๋ณ๋ ฌ๋ก ์คํ๋ ์ ์์ด CPU ๊ธฐ๋ฐ ์๋ฎฌ๋ ์ด์ ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ํํฐํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ธ์คํด์ค ๋ ๋๋ง์ ๋๋ก์ฐ ์ฝ ์๋ฅผ ์ต์ํํ์ฌ ์ฑ๋ฅ์ ๋์ฑ ํฅ์์ํต๋๋ค.
๊ณผ์ ๋ฐ ๊ณ ๋ ค์ฌํญ
WebGL Vulkan ์คํ์ผ API์ ์ ์ฌ์ ์ด์ ์ ์๋นํ์ง๋ง, ํด๊ฒฐํด์ผ ํ ๋ช ๊ฐ์ง ๊ณผ์ ๊ฐ ์์ต๋๋ค:
- ๋ณด์: ์ ์์ค GPU ์ ๊ทผ์ ๋ ธ์ถํ๋ ๊ฒ์ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํฉ๋๋ค. API๋ ์ ์ฑ ์ฝ๋๊ฐ ์์คํ ์ ์์์ํค๋ ๊ฒ์ ๋ฐฉ์งํ๋๋ก ์ ์คํ๊ฒ ์ค๊ณ๋์ด์ผ ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ํธํ์ฑ: ๋ธ๋ผ์ฐ์ ์ ํ๋ซํผ๋ง๋ค ์ ์์ค GPU ๊ธฐ๋ฅ์ ๋ํ ์ง์ ์์ค์ด ๋ค๋ฅผ ์ ์์ต๋๋ค. API ๊ตฌํ์ ์ ์ ๊ฐ๋ฅํด์ผ ํ๋ฉฐ ๊ตฌํ ์์คํ ์ ์ํ ๋์ฒด ๋ฐฉ์์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
- ๋ณต์ก์ฑ: Vulkan ์คํ์ผ API๋ ๋ณธ์ง์ ์ผ๋ก ๊ธฐ์กด WebGL๋ณด๋ค ๋ ๋ณต์กํฉ๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด GPU ์ํคํ ์ฒ์ ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ์ ๋ํ ํ์คํ ์ดํด๊ฐ ํ์ํฉ๋๋ค.
- ๋๋ฒ๊น : ์ ์์ค ๊ทธ๋ํฝ์ค ์ฝ๋๋ฅผ ๋๋ฒ๊น ํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ต๋๋ค. GPU ์ํ ๊ฒ์ฌ, ์ปค๋งจ๋ ๋ฒํผ ๋ถ์, ์ฑ๋ฅ ํ๋กํ์ผ๋ง์ ์ํ ๋๊ตฌ์ ๊ธฐ์ ์ด ํ์์ ์ ๋๋ค.
- ์ถ์ํ ์์ค: ์ ์์ค ์ ์ด์ ๊ณ ์์ค ์ถ์ํ ์ฌ์ด์ ์ฌ๋ฐ๋ฅธ ๊ท ํ์ ์ฐพ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. API๋ ๊ฒฝํ์ด ์ ์ ๊ฐ๋ฐ์๋ ์ ๊ทผํ ์ ์์ผ๋ฉด์ ๊ณ ๊ธ ์ฌ์ฉ์๋ฅผ ์ํ ์ถฉ๋ถํ ์ ์ฐ์ฑ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: ๋ช ์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด์ง๋ง ์ ์ฌ์ ์ธ ์ค๋ฅ์ ์์ธ์ด๊ธฐ๋ ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋์์ ์ถฉ๋์ ํผํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ํด์ ๋ฅผ ์ ์คํ๊ฒ ์ถ์ ํด์ผ ํฉ๋๋ค.
๊ธฐ์กด ๋ฐ ์ ํฅ ๊ธฐ์
์ฌ๋ฌ ํ๋ก์ ํธ์ ์ด๋์ ํฐ๋ธ๊ฐ WebGL Vulkan ์คํ์ผ API๋ฅผ ํ์ํ๊ณ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Dawn: ํฌ๋ก์ค ํ๋ซํผ, dawn.googlesource.com์ WebGPU์ ์น ํธํ API ๊ตฌํ์ ๋๋ค.
- WebGPU: WebGL์ ํ๊ณ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์น์ ์ํ ์๋กญ๊ณ ํ๋์ ์ธ ๊ทธ๋ํฝ์ค API๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ํ๋ก์ ํธ์ ๋๋ค. WebGPU๋ Vulkan, Metal, Direct3D 12์ ๊ฐ๋ ์ ๋ง์ด ์ฐจ์ฉํฉ๋๋ค.
์น ๊ทธ๋ํฝ์ค์ ๋ฏธ๋
WebGL Vulkan ์คํ์ผ API๋ ์น ๊ทธ๋ํฝ์ค ์งํ์ ์์ด ์ค์ํ ์ง์ ์ ์๋ฏธํฉ๋๋ค. ์ ์์ค GPU ๊ธฐ๋ฅ์ ๋ํ ์ ๊ทผ์ ์ ๊ณตํจ์ผ๋ก์จ, ์ด๋ฌํ API๋ ๊ณ ์ฑ๋ฅ์ ์๊ฐ์ ์ผ๋ก ๋ฐ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค. ๊ณผ์ ๊ฐ ๋จ์์์ง๋ง, ์ด๋ฌํ ๊ธฐ์ ์ ์ง์์ ์ธ ๊ฐ๋ฐ๊ณผ ์ฑํ์ ์น์ ๊ทธ๋ํฝ ์ง์ฝ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ฐ๋ ฅํ ํ๋ซํผ์ผ๋ก ๋ณํ์ํฌ ๊ฒ์ ์ฝ์ํฉ๋๋ค.
์์ํ๊ธฐ
WebGL Vulkan ์คํ์ผ API๋ฅผ ํ์ํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ค๋ฉด ๋ช ๊ฐ์ง ์ ์ ์ฌํญ์ด ์์ต๋๋ค:
- Vulkan ๋ฐฐ์ฐ๊ธฐ: Vulkan์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ต์ํด์ง์ธ์. ๋ง์ ์จ๋ผ์ธ ์๋ฃ, ํํ ๋ฆฌ์ผ, ์์ ์ด ์์ต๋๋ค. Vulkan์ ์ดํดํ๋ฉด WebGL Vulkan ์คํ์ผ API๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ๊ฒฌ๊ณ ํ ๊ธฐ์ด๊ฐ ๋ ๊ฒ์ ๋๋ค.
- WebGPU ํ์ํ๊ธฐ: WebGPU ํ๋ก์ ํธ๋ฅผ ์กฐ์ฌํด ๋ณด์ธ์. ๊ฐ๋ฐ ๊ณผ์ ์ ๋ฐ๋ฅด๊ณ , ์ํ ์ฝ๋๋ก ์คํํ๋ฉฐ, ์ปค๋ฎค๋ํฐ์ ๊ธฐ์ฌํ์ธ์.
- Dawn์ผ๋ก ์คํํ๊ธฐ: Dawn์ WebGPU์ ํฌ๋ก์ค ํ๋ซํผ ๊ตฌํ์ผ๋ก, ๋ค์ํ ํ๋ซํผ์์ WebGPU ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ๊ณ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
- ์ต์ ์ ๋ณด ์ ์งํ๊ธฐ: ์น ๊ทธ๋ํฝ์ค์ ์ต์ ๊ฐ๋ฐ ๋ํฅ์ ํ์ ํ์ธ์. ๊ด๋ จ ๋ธ๋ก๊ทธ, ํฌ๋ผ, ์ปจํผ๋ฐ์ค๋ฅผ ํ๋ก์ฐํ์ฌ ์๋ก์ด ๊ธฐ์ ๊ณผ ๊ธฐ๋ฒ์ ๋ํด ๋ฐฐ์ฐ์ธ์.
๊ฒฐ๋ก
WebGL Vulkan ์คํ์ผ API์ ๋ฑ์ฅ์ ์น ๊ทธ๋ํฝ์ค์ ํจ๋ฌ๋ค์ ์ ํ์ ์๋ฆฝ๋๋ค. ์ ์์ค ์ ์ด๋ฅผ ์์ฉํ๊ณ Vulkan๊ณผ ๊ฐ์ ํ๋์ ์ธ ๊ทธ๋ํฝ์ค API์ ์์น์ ์ฑํํจ์ผ๋ก์จ, ์น ๊ฐ๋ฐ์๋ค์ GPU์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ๋ฐํํ๊ณ ์ง์ ์ผ๋ก ๋ชฐ์ ๊ฐ ์๊ณ ๊ณ ์ฑ๋ฅ์ธ ์น ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๊ฒ์ ์น ๊ธฐ๋ฐ ๊ฒ์, ์๊ฐํ, ์ ๋ฌธ ๊ทธ๋ํฝ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ ํ๊ณ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ ๋ด์์ ๋จธ์ ๋ฌ๋ ๊ธฐ๋ฅ์ ํฅ์์ํฌ ์ ์ฌ๋ ฅ์ ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ๊ฐ๋ฐ ๋ถ์ผ์ ๋๋ค. ์ด๋ฌํ API๊ฐ ์ฑ์ํ๊ณ ๋ ๋๋ฆฌ ์ฑํ๋จ์ ๋ฐ๋ผ, ์ฐ๋ฆฌ๋ ๊ฐ๋ฅํ ๊ฒ์ ๊ฒฝ๊ณ๋ฅผ ๋ํ๋ ํ์ ์ ์ด๊ณ ์๊ฐ์ ์ผ๋ก ๋๋ผ์ด ์๋ก์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌผ๊ฒฐ์ ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค.