Commit Graph

66216 Commits

Author SHA1 Message Date
Matthias Clasen
003cf4f6ce css: Move the last parser api to the new header
This lets us use it from the render node parser
in gsk.
2020-09-28 13:09:54 -04:00
Matthias Clasen
30f2e7e153 rendernodeparser: Tweak the shader node serialization
We call it args now in the api. Follow suit for the
serialization.
2020-09-28 12:57:31 -04:00
Matthias Clasen
1ed2b1b8e3 gsk: Beef up GskShaderArgsBuilder docs
Mention that args are zero-initialized.
2020-09-28 12:51:31 -04:00
Matthias Clasen
4906779f72 gtk-demo: Simplify transitions demo
We are not using the frame clock anymore, so don't
pass it around.
2020-09-28 12:45:31 -04:00
Matthias Clasen
cda8bb4384 gtk-demo: Tweak the transition demo text
Fix some types, and say a bit more here.
2020-09-28 12:41:51 -04:00
Matthias Clasen
a801be3c97 gsk: Fix the shader example
I mixed up my variable names.
2020-09-28 12:18:37 -04:00
Alexander Larsson
59c8c75ede GskShaderArgBuilder: Use standard builder-like API
Primarily this is ref/unref vs copy, and ne wfree_to_args() method. But
also some minor renames.
2020-09-28 16:40:14 +02:00
Alexander Larsson
796b205958 gsk_gl_shader_format_args: Pass arguments by value
Primitive values are now passed by values (although vectors still
by pointer). Also since we can now no longer handle missing definitions
that is an error.
2020-09-28 16:40:14 +02:00
Alexander Larsson
947a933819 gtk-demo: Only use one GskGLShader in fishbowl
We don't want to use a new shader per paintable, because then we will
need to recompile each one. Also remove some leftover unused vars from
the cogs glsl.
2020-09-28 16:40:14 +02:00
Alexander Larsson
48cb5ca3db snapshot: Drop n_children from push_gl_shader and use custom pop
We now always assume you pass the right amount of children for the
shader, and each such child is followed by
gtk_snapshot_gl_shader_pop_texture() and then a final
gtk_snapshot_pop().

This means we handle the 0 child case ok, and that we can validate
that the number of pops of various types are correct.
2020-09-28 16:40:14 +02:00
Matthias Clasen
f19001d4c3 Add some more docs
Add an example to the GskGLShader docs.
2020-09-25 20:38:22 -04:00
Matthias Clasen
6ecf612677 Add another shader test
This one tests the convenience api for creating
uniform data.
2020-09-25 20:37:48 -04:00
Matthias Clasen
e0b3746655 gtk-demo: Add a shader paintable to the fishbowl
This gets around 500 instances at 60fps on my system.
2020-09-25 17:22:22 -04:00
Matthias Clasen
1bc81fac2a gtk-demo: Add a shader paintable demo
Add a shader paintable to the OpenGL transitions
demo. This is reusing one of the shadertoy examples,
tweaked slightly to work as a standalone fragment
shader.
2020-09-25 17:22:22 -04:00
Matthias Clasen
bdcc29ebef gtk-demo: Add a shader paintable
This is a GdkPaintable implementation wrapped
around a GskGLShader. It can optionally be hooked
up to a frame clock to update a time uniform.

The code is set up for this to live as public api
in GSK, if we find it useful enough.
2020-09-25 17:21:40 -04:00
Alexander Larsson
810e9c238e snapshot: Drop the varargs versions of push_gl_shader()
We can now just use gsk_gl_shader_format_args() directly, relying
on the transfer-full of the shader args argument.
2020-09-25 16:51:46 +02:00
Alexander Larsson
e4dfa5597a gtk_snapshot_push_gl_shader: Make @args transfer-full
This makes the common case of this just being created a lot easier.
2020-09-25 16:46:39 +02:00
Alexander Larsson
32aa470f68 Rename uniform_data to shader args, or just args
This makes a lot of types and function names shorter.
Also, we add a "..." version of gsk_gl_shader_format_args_va().
2020-09-25 16:38:10 +02:00
Alexander Larsson
a234ab1e55 Finish remaining renames from GLSHADER to GL_SHADER (etc)
This fixes all remaining cases in public headers.
2020-09-25 14:31:44 +02:00
Alexander Larsson
e93a51b1cc GskGLShader: Drop fallback node and add try_compile function to replace it
This removes the fallback node from GskGLShaderNode and adds
a new function gsk_gl_shader_try_compile_for() which tries to compile a
shader against a renderer. Then you can use the return value of this
both as a way to implement the fallback, and as a way to get at
the error report in a saner way.
2020-09-25 14:31:33 +02:00
Matthias Clasen
66cd15d858 Add some shader tests
These are just basic api usage tests, no rendering.
They found the issues fixed in the preceding commits.
2020-09-23 18:05:57 -04:00
Matthias Clasen
a0bc9d65da gsk: Make uniform regex more forgiving
Accept - in initializers, otherwise we don't accept
things like uniform int n = -2;
2020-09-23 18:03:52 -04:00
Matthias Clasen
a580c711e5 gsk: Make uniform regex more forgiving
Accept comments after a uniform declaration - the
very first shader example I tried had these, so we
better support it.
2020-09-23 17:48:35 -04:00
Matthias Clasen
e91d5b82ce gsk: Fix getters and setters for vector types
The types we store for the uniforms are VEC2/3/4,
even though we just store a bunch of floats.

