Real-time medical imaging with Rust + wgpu — is this an underexplored niche?

I'm an orthopedic surgeon, not a professional developer. I built a DICOM medical image viewer (OrthoRay) using Rust + Tauri + wgpu because I was frustrated with the rendering performance of existing tools when working with large CT/MRI datasets (500MB+ series).
Most DICOM viewers in the medical space are either Electron-based, legacy C++/OpenGL, or cloud-rendered. I wanted to explore whether Rust + wgpu could offer something meaningfully different for GPU-accelerated medical rendering — specifically:
Real-time 3D Volume Rendering with custom transfer functions
Multi-Planar Reconstruction (MPR) — coronal, sagittal, axial planes from raw DICOM data
A custom bone visualization algorithm I developed (BoneFidelity) that enhances cortical bone contrast for surgical planning
Some things I learned along the way:
wgpu's compute shaders were surprisingly well-suited for volume raycasting. The abstraction over Vulkan/Metal/DX12 meant I didn't have to pick a graphics backend — it just works cross-platform.
DICOM parsing was handled well by existing Rust crates — the ecosystem is more mature than I expected for such a niche standard. Most vendor-specific quirks were already covered.
The borrow checker was brutal for someone learning Rust via AI assistants, but the resulting memory safety is exactly what you want in software that handles patient data.
What I'm genuinely curious about from this community:
Is Rust + wgpu being used in other scientific/medical visualization projects? I haven't found many examples beyond game engines and creative coding.
For those working with wgpu compute shaders — are there known performance pitfalls I should watch for when scaling to 4K+ slice volumes?
Is there appetite in the Rust ecosystem for a well-documented open-source medical rendering pipeline, or is this too niche?
The project is free and available on the Microsoft Store. Documentation (with technical details): https://orthoarchives.com/en/orthoray/docs/getting-started/what-is-orthoray
I'd appreciate any technical feedback, criticism, or pointers to related work.

6 Likes

I'm not in a position to answer any of your questions there but I have been very impressed with WGPU and Rust experiments. Everything has worked flawlessly on Linux, Mac and Windows. Even on a big old desktop PC box with ancient Nvidia card at 100FPS. With a little effort everything has also worked in the browser with WASM.

Given all that I think you will do very well.

1 Like

I'm considering extracting my rendering pipeline into a small reusable crate — something like a dicom-render that handles the GPU side (raycasting, MPR, windowing via wgpu) as a complement to dicom-rs. I haven't come across a standalone Rust crate for this yet, though I may have missed something. Would this be useful to anyone, or is there already an existing solution I should look at?

Very nice.
The documentation says it is "open source", can you please provide a link to the sources so I can test it on my Linux box. I have some scans from prior medical work and would like to try your program.

2 Likes

Source is here: GitHub - Mrmeric/medical-imaging-rs: GPU-accelerated medical imaging library for Rust — contributions, feedback, and honest criticism are all welcome.

Did git clone before it vanished. I have been busy in my $real job$ and haven't had but a glance. Thanks for sharing by the way. I see the library crates, was hoping to play with orthoray itself. Maybe you are cleaning stuff up before you put it back up on github? Or did you change your mind about sharing. I understand that too.

I, as a perpetual amateur, will give your library a look. Try to test it out and let you know if your abi is easy to use / understandable. Mind you I don't know much about DICOM, so as I read your code and comments, I will also be looking up DICOM stuff so I know what you are talking about....Thank for the weekend classwork.
EDIT.
I went to your documentation for Orthray again today and see it is called "free" but I don't see "open source". Did that change or did I misread a few days ago?