Difference between revisions of "Slicer3:Volume Rendering With Cuda"

From NAMIC Wiki
Jump to: navigation, search
Line 5: Line 5:
 
A Short description of the modules needed to integrate a CUDA based Volume Rendering into VTK
 
A Short description of the modules needed to integrate a CUDA based Volume Rendering into VTK
  
=== VTK Modules ===
+
=== VTK Modules and Pipeline ===
 +
These are the modules that will be created in order to integrate a Cuda based Volume Rendering into Slicer3
 
# '''A [http://www.vtk.org/doc/release/5.0/html/a01572.html vtkImageReader]:''' to read Volume data as any kind of Volume Data
 
# '''A [http://www.vtk.org/doc/release/5.0/html/a01572.html vtkImageReader]:''' to read Volume data as any kind of Volume Data
 
# '''A [[vtkCudaImageFilter]]:''' A Filter to convert from the reader output to a cuda-able DataSet
 
# '''A [[vtkCudaImageFilter]]:''' A Filter to convert from the reader output to a cuda-able DataSet
Line 16: Line 17:
 
# '''An actor''' that places the volume into the scene
 
# '''An actor''' that places the volume into the scene
 
# Chain this '''pipeline''' together and attach it to a rendering window.
 
# Chain this '''pipeline''' together and attach it to a rendering window.
 +
 +
In the following image the pipeline is displayed together with the connections from the VTK, Slicer3 and CUDA frameworks.
 +
[[Image:VtkCudaVolumeRenderingPipeline.png]]
 +
Description:
 +
* The Fat line displays the pipeline flow.
 +
* Green colored fields are classes from the Slicer3 or vtk implementation
 +
* Red colored fields are CUDA and hardware specific parts
 +
* Blue colored fields are specially implemented parts for the communication of cuda and vtk and the volume rendering algorithms.
  
 
== Tasks ==
 
== Tasks ==

Revision as of 18:59, 28 December 2007

Home < Slicer3:Volume Rendering With Cuda

Objectives

Lookout

A Short description of the modules needed to integrate a CUDA based Volume Rendering into VTK

VTK Modules and Pipeline

These are the modules that will be created in order to integrate a Cuda based Volume Rendering into Slicer3

  1. A vtkImageReader: to read Volume data as any kind of Volume Data
  2. A vtkCudaImageFilter: A Filter to convert from the reader output to a cuda-able DataSet
  3. A vtkCudaDataSet: A new vtkDataSet where that holds and handles the data transfer from and to one or multiple CUDA devices.
  4. A vtkCudaVolumeMapper: A new vtkVolumeMapper that renders the scene using the
    1. lighting model
    2. a prepared Z buffer
    3. a camera position
    4. A [vtkTexture] and a Plane to render the result to
  5. An actor that places the volume into the scene
  6. Chain this pipeline together and attach it to a rendering window.

In the following image the pipeline is displayed together with the connections from the VTK, Slicer3 and CUDA frameworks. VtkCudaVolumeRenderingPipeline.png Description:

  • The Fat line displays the pipeline flow.
  • Green colored fields are classes from the Slicer3 or vtk implementation
  • Red colored fields are CUDA and hardware specific parts
  • Blue colored fields are specially implemented parts for the communication of cuda and vtk and the volume rendering algorithms.

Tasks

  1. Proof of concept
  2. Integrate into VTK
    1. Render the output from the code of Nicholas volume render sample into vtkImageViewer
    2. Adapt to Z-buffer
    3. Adapt lighting model
    4. Adapt to input Image
  3. Integration into Slicer

Timeline

From To Task
12/01/07 05/31/08 Master Thesis Duration
12/01/07 12/31/07 Reading into the Project, Defining Basic Classes
01/01/08 01/06/08 Basic Class Definition Ready for Hands on Meeting
01/07/08 01/12/08 Hands on meeting in Salt Lake City
01/14/08 02/01/08 Further Implementation

Resources

  1. For testing purposes: File:Heart256.raw Store this file in Slicer3/Modules/VolumeRenderingCuda/Testing/heart256.raw
  2. Also checkout the main project page at Slicer-IGT/GPU-IGT