# A web-based volume path tracer

**URL:** https://discourse.slicer.org/t/a-web-based-volume-path-tracer/47447
**Category:** Community
**Tags:** dicom, volume-rendering, web
**Created:** [June 24, 2026, 1:24pm UTC](https://discourse.slicer.org/t/a-web-based-volume-path-tracer/47447 "2026-06-24T13:24:20Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![MikhailGorobets](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/mikhailgorobets/32/82512_2.png) [@MikhailGorobets](https://discourse.slicer.org/u/MikhailGorobets)
#### Post date: [June 24, 2026, 1:24pm UTC](https://discourse.slicer.org/t/a-web-based-volume-path-tracer/47447/1 "2026-06-24T13:24:20Z")

</div>

Hi everyone – I’ve been experimenting with browser-based medical volume rendering.  
It’s a volume path tracer that runs entirely in the browser. Under the hood it’s all C++ compiled to WebAssembly – Diligent Core’s WebGPU backend does the GPU rendering, Dear ImGui is the interface, and GDCM loads the DICOM data (experimental for now).  
Demo: [MedicalViewer](https://grenzwert.net/wasm-modules/MedicalViewer/MedicalViewer)  
**Chrome or Edge only** – it relies on WebGPU features other browsers don’t fully support yet.

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/9/f/9ff17483bfd3350446df74913188903c339d425c.jpeg)  
 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/4/5/4591abc9c24ea5953f48458bdcfd0694ff2c5f34.jpeg)  
 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/9/9/9904c649cd2b9416d29469010b04fdd1f153b271.jpeg)  
 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/8/2/82e8d576150e8cabb939c9d2705244167f7a1a24.jpeg)

---

<div class="post-metadata">

### Author: ![muratmaga](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/muratmaga/32/3622_2.png) [@muratmaga](https://discourse.slicer.org/u/muratmaga)
#### Post date: [June 24, 2026, 7:23pm UTC](https://discourse.slicer.org/t/a-web-based-volume-path-tracer/47447/2 "2026-06-24T19:23:09Z")

</div>

Nice work. Did you see @pieper’s WebGPU examples: [GitHub - pieper/SlicerWGPU: Use wgpu, a rust-python WebGPU implementation, in 3D Slicer · GitHub](https://github.com/pieper/SlicerWGPU/tree/main)

---

<div class="post-metadata">

### Author: ![MikhailGorobets](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/mikhailgorobets/32/82512_2.png) [@MikhailGorobets](https://discourse.slicer.org/u/MikhailGorobets)
#### Post date: [June 24, 2026, 9:27pm UTC](https://discourse.slicer.org/t/a-web-based-volume-path-tracer/47447/3 "2026-06-24T21:27:00Z")

</div>

Thanks! I haven’t seen those yet. On native platforms, I use the native graphics APIs through Diligent Core. In my project, WebGPU is used only for the Web version. WebGPU has quite a few drawbacks – from small but annoying limitations, like the lack of hardware trilinear filtering for fixed-point formats (R16\_Unorm, etc), to more fundamental issues, such as the specification not really addressing behavior in a multithreaded environment
