Incorrect assert in volume rendering shading with dependent components
This issue was created automatically from an original Mantis Issue. Further discussion may take place here.
Hi, I mentioned this problem on the user mailing list, but no one seemed to take any interest in it, so I am filing this as a bug, even if I am not sure it is desirable behaviour:
I am doing volume rendering of an rgba volume (4 channels 3d image). To do this I set the following 2 vtkVolume properties:
vtkVolumeProperty::IndependentComponentsOff()
and vtkVolumeProperty::ShadeOn()
I use the GPU Rendering: vtkGPUVolumeRayCastMapper
As a result, if I compile vtk in debug mode I stumble upon this failing assert call, in vtkOpenGLGPUVolumeRayCastMapper.cxx, line 4159 in vtk 5.8.0 (in git at this time it's on line 4152), in the following method:
void vtkOpenGLGPUVolumeRayCastMapper::PreRender(vtkRenderer *ren, vtkVolume *vol, double datasetBounds[6], double scalarRange[2], int numberOfScalarComponents, unsigned int numberOfLevels) [...] if ( vol->GetProperty()->GetShade() ) { shadeMethod=vtkOpenGLGPUVolumeRayCastMapperShadeYes; assert("check: only_1_component_todo" && numberOfScalarComponents==1); }
[...]
If I run the same code in Release mode, nothing goes wrong and there is indeed shading performed on my rgba data. Should this assert be removed, or is shading on dependent components not something to do?
I reckon this is indeed a dangling assert from a tiem this was not possible. But maybe I am just lucky that it works. In the latter case, I do apologise for the noise, but would like to get the reasoning behind this assert.
Best wishes, Benoit Bleuzé