Hey Dirk

There was a paper a few years ago that did this for shadow mapping, but I can't find it right now. The main idea is to think of the pixel/voxel as a cube that is split into two parts, one inside, one outside (in your case, of the ROI). When you render a pixel that belongs to the cube, you figure out where it is in the cube (fractional texcoords should be fine), and use that to decide whether it's in or out, and act accordingly. So for you you could save a plane equation that says for example that the area left of the x=.75 point in your cube is inside the ROI, the rest is outside, and you would get super-voxel resolution ROIs. You could also go beyond planes to higher-order


Got it, sounds a lot like generating an isosurface using marching cubes or something similar. 

 
I guess the question is how often you need to update the ROI, and how high the ROI resolution really needs to be.

You've hit the nail on the head, I like the idea of using shaders as it won't require much editing of existing opengl code and would provide the best looking results.
  Thanks for the help, much appreciated.
  Andrew