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
