Bevy 게임 엔진 0.20 출시, 렌더러·씬 시스템 대폭 개선
원제 Bevy 0.20
127 포인트댓글 21

Key Point
Rust 게임 개발자들이 알아야 할 렌더링, 씬 시스템, UI 등 핵심 기능의 광범위한 개선과 WESL 표준 채택으로 앞으로의 개발 방향이 바뀐다.
핵심 요약
- 227명의 기여자와 817개의 풀 리퀘스트를 통해 Rust 게임 엔진 Bevy 0.20이 공개됐다.
- 경로 추적 렌더러 Solari는 ReSTIR를 선택 사항으로 변경하고 기본값으로 비활성화해 성능을 개선했으며, macOS Metal 지원과 대기 및 환경맵 라이트 호환성을 추가했다.
- BSN 씬 시스템의 문법이 개선됐다: @ 접두사로 명확한 씬 참조, template_value 래퍼 제거, 메서드 체이닝 지원, -- 로 엔티티 분리 등이 추가됐다.
- BSN 씬이 완전히 로드되면 Ready 이벤트를 발동하도록 지원하여 씬 계층 전체가 준비된 후 로직을 실행할 수 있다.
- UI 툴킷 Feathers에 색상 선택기, 스크롤 가능 리스트, 드롭다운, 레이지 메뉴, 탭 위젯 등 신규 위젯이 추가됐다.
- 사용자 정의 WGSL 방언에서 표준 WESL 셰이더 언어로 전환했으며, WESL 플레이그라운드와 wgsl-analyzer 언어 서버 지원이 제공된다.
- 메시 셰이더가 파이프라인 캐시와 통합되어 meshlet, 절차적 풀, 복셀 렌더링에 활용 가능하나 웹 미지원이다.
- 스프라이트에 MaterialExtension2d 트레이트로 사용자 정의 셰이더 지원이 추가되고, 기존 2D 재료를 확장하는 ExtendedMaterial2d를 제공한다.
- 스프라이트 렌더 백엔드가 3D 인프라를 재사용하도록 통합되어 많은 경우 성능이 향상됐다.
- 편집기 카메라 플러그인을 PanOrbitCamera로 업스트림했으며, CAD 스타일 네비게이션이 가능하다.
- chain_weak(), before_weak(), after_weak()로 약한 시스템 순서화를 지원하여 데이터 접근이 충돌하지 않는 시스템은 병렬로 실행된다.
- UI의 ThemeContext로 부모 엔티티에 따라 색상 스킴이 달라지는 문맥적 테마를 지원하며, em·rem 단위도 추가됐다.
- column summary change tick를 옵트인하면 쿼리할 때 전체 컬럼을 건너뛸 수 있어 GPU 메시 추출에서 132배 속도 향상을 기록했다.
- UI 노드에 FixedNode 컴포넌트로 뷰포트 상대 위치 지정, 타원형 border radius 지원, 스케줄 무작위화 추가됐다.