- Adobe में Photoshop·Acrobat जैसे बड़े ऐप्स को कई environments में ले जाते समय सामने आई क्रॉस-प्लेटफ़ॉर्म पोर्टिंग समस्याएँ ही Renderlet के विकास की शुरुआत बनीं
- Renderlet का लक्ष्य ऐसा WASM ग्राफ़िक्स framework बनना है जो कहीं भी चल सके और embed किया जा सके, साथ ही ऐप डेवलपमेंट की सुविधा और GPU के low-level उपयोग—दोनों को साधे
- सार्वजनिक runtime Wander GPU पर low-level 3D API उपलब्ध कराता है, और इसके साथ Rive के open source 2D vector renderer को जोड़ने वाला प्रयोग लागू किया गया
- अभी यह open alpha से ठीक पहले के चरण में है, और compiler व platform integration तैयार होते ही Show HN या Launch HN करने की योजना है
- जैसे Unity ने गेम के क्रॉस-प्लेटफ़ॉर्म डेवलपमेंट को आसान बनाया, वैसे ही Renderlet का फ़ोकस अलग-अलग visual applications को कई environments में चलाना आसान बनाना है
Renderlet जिस portability समस्या को हल करना चाहता है
- Adobe में Photoshop, Acrobat जैसे बड़े applications को desktop, web, mobile, cloud पर चलाना एक बड़ी चुनौती थी
- Lightroom और Photoshop के web versions ने JavaScript, Google PNaCl, asm.js, WebAssembly से होकर एक लंबा रास्ता तय किया
- target devices के अनुसार GPU architecture पर फिर से सोचना पड़ा, और single-thread builds तथा Web Components-आधारित UI पुनर्गठन की भी ज़रूरत पड़ी
- web build अभी अच्छी तरह काम करता है, लेकिन इस प्रक्रिया में 10 साल का काम लगा
- graphics stack अब भी portability का bottleneck बना हुआ है, और WebAssembly को ऐसी नींव के रूप में चुना गया जो कहीं भी चल सके, embed हो सके, और real-time graphics के लिए ज़रूरी performance दे सके
- Renderlet self-contained graphics modules बनाकर उन्हें आपस में जोड़ने वाली संरचना पर ज़ोर देता है, ताकि वे किसी भी environment के ऊपर और किसी भी app के अंदर चल सकें
- डेवलपर YC में solo founder के रूप में शामिल हुए और पिछले 6 महीनों से Renderlet विकसित कर रहे हैं
Rive Renderer integration प्रयोग
- Rive द्वारा 2D vector engine को open source करने के बाद, यह परखा गया कि क्या Renderlet के GPU backend पर Rive Renderer चलाया जा सकता है
- Rive Renderer, SVG जैसी high-level 2D API से बना है
- Wander, Renderlet का open source runtime हिस्सा है, जो GPU के ऊपर low-level 3D API देता है
- implementation के नतीजे में Renderlet के GPU backend पर Rive Renderer library चलाई जा सकी, और 3D apps में भी 2D vector backend इस्तेमाल करना संभव हुआ
- इसका working example Vimeo वीडियो में देखा जा सकता है
- तकनीकी विवरण Using renderlet with rive-renderer में संकलित हैं
- runtime Wasm Renderer, Wander का code renderlet/wander पर सार्वजनिक है
1 टिप्पणियां
Hacker News की राय
PAL चरण को छोड़कर सीधे SetupRuntime पर जाना बेहतर है। गैर-ग्राफ़िक्स डेवलपर्स इन बातों से अच्छी तरह परिचित नहीं होते, और API में अनावश्यक अतिरिक्त चरण जोड़ना उचित नहीं है। PAL कहीं और उपयोग नहीं होता, इसलिए WebGPU का उपयोग करना बेहतर होगा। (IPal, IRuntime का सदस्य होना चाहिए और WebGPU context में हटाए जाने के लिए तैयार है)।
यह प्रोजेक्ट cross-platform GUI बनाने के लिए एक शानदार widget kit और interaction model के लिए एक बेहतरीन canvas बन सकता है। C/C++ backend और WASM target के साथ लगभग हर भाषा में FFI बनाया जा सकता है.
टेक्स्ट और फ़ॉन्ट support के लिए क्या योजना है, यह जानने की उत्सुकता है। कुछ graphics engines टेक्स्ट को हर मनचाहे तरीके से support नहीं करते। सवाल यह है कि क्या OTF या WOFF2 फ़ाइलें लोड करके मनचाही string प्रदर्शित की जा सकेगी.
इस प्रोजेक्ट में बहुत रुचि है। runtime, event loop, FFI, window pointer ownership आदि को लेकर कुछ सवाल हैं। audio plugins और VST में दिलचस्पी है, और event loop तथा window management पर कुछ सीमाएँ हैं। JUCE व्यवहार में default समाधान है, लेकिन पुराना और असुविधाजनक है.
यह प्रोजेक्ट वास्तव में बहुत शानदार है, और पिछले कुछ वर्षों से मैं इसी तरह की चीज़ का सपना देख रहा था। WASM में graphics/audio/multimedia computation के लिए portable unit के रूप में बहुत संभावनाएँ हैं.
Godot Engine में WASM चलाने के लिए काम किया जा रहा है। यह जानना दिलचस्प होगा कि Safari में Shared Array Buffer accessibility की समस्या और online games के लिए महत्वपूर्ण ad network access की समस्या को कैसे पार किया गया। single-threaded बनाम regular build की समस्या भी बताई गई.
3D graphics/WASM क्षेत्र में और प्रोजेक्ट्स देखना अच्छा लग रहा है। YC में प्रवेश पाने के लिए कोई सुझाव है क्या? Unreal Engine 5 को WebGPU और WebAssembly पर port करने का काम कई वर्षों से चल रहा है। इसमें multithreaded renderer और asset streaming system है, जिससे users को पूरा game/app पहले से डाउनलोड करने की ज़रूरत नहीं होती। साथ ही पूरे application को एक बार में memory में लोड करने की भी आवश्यकता नहीं होती। डेवलपर्स के लिए projects को online deploy करने हेतु पूरा hosting platform और backend भी बनाया गया है.
wasm I/O में दिया गया प्रस्तुतीकरण शानदार था, और यह देखकर खुशी हुई कि इस काम को ध्यान मिल रहा है.
पूछा गया कि क्या Flutter के प्रमुख डेवलपर Ian Hickson का लेख पढ़ा है। उसमें WASM का उपयोग करके पूरी तरह cross-platform UI framework रखने की अवधारणा समझाई गई है, और Flutter भी इसी अवधारणा का उपयोग करता है.
CAD kernel के लिए ऐप में एकीकृत किए जा सकने वाले manifold की ज़ोरदार सिफारिश की गई.