Timm Bäder
3e2107846d
gl renderer: Fix blend shader
2019-05-06 17:34:48 +02:00
Timm Bäder
c848b9014b
gl renderer: Add simple blend node implementation
2019-04-28 07:58:31 +02:00
Timm Bäder
34fcfb154a
gl renderer: Properly apply opacity in cross-fade shader
2019-04-24 13:29:45 +02:00
Timm Bäder
2b95a5daee
gl renderer: Remove blend shader
...
It's unused.
2018-12-02 16:04:40 +01:00
Elias Aebi
19873e549a
gl: implement clipping for legacy contexts
2018-07-14 14:31:50 +02:00
Elias Aebi
05ca6bc189
gl: fix compilation errors for legacy context shaders
2018-07-14 14:24:21 +02:00
Timm Bäder
eaf899061a
gl renderer: Remove shadow program
...
Drawing shadows is the same task as drawing text in our case and these
two shaders have been the same thing for quite a while.
2018-03-15 18:12:00 +01:00
Timm Bäder
0a7880110e
gl renderer: Fix clipped borders
...
Stop abusing the clip rect for borders.
2018-03-15 18:11:57 +01:00
Timm Bäder
d2b5436462
gl: Make blur nodes with radius ∈ ]0; 1[
...
Otherwise, the radius here ends up being 0 and we don't draw anything at
all.
2018-02-27 14:22:08 +01:00
Timm Bäder
4946810960
gl renderer: Render unblurred outset shadows differently
...
We don't need to draw anything to a texure for those.
2018-01-15 10:56:43 +01:00
Timm Bäder
bbf6e81c1f
gl renderer: Fix shaders for gles
...
Remove uniform initializers, add casts to float, etc.
2018-01-08 19:23:06 +01:00
Timm Bäder
cd2a53851b
gl: Fix copy&paste error in blur shader
2018-01-08 19:23:06 +01:00
Timm Bäder
3176ae7e51
gl renderer: Use alpha uniform in inset shadow shader
2018-01-08 17:44:33 +01:00
Timm Bäder
f729cbb760
gl renderer: Fix text color pre-multiplication
2018-01-04 12:20:27 +01:00
Timm Bäder
4abbf929ad
gl renderer: Remove some unused uniforms from shader
2017-12-29 05:48:42 +01:00
Timm Bäder
2bc10fa365
gl renderer: draw all outset shadows
...
Instead of falling back to cairo for most of them.
2017-12-29 05:48:40 +01:00
Timm Bäder
7a2d30323e
gl renderer: try doing outset box shadows
...
Still fall back in cases we can't handle that way.
2017-12-21 19:12:33 +01:00
Timm Bäder
d211f42091
gl renderer: Remove unused vertex shader
2017-12-21 19:12:32 +01:00
Timm Bäder
a83037c440
gl renderer: Implement cross fade nodes
2017-12-21 19:12:32 +01:00
Timm Bäder
bed03aa319
gl renderer: Fix linear gradient shader color calculation
...
This fixes both the wrong headerbar color and the broken border color in
of the circular button in the widget-factory.
2017-12-21 19:12:32 +01:00
Timm Bäder
eb221ff305
gl renderer: Only take glyph texture alpha into account
...
This way, we can use the very same coloring program to draw text shadows
of fonts with colored glyphs.
2017-12-21 19:12:32 +01:00
Timm Bäder
64400e82b5
gl renderer: Default to 0px clip and border radius
...
Finally fix the division by 0 in the clip code.
2017-12-21 19:12:32 +01:00
Timm Bäder
2d3e87da46
gl renderer: Try to fix border rendering
2017-12-21 19:12:32 +01:00
Timm Bäder
fd0b7caa7c
gl renderer: Fix shadow shader
...
We need to take the alpha of the shadow color into account as well.
2017-12-21 19:12:32 +01:00
Timm Bäder
3b7cfd068b
gl renderer: Implement simple border nodes
2017-12-21 19:12:31 +01:00
Timm Bäder
e95b356465
gl renderer: Implement simple shadow nodes
2017-12-21 19:12:31 +01:00
Timm Bäder
8c9e203458
gl renderer: Fix inset shadow offset calculation
2017-12-21 19:12:31 +01:00
Timm Bäder
47c4bf5be0
gl renderer: Implement unblurred outset shadows
2017-12-21 19:12:31 +01:00
Timm Bäder
5c7838e168
gl renderer: Rework program creation
...
Make sure all uniform names have to match between the shader names and
the _location integers we save in every Program struct.
2017-12-21 19:12:31 +01:00
Timm Bäder
388157b995
gl renderer: Implement unblurred inset shadows
2017-12-21 19:12:31 +01:00
Timm Bäder
6a1a70c677
gl renderer: Implement blur nodes
2017-12-21 19:12:31 +01:00
Timm Bäder
f4304336ea
gl renderer: Don't pass MVP to shaders
...
We already pass both modelview and projection matrix individually.
2017-12-21 19:12:30 +01:00
Timm Bäder
4cf2a482ea
gl: Add glyph cache
...
Based on the one used by the vulkan renderer
2017-12-21 19:12:30 +01:00
Timm Bäder
9b400134d5
gl renderer: Remove unused shaders
2017-12-21 19:12:30 +01:00
Timm Bäder
33aa61ef2c
gl renderer: Save clip in every node
2017-12-21 19:12:30 +01:00
Timm Bäder
24e69bb877
gl renderer: Implement rounded clip nodes
...
mostly a proof of concept
2017-12-21 19:12:30 +01:00
Timm Bäder
4aa3f51016
test-render-nodes: Add color matrix test
2017-12-21 18:25:52 +01:00
Timm Bäder
6bce14bee2
Rework the GL renderer
2017-12-21 18:25:52 +01:00
Timm Bäder
fbada8e758
glrenderer: Handle color nodes
2017-03-31 09:50:39 +02:00
Emmanuele Bassi
1ab1fd4391
Use the projection to flip around the content
...
Since we use an FBO to render the contents of the render node tree, the
coordinate space is going to be flipped in GL. We can undo the flip by
using an appropriate projection matrix, instead of changing the sampling
coordinates in the shaders and updating all our coordinates at render
time.
2016-10-18 11:49:10 +01:00
Emmanuele Bassi
03ab560fae
gsk: Rename uniforms and attributes in shaders
...
Use appropriate names, and annotate the names with the types — 'u' for
uniforms, 'a' for attributes. The common preambles for shaders are split
from the bodies, so we need some way to distinguish the uniforms and the
attributes just from their name.
2016-10-18 11:49:09 +01:00
Emmanuele Bassi
c052443633
gsk: Use consistent naming for blend fragment shader
...
This should make it immediately clear if we're doing something wrong.
2016-10-18 11:49:08 +01:00
Emmanuele Bassi
0fbf638999
gsk: Add 'blit' program
...
For the root node we do not need to use blending, as it does not have
any backdrop to blend into. We can use a simpler 'blit' program that
only takes the content of the source and fills the texture quad with
it.
2016-10-18 11:49:08 +01:00
Emmanuele Bassi
a840c7f00c
gsk: Add more modes to the blend shader
...
Use the compositing CSS spec at:
https://www.w3.org/TR/compositing-1/#blending
For the implementation.
2016-10-18 11:49:07 +01:00
Emmanuele Bassi
28b490f14f
gsk: Rework how GLSL shaders are built
...
The GL renderer should build the GLSL shaders using GskShaderBuilder.
This allows us to separate the common parts into separate files, and
assemble them as necessary, instead of shipping one big shader per type
of GL API (GL3, GL legacy, and GLES).
2016-10-18 11:49:07 +01:00
Emmanuele Bassi
638297a22e
gsk: Allow sampling between parent and child nodes
2016-10-18 11:49:07 +01:00
Emmanuele Bassi
9d3ca22b4c
gsk: Port GskGLRenderer to GLES
...
Use the appropriate API and shaders if the GdkGLContext was created for
OpenGL ES instead of OpenGL.
2016-10-18 11:29:34 +01:00
Emmanuele Bassi
eb9c0920ab
gsk: Rename shaders for OpenGL
2016-10-18 11:29:34 +01:00
Emmanuele Bassi
7afdd3fdb5
Initial implementation of GSK rendering pipeline
...
GSK is conceptually split into two scene graphs:
* a simple rendering tree of operations
* a complex set of logical layers
The latter is built on the former, and adds convenience and high level
API for application developers.
The lower layer, though, is what gets transformed into the rendering
pipeline, as it's simple and thus can be transformed into appropriate
rendering commands with minimal state changes.
The lower layer is also suitable for reuse from more complex higher
layers, like the CSS machinery in GTK, without necessarily port those
layers to the GSK high level API.
This lower layer is based on GskRenderNode instances, which represent
the tree of rendering operations; and a GskRenderer instance, which
takes the render nodes and submits them (after potentially reordering
and transforming them to a more appropriate representation) to the
underlying graphic system.
2016-10-18 11:29:34 +01:00