2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
4
<!ENTITY version "1.0.8">
7
<refentry id="ClutterShader">
9
<refentrytitle role="top_of_page" id="ClutterShader.top_of_page">ClutterShader</refentrytitle>
10
<manvolnum>3</manvolnum>
11
<refmiscinfo>CLUTTER Library</refmiscinfo>
15
<refname>ClutterShader</refname>
16
<refpurpose>Programmable pipeline abstraction</refpurpose>
19
<refsynopsisdiv id="ClutterShader.synopsis" role="synopsis">
20
<title role="synopsis.title">Synopsis</title>
23
enum <link linkend="ClutterShaderError">ClutterShaderError</link>;
24
<link linkend="ClutterShader-struct">ClutterShader</link>;
25
<link linkend="ClutterShaderClass">ClutterShaderClass</link>;
26
<link linkend="ClutterShader">ClutterShader</link> * <link linkend="clutter-shader-new">clutter_shader_new</link> (void);
27
<link linkend="void">void</link> <link linkend="clutter-shader-set-vertex-source">clutter_shader_set_vertex_source</link> (<link linkend="ClutterShader">ClutterShader</link> *shader,
28
const <link linkend="gchar">gchar</link> *data,
29
<link linkend="gssize">gssize</link> length);
30
const <link linkend="gchar">gchar</link> * <link linkend="clutter-shader-get-vertex-source">clutter_shader_get_vertex_source</link> (<link linkend="ClutterShader">ClutterShader</link> *shader);
31
<link linkend="void">void</link> <link linkend="clutter-shader-set-fragment-source">clutter_shader_set_fragment_source</link> (<link linkend="ClutterShader">ClutterShader</link> *shader,
32
const <link linkend="gchar">gchar</link> *data,
33
<link linkend="gssize">gssize</link> length);
34
const <link linkend="gchar">gchar</link> * <link linkend="clutter-shader-get-fragment-source">clutter_shader_get_fragment_source</link> (<link linkend="ClutterShader">ClutterShader</link> *shader);
35
<link linkend="gboolean">gboolean</link> <link linkend="clutter-shader-compile">clutter_shader_compile</link> (<link linkend="ClutterShader">ClutterShader</link> *shader,
36
<link linkend="GError">GError</link> **error);
37
<link linkend="void">void</link> <link linkend="clutter-shader-release">clutter_shader_release</link> (<link linkend="ClutterShader">ClutterShader</link> *shader);
38
<link linkend="gboolean">gboolean</link> <link linkend="clutter-shader-is-compiled">clutter_shader_is_compiled</link> (<link linkend="ClutterShader">ClutterShader</link> *shader);
39
<link linkend="void">void</link> <link linkend="clutter-shader-set-is-enabled">clutter_shader_set_is_enabled</link> (<link linkend="ClutterShader">ClutterShader</link> *shader,
40
<link linkend="gboolean">gboolean</link> enabled);
41
<link linkend="gboolean">gboolean</link> <link linkend="clutter-shader-get-is-enabled">clutter_shader_get_is_enabled</link> (<link linkend="ClutterShader">ClutterShader</link> *shader);
43
<link linkend="void">void</link> <link linkend="clutter-shader-set-uniform">clutter_shader_set_uniform</link> (<link linkend="ClutterShader">ClutterShader</link> *shader,
44
const <link linkend="gchar">gchar</link> *name,
45
const <link linkend="GValue">GValue</link> *value);
46
<link linkend="CoglHandle">CoglHandle</link> <link linkend="clutter-shader-get-cogl-program">clutter_shader_get_cogl_program</link> (<link linkend="ClutterShader">ClutterShader</link> *shader);
47
<link linkend="CoglHandle">CoglHandle</link> <link linkend="clutter-shader-get-cogl-fragment-shader">clutter_shader_get_cogl_fragment_shader</link>
48
(<link linkend="ClutterShader">ClutterShader</link> *shader);
49
<link linkend="CoglHandle">CoglHandle</link> <link linkend="clutter-shader-get-cogl-vertex-shader">clutter_shader_get_cogl_vertex_shader</link>
50
(<link linkend="ClutterShader">ClutterShader</link> *shader);
52
#define <link linkend="CLUTTER-VALUE-HOLDS-SHADER-FLOAT--CAPS">CLUTTER_VALUE_HOLDS_SHADER_FLOAT</link> (x)
53
<link linkend="void">void</link> <link linkend="clutter-value-set-shader-float">clutter_value_set_shader_float</link> (<link linkend="GValue">GValue</link> *value,
54
<link linkend="gint">gint</link> size,
55
const <link linkend="gfloat">gfloat</link> *floats);
56
const <link linkend="gfloat">gfloat</link> * <link linkend="clutter-value-get-shader-float">clutter_value_get_shader_float</link> (const <link linkend="GValue">GValue</link> *value,
57
<link linkend="gsize">gsize</link> *length);
58
#define <link linkend="CLUTTER-VALUE-HOLDS-SHADER-INT--CAPS">CLUTTER_VALUE_HOLDS_SHADER_INT</link> (x)
59
<link linkend="void">void</link> <link linkend="clutter-value-set-shader-int">clutter_value_set_shader_int</link> (<link linkend="GValue">GValue</link> *value,
60
<link linkend="gint">gint</link> size,
61
const <link linkend="gint">gint</link> *ints);
62
const <link linkend="gint">gint</link> * <link linkend="clutter-value-get-shader-int">clutter_value_get_shader_int</link> (const <link linkend="GValue">GValue</link> *value,
63
<link linkend="gsize">gsize</link> *length);
64
#define <link linkend="CLUTTER-VALUE-HOLDS-SHADER-MATRIX--CAPS">CLUTTER_VALUE_HOLDS_SHADER_MATRIX</link> (x)
65
<link linkend="void">void</link> <link linkend="clutter-value-set-shader-matrix">clutter_value_set_shader_matrix</link> (<link linkend="GValue">GValue</link> *value,
66
<link linkend="gint">gint</link> size,
67
const <link linkend="gfloat">gfloat</link> *matrix);
68
const <link linkend="gfloat">gfloat</link> * <link linkend="clutter-value-get-shader-matrix">clutter_value_get_shader_matrix</link> (const <link linkend="GValue">GValue</link> *value,
69
<link linkend="gsize">gsize</link> *length);
73
<refsect1 id="ClutterShader.object-hierarchy" role="object_hierarchy">
74
<title role="object_hierarchy.title">Object Hierarchy</title>
76
<link linkend="GObject">GObject</link>
85
<refsect1 id="ClutterShader.properties" role="properties">
86
<title role="properties.title">Properties</title>
88
"<link linkend="ClutterShader--compiled">compiled</link>" <link linkend="gboolean">gboolean</link> : Read
89
"<link linkend="ClutterShader--enabled">enabled</link>" <link linkend="gboolean">gboolean</link> : Read / Write
90
"<link linkend="ClutterShader--fragment-source">fragment-source</link>" <link linkend="gchar">gchar</link>* : Read / Write
91
"<link linkend="ClutterShader--vertex-source">vertex-source</link>" <link linkend="gchar">gchar</link>* : Read / Write
97
<refsect1 id="ClutterShader.description" role="desc">
98
<title role="desc.title">Description</title>
100
<link linkend="ClutterShader"><type>ClutterShader</type></link> is an object providing an abstraction over the
101
OpenGL programmable pipeline. By using <link linkend="ClutterShader"><type>ClutterShader</type></link><!-- -->s is
102
possible to override the drawing pipeline by using small programs
103
also known as "shaders".
106
<link linkend="ClutterShader"><type>ClutterShader</type></link> is available since Clutter 0.6</para>
111
<refsect1 id="ClutterShader.details" role="details">
112
<title role="details.title">Details</title>
113
<refsect2 id="ClutterShaderError" role="enum" condition="since:0.6">
114
<title>enum ClutterShaderError</title>
115
<indexterm zone="ClutterShaderError" role="0.6"><primary sortas="ShaderError">ClutterShaderError</primary></indexterm><programlisting>typedef enum {
116
CLUTTER_SHADER_ERROR_NO_ASM,
117
CLUTTER_SHADER_ERROR_NO_GLSL,
118
CLUTTER_SHADER_ERROR_COMPILE
119
} ClutterShaderError;
122
<link linkend="ClutterShader"><type>ClutterShader</type></link> error enumeration</para>
124
</para><variablelist role="enum">
125
<varlistentry id="CLUTTER-SHADER-ERROR-NO-ASM--CAPS" role="constant">
126
<term><literal>CLUTTER_SHADER_ERROR_NO_ASM</literal></term>
127
<listitem><simpara> No ASM shaders support
128
</simpara></listitem>
130
<varlistentry id="CLUTTER-SHADER-ERROR-NO-GLSL--CAPS" role="constant">
131
<term><literal>CLUTTER_SHADER_ERROR_NO_GLSL</literal></term>
132
<listitem><simpara> No GLSL shaders support
133
</simpara></listitem>
135
<varlistentry id="CLUTTER-SHADER-ERROR-COMPILE--CAPS" role="constant">
136
<term><literal>CLUTTER_SHADER_ERROR_COMPILE</literal></term>
137
<listitem><simpara> Compilation error
138
</simpara></listitem>
140
</variablelist><para role="since">Since 0.6</para></refsect2>
141
<refsect2 id="ClutterShader-struct" role="struct">
142
<title>ClutterShader</title>
143
<indexterm zone="ClutterShader-struct" role="0.6"><primary sortas="Shader">ClutterShader</primary></indexterm><programlisting>typedef struct _ClutterShader ClutterShader;</programlisting>
145
The <link linkend="ClutterShader"><type>ClutterShader</type></link> structure contains only private data
146
and should be accessed using the provided API</para>
148
</para><para role="since">Since 0.6</para></refsect2>
149
<refsect2 id="ClutterShaderClass" role="struct" condition="since:0.6">
150
<title>ClutterShaderClass</title>
151
<indexterm zone="ClutterShaderClass" role="0.6"><primary sortas="ShaderClass">ClutterShaderClass</primary></indexterm><programlisting>typedef struct {
152
} ClutterShaderClass;
155
The <link linkend="ClutterShaderClass"><type>ClutterShaderClass</type></link> structure contains only private data</para>
157
</para><para role="since">Since 0.6</para></refsect2>
158
<refsect2 id="clutter-shader-new" role="function" condition="since:0.6">
159
<title>clutter_shader_new ()</title>
160
<indexterm zone="clutter-shader-new" role="0.6"><primary sortas="shader_new">clutter_shader_new</primary></indexterm><programlisting><link linkend="ClutterShader">ClutterShader</link> * clutter_shader_new (void);</programlisting>
162
Create a new <link linkend="ClutterShader"><type>ClutterShader</type></link> instance.</para>
164
</para><variablelist role="params">
165
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a new <link linkend="ClutterShader"><type>ClutterShader</type></link>.
167
</simpara></listitem></varlistentry>
168
</variablelist><para role="since">Since 0.6</para></refsect2>
169
<refsect2 id="clutter-shader-set-vertex-source" role="function" condition="since:0.6">
170
<title>clutter_shader_set_vertex_source ()</title>
171
<indexterm zone="clutter-shader-set-vertex-source" role="0.6"><primary sortas="shader_set_vertex_source">clutter_shader_set_vertex_source</primary></indexterm><programlisting><link linkend="void">void</link> clutter_shader_set_vertex_source (<link linkend="ClutterShader">ClutterShader</link> *shader,
172
const <link linkend="gchar">gchar</link> *data,
173
<link linkend="gssize">gssize</link> length);</programlisting>
175
Sets the GLSL source code to be used by a <link linkend="ClutterShader"><type>ClutterShader</type></link> for the vertex
178
</para><variablelist role="params">
179
<varlistentry><term><parameter>shader</parameter> :</term>
180
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
181
</simpara></listitem></varlistentry>
182
<varlistentry><term><parameter>data</parameter> :</term>
183
<listitem><simpara> GLSL source code.
184
</simpara></listitem></varlistentry>
185
<varlistentry><term><parameter>length</parameter> :</term>
186
<listitem><simpara> length of source buffer (currently ignored)
187
</simpara></listitem></varlistentry>
188
</variablelist><para role="since">Since 0.6</para></refsect2>
189
<refsect2 id="clutter-shader-get-vertex-source" role="function" condition="since:0.6">
190
<title>clutter_shader_get_vertex_source ()</title>
191
<indexterm zone="clutter-shader-get-vertex-source" role="0.6"><primary sortas="shader_get_vertex_source">clutter_shader_get_vertex_source</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link> * clutter_shader_get_vertex_source (<link linkend="ClutterShader">ClutterShader</link> *shader);</programlisting>
193
Query the current GLSL vertex source set on <parameter>shader</parameter>.</para>
195
</para><variablelist role="params">
196
<varlistentry><term><parameter>shader</parameter> :</term>
197
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
198
</simpara></listitem></varlistentry>
199
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the source of the vertex shader for this
200
ClutterShader object or <link linkend="NULL--CAPS"><literal>NULL</literal></link>. The returned string is owned by the
201
shader object and should never be modified or freed
203
</simpara></listitem></varlistentry>
204
</variablelist><para role="since">Since 0.6</para></refsect2>
205
<refsect2 id="clutter-shader-set-fragment-source" role="function" condition="since:0.6">
206
<title>clutter_shader_set_fragment_source ()</title>
207
<indexterm zone="clutter-shader-set-fragment-source" role="0.6"><primary sortas="shader_set_fragment_source">clutter_shader_set_fragment_source</primary></indexterm><programlisting><link linkend="void">void</link> clutter_shader_set_fragment_source (<link linkend="ClutterShader">ClutterShader</link> *shader,
208
const <link linkend="gchar">gchar</link> *data,
209
<link linkend="gssize">gssize</link> length);</programlisting>
211
Sets the GLSL source code to be used by a <link linkend="ClutterShader"><type>ClutterShader</type></link> for the fragment
214
</para><variablelist role="params">
215
<varlistentry><term><parameter>shader</parameter> :</term>
216
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
217
</simpara></listitem></varlistentry>
218
<varlistentry><term><parameter>data</parameter> :</term>
219
<listitem><simpara> GLSL source code.
220
</simpara></listitem></varlistentry>
221
<varlistentry><term><parameter>length</parameter> :</term>
222
<listitem><simpara> length of source buffer (currently ignored)
223
</simpara></listitem></varlistentry>
224
</variablelist><para role="since">Since 0.6</para></refsect2>
225
<refsect2 id="clutter-shader-get-fragment-source" role="function" condition="since:0.6">
226
<title>clutter_shader_get_fragment_source ()</title>
227
<indexterm zone="clutter-shader-get-fragment-source" role="0.6"><primary sortas="shader_get_fragment_source">clutter_shader_get_fragment_source</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link> * clutter_shader_get_fragment_source (<link linkend="ClutterShader">ClutterShader</link> *shader);</programlisting>
229
Query the current GLSL fragment source set on <parameter>shader</parameter>.</para>
231
</para><variablelist role="params">
232
<varlistentry><term><parameter>shader</parameter> :</term>
233
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
234
</simpara></listitem></varlistentry>
235
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the source of the fragment shader for this
236
ClutterShader object or <link linkend="NULL--CAPS"><literal>NULL</literal></link>. The returned string is owned by the
237
shader object and should never be modified or freed
239
</simpara></listitem></varlistentry>
240
</variablelist><para role="since">Since 0.6</para></refsect2>
241
<refsect2 id="clutter-shader-compile" role="function" condition="since:0.8">
242
<title>clutter_shader_compile ()</title>
243
<indexterm zone="clutter-shader-compile" role="0.8"><primary sortas="shader_compile">clutter_shader_compile</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> clutter_shader_compile (<link linkend="ClutterShader">ClutterShader</link> *shader,
244
<link linkend="GError">GError</link> **error);</programlisting>
246
Compiles and links GLSL sources set for vertex and fragment shaders for
247
a <link linkend="ClutterShader"><type>ClutterShader</type></link>. If the compilation fails and a <link linkend="GError"><type>GError</type></link> return location is
248
provided the error will contain the errors from the compiler, if any.</para>
250
</para><variablelist role="params">
251
<varlistentry><term><parameter>shader</parameter> :</term>
252
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
253
</simpara></listitem></varlistentry>
254
<varlistentry><term><parameter>error</parameter> :</term>
255
<listitem><simpara> return location for a <link linkend="GError"><type>GError</type></link>, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
256
</simpara></listitem></varlistentry>
257
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> returns TRUE if the shader was succesfully compiled.
259
</simpara></listitem></varlistentry>
260
</variablelist><para role="since">Since 0.8</para></refsect2>
261
<refsect2 id="clutter-shader-release" role="function" condition="since:0.6">
262
<title>clutter_shader_release ()</title>
263
<indexterm zone="clutter-shader-release" role="0.6"><primary sortas="shader_release">clutter_shader_release</primary></indexterm><programlisting><link linkend="void">void</link> clutter_shader_release (<link linkend="ClutterShader">ClutterShader</link> *shader);</programlisting>
265
Frees up any GL context resources held by the shader.</para>
267
</para><variablelist role="params">
268
<varlistentry><term><parameter>shader</parameter> :</term>
269
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
270
</simpara></listitem></varlistentry>
271
</variablelist><para role="since">Since 0.6</para></refsect2>
272
<refsect2 id="clutter-shader-is-compiled" role="function" condition="since:0.8">
273
<title>clutter_shader_is_compiled ()</title>
274
<indexterm zone="clutter-shader-is-compiled" role="0.8"><primary sortas="shader_is_compiled">clutter_shader_is_compiled</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> clutter_shader_is_compiled (<link linkend="ClutterShader">ClutterShader</link> *shader);</programlisting>
276
Checks whether <parameter>shader</parameter> is is currently compiled, linked and bound
277
to the GL context.</para>
279
</para><variablelist role="params">
280
<varlistentry><term><parameter>shader</parameter> :</term>
281
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
282
</simpara></listitem></varlistentry>
283
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if the shader is compiled, linked and ready for use.
285
</simpara></listitem></varlistentry>
286
</variablelist><para role="since">Since 0.8</para></refsect2>
287
<refsect2 id="clutter-shader-set-is-enabled" role="function" condition="since:0.6">
288
<title>clutter_shader_set_is_enabled ()</title>
289
<indexterm zone="clutter-shader-set-is-enabled" role="0.6"><primary sortas="shader_set_is_enabled">clutter_shader_set_is_enabled</primary></indexterm><programlisting><link linkend="void">void</link> clutter_shader_set_is_enabled (<link linkend="ClutterShader">ClutterShader</link> *shader,
290
<link linkend="gboolean">gboolean</link> enabled);</programlisting>
292
Enables a shader. This function will attempt to compile and link
293
the shader, if it isn't already.
296
When <parameter>enabled</parameter> is <link linkend="FALSE--CAPS"><literal>FALSE</literal></link> the default state of the GL pipeline will be
299
</para><variablelist role="params">
300
<varlistentry><term><parameter>shader</parameter> :</term>
301
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
302
</simpara></listitem></varlistentry>
303
<varlistentry><term><parameter>enabled</parameter> :</term>
304
<listitem><simpara> The new state of the shader.
305
</simpara></listitem></varlistentry>
306
</variablelist><para role="since">Since 0.6</para></refsect2>
307
<refsect2 id="clutter-shader-get-is-enabled" role="function" condition="since:0.6">
308
<title>clutter_shader_get_is_enabled ()</title>
309
<indexterm zone="clutter-shader-get-is-enabled" role="0.6"><primary sortas="shader_get_is_enabled">clutter_shader_get_is_enabled</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> clutter_shader_get_is_enabled (<link linkend="ClutterShader">ClutterShader</link> *shader);</programlisting>
311
Checks whether <parameter>shader</parameter> is enabled.</para>
313
</para><variablelist role="params">
314
<varlistentry><term><parameter>shader</parameter> :</term>
315
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
316
</simpara></listitem></varlistentry>
317
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if the shader is enabled.
319
</simpara></listitem></varlistentry>
320
</variablelist><para role="since">Since 0.6</para></refsect2>
321
<refsect2 id="clutter-shader-set-uniform" role="function" condition="since:1.0">
322
<title>clutter_shader_set_uniform ()</title>
323
<indexterm zone="clutter-shader-set-uniform" role="1.0"><primary sortas="shader_set_uniform">clutter_shader_set_uniform</primary></indexterm><programlisting><link linkend="void">void</link> clutter_shader_set_uniform (<link linkend="ClutterShader">ClutterShader</link> *shader,
324
const <link linkend="gchar">gchar</link> *name,
325
const <link linkend="GValue">GValue</link> *value);</programlisting>
327
Sets a user configurable variable in the GLSL shader programs attached to
328
a <link linkend="ClutterShader"><type>ClutterShader</type></link>.</para>
330
</para><variablelist role="params">
331
<varlistentry><term><parameter>shader</parameter> :</term>
332
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>.
333
</simpara></listitem></varlistentry>
334
<varlistentry><term><parameter>name</parameter> :</term>
335
<listitem><simpara> name of uniform in GLSL shader program to set.
336
</simpara></listitem></varlistentry>
337
<varlistentry><term><parameter>value</parameter> :</term>
338
<listitem><simpara> a <link linkend="ClutterShaderFloat"><type>ClutterShaderFloat</type></link>, <link linkend="ClutterShaderInt"><type>ClutterShaderInt</type></link> or <link linkend="ClutterShaderMatrix"><type>ClutterShaderMatrix</type></link>
339
<link linkend="GValue"><type>GValue</type></link>.
340
</simpara></listitem></varlistentry>
341
</variablelist><para role="since">Since 1.0</para></refsect2>
342
<refsect2 id="clutter-shader-get-cogl-program" role="function" condition="since:1.0">
343
<title>clutter_shader_get_cogl_program ()</title>
344
<indexterm zone="clutter-shader-get-cogl-program" role="1.0"><primary sortas="shader_get_cogl_program">clutter_shader_get_cogl_program</primary></indexterm><programlisting><link linkend="CoglHandle">CoglHandle</link> clutter_shader_get_cogl_program (<link linkend="ClutterShader">ClutterShader</link> *shader);</programlisting>
346
Retrieves the underlying <link linkend="CoglHandle"><type>CoglHandle</type></link> for the shader program.</para>
348
</para><variablelist role="params">
349
<varlistentry><term><parameter>shader</parameter> :</term>
350
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
351
</simpara></listitem></varlistentry>
352
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> A <link linkend="CoglHandle"><type>CoglHandle</type></link> for the shader program, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
354
</simpara></listitem></varlistentry>
355
</variablelist><para role="since">Since 1.0</para></refsect2>
356
<refsect2 id="clutter-shader-get-cogl-fragment-shader" role="function" condition="since:1.0">
357
<title>clutter_shader_get_cogl_fragment_shader ()</title>
358
<indexterm zone="clutter-shader-get-cogl-fragment-shader" role="1.0"><primary sortas="shader_get_cogl_fragment_shader">clutter_shader_get_cogl_fragment_shader</primary></indexterm><programlisting><link linkend="CoglHandle">CoglHandle</link> clutter_shader_get_cogl_fragment_shader
359
(<link linkend="ClutterShader">ClutterShader</link> *shader);</programlisting>
361
Retrieves the underlying <link linkend="CoglHandle"><type>CoglHandle</type></link> for the fragment shader.</para>
363
</para><variablelist role="params">
364
<varlistentry><term><parameter>shader</parameter> :</term>
365
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
366
</simpara></listitem></varlistentry>
367
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> A <link linkend="CoglHandle"><type>CoglHandle</type></link> for the fragment shader, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
369
</simpara></listitem></varlistentry>
370
</variablelist><para role="since">Since 1.0</para></refsect2>
371
<refsect2 id="clutter-shader-get-cogl-vertex-shader" role="function" condition="since:1.0">
372
<title>clutter_shader_get_cogl_vertex_shader ()</title>
373
<indexterm zone="clutter-shader-get-cogl-vertex-shader" role="1.0"><primary sortas="shader_get_cogl_vertex_shader">clutter_shader_get_cogl_vertex_shader</primary></indexterm><programlisting><link linkend="CoglHandle">CoglHandle</link> clutter_shader_get_cogl_vertex_shader
374
(<link linkend="ClutterShader">ClutterShader</link> *shader);</programlisting>
376
Retrieves the underlying <link linkend="CoglHandle"><type>CoglHandle</type></link> for the vertex shader.</para>
378
</para><variablelist role="params">
379
<varlistentry><term><parameter>shader</parameter> :</term>
380
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
381
</simpara></listitem></varlistentry>
382
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> A <link linkend="CoglHandle"><type>CoglHandle</type></link> for the vertex shader, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
384
</simpara></listitem></varlistentry>
385
</variablelist><para role="since">Since 1.0</para></refsect2>
386
<refsect2 id="CLUTTER-VALUE-HOLDS-SHADER-FLOAT--CAPS" role="macro" condition="since:1.0">
387
<title>CLUTTER_VALUE_HOLDS_SHADER_FLOAT()</title>
388
<indexterm zone="CLUTTER-VALUE-HOLDS-SHADER-FLOAT--CAPS" role="1.0"><primary sortas="VALUE_HOLDS_SHADER_FLOAT">CLUTTER_VALUE_HOLDS_SHADER_FLOAT</primary></indexterm><programlisting>#define CLUTTER_VALUE_HOLDS_SHADER_FLOAT(x) (G_VALUE_HOLDS ((x), CLUTTER_TYPE_SHADER_FLOAT))
391
Evaluates to <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if <parameter>x</parameter> holds a <link linkend="ClutterShaderFloat"><type>ClutterShaderFloat</type></link>.</para>
393
</para><variablelist role="params">
394
<varlistentry><term><parameter>x</parameter> :</term>
395
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
396
</simpara></listitem></varlistentry>
397
</variablelist><para role="since">Since 1.0</para></refsect2>
398
<refsect2 id="clutter-value-set-shader-float" role="function" condition="since:0.8">
399
<title>clutter_value_set_shader_float ()</title>
400
<indexterm zone="clutter-value-set-shader-float" role="0.8"><primary sortas="value_set_shader_float">clutter_value_set_shader_float</primary></indexterm><programlisting><link linkend="void">void</link> clutter_value_set_shader_float (<link linkend="GValue">GValue</link> *value,
401
<link linkend="gint">gint</link> size,
402
const <link linkend="gfloat">gfloat</link> *floats);</programlisting>
404
Sets <parameter>floats</parameter> as the contents of <parameter>value</parameter>. The passed <link linkend="GValue"><type>GValue</type></link>
405
must have been initialized using <link linkend="CLUTTER-TYPE-SHADER-FLOAT--CAPS"><literal>CLUTTER_TYPE_SHADER_FLOAT</literal></link>.</para>
407
</para><variablelist role="params">
408
<varlistentry><term><parameter>value</parameter> :</term>
409
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
410
</simpara></listitem></varlistentry>
411
<varlistentry><term><parameter>size</parameter> :</term>
412
<listitem><simpara> number of floating point values in <parameter>floats</parameter>
413
</simpara></listitem></varlistentry>
414
<varlistentry><term><parameter>floats</parameter> :</term>
415
<listitem><simpara> an array of floating point values
416
</simpara></listitem></varlistentry>
417
</variablelist><para role="since">Since 0.8</para></refsect2>
418
<refsect2 id="clutter-value-get-shader-float" role="function" condition="since:0.8">
419
<title>clutter_value_get_shader_float ()</title>
420
<indexterm zone="clutter-value-get-shader-float" role="0.8"><primary sortas="value_get_shader_float">clutter_value_get_shader_float</primary></indexterm><programlisting>const <link linkend="gfloat">gfloat</link> * clutter_value_get_shader_float (const <link linkend="GValue">GValue</link> *value,
421
<link linkend="gsize">gsize</link> *length);</programlisting>
423
Retrieves the list of floating point values stored inside
424
the passed <link linkend="GValue"><type>GValue</type></link>. <parameter>value</parameter> must have been initialized with
425
<link linkend="CLUTTER-TYPE-SHADER-FLOAT--CAPS"><literal>CLUTTER_TYPE_SHADER_FLOAT</literal></link>.</para>
427
</para><variablelist role="params">
428
<varlistentry><term><parameter>value</parameter> :</term>
429
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
430
</simpara></listitem></varlistentry>
431
<varlistentry><term><parameter>length</parameter> :</term>
432
<listitem><simpara> return location for the number of returned floating
433
point values, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
434
</simpara></listitem></varlistentry>
435
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the pointer to a list of floating point values.
436
The returned value is owned by the <link linkend="GValue"><type>GValue</type></link> and should never
437
be modified or freed.
439
</simpara></listitem></varlistentry>
440
</variablelist><para role="since">Since 0.8</para></refsect2>
441
<refsect2 id="CLUTTER-VALUE-HOLDS-SHADER-INT--CAPS" role="macro" condition="since:1.0">
442
<title>CLUTTER_VALUE_HOLDS_SHADER_INT()</title>
443
<indexterm zone="CLUTTER-VALUE-HOLDS-SHADER-INT--CAPS" role="1.0"><primary sortas="VALUE_HOLDS_SHADER_INT">CLUTTER_VALUE_HOLDS_SHADER_INT</primary></indexterm><programlisting>#define CLUTTER_VALUE_HOLDS_SHADER_INT(x) (G_VALUE_HOLDS ((x), CLUTTER_TYPE_SHADER_INT))
446
Evaluates to <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if <parameter>x</parameter> holds a <link linkend="ClutterShaderInt"><type>ClutterShaderInt</type></link>.</para>
448
</para><variablelist role="params">
449
<varlistentry><term><parameter>x</parameter> :</term>
450
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
451
</simpara></listitem></varlistentry>
452
</variablelist><para role="since">Since 1.0</para></refsect2>
453
<refsect2 id="clutter-value-set-shader-int" role="function" condition="since:0.8">
454
<title>clutter_value_set_shader_int ()</title>
455
<indexterm zone="clutter-value-set-shader-int" role="0.8"><primary sortas="value_set_shader_int">clutter_value_set_shader_int</primary></indexterm><programlisting><link linkend="void">void</link> clutter_value_set_shader_int (<link linkend="GValue">GValue</link> *value,
456
<link linkend="gint">gint</link> size,
457
const <link linkend="gint">gint</link> *ints);</programlisting>
459
Sets <parameter>ints</parameter> as the contents of <parameter>value</parameter>. The passed <link linkend="GValue"><type>GValue</type></link>
460
must have been initialized using <link linkend="CLUTTER-TYPE-SHADER-INT--CAPS"><literal>CLUTTER_TYPE_SHADER_INT</literal></link>.</para>
462
</para><variablelist role="params">
463
<varlistentry><term><parameter>value</parameter> :</term>
464
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
465
</simpara></listitem></varlistentry>
466
<varlistentry><term><parameter>size</parameter> :</term>
467
<listitem><simpara> number of integer values in <parameter>ints</parameter>
468
</simpara></listitem></varlistentry>
469
<varlistentry><term><parameter>ints</parameter> :</term>
470
<listitem><simpara> an array of integer values
471
</simpara></listitem></varlistentry>
472
</variablelist><para role="since">Since 0.8</para></refsect2>
473
<refsect2 id="clutter-value-get-shader-int" role="function" condition="since:0.8">
474
<title>clutter_value_get_shader_int ()</title>
475
<indexterm zone="clutter-value-get-shader-int" role="0.8"><primary sortas="value_get_shader_int">clutter_value_get_shader_int</primary></indexterm><programlisting>const <link linkend="gint">gint</link> * clutter_value_get_shader_int (const <link linkend="GValue">GValue</link> *value,
476
<link linkend="gsize">gsize</link> *length);</programlisting>
478
Retrieves the list of integer values stored inside the passed
479
<link linkend="GValue"><type>GValue</type></link>. <parameter>value</parameter> must have been initialized with
480
<link linkend="CLUTTER-TYPE-SHADER-INT--CAPS"><literal>CLUTTER_TYPE_SHADER_INT</literal></link>.</para>
482
</para><variablelist role="params">
483
<varlistentry><term><parameter>value</parameter> :</term>
484
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
485
</simpara></listitem></varlistentry>
486
<varlistentry><term><parameter>length</parameter> :</term>
487
<listitem><simpara> return location for the number of returned integer
488
values, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
489
</simpara></listitem></varlistentry>
490
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the pointer to a list of integer values.
491
The returned value is owned by the <link linkend="GValue"><type>GValue</type></link> and should never
492
be modified or freed.
494
</simpara></listitem></varlistentry>
495
</variablelist><para role="since">Since 0.8</para></refsect2>
496
<refsect2 id="CLUTTER-VALUE-HOLDS-SHADER-MATRIX--CAPS" role="macro" condition="since:1.0">
497
<title>CLUTTER_VALUE_HOLDS_SHADER_MATRIX()</title>
498
<indexterm zone="CLUTTER-VALUE-HOLDS-SHADER-MATRIX--CAPS" role="1.0"><primary sortas="VALUE_HOLDS_SHADER_MATRIX">CLUTTER_VALUE_HOLDS_SHADER_MATRIX</primary></indexterm><programlisting>#define CLUTTER_VALUE_HOLDS_SHADER_MATRIX(x) (G_VALUE_HOLDS ((x), CLUTTER_TYPE_SHADER_MATRIX))
501
Evaluates to <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if <parameter>x</parameter> holds a <link linkend="ClutterShaderMatrix"><type>ClutterShaderMatrix</type></link>.</para>
503
</para><variablelist role="params">
504
<varlistentry><term><parameter>x</parameter> :</term>
505
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
506
</simpara></listitem></varlistentry>
507
</variablelist><para role="since">Since 1.0</para></refsect2>
508
<refsect2 id="clutter-value-set-shader-matrix" role="function" condition="since:0.8">
509
<title>clutter_value_set_shader_matrix ()</title>
510
<indexterm zone="clutter-value-set-shader-matrix" role="0.8"><primary sortas="value_set_shader_matrix">clutter_value_set_shader_matrix</primary></indexterm><programlisting><link linkend="void">void</link> clutter_value_set_shader_matrix (<link linkend="GValue">GValue</link> *value,
511
<link linkend="gint">gint</link> size,
512
const <link linkend="gfloat">gfloat</link> *matrix);</programlisting>
514
Sets <parameter>matrix</parameter> as the contents of <parameter>value</parameter>. The passed <link linkend="GValue"><type>GValue</type></link>
515
must have been initialized using <link linkend="CLUTTER-TYPE-SHADER-MATRIX--CAPS"><literal>CLUTTER_TYPE_SHADER_MATRIX</literal></link>.</para>
517
</para><variablelist role="params">
518
<varlistentry><term><parameter>value</parameter> :</term>
519
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
520
</simpara></listitem></varlistentry>
521
<varlistentry><term><parameter>size</parameter> :</term>
522
<listitem><simpara> number of floating point values in <parameter>floats</parameter>
523
</simpara></listitem></varlistentry>
524
<varlistentry><term><parameter>matrix</parameter> :</term>
525
<listitem><simpara> a matrix of floating point values
526
</simpara></listitem></varlistentry>
527
</variablelist><para role="since">Since 0.8</para></refsect2>
528
<refsect2 id="clutter-value-get-shader-matrix" role="function" condition="since:0.8">
529
<title>clutter_value_get_shader_matrix ()</title>
530
<indexterm zone="clutter-value-get-shader-matrix" role="0.8"><primary sortas="value_get_shader_matrix">clutter_value_get_shader_matrix</primary></indexterm><programlisting>const <link linkend="gfloat">gfloat</link> * clutter_value_get_shader_matrix (const <link linkend="GValue">GValue</link> *value,
531
<link linkend="gsize">gsize</link> *length);</programlisting>
533
Retrieves a matrix of floating point values stored inside
534
the passed <link linkend="GValue"><type>GValue</type></link>. <parameter>value</parameter> must have been initialized with
535
<link linkend="CLUTTER-TYPE-SHADER-MATRIX--CAPS"><literal>CLUTTER_TYPE_SHADER_MATRIX</literal></link>.</para>
537
</para><variablelist role="params">
538
<varlistentry><term><parameter>value</parameter> :</term>
539
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
540
</simpara></listitem></varlistentry>
541
<varlistentry><term><parameter>length</parameter> :</term>
542
<listitem><simpara>out. <acronym>out</acronym>. </simpara></listitem></varlistentry>
543
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>array length=length) (transfer none. <acronym>array</acronym> length=length. <acronym>transfer</acronym> none. </simpara></listitem></varlistentry>
544
</variablelist><para role="since">Since 0.8</para></refsect2>
547
<refsect1 id="ClutterShader.property-details" role="property_details">
548
<title role="property_details.title">Property Details</title>
549
<refsect2 id="ClutterShader--compiled" role="property"><title>The <literal>"compiled"</literal> property</title>
550
<indexterm zone="ClutterShader--compiled" role="0.8"><primary sortas="Shader:compiled">ClutterShader:compiled</primary></indexterm><programlisting> "compiled" <link linkend="gboolean">gboolean</link> : Read</programlisting>
552
Whether the shader is compiled and linked, ready for use
553
in the GL context.</para>
555
</para><para>Default value: FALSE</para>
556
<para>Since 0.8</para>
558
<refsect2 id="ClutterShader--enabled" role="property"><title>The <literal>"enabled"</literal> property</title>
559
<indexterm zone="ClutterShader--enabled" role="0.6"><primary sortas="Shader:enabled">ClutterShader:enabled</primary></indexterm><programlisting> "enabled" <link linkend="gboolean">gboolean</link> : Read / Write</programlisting>
561
Whether the shader is currently used in the GL rendering pipeline.</para>
563
</para><para>Default value: FALSE</para>
564
<para>Since 0.6</para>
566
<refsect2 id="ClutterShader--fragment-source" role="property"><title>The <literal>"fragment-source"</literal> property</title>
567
<indexterm zone="ClutterShader--fragment-source" role="0.6"><primary sortas="Shader:fragment-source">ClutterShader:fragment-source</primary></indexterm><programlisting> "fragment-source" <link linkend="gchar">gchar</link>* : Read / Write</programlisting>
569
GLSL source code for the fragment shader part of the shader program.</para>
571
</para><para>Default value: NULL</para>
572
<para>Since 0.6</para>
574
<refsect2 id="ClutterShader--vertex-source" role="property"><title>The <literal>"vertex-source"</literal> property</title>
575
<indexterm zone="ClutterShader--vertex-source" role="0.6"><primary sortas="Shader:vertex-source">ClutterShader:vertex-source</primary></indexterm><programlisting> "vertex-source" <link linkend="gchar">gchar</link>* : Read / Write</programlisting>
577
GLSL source code for the vertex shader part of the shader
578
program, if any</para>
580
</para><para>Default value: NULL</para>
581
<para>Since 0.6</para>