2 pontos por GN⁺ 2024-04-03 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2024-04-03
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. (IPal deveria ser um membro de IRuntime e está pronto para ser removido no contexto do WebGPU).

    • Recomendação de uso do WebGPU: omitir a etapa PAL, iniciar diretamente com SetupRuntime, necessidade de simplificar a API, integração de IPal ao IRuntime e 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.

    • Possibilidade de desenvolvimento de GUI multiplataforma: possibilidade de construir FFI em várias linguagens, vantagens do backend C/C++ e do alvo WASM.
  • 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.

    • Pergunta sobre suporte a texto e fontes: suporte a diferentes formas de exibição de texto, possibilidade de carregar arquivos OTF/WOFF2 e mostrar strings.
  • 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.

    • Interesse em plugins de áudio e VST: perguntas sobre runtime, event loop, FFI e gerenciamento de janelas, com potencial como alternativa ao JUCE.
  • 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.

    • Destaque para o potencial do WASM: possibilidades do WASM 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.

    • Trabalho com Godot Engine e WASM: problemas de acessibilidade do shared array buffer no Safari, acesso a redes de anúncios e 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.

    • Port do Unreal Engine 5 para WebGPU e WebAssembly: renderizador multithread, sistema de streaming de assets, sem necessidade de baixar o jogo/app inteiro, além de plataforma de hospedagem e backend.
  • A apresentação no wasm I/O foi impressionante, e é bom ver esse trabalho recebendo atenção.

    • Reação positiva à apresentação no wasm I/O: conteúdo marcante da apresentação e reconhecimento do trabalho.
  • 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.

    • Uso de WASM relacionado ao Flutter: conceito de framework de UI multiplataforma e sua relação com o Flutter.
  • Recomenda fortemente o manifold como kernel CAD que pode ser integrado ao app.

    • Recomendação de kernel CAD: sugestão do manifold para integração ao aplicativo.