Pengalaman di Adobe dan lahirnya Renderlet
- Pernah mengerjakan infrastruktur untuk aplikasi besar seperti Photoshop dan Acrobat di Adobe.
- Menjalankan codebase yang kuat di desktop, web, mobile, dan cloud merupakan masalah besar.
- Untuk menjalankan Lightroom dan Photoshop di web, harus melalui proses kompleks yang melibatkan JavaScript, PNaCl milik Google, asm.js, dan akhirnya WebAssembly.
- Harus memikirkan ulang arsitektur GPU, membuat build single-thread berjalan, dan menyusun ulang UI dengan berfokus pada komponen web.
- Build web kini bekerja dengan baik, tetapi perjalanan untuk sampai ke titik ini memakan waktu panjang selama 10 tahun.
Potensi WebAssembly
- Stack grafis adalah bagian yang menimbulkan hambatan terbesar dalam portabilitas.
- Suatu hari menyadari bahwa WebAssembly (Wasm) menawarkan solusi untuk masalah ini.
- Wasm dapat berjalan di mana saja, dapat disematkan ke apa pun, dan memberikan performa yang cukup untuk grafis real-time.
- Karena itu, ia keluar dari pekerjaannya dan memulai petualangan membangun framework grafis portabel dan dapat disematkan berbasis WASM dari nol.
- Framework ini menyediakan level tinggi agar pengembang aplikasi dapat dengan mudah membuat grafis yang mereka inginkan, sekaligus menawarkan kemampuan level rendah untuk memaksimalkan semua yang dibutuhkan aplikasi berkinerja tinggi, termasuk GPU.
Memperkenalkan Renderlet
- Nama Renderlet dipilih untuk menekankan aspek kemampuannya untuk disematkan.
- Pengguna dapat membuat dan menghubungkan modul grafis mereka sendiri, lalu berinteroperasi dengan mudah di apa pun dan di dalam apa pun.
- Seperti Unity yang memudahkan pengembang membuat game lintas platform, idenya adalah melakukan hal yang sama untuk semua aplikasi visual.
Proses pengembangan dan permintaan masukan
- Bergabung dengan YC sebagai solo founder, tetapi selama 6 bulan terakhir sebagian besar waktunya difokuskan untuk membangun proyek ini.
- Belum siap untuk rilis open alpha, tetapi akan segera siap, dan ia ingin menulis tentangnya, menunjukkannya, serta menerima masukan.
- Ini adalah sesuatu yang ia impikan sebagai pengembang aplikasi, dan ia ingin mengetahui pendapat orang lain.
Menggabungkan Rive dan Renderlet
- Ia tertarik ketika Rive merilis engine vektor 2D open source dan mulai banyak dibicarakan.
- Renderer Rive dibangun dengan API 2D level tinggi yang mirip SVG, sedangkan renderer Wander dari Renderlet mengekspos API 3D level rendah di atas GPU.
- Renderlet dapat menjalankan pustaka Rive Renderer menggunakan backend GPU, sehingga semua aplikasi 3D bisa memiliki backend vektor 2D.
- Implementasi nyatanya dapat dilihat berjalan di Vimeo, dan pembahasan teknis mendalam tersedia di GitHub.
Opini GN⁺
- Renderlet menawarkan pendekatan inovatif untuk menyelesaikan masalah porting aplikasi grafis kompleks yang sudah lama ada. Ini berpotensi menjadi alat yang kuat bagi pengembang untuk menghadirkan pengalaman pengguna yang konsisten di berbagai platform.
- Pengembang Renderlet memahami kebutuhan pasar nyata dan keterbatasan teknis dengan baik berdasarkan pengalamannya di Adobe, dan hal ini meningkatkan peluang keberhasilan proyek tersebut.
- Namun, karena Renderlet masih berada pada tahap awal dan belum memasuki rilis open alpha, performa dan stabilitasnya di lingkungan nyata masih belum terverifikasi.
- Agar teknologi ini dapat diadopsi dengan sukses, dibutuhkan dukungan komunitas yang luas serta partisipasi aktif para pengembang. Sebagai proyek open source, kontribusi dan masukan dari para pengembang akan sangat memengaruhi pertumbuhan proyek ini.
- Proyek atau framework lain yang menawarkan fungsi serupa antara lain Unity, Unreal Engine, dan Godot, tetapi Renderlet mengambil pendekatan yang berbeda dengan lebih menekankan ringan dan portabilitas berbasis Wasm.
1 komentar
Opini Hacker News
Lebih baik melewati tahap PAL dan langsung masuk ke SetupRuntime. Pengembang non-grafis umumnya tidak mengetahui hal-hal seperti ini, dan tidak diinginkan membuat langkah tambahan yang tidak perlu di API. Karena PAL tidak digunakan di tempat lain, lebih baik menggunakan WebGPU. (IPal seharusnya menjadi anggota IRuntime dan siap dihapus dalam konteks WebGPU).
Proyek ini bisa menjadi widget kit yang keren untuk membuat GUI lintas platform dan kanvas luar biasa untuk model interaksi. Backend C/C++ dan target WASM memungkinkan pembangunan FFI dalam hampir semua bahasa.
Penasaran dengan rencana dukungan teks dan font. Beberapa engine grafis tidak mendukung teks dalam semua cara yang diinginkan. Pertanyaannya adalah apakah file OTF atau WOFF2 bisa dimuat dan string sebarang dapat ditampilkan.
Sangat tertarik dengan proyek ini. Ada beberapa pertanyaan tentang runtime, event loop, FFI, kepemilikan pointer jendela, dan sebagainya. Ada minat pada plugin audio dan VST, serta ada batasan terkait event loop dan manajemen jendela. JUCE adalah solusi de facto, tetapi sudah tua dan kurang nyaman.
Proyek ini benar-benar keren, dan merupakan sesuatu yang diimpikan selama beberapa tahun terakhir. WASM memiliki banyak potensi sebagai unit portabel untuk komputasi grafis/audio/multimedia.
Sedang mengerjakan upaya menjalankan WASM di Godot Engine. Ingin tahu bagaimana masalah akses shared array buffer di Safari dan masalah akses jaringan iklan yang penting untuk game online berhasil diatasi. Juga menyoroti masalah build single-thread dibanding build normal.
Senang melihat lebih banyak proyek di bidang grafis 3D/WASM. Bertanya apakah ada tips untuk masuk ke YC. Sudah bertahun-tahun mengerjakan porting Unreal Engine 5 ke WebGPU dan WebAssembly. Memiliki renderer multithread dan sistem streaming aset, sehingga pengguna tidak perlu mengunduh seluruh game/aplikasi terlebih dahulu. Selain itu, seluruh aplikasi juga tidak perlu dimuat ke memori sekaligus. Juga membangun seluruh platform hosting dan backend agar pengembang dapat menerapkan proyek secara online.
Presentasi di wasm I/O sangat mengesankan, dan senang melihat pekerjaan ini mulai mendapat perhatian.
Bertanya apakah sudah membaca artikel dari Ian Hickson, salah satu pengembang utama Flutter. Artikel itu menjelaskan konsep memiliki framework UI lintas platform sepenuhnya dengan menggunakan WASM, dan itulah konsep yang digunakan Flutter.
Sangat merekomendasikan manifold sebagai kernel CAD yang bisa diintegrasikan ke dalam aplikasi.