La experiencia en Adobe y el nacimiento de Renderlet
- Trabajó en la infraestructura de grandes aplicaciones como Photoshop y Acrobat en Adobe.
- Hacer funcionar una base de código potente en escritorio, web, móvil y nube era un gran dolor de cabeza.
- Para hacer que Lightroom y Photoshop funcionaran en la web, pasó por un proceso complejo que involucró JavaScript, PNaCl de Google, asm.js y finalmente WebAssembly.
- Tuvo que replantear la arquitectura de la GPU, hacer funcionar compilaciones de un solo hilo y reorganizar la UI alrededor de componentes web.
- La compilación web ahora funciona bien, pero llegar hasta aquí fue un largo recorrido de 10 años.
El potencial de WebAssembly
- La pila gráfica es la parte que más cuellos de botella genera en términos de portabilidad.
- Un día se dio cuenta de que WebAssembly (Wasm) ofrecía la solución a este problema.
- Wasm puede ejecutarse en cualquier lugar, integrarse en cualquier cosa y ofrece rendimiento suficiente para gráficos en tiempo real.
- Por eso dejó su trabajo y comenzó la aventura de crear desde cero un framework gráfico portátil e integrable basado en WASM.
- Ofrece un nivel alto para que los desarrolladores de aplicaciones creen fácilmente los gráficos que quieren, pero también funciones de bajo nivel para aprovechar al máximo todo lo necesario en aplicaciones de alto rendimiento, incluida la GPU.
Introducción a Renderlet
- Renderlet recibió ese nombre para enfatizar su carácter integrable.
- Se pueden crear y conectar módulos gráficos propios, e interoperar fácilmente con cualquier cosa y dentro de cualquier entorno.
- Así como Unity permitió a los desarrolladores crear juegos multiplataforma con facilidad, la idea es hacer lo mismo para todo tipo de aplicaciones visuales.
Proceso de desarrollo y solicitud de feedback
- Participó en YC como fundador en solitario, pero dedicó la mayor parte de su tiempo durante los últimos 6 meses a construir este proyecto.
- Todavía no está listo para un lanzamiento open alpha, pero lo estará pronto, y quiere escribir sobre ello, mostrarlo y recibir feedback.
- Esto es algo con lo que había soñado como desarrollador de aplicaciones, y quiere saber qué opinan los demás.
La combinación de Rive y Renderlet
- Le interesó cuando Rive liberó como open source su motor vectorial 2D y empezó a llamar la atención.
- El renderizador de Rive está construido con una API 2D de alto nivel similar a SVG, mientras que el renderizador Wander de Renderlet expone una API 3D de bajo nivel sobre la GPU.
- Renderlet puede ejecutar la librería Rive Renderer usando su backend de GPU, lo que permite que cualquier app 3D tenga un backend vectorial 2D.
- Ya está implementado y funcionando; se puede ver en Vimeo y profundizar en los detalles técnicos en GitHub.
La opinión de GN⁺
- Renderlet presenta un enfoque innovador para resolver los complejos problemas de portabilidad de las aplicaciones gráficas existentes. Puede convertirse en una herramienta poderosa para que los desarrolladores ofrezcan una experiencia de usuario consistente en múltiples plataformas.
- El desarrollador de Renderlet entiende bien las necesidades reales del mercado y los límites técnicos gracias a su experiencia en Adobe, lo que aumenta las probabilidades de éxito del proyecto.
- Sin embargo, como Renderlet todavía está en una etapa temprana y aún no tiene un lanzamiento open alpha, su rendimiento y estabilidad en entornos reales todavía no han sido validados.
- Para que esta tecnología se adopte con éxito, hará falta un amplio apoyo de la comunidad y una participación activa de los desarrolladores. Como proyecto open source, las contribuciones y el feedback de los desarrolladores tendrán un gran impacto en su crecimiento.
- Otros proyectos o frameworks con funciones similares a Renderlet incluyen Unity, Unreal Engine y Godot, pero Renderlet adopta un enfoque diferenciado con mayor énfasis en la ligereza y la portabilidad basadas en Wasm.
1 comentarios
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).
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.
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.
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.
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.
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.
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.
La presentación en wasm I/O fue impresionante, y da gusto ver que este trabajo está recibiendo atención.
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.
Se recomienda fuertemente manifold como kernel CAD que puede integrarse en la app.