This was found while adding some simple tests.
2020-09-23 17:42:10 -04:00
Matthias Clasen
0516c59ff5 gsk: Add more shader debug spew
Print out the full assembled shader sources when
GSK_DEBUG=shaders is given. This is very verbose,
but may be useful to see what we actually pass
to the compiler.
2020-09-23 16:17:56 -04:00
Matthias Clasen
a3ea3f94dc gsk: Add some shader debug spew
When we're done extracting uniform info from the glsl,
print out what we've found for GSK_DEBUG=shaders. If
something goes wrong, this will be useful.
2020-09-23 15:40:57 -04:00
Matthias Clasen
5e9fe2f6e8 docs: Add new snapshot apis 2020-09-23 14:59:25 -04:00
Matthias Clasen
6613c523c2 Rename gl shader snapshot apis
Rename gtk_snapshot_push_glshader and friends to
gtk_snapshot_push_gl_shader, following the similar
renaming in GSK.

Update all callers.
2020-09-23 14:53:42 -04:00
Matthias Clasen
efa0fa0bf4 gsk: Small doc fixups
Tweak the gl shader docs here and there.
2020-09-23 14:46:35 -04:00
Matthias Clasen
1b6f7917ed Add GskGLShader apis to the docs 2020-09-23 14:41:22 -04:00
Alexander Larsson
8cc18d2c82 shadertoy demo: Fix GLSL on GLES
I was getting "assignment to varying fragColor" errors
2020-09-23 17:38:03 +02:00
Alexander Larsson
d97267b897 gtk-demo: Add GskGLShaderNode demo
Add adds a demo showing off GskGLShaderNode in various ways.

It has a transistion widget, using some examples from
gl-transitions.com, with child widgets being both images, a GL area
and real widgets (that let you edit the transition shaders
themselves.

It also has a fancy fire effect on hove on the buttons.
2020-09-23 17:28:23 +02:00
Alexander Larsson
21e0ad0561 Support GLShaderNode in backends
For vulkan/broadway this just means to ignore it, but for the gl
backend we support (with up to 4 texture inputs, which is similar to
what shadertoy does, so should be widely supported).
2020-09-23 17:01:17 +02:00
Alexander Larsson
94cccc5e71 GtkSnapshot: Add gtk_snapshot_push_glshader() 2020-09-23 17:01:13 +02:00
Alexander Larsson
111dfdf3f5 Add GskGLShaderNode
This is a rendernode that is supposed to run a GLSL fragment
shader with a set of inputs and produce outputs.
The inputs are:
 * A GskGLShader object with the source and uniforms definitions
   computed from the source.
 * A the data for the uniforms, formated according to the GskGLShader
 * a list of render nodes that are rendered to textures

Additionally there is a fallback node which is used in case
OpenGL is not supported or there is some kind of failure
with the shader code.
2020-09-23 17:01:08 +02:00
Alexander Larsson
0693deb02f gl: Add some namespacing to the preamble symbols
This adds a gsk prefix to the stuff in the preamble, as we want to
avoid it conflicting with things in the main shader. Especially once
we start allow some customization of shaders.
2020-09-22 12:50:10 +02:00
Alexander Larsson
ffd39c257a gl backend: Add line numbers to source in glsl compilation errors
Almost always the source is created by combining various sources, which
means the line numbers in the error messages are hard to use. Adding
the line numbers to the source in the error message helps with this.
2020-09-22 12:50:10 +02:00
Alexander Larsson
ec0ad5738c gl: Properly report error if shader linking fails
In gsk_gl_shader_builder_create_program(), if linking fails we
need to return -1 to indicate error, rather than the old deleted
program id.
2020-09-22 09:40:16 +02:00
Alexander Larsson
c958fd8e86 glrenderer: Move ProgramState into Program
There is no real reason to have this on the side indexed via the
index, as it is stored next to each other anyway. Plus, storing them
together lets use use `Program` structures not in the array.
2020-09-22 09:40:16 +02:00
Matthias Clasen
5e4180b5f0 Merge branch 'improve-columnview-styling' into 'master'
Adwaita: Improve columnview styling

See merge request GNOME/gtk!2608
2020-09-22 03:01:38 +00:00
nana-4
2d6a9990b7 Adwaita: Don't restrict columnview editablelabel style to .data-table
This should be available without .data-table.
2020-09-22 10:40:15 +09:00
nana-4
42be26f1b1 Adwaita: Improve columnview styling
- Move padding from parent row to child cell.
- Align horizontal sizing of cell with header button.
- Properly support GtkColumnView:show-column-separators.
- Change cell height with and without .data-table.
2020-09-22 10:37:04 +09:00
nana-4
f98055b075 Adwaita: Fix separator color for lists 2020-09-22 10:35:15 +09:00
Matthias Clasen
3252d4cab2 Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master

See merge request GNOME/gtk!2607
2020-09-21 18:11:41 +00:00
Matthias Clasen
2c527ec87e inspector: Make switches go back to normal size 2020-09-21 11:53:48 -04:00
Matthias Clasen
d5e315c470 gtk-demo: Improve the pickers demo
"Two of every kind..." Add some customized pickers
here. This found a number of issues that have been
fixed in the preceding commits.
2020-09-21 11:53:48 -04:00
Matthias Clasen
256f845d89 colorbutton: Fix handling of transient parents
When we create the dialog before the button has
been rooted, we need to update its transient
parent when that happens.
2020-09-21 11:53:48 -04:00
Timm Bäder
b3c21bc89a Merge branch 'fix-hover-tracking' into 'master'
main: Update pointer focus state for button releases

Closes #3172

See merge request GNOME/gtk!2601
2020-09-21 12:20:00 +00:00
Marek Černocký
6bc46a9a69 Updated Czech translation 2020-09-21 08:30:59 +02:00
Matthias Clasen
1d34f955a2 filechooser: Fix gtk_file_chooser_set_choice
This broke when it was ported to GtkDropDown.
2020-09-20 12:04:49 -04:00