Improve 3d realism of compiz by adding a depth component to window position

Registered by Jeremy Manning

While Xgl/Compiz/AIGLX/Beryl offer some really nice new features, there are several shortcomings and/or inconsistencies with the current default implementation. In particular, when windows are drawn with shadow, an additional component of window position (i.e. depth) is implied, but not correctly implemented. This specification posits that windows and other desktop objects be given an additional attribute, depth, which modifies how the objects are drawn There are several implications here:

1.) When rotating the desktop, for example using the "cube" desktop switcher, the representation should reflect window depth by showing windows at various heights relative to the cube's surface. This functionality is provided in Beryl via the "3D Windows Layer" plugin. A movie of this plugin in action can be found as http://www.youtube.com/watch?v=PpIhoLzDOTY.

3.) When bringing a new window into focus, if it is occluded by another window, a more realistic transition should be used (rather than windows appearing to "snap" through each other). One possibility is that the occluding window increases in transparency while the new windows to be focused decreases in transparency. This transition should be quite rapid - less than 0.25 seconds - and as subtle as possible.

In general, if 3d enhancements are to make interacting with the desktop more similar to interacting with physical objects in the world, desktop objects should do their best (where appropriate) not to violate physical laws.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
Proposed for feisty
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Check out what Metisse project offers - it is more 3D than Compiz/Beryl but is not based on XGL/AIGLX. Also see Project Looking Glass for more 3D ideas. --Przemysław Kulczycki

1.) Metisse is not 3D -- read here: http://lwn.net/Articles/219314/
2.) Project Looking Glass is slow, buggy, and more "proof of concept" than useful at this point
3.) Beryl's 3D window plugin gets at what I was looking for - but instead of adding the depth component when the desktop cube is being rotated, I think windows should always reflect their implied depth, by growing slightly when they are closer to the user and shrinking when they are farther away.
      - Jeremy Manning

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.