Edit this page

NA-MIC Project Weeks

Back to Projects List

PRISM Volume Rendering

Key Investigators

Project Description

The goal of this project is to enable the development of advanced 3D rendering techniques in Slicer. The goal is to facilitate access to GPU shaders and enable GPU-based filtering in Slicer by improving shader access multipass rendering in VTK and Slicer. The PRISM Module in Slicer will serve as a test environment for the new capabilities.


  1. Facilitate the development and debugging of GPU shaders for Slicer
  2. Extend the principles introduced in the PRISM module to surface rendering and other types of rendering
  3. Integrate work by Kyle Sunderland on VTK GPU image filters (see branch here) so that the filters are usable in Slicer
  4. Integrate GPU filters with volume rendering in such a way that filtered volumes do not have to be transfered back to CPU memory before rendering

Progress and Next Steps

  1. All parties met on Monday to discuss the required functionality in VTK and Slicer to enable more advanced rendering effects:
    1. The current VTK mechanism to modify shaders is limited
    2. It makes it difficult to combine different effects
    3. Development is difficult because the complete shader in not accessible
    4. Rafael: In Slicer, there is a need for a system that arbitrate the modification of shaders by different modules
    5. The Slicer shader property node is available only for volume rendering. The feature could easily be ported to surface rendering to facilitate the editing of surface shader
  2. Previous efforts by Simon Drouin were made to facilitate shader debugging. Code is available in this branch. The code still needs work to enable a debug mode where shader code can be kept in memory with additional tags to facilitate development.

Next steps


Opacity Peeling

Background and References