VRChat์—์„œ Linux๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”ฝ์…€ ์…ฐ์ด๋” ํ˜•ํƒœ์˜ RISC-V ์—๋ฎฌ๋ ˆ์ดํ„ฐ

์ž์ฒด ์…ฐ์ด๋”๋กœ 3D ๋ชจ๋ธ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ์˜จ๋ผ์ธ ๊ฒŒ์ž„ VRChat์˜ ๊ฐ€์ƒ 3D ๊ณต๊ฐ„ ๋‚ด์—์„œ Linux ์ถœ์‹œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์‹คํ—˜ ๊ฒฐ๊ณผ๊ฐ€ ๊ณต๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์ƒ๋œ ์•„์ด๋””์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด RISC-V ์•„ํ‚คํ…์ฒ˜์˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ ํ”ฝ์…€(์กฐ๊ฐ) ์…ฐ์ด๋” ํ˜•ํƒœ๋กœ GPU ์ธก์—์„œ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค(VRChat์€ ๊ณ„์‚ฐ ์…ฐ์ด๋” ๋ฐ UAV๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Œ). ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์ฝ”๋“œ๋Š” MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค.

์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” C ์–ธ์–ด ๊ตฌํ˜„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ๊ทธ ์ƒ์„ฑ์—๋Š” Rust ์–ธ์–ด๋กœ ๊ฐœ๋ฐœ๋œ ์ตœ์†Œํ•œ์˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ riscv-rust์˜ ๊ฐœ๋ฐœ์ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๋œ C ์ฝ”๋“œ๋Š” VRChat์— ๋กœ๋“œํ•˜๊ธฐ์— ์ ํ•ฉํ•œ HLSL์˜ ํ”ฝ์…€ ์…ฐ์ด๋”๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” rv32imasu ๋ช…๋ น์–ด ์„ธํŠธ ์•„ํ‚คํ…์ฒ˜, SV32 ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์žฅ์น˜ ๋ฐ ์ตœ์†Œ ์ฃผ๋ณ€ ์žฅ์น˜ ์„ธํŠธ(UART ๋ฐ ํƒ€์ด๋จธ)๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ค€๋น„๋œ ๊ธฐ๋Šฅ์€ VRChat ๊ฐ€์ƒ ์„ธ๊ณ„์—์„œ ์ง์ ‘ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” Linux ์ปค๋„ 5.13.5 ๋ฐ ๊ธฐ๋ณธ BusyBox ๋ช…๋ น์ค„ ํ™˜๊ฒฝ์„ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

VRChat์—์„œ Linux๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”ฝ์…€ ์…ฐ์ด๋” ํ˜•ํƒœ์˜ RISC-V ์—๋ฎฌ๋ ˆ์ดํ„ฐ
VRChat์—์„œ Linux๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”ฝ์…€ ์…ฐ์ด๋” ํ˜•ํƒœ์˜ RISC-V ์—๋ฎฌ๋ ˆ์ดํ„ฐ

์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” ์‹คํ–‰ ์ค‘์— ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ฐ ์‚ฌ์šฉ๋˜๋Š” VRChat์šฉ์œผ๋กœ ์ œ๊ณต๋˜๋Š” Udon ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณด์™„๋œ ์ž์ฒด ๋™์  ํ…์Šค์ฒ˜(Unity Custom Render Texture)์˜ ํ˜•ํƒœ๋กœ ์…ฐ์ด๋”์—์„œ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. RAM์˜ ๋‚ด์šฉ๊ณผ ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ์‹œ์Šคํ…œ์˜ ํ”„๋กœ์„ธ์„œ ์ƒํƒœ๋Š” 2048x2048 ํ”ฝ์…€ ํฌ๊ธฐ์˜ ํ…์Šค์ฒ˜ ํ˜•ํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ํ”„๋กœ์„ธ์„œ๋Š” 250kHz์˜ ์ฃผํŒŒ์ˆ˜์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Linux ์™ธ์—๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” Micropython์„ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

VRChat์—์„œ Linux๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”ฝ์…€ ์…ฐ์ด๋” ํ˜•ํƒœ์˜ RISC-V ์—๋ฎฌ๋ ˆ์ดํ„ฐ

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

ํ”ฝ์…€ ์…ฐ์ด๋”๋ฅผ ์ ์šฉํ•  ๋•Œ ๊ฐ ํ…์Šค์ฒ˜ ํ”ฝ์…€์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์…ฐ์ด๋” ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๊ตฌํ˜„์„ ์ƒ๋‹นํžˆ ๋ณต์žกํ•˜๊ฒŒ ํ•˜๋ฉฐ ์ „์ฒด ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ฅผ ๋ณ„๋„๋กœ ์กฐ์ •ํ•˜๊ณ  ์ฒ˜๋ฆฌ๋œ ํ”ฝ์…€์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹์—ฌ๊ธฐ์— ์ธ์ฝ”๋”ฉ๋œ CPU ์ƒํƒœ ๋˜๋Š” ์—๋ฎฌ๋ ˆ์ดํŠธ๋œ ์‹œ์Šคํ…œ์˜ RAM ๋‚ด์šฉ๊ณผ ๋น„๊ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ฐ ํ”ฝ์…€์€ 128์„ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Œ). ์•ฝ๊ฐ„์˜ ์ •๋ณด). ์…ฐ์ด๋” ์ฝ”๋“œ์—๋Š” perl ์ „์ฒ˜๋ฆฌ๊ธฐ perlpp๊ฐ€ ์‚ฌ์šฉ๋œ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์—„์ฒญ๋‚œ ์ˆ˜์˜ ๊ฒ€์‚ฌ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.



์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€