2 điểm bởi GN⁺ 2024-04-03 | 1 bình luận | Chia sẻ qua WhatsApp
  • Vấn đề porting đa nền tảng gặp phải khi Adobe đưa các ứng dụng lớn như Photoshop và Acrobat sang nhiều môi trường khác nhau đã trở thành điểm khởi đầu cho việc phát triển Renderlet
  • Renderlet hướng tới một framework đồ họa WASM có thể chạy và nhúng ở bất kỳ đâu, đồng thời nhắm tới cả sự thuận tiện khi phát triển ứng dụng lẫn khả năng tận dụng GPU ở mức thấp
  • Runtime công khai Wander cung cấp API 3D mức thấp trên GPU, và một thử nghiệm đã được triển khai để gắn bộ kết xuất vector 2D mã nguồn mở của Rive vào đó
  • Hiện dự án đang ở giai đoạn ngay trước open alpha, và khi compiler cùng tích hợp nền tảng sẵn sàng, nhóm có kế hoạch đăng Show HN hoặc Launch HN
  • Giống như Unity đã giúp việc phát triển game đa nền tảng trở nên dễ dàng, Renderlet tập trung vào việc giúp chạy nhiều ứng dụng thị giác trên nhiều môi trường khác nhau dễ hơn

Bài toán tính di động mà Renderlet muốn giải quyết

  • Tại Adobe, việc làm cho các ứng dụng lớn như Photoshop và Acrobat hoạt động trên desktop, web, mobile và cloud là một thách thức lớn
    • Phiên bản web của Lightroom và Photoshop đã đi qua một hành trình dài từ JavaScript, Google PNaCl, asm.js đến WebAssembly
    • Cần phải suy nghĩ lại về kiến trúc GPU cho phù hợp với thiết bị đích, đồng thời cũng cần build đơn luồng và tái cấu trúc UI dựa trên Web Components
    • Bản build web hiện hoạt động tốt, nhưng quá trình đó đã mất tới 10 năm
  • Stack đồ họa vẫn là điểm nghẽn của tính di động, và WebAssembly được chọn làm nền tảng vì có thể chạy và nhúng ở bất kỳ đâu, đồng thời đạt được hiệu năng cần thiết cho đồ họa thời gian thực
  • Renderlet nhấn mạnh kiến trúc tạo ra các module đồ họa tự chứa rồi kết nối chúng với nhau, để có thể chạy trên bất kỳ môi trường nào và bên trong bất kỳ ứng dụng nào
  • Nhà phát triển đã tham gia YC với tư cách nhà sáng lập solo và đã phát triển Renderlet trong 6 tháng gần đây

Thử nghiệm tích hợp Rive Renderer

  • Sau khi Rive công bố mã nguồn mở engine vector 2D, nhóm đã thử nghiệm xem liệu có thể chạy Rive Renderer trên backend GPU của Renderlet hay không
    • Rive Renderer được cấu thành từ API 2D mức cao tương tự SVG
    • Wander là phần runtime mã nguồn mở của Renderlet và cung cấp API 3D mức thấp trên GPU
  • Kết quả triển khai cho thấy có thể chạy thư viện Rive Renderer trên backend GPU của Renderlet, từ đó cho phép dùng backend vector 2D ngay cả trong ứng dụng 3D
  • Có thể xem ví dụ hoạt động trong video Vimeo
  • Chi tiết kỹ thuật được tổng hợp tại Using renderlet with rive-renderer
  • Mã của Wander, runtime Wasm Renderer, được công khai tại renderlet/wander

1 bình luận

 
GN⁺ 2024-04-03
Ý 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. (IPal nên là một thành viên của IRuntime và đang sẵn sàng để bị loại bỏ trong ngữ cảnh WebGPU).

    • Khuyến nghị dùng WebGPU: bỏ qua bước PAL, bắt đầu trực tiếp với SetupRuntime, cần đơn giản hóa API, tích hợp IPal vào IRuntime và 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ữ.

    • Khả năng phát triển GUI đa nền tảng: có thể xây dựng FFI bằng nhiều ngôn ngữ, tận dụng ưu thế của backend C/C++ và target WASM.
  • 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.

    • Câu hỏi về hỗ trợ văn bản và phông chữ: hỗ trợ nhiều cách hiển thị văn bản, khả năng tải tệp OTF/WOFF2 và hiển thị chuỗi ký tự.
  • 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.

    • Quan tâm đến plugin âm thanh và VST: câu hỏi về runtime, event loop, FFI và quản lý cửa sổ, cùng khả năng trở thành lựa chọn thay thế cho JUCE.
  • 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.

    • Nhấn mạnh tiềm năng của WASM: khả năng của WASM như một đơn vị di động cho tính toán đồ 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.

    • Godot Engine và công việc với WASM: vấn đề shared array buffer trên Safari, truy cập mạng quảng cáo, và sự khác biệt giữa bản dựng đơn luồng với 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.

    • Port Unreal Engine 5 sang WebGPU và WebAssembly: renderer đa luồng, hệ thống streaming tài nguyên, không cần tải toàn bộ game/ứng dụng trước, cùng nền tảng hosting và backend đã được xây dựng.
  • 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ú ý.

    • Phản hồi tích cực về bài trình bày tại wasm I/O: nội dung ấn tượng của bài trình bày và việc dự án đang được 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.

    • Việc dùng WASM liên quan đến Flutter: khái niệm framework UI đa nền tảng và mối liên hệ với Flutter.
  • Đối với CAD kernel, rất khuyến nghị manifold, có thể tích hợp vào ứng dụng.

    • Khuyến nghị CAD kernel: đề xuất manifold để tích hợp vào ứng dụng.