Kinh nghiệm tại Adobe và sự ra đời của Renderlet
- Đã làm việc về hạ tầng cho các ứng dụng lớn như Photoshop và Acrobat tại Adobe.
- Việc vận hành một codebase mạnh mẽ trên desktop, web, mobile và cloud là một vấn đề đau đầu lớn.
- Để chạy Lightroom và Photoshop trên web, đã phải trải qua một quá trình phức tạp đi từ JavaScript, PNaCl của Google, asm.js, và cuối cùng là WebAssembly.
- Cần phải suy nghĩ lại về kiến trúc GPU, làm cho các bản build đơn luồng hoạt động, và tái cấu trúc UI xoay quanh web component.
- Bản build web hiện giờ hoạt động tốt, nhưng để đi đến đây đã là một hành trình dài 10 năm.
Tiềm năng của WebAssembly
- Stack đồ họa là phần gây ra nút thắt cổ chai lớn nhất về tính di động.
- Một ngày nọ đã nhận ra rằng WebAssembly (Wasm) mang đến lời giải cho vấn đề này.
- Wasm có thể chạy ở mọi nơi, có thể được nhúng vào bất cứ thứ gì, và cung cấp hiệu năng đủ tốt cho đồ họa thời gian thực.
- Vì vậy đã nghỉ việc và bắt đầu hành trình xây dựng từ đầu một framework đồ họa dựa trên WASM có tính di động và khả năng nhúng.
- Nó cung cấp mức trừu tượng cao để nhà phát triển ứng dụng dễ dàng tạo ra đồ họa như mong muốn, đồng thời cũng cung cấp các khả năng mức thấp để tận dụng tối đa mọi thứ cần thiết cho ứng dụng hiệu năng cao, bao gồm cả GPU.
Giới thiệu Renderlet
- Tên Renderlet được đặt để nhấn mạnh khía cạnh có thể nhúng của nó.
- Có thể tạo các mô-đun đồ họa riêng rồi kết nối chúng lại, giúp dễ dàng tương tác với bất cứ thứ gì và bên trong bất cứ môi trường nào.
- Cũng giống như Unity giúp nhà phát triển dễ dàng tạo game đa nền tảng, ý tưởng ở đây là làm điều tương tự cho mọi ứng dụng thị giác.
Quá trình phát triển và lời mời góp ý
- Đã tham gia YC với tư cách nhà sáng lập solo, nhưng phần lớn thời gian trong 6 tháng qua được tập trung để xây dựng dự án này.
- Vẫn chưa sẵn sàng cho bản phát hành open alpha, nhưng sẽ sớm sẵn sàng, và muốn viết về nó, trình diễn nó, cũng như nhận phản hồi.
- Đây là điều đã luôn mơ ước với tư cách một nhà phát triển ứng dụng, và muốn biết mọi người nghĩ gì.
Kết hợp Rive và Renderlet
- Đã thấy hứng thú khi Rive open source engine vector 2D của mình và trở thành chủ đề được chú ý.
- Renderer của Rive được xây dựng bằng API 2D mức cao tương tự SVG, còn renderer Wander của Renderlet thì phơi bày API 3D mức thấp trên GPU.
- Renderlet có thể chạy thư viện Rive Renderer bằng backend GPU, qua đó cho phép mọi ứng dụng 3D có một backend vector 2D.
- Có thể xem bản triển khai thực tế đang hoạt động trên Vimeo, và đào sâu chi tiết kỹ thuật trên GitHub.
Ý kiến của GN⁺
- Renderlet đưa ra một cách tiếp cận đổi mới nhằm giải quyết bài toán port các ứng dụng đồ họa phức tạp hiện có. Đây có thể trở thành một công cụ mạnh mẽ giúp nhà phát triển mang lại trải nghiệm người dùng nhất quán trên nhiều nền tảng.
- Nhà phát triển Renderlet hiểu rõ nhu cầu thực tế của thị trường và các giới hạn kỹ thuật nhờ kinh nghiệm tại Adobe, điều này làm tăng khả năng thành công của dự án.
- Tuy nhiên, Renderlet vẫn đang ở giai đoạn đầu và chưa phát hành open alpha, nên hiệu năng và độ ổn định trong môi trường thực tế vẫn chưa được kiểm chứng.
- Để công nghệ này được áp dụng thành công, cần có sự hỗ trợ rộng rãi từ cộng đồng và sự tham gia tích cực của các nhà phát triển. Với vai trò là một dự án open source, các đóng góp và phản hồi từ cộng đồng sẽ ảnh hưởng lớn đến sự phát triển của dự án.
- Những dự án hoặc framework khác cung cấp chức năng tương tự như Renderlet có thể kể đến Unity, Unreal Engine và Godot, nhưng Renderlet theo đuổi hướng tiếp cận khác biệt khi tập trung nhiều hơn vào tính gọn nhẹ và tính di động dựa trên Wasm.
1 bình luận
Ý kiến trên Hacker News
Nên bỏ qua bước PAL và chuyển thẳng sang SetupRuntime. Các nhà phát triển không chuyên về đồ họa thường không biết những điều này, và việc thêm các bước không cần thiết vào API là không mong muốn. Vì PAL không được dùng ở nơi khác, tốt hơn là dùng WebGPU. (
IPalnên là một thành viên củaIRuntimevà đang sẵn sàng để bị loại bỏ trong ngữ cảnh WebGPU).IPalvàoIRuntimevà dự kiến loại bỏ.Dự án này có thể trở thành một bộ widget tuyệt vời để xây dựng GUI đa nền tảng và là một canvas ấn tượng cho mô hình tương tác. Backend C/C++ và target WASM cho phép xây dựng FFI với gần như mọi ngôn ngữ.
Tò mò về kế hoạch hỗ trợ văn bản và phông chữ. Một số engine đồ họa không hỗ trợ văn bản theo mọi cách mong muốn. Có câu hỏi liệu có thể tải tệp OTF hoặc WOFF2 và hiển thị chuỗi ký tự tùy ý hay không.
Rất quan tâm đến dự án. Có một số câu hỏi về runtime, event loop, FFI, quyền sở hữu con trỏ cửa sổ, v.v. Có hứng thú với plugin âm thanh và VST, đồng thời có các ràng buộc liên quan đến event loop và quản lý cửa sổ. JUCE là giải pháp thực tế mặc định nhưng đã cũ và bất tiện.
Dự án này thực sự rất tuyệt và là điều đã mơ ước trong vài năm qua. WASM có rất nhiều tiềm năng như một đơn vị di động cho các phép tính đồ họa/âm thanh/đa phương tiện.
Đang làm việc để chạy WASM trong Godot Engine. Tò mò không biết họ đã vượt qua vấn đề khả dụng của shared array buffer trên Safari và vấn đề truy cập mạng quảng cáo vốn quan trọng với game online như thế nào. Cũng chỉ ra vấn đề giữa bản dựng đơn luồng và bản dựng thông thường.
Rất vui khi thấy thêm nhiều dự án trong lĩnh vực đồ họa 3D/WASM. Hỏi xem có lời khuyên nào để vào YC hay không. Đã nhiều năm chuyển Unreal Engine 5 sang WebGPU và WebAssembly. Có renderer đa luồng và hệ thống streaming tài nguyên, nên người dùng không cần tải trước toàn bộ game/ứng dụng. Ngoài ra cũng không cần nạp toàn bộ ứng dụng vào bộ nhớ cùng một lúc. Còn xây dựng cả một nền tảng hosting và backend hoàn chỉnh để các nhà phát triển có thể triển khai dự án trực tuyến.
Phần trình bày tại wasm I/O thật đáng kinh ngạc, và thật vui khi thấy công việc này đang nhận được sự chú ý.
Hỏi liệu đã đọc bài viết của Ian Hickson, nhà phát triển chủ chốt của Flutter, hay chưa. Bài viết mô tả khái niệm có một framework UI đa nền tảng hoàn chỉnh bằng cách dùng WASM, và đó cũng là khái niệm Flutter sử dụng.
Đối với CAD kernel, rất khuyến nghị
manifold, có thể tích hợp vào ứng dụng.manifoldđể tích hợp vào ứng dụng.