3D + 2D: teste de um motor gráfico WASM multiplataforma
(news.ycombinator.com)- Os problemas de portabilidade multiplataforma enfrentados pela Adobe ao levar grandes apps como Photoshop e Acrobat para vários ambientes foram o ponto de partida para o desenvolvimento do Renderlet
- O Renderlet mira ser um framework gráfico em WASM que possa ser executado e incorporado em qualquer lugar, combinando conveniência para desenvolvimento de apps com uso de baixo nível da GPU
- O runtime aberto Wander oferece uma API 3D de baixo nível sobre a GPU, e foi implementado um experimento que acopla a ele o renderizador vetorial 2D open source da Rive
- Atualmente está na fase imediatamente anterior ao alfa aberto; quando o compilador e a integração com plataformas estiverem prontos, o plano é fazer um Show HN ou Launch HN
- Assim como o Unity facilitou o desenvolvimento multiplataforma de jogos, o Renderlet foca em facilitar a execução de diversos aplicativos visuais em vários ambientes
O problema de portabilidade que o Renderlet quer resolver
- Na Adobe, fazer grandes aplicativos como Photoshop e Acrobat funcionarem em desktop, web, mobile e cloud era um grande desafio
- As versões web do Lightroom e do Photoshop passaram por um longo caminho envolvendo JavaScript, Google PNaCl, asm.js e WebAssembly
- Foi necessário repensar a arquitetura de GPU para os dispositivos-alvo, além de builds single-thread e uma reconstrução da UI baseada em Web Components
- Hoje o build web funciona bem, mas o processo envolveu 10 anos de trabalho
- A pilha gráfica ainda continua sendo um gargalo de portabilidade, e o WebAssembly foi escolhido como base por poder ser executado e incorporado em qualquer lugar e oferecer o desempenho necessário para gráficos em tempo real
- O Renderlet enfatiza uma arquitetura em que módulos gráficos autocontidos são criados e conectados entre si, para que possam rodar sobre qualquer ambiente e dentro de qualquer app
- O desenvolvedor entrou na YC como fundador solo e vem desenvolvendo o Renderlet nos últimos 6 meses
Experimento de integração com o Rive Renderer
- Depois que a Rive abriu o código de seu motor vetorial 2D, foi feito um experimento para verificar se o Rive Renderer poderia rodar no backend de GPU do Renderlet
- O Rive Renderer é composto por uma API 2D de alto nível, semelhante ao SVG
- O Wander é a parte open source do runtime do Renderlet e oferece uma API 3D de baixo nível sobre a GPU
- Como resultado da implementação, foi possível executar a biblioteca Rive Renderer no backend de GPU do Renderlet, permitindo que apps 3D também usem um backend vetorial 2D
- Um exemplo em funcionamento pode ser visto no vídeo no Vimeo
- Os detalhes técnicos estão reunidos em Using renderlet with rive-renderer
- O código do Wander, runtime Wasm Renderer, está disponível em renderlet/wander
1 comentários
Comentários no Hacker News
É melhor pular a etapa PAL e ir direto para
SetupRuntime. Desenvolvedores que não trabalham com gráficos não conhecem bem esses detalhes, e não é desejável criar etapas extras desnecessárias na API. Como o PAL não é usado em outros lugares, é melhor usar WebGPU. (IPaldeveria ser um membro deIRuntimee está pronto para ser removido no contexto do WebGPU).SetupRuntime, necessidade de simplificar a API, integração deIPalaoIRuntimee remoção planejada.Este projeto pode se tornar um ótimo widget toolkit para criar GUIs multiplataforma e uma base incrível para modelos de interação. O backend em C/C++ e o alvo WASM permitem construir FFI em praticamente qualquer linguagem.
Fico curioso sobre os planos para suporte a texto e fontes. Alguns motores gráficos não oferecem suporte a texto de todas as formas desejadas. A pergunta é se será possível carregar arquivos OTF ou WOFF2 e exibir strings arbitrárias.
Grande interesse no projeto. Há algumas perguntas sobre runtime, event loop, FFI e propriedade de ponteiros de janela. Existe interesse em plugins de áudio e VST, e há restrições quanto ao event loop e ao gerenciamento de janelas. O JUCE é a solução de fato, mas está envelhecido e é incômodo de usar.
Este projeto é realmente incrível e é algo com que venho sonhando há anos. O WASM tem muito potencial como unidade portátil para computação gráfica, de áudio e multimídia.
Estou trabalhando para fazer o WASM rodar no Godot Engine. Fico curioso sobre como vocês superaram os problemas de acessibilidade do shared array buffer no Safari e a questão do acesso a redes de anúncios, que é importante para jogos online. Também foi apontada a questão entre build single-thread e build normal.
Fico feliz em ver mais projetos na área de gráficos 3D/WASM. Pergunta se há dicas para entrar na YC. Vem portando o Unreal Engine 5 para WebGPU e WebAssembly há anos. Já possui um renderizador multithread e um sistema de streaming de assets, de modo que o usuário não precisa baixar o jogo/app inteiro antes. Além disso, não é necessário carregar a aplicação inteira na memória de uma vez. Também construiu uma plataforma completa de hospedagem e backend para que desenvolvedores possam publicar projetos online.
A apresentação no wasm I/O foi impressionante, e é bom ver esse trabalho recebendo atenção.
Pergunta se vocês leram o artigo de Ian Hickson, principal desenvolvedor do Flutter. Ele explica o conceito de ter um framework de UI totalmente multiplataforma usando WASM, que é a mesma ideia adotada pelo Flutter.
Recomenda fortemente o
manifoldcomo kernel CAD que pode ser integrado ao app.manifoldpara integração ao aplicativo.