2P by GN⁺ | ★ favorite | 댓글 1개
  • Adobe에서 Photoshop·Acrobat 같은 대형 앱을 여러 환경으로 옮기며 겪은 크로스플랫폼 포팅 문제가 Renderlet 개발의 출발점이 됨
  • Renderlet은 어디서나 실행·임베드 가능한 WASM 그래픽 프레임워크를 목표로 하며, 앱 개발 편의성과 GPU 저수준 활용을 함께 노림
  • 공개 런타임 Wander는 GPU 위의 저수준 3D API를 제공하고, 여기에 Rive의 오픈소스 2D 벡터 렌더러를 붙이는 실험이 구현됨
  • 현재는 오픈 알파 직전 단계이며, 컴파일러와 플랫폼 통합이 준비되면 Show HN 또는 Launch HN을 진행할 계획임
  • Unity가 게임의 크로스플랫폼 개발을 쉽게 만든 것처럼, Renderlet은 다양한 시각 애플리케이션을 여러 환경에서 실행하기 쉽게 만드는 데 초점을 둠

Renderlet이 풀려는 이식성 문제

  • Adobe에서 Photoshop, Acrobat 같은 대형 애플리케이션을 데스크톱, 웹, 모바일, 클라우드에서 동작시키는 일은 큰 과제였음
    • Lightroom과 Photoshop 웹 버전은 JavaScript, Google PNaCl, asm.js, WebAssembly를 거치는 긴 경로를 거침
    • 대상 기기에 맞춰 GPU 아키텍처를 다시 생각해야 했고, 단일 스레드 빌드와 Web Components 기반 UI 재구성도 필요했음
    • 웹 빌드는 현재 잘 동작하지만, 그 과정에는 10년에 걸친 작업이 들어감
  • 그래픽 스택은 여전히 이식성의 병목으로 남아 있으며, WebAssembly는 어디서나 실행·임베드 가능하고 실시간 그래픽에 필요한 성능을 낼 수 있는 기반으로 선택됨
  • Renderlet은 자체 포함된 그래픽 모듈을 만들고 서로 연결해, 어떤 환경 위에서나 어떤 앱 안에서도 실행할 수 있게 하는 구조를 강조함
  • 개발자는 YC에 솔로 창업자로 합류했고, 최근 6개월 동안 Renderlet을 개발해 왔음

Rive Renderer 통합 실험

  • Rive가 2D 벡터 엔진을 오픈소스로 공개한 뒤, Renderlet의 GPU 백엔드에서 Rive Renderer를 실행할 수 있는지 실험함
    • Rive Renderer는 SVG와 비슷한 고수준 2D API로 구성됨
    • Wander는 Renderlet의 오픈소스 런타임 부분이며, GPU 위에 저수준 3D API를 제공함
  • 구현 결과 Renderlet의 GPU 백엔드에서 Rive Renderer 라이브러리를 실행할 수 있었고, 3D 앱에서도 2D 벡터 백엔드를 사용할 수 있게 됨
  • 동작 예시는 Vimeo 영상에서 볼 수 있음
  • 기술 상세는 Using renderlet with rive-renderer에 정리돼 있음
  • 런타임 Wasm Renderer인 Wander 코드는 renderlet/wander에 공개돼 있음

댓글과 토론

