Three.js: WebGPU ๊ธฐ๋ฐ˜ ๋ Œ๋”๋Ÿฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2019๋…„ 03์›” 09์ผ  ยท  20์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mrdoob/three.js

Three.js๊ฐ€ WebGPU๋ฅผ ์ง€์›ํ•  ๊ณ„ํš์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ• ๊นŒ์š”?

Question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์žŠ์ง€ ์•Š์„ ๊ฑฐ๋ผ๊ณ  ์žฅ๋‹ด ํ•  ์ˆ˜ ์žˆ์–ด์š” ... ๐Ÿ˜

๋ชจ๋“  20 ๋Œ“๊ธ€

์ด๋ก ์ ์œผ๋กœ๋Š” ๋จผ ๋ฏธ๋ž˜์— ์žˆ์ง€๋งŒ WebGPU ๊ทธ๋ฃน์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ฒซ ๋ฒˆ์งธ ์ œ์•ˆ / ์‚ฌ์–‘ / ์ดˆ์•ˆ ์ž‘์„ฑ์— ๋Œ€ํ•ด ์ ๊ทน์ ์œผ๋กœ ๋…ผ์˜ / ์กฐ์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ํ•œ ์‚ฌ์–‘์„ ๊ฐ–์ถ”๊ณ  ํ‘œ์ค€ํ™” ๋œ ๊ตฌํ˜„์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋ช‡ ๋…„์ด ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ WebGPU ๊ฐœ๋ฐœ์— ์ฐธ์—ฌ / ํŒ”๋กœ์šฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. https://github.com/gpuweb/gpuweb/wiki ๋ฐ https://www.w3.org/community/gpu/

WebGPU๊ฐ€ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๋ฐ”๋ผ๋Š”๋งŒํผ ๊ฐ•๋ ฅํ•œ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์ง€๋ฉด Three.js์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋ ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”.
๊ทธ๋ž˜, ๋‚œ ๋™์˜. ๋‚˜๋Š” ๋จผ ๋ฏธ๋ž˜๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ฝ”์–ด๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  three.js์— WebGPU ๋ Œ๋”๋Ÿฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? threejs๋กœ ์ „์ฒด ์—”์ง„ (API)์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? WebGPU๊ฐ€ ๋‚˜์˜ค๋”๋ผ๋„ ํ•œ๋™์•ˆ ๊ณต์กด (WebGL / WebGPU) ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. WebGPU๊ฐ€ ๋ชจ๋“  WebGL ์ƒํƒœ๊ณ„๋ฅผ ์ฃฝ์ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ WebGPU๊ฐ€ ๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„์˜ ๊ฐ„์ ‘ API ์ธ ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ WebGPU๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ & ์ง์ ‘์ ์œผ๋กœ ์ง€์›ํ•œ๋‹ค๋ฉด ๋งค์šฐ ๊ฐ•๋ ฅ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ๊ตฌ๊ธ€๊ณผ ๋‹ค๋ฅธ ๊ฑฐ๋ฌผ๋“ค์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋” ๋‚˜์€ ๋”ฅ ๋Ÿฌ๋‹ ์„ฑ๋Šฅ๊ณผ ๊ณ ์„ฑ๋Šฅ ๊ทธ๋ž˜ํ”ฝ ๊ฒฝํ—˜์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

ThreeJS์—๋Š” WebGLRenderer, WebGL2Renderer, CSS3DRenderer, SVGRenderer ... API๊ฐ€ ์ค€๋น„๋˜๋ฉด WebGPU๋„ ๋น„์Šทํ•˜๊ฒŒ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๋” ๊นŠ์€ ๋ณ€๊ฒฝ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด ์ฐจ์„ธ๋Œ€ API๋„ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๊ฒŒ๋˜์–ด ๊ธฐ์˜์ง€๋งŒ ์ง€๊ธˆ์€์ด ๋ฌธ์ œ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

๋ฟก๋ฟก
๊ณผ์—ฐ .. Three.js๋Š” ๋„ˆ๋ฌด ์œ ์—ฐํ•ด์„œ ์•ž์œผ๋กœ WebGPU๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

WebGPU ์ œ์•ˆ์— ๋”ฐ๋ฅด๋ฉด ๊ทธ๋“ค์€ Three.js ๊ฐœ๋ฐœ์ž์— ๋Œ€ํ•ด ์ฃผ์š” ํƒ€๊ฒŸ ๊ณ ๊ฐ ์ค‘ ํ•˜๋‚˜๋กœ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://gpuweb.github.io/admin/cg-charter.html

