αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ RISC-V αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆ pixel shader αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Linux αž“αŸ…αž€αŸ’αž“αž»αž„ VRCchat

αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαž›αžΎαž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž›αžΈαž“αž»αž…αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž›αŸ†αž  3D αž“αž·αž˜αŸ’αž˜αž·αžαž“αŸƒαž αŸ’αž‚αŸαž˜αž’αž“αž‘αžΆαž‰ VRChat αžŠαŸ‚αž›αž˜αžΆαž“αž’αŸ’αž“αž€αž›αŸαž„αž…αŸ’αžšαžΎαž“ αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž•αŸ’αž‘αž»αž€αž‚αŸ†αžšαžΌ 3D αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαŸ’αžšαž˜αŸ„αž›αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž‚αŸ†αž“αž·αžαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ RISC-V αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸ…αž•αŸ’αž“αŸ‚αž€αžαžΆαž„ GPU αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆ pixel (αž”αŸ†αžŽαŸ‚αž€) shader (VRChat αž˜αž·αž“αž‚αžΆαŸ†αž‘αŸ’αžš computational shaders αž“αž·αž„ UAV)αŸ” αž›αŸαžαž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αž€αŸ’αžšαŸ„αž˜αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽ MIT αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆ C αžŠαŸ‚αž›αž‡αžΆαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŠαŸ‚αž›αž€αŸ’αžšαŸ„αž™αž˜αž€αž”αžΆαž“αž”αŸ’αžšαžΎαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ riscv-rust αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž‡αžΆαž—αžΆαžŸαžΆ Rust αŸ” αž€αžΌαžŠ C αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž€αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆ pixel shader αž“αŸ…αž€αŸ’αž“αž»αž„ HLSL αžŠαŸ‚αž›αžŸαž˜αžšαž˜αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αŸ…αž€αŸ’αž“αž»αž„ VRCChat αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž–αŸαž‰αž›αŸαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αžŸαŸ†αžŽαž»αŸ†αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† rv32imasu αž’αž„αŸ’αž‚αž—αžΆαž–αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† SV32 αž“αž·αž„αžŸαŸ†αžŽαž»αŸ†αž‚αŸ’αžšαžΏαž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αž (UART αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž˜αŸ‰αŸ„αž„)αŸ” αžŸαž˜αžαŸ’αžαž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αž…αŸ†αž‚αžΊαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‘αž»αž€αžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž… 5.13.5 αž“αž·αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ BusyBox αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž–αžΈαž–αž·αž—αž–αž“αž·αž˜αŸ’αž˜αž·αž VRChat αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ RISC-V αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆ pixel shader αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Linux αž“αŸ…αž€αŸ’αž“αž»αž„ VRCchat
αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ RISC-V αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆ pixel shader αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Linux αž“αŸ…αž€αŸ’αž“αž»αž„ VRCchat

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„ Shader αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸƒαžœαžΆαž™αž“αž—αžΆαž–αžαžΆαž˜αžœαž“αŸ’αžαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αžœαžΆ (Unity Custom Render Texture) αž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ„αž™αž’αž€αŸ’αžŸαžš Udon αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ VRChat αžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž€αŸ†αž‘αž»αž„αž–αŸαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž˜αžΆαžαž·αž€αžΆαž“αŸƒ RAM αž“αž·αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαžœαžΆαž™αž“αž—αžΆαž–αž‘αŸ†αž αŸ† 2048x2048 αž—αžΈαž€αžŸαŸ‚αž›αŸ” αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž”αŸ’αžšαŸαž€αž„αŸ‹ 250 kHz αŸ” αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž›αžΈαž“αž»αž… αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž€αŸαž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Micropython αž•αž„αžŠαŸ‚αžšαŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ RISC-V αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆ pixel shader αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Linux αž“αŸ…αž€αŸ’αž“αž»αž„ VRCchat

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹ αžŠαŸ„αž™αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αžΆαž“ αž“αž·αž„αž€αžΆαžšαžŸαžšαžŸαŸαžš αž›αŸ’αž”αž·αž…αž˜αž½αž™αž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαžœαžαŸ’αžαž»αž€αžΆαž˜αŸαžšαŸ‰αžΆαžŠαŸ‚αž›αž…αž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž“αžΉαž„αž•αŸ’αž‘αŸƒαž…αžαž»αž€αŸ„αžŽαžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™ shader αž“αž·αž„αžŠαžΉαž€αž“αžΆαŸ†αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαžœαžΆαž™αž“αž—αžΆαž–αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž› shader αŸ” αžœαž·αž’αžΈαž“αŸαŸ‡ αž—αžΈαž€αžŸαŸ‚αž›αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαŸ’αžšαž˜αŸ„αž›αž—αžΈαž€αžŸαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž“αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαŸŠαž»αž˜αž”αž“αŸ’αž‘αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž“αŸ…αž–αŸαž›αž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαŸ’αžšαž˜αŸ„αž›αž—αžΈαž€αžŸαŸ‚αž› αžœαžαŸ’αžαž»αžŸαŸ’αžšαž˜αŸ„αž›αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΈαž€αžŸαŸ‚αž›αžœαžΆαž™αž“αž—αžΆαž–αž“αžΈαž˜αž½αž™αŸ—αŸ” αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž“αŸαŸ‡αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αžŠαž›αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž αžΎαž™αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž›αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž‘αžΆαŸ†αž„αž˜αžΌαž› αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‘αžΈαžαžΆαŸ†αž„αž“αŸƒαž—αžΈαž€αžŸαŸ‚αž›αžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŸαŸŠαžΈαž—αžΈαž™αžΌαžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆ αž¬αž˜αžΆαžαž·αž€αžΆαž“αŸƒ RAM αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜ (αž—αžΈαž€αžŸαŸ‚αž›αž“αžΈαž˜αž½αž™αŸ—αž’αžΆαž…αž’αŸŠαž·αž“αž€αžΌαžŠ 128 αž”αŸŠαžΈαžαž“αŸƒαž–αŸαžαŸŒαž˜αžΆαž“) αŸ” αž€αžΌαžŠ Shader αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž”αž‰αŸ’αž…αžΌαž›αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž‡αžΆαž…αŸ’αžšαžΎαž“ αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαž½αž›αžŠαž›αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸ‚αž› perl preprocessor perlpp αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”



αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