rename upstream-man-pages to upstream-doc
[clinton/guile-figl.git] / upstream-doc / man3 / glBlendFunc.xml
CommitLineData
7faf1d71
AW
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
3 "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
4<refentry id="glBlendFunc">
5 <refmeta>
6 <refmetainfo>
7 <copyright>
8 <year>1991-2006</year>
9 <holder>Silicon Graphics, Inc.</holder>
10 </copyright>
11 </refmetainfo>
12 <refentrytitle>glBlendFunc</refentrytitle>
13 <manvolnum>3G</manvolnum>
14 </refmeta>
15 <refnamediv>
16 <refname>glBlendFunc</refname>
17 <refpurpose>specify pixel arithmetic</refpurpose>
18 </refnamediv>
19 <refsynopsisdiv><title>C Specification</title>
20 <funcsynopsis>
21 <funcprototype>
22 <funcdef>void <function>glBlendFunc</function></funcdef>
23 <paramdef>GLenum <parameter>sfactor</parameter></paramdef>
24 <paramdef>GLenum <parameter>dfactor</parameter></paramdef>
25 </funcprototype>
26 </funcsynopsis>
27 </refsynopsisdiv>
28 <!-- eqn: ignoring delim $$ -->
29 <refsect1 id="parameters"><title>Parameters</title>
30 <variablelist>
31 <varlistentry>
32 <term><parameter>sfactor</parameter></term>
33 <listitem>
34 <para>
35 Specifies how the red, green, blue,
36 and alpha source blending factors are computed.
37 The initial value is <constant>GL_ONE</constant>.
38 </para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>dfactor</parameter></term>
43 <listitem>
44 <para>
45 Specifies how the red, green, blue,
46 and alpha destination blending factors are computed.
47 The following symbolic constants are accepted:
48 <constant>GL_ZERO</constant>,
49 <constant>GL_ONE</constant>,
50 <constant>GL_SRC_COLOR</constant>,
51 <constant>GL_ONE_MINUS_SRC_COLOR</constant>,
52 <constant>GL_DST_COLOR</constant>,
53 <constant>GL_ONE_MINUS_DST_COLOR</constant>,
54 <constant>GL_SRC_ALPHA</constant>,
55 <constant>GL_ONE_MINUS_SRC_ALPHA</constant>,
56 <constant>GL_DST_ALPHA</constant>,
57 <constant>GL_ONE_MINUS_DST_ALPHA</constant>.
58 <constant>GL_CONSTANT_COLOR</constant>,
59 <constant>GL_ONE_MINUS_CONSTANT_COLOR</constant>,
60 <constant>GL_CONSTANT_ALPHA</constant>, and
61 <constant>GL_ONE_MINUS_CONSTANT_ALPHA</constant>.
62 The initial value is <constant>GL_ZERO</constant>.
63 </para>
64 </listitem>
65 </varlistentry>
66 </variablelist>
67 </refsect1>
68 <refsect1 id="description"><title>Description</title>
69 <para>
70 Pixels can be drawn using a function that blends
71 the incoming (source) RGBA values with the RGBA values
72 that are already in the frame buffer (the destination values).
73 Blending is initially disabled.
74 Use <citerefentry><refentrytitle>glEnable</refentrytitle></citerefentry> and <citerefentry><refentrytitle>glDisable</refentrytitle></citerefentry> with argument <constant>GL_BLEND</constant>
75 to enable and disable blending.
76 </para>
77 <para>
78 <function>glBlendFunc</function> defines the operation of blending when it is enabled.
79 <parameter>sfactor</parameter> specifies which method is used to scale the
80 source color components.
81 <parameter>dfactor</parameter> specifies which method is used to scale the
82 destination color components.
83 Both parameters must be one of the following symbolic constants:
84 <constant>GL_ZERO</constant>,
85 <constant>GL_ONE</constant>,
86 <constant>GL_SRC_COLOR</constant>,
87 <constant>GL_ONE_MINUS_SRC_COLOR</constant>,
88 <constant>GL_DST_COLOR</constant>,
89 <constant>GL_ONE_MINUS_DST_COLOR</constant>,
90 <constant>GL_SRC_ALPHA</constant>,
91 <constant>GL_ONE_MINUS_SRC_ALPHA</constant>,
92 <constant>GL_DST_ALPHA</constant>,
93 <constant>GL_ONE_MINUS_DST_ALPHA</constant>,
94 <constant>GL_CONSTANT_COLOR</constant>,
95 <constant>GL_ONE_MINUS_CONSTANT_COLOR</constant>,
96 <constant>GL_CONSTANT_ALPHA</constant>,
97 <constant>GL_ONE_MINUS_CONSTANT_ALPHA</constant>,
98 <constant>GL_SRC_ALPHA_SATURATE</constant>,
99 <constant>GL_SRC1_COLOR</constant>,
100 <constant>GL_ONE_MINUS_SRC1_COLOR</constant>,
101 <constant>GL_SRC1_ALPHA</constant>, and
102 <constant>GL_ONE_MINUS_SRC1_ALPHA</constant>.
103 The possible methods are described in the following table.
104 Each method defines four scale factors,
105 one each for red, green, blue, and alpha.
106 In the table and in subsequent equations, first source, second source
107 and destination color components are referred to as
108 <inlineequation><mml:math>
109 <!-- eqn: ( R sub s0 , G sub s0 , B sub s0 , A sub s0 ): -->
110 <mml:mfenced open="(" close=")">
111 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
112 <mml:mi mathvariant="italic">s0</mml:mi>
113 </mml:msub>
114 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
115 <mml:mi mathvariant="italic">s0</mml:mi>
116 </mml:msub>
117 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
118 <mml:mi mathvariant="italic">s0</mml:mi>
119 </mml:msub>
120 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
121 <mml:mi mathvariant="italic">s0</mml:mi>
122 </mml:msub>
123 </mml:mfenced>
124 </mml:math></inlineequation>,
125 <inlineequation><mml:math>
126 <!-- eqn: ( R sub s1 , G sub s1 , B sub s1 , A sub s1 ): -->
127 <mml:mfenced open="(" close=")">
128 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
129 <mml:mi mathvariant="italic">s1</mml:mi>
130 </mml:msub>
131 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
132 <mml:mi mathvariant="italic">s1</mml:mi>
133 </mml:msub>
134 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
135 <mml:mi mathvariant="italic">s1</mml:mi>
136 </mml:msub>
137 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
138 <mml:mi mathvariant="italic">s1</mml:mi>
139 </mml:msub>
140 </mml:mfenced>
141 </mml:math></inlineequation>
142 and
143 <inlineequation><mml:math>
144 <!-- eqn: ( R sub d , G sub d , B sub d , A sub d ): -->
145 <mml:mfenced open="(" close=")">
146 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
147 <mml:mi mathvariant="italic">d</mml:mi>
148 </mml:msub>
149 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
150 <mml:mi mathvariant="italic">d</mml:mi>
151 </mml:msub>
152 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
153 <mml:mi mathvariant="italic">d</mml:mi>
154 </mml:msub>
155 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
156 <mml:mi mathvariant="italic">d</mml:mi>
157 </mml:msub>
158 </mml:mfenced>
159 </mml:math></inlineequation>, respectively.
160 The color specified by <citerefentry><refentrytitle>glBlendColor</refentrytitle></citerefentry> is referred to as
161 <inlineequation><mml:math>
162 <!-- eqn: ( R sub c , G sub c , B sub c , A sub c ): -->
163 <mml:mfenced open="(" close=")">
164 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
165 <mml:mi mathvariant="italic">c</mml:mi>
166 </mml:msub>
167 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
168 <mml:mi mathvariant="italic">c</mml:mi>
169 </mml:msub>
170 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
171 <mml:mi mathvariant="italic">c</mml:mi>
172 </mml:msub>
173 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
174 <mml:mi mathvariant="italic">c</mml:mi>
175 </mml:msub>
176 </mml:mfenced>
177 </mml:math></inlineequation>.
178 They are understood to have integer values between 0 and
179 <inlineequation><mml:math>
180 <!-- eqn: ( k sub R , k sub G , k sub B , k sub A ): -->
181 <mml:mfenced open="(" close=")">
182 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
183 <mml:mi mathvariant="italic">R</mml:mi>
184 </mml:msub>
185 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
186 <mml:mi mathvariant="italic">G</mml:mi>
187 </mml:msub>
188 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
189 <mml:mi mathvariant="italic">B</mml:mi>
190 </mml:msub>
191 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
192 <mml:mi mathvariant="italic">A</mml:mi>
193 </mml:msub>
194 </mml:mfenced>
195 </mml:math></inlineequation>,
196 where
197 </para>
198 <para>
199 <para>
200 <inlineequation><mml:math>
201 <!-- eqn: k sub c = 2 sup {m sub c} - 1: -->
202 <mml:mrow>
203 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
204 <mml:mi mathvariant="italic">c</mml:mi>
205 </mml:msub>
206 <mml:mo>=</mml:mo>
207 <mml:mrow>
208 <mml:msup><mml:mn>2</mml:mn>
209 <mml:mfenced open="" close="">
210 <mml:msub><mml:mi mathvariant="italic">m</mml:mi>
211 <mml:mi mathvariant="italic">c</mml:mi>
212 </mml:msub>
213 </mml:mfenced>
214 </mml:msup>
215 <mml:mo>-</mml:mo>
216 <mml:mn>1</mml:mn>
217 </mml:mrow>
218 </mml:mrow>
219 </mml:math></inlineequation>
220 </para>
221 </para>
222 <para>
223 and
224 <inlineequation><mml:math>
225 <!-- eqn: ( m sub R , m sub G , m sub B , m sub A ): -->
226 <mml:mfenced open="(" close=")">
227 <mml:msub><mml:mi mathvariant="italic">m</mml:mi>
228 <mml:mi mathvariant="italic">R</mml:mi>
229 </mml:msub>
230 <mml:msub><mml:mi mathvariant="italic">m</mml:mi>
231 <mml:mi mathvariant="italic">G</mml:mi>
232 </mml:msub>
233 <mml:msub><mml:mi mathvariant="italic">m</mml:mi>
234 <mml:mi mathvariant="italic">B</mml:mi>
235 </mml:msub>
236 <mml:msub><mml:mi mathvariant="italic">m</mml:mi>
237 <mml:mi mathvariant="italic">A</mml:mi>
238 </mml:msub>
239 </mml:mfenced>
240 </mml:math></inlineequation>
241 is the number of red,
242 green,
243 blue,
244 and alpha bitplanes.
245 </para>
246 <para>
247 Source and destination scale factors are referred to as
248 <inlineequation><mml:math>
249 <!-- eqn: ( s sub R , s sub G , s sub B , s sub A ): -->
250 <mml:mfenced open="(" close=")">
251 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
252 <mml:mi mathvariant="italic">R</mml:mi>
253 </mml:msub>
254 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
255 <mml:mi mathvariant="italic">G</mml:mi>
256 </mml:msub>
257 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
258 <mml:mi mathvariant="italic">B</mml:mi>
259 </mml:msub>
260 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
261 <mml:mi mathvariant="italic">A</mml:mi>
262 </mml:msub>
263 </mml:mfenced>
264 </mml:math></inlineequation>
265 and
266 <inlineequation><mml:math>
267 <!-- eqn: ( d sub R , d sub G , d sub B , d sub A ): -->
268 <mml:mfenced open="(" close=")">
269 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
270 <mml:mi mathvariant="italic">R</mml:mi>
271 </mml:msub>
272 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
273 <mml:mi mathvariant="italic">G</mml:mi>
274 </mml:msub>
275 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
276 <mml:mi mathvariant="italic">B</mml:mi>
277 </mml:msub>
278 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
279 <mml:mi mathvariant="italic">A</mml:mi>
280 </mml:msub>
281 </mml:mfenced>
282 </mml:math></inlineequation>.
283 The scale factors described in the table,
284 denoted
285 <inlineequation><mml:math>
286 <!-- eqn: ( f sub R , f sub G , f sub B , f sub A ): -->
287 <mml:mfenced open="(" close=")">
288 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
289 <mml:mi mathvariant="italic">R</mml:mi>
290 </mml:msub>
291 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
292 <mml:mi mathvariant="italic">G</mml:mi>
293 </mml:msub>
294 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
295 <mml:mi mathvariant="italic">B</mml:mi>
296 </mml:msub>
297 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
298 <mml:mi mathvariant="italic">A</mml:mi>
299 </mml:msub>
300 </mml:mfenced>
301 </mml:math></inlineequation>,
302 represent either source or destination factors.
303 All scale factors have range
304 <inlineequation><mml:math>
305 <!-- eqn: [0,1]: -->
306 <mml:mfenced open="[" close="]">
307 <mml:mn>0</mml:mn>
308 <mml:mn>1</mml:mn>
309 </mml:mfenced>
310 </mml:math></inlineequation>.
311 </para>
312 <para>
313 </para>
314 <informaltable frame="topbot">
315 <tgroup cols="2" align="left">
316 <colspec/>
317 <colspec/>
318 <thead>
319 <row>
320 <entry rowsep="1" align="left"><emphasis role="bold">
321 Parameter
322 </emphasis></entry>
323 <entry rowsep="1" align="left"><emphasis role="bold">
324 <inlineequation><mml:math>
325 <!-- eqn: ( f sub R , f sub G , f sub B , f sub A ): -->
326 <mml:mfenced open="(" close=")">
327 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
328 <mml:mi mathvariant="italic">R</mml:mi>
329 </mml:msub>
330 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
331 <mml:mi mathvariant="italic">G</mml:mi>
332 </mml:msub>
333 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
334 <mml:mi mathvariant="italic">B</mml:mi>
335 </mml:msub>
336 <mml:msub><mml:mi mathvariant="italic">f</mml:mi>
337 <mml:mi mathvariant="italic">A</mml:mi>
338 </mml:msub>
339 </mml:mfenced>
340 </mml:math></inlineequation>
341 </emphasis></entry>
342 </row>
343 </thead>
344 <tbody>
345 <row>
346 <entry align="left">
347 <constant>GL_ZERO</constant>
348 </entry>
349 <entry align="left">
350 <inlineequation><mml:math>
351 <!-- eqn: ( 0, 0, 0, 0 ): -->
352 <mml:mfenced open="(" close=")">
353 <mml:mn>0</mml:mn>
354 <mml:mn>0</mml:mn>
355 <mml:mn>0</mml:mn>
356 <mml:mn>0</mml:mn>
357 </mml:mfenced>
358 </mml:math></inlineequation>
359 </entry>
360 </row>
361 <row>
362 <entry align="left">
363 <constant>GL_ONE</constant>
364 </entry>
365 <entry align="left">
366 <inlineequation><mml:math>
367 <!-- eqn: ( 1, 1, 1, 1 ): -->
368 <mml:mfenced open="(" close=")">
369 <mml:mn>1</mml:mn>
370 <mml:mn>1</mml:mn>
371 <mml:mn>1</mml:mn>
372 <mml:mn>1</mml:mn>
373 </mml:mfenced>
374 </mml:math></inlineequation>
375 </entry>
376 </row>
377 <row>
378 <entry align="left">
379 <constant>GL_SRC_COLOR</constant>
380 </entry>
381 <entry align="left">
382 <inlineequation><mml:math>
383 <!-- eqn: ( R sub s0 / k sub R , G sub s0 / k sub G , B sub s0 / k sub B , A sub s0 / k sub A ): -->
384 <mml:mfenced open="(" close=")">
385 <mml:mfrac>
386 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
387 <mml:mi mathvariant="italic">s0</mml:mi>
388 </mml:msub>
389 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
390 <mml:mi mathvariant="italic">R</mml:mi>
391 </mml:msub>
392 </mml:mfrac>
393 <mml:mfrac>
394 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
395 <mml:mi mathvariant="italic">s0</mml:mi>
396 </mml:msub>
397 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
398 <mml:mi mathvariant="italic">G</mml:mi>
399 </mml:msub>
400 </mml:mfrac>
401 <mml:mfrac>
402 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
403 <mml:mi mathvariant="italic">s0</mml:mi>
404 </mml:msub>
405 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
406 <mml:mi mathvariant="italic">B</mml:mi>
407 </mml:msub>
408 </mml:mfrac>
409 <mml:mfrac>
410 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
411 <mml:mi mathvariant="italic">s0</mml:mi>
412 </mml:msub>
413 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
414 <mml:mi mathvariant="italic">A</mml:mi>
415 </mml:msub>
416 </mml:mfrac>
417 </mml:mfenced>
418 </mml:math></inlineequation>
419 </entry>
420 </row>
421 <row>
422 <entry align="left">
423 <constant>GL_ONE_MINUS_SRC_COLOR</constant>
424 </entry>
425 <entry align="left">
426 <inlineequation><mml:math>
427 <!-- eqn: ( 1, 1, 1, 1 ) - (R sub s0 / k sub R , G sub s0 / k sub G , B sub s0 / k sub B , A sub s0 / k sub A ): -->
428 <mml:mrow>
429 <mml:mfenced open="(" close=")">
430 <mml:mn>1</mml:mn>
431 <mml:mn>1</mml:mn>
432 <mml:mn>1</mml:mn>
433 <mml:mn>1</mml:mn>
434 </mml:mfenced>
435 <mml:mo>-</mml:mo>
436 <mml:mfenced open="(" close=")">
437 <mml:mfrac>
438 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
439 <mml:mi mathvariant="italic">s0</mml:mi>
440 </mml:msub>
441 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
442 <mml:mi mathvariant="italic">R</mml:mi>
443 </mml:msub>
444 </mml:mfrac>
445 <mml:mfrac>
446 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
447 <mml:mi mathvariant="italic">s0</mml:mi>
448 </mml:msub>
449 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
450 <mml:mi mathvariant="italic">G</mml:mi>
451 </mml:msub>
452 </mml:mfrac>
453 <mml:mfrac>
454 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
455 <mml:mi mathvariant="italic">s0</mml:mi>
456 </mml:msub>
457 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
458 <mml:mi mathvariant="italic">B</mml:mi>
459 </mml:msub>
460 </mml:mfrac>
461 <mml:mfrac>
462 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
463 <mml:mi mathvariant="italic">s0</mml:mi>
464 </mml:msub>
465 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
466 <mml:mi mathvariant="italic">A</mml:mi>
467 </mml:msub>
468 </mml:mfrac>
469 </mml:mfenced>
470 </mml:mrow>
471 </mml:math></inlineequation>
472 </entry>
473 </row>
474 <row>
475 <entry align="left">
476 <constant>GL_DST_COLOR</constant>
477 </entry>
478 <entry align="left">
479 <inlineequation><mml:math>
480 <!-- eqn: ( R sub d / k sub R , G sub d / k sub G , B sub d / k sub B , A sub d / k sub A ): -->
481 <mml:mfenced open="(" close=")">
482 <mml:mfrac>
483 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
484 <mml:mi mathvariant="italic">d</mml:mi>
485 </mml:msub>
486 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
487 <mml:mi mathvariant="italic">R</mml:mi>
488 </mml:msub>
489 </mml:mfrac>
490 <mml:mfrac>
491 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
492 <mml:mi mathvariant="italic">d</mml:mi>
493 </mml:msub>
494 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
495 <mml:mi mathvariant="italic">G</mml:mi>
496 </mml:msub>
497 </mml:mfrac>
498 <mml:mfrac>
499 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
500 <mml:mi mathvariant="italic">d</mml:mi>
501 </mml:msub>
502 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
503 <mml:mi mathvariant="italic">B</mml:mi>
504 </mml:msub>
505 </mml:mfrac>
506 <mml:mfrac>
507 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
508 <mml:mi mathvariant="italic">d</mml:mi>
509 </mml:msub>
510 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
511 <mml:mi mathvariant="italic">A</mml:mi>
512 </mml:msub>
513 </mml:mfrac>
514 </mml:mfenced>
515 </mml:math></inlineequation>
516 </entry>
517 </row>
518 <row>
519 <entry align="left">
520 <constant>GL_ONE_MINUS_DST_COLOR</constant>
521 </entry>
522 <entry align="left">
523 <inlineequation><mml:math>
524 <!-- eqn: ( 1, 1, 1, 1 ) - (R sub d / k sub R , G sub d / k sub G , B sub d / k sub B , A sub d / k sub A ): -->
525 <mml:mrow>
526 <mml:mfenced open="(" close=")">
527 <mml:mn>1</mml:mn>
528 <mml:mn>1</mml:mn>
529 <mml:mn>1</mml:mn>
530 <mml:mn>1</mml:mn>
531 </mml:mfenced>
532 <mml:mo>-</mml:mo>
533 <mml:mfenced open="(" close=")">
534 <mml:mfrac>
535 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
536 <mml:mi mathvariant="italic">d</mml:mi>
537 </mml:msub>
538 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
539 <mml:mi mathvariant="italic">R</mml:mi>
540 </mml:msub>
541 </mml:mfrac>
542 <mml:mfrac>
543 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
544 <mml:mi mathvariant="italic">d</mml:mi>
545 </mml:msub>
546 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
547 <mml:mi mathvariant="italic">G</mml:mi>
548 </mml:msub>
549 </mml:mfrac>
550 <mml:mfrac>
551 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
552 <mml:mi mathvariant="italic">d</mml:mi>
553 </mml:msub>
554 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
555 <mml:mi mathvariant="italic">B</mml:mi>
556 </mml:msub>
557 </mml:mfrac>
558 <mml:mfrac>
559 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
560 <mml:mi mathvariant="italic">d</mml:mi>
561 </mml:msub>
562 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
563 <mml:mi mathvariant="italic">A</mml:mi>
564 </mml:msub>
565 </mml:mfrac>
566 </mml:mfenced>
567 </mml:mrow>
568 </mml:math></inlineequation>
569 </entry>
570 </row>
571 <row>
572 <entry align="left">
573 <constant>GL_SRC_ALPHA</constant>
574 </entry>
575 <entry align="left">
576 <inlineequation><mml:math>
577 <!-- eqn: ( A sub s0 / k sub A , A sub s0 / k sub A , A sub s0 / k sub A , A sub s0 / k sub A ): -->
578 <mml:mfenced open="(" close=")">
579 <mml:mfrac>
580 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
581 <mml:mi mathvariant="italic">s0</mml:mi>
582 </mml:msub>
583 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
584 <mml:mi mathvariant="italic">A</mml:mi>
585 </mml:msub>
586 </mml:mfrac>
587 <mml:mfrac>
588 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
589 <mml:mi mathvariant="italic">s0</mml:mi>
590 </mml:msub>
591 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
592 <mml:mi mathvariant="italic">A</mml:mi>
593 </mml:msub>
594 </mml:mfrac>
595 <mml:mfrac>
596 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
597 <mml:mi mathvariant="italic">s0</mml:mi>
598 </mml:msub>
599 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
600 <mml:mi mathvariant="italic">A</mml:mi>
601 </mml:msub>
602 </mml:mfrac>
603 <mml:mfrac>
604 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
605 <mml:mi mathvariant="italic">s0</mml:mi>
606 </mml:msub>
607 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
608 <mml:mi mathvariant="italic">A</mml:mi>
609 </mml:msub>
610 </mml:mfrac>
611 </mml:mfenced>
612 </mml:math></inlineequation>
613 </entry>
614 </row>
615 <row>
616 <entry align="left">
617 <constant>GL_ONE_MINUS_SRC_ALPHA</constant>
618 </entry>
619 <entry align="left">
620 <inlineequation><mml:math>
621 <!-- eqn: ( 1, 1, 1, 1 ) - (A sub s0 / k sub A , A sub s0 / k sub A , A sub s0 / k sub A , A sub s0 / k sub A ): -->
622 <mml:mrow>
623 <mml:mfenced open="(" close=")">
624 <mml:mn>1</mml:mn>
625 <mml:mn>1</mml:mn>
626 <mml:mn>1</mml:mn>
627 <mml:mn>1</mml:mn>
628 </mml:mfenced>
629 <mml:mo>-</mml:mo>
630 <mml:mfenced open="(" close=")">
631 <mml:mfrac>
632 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
633 <mml:mi mathvariant="italic">s0</mml:mi>
634 </mml:msub>
635 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
636 <mml:mi mathvariant="italic">A</mml:mi>
637 </mml:msub>
638 </mml:mfrac>
639 <mml:mfrac>
640 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
641 <mml:mi mathvariant="italic">s0</mml:mi>
642 </mml:msub>
643 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
644 <mml:mi mathvariant="italic">A</mml:mi>
645 </mml:msub>
646 </mml:mfrac>
647 <mml:mfrac>
648 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
649 <mml:mi mathvariant="italic">s0</mml:mi>
650 </mml:msub>
651 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
652 <mml:mi mathvariant="italic">A</mml:mi>
653 </mml:msub>
654 </mml:mfrac>
655 <mml:mfrac>
656 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
657 <mml:mi mathvariant="italic">s0</mml:mi>
658 </mml:msub>
659 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
660 <mml:mi mathvariant="italic">A</mml:mi>
661 </mml:msub>
662 </mml:mfrac>
663 </mml:mfenced>
664 </mml:mrow>
665 </mml:math></inlineequation>
666 </entry>
667 </row>
668 <row>
669 <entry align="left">
670 <constant>GL_DST_ALPHA</constant>
671 </entry>
672 <entry align="left">
673 <inlineequation><mml:math>
674 <!-- eqn: ( A sub d / k sub A , A sub d / k sub A , A sub d / k sub A , A sub d / k sub A ): -->
675 <mml:mfenced open="(" close=")">
676 <mml:mfrac>
677 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
678 <mml:mi mathvariant="italic">d</mml:mi>
679 </mml:msub>
680 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
681 <mml:mi mathvariant="italic">A</mml:mi>
682 </mml:msub>
683 </mml:mfrac>
684 <mml:mfrac>
685 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
686 <mml:mi mathvariant="italic">d</mml:mi>
687 </mml:msub>
688 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
689 <mml:mi mathvariant="italic">A</mml:mi>
690 </mml:msub>
691 </mml:mfrac>
692 <mml:mfrac>
693 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
694 <mml:mi mathvariant="italic">d</mml:mi>
695 </mml:msub>
696 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
697 <mml:mi mathvariant="italic">A</mml:mi>
698 </mml:msub>
699 </mml:mfrac>
700 <mml:mfrac>
701 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
702 <mml:mi mathvariant="italic">d</mml:mi>
703 </mml:msub>
704 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
705 <mml:mi mathvariant="italic">A</mml:mi>
706 </mml:msub>
707 </mml:mfrac>
708 </mml:mfenced>
709 </mml:math></inlineequation>
710 </entry>
711 </row>
712 <row>
713 <entry align="left">
714 <constant>GL_ONE_MINUS_DST_ALPHA</constant>
715 </entry>
716 <entry align="left">
717 <inlineequation><mml:math>
718 <!-- eqn: ( 1, 1, 1, 1 ) - ( A sub d / k sub A , A sub d / k sub A , A sub d / k sub A , A sub d / k sub A ): -->
719 <mml:mrow>
720 <mml:mfenced open="(" close=")">
721 <mml:mn>1</mml:mn>
722 <mml:mn>1</mml:mn>
723 <mml:mn>1</mml:mn>
724 <mml:mn>1</mml:mn>
725 </mml:mfenced>
726 <mml:mo>-</mml:mo>
727 <mml:mfenced open="(" close=")">
728 <mml:mfrac>
729 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
730 <mml:mi mathvariant="italic">d</mml:mi>
731 </mml:msub>
732 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
733 <mml:mi mathvariant="italic">A</mml:mi>
734 </mml:msub>
735 </mml:mfrac>
736 <mml:mfrac>
737 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
738 <mml:mi mathvariant="italic">d</mml:mi>
739 </mml:msub>
740 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
741 <mml:mi mathvariant="italic">A</mml:mi>
742 </mml:msub>
743 </mml:mfrac>
744 <mml:mfrac>
745 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
746 <mml:mi mathvariant="italic">d</mml:mi>
747 </mml:msub>
748 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
749 <mml:mi mathvariant="italic">A</mml:mi>
750 </mml:msub>
751 </mml:mfrac>
752 <mml:mfrac>
753 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
754 <mml:mi mathvariant="italic">d</mml:mi>
755 </mml:msub>
756 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
757 <mml:mi mathvariant="italic">A</mml:mi>
758 </mml:msub>
759 </mml:mfrac>
760 </mml:mfenced>
761 </mml:mrow>
762 </mml:math></inlineequation>
763 </entry>
764 </row>
765 <row>
766 <entry align="left">
767 <constant>GL_CONSTANT_COLOR</constant>
768 </entry>
769 <entry align="left">
770 <inlineequation><mml:math>
771 <!-- eqn: ( R sub c, G sub c, B sub c, A sub c ): -->
772 <mml:mfenced open="(" close=")">
773 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
774 <mml:mi mathvariant="italic">c</mml:mi>
775 </mml:msub>
776 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
777 <mml:mi mathvariant="italic">c</mml:mi>
778 </mml:msub>
779 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
780 <mml:mi mathvariant="italic">c</mml:mi>
781 </mml:msub>
782 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
783 <mml:mi mathvariant="italic">c</mml:mi>
784 </mml:msub>
785 </mml:mfenced>
786 </mml:math></inlineequation>
787 </entry>
788 </row>
789 <row>
790 <entry align="left">
791 <constant>GL_ONE_MINUS_CONSTANT_COLOR</constant>
792 </entry>
793 <entry align="left">
794 <inlineequation><mml:math>
795 <!-- eqn: ( 1, 1, 1, 1 ) - ( R sub c, G sub c, B sub c, A sub c ): -->
796 <mml:mrow>
797 <mml:mfenced open="(" close=")">
798 <mml:mn>1</mml:mn>
799 <mml:mn>1</mml:mn>
800 <mml:mn>1</mml:mn>
801 <mml:mn>1</mml:mn>
802 </mml:mfenced>
803 <mml:mo>-</mml:mo>
804 <mml:mfenced open="(" close=")">
805 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
806 <mml:mi mathvariant="italic">c</mml:mi>
807 </mml:msub>
808 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
809 <mml:mi mathvariant="italic">c</mml:mi>
810 </mml:msub>
811 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
812 <mml:mi mathvariant="italic">c</mml:mi>
813 </mml:msub>
814 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
815 <mml:mi mathvariant="italic">c</mml:mi>
816 </mml:msub>
817 </mml:mfenced>
818 </mml:mrow>
819 </mml:math></inlineequation>
820 </entry>
821 </row>
822 <row>
823 <entry align="left">
824 <constant>GL_CONSTANT_ALPHA</constant>
825 </entry>
826 <entry align="left">
827 <inlineequation><mml:math>
828 <!-- eqn: ( A sub c, A sub c, A sub c, A sub c ): -->
829 <mml:mfenced open="(" close=")">
830 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
831 <mml:mi mathvariant="italic">c</mml:mi>
832 </mml:msub>
833 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
834 <mml:mi mathvariant="italic">c</mml:mi>
835 </mml:msub>
836 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
837 <mml:mi mathvariant="italic">c</mml:mi>
838 </mml:msub>
839 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
840 <mml:mi mathvariant="italic">c</mml:mi>
841 </mml:msub>
842 </mml:mfenced>
843 </mml:math></inlineequation>
844 </entry>
845 </row>
846 <row>
847 <entry align="left">
848 <constant>GL_ONE_MINUS_CONSTANT_ALPHA</constant>
849 </entry>
850 <entry align="left">
851 <inlineequation><mml:math>
852 <!-- eqn: ( 1, 1, 1, 1 ) - ( A sub c, A sub c, A sub c, A sub c ): -->
853 <mml:mrow>
854 <mml:mfenced open="(" close=")">
855 <mml:mn>1</mml:mn>
856 <mml:mn>1</mml:mn>
857 <mml:mn>1</mml:mn>
858 <mml:mn>1</mml:mn>
859 </mml:mfenced>
860 <mml:mo>-</mml:mo>
861 <mml:mfenced open="(" close=")">
862 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
863 <mml:mi mathvariant="italic">c</mml:mi>
864 </mml:msub>
865 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
866 <mml:mi mathvariant="italic">c</mml:mi>
867 </mml:msub>
868 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
869 <mml:mi mathvariant="italic">c</mml:mi>
870 </mml:msub>
871 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
872 <mml:mi mathvariant="italic">c</mml:mi>
873 </mml:msub>
874 </mml:mfenced>
875 </mml:mrow>
876 </mml:math></inlineequation>
877 </entry>
878 </row>
879 <row>
880 <entry align="left">
881 <constant>GL_SRC_ALPHA_SATURATE</constant>
882 </entry>
883 <entry align="left">
884 <inlineequation><mml:math>
885 <!-- eqn: ( i, i, i, 1 ): -->
886 <mml:mfenced open="(" close=")">
887 <mml:mi mathvariant="italic">i</mml:mi>
888 <mml:mi mathvariant="italic">i</mml:mi>
889 <mml:mi mathvariant="italic">i</mml:mi>
890 <mml:mn>1</mml:mn>
891 </mml:mfenced>
892 </mml:math></inlineequation>
893 </entry>
894 </row>
895 <row>
896 <entry align="left">
897 <constant>GL_SRC1_COLOR</constant>
898 </entry>
899 <entry align="left">
900 <inlineequation><mml:math>
901 <!-- eqn: ( R sub s1 / k sub R , G sub s1 / k sub G , B sub s1 / k sub B , A sub s1 / k sub A ): -->
902 <mml:mfenced open="(" close=")">
903 <mml:mfrac>
904 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
905 <mml:mi mathvariant="italic">s1</mml:mi>
906 </mml:msub>
907 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
908 <mml:mi mathvariant="italic">R</mml:mi>
909 </mml:msub>
910 </mml:mfrac>
911 <mml:mfrac>
912 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
913 <mml:mi mathvariant="italic">s1</mml:mi>
914 </mml:msub>
915 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
916 <mml:mi mathvariant="italic">G</mml:mi>
917 </mml:msub>
918 </mml:mfrac>
919 <mml:mfrac>
920 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
921 <mml:mi mathvariant="italic">s1</mml:mi>
922 </mml:msub>
923 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
924 <mml:mi mathvariant="italic">B</mml:mi>
925 </mml:msub>
926 </mml:mfrac>
927 <mml:mfrac>
928 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
929 <mml:mi mathvariant="italic">s1</mml:mi>
930 </mml:msub>
931 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
932 <mml:mi mathvariant="italic">A</mml:mi>
933 </mml:msub>
934 </mml:mfrac>
935 </mml:mfenced>
936 </mml:math></inlineequation>
937 </entry>
938 </row>
939 <row>
940 <entry align="left">
941 <constant>GL_ONE_MINUS_SRC1_COLOR</constant>
942 </entry>
943 <entry align="left">
944 <inlineequation><mml:math>
945 <!-- eqn: ( 1, 1, 1, 1 ) - (R sub s1 / k sub R , G sub s1 / k sub G , B sub s1 / k sub B , A sub s1 / k sub A ): -->
946 <mml:mrow>
947 <mml:mfenced open="(" close=")">
948 <mml:mn>1</mml:mn>
949 <mml:mn>1</mml:mn>
950 <mml:mn>1</mml:mn>
951 <mml:mn>1</mml:mn>
952 </mml:mfenced>
953 <mml:mo>-</mml:mo>
954 <mml:mfenced open="(" close=")">
955 <mml:mfrac>
956 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
957 <mml:mi mathvariant="italic">s1</mml:mi>
958 </mml:msub>
959 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
960 <mml:mi mathvariant="italic">R</mml:mi>
961 </mml:msub>
962 </mml:mfrac>
963 <mml:mfrac>
964 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
965 <mml:mi mathvariant="italic">s1</mml:mi>
966 </mml:msub>
967 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
968 <mml:mi mathvariant="italic">G</mml:mi>
969 </mml:msub>
970 </mml:mfrac>
971 <mml:mfrac>
972 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
973 <mml:mi mathvariant="italic">s1</mml:mi>
974 </mml:msub>
975 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
976 <mml:mi mathvariant="italic">B</mml:mi>
977 </mml:msub>
978 </mml:mfrac>
979 <mml:mfrac>
980 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
981 <mml:mi mathvariant="italic">s1</mml:mi>
982 </mml:msub>
983 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
984 <mml:mi mathvariant="italic">A</mml:mi>
985 </mml:msub>
986 </mml:mfrac>
987 </mml:mfenced>
988 </mml:mrow>
989 </mml:math></inlineequation>
990 </entry>
991 </row>
992 <row>
993 <entry align="left">
994 <constant>GL_SRC1_ALPHA</constant>
995 </entry>
996 <entry align="left">
997 <inlineequation><mml:math>
998 <!-- eqn: ( A sub s1 / k sub A , A sub s1 / k sub A , A sub s1 / k sub A , A sub s1 / k sub A ): -->
999 <mml:mfenced open="(" close=")">
1000 <mml:mfrac>
1001 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1002 <mml:mi mathvariant="italic">s1</mml:mi>
1003 </mml:msub>
1004 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1005 <mml:mi mathvariant="italic">A</mml:mi>
1006 </mml:msub>
1007 </mml:mfrac>
1008 <mml:mfrac>
1009 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1010 <mml:mi mathvariant="italic">s1</mml:mi>
1011 </mml:msub>
1012 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1013 <mml:mi mathvariant="italic">A</mml:mi>
1014 </mml:msub>
1015 </mml:mfrac>
1016 <mml:mfrac>
1017 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1018 <mml:mi mathvariant="italic">s1</mml:mi>
1019 </mml:msub>
1020 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1021 <mml:mi mathvariant="italic">A</mml:mi>
1022 </mml:msub>
1023 </mml:mfrac>
1024 <mml:mfrac>
1025 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1026 <mml:mi mathvariant="italic">s1</mml:mi>
1027 </mml:msub>
1028 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1029 <mml:mi mathvariant="italic">A</mml:mi>
1030 </mml:msub>
1031 </mml:mfrac>
1032 </mml:mfenced>
1033 </mml:math></inlineequation>
1034 </entry>
1035 </row>
1036 <row>
1037 <entry align="left">
1038 <constant>GL_ONE_MINUS_SRC1_ALPHA</constant>
1039 </entry>
1040 <entry align="left">
1041 <inlineequation><mml:math>
1042 <!-- eqn: ( 1, 1, 1, 1 ) - (A sub s1 / k sub A , A sub s1 / k sub A , A sub s1 / k sub A , A sub s1 / k sub A ): -->
1043 <mml:mrow>
1044 <mml:mfenced open="(" close=")">
1045 <mml:mn>1</mml:mn>
1046 <mml:mn>1</mml:mn>
1047 <mml:mn>1</mml:mn>
1048 <mml:mn>1</mml:mn>
1049 </mml:mfenced>
1050 <mml:mo>-</mml:mo>
1051 <mml:mfenced open="(" close=")">
1052 <mml:mfrac>
1053 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1054 <mml:mi mathvariant="italic">s1</mml:mi>
1055 </mml:msub>
1056 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1057 <mml:mi mathvariant="italic">A</mml:mi>
1058 </mml:msub>
1059 </mml:mfrac>
1060 <mml:mfrac>
1061 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1062 <mml:mi mathvariant="italic">s1</mml:mi>
1063 </mml:msub>
1064 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1065 <mml:mi mathvariant="italic">A</mml:mi>
1066 </mml:msub>
1067 </mml:mfrac>
1068 <mml:mfrac>
1069 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1070 <mml:mi mathvariant="italic">s1</mml:mi>
1071 </mml:msub>
1072 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1073 <mml:mi mathvariant="italic">A</mml:mi>
1074 </mml:msub>
1075 </mml:mfrac>
1076 <mml:mfrac>
1077 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1078 <mml:mi mathvariant="italic">s1</mml:mi>
1079 </mml:msub>
1080 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1081 <mml:mi mathvariant="italic">A</mml:mi>
1082 </mml:msub>
1083 </mml:mfrac>
1084 </mml:mfenced>
1085 </mml:mrow>
1086 </mml:math></inlineequation>
1087 </entry>
1088 </row>
1089 </tbody>
1090 </tgroup>
1091 </informaltable>
1092 <para>
1093 In the table,
1094 </para>
1095 <para>
1096 <para>
1097 <inlineequation><mml:math>
1098 <!-- eqn: i = min (A sub s , k sub A - A sub d ) / k sub A: -->
1099 <mml:mrow>
1100 <mml:mi mathvariant="italic">i</mml:mi>
1101 <mml:mo>=</mml:mo>
1102 <mml:mfrac>
1103 <mml:mrow>
1104 <mml:mi mathvariant="italic">min</mml:mi>
1105 <mml:mo>&af;</mml:mo>
1106 <mml:mfenced open="(" close=")">
1107 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1108 <mml:mi mathvariant="italic">s</mml:mi>
1109 </mml:msub>
1110 <mml:mrow>
1111 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1112 <mml:mi mathvariant="italic">A</mml:mi>
1113 </mml:msub>
1114 <mml:mo>-</mml:mo>
1115 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1116 <mml:mi mathvariant="italic">d</mml:mi>
1117 </mml:msub>
1118 </mml:mrow>
1119 </mml:mfenced>
1120 </mml:mrow>
1121 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1122 <mml:mi mathvariant="italic">A</mml:mi>
1123 </mml:msub>
1124 </mml:mfrac>
1125 </mml:mrow>
1126 </mml:math></inlineequation>
1127 </para>
1128 </para>
1129 <para>
1130 To determine the blended RGBA values of a pixel,
1131 the system uses the following equations:
1132 </para>
1133 <para>
1134 <para>
1135 <inlineequation><mml:math>
1136 <!-- eqn: R sub d = min ( k sub R, R sub s s sub R + R sub d d sub R ): -->
1137 <mml:mrow>
1138 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
1139 <mml:mi mathvariant="italic">d</mml:mi>
1140 </mml:msub>
1141 <mml:mo>=</mml:mo>
1142 <mml:mrow>
1143 <mml:mi mathvariant="italic">min</mml:mi>
1144 <mml:mo>&af;</mml:mo>
1145 <mml:mfenced open="(" close=")">
1146 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1147 <mml:mi mathvariant="italic">R</mml:mi>
1148 </mml:msub>
1149 <mml:mrow>
1150 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
1151 <mml:mi mathvariant="italic">s</mml:mi>
1152 </mml:msub>
1153 <mml:mo>&it;</mml:mo>
1154 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
1155 <mml:mi mathvariant="italic">R</mml:mi>
1156 </mml:msub>
1157 <mml:mo>+</mml:mo>
1158 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
1159 <mml:mi mathvariant="italic">d</mml:mi>
1160 </mml:msub>
1161 <mml:mo>&it;</mml:mo>
1162 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
1163 <mml:mi mathvariant="italic">R</mml:mi>
1164 </mml:msub>
1165 </mml:mrow>
1166 </mml:mfenced>
1167 </mml:mrow>
1168 </mml:mrow>
1169 </mml:math></inlineequation>
1170 <inlineequation><mml:math>
1171 <!-- eqn: G sub d = min ( k sub G, G sub s s sub G + G sub d d sub G ): -->
1172 <mml:mrow>
1173 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
1174 <mml:mi mathvariant="italic">d</mml:mi>
1175 </mml:msub>
1176 <mml:mo>=</mml:mo>
1177 <mml:mrow>
1178 <mml:mi mathvariant="italic">min</mml:mi>
1179 <mml:mo>&af;</mml:mo>
1180 <mml:mfenced open="(" close=")">
1181 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1182 <mml:mi mathvariant="italic">G</mml:mi>
1183 </mml:msub>
1184 <mml:mrow>
1185 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
1186 <mml:mi mathvariant="italic">s</mml:mi>
1187 </mml:msub>
1188 <mml:mo>&it;</mml:mo>
1189 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
1190 <mml:mi mathvariant="italic">G</mml:mi>
1191 </mml:msub>
1192 <mml:mo>+</mml:mo>
1193 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
1194 <mml:mi mathvariant="italic">d</mml:mi>
1195 </mml:msub>
1196 <mml:mo>&it;</mml:mo>
1197 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
1198 <mml:mi mathvariant="italic">G</mml:mi>
1199 </mml:msub>
1200 </mml:mrow>
1201 </mml:mfenced>
1202 </mml:mrow>
1203 </mml:mrow>
1204 </mml:math></inlineequation>
1205 <inlineequation><mml:math>
1206 <!-- eqn: B sub d = min ( k sub B, B sub s s sub B + B sub d d sub B ): -->
1207 <mml:mrow>
1208 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
1209 <mml:mi mathvariant="italic">d</mml:mi>
1210 </mml:msub>
1211 <mml:mo>=</mml:mo>
1212 <mml:mrow>
1213 <mml:mi mathvariant="italic">min</mml:mi>
1214 <mml:mo>&af;</mml:mo>
1215 <mml:mfenced open="(" close=")">
1216 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1217 <mml:mi mathvariant="italic">B</mml:mi>
1218 </mml:msub>
1219 <mml:mrow>
1220 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
1221 <mml:mi mathvariant="italic">s</mml:mi>
1222 </mml:msub>
1223 <mml:mo>&it;</mml:mo>
1224 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
1225 <mml:mi mathvariant="italic">B</mml:mi>
1226 </mml:msub>
1227 <mml:mo>+</mml:mo>
1228 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
1229 <mml:mi mathvariant="italic">d</mml:mi>
1230 </mml:msub>
1231 <mml:mo>&it;</mml:mo>
1232 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
1233 <mml:mi mathvariant="italic">B</mml:mi>
1234 </mml:msub>
1235 </mml:mrow>
1236 </mml:mfenced>
1237 </mml:mrow>
1238 </mml:mrow>
1239 </mml:math></inlineequation>
1240 <inlineequation><mml:math>
1241 <!-- eqn: A sub d = min ( k sub A, A sub s s sub A + A sub d d sub A ): -->
1242 <mml:mrow>
1243 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1244 <mml:mi mathvariant="italic">d</mml:mi>
1245 </mml:msub>
1246 <mml:mo>=</mml:mo>
1247 <mml:mrow>
1248 <mml:mi mathvariant="italic">min</mml:mi>
1249 <mml:mo>&af;</mml:mo>
1250 <mml:mfenced open="(" close=")">
1251 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1252 <mml:mi mathvariant="italic">A</mml:mi>
1253 </mml:msub>
1254 <mml:mrow>
1255 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1256 <mml:mi mathvariant="italic">s</mml:mi>
1257 </mml:msub>
1258 <mml:mo>&it;</mml:mo>
1259 <mml:msub><mml:mi mathvariant="italic">s</mml:mi>
1260 <mml:mi mathvariant="italic">A</mml:mi>
1261 </mml:msub>
1262 <mml:mo>+</mml:mo>
1263 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1264 <mml:mi mathvariant="italic">d</mml:mi>
1265 </mml:msub>
1266 <mml:mo>&it;</mml:mo>
1267 <mml:msub><mml:mi mathvariant="italic">d</mml:mi>
1268 <mml:mi mathvariant="italic">A</mml:mi>
1269 </mml:msub>
1270 </mml:mrow>
1271 </mml:mfenced>
1272 </mml:mrow>
1273 </mml:mrow>
1274 </mml:math></inlineequation>
1275 </para>
1276 </para>
1277 <para>
1278 Despite the apparent precision of the above equations,
1279 blending arithmetic is not exactly specified,
1280 because blending operates with imprecise integer color values.
1281 However,
1282 a blend factor that should be equal to 1
1283 is guaranteed not to modify its multiplicand,
1284 and a blend factor equal to 0 reduces its multiplicand to 0.
1285 For example,
1286 when <parameter>sfactor</parameter> is <constant>GL_SRC_ALPHA</constant>,
1287 <parameter>dfactor</parameter> is <constant>GL_ONE_MINUS_SRC_ALPHA</constant>,
1288 and
1289 <inlineequation><mml:math>
1290 <!-- eqn: A sub s: -->
1291 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1292 <mml:mi mathvariant="italic">s</mml:mi>
1293 </mml:msub>
1294 </mml:math></inlineequation>
1295 is equal to
1296 <inlineequation><mml:math>
1297 <!-- eqn: k sub A: -->
1298 <mml:msub><mml:mi mathvariant="italic">k</mml:mi>
1299 <mml:mi mathvariant="italic">A</mml:mi>
1300 </mml:msub>
1301 </mml:math></inlineequation>,
1302 the equations reduce to simple replacement:
1303 </para>
1304 <para>
1305 <para>
1306 <inlineequation><mml:math>
1307 <!-- eqn: R sub d = R sub s: -->
1308 <mml:mrow>
1309 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
1310 <mml:mi mathvariant="italic">d</mml:mi>
1311 </mml:msub>
1312 <mml:mo>=</mml:mo>
1313 <mml:msub><mml:mi mathvariant="italic">R</mml:mi>
1314 <mml:mi mathvariant="italic">s</mml:mi>
1315 </mml:msub>
1316 </mml:mrow>
1317 </mml:math></inlineequation>
1318 <inlineequation><mml:math>
1319 <!-- eqn: G sub d = G sub s: -->
1320 <mml:mrow>
1321 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
1322 <mml:mi mathvariant="italic">d</mml:mi>
1323 </mml:msub>
1324 <mml:mo>=</mml:mo>
1325 <mml:msub><mml:mi mathvariant="italic">G</mml:mi>
1326 <mml:mi mathvariant="italic">s</mml:mi>
1327 </mml:msub>
1328 </mml:mrow>
1329 </mml:math></inlineequation>
1330 <inlineequation><mml:math>
1331 <!-- eqn: B sub d = B sub s: -->
1332 <mml:mrow>
1333 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
1334 <mml:mi mathvariant="italic">d</mml:mi>
1335 </mml:msub>
1336 <mml:mo>=</mml:mo>
1337 <mml:msub><mml:mi mathvariant="italic">B</mml:mi>
1338 <mml:mi mathvariant="italic">s</mml:mi>
1339 </mml:msub>
1340 </mml:mrow>
1341 </mml:math></inlineequation>
1342 <inlineequation><mml:math>
1343 <!-- eqn: A sub d = A sub s: -->
1344 <mml:mrow>
1345 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1346 <mml:mi mathvariant="italic">d</mml:mi>
1347 </mml:msub>
1348 <mml:mo>=</mml:mo>
1349 <mml:msub><mml:mi mathvariant="italic">A</mml:mi>
1350 <mml:mi mathvariant="italic">s</mml:mi>
1351 </mml:msub>
1352 </mml:mrow>
1353 </mml:math></inlineequation>
1354 </para>
1355 </para>
1356 <para>
1357 </para>
1358 </refsect1>
1359 <refsect1 id="examples"><title>Examples</title>
1360 <para>
1361 </para>
1362 <para>
1363 Transparency is best implemented using blend function
1364 (<constant>GL_SRC_ALPHA</constant>, <constant>GL_ONE_MINUS_SRC_ALPHA</constant>)
1365 with primitives sorted from farthest to nearest.
1366 Note that this transparency calculation does not require
1367 the presence of alpha bitplanes in the frame buffer.
1368 </para>
1369 <para>
1370 Blend function
1371 (<constant>GL_SRC_ALPHA</constant>, <constant>GL_ONE_MINUS_SRC_ALPHA</constant>)
1372 is also useful for rendering antialiased points and lines
1373 in arbitrary order.
1374 </para>
1375 <para>
1376 Polygon antialiasing is optimized using blend function
1377 (<constant>GL_SRC_ALPHA_SATURATE</constant>, <constant>GL_ONE</constant>)
1378 with polygons sorted from nearest to farthest.
1379 (See the <citerefentry><refentrytitle>glEnable</refentrytitle></citerefentry>, <citerefentry><refentrytitle>glDisable</refentrytitle></citerefentry> reference page and the
1380 <constant>GL_POLYGON_SMOOTH</constant> argument for information on polygon antialiasing.)
1381 Destination alpha bitplanes,
1382 which must be present for this blend function to operate correctly,
1383 store the accumulated coverage.
1384 </para>
1385 </refsect1>
1386 <refsect1 id="notes"><title>Notes</title>
1387 <para>
1388 Incoming (source) alpha is correctly thought of as a material opacity,
1389 ranging from 1.0
1390 (<inlineequation><mml:math>
1391 <!-- eqn: K sub A: -->
1392 <mml:msub><mml:mi mathvariant="italic">K</mml:mi>
1393 <mml:mi mathvariant="italic">A</mml:mi>
1394 </mml:msub>
1395 </mml:math></inlineequation>),
1396 representing complete opacity,
1397 to 0.0 (0), representing complete
1398 transparency.
1399 </para>
1400 <para>
1401 When more than one color buffer is enabled for drawing,
1402 the GL performs blending separately for each enabled buffer,
1403 using the contents of that buffer for destination color.
1404 (See <citerefentry><refentrytitle>glDrawBuffer</refentrytitle></citerefentry>.)
1405 </para>
1406 <para>
1407 When dual source blending is enabled (i.e., one of the blend factors requiring
1408 the second color input is used), the maximum number of enabled draw buffers
1409 is given by <constant>GL_MAX_DUAL_SOURCE_DRAW_BUFFERS</constant>, which may
1410 be lower than <constant>GL_MAX_DRAW_BUFFERS</constant>.
1411 </para>
1412 </refsect1>
1413 <refsect1 id="errors"><title>Errors</title>
1414 <para>
1415 <constant>GL_INVALID_ENUM</constant> is generated if either <parameter>sfactor</parameter>
1416 or <parameter>dfactor</parameter> is not an accepted value.
1417 </para>
1418 </refsect1>
1419 <refsect1 id="associatedgets"><title>Associated Gets</title>
1420 <para>
1421 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_BLEND_SRC</constant>
1422 </para>
1423 <para>
1424 <citerefentry><refentrytitle>glGet</refentrytitle></citerefentry> with argument <constant>GL_BLEND_DST</constant>
1425 </para>
1426 <para>
1427 <citerefentry><refentrytitle>glIsEnabled</refentrytitle></citerefentry> with argument <constant>GL_BLEND</constant>
1428 </para>
1429 <para>
1430 </para>
1431 </refsect1>
1432 <refsect1 id="seealso"><title>See Also</title>
1433 <para>
1434 <citerefentry><refentrytitle>glBlendColor</refentrytitle></citerefentry>,
1435 <citerefentry><refentrytitle>glBlendEquation</refentrytitle></citerefentry>,
1436 <citerefentry><refentrytitle>glBlendFuncSeparate</refentrytitle></citerefentry>,
1437 <citerefentry><refentrytitle>glClear</refentrytitle></citerefentry>,
1438 <citerefentry><refentrytitle>glDrawBuffer</refentrytitle></citerefentry>,
1439 <citerefentry><refentrytitle>glEnable</refentrytitle></citerefentry>,
1440 <citerefentry><refentrytitle>glLogicOp</refentrytitle></citerefentry>,
1441 <citerefentry><refentrytitle>glStencilFunc</refentrytitle></citerefentry>
1442 </para>
1443 </refsect1>
1444 <refsect1 id="Copyright"><title>Copyright</title>
1445 <para>
1446 Copyright <trademark class="copyright"></trademark> 1991-2006
1447 Silicon Graphics, Inc. This document is licensed under the SGI
1448 Free Software B License. For details, see
1449 <ulink url="http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/</ulink>.
1450 </para>
1451 </refsect1>
1452</refentry>