So, one of the primary effects in the GNOME Shell user experience is to
take a stack of windows:

 +---------------+
 |               |+
 |               ||+
 |               |||
 |               |||
 +---------------+||
  +---------------+|
   +---------------+

And animate them zooming out and spreading apart to:

 +---------+  +---------+  +---------+
 |         |  |         |  |         | 
 |         |  |         |  |         |
 +---------+  +---------+  +---------+

This is surprisingly GPU intensive - say if you have a stack of 8
fullscreen 1920x1200 windows - not a weird situation - then at the
beginning you are drawing:

 8 * 1920 * 1200 * 60 = 1.1Gpix/sec

Which is beyond the capability of integrated graphics and even off
low-end discrete cards. The obvious win here is to use the depth buffer 
to greatly reduce the amount of work we need to do per pixel - to cut
out perspective divison and texture fetches and writes when texturing.

But I don't actually want to do deal with a 3D scene graph, I want to be
able to specify x/y coordinates for a window and have it appear at those
coordinates and have the z coordinates *only* be used for depth
clipping.

I'm not really sure about the best way to achieve this with Clutter and
would appreciate suggestions. Ideas:

 * Switch the stage over to an orthogonal transformation. Other than 
   maybe actually wanting perspective effects for something in the
   future the only disadvantage I know of is that (last I checked) 
   there is no API in Clutter to do this and you have to resort to bad
   hacks like connecting to ::paint on the stage.

 * Make the Window actor (a custom actor) munge the x/y coordinates
   when painting with Cogl so after the perspective transform the x/y
   coordinates are the same independent of Z.

 * Use a vertex shader to adjust the z coordinates after the perspective
   transform.

Any other ideas that I'm missing?

- Owen


_______________________________________________
clutter-app-devel-list mailing list
[email protected]
http://lists.clutter-project.org/listinfo/clutter-app-devel-list

Reply via email to