3D + 2D: Çapraz Platform WASM Grafik Motoru Testi
(news.ycombinator.com)- Adobe'da Photoshop ve Acrobat gibi büyük uygulamaları birden çok ortama taşırken yaşanan çapraz platform port etme sorunları, Renderlet'in geliştirilmesinin çıkış noktası oldu
- Renderlet, her yerde çalıştırılabilen ve gömülebilen bir WASM grafik çatısı olmayı hedefliyor; uygulama geliştirme kolaylığı ile GPU'nun düşük seviyeli kullanımını birlikte amaçlıyor
- Açık runtime Wander, GPU üzerinde düşük seviyeli bir 3D API sunuyor ve buna Rive'ın açık kaynaklı 2D vektör render'ı bağlanan bir deney uygulanmış durumda
- Şu anda açık alfadan hemen önceki aşamada ve derleyici ile platform entegrasyonu hazır olduğunda Show HN veya Launch HN yapmayı planlıyorlar
- Unity'nin oyunlarda çapraz platform geliştirmeyi kolaylaştırması gibi, Renderlet de çeşitli görsel uygulamaların farklı ortamlarda çalıştırılmasını kolaylaştırmaya odaklanıyor
Renderlet'in çözmeye çalıştığı taşınabilirlik sorunu
- Adobe'da Photoshop ve Acrobat gibi büyük uygulamaları masaüstü, web, mobil ve bulutta çalıştırmak büyük bir zorluktu
- Lightroom ve Photoshop'un web sürümleri JavaScript, Google PNaCl, asm.js ve WebAssembly'den geçen uzun bir yol izledi
- Hedef cihaza göre GPU mimarisini yeniden düşünmek gerekti ve tek iş parçacıklı build'ler ile Web Components tabanlı UI yeniden kurgusu da gerekli oldu
- Web build'i bugün iyi çalışıyor, ancak bu noktaya gelmek 10 yıllık bir emeğin sonucu
- Grafik yığını hâlâ taşınabilirliğin darboğazı olmaya devam ediyor ve WebAssembly, her yerde çalıştırılıp gömülebilmesi ve gerçek zamanlı grafikler için gerekli performansı sunabilmesi nedeniyle temel olarak seçildi
- Renderlet, kendi kendine yeten grafik modülleri oluşturup bunları birbirine bağlayarak, her türlü ortam üzerinde ve herhangi bir uygulamanın içinde çalışabilecek bir yapıyı vurguluyor
- Geliştirici, YC'ye tek kurucu olarak katıldı ve son 6 aydır Renderlet üzerinde çalışıyor
Rive Renderer entegrasyon deneyi
- Rive, 2D vektör motorunu açık kaynak yaptıktan sonra, Rive Renderer'ı Renderlet'in GPU backend'inde çalıştırmanın mümkün olup olmadığını test etti
- Rive Renderer, SVG'ye benzer yüksek seviyeli bir 2D API'den oluşuyor
- Wander, Renderlet'in açık kaynak runtime kısmı ve GPU üzerinde düşük seviyeli bir 3D API sağlıyor
- Uygulama sonucunda Rive Renderer kütüphanesi Renderlet'in GPU backend'inde çalıştırılabildi ve böylece 3D uygulamalarda da 2D vektör backend'i kullanılabilir hale geldi
- Çalışma örneği Vimeo videosunda görülebilir
- Teknik ayrıntılar Using renderlet with rive-renderer sayfasında derlenmiş durumda
- Runtime Wasm Renderer olan Wander'ın kodu renderlet/wander altında açık olarak yayımlanıyor
1 yorum
Hacker News görüşleri
PAL aşamasını atlayıp doğrudan SetupRuntime'a geçmek daha iyi olur. Grafik dışı geliştiriciler bu tür şeyleri pek bilmez ve API'ye gereksiz ek adımlar koymak arzu edilir değil. PAL başka bir yerde kullanılmadığı için WebGPU kullanmak daha iyi. (IPal, IRuntime'ın bir üyesi olmalı ve WebGPU bağlamında kaldırılmaya hazır durumda).
Bu proje, platformlar arası GUI oluşturmak için harika bir widget kiti ve etkileşim modelleri için müthiş bir tuval olabilir. C/C++ backend'i ve WASM hedefi sayesinde neredeyse her dilde FFI kurulabilir.
Metin ve font desteği için planların ne olduğu merak ediliyor. Bazı grafik motorları metni istenen her biçimde desteklemiyor. OTF veya WOFF2 dosyalarının yüklenip rastgele bir dizenin görüntülenip görüntülenemeyeceği soruluyor.
Projeye büyük ilgi var. Runtime, event loop, FFI ve pencere işaretçisi sahipliği gibi konularda birkaç soru var. Ses eklentileri ve VST ile ilgileniliyor; event loop ve pencere yönetimi konusunda bazı kısıtlar bulunuyor. JUCE fiili çözüm olsa da eski ve kullanışsız.
Bu proje gerçekten harika ve son birkaç yıldır hayalini kurduğum şey. WASM, grafik/ses/multimedya hesaplamaları için taşınabilir bir birim olarak büyük potansiyele sahip.
Godot Engine'de WASM'ı çalıştırmak için çalışmalar yapılıyor. Safari'deki shared array buffer erişilebilirliği sorununu ve çevrimiçi oyunlar için önemli olan reklam ağı erişimi sorununu nasıl aştıkları merak ediliyor. Tek iş parçacıklı ve normal derleme arasındaki farklara dikkat çekiliyor.
3D grafik/WASM alanında daha fazla proje görmek sevindirici. YC'ye girmek için tavsiye olup olmadığı soruluyor. Unreal Engine 5'i WebGPU ve WebAssembly'ye port etme çalışması yıllardır sürüyor. Çok iş parçacıklı bir renderer ve varlık akış sistemi var; bu sayede kullanıcıların tüm oyunu/uygulamayı önceden indirmesi gerekmiyor. Ayrıca tüm uygulamanın tek seferde belleğe yüklenmesi de gerekmiyor. Geliştiricilerin projelerini çevrimiçi dağıtabilmesi için tam bir hosting platformu ve backend de inşa edilmiş.
wasm I/O sunumu etkileyiciydi ve bu çalışmanın ilgi gördüğünü görmek sevindirici.
Flutter'ın başlıca geliştiricilerinden Ian Hickson'ın makalesini okuyup okumadıkları soruluyor. Yazıda, WASM kullanarak tamamen çapraz platform bir UI framework'üne sahip olma fikri anlatılıyor; Flutter da bu yaklaşımı kullanıyor.
Uygulamaya entegre edilebilecek bir CAD kernel olarak manifold şiddetle tavsiye ediliyor.