Hello everyone! I hope you're having a good time with ImPlot3D.
After almost one year in the making, I'm happy to announce ImPlot3D v0.3 🎉.
This release brings a massive leap in precision for large-scale data, adds exciting new features like image plotting and log scales, and includes numerous fixes and improvements. A special thank you to everyone who contributed to v0.3!
On a personal note, I have recently stepped up as a maintainer for ImPlot. I want to thank @epezent for his trust and for this incredible opportunity (read more about the transition in epezent/implot#643).
This is an exciting time for the ecosystem as we work to align and improve both libraries. I invite you to get involved with both ImPlot and ImPlot3D - report bugs, suggest new features, open PRs.
❤️ Sponsor the Project I have also enabled GitHub Sponsors. Your support allows me to dedicate focused time to the health of the ImPlot/ImPlot3D ecosystem and directly contributes to my future academic studies in robotics and XR. If you find these tools valuable to your work, please consider becoming a sponsor.
🚀 New Features
- Feat:
PlotImageAPI by @brenocq in #79 (requested by @dcnieho)- The demo below was implemented by @pthom in imgui_bundle
- Feat: Axis log scale by @brenocq in #156 (requested by @fecaltransplant, @AhmedLilah)
- Feat: ImPlot3D Flags for disabling user inputs by @chrissanrow in #153
ImPlot3DFlags_NoRotateImPlot3DFlags_NoPanImPlot3DFlags_NoZoomImPlot3DFlags_NoInputs
📸 New Demos
The documentation was improved in #154 and new demos were also added.
- Legend options demo
- Auto-fitting data demo
- Mouse picking demo
- Custom overlay demo
- Custom per-point style
- Config tab (Highly inspired by ImPlot's)
- About window with build information (Highly inspired by ImGui's)
🐛 Bug Fixes | 🛠️ Chores
- Chore: Add vcpkg mention to the documentation by @RT2Code in #69
- Chore: Add an integer encoded version number (
IMPLOT3D_VERSION_NUM) by @micb25 in #73 - Fix: Division by zero in ImRemap01 function by @adamsepp in #75
- Chore: AddTextRotated: fix for incoming ImGui v1.92 by @pthom in #78
- Fix: Consider axis inversion before calculating Z position for Z-order by @adamsepp in #80
- Chore: Remove Glad by @brenocq in #83 (suggested by @ocornut)
- Perf: Flags to plot without lines/fill/markers by @brenocq in #88 (proposed by @fecaltransplant)
- Fix: Drawing conflict with overlapping windows by @brenocq in #89 (reported by @Analysiszaj)
- Docs: Upgrade README roadmap by @brenocq in #117
- Fix: Quad sorting by @brenocq in #118 (reported by @epezent)
- Fix: Inverted rotation when plot is upside down by @brenocq in #136 (reported by @AhmedLilah)
- Fix: Plot overlapping with title by @brenocq in #138 (reported by @JBoschma)
- Fix: Inconsistent rotation direction by @brenocq in #147
- Fix: Wrong fit to data when
ImPlot3DFlags_Equalis enabled by @brenocq in #148 - Fix!: Triangle sorting with large values (migration to
double) by @brenocq in #152 (reported by @HeresJ0nny) - Docs: Improve documentation by @brenocq in #154 (suggested by @epezent)
- Chore: Set minimum required C++ to C++11 by @brenocq (suggested by @oktonion)
⚠️ Breaking Changes
As ImPlot3D is in early development, breaking changes may occur in the first few releases as the public API stabilizes.
To ensure ImPlot3D is ready for complex, real-world datasets, all plot coordinates have been migrated from float to double precision.
While most users won't need to change their code (as C++ handles implicit conversions), advanced users who directly interact with the following types and function signatures may need to update:
- Struct Members:
ImPlot3DPoint,ImPlot3DRange,ImPlot3DQuat,ImPlot3DTick::PlotPos,ImPlot3DAxis::NDCScale. - Draw List:
ImDrawList3D::ZBufferandImDrawList3D::_ZWritePtrare now usingdouble. - Functions:
SetupBoxRotation,SetupBoxInitialRotation,SetupBoxScale, andPlotTextnow acceptdoubleparameters.
Additionally, the functions GetPlotPos() and GetPlotSize() have been renamed to GetPlotRectPos() and GetPlotRectSize() for clarity within the 3D context. The old functions are now deprecated and will be removed in future versions.
See implot3d.cpp for the full list of changes.
🎉 New Contributors
- @RT2Code made their first contribution in #69
- @micb25 made their first contribution in #73
- @adamsepp made their first contribution in #75
- @ACvanWyk made their first contribution in #125
- @chrissanrow made their first contribution in #153
Full Changelog: v0.2...v0.3













