Hacker News오픈소스 · 도구오늘의 주요

Blender UI를 독립 라이브러리로: 모든 언어에서 쓸 수 있다

원제 Blender's UI and Runtime: Much Faster Than GPUI

279 포인트댓글 117
Key Point

Blender의 수십 년 최적화된 인터페이스를 모든 언어·프레임워크에서 즉시 쓸 수 있게 되어, 기존 tkinter/Qt 앱도 코드 변경 없이 Blender 스타일로 전환할 수 있다.

핵심 요약

  • Blender의 사용자 인터페이스를 독립적인 C 라이브러리 BUI로 분리해, Python, Rust, JavaScript, C, C++, Dear ImGui 등 여러 언어와 프레임워크에서 사용할 수 있게 했다.
  • Blender의 위젯 드로잉과 상호작용 규칙을 그대로 포팅했으며, 숨겨진 커서 드래그, 수식 입력(2*pi), 퍼지 메뉴 검색("ad cu"로 "Add Cube" 찾기) 등 Blender의 특징 인터페이스를 모두 지원한다.
  • CPU 렌더러와 GPU 렌더러(Windows DirectX 11, Linux OpenGL 3.3)를 모두 지원하며, 손상 렌더링으로 유휴 UI는 0% CPU를 사용하고 변경된 위젯만 다시 그린다.
  • tkinter, Qt 문법, Blender 컴포넌트(45개), Dear ImGui 등 네 가지 Python API, HTML+CSS+Tailwind 문법 Rust, React 19.3과 Svelte 5 기반 JavaScript, 기타 Dear ImGui와 C를 지원한다.
  • Python은 pip install blenderui로 설치하고, Rust는 cargo add blenderui, JavaScript는 npm으로 패키지를 받는다.
  • tkinter 프로그램은 blenderui-tk my_app.py 한 줄로 기존 코드 변경 없이 Blender 스타일로 실행할 수 있다.
  • Rust rsx! 매크로와 gpui 빌더 두 문법을 지원하며, 동일한 창을 그린다.
  • JavaScript/React의 렌더링은 브라우저나 webview 없이 BUI가 직접 하며, React의 훅을 신호(signal)로 구현해 변경된 노드만 업데이트한다.
  • Svelte 5 컴포넌트는 scoped style과 rune을 지원하고, Node.js와 Bun 양쪽에서 실행된다.
  • JavaScript 앱 번들은 내장 QuickJS 엔진과 함께 6.3~6.9 MB 단일 실행 파일로 패키징되며, 첫 프레임은 약 70 ms에 나타난다.
  • Dear ImGui 1.93은 실제 imgui.h 함수 전부를 C++, C, Python, Rust에서 사용할 수 있으며, BUI_IMGUI_BLENDER_WIDGETS=ON 옵션으로 Blender 위젯과 상호작용을 적용할 수 있다.
  • 이미지는 JPEG DCT 스케일링으로 4K 사진을 256 px 썸네일로 12 ms에 디코드하고, 애니메이션 GIF/WebP는 200개 동시 재생 시 0.76~1.5 ms p99 프레임을 유지하며, 화면 밖 콘텐츠는 자동으로 중단된다.
  • 1080p 비디오는 GPU 렌더러에서 0.99 ms 프레임으로 재생되며 9% CPU 사용량이고, 다섯 개 동시 재생 시 28% CPU를 쓴다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