visit
visit copied to clipboard
Fix rendering/volume test issues
Describe the bug
New volume rendering tests added by PR #19055 has problems with three tests: volume_10, volume_20, volume_30 in serial and parallel mode yield blank images. They were added to the skip-list.
volume_30 in scalable,parallel,icet crashes, so this test is programmatically skipped.
@ARSanderson who designed the tests says they should work, and thinks there may be an issue in VTK.
We should dive deeper and see if the situation can be resolved.
Desktop
- OS and version: Linux
- VisIt Version: develop
I took the rendering/volume.py test and functionized it so that individual sections could be tested independently of one another.
I discovered that volume_10 will render correctly if volume_01 and volume_02 are NOT run before it.
I did further digging and discovered the setting of rendererType
to Composite
for volume_02 is what causes volume_10 to not render correctly when it is run directly after volume_02.
Additional notes:
Having rendererType
set to either Composite
or Parallel
followed by a plot using Serial
rendererType will cause the Serial version to not be drawn. This happens whether or not the plots are deleted in between a Parallel/Composite and Serial renders. I even tried calling ClearCache
after the parallel or composite renderings and that didn't fix things either.
Problem: I cannot seem to reproduce this behavior outside the test suite.
For the volume_20 test, it tests multi_rect3d.silo with resampleType
set to NoResampling
.
I created a script to run outside the test suite.
It yields this message:
VisIt: Warning - The compute engine running on host localhost issued the following
warning: 'No resampling' was selected but the plot 'thinks' resampling needs to occur.
This need may or may not be correct. As such, the rendered results may or may not be correct.
and this image:
Just one domain.
This is due to the volume renderer expecting there to be only 1 dataset.
Modifying the renderer to allow multiple datasets yields this:
Since Volume plot wants the data to be resampled, and gives a warning about the results possibly not being good, not sure which one is better. Second one at least has all the domains.
Edit: PR #19347 addresses this.
volume_30 tests multi_ucd3d.silo with resampleType
set to NoResampling
.
This test is expected to yield no plot, because the data should be resampled to a Rectilinear Grid. Here is the error message seen when run outside the test suite:
VisIt: Error - Scalable Render Request Failed (VisItException)
viewer.exe: engine_ser.exe: The pipeline object is being used improperly: Only a vtkRectilinearGrid can be rendered. This exception can be fixed by resampling the data on to a rectilinear mesh.
Since the blank image is expected, volume_30 can be removed from the skip list for serial and parallel, but the crash with scalable,parallel,icet still needs to be investigated.
EDIT: Actually, not sure removing from the skip list is good. I just tried and got this error:
Test("volume_30")
File "visit_test_main.py", line 982, in Test
SaveWindow()
SystemError: <built-in method SaveWindow of NoneType object at 0x50e580> returned NULL without setting an error
>>>
Edit:
In the test suite, the cli crashes attempting to compare the currrent
with the baseline
image because no current
image exists.
I suggest this particular test should be removed.
Found a possible fix for volume_01 and SILR apparently not being honored, but results have more red than a PC plot with the same material removed ( mat 4).
However, my tweaks are introducing more interference between the different sections of this test.
Seems like something in the pipeline or other settings is not getting reset to default even when I ensure all plots get deleted and all databases closed.
Edit: Regarding the new image having more red, the Serial rendererType is being tested here, and yes it is vastly different than the Composite rendererType being tested (under same conditions) in volume_02. Even Parallel rendererType yields better results.
Regarding the 'intereference' with these changes, it is actually due to a Parallel or Composite render being done before a Serial type, discussed in previous comment above.