Blender의 UI와 런타임: GPUI보다 훨씬 빠름

1 hour ago 1

BUI는 Blender의 위젯 그리기와 상호작용을 분리한 독립 UI 라이브러리로, Python, Rust, JavaScript, C/C++, Dear ImGui에서 같은 C 런타임을 사용함 프로젝트의 Windows 노트북 벤치마크에서 동일한 gpui 문법의 설정 창은 첫 화면을 약 5배 빨리 표시했으며, CPU 렌더러 사용 시 메모리는 약 절반이었음. 일부 최신 기능 추가 전 측정값이며 환경별 성능 보장은 아님 변경 영역만 다시 그리는 렌더링과 유휴 시 대기를 기본으로 하며, CPU 렌더러 외에 Windows의 Direct3D 11과 Linux의 OpenGL 3.3 GPU 렌더러를 선택할 수 있음 기존 tkinter 코드 실행, Rust의 HTML/CSS 및 gpui 문법, React 19.3과 Svelte 5를 지원함. 브라우저나 웹뷰 없이 네이티브 창을 그리며, JavaScript 앱은 QuickJS를 포함한 독립 실행 파일로 배포할 수 있음 Qt 문법, 일부 CSS와 텍스트 기능, macOS 지원은 미완성 또는 실험 단계임. Blender에서 파생된 GPL-2.0-or-later 프로젝트이며, 저장소는 사람이 직접 작성한 코드 없이 전부 LLM으로 구축됐다고 밝힘 Blender UI를 독립 라이브러리로 분리 BUI는 Blender의 위젯 외형과 조작 규칙을 다른 애플리케이션에서 사용할 수 있게 분리한 라이브러리임 Blender 설치나 사용 경험이 필요하지 않으며, 필요한 UI 코드만 포함해 독립적으로 빌드함 앱 코드는 위젯 트리와 콜백을 작성하고, 배치, 입력, 그리기, 화면 표시는 네이티브 코드가 처리함 핵심은 작은 C 런타임인 kit이며, 언어별 바인딩은 각 문법에 필요한 상태만 유지하는 얇은 계층임 모든 위젯을 하나의 노드 트리에 보관하고 배치, 입력 위치 판정, 호버, 포커스, 드래그, 메뉴, 툴팁, 실행 취소, 애니메이션을 관리함 위젯 그리기는 Blender의 interface_widgets.cc를 C로 이식했으며, 상호작용은 interface_handlers.cc의 규칙을 따름 색상 계산, 사각형 처리, 텍스트 커서, 문자열 검색, 수식 평가 등에 Blender의 blenlib 코드를 사용함 주된 사용 대상은 기존 tkinter 앱, Blender 조작에 익숙한 아티스트용 도구, 브라우저 없는 Rust/React 데스크톱 앱, Blender 외형을 원하는 Dear ImGui 앱임 Rust와 Ja...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