~oem-solutions-group/unity-2d/clutter-1.0

« back to all changes in this revision

Viewing changes to doc/reference/clutter/xml/clutter-shader.xml

  • Committer: Bazaar Package Importer
  • Author(s): Emilio Pozuelo Monfort
  • Date: 2010-03-21 13:27:56 UTC
  • mto: (2.1.3 experimental)
  • mto: This revision was merged to the branch mainline in revision 8.
  • Revision ID: james.westby@ubuntu.com-20100321132756-nf8yd30yxo3zzwcm
Tags: upstream-1.2.2
ImportĀ upstreamĀ versionĀ 1.2.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?xml version="1.0"?>
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">
5
 
]>
6
 
 
7
 
<refentry id="ClutterShader">
8
 
<refmeta>
9
 
<refentrytitle role="top_of_page" id="ClutterShader.top_of_page">ClutterShader</refentrytitle>
10
 
<manvolnum>3</manvolnum>
11
 
<refmiscinfo>CLUTTER Library</refmiscinfo>
12
 
</refmeta>
13
 
 
14
 
<refnamediv>
15
 
<refname>ClutterShader</refname>
16
 
<refpurpose>Programmable pipeline abstraction</refpurpose>
17
 
</refnamediv>
18
 
 
19
 
<refsynopsisdiv id="ClutterShader.synopsis" role="synopsis">
20
 
<title role="synopsis.title">Synopsis</title>
21
 
 
22
 
<synopsis>
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);
42
 
 
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);
51
 
 
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);
70
 
</synopsis>
71
 
</refsynopsisdiv>
72
 
 
73
 
<refsect1 id="ClutterShader.object-hierarchy" role="object_hierarchy">
74
 
<title role="object_hierarchy.title">Object Hierarchy</title>
75
 
<synopsis>
76
 
  <link linkend="GObject">GObject</link>
77
 
   +----ClutterShader
78
 
</synopsis>
79
 
</refsect1>
80
 
 
81
 
 
82
 
 
83
 
 
84
 
 
85
 
<refsect1 id="ClutterShader.properties" role="properties">
86
 
<title role="properties.title">Properties</title>
87
 
<synopsis>
88
 
  &quot;<link linkend="ClutterShader--compiled">compiled</link>&quot;                 <link linkend="gboolean">gboolean</link>              : Read
89
 
  &quot;<link linkend="ClutterShader--enabled">enabled</link>&quot;                  <link linkend="gboolean">gboolean</link>              : Read / Write
90
 
  &quot;<link linkend="ClutterShader--fragment-source">fragment-source</link>&quot;          <link linkend="gchar">gchar</link>*                : Read / Write
91
 
  &quot;<link linkend="ClutterShader--vertex-source">vertex-source</link>&quot;            <link linkend="gchar">gchar</link>*                : Read / Write
92
 
</synopsis>
93
 
</refsect1>
94
 
 
95
 
 
96
 
 
97
 
<refsect1 id="ClutterShader.description" role="desc">
98
 
<title role="desc.title">Description</title>
99
 
<para>
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".
104
 
</para>
105
 
<para>
106
 
<link linkend="ClutterShader"><type>ClutterShader</type></link> is available since Clutter 0.6</para>
107
 
<para>
108
 
</para>
109
 
</refsect1>
110
 
 
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;
120
 
</programlisting>
121
 
<para>
122
 
<link linkend="ClutterShader"><type>ClutterShader</type></link> error enumeration</para>
123
 
<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>
129
 
</varlistentry>
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>
134
 
</varlistentry>
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>
139
 
</varlistentry>
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>
144
 
<para>
145
 
The <link linkend="ClutterShader"><type>ClutterShader</type></link> structure contains only private data
146
 
and should be accessed using the provided API</para>
147
 
<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;
153
 
</programlisting>
154
 
<para>
155
 
The <link linkend="ClutterShaderClass"><type>ClutterShaderClass</type></link> structure contains only private data</para>
156
 
<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>
161
 
