From: Paul M. <p.e...@ru...> - 2006-08-31 12:37:14
|
Hi Brian, Brian Paul wrote: > Paul Melis wrote: > >> Hello, >> I'm wondering if the following is possible with Chromium (I've >> already got a bit of success, but no glory yet): >> >> I have an application, a molecular visualisation package, that I'd >> like to run on a 3-screen cylindrical projection setup. I've got a >> chromium configuration to work that does the non-planar tiling. But >> since the application was meant as a normal desktop application, the >> opengl window not only shows molecular structures and stuff in 3D, >> but also contains GUI elements (buttons, text, a command input line, >> etc) drawn in opengl. I don't think these elements, that are probably >> rendered in ortho2d mode, can be made to display correctly on the >> cylindrical screen, nor is it that important. I'd like to "cut out" >> that part of the viewport where the molecules are visible and only >> distribute the geometry visible in that part. Is there a way to set >> up chromium to get this done? > > > You might try writing a new SPU that examined the matrix operations > (glOrtho, glFrustum(), etc) to determine whether the 2D or 3D stuff > was being drawn, then no-op rendering commands as needed. I indeed took this route after your suggestion, writing a "filter3d" SPU and it seems to work fine in identifying the right parts to keep and what to throw away. But I'm having trouble with one aspect of this approach. As the GUI elements drawn provide functions that are still usable and some even unavailable in the separate GUI app made in Tcl/Tk the application is using, I'd like to keep the GUI elements on the master node where the app is controlled. In effect letting the opengl stream pass through unmodified. So my basic idea is: 1. run the visualisation app on a master node, where it runs as usual in the eyes of a user. the user can interact using mouse/keyboard and also use the GUI elements drawn in opengl. 2. run 3 render nodes that each display a part of the 3D geometry, but not any of the GUI elements Chromium is working behind the scenes on the master node intercepting the opengl stream and distributing it to the 3 nodes using the tilesort SPU. The problem is where to put my filter3d SPU. If I try to attach it on the slave side, once for each of the 3 nodes, it doesn't seem to have an effect. Could it be that opengl commands such as Viewport and MatrixMode are influenced by the tile-sorting? Perhaps an Ortho call is left out (as that is what the filter3d SPU basically looks for)? If I put filter3d before the tilesort SPU then the distributed scene is correct, none of the GUI elements are left in and I only get the "pure 3D" geometry. But then I don't have a non-filtered display on the master node anymore :-/ It feels like I need to split the opengl stream somewhere and send a filtered one to the render nodes and an unfiltered one to the master. Is this possible in an efficient way? In the docs it is mentioned that Chromium uses a graph-structure in defining the connections between nodes, but I assume that with SPUs you can only create a chain and not a split? Regards, Paul -- Paul Melis VR Specialist, Center for High-Performance Computing & Visualization, University of Groningen, The Netherlands T: +31 50 363 9298 E: p.e...@ru... W: http://www.rug.nl/rc/hpcv/index |