Back to Projects List
- Simon Drouin, ETS Montreal
- Steve Pieper, Isomics, Cambridge MA, USA
- Kyle Sunderland, PerkLab, Queen’s University, Canada
- Andrey Titov, ETS Montreal
- Rafael Palomar, Oslo University Hospital / NTNU, Norway
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.
- Facilitate the development and debugging of GPU shaders for Slicer
- Extend the principles introduced in the PRISM module to surface rendering and other types of rendering
- Integrate work by Kyle Sunderland on VTK GPU image filters (see branch here) so that the filters are usable in Slicer
- 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
- All parties met on Monday to discuss the required functionality in VTK and Slicer to enable more advanced rendering effects:
- The current VTK mechanism to modify shaders is limited
- It makes it difficult to combine different effects
- Development is difficult because the complete shader in not accessible
- Rafael: In Slicer, there is a need for a system that arbitrate the modification of shaders by different modules
- 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
- 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.
- Move vtkShaderProperties to the vtkMRMLDisplayNode level
- Explore custom rendering to simplify integration with the vtk render process. Prior work includes:
- Python scripted Actor/Mappers: https://www.slicer.org/wiki/Slicer3:Python:ScriptedActor
- SimpleMapper: https://github.com/IbisNeuronav/Ibis/tree/master/IbisVTK/vtkExtensions
- PRISM Module GitHub repository.
- Original article about the PRISM framework that served as a basis to develop the PRISM module in Slicer
- Previous project weeks