Seamless volume rendering of 3D texture based octree

Hi,

I’m doing volume rendering of large CFD data sets using 3D textures and fragment shaders. I use an octree to spilt the data in chunks of manageable 3D textures, and then use a back to front rendenring of slices of the octree with proper blending to obtain a fake raycasting solution (nothing new here).

My problem is that there are visible artifacts between texture blocs in the octree once its rendered, as the linear interpolation is not achieved in one run throughout the full volume. You can clearly spot the seams between the blocs as darker lines. I tried various solutions including scaling the blocs to make the overlap, various border options for the textures themselves, with no sucess whatsoever…

The only thing I could do now is to copy in each 3D texture block the border of its neighbouring blocks so that the interpolation is done further than the border of the block with some data from its neighbour. But I would have to scale down the polygons I use for slicing to avoid overlapping…
And this induces a serious data overhaed if the block size is small, as each border is copied at least twice in the textures…

I don’t know if it came through allright, but does anyone have some experience with this?

Thank you!

What clamp mode do you use? I would suggest GL_CLAMP_TO_EDGE…

Tried this already. The problem comes from the fact that the linear interpolation should be performed on this huge 512^3 RGBA texture, I had to split it into 8 256^3 textures, and on the boundary from one block to another, there is no “next pixel” to be interpolated, since the pixel in question is actually stored in another distinct texture. I figured out the only way is to include the extra slice of neighboring pixels into each block…yeah whatever…
Thanks for the tip though :wink:

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.