[vtkusers] Line smoothing and parallel rendering
Gregory D Abram
gabra at us.ibm.com
Wed Aug 9 17:30:50 EDT 2006
I'm experimenting with the vtkCompositeRenderManager and am running into a
problem. If I add lines (for example, the bounding box of a data
partition) to the rendering on a node, I get terrible streaks all over the
composited image.
After much poking around, I've found that (even outside of the compositing
parallel rendering environment) OpenGL line rendering is anti-aliased
(even after setting RenderWindow->LineSmoothingOff() immediately after
creating the render window) and, further, when a pixel is only partially
affected by a line, it may or may not update the Z depth buffer - based, I
suppose, on whether the proportion of coverage exceeds some threshold. But
it *always* affects the color buffer, so you can have a pixel thats not
the background color but is at the background depth. (No, I'm not
hallucinating. Yes, I have a little program that demonstrates this.)
Then, in the parallel compositing code, when it tries to run-length encode
the background away, it looks for runs of constant Z = 1. When it reaches
the end of such a run, it uses the color of the final pixel of that run as
the color of the whole run. Unfortunately, that pixel may be partially
covered by an antialiased line, enough to change the color, but not enough
so that it updates the depth. So the subsequent run of "background"
receives a color that isn't the background color, resulting in a streak
of color extending either to the next non-background pixel or the end of
the buffer.
Near as I can tell, the run-length encoding code needs to match color as
well as Z = 1. Or we can get the color buffer and Z buffer updates to
match, but I don't understand why they *aren't* matching as it is now.
Linux RHEL3, Quadro FX 3400/4400 driver 7676.
Greg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20060809/af0d7092/attachment.htm>
More information about the vtkusers
mailing list