Adobe'daki deneyim ve Renderlet'in doğuşu
- Adobe'da Photoshop ve Acrobat gibi büyük uygulamaların altyapısı üzerinde çalıştı.
- Masaüstü, web, mobil ve bulutta güçlü bir kod tabanını çalıştırmak büyük bir baş ağrısıydı.
- Lightroom ve Photoshop'u web'de çalıştırmak için JavaScript, Google'ın PNaCl'i, asm.js ve nihayet WebAssembly üzerinden geçen karmaşık bir süreçten geçti.
- GPU mimarisini yeniden düşünmek, tek iş parçacıklı derlemeleri çalıştırmak ve kullanıcı arayüzünü web bileşenleri etrafında yeniden kurmak zorunda kaldı.
- Web derlemesi bugün iyi çalışıyor, ancak buraya gelmek 10 yıllık uzun bir yolculuktu.
WebAssembly'nin potansiyeli
- Grafik yığını, taşınabilirlikteki en büyük darboğazı oluşturan kısım.
- Bir gün WebAssembly'nin (Wasm) bu soruna çözüm sunabileceğini fark etti.
- Wasm her yerde çalışabilir, her şeye gömülebilir ve gerçek zamanlı grafikler için yeterli performans sağlar.
- Bunun üzerine işinden ayrılıp, sıfırdan WASM tabanlı, taşınabilir ve gömülebilir bir grafik çerçevesi oluşturma macerasına başladı.
- Uygulama geliştiricilerinin istedikleri grafikleri kolayca oluşturabilmesi için, yüksek seviyeli olmasının yanında GPU dahil yüksek performanslı uygulamalar için gereken her şeyi en üst düzeyde kullanabilen düşük seviyeli yetenekler de sunuyor.
Renderlet'e giriş
- Renderlet, gömülebilir olma yönünü vurgulamak için bu isimle adlandırıldı.
- Kendi grafik modüllerinizi oluşturup bağlayabilir, herhangi bir şeyle ve herhangi bir şeyin içinde kolayca birlikte çalıştırabilirsiniz.
- Unity'nin geliştiricilerin çapraz platform oyunları kolayca yapmasını sağlaması gibi, fikir bunu tüm görsel uygulamalar için yapmak.
Geliştirme süreci ve geri bildirim çağrısı
- YC'ye tek kurucu olarak katıldı, ancak son 6 ayın büyük bölümünü bu projeyi inşa etmeye odaklandı.
- Henüz açık alfa sürümüne hazır değil, ama yakında hazır olacak; bu konuda yazmak, göstermek ve geri bildirim almak istiyor.
- Bu, bir uygulama geliştiricisi olarak hep hayalini kurduğu şey ve başkalarının ne düşündüğünü öğrenmek istiyor.
Rive ve Renderlet'in birleşimi
- Rive, 2D vektör motorunu açık kaynak olarak yayımlayıp gündem olduğunda ilgisini çekti.
- Rive'ın render'layıcısı, SVG benzeri yüksek seviyeli bir 2D API üzerine kurulu; Renderlet'in Wander render'layıcısı ise GPU üzerinde düşük seviyeli bir 3D API ortaya koyuyor.
- Renderlet, GPU arka ucunu kullanarak Rive Renderer kütüphanesini çalıştırabiliyor; bu da tüm 3D uygulamaların bir 2D vektör arka ucuna sahip olabilmesini sağlıyor.
- Bunu gerçekten uygulayıp çalışır halde Vimeo'da görebilir, teknik detaylara ise GitHub'da derinlemesine bakabilirsiniz.
GN⁺ görüşü
- Renderlet, mevcut karmaşık grafik uygulamalarını taşıma sorununu çözmeye yönelik yenilikçi bir yaklaşım sunuyor. Bu, geliştiriciler için farklı platformlarda tutarlı bir kullanıcı deneyimi sağlayabilecek güçlü bir araç olabilir.
- Renderlet'in geliştiricisi, Adobe deneyimine dayanarak gerçek pazar ihtiyaçlarını ve teknik sınırlamaları iyi anlıyor; bu da projenin başarı olasılığını artırıyor.
- Ancak Renderlet hâlâ erken aşamada ve açık alfa sürümü yayımlanmadığı için, gerçek ortamlardaki performansı ve kararlılığı henüz doğrulanmış değil.
- Bu teknolojinin başarılı biçimde benimsenmesi için geniş topluluk desteği ve geliştiricilerin aktif katılımı gerekiyor. Açık kaynak bir proje olarak, geliştirici katkıları ve geri bildirimleri projenin büyümesi üzerinde büyük etki yaratacaktır.
- Benzer işlevler sunan diğer proje ve çerçeveler arasında Unity, Unreal Engine ve Godot bulunuyor; ancak Renderlet, Wasm tabanlı hafiflik ve taşınabilirliğe daha çok odaklanan farklılaştırılmış bir yaklaşım benimsiyor.
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.