Animation Engine for Dear ImGui
ImAnim brings modern animation capabilities to ImGui applications. Write smooth UI animations with minimal code.
This is the first stable release of ImAnim, featuring a complete animation toolkit for Dear ImGui.
// Animate anything in one line
float alpha = iam_tween_float(id, channel, hovered ? 1.0f : 0.5f, 0.3f, ease, policy, dt);- Immediate-mode friendly - Works naturally with ImGui's paradigm
- Zero dependencies - Only requires Dear ImGui
- Large easing collection - 30+ easing functions including spring physics
- Perceptual color blending - OKLAB and OKLCH
- Responsive layouts - Anchor-relative animations that survive window resizing
| Category | Capabilities |
|---|---|
| Tweens | Float, Vec2, Vec4, Int, Color with crossfade/cut/queue policies |
| Clips | Timeline keyframes, looping, callbacks, chaining, stagger, variations |
| Easing | Quad to Bounce presets, cubic-bezier, steps, spring physics, per-axis |
| Paths | Bezier curves, Catmull-Rom splines, path morphing, text along paths |
| Transforms | Position, rotation, scale with rotation modes |
| Procedural | Oscillators, shake, wiggle, Perlin/Simplex noise |
| Colors | Gradients, style interpolation, OKLAB/OKLCH blending |
| Advanced | Layering/blending, resolved tweens, drag feedback, scroll animation |
| Tools | Debug inspector, profiler, save/load, memory management |
Step 1: Copy im_anim.h and im_anim.cpp to your project.
Step 2: Add two lines after ImGui::NewFrame():
ImGui::NewFrame();
// Add these two lines
iam_update_begin_frame();
iam_clip_update(ImGui::GetIO().DeltaTime);
// Your UI code...Step 3: Animate! Here's a hover effect:
bool hovered = ImGui::IsItemHovered();
float scale = iam_tween_float(
ImGui::GetID("btn"), ImHashStr("scale"),
hovered ? 1.1f : 1.0f, 0.2f,
iam_ease_preset(iam_ease_out_back),
iam_policy_crossfade,
ImGui::GetIO().DeltaTime
);That's it. No build system changes, no external dependencies.
Open examples/ImAnim_vs2022_Win64.sln in Visual Studio 2022 and select a configuration:
| Configuration | Backend |
|---|---|
Release_Win32_DX11 |
Win32 + DirectX11 |
Release_GLFW_OpenGL3 |
GLFW + OpenGL3 |
Release_SDL2_OpenGL3 |
SDL2 + OpenGL3 |
Release_ImPlatform |
ImPlatform abstraction |
Debug configurations are also available for each backend.
Each backend has its own Makefile:
cd examples/glfw_opengl3
make
# or
cd examples/sdl2_opengl3
makeComprehensive guides for every ImAnim feature, organized by category. Each doc includes code examples and API references.
- Integration Guide - Add ImAnim to your project
- Quick Start - Get running in 5 minutes
- Tweens - Immediate-mode animation
- Clips - Timeline-based keyframe animation
- Easing - All 30+ easing functions
- Motion Paths - Animate along curves
- Path Morphing - Interpolate between paths
- Text Along Paths - Curved text rendering
- Transforms - 2D transform animation
- Stagger - Cascading element animations
- Text Stagger - Per-character text effects
- Oscillators - Continuous periodic motion
- Shake & Wiggle - Feedback and organic motion
- Noise - Perlin/Simplex procedural animation
- Gradients - Color gradient animation
- Style Interpolation - Animated theme transitions
- Per-Axis Easing - Different easing per component
- Variations - Per-loop parameter changes
- Layering - Blend multiple animations
- Resolved Tweens - Dynamic target computation
- Anchors - Resize-aware animation
- Drag Feedback - Animated drag operations
- Scroll Animation - Smooth scrolling
The im_anim_demo.cpp file provides a comprehensive playground for exploring all ImAnim features. Call ImAnimDemoWindow() to display it.
| Category | What You'll Find |
|---|---|
| Easing & Tweens | Easing gallery, custom bezier editor, spring physics, per-axis easing |
| Interactive Widgets | Animated buttons, toggle switches, hover cards, progress indicators |
| Clip-Based Animations | Timeline keyframes, looping, callbacks, chaining, layering system |
| Procedural Animations | Oscillators, shake/wiggle effects, Perlin/Simplex noise |
| Motion Paths | Bezier curves, Catmull-Rom splines, path morphing, text along paths |
| Advanced Interpolation | Gradients, transforms, style interpolation, text stagger |
| Utilities | ImDrawList animations, resize-aware helpers, scroll animation, drag feedback |
| Debug Tools | Inspector, profiler, memory stats |
| Stress Test | Performance benchmarks with thousands of concurrent animations |
The demo showcases practical UI patterns you can adapt:
- Animated Buttons - Hover scaling, press feedback, icon animations
- Toggle Switches - Smooth state transitions with easing
- Hover Cards - Expand/collapse with spring physics
- List Stagger - Cascading item reveal animations
- Grid Reveal - Wave-based grid animations
- Dropping Cards - Physics-inspired card animations
- Health Bars - Color gradient health indicators
- Loading Indicators - Pulsing rings, spinning elements
- Error Feedback - Shake effects for invalid input
- Scroll Navigation - Smooth scroll-to-section animations
| Animated Tag |
|---|
![]() |
| Ripple Button |
|---|
![]() |
| "Wait" Button |
|---|
![]() |
| Data Visualization |
|---|
![]() |
![]() |
Visual examples of ImAnim capabilities in action.
| List Stagger | Grid Stagger | Card Stagger |
|---|---|---|
| Easing Gallery | Custom Bezier | Wave Animations |
|---|---|---|
| Color Blending | Gradient | Transforms |
|---|---|---|
| Motion Path | Text Effects | Variations |
|---|---|---|
| Noise | ImGui Widgets | ImDrawList |
|---|---|---|
| Oscillator Waves | Transform Layers |
|---|---|
Development is supported through Patreon:
The Visual Studio solution is generated using Sharpmake. To regenerate projects after modifying the build configuration:
Prerequisites: .NET 6.0 SDK or later
# First time setup (builds Sharpmake)
cd examples
bootstrap.bat # Windows
./bootstrap.sh # Linux/macOS
# Regenerate projects
generate_projects.bat # Windows
./generate_projects.sh # Linux/macOSMIT License - see LICENSE for details.
Made for the Dear ImGui community







