Re: Selecting what to tilesort?

Paul Melis <[email protected]>
Newsgroups gmane.comp.graphics.chromium.user
Message-ID <[email protected]>
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: [email protected]
W: http://www.rug.nl/rc/hpcv/index


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.