<para>
162
 
Create a new <link linkend="ClutterShader"><type>ClutterShader</type></link> instance.</para>
163
 
<para>
164
 
</para><variablelist role="params">
165
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> a new <link linkend="ClutterShader"><type>ClutterShader</type></link>.
166
 
 
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>
174
 
<para>
175
 
Sets the GLSL source code to be used by a <link linkend="ClutterShader"><type>ClutterShader</type></link> for the vertex
176
 
program.</para>
177
 
<para>
178
 
</para><variablelist role="params">
179
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
180
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
181
 
</simpara></listitem></varlistentry>
182
 
<varlistentry><term><parameter>data</parameter>&#160;:</term>
183
 
<listitem><simpara> GLSL source code.
184
 
</simpara></listitem></varlistentry>
185
 
<varlistentry><term><parameter>length</parameter>&#160;:</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>
192
 
<para>
193
 
Query the current GLSL vertex source set on <parameter>shader</parameter>.</para>
194
 
<para>
195
 
</para><variablelist role="params">
196
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
197
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
198
 
</simpara></listitem></varlistentry>
199
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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
202
 
 
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>
210
 
<para>
211
 
Sets the GLSL source code to be used by a <link linkend="ClutterShader"><type>ClutterShader</type></link> for the fragment
212
 
program.</para>
213
 
<para>
214
 
</para><variablelist role="params">
215
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
216
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
217
 
</simpara></listitem></varlistentry>
218
 
<varlistentry><term><parameter>data</parameter>&#160;:</term>
219
 
<listitem><simpara> GLSL source code.
220
 
</simpara></listitem></varlistentry>
221
 
<varlistentry><term><parameter>length</parameter>&#160;:</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>
228
 
<para>
229
 
Query the current GLSL fragment source set on <parameter>shader</parameter>.</para>
230
 
<para>
231
 
</para><variablelist role="params">
232
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
233
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
234
 
</simpara></listitem></varlistentry>
235
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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
238
 
 
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>
245
 
<para>
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>
249
 
<para>
250
 
</para><variablelist role="params">
251
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
252
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
253
 
</simpara></listitem></varlistentry>
254
 
<varlistentry><term><parameter>error</parameter>&#160;:</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>&#160;:</term><listitem><simpara> returns TRUE if the shader was succesfully compiled.
258
 
 
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>
264
 
<para>
265
 
Frees up any GL context resources held by the shader.</para>
266
 
<para>
267
 
</para><variablelist role="params">
268
 
<varlistentry><term><parameter>shader</parameter>&#160;:</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>
275
 
<para>
276
 
Checks whether <parameter>shader</parameter> is is currently compiled, linked and bound
277
 
to the GL context.</para>
278
 
<para>
279
 
</para><variablelist role="params">
280
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
281
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
282
 
</simpara></listitem></varlistentry>
283
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if the shader is compiled, linked and ready for use.
284
 
 
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>
291
 
<para>
292
 
Enables a shader. This function will attempt to compile and link
293
 
the shader, if it isn't already.
294
 
</para>
295
 
<para>
296
 
When <parameter>enabled</parameter> is <link linkend="FALSE--CAPS"><literal>FALSE</literal></link> the default state of the GL pipeline will be
297
 
used instead.</para>
298
 
<para>
299
 
</para><variablelist role="params">
300
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
301
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
302
 
</simpara></listitem></varlistentry>
303
 
<varlistentry><term><parameter>enabled</parameter>&#160;:</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>
310
 
<para>
311
 
Checks whether <parameter>shader</parameter> is enabled.</para>
312
 
<para>
313
 
</para><variablelist role="params">
314
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
315
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
316
 
</simpara></listitem></varlistentry>
317
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if the shader is enabled.
318
 
 
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>
326
 
<para>
327
 
Sets a user configurable variable in the GLSL shader programs attached to
328
 
a <link linkend="ClutterShader"><type>ClutterShader</type></link>.</para>
329
 
<para>
330
 
