Commit graph

91 commits

Author SHA1 Message Date
Martin Gräßlin
efb82daf30 Adding high-level method for glLoadMatrix 2011-01-30 14:12:03 +01:00
Martin Gräßlin
e49345872c Add high-level functions for <push|pop|mult>Matrix.
All methods are no-ops for GLES which allows to use them from
effects without checks for GLES.
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
4e36027924 Drop unused bindAttribute Location function. 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
a4e4752109 Combine built-in vertex with custom fragment shader
ShaderManager supports a new concept to load just a fragment shader from file
and use a built-in shader for the vertex shader. This allows an effect to use
a custom fragment shader.
2011-01-30 14:12:02 +01:00
Martin Gräßlin
1ba818044f Read a matrix uniform back from shader.
Might require additions to kwinglutils_func in desktop profile
2011-01-30 14:12:01 +01:00
Martin Gräßlin
cab9154723 Simple vertex shaders use projection matrix and offset 2011-01-30 14:12:01 +01:00
Martin Gräßlin
69044f10c5 GLShader appends the ES specific commands to the shaders 2011-01-30 14:12:01 +01:00
Martin Gräßlin
45f42cdea9 Adding a shared VBO for streaming data. 2011-01-30 14:12:00 +01:00
Martin Gräßlin
a352a0e6a8 Remove implemented TODO marker 2011-01-30 14:12:00 +01:00
Martin Gräßlin
910ba17444 VBO uses ShaderManager to get current bound shader 2011-01-30 14:12:00 +01:00
Martin Gräßlin
753df55973 Set Color as a uniform 2011-01-30 14:12:00 +01:00
Martin Gräßlin
3c6e7309f2 New ShaderManager
The ShaderManager provides the built-in shaders for scene and effects.
Scene and effects can simply push one of those built-in shaders or a
custom one on a stack ensuring that the previously bound shader will be
rebound when the shader is poped again.

The class will be extended to not only have built-in shaders but also to
load custom shaders and being the only way to bind a shader at all.
2011-01-30 14:11:59 +01:00
Martin Gräßlin
a182744648 Fix color rendering 2011-01-30 14:11:59 +01:00
Martin Gräßlin
9bbb852f0c Resolve EGL and GLES function pointers 2011-01-30 14:11:59 +01:00
Martin Gräßlin
70fefbbbae Adding an initEGL method and check for required extension 2011-01-30 14:11:59 +01:00
Martin Gräßlin
d12c4e58fd Support new translate for textures 2011-01-30 14:11:58 +01:00
Martin Gräßlin
ae95ab0c43 Adding color to VBO.
A color can be specified to render the geometry of the VBO.
For legacy painting glColor is used, for shader a uniform is set.
In order to allow rendering without texcoords, it is possible to pass
a null pointer as texcoords.
Shader added to scene which just renders a colored geometry without texturing.
2011-01-30 14:11:58 +01:00
Martin Gräßlin
a2e214d326 Enable PaintClipper on core VBO again.
Need to disable clearing screen on EGL for that.
With Mesa swapping buffer is sufficient, though a better solution will be required for other drivers
2011-01-30 14:11:57 +01:00
Martin Gräßlin
f240fc2196 Support QMatrix4x4 as Uniform value 2011-01-30 14:11:57 +01:00
Martin Gräßlin
5804417acc And here comes the working OpenGL ES backend 2011-01-30 14:11:57 +01:00
Martin Gräßlin
f5dbeb8fab More ifdefing for ES 2011-01-30 14:11:57 +01:00
Martin Gräßlin
dfde66b4a9 Fix compile error in desktop modus 2011-01-30 14:11:56 +01:00
Martin Gräßlin
2cf5f79880 Remove some more unsupported functions 2011-01-30 14:11:56 +01:00
Martin Gräßlin
fd8dfa2084 OpenGL ES always supports VBO 2011-01-30 14:11:56 +01:00
Martin Gräßlin
e5640dc655 ES does not support Vertex array - only use core painting 2011-01-30 14:11:56 +01:00
Martin Gräßlin
b13f3f5f11 In ES it's GL_FRAMEBUFFER instead of GL_FRAMEBUFFER_EXT
I hope this does not break in desktop mode.
2011-01-30 14:11:55 +01:00
Martin Gräßlin
90eb1ed1a0 No GL_TEXTURE_RECTANGLE_ARB in ES 2011-01-30 14:11:55 +01:00
Martin Gräßlin
d7321dae71 ES does not support GL_RGBA8 and GL_BGRA for textures 2011-01-30 14:11:55 +01:00
Martin Gräßlin
d4e75aa1da RenderGLGeometry and texture coord normalization are noops in ES 2011-01-30 14:11:55 +01:00
Martin Gräßlin
aefb076a7b OpenGL ES does not support Quads 2011-01-30 14:11:55 +01:00
Martin Gräßlin
56ce39def8 Core profile compatible basic scene rendering.
Adds a shader to render an untransformed scene. renderGLGeometry is not used any more and replaced by generated triangles stored in a GLVertexBuffer.
The GLVertexBuffer has a new attribute to decide whether a core profile compatible rendering has to be performed.
Currently windows and EffectFrames can make use of the new shader.
The shader contains a debug mode which colours all rendered fragments in green. It is currently enabled in scene_opengl.
Rendering transformed geometries (without shader) is currently broken.
2011-01-30 14:11:55 +01:00
Thomas Lübking
48447a3d26 avoid recreating effectframes/textures on setPosition; correct position after setAlignment
svn path=/trunk/KDE/kdebase/workspace/; revision=1203489
2010-12-04 10:01:57 +00:00
Martin Gräßlin
382d5b15d3 Ignore Paint Clipper when rendering to FBO.
See Review Request http://svn.reviewboard.kde.org/r/4329/

