# Artifacts and poor performance of ParaView with vtkOpenGLVolumeRayCastMapper with high values of ScalarOpacityUnitDistance

**URL:** https://discourse.paraview.org/t/artifacts-and-poor-performance-of-paraview-with-vtkopenglvolumeraycastmapper-with-high-values-of-scalaropacityunitdistance/1279
**Category:** ParaView Support
**Created:** [February 12, 2019, 6:33pm UTC](https://discourse.paraview.org/t/artifacts-and-poor-performance-of-paraview-with-vtkopenglvolumeraycastmapper-with-high-values-of-scalaropacityunitdistance/1279 "2019-02-12T18:33:37Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![knolla](https://discourse.paraview.org/letter_avatar_proxy/v4/letter/k/c89c15/32.png) [@knolla](https://discourse.paraview.org/u/knolla)
#### Post date: [February 12, 2019, 6:33pm UTC](https://discourse.paraview.org/t/artifacts-and-poor-performance-of-paraview-with-vtkopenglvolumeraycastmapper-with-high-values-of-scalaropacityunitdistance/1279/1 "2019-02-12T18:33:37Z")

</div>

Is there a good overview of how OpenGL 2 volume rendering in VTK is currently implemented?

I’m reading through the code (e.g., vtkOpenGLGPUVolumeRayCastMapper.cxx), trying to understand performance and a few interesting artifacts, comparing to IndeX and OSPRay running the waveletvolume.py benchmark. From a quick code-read, it rasterizes volume sub-blocks. The GLSL fragment program ray marches within these blocks, and uses JITted code to classify, shade and then integrate the samples as necessary.

I’m trying to understand where artifacts (see attached) come from – as well as why performance degrades for large values of ScalarOpacityUnitDistance (\>16).

 ![f0](https://discourse.paraview.org/uploads/default/original/2X/8/8e7c51a2036ba872784001e1d5f28a82aa97bedb.jpeg)

Thanks to anyone who can give an overview and guidance.  
-Aaron
