Screen-space ambient occlusion for volume rendering

We’ll need a week or so to integrate and test all the VTK updates and then add GUI to Slicer to configure it.

2 Likes

I assume this is not going to get into the current release being cut (5.6)?

Earlier today, @LucasGandel and I reviewed the list of VTK changes that we would need to backport to our Slicer/VTK fork, I am currently assessing if integrating these into the release is sensible.

4 Likes

The final change (VTK!10725) has been merged! :rocket:
This makes SSAO available for volumes, but not with the vtkRenderer::UseSSAOOn() function, you must explicitly set the render passes like this:

 // Render passes setup
  vtkNew<vtkRenderStepsPass> basicPasses;
  vtkNew<vtkSSAOPass> ssao;
  ssao->SetRadius(40);
  ssao->SetKernelSize(128);
  ssao->SetBias(0.01);
  ssao->BlurOn();
  // The depth format must be Fixed32 for the volume mapper to successfully copy the depth texture
  ssao->SetDepthFormat(vtkTextureObject::Fixed32);
  ssao->SetVolumeOpacityThreshold(0.95);
  ssao->SetDelegatePass(basicPasses);

  renderer->SetPass(ssao);

I’ll start working on screenshots and will try to kick off a doc for technical writing.

3 Likes

Is this available for preview versions?

I don’t think so. @jcfr can you make sure to backport the commits from VTK!10725 ? Then @lassoan’s MR on the sandbox module needs modifications to only include the setup of the render passes as done in my last comment.

@jcfr let me know when all the required VTK commits are in. Then I’ll update the Sandbox module according to @LucasGandel latest comment (Screen-space ambient occlusion for volume rendering - #44 by LucasGandel).

1 Like

Did this make into the patch? I am not seeing it listed under the 5.6.1 release notes.

Did this make into the patch? I am not seeing it listed under the 5.6.1 release notes.

These will be integrated when we update the version of VTK used in Slicer Preview.

A first post is now available: https://www.kitware.com/screen-space-ambient-occlusion-for-volumes/

I’m happy to help writing, reviewing, or providing screenshot if you want to communicate further once this is in Slicer.

I’m also considering revisiting the approach for almost fully transparent volume, as I think the ambient occlusion contribution should be multiplied with the fragment opacity

2 Likes

A post was split to a new topic: Improve ambient occlusion in volume rendering