Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
gskglshader.h
Go to the documentation of this file.
1/* GSK - The GTK Scene Kit
2 *
3 * Copyright 2020 Red Hat Inc
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#pragma once
20
21#if !defined (__GSK_H_INSIDE__) && !defined (GTK_COMPILATION)
22#error "Only <gsk/gsk.h> can be included directly."
23#endif
24
25#include <stdarg.h>
26
27#include <gsk/gsktypes.h>
28#include <gsk/gskenums.h>
29
31
33
34#define GSK_TYPE_SHADER_ARGS_BUILDER (gsk_shader_args_builder_get_type ())
35
36/**
37 * GskShaderArgsBuilder:
38 *
39 * An object to build the uniforms data for a `GskGLShader`.
40 */
41typedef struct _GskGLShader GskGLShader GDK_DEPRECATED_TYPE_IN_4_16_FOR(GtkGLArea);
42typedef struct _GskShaderArgsBuilder GskShaderArgsBuilder GDK_DEPRECATED_TYPE_IN_4_16_FOR(GtkGLArea);
43
44#define GSK_TYPE_GL_SHADER (gsk_gl_shader_get_type ())
45
47G_DECLARE_FINAL_TYPE (GskGLShader, gsk_gl_shader, GSK, GL_SHADER, GObject)
48
50GskGLShader * gsk_gl_shader_new_from_bytes (GBytes *sourcecode);
52GskGLShader * gsk_gl_shader_new_from_resource (const char *resource_path);
54gboolean gsk_gl_shader_compile (GskGLShader *shader,
55 GskRenderer *renderer,
56 GError **error);
58GBytes * gsk_gl_shader_get_source (GskGLShader *shader);
60const char * gsk_gl_shader_get_resource (GskGLShader *shader);
62int gsk_gl_shader_get_n_textures (GskGLShader *shader);
64int gsk_gl_shader_get_n_uniforms (GskGLShader *shader);
66const char * gsk_gl_shader_get_uniform_name (GskGLShader *shader,
67 int idx);
69int gsk_gl_shader_find_uniform_by_name (GskGLShader *shader,
70 const char *name);
73 int idx);
75int gsk_gl_shader_get_uniform_offset (GskGLShader *shader,
76 int idx);
78gsize gsk_gl_shader_get_args_size (GskGLShader *shader);
79
80
81/* Helpers for managing shader args */
82
84GBytes * gsk_gl_shader_format_args_va (GskGLShader *shader,
85 va_list uniforms);
87GBytes * gsk_gl_shader_format_args (GskGLShader *shader,
89
91float gsk_gl_shader_get_arg_float (GskGLShader *shader,
92 GBytes *args,
93 int idx);
95gint32 gsk_gl_shader_get_arg_int (GskGLShader *shader,
96 GBytes *args,
97 int idx);
100 GBytes *args,
101 int idx);
104 GBytes *args,
105 int idx);
107void gsk_gl_shader_get_arg_vec2 (GskGLShader *shader,
108 GBytes *args,
109 int idx,
110 graphene_vec2_t *out_value);
112void gsk_gl_shader_get_arg_vec3 (GskGLShader *shader,
113 GBytes *args,
114 int idx,
115 graphene_vec3_t *out_value);
117void gsk_gl_shader_get_arg_vec4 (GskGLShader *shader,
118 GBytes *args,
119 int idx,
120 graphene_vec4_t *out_value);
121
124
126GskShaderArgsBuilder *gsk_shader_args_builder_new (GskGLShader *shader,
127 GBytes *initial_values);
129GBytes * gsk_shader_args_builder_to_args (GskShaderArgsBuilder *builder);
131GBytes * gsk_shader_args_builder_free_to_args (GskShaderArgsBuilder *builder);
133GskShaderArgsBuilder *gsk_shader_args_builder_ref (GskShaderArgsBuilder *builder);
135void gsk_shader_args_builder_unref (GskShaderArgsBuilder *builder);
136
138void gsk_shader_args_builder_set_float (GskShaderArgsBuilder *builder,
139 int idx,
140 float value);
142void gsk_shader_args_builder_set_int (GskShaderArgsBuilder *builder,
143 int idx,
144 gint32 value);
146void gsk_shader_args_builder_set_uint (GskShaderArgsBuilder *builder,
147 int idx,
148 guint32 value);
150void gsk_shader_args_builder_set_bool (GskShaderArgsBuilder *builder,
151 int idx,
154void gsk_shader_args_builder_set_vec2 (GskShaderArgsBuilder *builder,
155 int idx,
156 const graphene_vec2_t *value);
158void gsk_shader_args_builder_set_vec3 (GskShaderArgsBuilder *builder,
159 int idx,
160 const graphene_vec3_t *value);
162void gsk_shader_args_builder_set_vec4 (GskShaderArgsBuilder *builder,
163 int idx,
164 const graphene_vec4_t *value);
165
166
168
typedefG_BEGIN_DECLS struct _GBytes GBytes
Definition garray.h:38
#define GDK_DEPRECATED_TYPE_IN_4_16_FOR(f)
#define GDK_DEPRECATED_IN_4_16_FOR(f)
unsigned int guint32
Definition glibconfig.h:57
unsigned long gsize
Definition glibconfig.h:83
signed int gint32
Definition glibconfig.h:56
#define G_END_DECLS
Definition gmacros.h:910
#define G_GNUC_NULL_TERMINATED
Definition gmacros.h:326
#define G_BEGIN_DECLS
Definition gmacros.h:909
#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS
Definition gmacros.h:771
#define G_GNUC_CONST
Definition gmacros.h:637
#define G_GNUC_END_IGNORE_DEPRECATIONS
Definition gmacros.h:772
GskGLUniformType
Definition gskenums.h:446
gsize gsk_gl_shader_get_args_size(GskGLShader *shader)
float gsk_gl_shader_get_arg_float(GskGLShader *shader, GBytes *args, int idx)
GType gsk_shader_args_builder_get_type(void) G_GNUC_CONST
int gsk_gl_shader_get_n_uniforms(GskGLShader *shader)
GBytes * gsk_shader_args_builder_to_args(GskShaderArgsBuilder *builder)
const char * gsk_gl_shader_get_resource(GskGLShader *shader)
int gsk_gl_shader_get_uniform_offset(GskGLShader *shader, int idx)
void gsk_shader_args_builder_set_int(GskShaderArgsBuilder *builder, int idx, gint32 value)
void gsk_gl_shader_get_arg_vec4(GskGLShader *shader, GBytes *args, int idx, graphene_vec4_t *out_value)
GskGLShader * gsk_gl_shader_new_from_resource(const char *resource_path)
GskShaderArgsBuilder * gsk_shader_args_builder_new(GskGLShader *shader, GBytes *initial_values)
GBytes * gsk_shader_args_builder_free_to_args(GskShaderArgsBuilder *builder)
int gsk_gl_shader_get_n_textures(GskGLShader *shader)
void gsk_shader_args_builder_set_uint(GskShaderArgsBuilder *builder, int idx, guint32 value)
void gsk_gl_shader_get_arg_vec3(GskGLShader *shader, GBytes *args, int idx, graphene_vec3_t *out_value)
const char * gsk_gl_shader_get_uniform_name(GskGLShader *shader, int idx)
GskShaderArgsBuilder * gsk_shader_args_builder_ref(GskShaderArgsBuilder *builder)
void gsk_shader_args_builder_set_bool(GskShaderArgsBuilder *builder, int idx, gboolean value)
gboolean gsk_gl_shader_compile(GskGLShader *shader, GskRenderer *renderer, GError **error)
void gsk_shader_args_builder_unref(GskShaderArgsBuilder *builder)
gboolean gsk_gl_shader_get_arg_bool(GskGLShader *shader, GBytes *args, int idx)
GskGLShader * gsk_gl_shader_new_from_bytes(GBytes *sourcecode)
void gsk_gl_shader_get_arg_vec2(GskGLShader *shader, GBytes *args, int idx, graphene_vec2_t *out_value)
gint32 gsk_gl_shader_get_arg_int(GskGLShader *shader, GBytes *args, int idx)
int gsk_gl_shader_find_uniform_by_name(GskGLShader *shader, const char *name)
guint32 gsk_gl_shader_get_arg_uint(GskGLShader *shader, GBytes *args, int idx)
GBytes * gsk_gl_shader_format_args(GskGLShader *shader,...) G_GNUC_NULL_TERMINATED
void gsk_shader_args_builder_set_vec4(GskShaderArgsBuilder *builder, int idx, const graphene_vec4_t *value)
GBytes * gsk_gl_shader_format_args_va(GskGLShader *shader, va_list uniforms)
GskGLUniformType gsk_gl_shader_get_uniform_type(GskGLShader *shader, int idx)
void gsk_shader_args_builder_set_vec3(GskShaderArgsBuilder *builder, int idx, const graphene_vec3_t *value)
void gsk_shader_args_builder_set_vec2(GskShaderArgsBuilder *builder, int idx, const graphene_vec2_t *value)
void gsk_shader_args_builder_set_float(GskShaderArgsBuilder *builder, int idx, float value)
GBytes * gsk_gl_shader_get_source(GskGLShader *shader)
struct _GskRenderer GskRenderer
Definition gsktypes.h:32
#define G_DECLARE_FINAL_TYPE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, ParentName)
Definition gtype.h:1602
gsize GType
Definition gtype.h:427
gint gboolean
Definition gtypes.h:56
const char * name
Definition lsqlite3.c:2154
int value
Definition lsqlite3.c:2155
static void error(LoadState *S, const char *why)