Back to Projects List
- Simon Drouin, ETS Montreal
- Steve Pieper, Isomics, Cambridge MA, USA
- Andrey Titov, ETS Montreal
- Rafael Palomar, Oslo University Hospital / NTNU, Norway
- Mauro Dominguez
- Samuelle St-Onge, ETS Montreal
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 (see this branch of VTK that improves shader readability)
- Extend the principles introduced in the PRISM module to surface rendering and other types of rendering (Adapt DisplayableManagers like in the volume rendering module?)
- Integrate GPU filters in Slicer and connect them with volume rendering in such a way that filtered volumes do not have to be transfered back to CPU memory before rendering. See work by Kyle Sunderland on VTK GPU image filters (branch here).
- 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
- Finish updating the PRISMRendering module to work with Slicer 5.
- Enable opening shaders with tags in a text editor while running Slicer
- Previous efforts by Simon Drouin were made to facilitate shader debugging by leaving tags in the shader code. Code is available in this branch.
- In vtkShaderProgram class, debug functionality is available by setting the string variable FileNamePrefixForDebugging, which loads a shader from a file before rendering or dumps the shader to a file if doesn't already exists. However, this functionality is private. Mappers should have public functions to enable this debugging mechanism.
- Generalize the mechanism that allows the VolumeRendering module to store vtkShaderProperties in the display node to obtain the same behavior with the Models module.
- PRISM module code cleanup: removed underused and buggy shader editing gui
- Started adaptation of shader gui to use new Markup system in Slicer
- Discussion with Kitware: tools to debug shaders in VTK (access to full shader code and improved code readability)
- Planned a followup meeting on the future of rendering in Slicer after PW.
- Use more appropriate types of markups when needed (e.g. plane intersection could use lines instead of points)
- Improve architecture of the module
- Support for more shader parameter types
- Support new VTK rendering functionality: Physically-based shading model, ambient occlusion and shadowing.
- PRISM Module GitHub repository.
- Incomplete documentation for the Volume Rendering shader used by vtkOpenGLVolumeRaycastMapper
- Original article about the PRISM framework that served as a basis to develop the PRISM module in Slicer
- Previous project weeks