Commit graph

210 commits

Author SHA1 Message Date
Martin Gräßlin
38d760c960 Only push shader when Cube effect is active
This caused situations in which the shader was pushed but never
popped from the stack as for the latter case there was a check
whether the effect is active.

BUG: 280455
2011-09-27 17:42:20 +02:00
Script Kiddy
4cbbf921d4 SVN_SILENT made messages (.desktop file) 2011-09-09 09:21:44 +02:00
Script Kiddy
157f51ce85 SVN_SILENT made messages (.desktop file) 2011-09-08 09:04:13 +02:00
Martin Gräßlin
fe4329a252 Only call active effects in the effect chain
Each effect is able to declare itself as currently being active,
that is transforming windows or painting or screen or doing anything
during the current rendered frame.

This change eliminates the hottest path inside KWin identified by
callgrind.

REVIEW: 102449
2011-08-29 07:06:58 +02:00
Script Kiddy
c3004ddc7b SVN_SILENT made messages (.desktop file) 2011-08-27 10:03:17 +02:00
Montel Laurent
62c5a5e276 normalize signal/slots 2011-08-17 23:51:55 +02:00
Script Kiddy
857a61e30f SVN_SILENT made messages (.desktop file) 2011-08-04 10:39:45 +02:00
Script Kiddy
1eb1c85289 SVN_SILENT made messages (.desktop file) 2011-07-13 09:17:45 +02:00
Script Kiddy
d414f57c8d SVN_SILENT made messages (.desktop file) 2011-07-07 10:20:05 +02:00
Script Kiddy
976f396fc7 SVN_SILENT made messages (.desktop file) 2011-07-06 10:41:48 +02:00
Martin Gräßlin
050ea5010b Remove PaintClipper from Cube
Seems to be a relict from the time when we scaled the cube on one screen.
2011-07-05 20:18:19 +02:00
Philipp Knechtges
827f9219be kwin: add support for y-inverted textures to the Cube effect 2011-07-04 17:50:12 +02:00
Martin Gräßlin
a05ad98896 Remove textureWidth/textureHeight from all Shaders
The uniforms textureWidth and textureHeight were only needed for
normal windows. For everything else it was just 1.0/1.0, that is
normalized.

The makeArrays method is changed to produce normalized texcoords
obsoleting the need for these uniforms. So two uniforms less, one
calculation in vertex shaders less and many many lines of code
removed.

At the same time makeArrays is also adjusted to take care of
yInverted of the texture, which is needed as we no longer can use
the enableUnnormalizedTexCoords which did the yInverted transformation.

REVIEW: 101646
2011-06-19 20:54:13 +02:00
Script Kiddy
16771b043c SVN_SILENT made messages (.desktop file) 2011-06-19 09:40:27 +02:00
Martin Gräßlin
d0e57a57cc Fix incorrect rendering of Cube Wallpaper with GL2
Textures should be rendered with simple shader when not being transformed.
2011-06-15 21:40:15 +02:00
Script Kiddy
b0e3b23c25 SVN_SILENT made messages (.desktop file) 2011-06-08 09:23:45 +02:00
Script Kiddy
a7dc64e5b8 SVN_SILENT made messages (.desktop file) 2011-05-29 10:09:53 +02:00
Script Kiddy
3d0c81f121 SVN_SILENT made messages (.desktop file) 2011-05-17 10:49:34 +02:00
Script Kiddy
9d7c88d288 SVN_SILENT made messages (.desktop file) 2011-05-11 09:17:09 +02:00
Martin Gräßlin
32adc59e4b Use cap shader to render area between screens in cube
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.
2011-05-01 11:28:07 +02:00
Martin Gräßlin
d396ce990b Fix untextured cube caps with GLSL 2011-05-01 11:28:07 +02:00
Martin Gräßlin
57c101c04d Fix sphere shader 2011-04-29 14:12:48 +02:00
Martin Gräßlin
9586c0b8d4 Fix broken cube rotation with GL2 backend 2011-04-27 15:13:26 +02:00
Script Kiddy
25fd8bd0d3 SVN_SILENT made messages (.desktop file) 2011-03-31 07:42:47 +02:00
Martin Gräßlin
b52975a57e Merge branch 'libkwineffects'
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
2011-03-16 19:46:59 +01:00
Martin Gräßlin
f213b7da70 Drop KWin::TimeLine from kwineffects
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.
2011-03-14 22:50:05 +01:00
Martin Gräßlin
32c903b05b Rework signals for move/resize windows
First a signal is emitted when the user starts a move/resize operation.
During the move/resize operation each geometry change emits an update signal.
Last but not least a finish signal is emitted.

