BUI, Blender UI 일부를 C 런타임으로 옮겨 Python·Rust·React 앱에 제공
BUI는 Blender의 위젯 그리기와 상호작용 규칙 일부를 C 런타임으로 옮긴 독립 UI 라이브러리로, Python·Rust·JavaScript/React 앱에 연결할 수 있습니다. 기존 tkinter 코드를 고치지 않고 실행하거나 Rust·JavaScript 앱을 HTML/CSS 문법으로 작성할 수 있으며, 화면은 브라우저 대신 BUI가 그립니다. 접근성 API와 IME는 지원하지 않고, 프로젝트는 BUI를 포함한 프로그램에 GPL-3.0-or-later가 적용된다고 안내합니다.
BUI는 Blender를 설치하지 않고 Blender UI의 일부 위젯과 상호작용 규칙을 사용할 수 있게 만든 독립 UI 라이브러리입니다. Blender의 위젯 그리기 코드를 C로 포팅하고 입력 규칙을 옮겼지만, Blender의 데이터 시스템과 창 관리자, 연산자까지 포함하지는 않습니다.
앱 코드는 위젯 트리를 만들고 상호작용에 따라 실행할 콜백을 작성합니다. C로 만든 공통 kit이 트리를 보관하면서 화면 배치, 마우스·키보드 입력, 포커스, 메뉴, 그리기를 처리하고, 언어별 바인딩이 앱 코드를 런타임에 연결합니다. 숫자 입력칸을 누르고 옆으로 끌면 커서가 화면 끝에 닿지 않도록 감춰진 채 값이 바뀌는 동작이나, 메뉴에서 일부 글자만 입력해 항목을 찾는 방식도 Blender의 규칙을 따릅니다.
Python에서는 pip install blenderui로 설치한 뒤 blenderui-tk app.py로 기존 tkinter 프로그램을 실행할 수 있습니다. 이 명령은 해당 실행에서 tkinter를 BUI 구현으로 연결하므로 기존 코드에 손댈 필요가 없습니다. 새 Python 앱은 패널·숫자 슬라이더·색상 선택기 등을 포함한 45개 Blender 구성요소를 조합할 수 있습니다. Qt 방식 문법도 제공하지만 공통 위젯을 중심으로 한 부분 지원입니다. 모델·뷰 클래스와 도킹, 툴바, 스플리터 등은 지원 범위에 포함되지 않습니다.
Rust와 JavaScript에서는 HTML·CSS 문법으로 UI를 작성할 수 있고, React와 Svelte 바인딩도 같은 C 런타임을 사용합니다. 화면은 브라우저 엔진이나 웹뷰를 거치지 않고 BUI가 그립니다. Windows와 Linux에서는 앱 창을 열 수 있으며, Linux는 X11과 XWayland를 지원합니다. macOS 창 호스트는 실험 단계이고 JavaScript 창은 macOS에서 헤드리스 모드로만 작동합니다. 창 안의 위젯은 BUI가 직접 그리는 Blender 스타일로, 운영체제 테마·강조색·시스템 글꼴을 따르지 않습니다.
기본 렌더러는 그래픽카드 없이 작동하는 CPU 소프트웨어 렌더러입니다. 위젯이 바뀌면 해당 영역을 다시 그리고, 입력이나 애니메이션이 없을 때는 렌더링 루프가 대기합니다. GPU 렌더러는 선택 사항이며 Windows에서는 Direct3D 11, Linux에서는 OpenGL 3.3을 사용합니다. macOS에는 GPU 렌더러가 없어 CPU로 화면을 그립니다.
BUI가 공개한 첫 화면 표시 시간 측정은 Ryzen 7 5800U 노트북에서 Windows 11을 실행하고 전원을 연결한 상태로, 릴리스 빌드를 사용해 진행했습니다. 같은 GPUI 문법으로 작성한 설정창 코드를 BUI와 Zed의 GPUI, gpui-fast에 각각 컴파일해 실행하고, 프로세스 시작부터 첫 프레임까지 10회 실행의 중앙값을 계산했습니다. BUI는 CPU 렌더러에서 40밀리초, GPU 렌더러에서 43밀리초였고, GPUI는 GPU에서 231밀리초, gpui-fast는 GPU에서 226밀리초였습니다. GPUI에는 폼 위젯이 없어 비교창의 컨트롤을 스타일을 적용한 div로 만들었습니다. 프로젝트는 이 수치가 Dear ImGui 지원과 Linux GPU 렌더러, Blender 검색·수식 코드가 추가되기 전에 측정됐다고 설명합니다. 따라서 이 결과는 해당 장비에서 작은 설정창의 첫 화면이 나타나는 시간에 한정됩니다.
BUI의 위젯은 운영체제 접근성 API와 연결되지 않아 화면 낭독기가 읽을 수 없습니다. 입력기 조합 입력도 지원하지 않아 일본어·중국어 입력은 작동을 기대하기 어렵고, dead-key 방식의 악센트 입력도 작동하지 않을 수 있습니다. BUI는 GPL-3.0-or-later를 따르며, 프로젝트는 이를 포함하는 프로그램도 GPL로 배포한다고 안내합니다.