</para><variablelist role="params">
331
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
332
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>.
333
 
</simpara></listitem></varlistentry>
334
 
<varlistentry><term><parameter>name</parameter>&#160;:</term>
335
 
<listitem><simpara> name of uniform in GLSL shader program to set.
336
 
</simpara></listitem></varlistentry>
337
 
<varlistentry><term><parameter>value</parameter>&#160;:</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>
345
 
<para>
346
 
Retrieves the underlying <link linkend="CoglHandle"><type>CoglHandle</type></link> for the shader program.</para>
347
 
<para>
348
 
</para><variablelist role="params">
349
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
350
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
351
 
</simpara></listitem></varlistentry>
352
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> A <link linkend="CoglHandle"><type>CoglHandle</type></link> for the shader program, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
353
 
 
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>
360
 
<para>
361
 
Retrieves the underlying <link linkend="CoglHandle"><type>CoglHandle</type></link> for the fragment shader.</para>
362
 
<para>
363
 
</para><variablelist role="params">
364
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
365
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
366
 
</simpara></listitem></varlistentry>
367
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> A <link linkend="CoglHandle"><type>CoglHandle</type></link> for the fragment shader, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
368
 
 
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>
375
 
<para>
376
 
Retrieves the underlying <link linkend="CoglHandle"><type>CoglHandle</type></link> for the vertex shader.</para>
377
 
<para>
378
 
</para><variablelist role="params">
379
 
<varlistentry><term><parameter>shader</parameter>&#160;:</term>
380
 
<listitem><simpara> a <link linkend="ClutterShader"><type>ClutterShader</type></link>
381
 
</simpara></listitem></varlistentry>
382
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara> A <link linkend="CoglHandle"><type>CoglHandle</type></link> for the vertex shader, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>
383
 
 
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))
389
 
</programlisting>
390
 
<para>
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>
392
 
<para>
393
 
</para><variablelist role="params">
394
 
<varlistentry><term><parameter>x</parameter>&#160;:</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>
403
 
<para>
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>
406
 
<para>
407
 
</para><variablelist role="params">
408
 
<varlistentry><term><parameter>value</parameter>&#160;:</term>
409
 
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
410
 
</simpara></listitem></varlistentry>
411
 
<varlistentry><term><parameter>size</parameter>&#160;:</term>
412
 
<listitem><simpara> number of floating point values in <parameter>floats</parameter>
413
 
</simpara></listitem></varlistentry>
414
 
<varlistentry><term><parameter>floats</parameter>&#160;:</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>
422
 
<para>
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>
426
 
<para>
427
 
</para><variablelist role="params">
428
 
<varlistentry><term><parameter>value</parameter>&#160;:</term>
429
 
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
430
 
</simpara></listitem></varlistentry>
431
 
<varlistentry><term><parameter>length</parameter>&#160;:</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>&#160;:</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.
438
 
 
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))
444
 
</programlisting>
445
 
<para>
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>
447
 
<para>
448
 
</para><variablelist role="params">
449
 
<varlistentry><term><parameter>x</parameter>&#160;:</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>
458
 
<para>
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>
461
 
<para>
462
 
</para><variablelist role="params">
463
 
<varlistentry><term><parameter>value</parameter>&#160;:</term>
464
 
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
465
 
</simpara></listitem></varlistentry>
466
 
<varlistentry><term><parameter>size</parameter>&#160;:</term>
467
 
<listitem><simpara> number of integer values in <parameter>ints</parameter>
468
 
</simpara></listitem></varlistentry>
469
 
<varlistentry><term><parameter>ints</parameter>&#160;:</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>
477
 
<para>
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>
481
 
<para>
482
 
</para><variablelist role="params">
483
 
<varlistentry><term><parameter>value</parameter>&#160;:</term>
484
 
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
485
 
</simpara></listitem></varlistentry>
486
 
<varlistentry><term><parameter>length</parameter>&#160;:</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>&#160;:</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.
493
 
 
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))
499
 
</programlisting>
500
 
<para>
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>
502
 
