Qt 4.8
qglengineshadersource_p.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtOpenGL module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 //
43 // W A R N I N G
44 // -------------
45 //
46 // This file is not part of the Qt API. It exists purely as an
47 // implementation detail. This header file may change from version to
48 // version without notice, or even be removed.
49 //
50 // We mean it.
51 //
52 
53 
54 #ifndef QGL_ENGINE_SHADER_SOURCE_H
55 #define QGL_ENGINE_SHADER_SOURCE_H
56 
58 
60 
62 
64 
65 
66 static const char* const qglslMainVertexShader = "\n\
67  void setPosition(); \n\
68  void main(void) \n\
69  { \n\
70  setPosition(); \n\
71  }\n";
72 
73 static const char* const qglslMainWithTexCoordsVertexShader = "\n\
74  attribute highp vec2 textureCoordArray; \n\
75  varying highp vec2 textureCoords; \n\
76  void setPosition(); \n\
77  void main(void) \n\
78  { \n\
79  setPosition(); \n\
80  textureCoords = textureCoordArray; \n\
81  }\n";
82 
83 static const char* const qglslMainWithTexCoordsAndOpacityVertexShader = "\n\
84  attribute highp vec2 textureCoordArray; \n\
85  attribute lowp float opacityArray; \n\
86  varying highp vec2 textureCoords; \n\
87  varying lowp float opacity; \n\
88  void setPosition(); \n\
89  void main(void) \n\
90  { \n\
91  setPosition(); \n\
92  textureCoords = textureCoordArray; \n\
93  opacity = opacityArray; \n\
94  }\n";
95 
96 // NOTE: We let GL do the perspective correction so texture lookups in the fragment
97 // shader are also perspective corrected.
98 static const char* const qglslPositionOnlyVertexShader = "\n\
99  attribute highp vec2 vertexCoordsArray; \n\
100  attribute highp vec3 pmvMatrix1; \n\
101  attribute highp vec3 pmvMatrix2; \n\
102  attribute highp vec3 pmvMatrix3; \n\
103  void setPosition(void) \n\
104  { \n\
105  highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
106  vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
107  gl_Position = vec4(transformedPos.xy, 0.0, transformedPos.z); \n\
108  }\n";
109 
110 static const char* const qglslComplexGeometryPositionOnlyVertexShader = "\n\
111  uniform highp mat3 matrix; \n\
112  attribute highp vec2 vertexCoordsArray; \n\
113  void setPosition(void) \n\
114  { \n\
115  gl_Position = vec4(matrix * vec3(vertexCoordsArray, 1), 1);\n\
116  } \n";
117 
118 static const char* const qglslUntransformedPositionVertexShader = "\n\
119  attribute highp vec4 vertexCoordsArray; \n\
120  void setPosition(void) \n\
121  { \n\
122  gl_Position = vertexCoordsArray; \n\
123  }\n";
124 
125 // Pattern Brush - This assumes the texture size is 8x8 and thus, the inverted size is 0.125
126 static const char* const qglslPositionWithPatternBrushVertexShader = "\n\
127  attribute highp vec2 vertexCoordsArray; \n\
128  attribute highp vec3 pmvMatrix1; \n\
129  attribute highp vec3 pmvMatrix2; \n\
130  attribute highp vec3 pmvMatrix3; \n\
131  uniform mediump vec2 halfViewportSize; \n\
132  uniform highp vec2 invertedTextureSize; \n\
133  uniform highp mat3 brushTransform; \n\
134  varying highp vec2 patternTexCoords; \n\
135  void setPosition(void) \n\
136  { \n\
137  highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
138  vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
139  gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
140  mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
141  mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1.0); \n\
142  mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
143  gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
144  patternTexCoords.xy = (hTexCoords.xy * 0.125) * invertedHTexCoordsZ; \n\
145  }\n";
146 
147 static const char* const qglslAffinePositionWithPatternBrushVertexShader
148  = qglslPositionWithPatternBrushVertexShader;
149 
150 static const char* const qglslPatternBrushSrcFragmentShader = "\n\
151  uniform sampler2D brushTexture; \n\
152  uniform lowp vec4 patternColor; \n\
153  varying highp vec2 patternTexCoords;\n\
154  lowp vec4 srcPixel() \n\
155  { \n\
156  return patternColor * (1.0 - texture2D(brushTexture, patternTexCoords).r); \n\
157  }\n";
158 
159 
160 // Linear Gradient Brush
161 static const char* const qglslPositionWithLinearGradientBrushVertexShader = "\n\
162  attribute highp vec2 vertexCoordsArray; \n\
163  attribute highp vec3 pmvMatrix1; \n\
164  attribute highp vec3 pmvMatrix2; \n\
165  attribute highp vec3 pmvMatrix3; \n\
166  uniform mediump vec2 halfViewportSize; \n\
167  uniform highp vec3 linearData; \n\
168  uniform highp mat3 brushTransform; \n\
169  varying mediump float index; \n\
170  void setPosition() \n\
171  { \n\
172  highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
173  vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
174  gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
175  mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
176  mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
177  mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
178  gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
179  index = (dot(linearData.xy, hTexCoords.xy) * linearData.z) * invertedHTexCoordsZ; \n\
180  }\n";
181 
182 static const char* const qglslAffinePositionWithLinearGradientBrushVertexShader
183  = qglslPositionWithLinearGradientBrushVertexShader;
184 
185 static const char* const qglslLinearGradientBrushSrcFragmentShader = "\n\
186  uniform sampler2D brushTexture; \n\
187  varying mediump float index; \n\
188  lowp vec4 srcPixel() \n\
189  { \n\
190  mediump vec2 val = vec2(index, 0.5); \n\
191  return texture2D(brushTexture, val); \n\
192  }\n";
193 
194 
195 // Conical Gradient Brush
196 static const char* const qglslPositionWithConicalGradientBrushVertexShader = "\n\
197  attribute highp vec2 vertexCoordsArray; \n\
198  attribute highp vec3 pmvMatrix1; \n\
199  attribute highp vec3 pmvMatrix2; \n\
200  attribute highp vec3 pmvMatrix3; \n\
201  uniform mediump vec2 halfViewportSize; \n\
202  uniform highp mat3 brushTransform; \n\
203  varying highp vec2 A; \n\
204  void setPosition(void) \n\
205  { \n\
206  highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
207  vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
208  gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
209  mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
210  mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
211  mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
212  gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
213  A = hTexCoords.xy * invertedHTexCoordsZ; \n\
214  }\n";
215 
216 static const char* const qglslAffinePositionWithConicalGradientBrushVertexShader
217  = qglslPositionWithConicalGradientBrushVertexShader;
218 
219 static const char* const qglslConicalGradientBrushSrcFragmentShader = "\n\
220  #define INVERSE_2PI 0.1591549430918953358 \n\
221  uniform sampler2D brushTexture; \n\
222  uniform mediump float angle; \n\
223  varying highp vec2 A; \n\
224  lowp vec4 srcPixel() \n\
225  { \n\
226  highp float t; \n\
227  if (abs(A.y) == abs(A.x)) \n\
228  t = (atan(-A.y + 0.002, A.x) + angle) * INVERSE_2PI; \n\
229  else \n\
230  t = (atan(-A.y, A.x) + angle) * INVERSE_2PI; \n\
231  return texture2D(brushTexture, vec2(t - floor(t), 0.5)); \n\
232  }\n";
233 
234 
235 // Radial Gradient Brush
237  attribute highp vec2 vertexCoordsArray;\n\
238  attribute highp vec3 pmvMatrix1; \n\
239  attribute highp vec3 pmvMatrix2; \n\
240  attribute highp vec3 pmvMatrix3; \n\
241  uniform mediump vec2 halfViewportSize; \n\
242  uniform highp mat3 brushTransform; \n\
243  uniform highp vec2 fmp; \n\
244  uniform highp vec3 bradius; \n\
245  varying highp float b; \n\
246  varying highp vec2 A; \n\
247  void setPosition(void) \n\
248  {\n\
249  highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
250  vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
251  gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
252  mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
253  mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
254  mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
255  gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
256  A = hTexCoords.xy * invertedHTexCoordsZ; \n\
257  b = bradius.x + 2.0 * dot(A, fmp); \n\
258  }\n";
259 
262 
263 static const char* const qglslRadialGradientBrushSrcFragmentShader = "\n\
264  uniform sampler2D brushTexture; \n\
265  uniform highp float fmp2_m_radius2; \n\
266  uniform highp float inverse_2_fmp2_m_radius2; \n\
267  uniform highp float sqrfr; \n\
268  varying highp float b; \n\
269  varying highp vec2 A; \n\
270  uniform highp vec3 bradius; \n\
271  lowp vec4 srcPixel() \n\
272  { \n\
273  highp float c = sqrfr-dot(A, A); \n\
274  highp float det = b*b - 4.0*fmp2_m_radius2*c; \n\
275  lowp vec4 result = vec4(0.0); \n\
276  if (det >= 0.0) { \n\
277  highp float detSqrt = sqrt(det); \n\
278  highp float w = max((-b - detSqrt) * inverse_2_fmp2_m_radius2, (-b + detSqrt) * inverse_2_fmp2_m_radius2); \n\
279  if (bradius.y + w * bradius.z >= 0.0) \n\
280  result = texture2D(brushTexture, vec2(w, 0.5)); \n\
281  } \n\
282  return result; \n\
283  }\n";
284 
285 
286 // Texture Brush
287 static const char* const qglslPositionWithTextureBrushVertexShader = "\n\
288  attribute highp vec2 vertexCoordsArray; \n\
289  attribute highp vec3 pmvMatrix1; \n\
290  attribute highp vec3 pmvMatrix2; \n\
291  attribute highp vec3 pmvMatrix3; \n\
292  uniform mediump vec2 halfViewportSize; \n\
293  uniform highp vec2 invertedTextureSize; \n\
294  uniform highp mat3 brushTransform; \n\
295  varying highp vec2 brushTextureCoords; \n\
296  void setPosition(void) \n\
297  { \n\
298  highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
299  vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
300  gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
301  mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
302  mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
303  mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
304  gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
305  brushTextureCoords.xy = (hTexCoords.xy * invertedTextureSize) * gl_Position.w; \n\
306  }\n";
307 
310 
311 #if defined(QT_OPENGL_ES_2)
312 // OpenGL ES does not support GL_REPEAT wrap modes for NPOT textures. So instead,
313 // we emulate GL_REPEAT by only taking the fractional part of the texture coords.
314 // TODO: Special case POT textures which don't need this emulation
315 static const char* const qglslTextureBrushSrcFragmentShader = "\n\
316  varying highp vec2 brushTextureCoords; \n\
317  uniform sampler2D brushTexture; \n\
318  lowp vec4 srcPixel() { \n\
319  return texture2D(brushTexture, fract(brushTextureCoords)); \n\
320  }\n";
321 #else
322 static const char* const qglslTextureBrushSrcFragmentShader = "\n\
323  varying highp vec2 brushTextureCoords; \n\
324  uniform sampler2D brushTexture; \n\
325  lowp vec4 srcPixel() \n\
326  { \n\
327  return texture2D(brushTexture, brushTextureCoords); \n\
328  }\n";
329 #endif
330 
331 static const char* const qglslTextureBrushSrcWithPatternFragmentShader = "\n\
332  varying highp vec2 brushTextureCoords; \n\
333  uniform lowp vec4 patternColor; \n\
334  uniform sampler2D brushTexture; \n\
335  lowp vec4 srcPixel() \n\
336  { \n\
337  return patternColor * (1.0 - texture2D(brushTexture, brushTextureCoords).r); \n\
338  }\n";
339 
340 // Solid Fill Brush
341 static const char* const qglslSolidBrushSrcFragmentShader = "\n\
342  uniform lowp vec4 fragmentColor; \n\
343  lowp vec4 srcPixel() \n\
344  { \n\
345  return fragmentColor; \n\
346  }\n";
347 
348 static const char* const qglslImageSrcFragmentShader = "\n\
349  varying highp vec2 textureCoords; \n\
350  uniform sampler2D imageTexture; \n\
351  lowp vec4 srcPixel() \n\
352  { \n"
353  "return texture2D(imageTexture, textureCoords); \n"
354  "}\n";
355 
356 static const char* const qglslCustomSrcFragmentShader = "\n\
357  varying highp vec2 textureCoords; \n\
358  uniform sampler2D imageTexture; \n\
359  lowp vec4 srcPixel() \n\
360  { \n\
361  return customShader(imageTexture, textureCoords); \n\
362  }\n";
363 
364 static const char* const qglslImageSrcWithPatternFragmentShader = "\n\
365  varying highp vec2 textureCoords; \n\
366  uniform lowp vec4 patternColor; \n\
367  uniform sampler2D imageTexture; \n\
368  lowp vec4 srcPixel() \n\
369  { \n\
370  return patternColor * (1.0 - texture2D(imageTexture, textureCoords).r); \n\
371  }\n";
372 
373 static const char* const qglslNonPremultipliedImageSrcFragmentShader = "\n\
374  varying highp vec2 textureCoords; \n\
375  uniform sampler2D imageTexture; \n\
376  lowp vec4 srcPixel() \n\
377  { \n\
378  lowp vec4 sample = texture2D(imageTexture, textureCoords); \n\
379  sample.rgb = sample.rgb * sample.a; \n\
380  return sample; \n\
381  }\n";
382 
383 static const char* const qglslShockingPinkSrcFragmentShader = "\n\
384  lowp vec4 srcPixel() \n\
385  { \n\
386  return vec4(0.98, 0.06, 0.75, 1.0); \n\
387  }\n";
388 
389 static const char* const qglslMainFragmentShader_ImageArrays = "\n\
390  varying lowp float opacity; \n\
391  lowp vec4 srcPixel(); \n\
392  void main() \n\
393  { \n\
394  gl_FragColor = srcPixel() * opacity; \n\
395  }\n";
396 
397 static const char* const qglslMainFragmentShader_CMO = "\n\
398  uniform lowp float globalOpacity; \n\
399  lowp vec4 srcPixel(); \n\
400  lowp vec4 applyMask(lowp vec4); \n\
401  lowp vec4 compose(lowp vec4); \n\
402  void main() \n\
403  { \n\
404  gl_FragColor = applyMask(compose(srcPixel()*globalOpacity))); \n\
405  }\n";
406 
407 static const char* const qglslMainFragmentShader_CM = "\n\
408  lowp vec4 srcPixel(); \n\
409  lowp vec4 applyMask(lowp vec4); \n\
410  lowp vec4 compose(lowp vec4); \n\
411  void main() \n\
412  { \n\
413  gl_FragColor = applyMask(compose(srcPixel())); \n\
414  }\n";
415 
416 static const char* const qglslMainFragmentShader_MO = "\n\
417  uniform lowp float globalOpacity; \n\
418  lowp vec4 srcPixel(); \n\
419  lowp vec4 applyMask(lowp vec4); \n\
420  void main() \n\
421  { \n\
422  gl_FragColor = applyMask(srcPixel()*globalOpacity); \n\
423  }\n";
424 
425 static const char* const qglslMainFragmentShader_M = "\n\
426  lowp vec4 srcPixel(); \n\
427  lowp vec4 applyMask(lowp vec4); \n\
428  void main() \n\
429  { \n\
430  gl_FragColor = applyMask(srcPixel()); \n\
431  }\n";
432 
433 static const char* const qglslMainFragmentShader_CO = "\n\
434  uniform lowp float globalOpacity; \n\
435  lowp vec4 srcPixel(); \n\
436  lowp vec4 compose(lowp vec4); \n\
437  void main() \n\
438  { \n\
439  gl_FragColor = compose(srcPixel()*globalOpacity); \n\
440  }\n";
441 
442 static const char* const qglslMainFragmentShader_C = "\n\
443  lowp vec4 srcPixel(); \n\
444  lowp vec4 compose(lowp vec4); \n\
445  void main() \n\
446  { \n\
447  gl_FragColor = compose(srcPixel()); \n\
448  }\n";
449 
450 static const char* const qglslMainFragmentShader_O = "\n\
451  uniform lowp float globalOpacity; \n\
452  lowp vec4 srcPixel(); \n\
453  void main() \n\
454  { \n\
455  gl_FragColor = srcPixel()*globalOpacity; \n\
456  }\n";
457 
458 static const char* const qglslMainFragmentShader = "\n\
459  lowp vec4 srcPixel(); \n\
460  void main() \n\
461  { \n\
462  gl_FragColor = srcPixel(); \n\
463  }\n";
464 
465 static const char* const qglslMaskFragmentShader = "\n\
466  varying highp vec2 textureCoords;\n\
467  uniform sampler2D maskTexture;\n\
468  lowp vec4 applyMask(lowp vec4 src) \n\
469  {\n\
470  lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\
471  return src * mask.a; \n\
472  }\n";
473 
474 // For source over with subpixel antialiasing, the final color is calculated per component as follows
475 // (.a is alpha component, .c is red, green or blue component):
476 // alpha = src.a * mask.c * opacity
477 // dest.c = dest.c * (1 - alpha) + src.c * alpha
478 //
479 // In the first pass, calculate: dest.c = dest.c * (1 - alpha) with blend funcs: zero, 1 - source color
480 // In the second pass, calculate: dest.c = dest.c + src.c * alpha with blend funcs: one, one
481 //
482 // If source is a solid color (src is constant), only the first pass is needed, with blend funcs: constant, 1 - source color
483 
484 // For source composition with subpixel antialiasing, the final color is calculated per component as follows:
485 // alpha = src.a * mask.c * opacity
486 // dest.c = dest.c * (1 - mask.c) + src.c * alpha
487 //
488 
489 static const char* const qglslRgbMaskFragmentShaderPass1 = "\n\
490  varying highp vec2 textureCoords;\n\
491  uniform sampler2D maskTexture;\n\
492  lowp vec4 applyMask(lowp vec4 src) \n\
493  { \n\
494  lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\
495  return src.a * mask; \n\
496  }\n";
497 
498 static const char* const qglslRgbMaskFragmentShaderPass2 = "\n\
499  varying highp vec2 textureCoords;\n\
500  uniform sampler2D maskTexture;\n\
501  lowp vec4 applyMask(lowp vec4 src) \n\
502  { \n\
503  lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\
504  return src * mask; \n\
505  }\n";
506 
507 /*
508  Left to implement:
509  RgbMaskFragmentShader,
510  RgbMaskWithGammaFragmentShader,
511 
512  MultiplyCompositionModeFragmentShader,
513  ScreenCompositionModeFragmentShader,
514  OverlayCompositionModeFragmentShader,
515  DarkenCompositionModeFragmentShader,
516  LightenCompositionModeFragmentShader,
517  ColorDodgeCompositionModeFragmentShader,
518  ColorBurnCompositionModeFragmentShader,
519  HardLightCompositionModeFragmentShader,
520  SoftLightCompositionModeFragmentShader,
521  DifferenceCompositionModeFragmentShader,
522  ExclusionCompositionModeFragmentShader,
523 */
524 
526 
528 
529 #endif // GLGC_SHADER_SOURCE_H
static const char *const qglslAffinePositionWithTextureBrushVertexShader
static const char *const qglslPositionWithRadialGradientBrushVertexShader
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
#define QT_MODULE(x)
Definition: qglobal.h:2783
static const char *const qglslCustomSrcFragmentShader
static const char *const qglslNonPremultipliedImageSrcFragmentShader
#define QT_BEGIN_HEADER
Definition: qglobal.h:136
static const char *const qglslMainFragmentShader
int main(int argc, char **argv)
Definition: qaxmain.cpp:46
static const char *const qglslRgbMaskFragmentShaderPass2
#define A(arg)
static const char *const qglslRgbMaskFragmentShaderPass1
static const char *const qglslSolidBrushSrcFragmentShader
static const char *const qglslMainFragmentShader_O
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
static const char *const qglslShockingPinkSrcFragmentShader
static const char *const qglslPositionWithTextureBrushVertexShader
static const char *const qglslMainFragmentShader_C
static const char *const qglslMainFragmentShader_CM
static const char *const qglslTextureBrushSrcWithPatternFragmentShader
static const char *const qglslMainFragmentShader_ImageArrays
static const char *const qglslMainFragmentShader_CO
static const char *const qglslRadialGradientBrushSrcFragmentShader
static const char *const qglslMainFragmentShader_M
static const char *const qglslAffinePositionWithRadialGradientBrushVertexShader
quint16 index
static const char *const qglslMaskFragmentShader
static const char *const qglslImageSrcFragmentShader
static const char *const qglslMainFragmentShader_MO
static qreal dot(const QPointF &a, const QPointF &b)
#define QT_END_HEADER
Definition: qglobal.h:137
static const char *const qglslImageSrcWithPatternFragmentShader
static const char *const qglslMainVertexShader
static const char *const qglslTextureBrushSrcFragmentShader
static const char *const qglslMainFragmentShader_CMO