์›น ์ฝ˜ํ…์ธ ์— ์‚ฌ์šฉ๋˜๋„๋ก ์˜๋„ ๋œ GPU ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ƒ์œ„ ์ˆ˜์ค€์˜ API๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๊ทธ๋ž˜ํ”ฝ๊ณผ ๊ณ„์‚ฐ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋Œ€๋ถ€๋ถ„ ์ˆจ๊ธฐ๋Š” JavaScript ํ”„๋ ˆ์ž„ ์›Œํฌ ๊ฐœ๋ฐœ์ž. ์˜ˆ : three.js.

๋‚ด ์งˆ๋ฌธ์€ WHLSL์ด๋ผ๋Š” ๋‹ค๋ฅธ ์…ฐ์ด๋” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
https://github.com/gpuweb/WHLSL

๋‚ด ์งˆ๋ฌธ์€ WHLSL์ด๋ผ๋Š” ๋‹ค๋ฅธ ์…ฐ์ด๋” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"์šฐ๋ฆฌ๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ๊ทธ ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๊ฒ ์Šต๋‹ˆ๋‹ค."

ํ˜„์žฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ OSX ์šฉ Chrome Canary์˜ ์‹คํ—˜์  ์ง€์›๊ณผ ํ•จ๊ป˜ Google I / O์—์„œ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
https://www.youtube.com/watch?v=K2JzIUIHIhc

Babylon.js๋Š” ์ถœ์‹œ ๋  ๋•Œ์ด๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•œ๋‹ค๊ณ  ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š” :
https://forum.babylonjs.com/t/webgpu-is-coming-to-babylon-js/3122

ThreeJS ํŒ€์ด ๋ฆฌ๋“œ๋ฅผ ๋”ฐ๋ฅด๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ž ์žฌ์  ์ธ ์ง€์›์ด ์–ธ๊ธ‰๋˜์—ˆ์œผ๋ฏ€๋กœ ์™œ ์ด๊ฒƒ์„ ๋‹ซ์•„์•ผํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋…ผ๋ฆฌ์ ์œผ๋กœ, ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ๋ฅผ "์ถ”์ "ํ•˜๊ธฐ ์œ„ํ•ด ์—ด์–ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ซ์œผ๋ฉด ์ถ”์  ํ•  ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€์—†๋Š” ํ•œ ์žŠ์–ด ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

์žŠ์ง€ ์•Š์„ ๊ฑฐ๋ผ๊ณ  ์žฅ๋‹ด ํ•  ์ˆ˜ ์žˆ์–ด์š” ... ๐Ÿ˜

ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ webgpu๋ฅผ ์ฑ„ํƒํ•œ ์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋”ฐ๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์š”์ ์€ ๋‚ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด์ด ๊ธ€์„ ๋‹ซ๋Š” ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ "๋ฉ‹์ง„ ๊ฒƒ, ํ™•์‹คํ•œ ๊ฒƒ,ํ•˜์ง€๋งŒ ์ƒ๊ด€ ์—†์–ด. ๊ทธ๊ฒƒ์€ ๋ฆผ๋ณด์— ๊ฑฐ๊ธฐ์—์žˆ์„ ์ˆ˜์žˆ๋‹ค"์™€ ๊ฐ™๋‹ค.

์ถ”์‹ . ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ž˜๋ชป ์ฝ์—ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด "๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์žŠ์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹  ํ•  ์ˆ˜์žˆ๋‹ค"๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

@MichelDiz ์ด ๋ฌธ์ œ๋Š” WebGPU๋ฅผ ์ง€์›ํ•  ๊ณ„ํš์ธ์ง€ ๋ฌป๊ธฐ ์œ„ํ•ด ์—ด๋ ธ์Šต๋‹ˆ๋‹ค. ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์ด ์žˆ์Šต๋‹ˆ๋‹ค. WebGPU๋ฅผ ์ง€์›ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์•„์ง ์ž‘์—…ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ด๋ฅด์ง€๋งŒ ๋…ผ์˜ ํ•  ์ค€๋น„๊ฐ€๋˜๋ฉด ์ƒˆ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ์—ด๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@TimvanScherpenzeel ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ถ”์ƒํ™” ๋œ ํŠน์ • ๋ถ€๋ถ„์€ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผํ•˜์ง€๋งŒ ์ „์ฒด๋ฅผ "์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑ"ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์€ ์—„์ฒญ๋‚œ ๊ณผ์žฅ์ž…๋‹ˆ๋‹ค. ๋ฒ„ํผ ๋„ํ˜•์€ ๋™์ผํ•œ ํ˜•์‹์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. WebGL๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ WebGPU๋Š” ์‰์ด๋” GLSL-> WHLSL์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•ฉ๋‹ˆ๋‹ค. WebGL ํ‘œ์ค€์ด ๋œ glTF ํ˜•์‹๋„ WebGPU ํ‘œ์ค€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  Three.js API๋Š” 99 % ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด WebGPU ๋ Œ๋”๋Ÿฌ๊ฐ€ ๋‚ด๋ถ€์—์žˆ์„ ๊ฒƒ์ด๋ฉฐ, ๋ฐ”๋ผ๊ฑด๋Œ€ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜๊ณ  ๋†’์€ fps์—์„œ ํฐ ์žฅ๋ฉด์„ ๋ Œ๋”๋ง ํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์—ด์–ด ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

