Linux'u VRChat'ta bir RISC-V öykünücüsü üzerinde çalıştırmayı başardılar

Birkaç gün önce bir deneyin sonuçları açıklandı lansmanına dayanan organizasyon 3B sanal alan içinde Linux çekirdeği bir çevrimiçi çok oyunculu oyun.

Bu deney 3D modellerin kendi gölgelendiricileri ile yüklenmesine izin veren VRChat üzerinde yapıldı.. Tasarlanan fikri uygulamak için, GPU tarafında bir piksel gölgelendirici şeklinde yürütülen RISC-V mimarisine dayalı bir emülatör oluşturuldu.

Proje hakkında

Emülatör, C dilindeki uygulamaya dayanmaktadır, yaratılışı, sırayla Rust dilinde geliştirilen minimalist riscv-rust emülatörünün gelişmelerini kullandı. Hazırlanan C kodu, VRChat'a yüklenmeye uygun, HLSL dilinde bir piksel gölgelendiriciye çevrilir.

Emülatör rv32imasu komut seti mimarisi için tam destek sağlar, SV32 bellek kontrol ünitesi ve minimal bir çevre birimi seti (UART ve zamanlayıcı). Hazırlanan yetenekler, doğrudan VRChat sanal dünyasından etkileşim kurabileceğiniz Linux çekirdeği 5.13.5 ve BusyBox temel komut satırı ortamını yüklemek için yeterlidir.

Mart 2021 civarında, VRChat'ta tam bir Linux çekirdeği çalıştırabilen bir emülatör yazmaya karar verdim. Bu platformun doğal sınırlamaları nedeniyle, seçilen aracın bir gölgelendirici olması gerekiyordu. Ve birkaç aylık çalışmanın ardından şimdi dünyanın ilk RISC-V CPU / SoC öykünücüsünü (bildiğim kadarıyla) 250 kHz'e kadar (2080 Ti'de) çalıştırabilen bir HLSL piksel gölgelendirici içinde sunmaktan gurur duyuyorum ve Linux 5.13.5'i MMU desteği ile başlatın.

Öykünücü, çalışma zamanında öykünücüyü kontrol etmek için kullanılan VRChat için sağlanan Udon komut dosyalarıyla desteklenen kendi dinamik dokusu (Unity Özel İşleme Dokusu) biçiminde gölgelendiricide uygulanır.

Öykünülmüş sistemin ana bellek içeriği ve işlemci durumu, 2048 × 2048 piksel boyutunda bir doku olarak kaydedilir, böylece öykünülmüş işlemci 250 kHz'de çalıştırılır. Linux'un yanı sıra Micropython da emülatörde çalıştırılabilir.

Linux'u çalıştırmak için en az 32 MiB ana belleğe (RAM) ihtiyacımız olacağını düşündüm, ancak güvende olalım ve 64 yapalım - performans farkı büyük olmayacak ve yeterli VRAM olmalı.

İlk başta, ana performans endişesi saat hızıydı. Yani, bir çerçevede kaç CPU döngüsü yürütülebilir.

Veri depolamayı düzenlemek için okuma ve yazma desteği ile kalıcı, dikdörtgen bir alana bağlı bir Camera nesnesi kullanmakla ilgili bir numara kullanılıyor gölgelendirici tarafından oluşturulur ve oluşturulan dokunun çıktısını gölgelendiricinin girişine yönlendirir. Öyleyse, Bir piksel gölgelendiricinin yürütülmesi sırasında yazılan herhangi bir piksel, bir sonraki kare işlenerek okunabilir.

Piksel gölgelendiriciler uygulandığında, dokudaki her piksel için ayrı bir gölgelendirici örneği paralel olarak ateşlenir.

Bu özellik, uygulamayı önemli ölçüde karmaşıklaştırır ve öykünülmüş sistemin tamamının durumunun ayrı koordinasyonunu ve işlenen pikselin konumunun, içinde kodlanmış öykünülmüş sistemin CPU veya RAM içeriğinin durumuyla karşılaştırılmasını gerektirir (her piksel 128 bit'i kodlayabilir). bilgi).

Bu durumda, gölgelendirici kodu, perl önişlemcisi perlpp'nin kullanıldığı uygulamayı basitleştirmek için çok sayıda kontrolün dahil edilmesini gerektirir.

Olanlar için özelliklerle ilgileniyor şunlardan bahsedilmektedir:

  • kod GitHub'da
  • 64 MiB RAM eksi CPU durumu, 2048 × 2048 piksel (128 bpp) tamsayı biçimi dokusunda saklanır
  • Tampon takaslı Unity özel işleme dokusu, çerçeveler arasında kodlama/kod çözme durumuna izin verir
  • hesaplama için bir piksel gölgelendirici kullanılır ve UAV gölgelendiricileri VRChat tarafından desteklenmez

Nihayet onun hakkında daha fazla bilgi edinmekle ilgileniyorsanayrıntıları kontrol edebilirsiniz Aşağıdaki bağlantıda.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.