<para>
503
 
</para><variablelist role="params">
504
 
<varlistentry><term><parameter>x</parameter>&#160;:</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>
513
 
<para>
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>
516
 
<para>
517
 
</para><variablelist role="params">
518
 
<varlistentry><term><parameter>value</parameter>&#160;:</term>
519
 
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
520
 
</simpara></listitem></varlistentry>
521
 
<varlistentry><term><parameter>size</parameter>&#160;:</term>
522
 
<listitem><simpara> number of floating point values in <parameter>floats</parameter>
523
 
</simpara></listitem></varlistentry>
524
 
<varlistentry><term><parameter>matrix</parameter>&#160;:</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>
532
 
<para>
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>
536
 
<para>
537
 
</para><variablelist role="params">
538
 
<varlistentry><term><parameter>value</parameter>&#160;:</term>
539
 
<listitem><simpara> a <link linkend="GValue"><type>GValue</type></link>
540
 
</simpara></listitem></varlistentry>
541
 
<varlistentry><term><parameter>length</parameter>&#160;:</term>
542
 
<listitem><simpara>out. <acronym>out</acronym>. </simpara></listitem></varlistentry>
543
 
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</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>
545
 
 
546
 
</refsect1>
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>&quot;compiled&quot;</literal> property</title>
550
 
<indexterm zone="ClutterShader--compiled" role="0.8"><primary sortas="Shader:compiled">ClutterShader:compiled</primary></indexterm><programlisting>  &quot;compiled&quot;                 <link linkend="gboolean">gboolean</link>              : Read</programlisting>
551
 
<para>
552
 
Whether the shader is compiled and linked, ready for use
553
 
in the GL context.</para>
554
 
<para>
555
 
</para><para>Default value: FALSE</para>
556
 
<para>Since 0.8</para>
557
 
</refsect2>
558
 
<refsect2 id="ClutterShader--enabled" role="property"><title>The <literal>&quot;enabled&quot;</literal> property</title>
559
 
<indexterm zone="ClutterShader--enabled" role="0.6"><primary sortas="Shader:enabled">ClutterShader:enabled</primary></indexterm><programlisting>  &quot;enabled&quot;                  <link linkend="gboolean">gboolean</link>              : Read / Write</programlisting>
560
 
<para>
561
 
Whether the shader is currently used in the GL rendering pipeline.</para>
562
 
<para>
563
 
</para><para>Default value: FALSE</para>
564
 
<para>Since 0.6</para>
565
 
</refsect2>
566
 
<refsect2 id="ClutterShader--fragment-source" role="property"><title>The <literal>&quot;fragment-source&quot;</literal> property</title>
567
 
<indexterm zone="ClutterShader--fragment-source" role="0.6"><primary sortas="Shader:fragment-source">ClutterShader:fragment-source</primary></indexterm><programlisting>  &quot;fragment-source&quot;          <link linkend="gchar">gchar</link>*                : Read / Write</programlisting>
568
 
<para>
569
 
GLSL source code for the fragment shader part of the shader program.</para>
570
 
<para>
571
 
</para><para>Default value: NULL</para>
572
 
<para>Since 0.6</para>
573
 
</refsect2>
574
 
<refsect2 id="ClutterShader--vertex-source" role="property"><title>The <literal>&quot;vertex-source&quot;</literal> property</title>
575
 
<indexterm zone="ClutterShader--vertex-source" role="0.6"><primary sortas="Shader:vertex-source">ClutterShader:vertex-source</primary></indexterm><programlisting>  &quot;vertex-source&quot;            <link linkend="gchar">gchar</link>*                : Read / Write</programlisting>
576
 
<para>
577
 
GLSL source code for the vertex shader part of the shader
578
 
program, if any</para>
579
 
<para>
580
 
</para><para>Default value: NULL</para>
581
 
<para>Since 0.6</para>
582
 
</refsect2>
583
 
</refsect1>
584
 
 
585
 
 
586
 
 
587
 
 
588
 
</refentry>