@sinokgr WebGPU ๋Š” 1GB ์ž์‚ฐ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์–ด๋–ป๊ฒŒ ๋„์›€์ด๋ฉ๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ ๊ธฐํ•˜ํ•™ ๋ฐ์ดํ„ฐ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” WebGL๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

@mrdoob ๋‹ต์žฅ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. 100 % ์†”์งํžˆ ๋งํ•ด์„œ, ์ฐจ์ด์ ์„ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์˜จ๋ผ์ธ์—์„œ ์ฐพ์€ ์ •๋ณด๊ฐ€ ๋งค์šฐ ๋ชจํ˜ธํ•˜๋‹ค๊ณ  ์ฃผ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์–ด์จŒ๋“  ๋‚ด ์—ฐ๊ตฌ์— ๋”ฐ๋ฅด๋ฉด). ๋‚ด๊ฐ€ ๋Š๋ผ๋Š” ์ฃผ๋œ ๋Š๋‚Œ์€ ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” @DVLP ์˜ ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€์ฒ˜๋Ÿผ ์ฝ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ฐ€์ ธ์˜ค๊ณ  ๋†’์€ fps์—์„œ ํฐ ์žฅ๋ฉด์„ ๋ Œ๋”๋ง ํ•  ์ˆ˜์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค.

์ ์–ด๋„ ์•ฝ๊ฐ„์˜ ๊ฐœ์„ ์ด์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฒŒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฌํ•œ ์ž์‚ฐ์ด ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ๋กœ๋“œ๋˜๋Š”์ง€, ๋” ๋‚˜์€ fps์ผ๊นŒ์š”? ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ๋กœ๋“œ๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜์ง€๋งŒ ์ „์ฒด GPU API๊ฐ€ ๋” ๋นจ๋ผ์ง€๋ฏ€๋กœ GPU๊ฐ€ ๊ด€๋ จ๋œ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๋” ๋นจ๋ผ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ํ–ฅ์ƒ์˜ ์ถœ์ฒ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋ธŒ๋ผ์šฐ์ €์— ๋ชจ๋ธ ํŒŒ์ผ๋กœ๋“œ-๋™์ผํ•œ ์†๋„
  2. ๋ชจ๋ธ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋ฅผ ๋ฐฐ์—ด ๋ฒ„ํผ์—๋กœ๋“œ-๋™์ผํ•œ ์†๋„
  3. GPU ํ”„๋กœ๊ทธ๋žจ๋กœ๋“œ-๋” ๋น ๋ฆ„
  4. ํ…์Šค์ฒ˜๋กœ๋“œ-์ฒ˜์Œ์—๋Š” ์†๋„๋Š” ๊ฐ™์ง€๋งŒ GPU๋กœ ๋„˜๊ธธ ๋•Œ ๋” ๋น ๋ฆ„
  5. GPU๋กœ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ์ „์†ก-๋” ๋น ๋ฅด๊ฒŒ
  6. ํ”„๋ ˆ์ž„์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ จ์˜ ๋“œ๋กœ์šฐ ์ฝœ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

@DVLP ์„ค๋ช…์— ๋งŽ์€ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํฌ์ธํŠธ 5์™€ 6์€ ๋งŽ์€ ์žฌ๋ฃŒ๋ฅผ ๊ฐ€์ง„ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ฌผ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์—๊ฒŒ ๋งค์šฐ ํฅ๋ฏธ๋กญ๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

WebGPU๊ฐ€ ๋„๋ฆฌ ์ฑ„ํƒ๋˜๊ธฐ๊นŒ์ง€๋Š” ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋•Œ๊นŒ์ง€ ๋ฉ”์‹œ ์ธ์Šค ํ„ด์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://threejs.org/docs/#api/en/objects/InstancedMesh

์ธ์Šคํ„ด์Šคํ™”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐœ์ฒด๋Š” @DVLP ๊ณ ์œ 

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