# \[ANN\] VolumeRendering.jl – plotting volumes, fast and interactive

**URL:** <https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462>\
**Category:** Package Announcements\
**Created:** [July 24, 2026, 8:35pm UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462 "2026-07-24T20:35:12Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [July 24, 2026, 8:35pm UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462/1 "2026-07-24T20:35:13Z")

</div>

Happy to announce a new package [VolumeRendering.jl](https://github.com/JuliaAPlavin/VolumeRendering.jl) for visualizing 3D fields – scalar or vector, always fast, interactive, and extensible.

Just registered in General!

The default recommended way to use it is as an [ImGui](https://discourse.julialang.org/t/ann-cimgui-jl-a-wrapper-for-bloat-free-immediate-mode-graphical-user-interface-dear-imgui/21268) widget, can potentially be integrated into other environments if needed.

# Simplest example

```julia-auto
using VolumeRendering, AxisKeys

# your data: any 3D `KeyedArray` whose axis keys give the world coordinates
A = KeyedArray(...; x = xs, y = ys, z = zs)

view = FieldView(A)

# ...then, inside your ImGui frame:
ShowField(view)

```

Result (the small UI popup is automatic):

# More advanced

VolumeRendering is used in [PlasmaScope.jl](https://github.com/aplavin/PlasmaScope.jl) to display 3D fields from GRMHD simulations. See that app for how to add simple geometry objects, slices into the field, and for arbitrary (non-rectangular) grid support.

Should be broadly applicable and performant in basically any regime!

---

<div class="post-metadata">

**Author:** ![tecosaur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tecosaur/32/23206_2.png) [@tecosaur](https://discourse.julialang.org/u/tecosaur)\
**Post date:** [July 25, 2026, 7:27am UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462/2 "2026-07-25T07:27:51Z")

</div>

Very cool! I’m curious though, can you get these sorts of 3d plots with GLMakie?

---

<div class="post-metadata">

**Author:** ![kahliburke](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kahliburke/32/208472_2.png) [@kahliburke](https://discourse.julialang.org/u/kahliburke)\
**Post date:** [July 25, 2026, 7:48am UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462/3 "2026-07-25T07:48:27Z")

</div>

> [@tecosaur](#):
>
> I’m curious though

I played around with it in Slate to see what I could accomplish in a short time today. Mainly to see if integrating it would work, given it’s designed to work primarily with the CImGui.jl framework.

[https://dl.dropboxusercontent.com/scl/fi/2v9sahimlu9doh287k4c2/slate-volumetric.mp4?rlkey=4jui1muv3ais14sclsxnpqnd8&raw=1](https://dl.dropboxusercontent.com/scl/fi/2v9sahimlu9doh287k4c2/slate-volumetric.mp4?rlkey=4jui1muv3ais14sclsxnpqnd8&raw=1)

---

<div class="post-metadata">

**Author:** ![cshen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cshen/32/217287_2.png) [@cshen](https://discourse.julialang.org/u/cshen)\
**Post date:** [July 25, 2026, 9:00am UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462/4 "2026-07-25T09:00:27Z")

</div>

Amazing!  
I was planning on building an imGui UI at work for sound field visualizations. I guess I don’t have any more excuses now…

---

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [July 25, 2026, 12:16pm UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462/5 "2026-07-25T12:16:19Z")

</div>

> [@tecosaur](#):
>
> Very cool! I’m curious though, can you get these sorts of 3d plots with GLMakie?

Makie does have some volumetric plots, but they are fundamentally much more limited as far as I understand – eg, they require materialized rectangular axis-aligned grid, and are generally slower. Here, I make sure even large-ish fields/high rendering resolutions remain interactive.

And the main fundamental difference is the “level” of interactivity. After discovering imgui recently, I came to using Makie less and less – really, only use it for static high-quality plots, and for simple animations of those. I always found it hard to build truly dynamic interfaces in Makie, even basic things like completely different sets of controls/plot depending on a selection, or these popup windows, etc. And now I know a more straightforward way 🙂 As a welcome side-effect, one also gets much smaller TTFX than Makie.

---

<div class="post-metadata">

**Author:** ![cshen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cshen/32/217287_2.png) [@cshen](https://discourse.julialang.org/u/cshen)\
**Post date:** [July 25, 2026, 2:15pm UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462/6 "2026-07-25T14:15:07Z")

</div>

I’m wondering, how far are we from trimmable imGui applications? Have you tried already for this one?

---

<div class="post-metadata">

**Author:** ![devel-chm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/devel-chm/32/3572_2.png) [@devel-chm](https://discourse.julialang.org/u/devel-chm)\
**Post date:** [July 25, 2026, 4:29pm UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462/7 "2026-07-25T16:29:08Z")

</div>

I cannot install for Julia 1.10.11 and windows 11:

```julia-auto
 (jl_LS4j5v) pkg> add https://github.com/JuliaAPlavin/VolumeRendering.jl
     Cloning git-repo `https://github.com/JuliaAPlavin/VolumeRendering.jl`
    Updating git-repo `https://github.com/JuliaAPlavin/VolumeRendering.jl`
   Resolving package versions...
ERROR: Unsatisfiable requirements detected for package ImPlotExtra [bf2a09a8]:
 ImPlotExtra [bf2a09a8] log:
 ├─ImPlotExtra [bf2a09a8] has no known versions!
 └─restricted to versions 0.1 by VolumeRendering [16f7ad8c] — no versions left
   └─VolumeRendering [16f7ad8c] log:
     ├─possible versions are: 0.1.0 or uninstalled
     └─VolumeRendering [16f7ad8c] is fixed to version 0.1.0

```

---

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [July 25, 2026, 5:17pm UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462/8 "2026-07-25T17:17:29Z")

</div>

> [@cshen](#):
>
> I’m wondering, how far are we from trimmable imGui applications? Have you tried already for this one?

I personally haven’t explored trim in julia at all – but happy to hear others’ experiences!

---

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [July 25, 2026, 5:20pm UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462/9 "2026-07-25T17:20:04Z")

</div>

> [@devel-chm](#):
>
> I cannot install for Julia 1.10.11 and windows 11:

Sorry, the latest commit uses the interactive colorbar from ImPlotExtra – another package of mine that I intend to register soon. Use the version of VolumeRendering.jl registered in General, ie `]add VolumeRendering`.

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://discourse.julialang.org/u/jules)\
**Post date:** [July 26, 2026, 10:25am UTC](https://discourse.julialang.org/t/ann-volumerendering-jl-plotting-volumes-fast-and-interactive/138462/10 "2026-07-26T10:25:22Z")

</div>

Yeah sometimes I wish we could fully redesign Makie from the ground up 🙂 It’s grown pretty organically and with a different focus at different times, so imgui can be much nicer to use for these crammed GUIs with lots of options, popups, etc. TTFX is not primarily our fault I’d say but of course it matters a lot for interactive use cases. In terms of these interfaces where you have completely different sets of controls in different sections, probably this work will help [All the new GUI features combined - Pull Request #5702 - MakieOrg/Makie.jl - GitHub](https://github.com/MakieOrg/Makie.jl/pull/5702)
