# emilk/egui

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/emilk-egui).**

28,160 stars · 1,962 forks · Rust · apache-2.0

## Links

- GitHub: https://github.com/emilk/egui
- Homepage: https://www.egui.rs/
- awesome-repositories: https://awesome-repositories.com/repository/emilk-egui.md

## Topics

`egui` `game-development` `gamedev` `gui` `imgui` `rust` `wasm`

## Description

This library is an immediate mode graphical user interface toolkit that reconstructs the entire interface every frame. By executing procedural code within a high-frequency loop that matches the display refresh rate, it allows developers to define interactive elements and state updates directly. The framework utilizes a multi-pass rendering approach to resolve layout dependencies, ensuring that widget sizes and positions are calculated accurately before final placement to prevent visual jitter.

The project functions as a cross-platform graphics toolkit, providing a portable rendering layer that abstracts hardware-accelerated drawing commands across various operating systems and web browsers. It remains backend-agnostic by delegating low-level draw calls to modular integration layers, while its CPU-based tessellation generates geometry for shapes and text before sending them to the graphics hardware. This architecture supports low-latency performance, making it suitable for resource-constrained environments and real-time applications.

Beyond its core rendering capabilities, the framework includes a coordinate-based hit-testing system for input-event dispatching and manages widget interaction priorities for overlapping elements. It provides tools for state-persistence serialization, performance profiling, and multi-viewport management. The system is designed to be configured during the build process, allowing for the inclusion of optional features such as parallel tessellation and interoperability with external math or color libraries.

## Tags

### User Interface & Experience

- [Immediate Mode Frameworks](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-frameworks.md) — Rebuilds the interface procedurally every frame to reflect current application state.
- [Immediate Mode GUI Toolkits](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-gui-toolkits.md) — Reconstructs the entire user interface every frame based on current application state and input.
- [Immediate Mode Rendering Engines](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-rendering-engines.md) — Render interactive user interfaces by defining elements and state updates within a high-frequency loop that executes at the display refresh rate. ([source](https://docs.rs/egui))
- [Immediate Mode GUI Frameworks](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-gui-frameworks.md) — Building interactive user interfaces by defining elements within a high-frequency render loop that updates at the display refresh rate.
- [Rendering Engines](https://awesome-repositories.com/f/user-interface-experience/rendering-engines.md) — Perform multi-pass rendering to resolve layout dependencies, such as calculating widget sizes before final placement, to prevent visual jitters during interface updates. ([source](https://docs.rs/egui))
- [Retained State UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/retained-state-ui-frameworks.md) — Manages widget layout and interaction logic through a persistent coordinate system and input handling loop.
- [Input Handling Systems](https://awesome-repositories.com/f/user-interface-experience/input-handling-systems.md) — Define widget sensitivity to user input and manage input priority for overlapping elements to ensure correct interaction handling across the entire interface. ([source](https://docs.rs/egui))
- [Rendering Backends](https://awesome-repositories.com/f/user-interface-experience/rendering-backends.md) — Provides modular integration layers to decouple core rendering logic from specific graphics APIs.
- [Layout Engines](https://awesome-repositories.com/f/user-interface-experience/layout-engines.md) — Resolves widget sizes and positions through multi-pass calculations before rendering.
- [Input Dispatchers](https://awesome-repositories.com/f/user-interface-experience/input-dispatchers.md) — Routes user interactions through coordinate-based hit-testing to target specific widgets.

### Graphics & Multimedia

- [Graphics Rendering Layers](https://awesome-repositories.com/f/graphics-multimedia/graphics-rendering-layers.md) — Provides a portable rendering layer that abstracts hardware-accelerated drawing commands across different operating systems.
- [Rendering Engines](https://awesome-repositories.com/f/graphics-multimedia/rendering-engines.md) — Executes interface updates at the display refresh rate with minimal memory overhead.
- [Tessellation Engines](https://awesome-repositories.com/f/graphics-multimedia/tessellation-engines.md) — Generates geometry for shapes and text on the CPU before hardware submission.

### Web Development

- [Cross-Platform Frameworks](https://awesome-repositories.com/f/web-development/cross-platform-frameworks.md) — Enables the development of portable graphical applications for desktop and web environments.

### Software Engineering & Architecture

- [High-Performance Rendering](https://awesome-repositories.com/f/software-engineering-architecture/high-performance-rendering.md) — Minimizes memory overhead and maintains smooth frame rates for resource-constrained applications.

### Hardware & IoT

- [Embedded Visualization](https://awesome-repositories.com/f/hardware-iot/embedded-visualization.md) — Provides efficient graphical dashboards for hardware devices with minimal dependencies.
