This fixes most of the rendering issues with cube in multi
screen setups and GLSL backend. For cylinder and sphere the
rendering of areas between screen is currently disabled if
using the GLSL backend. It needs adjustments to use another
vertex shader. Not sure if it is worth the effort.
The branch contains the first step in reworking the kwineffects
library. This includes:
* replacing virtuals by signals and slots
* dropping some unused methods
* remove KWin::TimeLine
More to come.
Conflicts:
kwin/workspace.cpp
The KWin::TimeLine class was only a small wrapper around QTimeLine
without adding anything to QTimeLine what is not present in QTimeLine.
The initial idea was to make it possible to provide more curve shapes.
This is now obsoleted by Qt shipping more useful curves with QTimeLine.
So let's clean up a little bit and use QTimeLine directly instead of
the small wrapper.
All effects are adjusted to use QTimeLine directly.
EffectsHandlerImpl just forwards the signals from TabBox. In order
to have a valid pointer to the TabBox, the TabBox is now initialized
before compositing in Workspace.
QMatrix4x4 accepts data in row-major order, but returns them in
column-major order, which is not documented and because of that
I expected them to be in row-major order.
This commit fixes it and rewrites the shaders to apply the matrix
multiplications in the right order.
REVIEW: 100759
Rotation is now only handled by the QMatrix4x4 m_rotationMatrix,
so no more need for display lists. Resulting in a cleaner code without
differences between OpenGL 1.x and 2.x/GLES.
The vertex buffer implementation uses the shader manager to decide
whether core painting should be used or not. Shader manager is only
used by shaders using vertex attributes instead of gl_Vertex etc.
This includes quite some refactoring. For the cube cap a VBO is used
instead of glLists and all the required transformations are moved into
paintCap() which makes paintScreen more clean.
Currently the mirroring of bottom texture is still missing and cylinder
and sphere caps are not yet ported to using VBO.
I wouldn't be surprised if it is broken for legacy GL atm.
Currently working:
* cube slide
* basic cube
* rotations
* reflections
Not working:
* Cube Inside effects
* Reflection plane (needs to be done in a shader)
* cube caps
* sphere/cylinder
* filled in areas in multi desktop
into KWin's global namespace. Morever None already kind of clashes with X's None.
CCMAIL: kde@martin-graesslin.com
svn path=/trunk/KDE/kdebase/workspace/; revision=1170588
Rendering of the EffectFrame is moved into the scene as Scene::EffectFrame with a concrete implementation in SceneXrender and SceneOpenGL.
A factory method for an EffectFrame is added to the EffectsHandler, which is used by the effects.
Next step: pass the EffectFrame through all effects, so that effects can transform, blur, invert whatever it.
svn path=/trunk/KDE/kdebase/workspace/; revision=1151271
The cap color is used as a background for tranclucent pixels and opacity is set to cube opacity. Changed to clamp to border and using cap color as border color.
svn path=/trunk/KDE/kdebase/workspace/; revision=962425
There are two small todos: when mixing manual (mouse) rotation with cursor key rotation or zooming the reflection becomes wrong.
FEATURE: 178611
svn path=/trunk/KDE/kdebase/workspace/; revision=962205
* it looks strange
* it changes the projection matrix which makes the code ugly
* it never worked with cylinder or sphere
* it was broken in trunk anyway
svn path=/trunk/KDE/kdebase/workspace/; revision=940977