svn path=/trunk/KDE/kdebase/workspace/; revision=1191903
2010-11-01 12:09:53 +00:00
Christoph Thielecke
355bb28f70 include to better place moved
svn path=/trunk/KDE/kdebase/workspace/; revision=1184245
2010-10-09 15:14:21 +00:00
Christoph Thielecke
2175722fe9 added missing define if nessary (compile fix for lenny)
svn path=/trunk/KDE/kdebase/workspace/; revision=1184229
2010-10-09 13:53:50 +00:00
Martin Gräßlin
22bbd02a03 Forward port rev 1167908
Revert rev 1137490: it caused compositing not working with legacy NVIDIA drivers and might be responsible for freezes when changing config.
It can be reverted as there is already a better fix for buggy drivers present in 4.5.1.
Did I mention that I love drivers?
CCBUG: 243991
CCBUG: 241402

svn path=/trunk/KDE/kdebase/workspace/; revision=1167909
2010-08-25 17:00:36 +00:00
Martin Gräßlin
82febe84a6 Let's see if Krazy notices this change.
SVN_SILENT

svn path=/trunk/KDE/kdebase/workspace/; revision=1160049
2010-08-06 21:09:48 +00:00
Martin Gräßlin
a9e31c66bf Only generate VBO, if the glGenBuffers has been resolved
BUG: 246194

svn path=/trunk/KDE/kdebase/workspace/; revision=1157460
2010-07-31 05:48:27 +00:00
Martin Gräßlin
b9bdf83159 Drop some more unused code in kwinglutils.
svn path=/trunk/KDE/kdebase/workspace/; revision=1155061
2010-07-26 20:32:25 +00:00
Martin Gräßlin
6dfbd48488 This debug statement was never intended to be committed
svn path=/trunk/KDE/kdebase/workspace/; revision=1153933
2010-07-24 08:04:58 +00:00
Martin Gräßlin
6641ac5648 GLRenderBuffer supports legacy painting if VBOs are not available.
This gives us one API for both legacy and modern painting.
All glRenderGeometry* calls are deprecated as they use quads and
legacy painting.

svn path=/trunk/KDE/kdebase/workspace/; revision=1153911
2010-07-24 07:32:42 +00:00
Martin Gräßlin
b296b7a00c Generate correct tex coordinates for rendering a texture.
This way we can get rid of the texture matrix transformations when rendering a standard texture - no matter if it's inverted or not.

svn path=/trunk/KDE/kdebase/workspace/; revision=1152649
2010-07-21 16:36:26 +00:00
Martin Gräßlin
73d8041d5a We need normalized tex coords for vbo, too.
svn path=/trunk/KDE/kdebase/workspace/; revision=1152364
2010-07-20 20:51:44 +00:00
Martin Gräßlin
ee00a9f8f1 Restrict painting of texture to the current rendering region when using a VBO.
svn path=/trunk/KDE/kdebase/workspace/; revision=1152296
2010-07-20 16:45:13 +00:00
Martin Gräßlin
d732e2f56c On the road to more efficient painting: introducing new class GLVertexBuffer which encapsulates a vertex buffer object.
Used by GLTexture if GPU supports VBO.

svn path=/trunk/KDE/kdebase/workspace/; revision=1151906
2010-07-19 20:53:32 +00:00
Martin Gräßlin
63008bd807 Fix compile error with some OpenGL dev headers
svn path=/trunk/KDE/kdebase/workspace/; revision=1140417
2010-06-20 16:58:04 +00:00
Martin Gräßlin
cf3bcc6294 Try to get a FBO in the init method of GLRenderTarget. If the FBO is incomplete there is no need to claim that the driver supports FBO.
This is a workaround to the problem that some drivers do not return a complete FBO, but support the extension. Which caused the blur effect to get loaded without working and in consequence Plasma to use the blur-optimized and very translucent backgrounds.
CCBUG: 240956

svn path=/trunk/KDE/kdebase/workspace/; revision=1137490
2010-06-13 07:40:21 +00:00
Fredrik Höglund
6ab355a048 Add more detailed debug output in GLRenderTarget::initFBO().
CCBUG: 240956

svn path=/trunk/KDE/kdebase/workspace/; revision=1136053
2010-06-08 20:29:17 +00:00