This eliminates the specific method for geometry updates in drawbound resize
mode.
2011-03-13 12:41:30 +01:00
Martin Gräßlin
39ab2cf29e MouseChanged becomes a signal 2011-03-12 14:37:30 +01:00
Martin Gräßlin
15757e953a TabBox uses signals to notify the effects
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.
2011-03-06 12:15:16 +01:00
Martin Gräßlin
a728823fbe Fix passing matrixes to the shaders
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
2011-03-06 09:13:31 +01:00
Martin Gräßlin
eeb10c69d5 Signal for windowUserMovedResize
In core a new signal is added for maximizedState change of client.
Other function calls remain as direct calls for the moment.
2011-02-28 21:03:13 +01:00
Martin Gräßlin
c3a076b6a5 EffectsHandler emits desktopChanged signal
The first signal used between EffectsHandler and Effects.
The signal is actually emitted by the EffectsHandlerImpl and only
the interested effects connect to this signal.
EffectsHandlerImpl itself is also notified by a signal from Workspace,
allowing to remove one of the many if (effects) checks.
2011-02-25 20:41:10 +01:00
Martin Gräßlin
b3a5639967 EffectsHandler and Effect become QObjects
This is in preparation for allowing to connect effects with signals and slots.
2011-02-25 20:25:21 +01:00
Martin Gräßlin
0827c2903b Use GLPlatform to decide whether shaders are supported
Dropping the static methods from GLShader and use supports()
where it was used before.
2011-02-19 11:08:43 +01:00
Fredrik Höglund
af92a4efd4 kwin: Rename sample to sampler in all shaders
A sample is not the same thing as a sampler.
2011-02-17 19:19:40 +01:00
Fredrik Höglund
5e97ccf7e0 kwin: Normalize the texcoords in the vertex shader 2011-02-10 20:15:23 +01:00
Script Kiddy
15155326e2 SVN_SILENT made messages (.desktop file) 2011-02-03 07:25:47 +01:00
Script Kiddy
b637e9d7ca SVN_SILENT made messages (.desktop file) 2011-02-02 08:26:11 +01:00
Martin Gräßlin
0a7e48f7aa KWin uses kdelibs coding style. 2011-01-31 20:07:03 +01:00
Martin Gräßlin
d9fb2bd789 Cylinder and Sphere ported to new rendering stack 2011-01-30 14:12:06 +01:00
Martin Gräßlin
2e0385101a Less ifdef in paintWindow. CleanerCode++
Using the QMatrix4x4 allows to make everything runtime dependent
and not a compile time switch.
2011-01-30 14:12:04 +01:00
Martin Gräßlin
802dd6b5fe Cache the matrix for cube cap mirroring 2011-01-30 14:12:04 +01:00
Martin Gräßlin
fe614119e5 Reflected cube uses QMatrix4x4 2011-01-30 14:12:03 +01:00
Martin Gräßlin
8c4db8f734 Say goodbye to Display Lists in cube.
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.
2011-01-30 14:12:03 +01:00
Martin Gräßlin
6b88cdf36a Cube uses new high-level push/pop/multiply for caps.
For OpenGL 1.x cube caps are now rendered using the capMatrix
instead of using glTranslate/glRotate et al. One source base to
rule all GL versions.
2011-01-30 14:12:03 +01:00
Martin Gräßlin
db7a072c2b Blending is also useful in legacy mode... 2011-01-30 14:12:03 +01:00
Martin Gräßlin
8d196da880 Render empty areas in multiscreen with VBO. 2011-01-30 14:12:03 +01:00
Martin Gräßlin
7adc29efd7 Remove warnings when building with GLES 2011-01-30 14:12:03 +01:00
Martin Gräßlin
990001c5d7 Drop GLVertexBuffer::useShader.
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.
2011-01-30 14:12:02 +01:00
Martin Gräßlin
7ca5d4dc6b Fade in/out cube caps during start/stop animation. 2011-01-30 14:12:02 +01:00