Skip to content

Latest commit

 

History

History
60 lines (46 loc) · 4.57 KB

File metadata and controls

60 lines (46 loc) · 4.57 KB

Back to Projects List

PRISM Volume Rendering

Key Investigators

  • 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

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.

Long-term Objective

  1. Facilitate the development and debugging of GPU shaders for Slicer (see this branch of VTK that improves shader readability)
  2. Extend the principles introduced in the PRISM module to surface rendering and other types of rendering (Adapt DisplayableManagers like in the volume rendering module?)
  3. 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).
  4. Explore custom rendering to simplify integration with the vtk render process. Prior work includes:

PW37 Objective

  1. Finish updating the PRISMRendering module to work with Slicer 5.
  2. 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.
  1. Generalize the mechanism that allows the VolumeRendering module to store vtkShaderProperties in the display node to obtain the same behavior with the Models module.

Progress

  • 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.

Next Steps

  • 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.

Illustrations

<iframe width="560" height="315" src="https://www.youtube.com/embed/8ywNFnkJFEM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Background and References