Hacker News 의견
  • PAL 단계를 건너뛰고 바로 SetupRuntime으로 넘어가는 것이 좋음. 비그래픽 개발자들은 이러한 사항을 잘 모르며, API에 불필요한 추가 단계를 만드는 것은 바람직하지 않음. PAL은 다른 곳에서 사용되지 않으므로, WebGPU를 사용하는 것이 좋음. (IPal은 IRuntime의 멤버여야 하며, WebGPU 컨텍스트에서 제거될 준비가 되어 있음).

    • 웹GPU 사용 권장: PAL 단계 생략, SetupRuntime 직접 시작, API 단순화 필요성, IPal의 IRuntime 통합 및 제거 대상.
  • 이 프로젝트는 플랫폼 간 GUI를 만들기 위한 멋진 위젯 키트와 상호작용 모델을 위한 놀라운 캔버스가 될 수 있음. C/C++ 백엔드와 WASM 타겟은 거의 모든 언어로 FFI를 구축할 수 있음.

    • 플랫폼 간 GUI 개발 가능성: 다양한 언어로 FFI 구축 가능, C/C++ 백엔드와 WASM 타겟의 장점.
  • 텍스트와 폰트 지원에 대한 계획이 궁금함. 일부 그래픽 엔진은 원하는 모든 방식으로 텍스트를 지원하지 않음. OTF나 WOFF2 파일을 로드하고 임의의 문자열을 표시할 수 있을지 여부에 대한 질문.

    • 텍스트 및 폰트 지원 문의: 다양한 텍스트 표시 방식 지원, OTF/ WOFF2 파일 로드 및 문자열 표시 가능성.
  • 프로젝트에 대한 큰 관심. 런타임, 이벤트 루프, FFI, 윈도우 포인터 소유권 등에 대한 몇 가지 질문이 있음. 오디오 플러그인과 VST에 대한 관심이 있으며, 이벤트 루프와 윈도우 관리에 대한 제약이 있음. JUCE는 사실상의 해결책이지만 오래되었고 불편함.

    • 오디오 플러그인과 VST에 대한 관심: 런타임, 이벤트 루프, FFI, 윈도우 관리에 대한 질문, JUCE의 대안으로서의 가능성.
  • 이 프로젝트는 정말 멋지며, 지난 몇 년 동안 꿈꿔온 것임. WASM은 그래픽/오디오/멀티미디어 계산의 휴대 가능한 단위로서 많은 잠재력을 가지고 있음.

    • WASM의 잠재력 강조: 그래픽/오디오/멀티미디어 계산을 위한 휴대 가능한 단위로서의 WASM의 가능성.
  • Godot Engine에서 WASM을 작동시키기 위한 작업을 진행 중임. Safari에서의 공유 배열 버퍼 접근성 문제와 온라인 게임에 중요한 광고 네트워크 접근 문제를 어떻게 극복했는지 궁금함. 단일 스레드 대 정규 빌드 문제를 지적함.

    • Godot Engine과 WASM 작업: Safari의 공유 배열 버퍼 접근성 문제, 광고 네트워크 접근, 단일 스레드 대 정규 빌드 문제.
  • 3D 그래픽/WASM 분야에서 더 많은 프로젝트를 보게 되어 기쁨. YC에 들어가기 위한 팁이 있는지 질문. Unreal Engine 5를 WebGPU와 WebAssembly로 포팅하는 작업을 수년간 진행해옴. 멀티스레드 렌더러와 자산 스트리밍 시스템을 가지고 있으며, 사용자가 전체 게임/앱을 미리 다운로드할 필요가 없음. 또한, 전체 애플리케이션을 한 번에 메모리에 올릴 필요가 없음. 개발자들이 온라인으로 프로젝트를 배포할 수 있는 전체 호스팅 플랫폼과 백엔드도 구축함.

    • Unreal Engine 5의 WebGPU 및 WebAssembly 포팅: 멀티스레드 렌더러, 자산 스트리밍 시스템, 전체 게임/앱 다운로드 불필요, 호스팅 플랫폼 및 백엔드 구축.
  • wasm I/O에서의 발표가 놀라웠으며, 이 작업이 주목받고 있는 것을 보게 되어 기쁨.

    • wasm I/O 발표에 대한 긍정적 반응: 발표의 인상적인 내용과 작업의 주목.
  • Flutter의 주요 개발자인 Ian Hickson의 기사를 읽었는지 질문. WASM을 사용하여 완전한 크로스 플랫폼 UI 프레임워크를 가질 수 있는 개념을 설명하고 있으며, 이는 Flutter가 사용하는 개념임.

    • Flutter와 관련된 WASM 사용: 크로스 플랫폼 UI 프레임워크 개념, Flutter와의 연관성.
  • CAD 커널에 대해 앱에 통합할 수 있는 manifold를 강력히 추천함.

    • CAD 커널 추천: 앱 통합을 위한 manifold 추천.