# Screen-space ambient occlusion for volume rendering

**URL:** <https://discourse.slicer.org/t/screen-space-ambient-occlusion-for-volume-rendering/32323>\
**Category:** Development\
**Tags:** volume-rendering\
**Created:** [October 19, 2023, 9:16am UTC](https://discourse.slicer.org/t/screen-space-ambient-occlusion-for-volume-rendering/32323 "2023-10-19T09:16:17Z")\
**Posts on this page:** 1\
**Showing post:** 33

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [October 27, 2023, 10:38pm UTC](https://discourse.slicer.org/t/screen-space-ambient-occlusion-for-volume-rendering/32323/33 "2023-10-27T22:38:38Z")

</div>

You can set those information keys in Slicer in Python like this:

```python
threeDViewWidget = slicer.app.layoutManager().threeDWidget(0)
vrDisplayableManager = threeDViewWidget.threeDView().displayableManagerByClassName("vtkMRMLVolumeRenderingDisplayableManager")

volumeNode = slicer.mrmlScene.GetFirstNodeByClass('vtkMRMLVolumeNode')

volumeActor = vrDisplayableManager.GetVolumeActor(volumeNode)
info = volumeActor.GetPropertyKeys()
if not info:
    info = vtk.vtkInformation()
    volumeActor.SetPropertyKeys(info)
info.Set(vtk.vtkOpenGLActor.GLDepthMaskOverride(), 1)

```

Would it be possible to set enable depth mask override by default to avoid the need for such low-level manipulations? None of the other volume rendering techniques require such calls.

If there are some negative side-effects of enabling depth mask override in some cases then making it optional could make sense, but then there should be more convenient API, for example a method in `vtkVolume`.

---

_[View the full topic](https://discourse.slicer.org/t/screen-space-ambient-occlusion-for-volume-rendering/32323)._
