2 puntos por GN⁺ 2024-04-03 | 1 comentarios | Compartir por WhatsApp
  • Los problemas de portabilidad multiplataforma que Adobe enfrentó al llevar apps grandes como Photoshop y Acrobat a distintos entornos fueron el punto de partida para el desarrollo de Renderlet
  • Renderlet apunta a ser un framework gráfico WASM que pueda ejecutarse e integrarse en cualquier lugar, combinando comodidad para desarrollar apps con aprovechamiento de bajo nivel de la GPU
  • El runtime abierto Wander ofrece una API 3D de bajo nivel sobre la GPU, y se implementó un experimento que le conecta el renderizador vectorial 2D open source de Rive
  • Actualmente está en una etapa justo previa a la alfa abierta, y planean hacer un Show HN o Launch HN cuando estén listas la integración del compilador y la plataforma
  • Así como Unity facilitó el desarrollo multiplataforma de juegos, Renderlet se enfoca en hacer más fácil ejecutar diversas aplicaciones visuales en múltiples entornos

El problema de portabilidad que Renderlet busca resolver

  • En Adobe, hacer que aplicaciones grandes como Photoshop y Acrobat funcionaran en escritorio, web, móvil y la nube fue un gran desafío
    • Las versiones web de Lightroom y Photoshop recorrieron un largo camino pasando por JavaScript, Google PNaCl, asm.js y WebAssembly
    • Hubo que replantear la arquitectura de GPU según el dispositivo objetivo, y también reconstruir builds de un solo hilo y la UI basada en Web Components
    • La build web hoy funciona bien, pero el proceso implicó 10 años de trabajo
  • La pila gráfica sigue siendo un cuello de botella para la portabilidad, y WebAssembly fue elegido como base capaz de ejecutarse e integrarse en cualquier lugar y de ofrecer el rendimiento necesario para gráficos en tiempo real
  • Renderlet enfatiza una estructura para crear módulos gráficos autocontenidos y conectarlos entre sí, de modo que puedan ejecutarse sobre cualquier entorno y dentro de cualquier app
  • El desarrollador se sumó a YC como fundador solo y ha estado desarrollando Renderlet durante los últimos 6 meses

Experimento de integración con Rive Renderer

  • Después de que Rive publicara como open source su motor vectorial 2D, se experimentó con ejecutar Rive Renderer sobre el backend de GPU de Renderlet
    • Rive Renderer está compuesto por una API 2D de alto nivel, similar a SVG
    • Wander es la parte open source del runtime de Renderlet y ofrece una API 3D de bajo nivel sobre la GPU
  • Como resultado de la implementación, se pudo ejecutar la biblioteca Rive Renderer en el backend de GPU de Renderlet, y las apps 3D también pudieron usar un backend vectorial 2D
  • Se puede ver un ejemplo en funcionamiento en el video de Vimeo
  • Los detalles técnicos están resumidos en Using renderlet with rive-renderer
  • El código de Wander, el Wasm Renderer del runtime, está publicado en renderlet/wander

1 comentarios

 
GN⁺ 2024-04-03
Opiniones en Hacker News
  • Es mejor saltarse la etapa PAL e ir directamente a SetupRuntime. Los desarrolladores no gráficos no suelen conocer estos detalles, y no es deseable agregar pasos extra innecesarios a la API. Como PAL no se usa en ningún otro lado, sería mejor usar WebGPU. (IPal debería ser un miembro de IRuntime y está listo para ser eliminado en el contexto de WebGPU).

    • Recomendación de uso de WebGPU: omitir la etapa PAL, comenzar directamente con SetupRuntime, necesidad de simplificar la API, integración de IPal en IRuntime y objetivo de eliminación.
  • Este proyecto podría convertirse en un excelente widget toolkit para crear GUI multiplataforma y en un lienzo sorprendente para modelos de interacción. El backend en C/C++ y el objetivo WASM permiten construir FFI para casi cualquier lenguaje.

    • Posibilidades de desarrollo de GUI multiplataforma: posibilidad de construir FFI en varios lenguajes, ventajas del backend en C/C++ y del objetivo WASM.
  • Hay curiosidad sobre los planes para el soporte de texto y fuentes. Algunos motores gráficos no soportan texto de todas las maneras deseadas. Se pregunta si será posible cargar archivos OTF o WOFF2 y mostrar cadenas arbitrarias.

    • Consulta sobre soporte de texto y fuentes: compatibilidad con distintas formas de mostrar texto, posibilidad de cargar archivos OTF/WOFF2 y mostrar cadenas.
  • Hay mucho interés en el proyecto. Existen algunas preguntas sobre runtime, event loop, FFI y propiedad de punteros de ventana. También hay interés en plugins de audio y VST, donde existen restricciones relacionadas con el event loop y la gestión de ventanas. JUCE es la solución de facto, pero ya está viejo y es incómodo.

    • Interés en plugins de audio y VST: preguntas sobre runtime, event loop, FFI y gestión de ventanas, y potencial como alternativa a JUCE.
  • Este proyecto es realmente genial y es algo con lo que se ha soñado durante los últimos años. WASM tiene mucho potencial como unidad portable para cálculos de gráficos, audio y multimedia.

    • Énfasis en el potencial de WASM: posibilidades de WASM como unidad portable para cálculos de gráficos, audio y multimedia.
  • Se está trabajando para hacer funcionar WASM en Godot Engine. Hay curiosidad por saber cómo se superaron los problemas de accesibilidad del shared array buffer en Safari y los problemas de acceso a redes publicitarias, algo importante para los juegos en línea. También se señala el problema de compilaciones single-thread frente a compilaciones normales.

    • Trabajo con Godot Engine y WASM: problemas de accesibilidad del shared array buffer en Safari, acceso a redes publicitarias y diferencias entre compilaciones single-thread y normales.
  • Da gusto ver más proyectos en el área de gráficos 3D/WASM. Se pregunta si hay consejos para entrar a YC. Se ha trabajado durante años en portar Unreal Engine 5 a WebGPU y WebAssembly. Ya cuenta con un renderizador multihilo y un sistema de streaming de assets, por lo que los usuarios no necesitan descargar previamente el juego o la app completos. Tampoco es necesario cargar toda la aplicación en memoria de una sola vez. Además, se construyó una plataforma completa de hosting y backend para que los desarrolladores puedan desplegar proyectos en línea.

    • Port de Unreal Engine 5 a WebGPU y WebAssembly: renderizador multihilo, sistema de streaming de assets, sin necesidad de descargar el juego o la app completos, y construcción de una plataforma de hosting y backend.
  • La presentación en wasm I/O fue impresionante, y da gusto ver que este trabajo está recibiendo atención.

    • Reacción positiva a la presentación en wasm I/O: contenido impactante de la presentación y reconocimiento al trabajo.
  • Se pregunta si se ha leído el artículo de Ian Hickson, desarrollador principal de Flutter. Allí se explica el concepto de tener un framework de UI completamente multiplataforma usando WASM, que es una idea relacionada con la que usa Flutter.

    • Uso de WASM relacionado con Flutter: concepto de framework de UI multiplataforma y su relación con Flutter.
  • Se recomienda fuertemente manifold como kernel CAD que puede integrarse en la app.

    • Recomendación de kernel CAD: recomendación de manifold para integración en la app.